Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ const logger = createLogger('General')
/** Human-friendly timezone options for the picker, common zones first. */
const TIMEZONE_OPTIONS = getTimezoneOptions()

/**
* Shared trigger width for the three appearance dropdowns (Theme, Timezone, Snap
* to grid) so they line up as one column instead of three differently-sized
* pills. Wide enough for the longest common timezone label.
*/
const DROPDOWN_TRIGGER_CLASS = 'w-[240px] flex-shrink-0'

/**
* Extracts initials from a user's name.
* @param name - The user's full name
Expand Down Expand Up @@ -401,26 +408,29 @@ export function General() {
<div className='flex flex-col gap-4'>
<div className='flex items-center justify-between'>
<Label htmlFor='theme-select'>Theme</Label>
<ChipSelect
align='start'
dropdownWidth={140}
value={settings?.theme}
onChange={handleThemeChange}
placeholder='Select theme'
options={[
{ label: 'System', value: 'system' },
{ label: 'Light', value: 'light' },
{ label: 'Dark', value: 'dark' },
]}
/>
<div className={DROPDOWN_TRIGGER_CLASS}>
<ChipSelect
align='start'
fullWidth
dropdownWidth='trigger'
value={settings?.theme}
onChange={handleThemeChange}
placeholder='Select theme'
options={[
{ label: 'System', value: 'system' },
{ label: 'Light', value: 'light' },
{ label: 'Dark', value: 'dark' },
]}
/>
</div>
</div>

<div className='flex items-center justify-between gap-4'>
<Label>Timezone</Label>
<div className='w-[260px] flex-shrink-0'>
<div className={DROPDOWN_TRIGGER_CLASS}>
<ChipCombobox
align='start'
dropdownWidth={260}
dropdownWidth={240}
searchable
searchPlaceholder='Search timezones'
value={settings?.timezone ?? getBrowserTimezone()}
Expand Down Expand Up @@ -480,21 +490,24 @@ export function General() {

<div className='flex items-center justify-between'>
<Label htmlFor='snap-to-grid'>Snap to grid</Label>
<ChipSelect
align='start'
dropdownWidth={140}
value={String(snapToGridValue)}
onChange={handleSnapToGridChange}
placeholder='Select size'
options={[
{ label: 'Off', value: '0' },
{ label: '10px', value: '10' },
{ label: '20px', value: '20' },
{ label: '30px', value: '30' },
{ label: '40px', value: '40' },
{ label: '50px', value: '50' },
]}
/>
<div className={DROPDOWN_TRIGGER_CLASS}>
<ChipSelect
align='start'
fullWidth
dropdownWidth='trigger'
value={String(snapToGridValue)}
onChange={handleSnapToGridChange}
placeholder='Select size'
options={[
{ label: 'Off', value: '0' },
{ label: '10px', value: '10' },
{ label: '20px', value: '20' },
{ label: '30px', value: '30' },
{ label: '40px', value: '40' },
{ label: '50px', value: '50' },
]}
/>
</div>
</div>

<div className='flex items-center justify-between'>
Expand Down
Loading