@epilot/volt-ui-experimental-griffel 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/components/accordion/accordion.js +66 -126
  2. package/dist/components/accordion/accordion.js.map +1 -1
  3. package/dist/components/alert-dialog/alert-dialog.js +138 -238
  4. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  5. package/dist/components/avatar/avatar-group.js +47 -102
  6. package/dist/components/avatar/avatar-group.js.map +1 -1
  7. package/dist/components/avatar/avatar.js +72 -96
  8. package/dist/components/avatar/avatar.js.map +1 -1
  9. package/dist/components/badge/badge.js +48 -56
  10. package/dist/components/badge/badge.js.map +1 -1
  11. package/dist/components/breadcrumb/breadcrumb.js +49 -97
  12. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  13. package/dist/components/button/button.js +49 -57
  14. package/dist/components/button/button.js.map +1 -1
  15. package/dist/components/button-group/button-group.js +31 -55
  16. package/dist/components/button-group/button-group.js.map +1 -1
  17. package/dist/components/callout/callout.js +164 -288
  18. package/dist/components/callout/callout.js.map +1 -1
  19. package/dist/components/card/card.js +81 -137
  20. package/dist/components/card/card.js.map +1 -1
  21. package/dist/components/checkbox/checkbox.js +48 -96
  22. package/dist/components/checkbox/checkbox.js.map +1 -1
  23. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +107 -155
  24. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  25. package/dist/components/command/command.js +161 -285
  26. package/dist/components/command/command.js.map +1 -1
  27. package/dist/components/data-table/data-table-body.js +54 -114
  28. package/dist/components/data-table/data-table-body.js.map +1 -1
  29. package/dist/components/data-table/data-table-column-header.js +45 -117
  30. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  31. package/dist/components/data-table/data-table-column-visibility.js +39 -98
  32. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  33. package/dist/components/data-table/data-table-content.js +58 -90
  34. package/dist/components/data-table/data-table-content.js.map +1 -1
  35. package/dist/components/data-table/data-table-error.js +39 -83
  36. package/dist/components/data-table/data-table-error.js.map +1 -1
  37. package/dist/components/data-table/data-table-header.js +54 -88
  38. package/dist/components/data-table/data-table-header.js.map +1 -1
  39. package/dist/components/data-table/data-table-loading.js +15 -27
  40. package/dist/components/data-table/data-table-loading.js.map +1 -1
  41. package/dist/components/data-table/data-table-pagination.js +19 -27
  42. package/dist/components/data-table/data-table-pagination.js.map +1 -1
  43. package/dist/components/data-table/data-table-row.js +64 -87
  44. package/dist/components/data-table/data-table-row.js.map +1 -1
  45. package/dist/components/data-table/data-table-toolbar.js +16 -24
  46. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  47. package/dist/components/data-table/data-table.js +145 -181
  48. package/dist/components/data-table/data-table.js.map +1 -1
  49. package/dist/components/date-range-picker/date-range-picker.js +214 -342
  50. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  51. package/dist/components/date-range-picker/range-calendar.js +92 -132
  52. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  53. package/dist/components/date-time-picker/calendar.js +317 -501
  54. package/dist/components/date-time-picker/calendar.js.map +1 -1
  55. package/dist/components/date-time-picker/date-time-picker-context.js +60 -64
  56. package/dist/components/date-time-picker/date-time-picker-context.js.map +1 -1
  57. package/dist/components/date-time-picker/date-time-picker-input.js +149 -249
  58. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  59. package/dist/components/date-time-picker/date-time-picker-panel.js +165 -273
  60. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  61. package/dist/components/date-time-picker/date-time-picker-popover.js +14 -22
  62. package/dist/components/date-time-picker/date-time-picker-popover.js.map +1 -1
  63. package/dist/components/date-time-picker/date-time-picker.js +90 -134
  64. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  65. package/dist/components/date-time-picker/time-picker.js +132 -198
  66. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  67. package/dist/components/density-provider/density-provider.js +19 -39
  68. package/dist/components/density-provider/density-provider.js.map +1 -1
  69. package/dist/components/dialog/dialog.js +145 -253
  70. package/dist/components/dialog/dialog.js.map +1 -1
  71. package/dist/components/drawer/drawer.js +164 -272
  72. package/dist/components/drawer/drawer.js.map +1 -1
  73. package/dist/components/dropdown-menu/dropdown-menu.js +204 -384
  74. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  75. package/dist/components/field/field-combobox.js +243 -435
  76. package/dist/components/field/field-combobox.js.map +1 -1
  77. package/dist/components/field/field-select.js +19 -23
  78. package/dist/components/field/field-select.js.map +1 -1
  79. package/dist/components/field/field.js +189 -297
  80. package/dist/components/field/field.js.map +1 -1
  81. package/dist/components/label/label.js +19 -27
  82. package/dist/components/label/label.js.map +1 -1
  83. package/dist/components/list/list.js +315 -595
  84. package/dist/components/list/list.js.map +1 -1
  85. package/dist/components/option-card/option-card.js +159 -323
  86. package/dist/components/option-card/option-card.js.map +1 -1
  87. package/dist/components/pill/pill.js +68 -84
  88. package/dist/components/pill/pill.js.map +1 -1
  89. package/dist/components/popover/popover.js +48 -84
  90. package/dist/components/popover/popover.js.map +1 -1
  91. package/dist/components/radio/radio.js +49 -89
  92. package/dist/components/radio/radio.js.map +1 -1
  93. package/dist/components/scroll-overflow/scroll-overflow.js +198 -350
  94. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  95. package/dist/components/segmented-control/segmented-control.js +97 -141
  96. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  97. package/dist/components/select/select.js +200 -396
  98. package/dist/components/select/select.js.map +1 -1
  99. package/dist/components/separator/separator.js +16 -24
  100. package/dist/components/separator/separator.js.map +1 -1
  101. package/dist/components/skeleton/skeleton.js +43 -83
  102. package/dist/components/skeleton/skeleton.js.map +1 -1
  103. package/dist/components/spinner/spinner.js +20 -44
  104. package/dist/components/spinner/spinner.js.map +1 -1
  105. package/dist/components/switch/switch.js +83 -155
  106. package/dist/components/switch/switch.js.map +1 -1
  107. package/dist/components/table/table-pagination.js +210 -468
  108. package/dist/components/table/table-pagination.js.map +1 -1
  109. package/dist/components/table/table.js +131 -211
  110. package/dist/components/table/table.js.map +1 -1
  111. package/dist/components/tabs/tabs.js +58 -94
  112. package/dist/components/tabs/tabs.js.map +1 -1
  113. package/dist/components/text/text.js +32 -40
  114. package/dist/components/text/text.js.map +1 -1
  115. package/dist/components/toast/toast.js +111 -187
  116. package/dist/components/toast/toast.js.map +1 -1
  117. package/dist/components/toggle/toggle-group.js +24 -40
  118. package/dist/components/toggle/toggle-group.js.map +1 -1
  119. package/dist/components/toggle/toggle.js +39 -47
  120. package/dist/components/toggle/toggle.js.map +1 -1
  121. package/dist/components/tooltip/tooltip.js +62 -106
  122. package/dist/components/tooltip/tooltip.js.map +1 -1
  123. package/dist/lib/clear-button.js +15 -27
  124. package/dist/lib/clear-button.js.map +1 -1
  125. package/dist/lib/icons.js +6 -18
  126. package/dist/lib/icons.js.map +1 -1
  127. package/dist/tokens.json +1 -1
  128. package/package.json +1 -1
  129. package/dist/_virtual/jsx-dev-runtime.js +0 -5
  130. package/dist/_virtual/jsx-dev-runtime.js.map +0 -1
  131. package/dist/_virtual/react-jsx-dev-runtime.development.js +0 -5
  132. package/dist/_virtual/react-jsx-dev-runtime.development.js.map +0 -1
  133. package/dist/_virtual/react-jsx-dev-runtime.production.js +0 -5
  134. package/dist/_virtual/react-jsx-dev-runtime.production.js.map +0 -1
  135. package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js +0 -236
  136. package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js.map +0 -1
  137. package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js +0 -21
  138. package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js.map +0 -1
  139. package/dist/vendor/react/jsx-dev-runtime.js +0 -9
  140. package/dist/vendor/react/jsx-dev-runtime.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"option-card.js","sources":["../../../src/components/option-card/option-card.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nconst DEFAULT_LAYOUT = \"grid\" as const\n\nconst MISSING_VALUE_WARNING =\n \"OptionCard: a card inside an OptionCardGroup is missing a `value`. \" +\n \"Give each card a unique `value` so it can be selected and controlled.\"\n\n/** The trailing control glyph an {@link OptionCard} shows for its selected state. */\nexport type OptionCardControlType = \"radio\" | \"checkbox\" | \"switch\" | \"none\"\n\nexport type OptionCardLayout = \"grid\" | \"row\" | \"column\"\n\n// ── Group context ──────────────────────────────────────────────────────────\ntype OptionCardGroupContextValue = {\n type?: \"single\" | \"multiple\"\n layout: OptionCardLayout\n}\nconst OptionCardGroupContext =\n React.createContext<OptionCardGroupContextValue | null>(null)\n\n// ── Card context ───────────────────────────────────────────────────────────\ntype OptionCardContextValue = {\n controlType: OptionCardControlType\n registerType: (type: OptionCardControlType) => void\n}\nconst OptionCardContext = React.createContext<OptionCardContextValue | null>(\n null\n)\n\n// ── Styles ─────────────────────────────────────────────────────────────────\n\nconst useStyles = makeVoltStyles({\n // Group layouts\n group: {\n // The GROUP only lays out. v1's group base class is literally \"\" -- every border, padding and\n // interaction style below used to live here, copied from v1's CARD class onto the wrong element,\n // while `styles.card` and `styles[layout]` were read but never declared. See make-styles.ts for\n // why tsc accepted that for as long as it did.\n display: \"grid\",\n ...shorthands.gap(tokens.spacingGroup1),\n },\n\n // v1: grid-cols-[repeat(auto-fit,minmax(200px,1fr))]\n grid: {\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n },\n // v1: grid-flow-col auto-cols-fr -- equal-width columns in one non-wrapping row, so options read\n // as equal-weight peers regardless of their content.\n row: {\n gridAutoFlow: \"column\",\n gridAutoColumns: \"minmax(0, 1fr)\",\n },\n // v1: plain `grid` with no template. One column, stacked.\n column: {},\n\n card: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n // v1 gap-3 = 0.75rem. No token: the semantic scale has no 0.75rem step.\n ...shorthands.gap(tokens.spacingElement3),\n overflow: \"hidden\",\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.border(\"1px\", \"solid\", \"currentColor\"),\n ...shorthands.paddingInline(tokens.spacingElement3),\n ...shorthands.paddingBlock(\"0.375rem\"),\n textAlign: \"left\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA12,\n backgroundColor: \"transparent\",\n transitionProperty: \"color, background-color, border-color, box-shadow\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n cursor: \"pointer\",\n userSelect: \"none\",\n height: \"auto\",\n minWidth: \"0\",\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n \":disabled, &[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"&[data-state='on']\": {\n backgroundColor: tokens.semAccentSoft,\n ...shorthands.borderColor(tokens.accentA8),\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-radio-outer\"]`]: {\n ...shorthands.borderColor(tokens.semAccentSolid),\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-radio-dot\"]`]: {\n opacity: 1,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-checkbox-outer\"]`]: {\n ...shorthands.borderColor(\"transparent\"),\n backgroundColor: tokens.semAccentSolid,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-checkbox-check\"]`]: {\n opacity: 1,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-switch-track\"]`]: {\n backgroundColor: tokens.semAccentSolid,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-switch-thumb\"]`]: {\n transform: \"translateX(calc(100% - 1px))\",\n },\n },\n\n // Media\n mediaRoot: {\n flexShrink: 0,\n },\n mediaIcon: {\n display: \"grid\",\n width: \"2.5rem\",\n height: \"2.5rem\",\n placeContent: \"center\",\n alignSelf: \"start\",\n ...shorthands.borderRadius(tokens.radiusLg),\n backgroundColor: tokens.semAccentSoft,\n color: tokens.semAccentLight,\n \"& svg\": {\n width: \"1.25rem\",\n height: \"1.25rem\",\n },\n },\n mediaIllustration: {\n position: \"relative\",\n aspectRatio: \"1 / 1\",\n alignSelf: \"stretch\",\n overflow: \"hidden\",\n \"& svg\": {\n position: \"absolute\",\n ...shorthands.inset(0),\n width: \"100%\",\n height: \"100%\",\n },\n \"& img\": {\n position: \"absolute\",\n ...shorthands.inset(0),\n width: \"100%\",\n height: \"100%\",\n objectFit: \"contain\",\n },\n },\n\n // Content\n content: {\n display: \"grid\",\n minWidth: 0,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n gridAutoRows: \"min-content\",\n alignItems: \"center\",\n columnGap: tokens.spacingElement2,\n paddingTop: tokens.spacingElement1,\n paddingBottom: tokens.spacingElement1,\n [`&:has([${SLOT_ATTR}=\"option-card-control\"])`]: {\n gridTemplateColumns: \"1fr auto\",\n },\n },\n\n // Title\n title: {\n gridColumnStart: 1,\n gridRowStart: 1,\n minWidth: 0,\n alignSelf: \"center\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n fontWeight: tokens.fontWeightSemibold,\n },\n\n // Description\n description: {\n gridColumnStart: 1,\n gridRowStart: 2,\n minWidth: 0,\n overflowWrap: \"break-word\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA11,\n },\n\n // Control\n control: {\n gridColumnStart: 2,\n gridRowStart: 1,\n alignSelf: \"center\",\n justifySelf: \"end\",\n },\n\n // Radio glyph\n radioOuter: {\n display: \"grid\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n placeContent: \"center\",\n borderRadius: \"9999px\",\n ...shorthands.border(\"1px\", \"solid\", tokens.accentA7),\n backgroundColor: tokens.semAccentSoft,\n transitionProperty: \"border-color\",\n transitionDuration: \"150ms\",\n },\n radioDot: {\n width: \"0.5rem\",\n height: \"0.5rem\",\n borderRadius: \"9999px\",\n backgroundColor: tokens.semAccentSolid,\n opacity: 0,\n transitionProperty: \"opacity\",\n transitionDuration: \"150ms\",\n },\n\n // Checkbox glyph\n checkboxOuter: {\n display: \"grid\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n placeContent: \"center\",\n ...shorthands.borderRadius(\"4px\"),\n ...shorthands.border(\"1px\", \"solid\", tokens.accentA7),\n backgroundColor: tokens.semAccentSoft,\n color: tokens.accentContrast,\n transitionProperty: \"background-color, border-color\",\n transitionDuration: \"150ms\",\n },\n checkboxCheck: {\n width: \"0.75rem\",\n height: \"0.75rem\",\n opacity: 0,\n transitionProperty: \"opacity\",\n transitionDuration: \"150ms\",\n },\n\n // Switch glyph\n switchTrack: {\n display: \"inline-flex\",\n height: \"1.25rem\",\n width: \"2.125rem\",\n flexShrink: 0,\n alignItems: \"center\",\n borderRadius: \"9999px\",\n ...shorthands.border(\"1px\", \"solid\", \"transparent\"),\n backgroundColor: tokens.grayA3,\n transitionProperty: \"background-color\",\n transitionDuration: \"150ms\",\n },\n switchThumb: {\n display: \"block\",\n width: \"1rem\",\n height: \"1rem\",\n transform: \"translateX(1px)\",\n borderRadius: \"9999px\",\n backgroundColor: tokens.grayContrast,\n // v1 shadow-xs; no shadow tokens in this package.\n boxShadow: \"0 1px 2px 0 #0000000d\",\n transitionProperty: \"transform\",\n transitionDuration: \"150ms\",\n },\n})\n\n// ── Control Glyphs ─────────────────────────────────────────────────────────\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m382-354 339-339q12-12 28-12t28 12q12 12 12 28.5T777-636L410-268q-12 12-28 12t-28-12L182-440q-12-12-11.5-28.5T183-497q12-12 28.5-12t28.5 12l142 143Z\" />\n </svg>\n)\n\nconst RadioGlyph = () => {\n const styles = useStyles()\n return (\n <span\n className={styles.radioOuter}\n {...{ [SLOT_ATTR]: \"option-card-radio-outer\" }}\n >\n <span\n className={styles.radioDot}\n {...{ [SLOT_ATTR]: \"option-card-radio-dot\" }}\n />\n </span>\n )\n}\n\nconst CheckboxGlyph = () => {\n const styles = useStyles()\n return (\n <span\n className={styles.checkboxOuter}\n {...{ [SLOT_ATTR]: \"option-card-checkbox-outer\" }}\n >\n <CheckIcon\n className={styles.checkboxCheck}\n {...{ [SLOT_ATTR]: \"option-card-checkbox-check\" }}\n />\n </span>\n )\n}\n\nconst SwitchGlyph = () => {\n const styles = useStyles()\n return (\n <span\n className={styles.switchTrack}\n {...{ [SLOT_ATTR]: \"option-card-switch-track\" }}\n >\n <span\n className={styles.switchThumb}\n {...{ [SLOT_ATTR]: \"option-card-switch-thumb\" }}\n />\n </span>\n )\n}\n\n// ── OptionCardGroup ────────────────────────────────────────────────────────\n\nexport type OptionCardGroupProps = React.ComponentProps<\n typeof ToggleGroupPrimitive.Root\n> & {\n layout?: OptionCardLayout\n}\n\nexport const OptionCardGroup = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n OptionCardGroupProps\n>(function OptionCardGroup(\n { className, layout = DEFAULT_LAYOUT, ...props },\n ref\n) {\n const styles = useStyles()\n\n return (\n <OptionCardGroupContext.Provider value={{ type: props.type, layout }}>\n <ToggleGroupPrimitive.Root\n ref={ref}\n data-slot=\"option-card-group\"\n {...{ [SLOT_ATTR]: \"option-card-group\" }}\n data-layout={layout}\n {...(props.type === \"single\" ? { role: \"radiogroup\" } : {})}\n className={mergeClasses(styles.group, styles[layout], className)}\n {...props}\n />\n </OptionCardGroupContext.Provider>\n )\n})\n\n// ── OptionCardControl ──────────────────────────────────────────────────────\n\nexport type OptionCardControlProps = React.ComponentProps<\"span\"> & {\n type?: OptionCardControlType\n}\n\nexport const OptionCardControl = React.forwardRef<\n HTMLSpanElement,\n OptionCardControlProps\n>(function OptionCardControl({ className, type, ...props }, ref) {\n const styles = useStyles()\n const card = React.useContext(OptionCardContext)\n const register = card?.registerType\n\n React.useEffect(() => {\n if (type && register) register(type)\n }, [type, register])\n\n const resolved = type ?? card?.controlType ?? \"checkbox\"\n if (resolved === \"none\") return null\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-slot=\"option-card-control\"\n {...{ [SLOT_ATTR]: \"option-card-control\" }}\n className={mergeClasses(styles.control, className)}\n {...props}\n >\n {resolved === \"radio\" ? (\n <RadioGlyph />\n ) : resolved === \"switch\" ? (\n <SwitchGlyph />\n ) : (\n <CheckboxGlyph />\n )}\n </span>\n )\n})\n\n// ── OptionCardMedia ────────────────────────────────────────────────────────\n\nexport type OptionCardMediaVariant = \"icon\" | \"illustration\"\n\nexport type OptionCardMediaProps = React.ComponentProps<\"span\"> & {\n variant?: OptionCardMediaVariant\n}\n\nexport const OptionCardMedia = React.forwardRef<\n HTMLSpanElement,\n OptionCardMediaProps\n>(function OptionCardMedia({ className, variant = \"icon\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-slot=\"option-card-media\"\n {...{ [SLOT_ATTR]: \"option-card-media\" }}\n data-variant={variant}\n className={mergeClasses(\n styles.mediaRoot,\n variant === \"illustration\"\n ? styles.mediaIllustration\n : styles.mediaIcon,\n className\n )}\n {...props}\n />\n )\n})\n\n// ── OptionCardTitle ────────────────────────────────────────────────────────\n\nexport type OptionCardTitleProps = React.ComponentProps<\"span\">\n\nexport const OptionCardTitle = React.forwardRef<\n HTMLSpanElement,\n OptionCardTitleProps\n>(function OptionCardTitle({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"option-card-title\"\n {...{ [SLOT_ATTR]: \"option-card-title\" }}\n className={mergeClasses(styles.title, className)}\n {...props}\n />\n )\n})\n\n// ── OptionCardDescription ──────────────────────────────────────────────────\n\nexport type OptionCardDescriptionProps = React.ComponentProps<\"span\">\n\nexport const OptionCardDescription = React.forwardRef<\n HTMLSpanElement,\n OptionCardDescriptionProps\n>(function OptionCardDescription({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"option-card-description\"\n {...{ [SLOT_ATTR]: \"option-card-description\" }}\n className={mergeClasses(styles.description, className)}\n {...props}\n />\n )\n})\n\n// ── OptionCardContent ──────────────────────────────────────────────────────\n\nexport type OptionCardContentProps = React.ComponentProps<\"span\">\n\nconst hasControl = (children: React.ReactNode) =>\n React.Children.toArray(children).some(\n (c) => React.isValidElement(c) && c.type === OptionCardControl\n )\n\nexport const OptionCardContent = React.forwardRef<\n HTMLSpanElement,\n OptionCardContentProps\n>(function OptionCardContent({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"option-card-content\"\n {...{ [SLOT_ATTR]: \"option-card-content\" }}\n className={mergeClasses(styles.content, className)}\n {...props}\n >\n {children}\n {!hasControl(children) && <OptionCardControl />}\n </span>\n )\n})\n\n// ── OptionCard ─────────────────────────────────────────────────────────────\n\nexport type OptionCardProps = Omit<\n React.ComponentProps<\"button\">,\n \"onChange\" | \"title\"\n> & {\n /** Value of this option. Required inside an {@link OptionCardGroup}. */\n value?: string\n /** Controlled selected state for a standalone (group-less) card. */\n pressed?: boolean\n /** Uncontrolled default selected state for a standalone card. */\n defaultPressed?: boolean\n /** Fired when a standalone card is toggled. */\n onPressedChange?: (pressed: boolean) => void\n}\n\nconst isPart = (node: React.ReactNode, ...parts: React.ElementType[]) =>\n React.isValidElement(node) && parts.includes(node.type as React.ElementType)\n\nexport const OptionCard = React.forwardRef<HTMLButtonElement, OptionCardProps>(\n function OptionCard(\n {\n className,\n children,\n value,\n pressed,\n defaultPressed,\n onPressedChange,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n const group = React.useContext(OptionCardGroupContext)\n const inGroup = group !== null\n\n const fallbackId = React.useId()\n if (\n process.env.NODE_ENV !== \"production\" &&\n inGroup &&\n value === undefined\n ) {\n console.warn(MISSING_VALUE_WARNING)\n }\n\n const [internalPressed, setInternalPressed] = React.useState(\n defaultPressed ?? false\n )\n const isControlled = pressed !== undefined\n const currentPressed = isControlled ? pressed : internalPressed\n const handlePressedChange = (next: boolean) => {\n if (!isControlled) setInternalPressed(next)\n onPressedChange?.(next)\n }\n\n const groupControlType: OptionCardControlType = inGroup\n ? group.type === \"multiple\"\n ? \"checkbox\"\n : \"radio\"\n : \"checkbox\"\n const [controlType, setControlType] =\n React.useState<OptionCardControlType>(groupControlType)\n const ctx = React.useMemo<OptionCardContextValue>(\n () => ({ controlType, registerType: setControlType }),\n [controlType]\n )\n\n const childArray = React.Children.toArray(children)\n const hasContentChild = childArray.some((c) => isPart(c, OptionCardContent))\n const media = childArray.filter((c) => isPart(c, OptionCardMedia))\n const rest = childArray.filter((c) => !isPart(c, OptionCardMedia))\n const content = hasContentChild ? (\n rest\n ) : (\n <OptionCardContent>\n <OptionCardTitle>{rest}</OptionCardTitle>\n </OptionCardContent>\n )\n\n const body = (\n <>\n {media}\n {content}\n </>\n )\n\n if (inGroup) {\n return (\n <OptionCardContext.Provider value={ctx}>\n <ToggleGroupPrimitive.Item\n ref={ref}\n data-slot=\"option-card\"\n {...{ [SLOT_ATTR]: \"option-card\" }}\n value={value ?? fallbackId}\n className={mergeClasses(styles.card, className)}\n {...props}\n >\n {body}\n </ToggleGroupPrimitive.Item>\n </OptionCardContext.Provider>\n )\n }\n\n const standaloneRole = controlType === \"switch\" ? \"switch\" : \"checkbox\"\n\n return (\n <OptionCardContext.Provider value={ctx}>\n <TogglePrimitive.Root\n ref={ref}\n data-slot=\"option-card\"\n {...{ [SLOT_ATTR]: \"option-card\" }}\n pressed={currentPressed}\n onPressedChange={handlePressedChange}\n role={standaloneRole}\n aria-checked={currentPressed}\n aria-pressed={undefined}\n className={mergeClasses(styles.card, className)}\n {...props}\n >\n {body}\n </TogglePrimitive.Root>\n </OptionCardContext.Provider>\n )\n }\n)\n"],"names":["DEFAULT_LAYOUT","MISSING_VALUE_WARNING","OptionCardGroupContext","React","OptionCardContext","useStyles","makeVoltStyles","shorthands","tokens.spacingGroup1","tokens.spacingElement3","tokens.radiusLg","tokens.textSm","tokens.leadingSm","tokens.fontWeightNormal","tokens.grayA12","tokens.accentA8","tokens.semAccentSoft","SLOT_ATTR","tokens.semAccentSolid","tokens.semAccentLight","tokens.spacingElement2","tokens.spacingElement1","tokens.fontWeightSemibold","tokens.textXs","tokens.leadingXs","tokens.grayA11","tokens.accentA7","tokens.accentContrast","tokens.grayA3","tokens.grayContrast","CheckIcon","props","jsxDEV","this","RadioGlyph","styles","CheckboxGlyph","SwitchGlyph","OptionCardGroup","className","layout","ref","ToggleGroupPrimitive.Root","mergeClasses","OptionCardControl","type","card","register","resolved","OptionCardMedia","variant","OptionCardTitle","OptionCardDescription","hasControl","children","c","OptionCardContent","isPart","node","parts","OptionCard","value","pressed","defaultPressed","onPressedChange","group","inGroup","fallbackId","internalPressed","setInternalPressed","isControlled","currentPressed","handlePressedChange","next","groupControlType","controlType","setControlType","ctx","childArray","hasContentChild","media","rest","content","body","Fragment","ToggleGroupPrimitive.Item","standaloneRole","TogglePrimitive.Root"],"mappings":"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"}
1
+ {"version":3,"file":"option-card.js","sources":["../../../src/components/option-card/option-card.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nconst DEFAULT_LAYOUT = \"grid\" as const\n\nconst MISSING_VALUE_WARNING =\n \"OptionCard: a card inside an OptionCardGroup is missing a `value`. \" +\n \"Give each card a unique `value` so it can be selected and controlled.\"\n\n/** The trailing control glyph an {@link OptionCard} shows for its selected state. */\nexport type OptionCardControlType = \"radio\" | \"checkbox\" | \"switch\" | \"none\"\n\nexport type OptionCardLayout = \"grid\" | \"row\" | \"column\"\n\n// ── Group context ──────────────────────────────────────────────────────────\ntype OptionCardGroupContextValue = {\n type?: \"single\" | \"multiple\"\n layout: OptionCardLayout\n}\nconst OptionCardGroupContext =\n React.createContext<OptionCardGroupContextValue | null>(null)\n\n// ── Card context ───────────────────────────────────────────────────────────\ntype OptionCardContextValue = {\n controlType: OptionCardControlType\n registerType: (type: OptionCardControlType) => void\n}\nconst OptionCardContext = React.createContext<OptionCardContextValue | null>(\n null\n)\n\n// ── Styles ─────────────────────────────────────────────────────────────────\n\nconst useStyles = makeVoltStyles({\n // Group layouts\n group: {\n // The GROUP only lays out. v1's group base class is literally \"\" -- every border, padding and\n // interaction style below used to live here, copied from v1's CARD class onto the wrong element,\n // while `styles.card` and `styles[layout]` were read but never declared. See make-styles.ts for\n // why tsc accepted that for as long as it did.\n display: \"grid\",\n ...shorthands.gap(tokens.spacingGroup1),\n },\n\n // v1: grid-cols-[repeat(auto-fit,minmax(200px,1fr))]\n grid: {\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n },\n // v1: grid-flow-col auto-cols-fr -- equal-width columns in one non-wrapping row, so options read\n // as equal-weight peers regardless of their content.\n row: {\n gridAutoFlow: \"column\",\n gridAutoColumns: \"minmax(0, 1fr)\",\n },\n // v1: plain `grid` with no template. One column, stacked.\n column: {},\n\n card: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n // v1 gap-3 = 0.75rem. No token: the semantic scale has no 0.75rem step.\n ...shorthands.gap(tokens.spacingElement3),\n overflow: \"hidden\",\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.border(\"1px\", \"solid\", \"currentColor\"),\n ...shorthands.paddingInline(tokens.spacingElement3),\n ...shorthands.paddingBlock(\"0.375rem\"),\n textAlign: \"left\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA12,\n backgroundColor: \"transparent\",\n transitionProperty: \"color, background-color, border-color, box-shadow\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n cursor: \"pointer\",\n userSelect: \"none\",\n height: \"auto\",\n minWidth: \"0\",\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n \":disabled, &[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"&[data-state='on']\": {\n backgroundColor: tokens.semAccentSoft,\n ...shorthands.borderColor(tokens.accentA8),\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-radio-outer\"]`]: {\n ...shorthands.borderColor(tokens.semAccentSolid),\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-radio-dot\"]`]: {\n opacity: 1,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-checkbox-outer\"]`]: {\n ...shorthands.borderColor(\"transparent\"),\n backgroundColor: tokens.semAccentSolid,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-checkbox-check\"]`]: {\n opacity: 1,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-switch-track\"]`]: {\n backgroundColor: tokens.semAccentSolid,\n },\n [`&[data-state='on'] [${SLOT_ATTR}=\"option-card-switch-thumb\"]`]: {\n transform: \"translateX(calc(100% - 1px))\",\n },\n },\n\n // Media\n mediaRoot: {\n flexShrink: 0,\n },\n mediaIcon: {\n display: \"grid\",\n width: \"2.5rem\",\n height: \"2.5rem\",\n placeContent: \"center\",\n alignSelf: \"start\",\n ...shorthands.borderRadius(tokens.radiusLg),\n backgroundColor: tokens.semAccentSoft,\n color: tokens.semAccentLight,\n \"& svg\": {\n width: \"1.25rem\",\n height: \"1.25rem\",\n },\n },\n mediaIllustration: {\n position: \"relative\",\n aspectRatio: \"1 / 1\",\n alignSelf: \"stretch\",\n overflow: \"hidden\",\n \"& svg\": {\n position: \"absolute\",\n ...shorthands.inset(0),\n width: \"100%\",\n height: \"100%\",\n },\n \"& img\": {\n position: \"absolute\",\n ...shorthands.inset(0),\n width: \"100%\",\n height: \"100%\",\n objectFit: \"contain\",\n },\n },\n\n // Content\n content: {\n display: \"grid\",\n minWidth: 0,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n gridAutoRows: \"min-content\",\n alignItems: \"center\",\n columnGap: tokens.spacingElement2,\n paddingTop: tokens.spacingElement1,\n paddingBottom: tokens.spacingElement1,\n [`&:has([${SLOT_ATTR}=\"option-card-control\"])`]: {\n gridTemplateColumns: \"1fr auto\",\n },\n },\n\n // Title\n title: {\n gridColumnStart: 1,\n gridRowStart: 1,\n minWidth: 0,\n alignSelf: \"center\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n fontWeight: tokens.fontWeightSemibold,\n },\n\n // Description\n description: {\n gridColumnStart: 1,\n gridRowStart: 2,\n minWidth: 0,\n overflowWrap: \"break-word\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA11,\n },\n\n // Control\n control: {\n gridColumnStart: 2,\n gridRowStart: 1,\n alignSelf: \"center\",\n justifySelf: \"end\",\n },\n\n // Radio glyph\n radioOuter: {\n display: \"grid\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n placeContent: \"center\",\n borderRadius: \"9999px\",\n ...shorthands.border(\"1px\", \"solid\", tokens.accentA7),\n backgroundColor: tokens.semAccentSoft,\n transitionProperty: \"border-color\",\n transitionDuration: \"150ms\",\n },\n radioDot: {\n width: \"0.5rem\",\n height: \"0.5rem\",\n borderRadius: \"9999px\",\n backgroundColor: tokens.semAccentSolid,\n opacity: 0,\n transitionProperty: \"opacity\",\n transitionDuration: \"150ms\",\n },\n\n // Checkbox glyph\n checkboxOuter: {\n display: \"grid\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n placeContent: \"center\",\n ...shorthands.borderRadius(\"4px\"),\n ...shorthands.border(\"1px\", \"solid\", tokens.accentA7),\n backgroundColor: tokens.semAccentSoft,\n color: tokens.accentContrast,\n transitionProperty: \"background-color, border-color\",\n transitionDuration: \"150ms\",\n },\n checkboxCheck: {\n width: \"0.75rem\",\n height: \"0.75rem\",\n opacity: 0,\n transitionProperty: \"opacity\",\n transitionDuration: \"150ms\",\n },\n\n // Switch glyph\n switchTrack: {\n display: \"inline-flex\",\n height: \"1.25rem\",\n width: \"2.125rem\",\n flexShrink: 0,\n alignItems: \"center\",\n borderRadius: \"9999px\",\n ...shorthands.border(\"1px\", \"solid\", \"transparent\"),\n backgroundColor: tokens.grayA3,\n transitionProperty: \"background-color\",\n transitionDuration: \"150ms\",\n },\n switchThumb: {\n display: \"block\",\n width: \"1rem\",\n height: \"1rem\",\n transform: \"translateX(1px)\",\n borderRadius: \"9999px\",\n backgroundColor: tokens.grayContrast,\n // v1 shadow-xs; no shadow tokens in this package.\n boxShadow: \"0 1px 2px 0 #0000000d\",\n transitionProperty: \"transform\",\n transitionDuration: \"150ms\",\n },\n})\n\n// ── Control Glyphs ─────────────────────────────────────────────────────────\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m382-354 339-339q12-12 28-12t28 12q12 12 12 28.5T777-636L410-268q-12 12-28 12t-28-12L182-440q-12-12-11.5-28.5T183-497q12-12 28.5-12t28.5 12l142 143Z\" />\n </svg>\n)\n\nconst RadioGlyph = () => {\n const styles = useStyles()\n return (\n <span\n className={styles.radioOuter}\n {...{ [SLOT_ATTR]: \"option-card-radio-outer\" }}\n >\n <span\n className={styles.radioDot}\n {...{ [SLOT_ATTR]: \"option-card-radio-dot\" }}\n />\n </span>\n )\n}\n\nconst CheckboxGlyph = () => {\n const styles = useStyles()\n return (\n <span\n className={styles.checkboxOuter}\n {...{ [SLOT_ATTR]: \"option-card-checkbox-outer\" }}\n >\n <CheckIcon\n className={styles.checkboxCheck}\n {...{ [SLOT_ATTR]: \"option-card-checkbox-check\" }}\n />\n </span>\n )\n}\n\nconst SwitchGlyph = () => {\n const styles = useStyles()\n return (\n <span\n className={styles.switchTrack}\n {...{ [SLOT_ATTR]: \"option-card-switch-track\" }}\n >\n <span\n className={styles.switchThumb}\n {...{ [SLOT_ATTR]: \"option-card-switch-thumb\" }}\n />\n </span>\n )\n}\n\n// ── OptionCardGroup ────────────────────────────────────────────────────────\n\nexport type OptionCardGroupProps = React.ComponentProps<\n typeof ToggleGroupPrimitive.Root\n> & {\n layout?: OptionCardLayout\n}\n\nexport const OptionCardGroup = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n OptionCardGroupProps\n>(function OptionCardGroup(\n { className, layout = DEFAULT_LAYOUT, ...props },\n ref\n) {\n const styles = useStyles()\n\n return (\n <OptionCardGroupContext.Provider value={{ type: props.type, layout }}>\n <ToggleGroupPrimitive.Root\n ref={ref}\n data-slot=\"option-card-group\"\n {...{ [SLOT_ATTR]: \"option-card-group\" }}\n data-layout={layout}\n {...(props.type === \"single\" ? { role: \"radiogroup\" } : {})}\n className={mergeClasses(styles.group, styles[layout], className)}\n {...props}\n />\n </OptionCardGroupContext.Provider>\n )\n})\n\n// ── OptionCardControl ──────────────────────────────────────────────────────\n\nexport type OptionCardControlProps = React.ComponentProps<\"span\"> & {\n type?: OptionCardControlType\n}\n\nexport const OptionCardControl = React.forwardRef<\n HTMLSpanElement,\n OptionCardControlProps\n>(function OptionCardControl({ className, type, ...props }, ref) {\n const styles = useStyles()\n const card = React.useContext(OptionCardContext)\n const register = card?.registerType\n\n React.useEffect(() => {\n if (type && register) register(type)\n }, [type, register])\n\n const resolved = type ?? card?.controlType ?? \"checkbox\"\n if (resolved === \"none\") return null\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-slot=\"option-card-control\"\n {...{ [SLOT_ATTR]: \"option-card-control\" }}\n className={mergeClasses(styles.control, className)}\n {...props}\n >\n {resolved === \"radio\" ? (\n <RadioGlyph />\n ) : resolved === \"switch\" ? (\n <SwitchGlyph />\n ) : (\n <CheckboxGlyph />\n )}\n </span>\n )\n})\n\n// ── OptionCardMedia ────────────────────────────────────────────────────────\n\nexport type OptionCardMediaVariant = \"icon\" | \"illustration\"\n\nexport type OptionCardMediaProps = React.ComponentProps<\"span\"> & {\n variant?: OptionCardMediaVariant\n}\n\nexport const OptionCardMedia = React.forwardRef<\n HTMLSpanElement,\n OptionCardMediaProps\n>(function OptionCardMedia({ className, variant = \"icon\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-slot=\"option-card-media\"\n {...{ [SLOT_ATTR]: \"option-card-media\" }}\n data-variant={variant}\n className={mergeClasses(\n styles.mediaRoot,\n variant === \"illustration\"\n ? styles.mediaIllustration\n : styles.mediaIcon,\n className\n )}\n {...props}\n />\n )\n})\n\n// ── OptionCardTitle ────────────────────────────────────────────────────────\n\nexport type OptionCardTitleProps = React.ComponentProps<\"span\">\n\nexport const OptionCardTitle = React.forwardRef<\n HTMLSpanElement,\n OptionCardTitleProps\n>(function OptionCardTitle({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"option-card-title\"\n {...{ [SLOT_ATTR]: \"option-card-title\" }}\n className={mergeClasses(styles.title, className)}\n {...props}\n />\n )\n})\n\n// ── OptionCardDescription ──────────────────────────────────────────────────\n\nexport type OptionCardDescriptionProps = React.ComponentProps<\"span\">\n\nexport const OptionCardDescription = React.forwardRef<\n HTMLSpanElement,\n OptionCardDescriptionProps\n>(function OptionCardDescription({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"option-card-description\"\n {...{ [SLOT_ATTR]: \"option-card-description\" }}\n className={mergeClasses(styles.description, className)}\n {...props}\n />\n )\n})\n\n// ── OptionCardContent ──────────────────────────────────────────────────────\n\nexport type OptionCardContentProps = React.ComponentProps<\"span\">\n\nconst hasControl = (children: React.ReactNode) =>\n React.Children.toArray(children).some(\n (c) => React.isValidElement(c) && c.type === OptionCardControl\n )\n\nexport const OptionCardContent = React.forwardRef<\n HTMLSpanElement,\n OptionCardContentProps\n>(function OptionCardContent({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"option-card-content\"\n {...{ [SLOT_ATTR]: \"option-card-content\" }}\n className={mergeClasses(styles.content, className)}\n {...props}\n >\n {children}\n {!hasControl(children) && <OptionCardControl />}\n </span>\n )\n})\n\n// ── OptionCard ─────────────────────────────────────────────────────────────\n\nexport type OptionCardProps = Omit<\n React.ComponentProps<\"button\">,\n \"onChange\" | \"title\"\n> & {\n /** Value of this option. Required inside an {@link OptionCardGroup}. */\n value?: string\n /** Controlled selected state for a standalone (group-less) card. */\n pressed?: boolean\n /** Uncontrolled default selected state for a standalone card. */\n defaultPressed?: boolean\n /** Fired when a standalone card is toggled. */\n onPressedChange?: (pressed: boolean) => void\n}\n\nconst isPart = (node: React.ReactNode, ...parts: React.ElementType[]) =>\n React.isValidElement(node) && parts.includes(node.type as React.ElementType)\n\nexport const OptionCard = React.forwardRef<HTMLButtonElement, OptionCardProps>(\n function OptionCard(\n {\n className,\n children,\n value,\n pressed,\n defaultPressed,\n onPressedChange,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n const group = React.useContext(OptionCardGroupContext)\n const inGroup = group !== null\n\n const fallbackId = React.useId()\n if (\n process.env.NODE_ENV !== \"production\" &&\n inGroup &&\n value === undefined\n ) {\n console.warn(MISSING_VALUE_WARNING)\n }\n\n const [internalPressed, setInternalPressed] = React.useState(\n defaultPressed ?? false\n )\n const isControlled = pressed !== undefined\n const currentPressed = isControlled ? pressed : internalPressed\n const handlePressedChange = (next: boolean) => {\n if (!isControlled) setInternalPressed(next)\n onPressedChange?.(next)\n }\n\n const groupControlType: OptionCardControlType = inGroup\n ? group.type === \"multiple\"\n ? \"checkbox\"\n : \"radio\"\n : \"checkbox\"\n const [controlType, setControlType] =\n React.useState<OptionCardControlType>(groupControlType)\n const ctx = React.useMemo<OptionCardContextValue>(\n () => ({ controlType, registerType: setControlType }),\n [controlType]\n )\n\n const childArray = React.Children.toArray(children)\n const hasContentChild = childArray.some((c) => isPart(c, OptionCardContent))\n const media = childArray.filter((c) => isPart(c, OptionCardMedia))\n const rest = childArray.filter((c) => !isPart(c, OptionCardMedia))\n const content = hasContentChild ? (\n rest\n ) : (\n <OptionCardContent>\n <OptionCardTitle>{rest}</OptionCardTitle>\n </OptionCardContent>\n )\n\n const body = (\n <>\n {media}\n {content}\n </>\n )\n\n if (inGroup) {\n return (\n <OptionCardContext.Provider value={ctx}>\n <ToggleGroupPrimitive.Item\n ref={ref}\n data-slot=\"option-card\"\n {...{ [SLOT_ATTR]: \"option-card\" }}\n value={value ?? fallbackId}\n className={mergeClasses(styles.card, className)}\n {...props}\n >\n {body}\n </ToggleGroupPrimitive.Item>\n </OptionCardContext.Provider>\n )\n }\n\n const standaloneRole = controlType === \"switch\" ? \"switch\" : \"checkbox\"\n\n return (\n <OptionCardContext.Provider value={ctx}>\n <TogglePrimitive.Root\n ref={ref}\n data-slot=\"option-card\"\n {...{ [SLOT_ATTR]: \"option-card\" }}\n pressed={currentPressed}\n onPressedChange={handlePressedChange}\n role={standaloneRole}\n aria-checked={currentPressed}\n aria-pressed={undefined}\n className={mergeClasses(styles.card, className)}\n {...props}\n >\n {body}\n </TogglePrimitive.Root>\n </OptionCardContext.Provider>\n )\n }\n)\n"],"names":["DEFAULT_LAYOUT","MISSING_VALUE_WARNING","OptionCardGroupContext","React","OptionCardContext","useStyles","makeVoltStyles","shorthands","tokens.spacingGroup1","tokens.spacingElement3","tokens.radiusLg","tokens.textSm","tokens.leadingSm","tokens.fontWeightNormal","tokens.grayA12","tokens.accentA8","tokens.semAccentSoft","SLOT_ATTR","tokens.semAccentSolid","tokens.semAccentLight","tokens.spacingElement2","tokens.spacingElement1","tokens.fontWeightSemibold","tokens.textXs","tokens.leadingXs","tokens.grayA11","tokens.accentA7","tokens.accentContrast","tokens.grayA3","tokens.grayContrast","CheckIcon","props","jsx","RadioGlyph","styles","CheckboxGlyph","SwitchGlyph","OptionCardGroup","className","layout","ref","ToggleGroupPrimitive.Root","mergeClasses","OptionCardControl","type","card","register","resolved","OptionCardMedia","variant","OptionCardTitle","OptionCardDescription","hasControl","children","c","OptionCardContent","jsxs","isPart","node","parts","OptionCard","value","pressed","defaultPressed","onPressedChange","group","inGroup","fallbackId","internalPressed","setInternalPressed","isControlled","currentPressed","handlePressedChange","next","groupControlType","controlType","setControlType","ctx","childArray","hasContentChild","media","rest","body","Fragment","ToggleGroupPrimitive.Item","standaloneRole","TogglePrimitive.Root"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import { j as u } from "../../vendor/react/jsx-dev-runtime.js";
2
- import * as $ from "react";
3
- import { shorthands as R } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
4
- import { SLOT_ATTR as k } from "../../packages/volt-runtime/dist/renderer/contract.js";
5
- import { mergeClasses as E } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
6
- import { makeVoltStyles as O } from "../../styles/make-styles.js";
7
- import { spacingGroup2 as g, spacingElement1 as h, accentA8 as D, radiusMd as L, spacingElement2 as T, fontWeightBold as V, leadingXs as I, textXs as P } from "../../tokens/index.js";
8
- import { isCoreFamily as j } from "../../tokens/install.js";
9
- import { useVoltPaletteTokensFor as z } from "../../tokens/use-palette-tokens.js";
10
- import { ClearButton as A } from "../../lib/clear-button.js";
11
- import { NS as B } from "../../tokens/core.generated.js";
12
- import { NS as C } from "../../tokens/palette.generated.js";
13
- const ee = [
1
+ import { jsxs as w, jsx as O } from "react/jsx-runtime";
2
+ import * as R from "react";
3
+ import { shorthands as k } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
4
+ import { SLOT_ATTR as L } from "../../packages/volt-runtime/dist/renderer/contract.js";
5
+ import { mergeClasses as N } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
6
+ import { makeVoltStyles as T } from "../../styles/make-styles.js";
7
+ import { spacingGroup2 as g, spacingElement1 as h, accentA8 as E, radiusMd as I, spacingElement2 as P, fontWeightBold as z, leadingXs as A, textXs as B } from "../../tokens/index.js";
8
+ import { isCoreFamily as C } from "../../tokens/install.js";
9
+ import { useVoltPaletteTokensFor as F } from "../../tokens/use-palette-tokens.js";
10
+ import { ClearButton as V } from "../../lib/clear-button.js";
11
+ import { NS as D } from "../../tokens/core.generated.js";
12
+ import { NS as G } from "../../tokens/palette.generated.js";
13
+ const to = [
14
14
  "blue",
15
15
  "sky",
16
16
  "mint",
@@ -30,26 +30,26 @@ const ee = [
30
30
  "warning",
31
31
  "success",
32
32
  "error"
33
- ], m = "--volt2-pill-bg", p = "--volt2-pill-fg", c = "--volt2-pill-bd", n = "--volt2-pill-hov", x = (e) => j(e) ? B : C, o = (e, t) => `var(--volt2-${x(e)}-sem-${e}-${t})`, F = (e, t) => `var(--volt2-${x(e)}-${e}-${t})`, G = {
34
- soft: (e) => ({
35
- [m]: o(e, "soft"),
36
- [p]: o(e, "light"),
37
- [c]: "transparent",
38
- [n]: o(e, "soft-hover")
33
+ ], p = "--volt2-pill-bg", m = "--volt2-pill-fg", d = "--volt2-pill-bd", a = "--volt2-pill-hov", u = (o) => C(o) ? D : G, t = (o, e) => `var(--volt2-${u(o)}-sem-${o}-${e})`, W = (o, e) => `var(--volt2-${u(o)}-${o}-${e})`, _ = {
34
+ soft: (o) => ({
35
+ [p]: t(o, "soft"),
36
+ [m]: t(o, "light"),
37
+ [d]: "transparent",
38
+ [a]: t(o, "soft-hover")
39
39
  }),
40
- solid: (e) => ({
41
- [m]: o(e, "solid"),
42
- [p]: o(e, "contrast"),
43
- [c]: "transparent",
44
- [n]: o(e, "solid-hover")
40
+ solid: (o) => ({
41
+ [p]: t(o, "solid"),
42
+ [m]: t(o, "contrast"),
43
+ [d]: "transparent",
44
+ [a]: t(o, "solid-hover")
45
45
  }),
46
- surface: (e) => ({
47
- [m]: o(e, "surface"),
48
- [p]: o(e, "light"),
49
- [c]: F(e, "a6"),
50
- [n]: o(e, "surface-hover")
46
+ surface: (o) => ({
47
+ [p]: t(o, "surface"),
48
+ [m]: t(o, "light"),
49
+ [d]: W(o, "a6"),
50
+ [a]: t(o, "surface-hover")
51
51
  })
52
- }, W = O({
52
+ }, j = T({
53
53
  root: {
54
54
  display: "inline-flex",
55
55
  alignItems: "center",
@@ -59,23 +59,23 @@ const ee = [
59
59
  whiteSpace: "nowrap",
60
60
  flexShrink: 0,
61
61
  overflow: "hidden",
62
- fontSize: P,
63
- lineHeight: I,
64
- fontWeight: V,
65
- paddingInline: T,
66
- borderRadius: L,
62
+ fontSize: B,
63
+ lineHeight: A,
64
+ fontWeight: z,
65
+ paddingInline: P,
66
+ borderRadius: I,
67
67
  transitionProperty: "color, box-shadow, background-color",
68
68
  // NEVER write a CSS shorthand in a Griffel style object — see Badge. One atom reads one
69
69
  // custom property; `border` and a later `borderColor` would both survive.
70
- ...R.border("1px", "solid", `var(${c})`),
70
+ ...k.border("1px", "solid", `var(${d})`),
71
71
  // The whole point: one rule each, colour supplied per instance.
72
- backgroundColor: `var(${m})`,
73
- color: `var(${p})`,
72
+ backgroundColor: `var(${p})`,
73
+ color: `var(${m})`,
74
74
  ":focus-visible": {
75
75
  outlineWidth: "2px",
76
76
  outlineStyle: "solid",
77
77
  outlineOffset: "2px",
78
- outlineColor: D
78
+ outlineColor: E
79
79
  },
80
80
  // v1 `[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:pointer-events-none`.
81
81
  "& > svg": {
@@ -91,7 +91,7 @@ const ee = [
91
91
  cursor: "pointer",
92
92
  // The one hover rule. It reads the fourth custom property, line-picked per colour and variant
93
93
  // by VARIANT_SLOTS — never per-colour hover rules.
94
- ":hover": { backgroundColor: `var(${n})` }
94
+ ":hover": { backgroundColor: `var(${a})` }
95
95
  },
96
96
  hasRemove: {
97
97
  // v1's `pr-1` when a clear button is present.
@@ -105,75 +105,59 @@ const ee = [
105
105
  width: g,
106
106
  height: g
107
107
  }
108
- }), oe = $.forwardRef(function({
109
- className: t,
108
+ }), eo = R.forwardRef(function({
109
+ className: e,
110
110
  color: y = "accent",
111
111
  variant: S = "soft",
112
112
  disabled: r,
113
- onRemove: f,
113
+ onRemove: c,
114
114
  onClick: i,
115
115
  children: b,
116
- ...w
117
- }, N) {
118
- const s = W(), d = r ? "gray" : y;
119
- z(d);
120
- const l = !!i && !r, v = G[S](d);
121
- return l || delete v[n], /* @__PURE__ */ u.jsxDEV(
116
+ ...x
117
+ }, $) {
118
+ const s = j(), f = r ? "gray" : y;
119
+ F(f);
120
+ const n = !!i && !r, v = _[S](f);
121
+ return n || delete v[a], /* @__PURE__ */ w(
122
122
  "span",
123
123
  {
124
- ref: N,
124
+ ref: $,
125
125
  "data-slot": "pill",
126
- [k]: "pill",
126
+ [L]: "pill",
127
127
  "data-disabled": r || void 0,
128
- role: l ? "button" : void 0,
129
- tabIndex: l ? 0 : void 0,
128
+ role: n ? "button" : void 0,
129
+ tabIndex: n ? 0 : void 0,
130
130
  onClick: i,
131
- onKeyDown: l ? (a) => {
132
- (a.key === "Enter" || a.key === " ") && (a.preventDefault(), i == null || i(a));
131
+ onKeyDown: n ? (l) => {
132
+ (l.key === "Enter" || l.key === " ") && (l.preventDefault(), i == null || i(l));
133
133
  } : void 0,
134
- className: E(
134
+ className: N(
135
135
  s.root,
136
- l && s.interactive,
137
- f && s.hasRemove,
136
+ n && s.interactive,
137
+ c && s.hasRemove,
138
138
  r && s.disabled,
139
- t
139
+ e
140
140
  ),
141
141
  style: { ...v },
142
- ...w,
142
+ ...x,
143
143
  children: [
144
144
  b,
145
- f && // v1 composes the shared ClearButton here — hover, focus ring and the size-3 CloseIcon
145
+ c && // v1 composes the shared ClearButton here — hover, focus ring and the size-3 CloseIcon
146
146
  // fallback all live in the lib, not inline.
147
- /* @__PURE__ */ u.jsxDEV(
148
- A,
147
+ /* @__PURE__ */ O(
148
+ V,
149
149
  {
150
150
  className: s.removeSize,
151
- onClick: f,
151
+ onClick: c,
152
152
  disabled: r
153
- },
154
- void 0,
155
- !1,
156
- {
157
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/pill/pill.tsx",
158
- lineNumber: 233,
159
- columnNumber: 9
160
- },
161
- this
153
+ }
162
154
  )
163
155
  ]
164
- },
165
- void 0,
166
- !0,
167
- {
168
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/pill/pill.tsx",
169
- lineNumber: 201,
170
- columnNumber: 5
171
- },
172
- this
156
+ }
173
157
  );
174
158
  });
175
159
  export {
176
- ee as PILL_COLORS,
177
- oe as Pill
160
+ to as PILL_COLORS,
161
+ eo as Pill
178
162
  };
179
163
  //# sourceMappingURL=pill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pill.js","sources":["../../../src/components/pill/pill.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport { NS, PALETTE_NS } from \"../../tokens\"\nimport { isCoreFamily } from \"../../tokens/install\"\nimport { useVoltPaletteTokensFor } from \"../../tokens/use-palette-tokens\"\nimport * as tokens from \"../../tokens\"\nimport { ClearButton } from \"../../lib/clear-button\"\n\n/**\n * Pill — same colour-matrix collapse as Badge, plus a hover background.\n *\n * v1 enumerates 19 colours x 3 styles as 57 `compoundVariants`, each a distinct class string\n * built by interpolation (`volt-bg-${color}-soft`), which Tailwind's scanner cannot see and\n * `safelist.css` exists to force into existence. The hover state made that 57 more per-colour\n * rules. Here the colour is a VALUE, not part of a class name: the four atoms below read four\n * custom properties, the component sets those inline from the `color` prop, and a single `:hover`\n * atom reads the hover background. Total rules: one small set per style variant — 9 colours' worth\n * of rules cover all 19 x 3 combinations.\n */\n\nconst COLORS = [\n \"blue\",\n \"sky\",\n \"mint\",\n \"lime\",\n \"green\",\n \"teal\",\n \"cyan\",\n \"indigo\",\n \"purple\",\n \"pink\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"bronze\",\n \"gray\",\n \"accent\",\n \"warning\",\n \"success\",\n \"error\",\n] as const\n\nexport type PillColor = (typeof COLORS)[number]\nexport type PillVariant = \"soft\" | \"solid\" | \"surface\"\n\n/** The four slots a variant can paint. Set inline; read by the atoms below. */\nconst BG = \"--volt2-pill-bg\"\nconst FG = \"--volt2-pill-fg\"\nconst BD = \"--volt2-pill-bd\"\nconst HOV = \"--volt2-pill-hov\"\n\n/**\n * The namespace fix — same shape as Badge's. Pill has no `neutral` alias of its own (its\n * gray-when-disabled resolution already happens in the component body, before `VARIANT_SLOTS` is\n * called — `color` here is always the already-resolved family), so no extra resolve step is needed\n * before classifying it. See BADGE-PILL-NAMESPACE-FIX.md.\n */\nconst namespaceFor = (family: string): string =>\n isCoreFamily(family) ? NS : PALETTE_NS\n\nconst semantic = (color: PillColor, slot: string): string =>\n `var(--volt2-${namespaceFor(color)}-sem-${color}-${slot})`\nconst primitive = (color: PillColor, step: string): string =>\n `var(--volt2-${namespaceFor(color)}-${color}-${step})`\n\n/**\n * Which token each variant pulls into each slot. This replaces the 57-entry compound matrix: it is\n * data about three variants, not about 57 combinations. Text uses the `light` semantic slot, which\n * is Pill's one departure from Badge (Badge uses `default`).\n */\nconst VARIANT_SLOTS: Record<\n PillVariant,\n (color: PillColor) => Record<string, string>\n> = {\n soft: (c) => ({\n [BG]: semantic(c, \"soft\"),\n [FG]: semantic(c, \"light\"),\n [BD]: \"transparent\",\n [HOV]: semantic(c, \"soft-hover\"),\n }),\n solid: (c) => ({\n [BG]: semantic(c, \"solid\"),\n [FG]: semantic(c, \"contrast\"),\n [BD]: \"transparent\",\n [HOV]: semantic(c, \"solid-hover\"),\n }),\n surface: (c) => ({\n [BG]: semantic(c, \"surface\"),\n [FG]: semantic(c, \"light\"),\n [BD]: primitive(c, \"a6\"),\n [HOV]: semantic(c, \"surface-hover\"),\n }),\n}\n\nconst useStyles = makeVoltStyles({\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n // v1 `h-6` — a fixed height, not a minimum.\n height: \"1.5rem\",\n gap: tokens.spacingElement1,\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n overflow: \"hidden\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightBold,\n paddingInline: tokens.spacingElement2,\n borderRadius: tokens.radiusMd,\n transitionProperty: \"color, box-shadow, background-color\",\n // NEVER write a CSS shorthand in a Griffel style object — see Badge. One atom reads one\n // custom property; `border` and a later `borderColor` would both survive.\n ...shorthands.border(\"1px\", \"solid\", `var(${BD})`),\n // The whole point: one rule each, colour supplied per instance.\n backgroundColor: `var(${BG})`,\n color: `var(${FG})`,\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n // v1 `[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:pointer-events-none`.\n \"& > svg\": {\n // Literals, not tokens.spacingGroup2: that happens to be 1rem, but a spacing token has no\n // business describing a dimension. The scale has no size family — noted rather than faked.\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n pointerEvents: \"none\",\n },\n },\n interactive: {\n cursor: \"pointer\",\n // The one hover rule. It reads the fourth custom property, line-picked per colour and variant\n // by VARIANT_SLOTS — never per-colour hover rules.\n \":hover\": { backgroundColor: `var(${HOV})` },\n },\n hasRemove: {\n // v1's `pr-1` when a clear button is present.\n paddingRight: tokens.spacingElement1,\n },\n disabled: {\n pointerEvents: \"none\",\n },\n removeSize: {\n // v1's `size-4` on the composed ClearButton.\n width: tokens.spacingGroup2,\n height: tokens.spacingGroup2,\n },\n})\n\nexport type PillProps = Omit<React.ComponentProps<\"span\">, \"color\"> & {\n color?: PillColor\n /**\n * Named `variant`, not `style`. v1 called this `style`, which shadows the HTML `style` attribute.\n * Retrocompat is not a requirement here, so the collision is fixed rather than inherited.\n */\n variant?: PillVariant\n disabled?: boolean\n onRemove?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\n\nexport const Pill = React.forwardRef<HTMLSpanElement, PillProps>(function Pill(\n {\n className,\n color = \"accent\",\n variant = \"soft\",\n disabled,\n onRemove,\n onClick,\n children,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n\n // v1 resolves to gray when disabled and only makes the pill interactive when it has an onClick.\n const resolvedColor: PillColor = disabled ? \"gray\" : color\n\n // A decorative family can still arrive from an expression the build cannot see, so this has to\n // be re-evaluated every commit (WP2B2 — the hook closes over this render's resolved value) — but\n // it is the RESOLVED family that decides, and the five core families Pill offers (accent, gray,\n // warning, success, error) need no palette sheet at all.\n useVoltPaletteTokensFor(resolvedColor)\n const interactive = !!onClick && !disabled\n\n // The hover slot is only meaningful while interactive — v1 attaches its hover background class\n // (`interactive && hoverStyleClasses[...]`) only then, so drop it from the inline properties\n // otherwise. Setting it unconditionally would be harmless but would claim a hover state that\n // cannot be reached.\n const slot = VARIANT_SLOTS[variant](resolvedColor)\n if (!interactive) delete slot[HOV]\n\n return (\n <span\n ref={ref}\n data-slot=\"pill\"\n {...{ [SLOT_ATTR]: \"pill\" }}\n data-disabled={disabled || undefined}\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n onClick={onClick}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n onClick?.(e as unknown as React.MouseEvent<HTMLSpanElement>)\n }\n }\n : undefined\n }\n className={mergeClasses(\n styles.root,\n interactive && styles.interactive,\n onRemove && styles.hasRemove,\n disabled && styles.disabled,\n className\n )}\n style={{ ...slot } as React.CSSProperties}\n {...props}\n >\n {children}\n {onRemove && (\n // v1 composes the shared ClearButton here — hover, focus ring and the size-3 CloseIcon\n // fallback all live in the lib, not inline.\n <ClearButton\n className={styles.removeSize}\n onClick={onRemove}\n disabled={disabled}\n />\n )}\n </span>\n )\n})\n\nexport { COLORS as PILL_COLORS }\n"],"names":["COLORS","BG","FG","BD","HOV","namespaceFor","family","isCoreFamily","NS","PALETTE_NS","semantic","color","slot","primitive","step","VARIANT_SLOTS","c","useStyles","makeVoltStyles","tokens.spacingElement1","tokens.textXs","tokens.leadingXs","tokens.fontWeightBold","tokens.spacingElement2","tokens.radiusMd","shorthands","tokens.accentA8","tokens.spacingGroup2","Pill","React","className","variant","disabled","onRemove","onClick","children","props","ref","styles","resolvedColor","useVoltPaletteTokensFor","interactive","jsxDEV","SLOT_ATTR","e","mergeClasses","ClearButton"],"mappings":";;;;;;;;;;;;AAwBA,MAAMA,KAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMMC,IAAK,mBACLC,IAAK,mBACLC,IAAK,mBACLC,IAAM,oBAQNC,IAAe,CAACC,MACpBC,EAAaD,CAAM,IAAIE,IAAKC,GAExBC,IAAW,CAACC,GAAkBC,MAClC,eAAeP,EAAaM,CAAK,CAAC,QAAQA,CAAK,IAAIC,CAAI,KACnDC,IAAY,CAACF,GAAkBG,MACnC,eAAeT,EAAaM,CAAK,CAAC,IAAIA,CAAK,IAAIG,CAAI,KAO/CC,IAGF;AAAA,EACF,MAAM,CAACC,OAAO;AAAA,IACZ,CAACf,CAAE,GAAGS,EAASM,GAAG,MAAM;AAAA,IACxB,CAACd,CAAE,GAAGQ,EAASM,GAAG,OAAO;AAAA,IACzB,CAACb,CAAE,GAAG;AAAA,IACN,CAACC,CAAG,GAAGM,EAASM,GAAG,YAAY;AAAA,EAAA;AAAA,EAEjC,OAAO,CAACA,OAAO;AAAA,IACb,CAACf,CAAE,GAAGS,EAASM,GAAG,OAAO;AAAA,IACzB,CAACd,CAAE,GAAGQ,EAASM,GAAG,UAAU;AAAA,IAC5B,CAACb,CAAE,GAAG;AAAA,IACN,CAACC,CAAG,GAAGM,EAASM,GAAG,aAAa;AAAA,EAAA;AAAA,EAElC,SAAS,CAACA,OAAO;AAAA,IACf,CAACf,CAAE,GAAGS,EAASM,GAAG,SAAS;AAAA,IAC3B,CAACd,CAAE,GAAGQ,EAASM,GAAG,OAAO;AAAA,IACzB,CAACb,CAAE,GAAGU,EAAUG,GAAG,IAAI;AAAA,IACvB,CAACZ,CAAG,GAAGM,EAASM,GAAG,eAAe;AAAA,EAAA;AAEtC,GAEMC,IAAYC,EAAe;AAAA,EAC/B,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,YAAY;AAAA;AAAA,IAEZ,QAAQ;AAAA,IACR,KAAKC;AAAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAUC;AAAAA,IACV,YAAYC;AAAAA,IACZ,YAAYC;AAAAA,IACZ,eAAeC;AAAAA,IACf,cAAcC;AAAAA,IACd,oBAAoB;AAAA;AAAA;AAAA,IAGpB,GAAGC,EAAW,OAAO,OAAO,SAAS,OAAOtB,CAAE,GAAG;AAAA;AAAA,IAEjD,iBAAiB,OAAOF,CAAE;AAAA,IAC1B,OAAO,OAAOC,CAAE;AAAA,IAChB,kBAAkB;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,cAAcwB;AAAAA,IAAO;AAAA;AAAA,IAGvB,WAAW;AAAA;AAAA;AAAA,MAGT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,eAAe;AAAA,IAAA;AAAA,EACjB;AAAA,EAEF,aAAa;AAAA,IACX,QAAQ;AAAA;AAAA;AAAA,IAGR,UAAU,EAAE,iBAAiB,OAAOtB,CAAG,IAAA;AAAA,EAAI;AAAA,EAE7C,WAAW;AAAA;AAAA,IAET,cAAce;AAAAA,EAAO;AAAA,EAEvB,UAAU;AAAA,IACR,eAAe;AAAA,EAAA;AAAA,EAEjB,YAAY;AAAA;AAAA,IAEV,OAAOQ;AAAAA,IACP,QAAQA;AAAAA,EAAO;AAEnB,CAAC,GAaYC,KAAOC,EAAM,WAAuC,SAC/D;AAAA,EACE,WAAAC;AAAA,EACA,OAAAnB,IAAQ;AAAA,EACR,SAAAoB,IAAU;AAAA,EACV,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAASrB,EAAA,GAGTsB,IAA2BP,IAAW,SAASrB;AAMrD,EAAA6B,EAAwBD,CAAa;AACrC,QAAME,IAAc,CAAC,CAACP,KAAW,CAACF,GAM5BpB,IAAOG,EAAcgB,CAAO,EAAEQ,CAAa;AACjD,SAAKE,KAAa,OAAO7B,EAAKR,CAAG,GAG/BsC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAL;AAAA,MACA,aAAU;AAAA,MACJ,CAACM,CAAS,GAAG;AAAA,MACnB,iBAAeX,KAAY;AAAA,MAC3B,MAAMS,IAAc,WAAW;AAAA,MAC/B,UAAUA,IAAc,IAAI;AAAA,MAC5B,SAAAP;AAAA,MACA,WACEO,IACI,CAACG,MAAM;AACL,SAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFV,KAAA,QAAAA,EAAUU;AAAA,MAEd,IACA;AAAA,MAEN,WAAWC;AAAAA,QACTP,EAAO;AAAA,QACPG,KAAeH,EAAO;AAAA,QACtBL,KAAYK,EAAO;AAAA,QACnBN,KAAYM,EAAO;AAAA,QACnBR;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,GAAGlB,EAAA;AAAA,MACX,GAAGwB;AAAA,MAEH,UAAA;AAAA,QAAAD;AAAA,QACAF;AAAA;AAAA,QAGCS,gBAAAA,EAAAA;AAAAA,UAACI;AAAA,UAAA;AAAA,YACC,WAAWR,EAAO;AAAA,YAClB,SAASL;AAAA,YACT,UAAAD;AAAA,UAAA;AAAA,UAHF;AAAA,UAAA;AAAA,UAAA;AAAA,YAAA,UAAA;AAAA,YAAA,YAAA;AAAA,YAAA,cAAA;AAAA,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAIA;AAAA,IAAA;AAAA,IApCJ;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAA;AAAA,EAAA;AAwCJ,CAAC;"}
1
+ {"version":3,"file":"pill.js","sources":["../../../src/components/pill/pill.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport { NS, PALETTE_NS } from \"../../tokens\"\nimport { isCoreFamily } from \"../../tokens/install\"\nimport { useVoltPaletteTokensFor } from \"../../tokens/use-palette-tokens\"\nimport * as tokens from \"../../tokens\"\nimport { ClearButton } from \"../../lib/clear-button\"\n\n/**\n * Pill — same colour-matrix collapse as Badge, plus a hover background.\n *\n * v1 enumerates 19 colours x 3 styles as 57 `compoundVariants`, each a distinct class string\n * built by interpolation (`volt-bg-${color}-soft`), which Tailwind's scanner cannot see and\n * `safelist.css` exists to force into existence. The hover state made that 57 more per-colour\n * rules. Here the colour is a VALUE, not part of a class name: the four atoms below read four\n * custom properties, the component sets those inline from the `color` prop, and a single `:hover`\n * atom reads the hover background. Total rules: one small set per style variant — 9 colours' worth\n * of rules cover all 19 x 3 combinations.\n */\n\nconst COLORS = [\n \"blue\",\n \"sky\",\n \"mint\",\n \"lime\",\n \"green\",\n \"teal\",\n \"cyan\",\n \"indigo\",\n \"purple\",\n \"pink\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"bronze\",\n \"gray\",\n \"accent\",\n \"warning\",\n \"success\",\n \"error\",\n] as const\n\nexport type PillColor = (typeof COLORS)[number]\nexport type PillVariant = \"soft\" | \"solid\" | \"surface\"\n\n/** The four slots a variant can paint. Set inline; read by the atoms below. */\nconst BG = \"--volt2-pill-bg\"\nconst FG = \"--volt2-pill-fg\"\nconst BD = \"--volt2-pill-bd\"\nconst HOV = \"--volt2-pill-hov\"\n\n/**\n * The namespace fix — same shape as Badge's. Pill has no `neutral` alias of its own (its\n * gray-when-disabled resolution already happens in the component body, before `VARIANT_SLOTS` is\n * called — `color` here is always the already-resolved family), so no extra resolve step is needed\n * before classifying it. See BADGE-PILL-NAMESPACE-FIX.md.\n */\nconst namespaceFor = (family: string): string =>\n isCoreFamily(family) ? NS : PALETTE_NS\n\nconst semantic = (color: PillColor, slot: string): string =>\n `var(--volt2-${namespaceFor(color)}-sem-${color}-${slot})`\nconst primitive = (color: PillColor, step: string): string =>\n `var(--volt2-${namespaceFor(color)}-${color}-${step})`\n\n/**\n * Which token each variant pulls into each slot. This replaces the 57-entry compound matrix: it is\n * data about three variants, not about 57 combinations. Text uses the `light` semantic slot, which\n * is Pill's one departure from Badge (Badge uses `default`).\n */\nconst VARIANT_SLOTS: Record<\n PillVariant,\n (color: PillColor) => Record<string, string>\n> = {\n soft: (c) => ({\n [BG]: semantic(c, \"soft\"),\n [FG]: semantic(c, \"light\"),\n [BD]: \"transparent\",\n [HOV]: semantic(c, \"soft-hover\"),\n }),\n solid: (c) => ({\n [BG]: semantic(c, \"solid\"),\n [FG]: semantic(c, \"contrast\"),\n [BD]: \"transparent\",\n [HOV]: semantic(c, \"solid-hover\"),\n }),\n surface: (c) => ({\n [BG]: semantic(c, \"surface\"),\n [FG]: semantic(c, \"light\"),\n [BD]: primitive(c, \"a6\"),\n [HOV]: semantic(c, \"surface-hover\"),\n }),\n}\n\nconst useStyles = makeVoltStyles({\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n // v1 `h-6` — a fixed height, not a minimum.\n height: \"1.5rem\",\n gap: tokens.spacingElement1,\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n overflow: \"hidden\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightBold,\n paddingInline: tokens.spacingElement2,\n borderRadius: tokens.radiusMd,\n transitionProperty: \"color, box-shadow, background-color\",\n // NEVER write a CSS shorthand in a Griffel style object — see Badge. One atom reads one\n // custom property; `border` and a later `borderColor` would both survive.\n ...shorthands.border(\"1px\", \"solid\", `var(${BD})`),\n // The whole point: one rule each, colour supplied per instance.\n backgroundColor: `var(${BG})`,\n color: `var(${FG})`,\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n // v1 `[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:pointer-events-none`.\n \"& > svg\": {\n // Literals, not tokens.spacingGroup2: that happens to be 1rem, but a spacing token has no\n // business describing a dimension. The scale has no size family — noted rather than faked.\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n pointerEvents: \"none\",\n },\n },\n interactive: {\n cursor: \"pointer\",\n // The one hover rule. It reads the fourth custom property, line-picked per colour and variant\n // by VARIANT_SLOTS — never per-colour hover rules.\n \":hover\": { backgroundColor: `var(${HOV})` },\n },\n hasRemove: {\n // v1's `pr-1` when a clear button is present.\n paddingRight: tokens.spacingElement1,\n },\n disabled: {\n pointerEvents: \"none\",\n },\n removeSize: {\n // v1's `size-4` on the composed ClearButton.\n width: tokens.spacingGroup2,\n height: tokens.spacingGroup2,\n },\n})\n\nexport type PillProps = Omit<React.ComponentProps<\"span\">, \"color\"> & {\n color?: PillColor\n /**\n * Named `variant`, not `style`. v1 called this `style`, which shadows the HTML `style` attribute.\n * Retrocompat is not a requirement here, so the collision is fixed rather than inherited.\n */\n variant?: PillVariant\n disabled?: boolean\n onRemove?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\n\nexport const Pill = React.forwardRef<HTMLSpanElement, PillProps>(function Pill(\n {\n className,\n color = \"accent\",\n variant = \"soft\",\n disabled,\n onRemove,\n onClick,\n children,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n\n // v1 resolves to gray when disabled and only makes the pill interactive when it has an onClick.\n const resolvedColor: PillColor = disabled ? \"gray\" : color\n\n // A decorative family can still arrive from an expression the build cannot see, so this has to\n // be re-evaluated every commit (WP2B2 — the hook closes over this render's resolved value) — but\n // it is the RESOLVED family that decides, and the five core families Pill offers (accent, gray,\n // warning, success, error) need no palette sheet at all.\n useVoltPaletteTokensFor(resolvedColor)\n const interactive = !!onClick && !disabled\n\n // The hover slot is only meaningful while interactive — v1 attaches its hover background class\n // (`interactive && hoverStyleClasses[...]`) only then, so drop it from the inline properties\n // otherwise. Setting it unconditionally would be harmless but would claim a hover state that\n // cannot be reached.\n const slot = VARIANT_SLOTS[variant](resolvedColor)\n if (!interactive) delete slot[HOV]\n\n return (\n <span\n ref={ref}\n data-slot=\"pill\"\n {...{ [SLOT_ATTR]: \"pill\" }}\n data-disabled={disabled || undefined}\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n onClick={onClick}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n onClick?.(e as unknown as React.MouseEvent<HTMLSpanElement>)\n }\n }\n : undefined\n }\n className={mergeClasses(\n styles.root,\n interactive && styles.interactive,\n onRemove && styles.hasRemove,\n disabled && styles.disabled,\n className\n )}\n style={{ ...slot } as React.CSSProperties}\n {...props}\n >\n {children}\n {onRemove && (\n // v1 composes the shared ClearButton here — hover, focus ring and the size-3 CloseIcon\n // fallback all live in the lib, not inline.\n <ClearButton\n className={styles.removeSize}\n onClick={onRemove}\n disabled={disabled}\n />\n )}\n </span>\n )\n})\n\nexport { COLORS as PILL_COLORS }\n"],"names":["COLORS","BG","FG","BD","HOV","namespaceFor","family","isCoreFamily","NS","PALETTE_NS","semantic","color","slot","primitive","step","VARIANT_SLOTS","c","useStyles","makeVoltStyles","tokens.spacingElement1","tokens.textXs","tokens.leadingXs","tokens.fontWeightBold","tokens.spacingElement2","tokens.radiusMd","shorthands","tokens.accentA8","tokens.spacingGroup2","Pill","React","className","variant","disabled","onRemove","onClick","children","props","ref","styles","resolvedColor","useVoltPaletteTokensFor","interactive","jsxs","SLOT_ATTR","e","mergeClasses","jsx","ClearButton"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import { j as a } from "../../vendor/react/jsx-dev-runtime.js";
2
- import * as t from "react";
3
- import { Root as d, Anchor as v, Content as g, Portal as x, Trigger as y } from "../../vendor/@radix-ui/react-popover/dist/index.js";
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import * as e from "react";
3
+ import { Root as u, Anchor as g, Content as v, Portal as y, Trigger as P } from "../../vendor/@radix-ui/react-popover/dist/index.js";
4
4
  import { shorthands as p } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
5
5
  import { SLOT_ATTR as s } from "../../packages/volt-runtime/dist/renderer/contract.js";
6
- import { mergeClasses as N } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
6
+ import { mergeClasses as x } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
7
7
  import { useDensity as b } from "../density-provider/density-provider.js";
8
8
  import { makeVoltStyles as h } from "../../styles/make-styles.js";
9
- import { spacingGroup2 as P, grayA1 as w, radiusXl as D, spacingElement2 as i, grayA12 as R, body as T } from "../../tokens/index.js";
10
- const j = h({
9
+ import { spacingGroup2 as R, grayA1 as T, radiusXl as A, spacingElement2 as i, grayA12 as C, body as N } from "../../tokens/index.js";
10
+ const w = h({
11
11
  popup: {
12
- backgroundColor: T,
13
- color: R,
12
+ backgroundColor: N,
13
+ color: C,
14
14
  transformOrigin: "var(--radix-popover-content-transform-origin)",
15
- ...p.borderRadius(D),
16
- ...p.border("1px", "solid", w),
15
+ ...p.borderRadius(A),
16
+ ...p.border("1px", "solid", T),
17
17
  // v1 shadow-md
18
18
  boxShadow: "0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a",
19
19
  outlineStyle: "none",
@@ -78,106 +78,70 @@ const j = h({
78
78
  }
79
79
  },
80
80
  popupPadding: {
81
- ...p.padding(P)
81
+ ...p.padding(R)
82
82
  }
83
- }), Y = t.forwardRef(
84
- function(o, e) {
85
- return /* @__PURE__ */ a.jsxDEV(d, { "data-slot": "popover", ...o }, void 0, !1, {
86
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/popover/popover.tsx",
87
- lineNumber: 90,
88
- columnNumber: 12
89
- }, this);
83
+ }), F = e.forwardRef(
84
+ function(o, a) {
85
+ return /* @__PURE__ */ r(u, { "data-slot": "popover", ...o });
90
86
  }
91
- ), $ = t.forwardRef(function({ className: o, ...e }, r) {
92
- return /* @__PURE__ */ a.jsxDEV(
93
- y,
87
+ ), O = e.forwardRef(function({ className: o, ...a }, t) {
88
+ return /* @__PURE__ */ r(
89
+ P,
94
90
  {
95
- ref: r,
91
+ ref: t,
96
92
  "data-slot": "popover-trigger",
97
93
  [s]: "popover-trigger",
98
94
  className: o,
99
- ...e
100
- },
101
- void 0,
102
- !1,
103
- {
104
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/popover/popover.tsx",
105
- lineNumber: 103,
106
- columnNumber: 5
107
- },
108
- this
95
+ ...a
96
+ }
109
97
  );
110
- }), _ = t.forwardRef(
111
- function(o, e) {
112
- return /* @__PURE__ */ a.jsxDEV(
113
- x,
98
+ }), j = e.forwardRef(
99
+ function(o, a) {
100
+ return /* @__PURE__ */ r(
101
+ y,
114
102
  {
115
103
  "data-slot": "popover-portal",
116
104
  [s]: "popover-portal",
117
105
  ...o
118
- },
119
- void 0,
120
- !1,
121
- {
122
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/popover/popover.tsx",
123
- lineNumber: 120,
124
- columnNumber: 7
125
- },
126
- this
106
+ }
127
107
  );
128
108
  }
129
- ), z = t.forwardRef(function({ className: o, ...e }, r) {
130
- return /* @__PURE__ */ a.jsxDEV(
131
- v,
109
+ ), E = e.forwardRef(function({ className: o, ...a }, t) {
110
+ return /* @__PURE__ */ r(
111
+ g,
132
112
  {
133
- ref: r,
113
+ ref: t,
134
114
  "data-slot": "popover-anchor",
135
115
  [s]: "popover-anchor",
136
116
  className: o,
137
- ...e
138
- },
139
- void 0,
140
- !1,
141
- {
142
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/popover/popover.tsx",
143
- lineNumber: 138,
144
- columnNumber: 5
145
- },
146
- this
117
+ ...a
118
+ }
147
119
  );
148
- }), F = t.forwardRef(function({ className: o, align: e = "center", sideOffset: r = 4, flush: c = !1, ...f }, u) {
149
- const l = j(), m = b();
150
- return /* @__PURE__ */ a.jsxDEV(
151
- g,
120
+ }), G = e.forwardRef(function({ className: o, align: a = "center", sideOffset: t = 4, flush: d = !1, ...f }, l) {
121
+ const m = w(), c = b();
122
+ return /* @__PURE__ */ r(
123
+ v,
152
124
  {
153
- ref: u,
125
+ ref: l,
154
126
  "data-slot": "popover-content",
155
127
  [s]: "popover-content",
156
- ...m !== void 0 ? { "data-density": m } : {},
157
- align: e,
158
- sideOffset: r,
159
- className: N(
160
- l.popup,
161
- !c && l.popupPadding,
128
+ ...c !== void 0 ? { "data-density": c } : {},
129
+ align: a,
130
+ sideOffset: t,
131
+ className: x(
132
+ m.popup,
133
+ !d && m.popupPadding,
162
134
  o
163
135
  ),
164
136
  ...f
165
- },
166
- void 0,
167
- !1,
168
- {
169
- fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/popover/popover.tsx",
170
- lineNumber: 166,
171
- columnNumber: 5
172
- },
173
- this
137
+ }
174
138
  );
175
139
  });
176
140
  export {
177
- Y as Popover,
178
- z as PopoverAnchor,
179
- F as PopoverContent,
180
- _ as PopoverPortal,
181
- $ as PopoverTrigger
141
+ F as Popover,
142
+ E as PopoverAnchor,
143
+ G as PopoverContent,
144
+ j as PopoverPortal,
145
+ O as PopoverTrigger
182
146
  };
183
147
  //# sourceMappingURL=popover.js.map