{"version":3,"file":"size-presets.cjs","names":[],"sources":["../../src/shared/size-presets.ts"],"sourcesContent":["import type { SizeConfig } from '../styles/mixins/shape.css';\nimport type { ComponentSize } from './types';\n\n/** A preset with an entry for every ComponentSize key. */\ntype FullSizePreset = Record<ComponentSize, SizeConfig>;\n\n/** A preset that may omit some ComponentSize keys (sizeVariantMixin fills the gaps with its defaults). */\ntype PartialSizePreset = Partial<Record<ComponentSize, SizeConfig>>;\n\nexport const FIELD_SIZE_PRESET = {\n  lg: {\n    '--_field-height': 'var(--size-12)',\n    '--_padding': 'var(--size-2-5) var(--size-3-5)',\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-2-5)',\n  },\n  md: {\n    '--_field-height': 'var(--size-10)',\n    '--_padding': 'var(--size-1-5) var(--size-3)',\n    fontSize: 'var(--text-sm)',\n    gap: 'var(--size-2)',\n  },\n  sm: {\n    '--_field-height': 'var(--size-8)',\n    '--_padding': 'var(--size-1) var(--size-2)',\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-1-5)',\n  },\n} satisfies FullSizePreset;\n\nexport const TEXTAREA_SIZE_PRESET = {\n  lg: {\n    '--_padding': 'var(--size-2-5) var(--size-3-5)',\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-2-5)',\n  },\n  md: {\n    '--_padding': 'var(--size-1-5) var(--size-3)',\n    fontSize: 'var(--text-sm)',\n    gap: 'var(--size-2)',\n  },\n  sm: {\n    '--_padding': 'var(--size-1) var(--size-2)',\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-1-5)',\n  },\n} satisfies FullSizePreset;\n\n/** Shared size preset for checkbox and radio (icon + label layout). */\nexport const CONTROL_SIZE_PRESET = {\n  lg: {\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-2-5)',\n    size: 'var(--size-6)',\n  },\n  sm: {\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-1-5)',\n    size: 'var(--size-4)',\n  },\n} satisfies PartialSizePreset;\n\n/** Shared size preset for the switch toggle control. */\nexport const SWITCH_SIZE_PRESET = {\n  lg: {\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-3)',\n    height: 'var(--size-7)',\n    thumbSize: 'var(--size-6)',\n    width: 'var(--size-14)',\n  },\n  sm: {\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-2)',\n    height: 'var(--size-5)',\n    thumbSize: 'var(--size-4)',\n    width: 'var(--size-9)',\n  },\n} satisfies PartialSizePreset;\n\n/** Shared size preset for the slider track/thumb. */\nexport const SLIDER_SIZE_PRESET = {\n  lg: {\n    '--_thumb-inset': 'var(--slider-thumb-inset, var(--size-3))',\n    fontSize: 'var(--text-base)',\n    height: 'calc(var(--size-5) - var(--size-1))',\n    size: 'var(--size-6)',\n  },\n  md: {\n    '--_thumb-inset': 'var(--slider-thumb-inset, var(--size-2-5))',\n    fontSize: 'var(--text-base)',\n    height: 'var(--size-3)',\n    size: 'var(--size-5)',\n  },\n  sm: {\n    '--_thumb-inset': 'var(--slider-thumb-inset, var(--size-2))',\n    fontSize: 'var(--text-xs)',\n    height: 'var(--size-2)',\n    size: 'var(--size-4)',\n  },\n} satisfies FullSizePreset;\n\n/**\n * Size preset for the message composer card. Padding is symmetric (unlike\n * `TEXTAREA_SIZE_PRESET`'s field-shaped padding) since this scales a card that wraps a field\n * *and* a toolbar row, not a bare field — `md`'s padding matches the value the card used before\n * `size` scaled anything, so the default look is unchanged.\n */\nexport const MESSAGE_COMPOSER_SIZE_PRESET = {\n  lg: {\n    '--_padding': 'var(--size-4)',\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-2-5)',\n  },\n  md: {\n    '--_padding': 'var(--size-3)',\n    fontSize: 'var(--text-sm)',\n    gap: 'var(--size-2)',\n  },\n  sm: {\n    '--_padding': 'var(--size-2)',\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-1-5)',\n  },\n} satisfies FullSizePreset;\n\n/**\n * Size preset for `ore-menu`'s floating panel, `ore-menu-item`'s row, and `ore-menu-separator`'s\n * margin. `--_panel-padding`, `--_item-padding`, and `--_separator-margin` are custom pass-through\n * keys (not one of `SizeConfig`'s named slots) since the panel, its items, and its separators each\n * need independently-scaling spacing; `md`'s values match what `menu.css`/`menu-item.css`/\n * `menu-separator.css` hardcoded before `size` was wired up, so the default look is unchanged.\n * `--_font-size`/`--_gap` are inherited by `ore-menu-item` from `ore-menu`'s own host — custom\n * properties cascade down through light-DOM children the same way they cascade into a shadow root.\n */\nexport const MENU_SIZE_PRESET = {\n  lg: {\n    '--_item-padding': 'var(--size-2) var(--size-3-5)',\n    '--_panel-padding': 'var(--size-1-5)',\n    '--_separator-margin': 'var(--size-1-5)',\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-2-5)',\n  },\n  md: {\n    '--_item-padding': 'var(--size-1-5) var(--size-3)',\n    '--_panel-padding': 'var(--size-1)',\n    '--_separator-margin': 'var(--size-1)',\n    fontSize: 'var(--text-sm)',\n    gap: 'var(--size-2)',\n  },\n  sm: {\n    '--_item-padding': 'var(--size-1) var(--size-2-5)',\n    '--_panel-padding': 'var(--size-0-5)',\n    '--_separator-margin': 'var(--size-0-5)',\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-1-5)',\n  },\n} satisfies FullSizePreset;\n\n/**\n * Size preset for `ore-list`'s own host. `ore-list-item` has no `sizeVariantMixin` call of its\n * own — it reads `--_gap`/`--_padding`/`--_padding-inline-end`/`--_font-size`/`--_min-height`/\n * `--_min-height-two-line` inherited straight from its parent `ore-list`'s shadow host (custom\n * properties cascade through light-DOM children the same way `MENU_SIZE_PRESET` cascades from\n * `ore-menu` into `ore-menu-item`), with fallback defaults for standalone use outside an\n * `ore-list`.\n *\n * Follows Material 3's list-item spacing at `md`/`lg`: 16dp between leading/content/trailing\n * (`gap`), 16dp inline-start (`padding`), 24dp inline-end (`--_padding-inline-end` — the trailing\n * edge sits 8dp further out than the other three sides in the M3 spec), 56dp one-line / 72dp\n * two-line row height (`--_min-height`/`--_min-height-two-line`, applied in `list-item.css`).\n * `sm` keeps the same asymmetry and the M3/WCAG 48dp touch-target floor proportionally, for a\n * denser list that still reads as \"M3-like\" rather than hitting the exact dp values M3 doesn't\n * itself define an alternate density for.\n */\nexport const LIST_SIZE_PRESET = {\n  lg: {\n    '--_min-height': 'var(--size-14)',\n    '--_min-height-two-line': 'calc(var(--size-16) + var(--size-2))',\n    '--_padding-inline-end': 'var(--size-6)',\n    fontSize: 'var(--text-base)',\n    gap: 'var(--size-4)',\n    padding: 'var(--size-3) var(--size-4)',\n  },\n  md: {\n    '--_min-height': 'var(--size-14)',\n    '--_min-height-two-line': 'calc(var(--size-16) + var(--size-2))',\n    '--_padding-inline-end': 'var(--size-6)',\n    fontSize: 'var(--text-sm)',\n    gap: 'var(--size-4)',\n    padding: 'var(--size-2-5) var(--size-4)',\n  },\n  sm: {\n    '--_min-height': 'var(--size-12)',\n    '--_min-height-two-line': 'var(--size-16)',\n    '--_padding-inline-end': 'var(--size-4)',\n    fontSize: 'var(--text-xs)',\n    gap: 'var(--size-2)',\n    padding: 'var(--size-1-5) var(--size-2)',\n  },\n} satisfies FullSizePreset;\n\n/** Shared size preset for the file-input dropzone. */\nexport const FILE_INPUT_SIZE_PRESET = {\n  lg: {\n    '--_min-height': 'var(--size-40)',\n    fontSize: 'var(--text-base)',\n  },\n  md: {\n    '--_min-height': 'var(--size-32)',\n    fontSize: 'var(--text-sm)',\n  },\n  sm: {\n    '--_min-height': 'var(--size-28)',\n    fontSize: 'var(--text-xs)',\n  },\n} satisfies FullSizePreset;\n"],"mappings":"AASA,IAAa,EAAoB,CAC/B,GAAI,CACF,kBAAmB,iBACnB,aAAc,kCACd,SAAU,mBACV,IAAK,iBACP,EACA,GAAI,CACF,kBAAmB,iBACnB,aAAc,gCACd,SAAU,iBACV,IAAK,eACP,EACA,GAAI,CACF,kBAAmB,gBACnB,aAAc,8BACd,SAAU,iBACV,IAAK,iBACP,CACF,EAEa,EAAuB,CAClC,GAAI,CACF,aAAc,kCACd,SAAU,mBACV,IAAK,iBACP,EACA,GAAI,CACF,aAAc,gCACd,SAAU,iBACV,IAAK,eACP,EACA,GAAI,CACF,aAAc,8BACd,SAAU,iBACV,IAAK,iBACP,CACF,EAGa,EAAsB,CACjC,GAAI,CACF,SAAU,mBACV,IAAK,kBACL,KAAM,eACR,EACA,GAAI,CACF,SAAU,iBACV,IAAK,kBACL,KAAM,eACR,CACF,EAGa,EAAqB,CAChC,GAAI,CACF,SAAU,mBACV,IAAK,gBACL,OAAQ,gBACR,UAAW,gBACX,MAAO,gBACT,EACA,GAAI,CACF,SAAU,iBACV,IAAK,gBACL,OAAQ,gBACR,UAAW,gBACX,MAAO,eACT,CACF,EAGa,EAAqB,CAChC,GAAI,CACF,iBAAkB,2CAClB,SAAU,mBACV,OAAQ,sCACR,KAAM,eACR,EACA,GAAI,CACF,iBAAkB,6CAClB,SAAU,mBACV,OAAQ,gBACR,KAAM,eACR,EACA,GAAI,CACF,iBAAkB,2CAClB,SAAU,iBACV,OAAQ,gBACR,KAAM,eACR,CACF,EAQa,EAA+B,CAC1C,GAAI,CACF,aAAc,gBACd,SAAU,mBACV,IAAK,iBACP,EACA,GAAI,CACF,aAAc,gBACd,SAAU,iBACV,IAAK,eACP,EACA,GAAI,CACF,aAAc,gBACd,SAAU,iBACV,IAAK,iBACP,CACF,EAWa,EAAmB,CAC9B,GAAI,CACF,kBAAmB,gCACnB,mBAAoB,kBACpB,sBAAuB,kBACvB,SAAU,mBACV,IAAK,iBACP,EACA,GAAI,CACF,kBAAmB,gCACnB,mBAAoB,gBACpB,sBAAuB,gBACvB,SAAU,iBACV,IAAK,eACP,EACA,GAAI,CACF,kBAAmB,gCACnB,mBAAoB,kBACpB,sBAAuB,kBACvB,SAAU,iBACV,IAAK,iBACP,CACF,EAkBa,EAAmB,CAC9B,GAAI,CACF,gBAAiB,iBACjB,yBAA0B,uCAC1B,wBAAyB,gBACzB,SAAU,mBACV,IAAK,gBACL,QAAS,6BACX,EACA,GAAI,CACF,gBAAiB,iBACjB,yBAA0B,uCAC1B,wBAAyB,gBACzB,SAAU,iBACV,IAAK,gBACL,QAAS,+BACX,EACA,GAAI,CACF,gBAAiB,iBACjB,yBAA0B,iBAC1B,wBAAyB,gBACzB,SAAU,iBACV,IAAK,gBACL,QAAS,+BACX,CACF,EAGa,EAAyB,CACpC,GAAI,CACF,gBAAiB,iBACjB,SAAU,kBACZ,EACA,GAAI,CACF,gBAAiB,iBACjB,SAAU,gBACZ,EACA,GAAI,CACF,gBAAiB,iBACjB,SAAU,gBACZ,CACF"}