@alfadocs/ui-kit-debug 0.17.1 → 0.17.3

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 (202) hide show
  1. package/dist/_chunks/{accordion-DOmxGEWU.js → accordion-CNcodXuO.js} +6 -6
  2. package/dist/_chunks/{accordion-DOmxGEWU.js.map → accordion-CNcodXuO.js.map} +1 -1
  3. package/dist/_chunks/{ai-prompt-input-DEiQwIMn.js → ai-prompt-input-B-w5Rx3V.js} +184 -181
  4. package/dist/_chunks/ai-prompt-input-B-w5Rx3V.js.map +1 -0
  5. package/dist/_chunks/{alert-pgdXrEO5.js → alert-DBnawbmf.js} +64 -59
  6. package/dist/_chunks/alert-DBnawbmf.js.map +1 -0
  7. package/dist/_chunks/{audio-recorder-CRh4uyFL.js → audio-recorder-DNkQLW1G.js} +3 -3
  8. package/dist/_chunks/{audio-recorder-CRh4uyFL.js.map → audio-recorder-DNkQLW1G.js.map} +1 -1
  9. package/dist/_chunks/{autocomplete-mOg7WLOh.js → autocomplete-BxfabhZ8.js} +167 -164
  10. package/dist/_chunks/autocomplete-BxfabhZ8.js.map +1 -0
  11. package/dist/_chunks/{balance-cell-renderer-DWWtX-VM.js → balance-cell-renderer-DJB6WDPe.js} +2 -2
  12. package/dist/_chunks/{balance-cell-renderer-DWWtX-VM.js.map → balance-cell-renderer-DJB6WDPe.js.map} +1 -1
  13. package/dist/_chunks/{chat-input-UK-bXU7u.js → chat-input-B3XmFGDw.js} +123 -122
  14. package/dist/_chunks/chat-input-B3XmFGDw.js.map +1 -0
  15. package/dist/_chunks/checkbox-group-Bwmt1ovQ.js +213 -0
  16. package/dist/_chunks/checkbox-group-Bwmt1ovQ.js.map +1 -0
  17. package/dist/_chunks/{checkbox-D5EHnB14.js → checkbox-mwbrPZDY.js} +75 -70
  18. package/dist/_chunks/checkbox-mwbrPZDY.js.map +1 -0
  19. package/dist/_chunks/{collapsible-CuxUBoHJ.js → collapsible-hHiyZp0b.js} +61 -63
  20. package/dist/_chunks/collapsible-hHiyZp0b.js.map +1 -0
  21. package/dist/_chunks/{color-picker-BPfcByHH.js → color-picker-Bm-gzpsh.js} +2 -2
  22. package/dist/_chunks/{color-picker-BPfcByHH.js.map → color-picker-Bm-gzpsh.js.map} +1 -1
  23. package/dist/_chunks/{combobox-D5tWe0t_.js → combobox-Da9eq00i.js} +214 -211
  24. package/dist/_chunks/combobox-Da9eq00i.js.map +1 -0
  25. package/dist/_chunks/{copy-field-BCHAZ8QV.js → copy-field-BAF4mt9h.js} +95 -132
  26. package/dist/_chunks/copy-field-BAF4mt9h.js.map +1 -0
  27. package/dist/_chunks/{date-picker-BlhtBhPo.js → date-picker-BIoSLRly.js} +222 -219
  28. package/dist/_chunks/{date-picker-BlhtBhPo.js.map → date-picker-BIoSLRly.js.map} +1 -1
  29. package/dist/_chunks/{date-range-picker-C2hRu_Ke.js → date-range-picker-9gANFNG9.js} +81 -78
  30. package/dist/_chunks/date-range-picker-9gANFNG9.js.map +1 -0
  31. package/dist/_chunks/{date-time-picker-B67mPZmP.js → date-time-picker-DG7BiGdb.js} +98 -95
  32. package/dist/_chunks/date-time-picker-DG7BiGdb.js.map +1 -0
  33. package/dist/_chunks/{dialog-DRp6Dejy.js → dialog-DUomPCRS.js} +69 -71
  34. package/dist/_chunks/dialog-DUomPCRS.js.map +1 -0
  35. package/dist/_chunks/{dropdown-menu-dyV7gHh_.js → dropdown-menu-DZxwF23X.js} +108 -110
  36. package/dist/_chunks/dropdown-menu-DZxwF23X.js.map +1 -0
  37. package/dist/_chunks/{freemium-paywall-BTEiVkes.js → freemium-paywall-DXc7XlGE.js} +98 -97
  38. package/dist/_chunks/freemium-paywall-DXc7XlGE.js.map +1 -0
  39. package/dist/_chunks/{leo-sidebar-D3TuyH5_.js → leo-sidebar-DIsiTju3.js} +2 -2
  40. package/dist/_chunks/{leo-sidebar-D3TuyH5_.js.map → leo-sidebar-DIsiTju3.js.map} +1 -1
  41. package/dist/_chunks/{list-DcjV0m5B.js → list-BdvDctBz.js} +184 -180
  42. package/dist/_chunks/list-BdvDctBz.js.map +1 -0
  43. package/dist/_chunks/{message-tray-Fsend-du.js → message-tray-BNAS8al4.js} +111 -111
  44. package/dist/_chunks/message-tray-BNAS8al4.js.map +1 -0
  45. package/dist/_chunks/{multi-select-DooDzQIp.js → multi-select-CyspR5ZF.js} +157 -154
  46. package/dist/_chunks/multi-select-CyspR5ZF.js.map +1 -0
  47. package/dist/_chunks/{navigation-menu-DdufF-_4.js → navigation-menu-CyS1fBJ7.js} +85 -87
  48. package/dist/_chunks/navigation-menu-CyS1fBJ7.js.map +1 -0
  49. package/dist/_chunks/{notification-tray-C3dYdLAF.js → notification-tray-D_69dXFY.js} +114 -114
  50. package/dist/_chunks/notification-tray-D_69dXFY.js.map +1 -0
  51. package/dist/_chunks/{number-input-DH00o0DN.js → number-input-BZXu6bPY.js} +92 -89
  52. package/dist/_chunks/number-input-BZXu6bPY.js.map +1 -0
  53. package/dist/_chunks/{otp-input-BBXYvLx5.js → otp-input-BDF_iNpa.js} +92 -93
  54. package/dist/_chunks/otp-input-BDF_iNpa.js.map +1 -0
  55. package/dist/_chunks/{pagination-F1ei4khE.js → pagination-BWaXF7W0.js} +194 -211
  56. package/dist/_chunks/pagination-BWaXF7W0.js.map +1 -0
  57. package/dist/_chunks/{patient-shell-BE0CdPOJ.js → patient-shell-BOOaWZA9.js} +3 -3
  58. package/dist/_chunks/{patient-shell-BE0CdPOJ.js.map → patient-shell-BOOaWZA9.js.map} +1 -1
  59. package/dist/_chunks/{payment-form-CI77oIx1.js → payment-form-BjkuQeqR.js} +2 -2
  60. package/dist/_chunks/{payment-form-CI77oIx1.js.map → payment-form-BjkuQeqR.js.map} +1 -1
  61. package/dist/_chunks/{pdf-viewer-CnEJvmXC.js → pdf-viewer-BG_nsFT5.js} +2 -2
  62. package/dist/_chunks/{pdf-viewer-CnEJvmXC.js.map → pdf-viewer-BG_nsFT5.js.map} +1 -1
  63. package/dist/_chunks/{radio-group-Cz1a4QCA.js → radio-group-BHZOxrIK.js} +4 -4
  64. package/dist/_chunks/{radio-group-Cz1a4QCA.js.map → radio-group-BHZOxrIK.js.map} +1 -1
  65. package/dist/_chunks/{select-Ca6ibiDL.js → select-C92AT_OZ.js} +7 -7
  66. package/dist/_chunks/{select-Ca6ibiDL.js.map → select-C92AT_OZ.js.map} +1 -1
  67. package/dist/_chunks/{sidebar-D8Lq065m.js → sidebar-BqzlRBvC.js} +271 -291
  68. package/dist/_chunks/sidebar-BqzlRBvC.js.map +1 -0
  69. package/dist/_chunks/{slider-CkR6CLun.js → slider-CfEzeseL.js} +4 -4
  70. package/dist/_chunks/{slider-CkR6CLun.js.map → slider-CfEzeseL.js.map} +1 -1
  71. package/dist/_chunks/{tabs-CRCyPpJo.js → tabs-aEQfQV3x.js} +8 -8
  72. package/dist/_chunks/{tabs-CRCyPpJo.js.map → tabs-aEQfQV3x.js.map} +1 -1
  73. package/dist/_chunks/{theme-toggle-B3meAb3y.js → theme-toggle-BswYl0Yp.js} +2 -2
  74. package/dist/_chunks/{theme-toggle-B3meAb3y.js.map → theme-toggle-BswYl0Yp.js.map} +1 -1
  75. package/dist/_chunks/use-controllable-state-BiY4xTzM.js +23 -0
  76. package/dist/_chunks/use-controllable-state-BiY4xTzM.js.map +1 -0
  77. package/dist/_chunks/use-copy-to-clipboard-Cyfc_dlv.js +43 -0
  78. package/dist/_chunks/use-copy-to-clipboard-Cyfc_dlv.js.map +1 -0
  79. package/dist/_chunks/use-debounced-callback-BisrB-Fq.js.map +1 -1
  80. package/dist/_chunks/use-direction-D6rvvG9G.js.map +1 -1
  81. package/dist/_chunks/use-persistent-state-i23OWy6G.js +24 -0
  82. package/dist/_chunks/use-persistent-state-i23OWy6G.js.map +1 -0
  83. package/dist/_chunks/{warning-stack-CeRihME9.js → warning-stack-CDH9TudY.js} +2 -2
  84. package/dist/_chunks/{warning-stack-CeRihME9.js.map → warning-stack-CDH9TudY.js.map} +1 -1
  85. package/dist/_chunks/{workflow-map-D3MvrsZV.js → workflow-map-BeKe23uw.js} +3 -3
  86. package/dist/_chunks/{workflow-map-D3MvrsZV.js.map → workflow-map-BeKe23uw.js.map} +1 -1
  87. package/dist/agent-catalog.json +1 -1
  88. package/dist/components/_shared/use-debounced-callback.d.ts +1 -5
  89. package/dist/components/_shared/use-debounced-callback.d.ts.map +1 -1
  90. package/dist/components/_shared/use-direction.d.ts +1 -18
  91. package/dist/components/_shared/use-direction.d.ts.map +1 -1
  92. package/dist/components/_shared/use-focus-trap.d.ts +1 -31
  93. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -1
  94. package/dist/components/accordion/index.js +1 -1
  95. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  96. package/dist/components/ai-prompt-input/index.js +1 -1
  97. package/dist/components/alert/alert.d.ts.map +1 -1
  98. package/dist/components/alert/index.js +1 -1
  99. package/dist/components/audio-recorder/index.js +1 -1
  100. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  101. package/dist/components/autocomplete/index.js +1 -1
  102. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  103. package/dist/components/chat-input/index.js +1 -1
  104. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  105. package/dist/components/checkbox/index.js +1 -1
  106. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  107. package/dist/components/checkbox-group/index.js +1 -1
  108. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  109. package/dist/components/collapsible/index.js +1 -1
  110. package/dist/components/color-picker/index.js +1 -1
  111. package/dist/components/combobox/combobox.d.ts.map +1 -1
  112. package/dist/components/combobox/index.js +1 -1
  113. package/dist/components/command-palette/command-palette.d.ts +1 -1
  114. package/dist/components/copy-field/index.js +1 -1
  115. package/dist/components/data-table/index.js +1 -1
  116. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  117. package/dist/components/date-picker/index.js +1 -1
  118. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  119. package/dist/components/date-range-picker/index.js +1 -1
  120. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  121. package/dist/components/date-time-picker/index.js +1 -1
  122. package/dist/components/dialog/dialog.d.ts.map +1 -1
  123. package/dist/components/dialog/index.js +1 -1
  124. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  125. package/dist/components/dropdown-menu/index.js +1 -1
  126. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  127. package/dist/components/freemium-paywall/index.js +1 -1
  128. package/dist/components/icon-button-group/icon-button-group.d.ts +14 -14
  129. package/dist/components/list/index.js +1 -1
  130. package/dist/components/list/list.d.ts.map +1 -1
  131. package/dist/components/message-tray/index.js +1 -1
  132. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  133. package/dist/components/multi-select/index.js +1 -1
  134. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  135. package/dist/components/navigation-menu/index.js +1 -1
  136. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  137. package/dist/components/notification-tray/index.js +1 -1
  138. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  139. package/dist/components/number-input/index.js +1 -1
  140. package/dist/components/number-input/number-input.d.ts.map +1 -1
  141. package/dist/components/otp-input/index.js +1 -1
  142. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  143. package/dist/components/pagination/index.js +1 -1
  144. package/dist/components/payment-form/index.js +1 -1
  145. package/dist/components/pdf-viewer/index.js +1 -1
  146. package/dist/components/radio-group/index.js +1 -1
  147. package/dist/components/select/index.js +1 -1
  148. package/dist/components/sidebar/index.js +8 -7
  149. package/dist/components/sidebar/index.js.map +1 -1
  150. package/dist/components/sidebar/sidebar.d.ts +1 -1
  151. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  152. package/dist/components/slider/index.js +1 -1
  153. package/dist/components/tabs/index.js +1 -1
  154. package/dist/components/theme-toggle/index.js +1 -1
  155. package/dist/components/warning-stack/index.js +1 -1
  156. package/dist/components/workflow/index.js +1 -1
  157. package/dist/hooks/index.d.ts +8 -0
  158. package/dist/hooks/index.d.ts.map +1 -1
  159. package/dist/hooks/index.js +98 -15
  160. package/dist/hooks/index.js.map +1 -1
  161. package/dist/hooks/use-debounced-callback.d.ts +19 -0
  162. package/dist/hooks/use-debounced-callback.d.ts.map +1 -0
  163. package/dist/hooks/use-debounced-value.d.ts +16 -0
  164. package/dist/hooks/use-debounced-value.d.ts.map +1 -0
  165. package/dist/hooks/use-direction.d.ts +19 -0
  166. package/dist/hooks/use-direction.d.ts.map +1 -0
  167. package/dist/hooks/use-focus-trap.d.ts +32 -0
  168. package/dist/hooks/use-focus-trap.d.ts.map +1 -0
  169. package/dist/hooks/use-isomorphic-layout-effect.d.ts +13 -0
  170. package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  171. package/dist/hooks/use-persistent-state.d.ts +16 -0
  172. package/dist/hooks/use-persistent-state.d.ts.map +1 -0
  173. package/dist/index.js +493 -492
  174. package/dist/index.js.map +1 -1
  175. package/dist/patterns/leo-assistant/index.js +1 -1
  176. package/dist/patterns/patient-shell/index.js +1 -1
  177. package/dist/tokens.css +1 -1
  178. package/package.json +4 -2
  179. package/dist/_chunks/ai-prompt-input-DEiQwIMn.js.map +0 -1
  180. package/dist/_chunks/alert-pgdXrEO5.js.map +0 -1
  181. package/dist/_chunks/autocomplete-mOg7WLOh.js.map +0 -1
  182. package/dist/_chunks/chat-input-UK-bXU7u.js.map +0 -1
  183. package/dist/_chunks/checkbox-D5EHnB14.js.map +0 -1
  184. package/dist/_chunks/checkbox-group-Qkm3Rg1S.js +0 -208
  185. package/dist/_chunks/checkbox-group-Qkm3Rg1S.js.map +0 -1
  186. package/dist/_chunks/collapsible-CuxUBoHJ.js.map +0 -1
  187. package/dist/_chunks/combobox-D5tWe0t_.js.map +0 -1
  188. package/dist/_chunks/copy-field-BCHAZ8QV.js.map +0 -1
  189. package/dist/_chunks/date-range-picker-C2hRu_Ke.js.map +0 -1
  190. package/dist/_chunks/date-time-picker-B67mPZmP.js.map +0 -1
  191. package/dist/_chunks/dialog-DRp6Dejy.js.map +0 -1
  192. package/dist/_chunks/dropdown-menu-dyV7gHh_.js.map +0 -1
  193. package/dist/_chunks/freemium-paywall-BTEiVkes.js.map +0 -1
  194. package/dist/_chunks/list-DcjV0m5B.js.map +0 -1
  195. package/dist/_chunks/message-tray-Fsend-du.js.map +0 -1
  196. package/dist/_chunks/multi-select-DooDzQIp.js.map +0 -1
  197. package/dist/_chunks/navigation-menu-DdufF-_4.js.map +0 -1
  198. package/dist/_chunks/notification-tray-C3dYdLAF.js.map +0 -1
  199. package/dist/_chunks/number-input-DH00o0DN.js.map +0 -1
  200. package/dist/_chunks/otp-input-BBXYvLx5.js.map +0 -1
  201. package/dist/_chunks/pagination-F1ei4khE.js.map +0 -1
  202. package/dist/_chunks/sidebar-D8Lq065m.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group-Bwmt1ovQ.js","sources":["../../src/components/checkbox-group/checkbox-group.agent.ts","../../src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — CheckboxGroup. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CheckboxGroupHandle } from './checkbox-group';\n\nexport const checkboxGroupAgent: AgentAdapter<CheckboxGroupHandle> = {\n id: 'checkbox-group',\n capabilities: ['select_multiple'],\n state: {\n selection: {\n type: 'string[]',\n descriptionKey: 'ui.agent.checkboxGroup.state.selection',\n description: 'Values of currently-checked options.',\n read: (handle) => handle.getSelection(),\n },\n },\n actions: {\n set_selection: {\n safety: 'write',\n argsType: '{ ids: string[] }',\n descriptionKey: 'ui.agent.checkboxGroup.actions.setSelection',\n description:\n 'Replace the current selection with the given option values.',\n invoke: (handle, args: { ids: string[] }) => {\n handle.setSelection(args.ids);\n },\n },\n clear_selection: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.checkboxGroup.actions.clearSelection',\n description: 'Uncheck every option in the group.',\n invoke: (handle) => {\n handle.clearSelection();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'checkbox-group',\n description: 'Marks the CheckboxGroup fieldset.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-option-id',\n description:\n 'Stable opaque value emitted on each rendered Checkbox child within the group.',\n },\n },\n};\n","import {\n Children,\n forwardRef,\n isValidElement,\n useId,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { AlertCircle } from 'lucide-react';\nimport { Checkbox } from '../checkbox/checkbox';\nimport {\n CheckboxGroupContext,\n type CheckboxGroupContextShape,\n} from '../checkbox/checkbox-group-context';\nimport { useAgentRegistration } from '../../agent';\nimport { checkboxGroupAgent } from './checkbox-group.agent';\n\n/** Agent-readiness curated handle for CheckboxGroup. */\nexport interface CheckboxGroupHandle {\n getSelection: () => string[];\n setSelection: (ids: string[]) => void;\n clearSelection: () => void;\n}\n\nconst checkboxGroupVariants = cva('', {\n variants: {\n orientation: {\n vertical: 'ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]',\n horizontal:\n 'ds:flex ds:flex-wrap ds:gap-x-[var(--spacing-lg)] ds:gap-y-[var(--spacing-sm)]',\n },\n },\n defaultVariants: { orientation: 'vertical' },\n});\n\nexport interface CheckboxGroupOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps extends VariantProps<\n typeof checkboxGroupVariants\n> {\n label: string;\n value?: string[];\n onChange?: (value: string[]) => void;\n name?: string;\n /** Stable id, used to address this instance from the agent runtime. */\n id?: string;\n orientation?: 'vertical' | 'horizontal';\n disabled?: boolean;\n min?: number;\n max?: number;\n onConstraintViolation?: (type: 'min' | 'max') => void;\n withSelectAll?: boolean;\n options?: CheckboxGroupOption[];\n error?: string;\n helperText?: string;\n className?: string;\n children?: ReactNode;\n}\n\nfunction collectChildValues(children: ReactNode): string[] {\n const values: string[] = [];\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n const props = child.props as { value?: unknown };\n if (typeof props.value === 'string') values.push(props.value);\n });\n return values;\n}\n\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>(\n (\n {\n label,\n value: controlledValue,\n onChange,\n name,\n id,\n orientation = 'vertical',\n disabled = false,\n min,\n max,\n onConstraintViolation,\n withSelectAll = false,\n options,\n error,\n helperText,\n className,\n children,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const baseId = useId();\n const helperId = `${baseId}-helper`;\n const errorId = `${baseId}-error`;\n const counterId = `${baseId}-counter`;\n\n const [currentValueRaw, setCurrentValue] = useControllableState<string[]>({\n value: controlledValue,\n defaultValue: [] as string[],\n onChange,\n });\n const currentValue = currentValueRaw ?? [];\n\n const valueSet = useMemo(() => new Set(currentValue), [currentValue]);\n\n const [violationMsg, setViolationMsg] = useState<string>('');\n\n const allValues = useMemo<string[]>(\n () =>\n options ? options.map((o) => o.value) : collectChildValues(children),\n [options, children],\n );\n\n const commit = (next: string[]): void => {\n setCurrentValue(next);\n };\n\n const currentValueRef = useRef<string[]>(currentValue);\n currentValueRef.current = currentValue;\n\n const agentHandle = useMemo<CheckboxGroupHandle>(\n () => ({\n getSelection: () => currentValueRef.current.slice(),\n setSelection: (ids) => commit(ids),\n clearSelection: () => commit([]),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [setCurrentValue],\n );\n useAgentRegistration(checkboxGroupAgent, agentHandle, id);\n\n const toggle = (itemValue: string): void => {\n if (valueSet.has(itemValue)) {\n if (typeof min === 'number' && currentValue.length <= min) {\n setViolationMsg(t('inputs.checkboxGroup.minReached', { min }));\n onConstraintViolation?.('min');\n return;\n }\n setViolationMsg('');\n commit(currentValue.filter((v) => v !== itemValue));\n return;\n }\n if (typeof max === 'number' && currentValue.length >= max) {\n setViolationMsg(t('inputs.checkboxGroup.maxReached', { max }));\n onConstraintViolation?.('max');\n return;\n }\n setViolationMsg('');\n commit([...currentValue, itemValue]);\n };\n\n const ctxValue: CheckboxGroupContextShape = {\n name,\n value: valueSet,\n toggle,\n disabled,\n };\n\n const total = allValues.length;\n const count = currentValue.length;\n\n const parentChecked: boolean | 'indeterminate' =\n total === 0 || count === 0\n ? false\n : count >= total\n ? true\n : 'indeterminate';\n\n const handleSelectAll = (): void => {\n if (parentChecked === true) {\n if (typeof min === 'number' && min > 0) {\n setViolationMsg(t('inputs.checkboxGroup.minReached', { min }));\n onConstraintViolation?.('min');\n return;\n }\n commit([]);\n setViolationMsg('');\n return;\n }\n const toCheck =\n typeof max === 'number' ? allValues.slice(0, max) : allValues;\n commit(toCheck);\n setViolationMsg('');\n };\n\n const describedBy =\n [\n helperText ? helperId : null,\n error ? errorId : null,\n total > 0 ? counterId : null,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const resolvedChildren =\n children ??\n (options\n ? options.map((opt) => (\n <Checkbox\n key={opt.value}\n value={opt.value}\n label={opt.label}\n disabled={opt.disabled}\n />\n ))\n : null);\n\n const fieldsetClasses = [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0 ds:border-0 ds:p-0 ds:m-0',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <fieldset\n ref={ref}\n id={id}\n className={fieldsetClasses}\n aria-describedby={describedBy}\n aria-invalid={Boolean(error) || undefined}\n data-component=\"checkbox-group\"\n data-component-id={id}\n >\n <legend className=\"type-label ds:text-foreground ds:p-0 ds:mb-[var(--spacing-sm)]\">\n {label}\n </legend>\n {withSelectAll ? (\n <Checkbox\n label={t('inputs.checkboxGroup.selectAll')}\n checked={parentChecked}\n onCheckedChange={handleSelectAll}\n disabled={disabled}\n />\n ) : null}\n <CheckboxGroupContext.Provider value={ctxValue}>\n <div className={checkboxGroupVariants({ orientation })}>\n {resolvedChildren}\n </div>\n </CheckboxGroupContext.Provider>\n {helperText ? (\n <p id={helperId} className=\"type-body-sm ds:text-muted-foreground\">\n {helperText}\n </p>\n ) : null}\n {error ? (\n <p\n id={errorId}\n role=\"alert\"\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-destructive\"\n >\n <AlertCircle aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <span>{error}</span>\n </p>\n ) : null}\n <span\n id={counterId}\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:sr-only\"\n >\n {total > 0 ? t('inputs.checkboxGroup.counter', { count, total }) : ''}\n </span>\n <span role=\"status\" aria-live=\"polite\" className=\"ds:sr-only\">\n {violationMsg}\n </span>\n </fieldset>\n );\n },\n);\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n"],"names":["checkboxGroupAgent","handle","args","checkboxGroupVariants","cva","collectChildValues","children","values","Children","child","isValidElement","props","CheckboxGroup","forwardRef","label","controlledValue","onChange","name","id","orientation","disabled","min","max","onConstraintViolation","withSelectAll","options","error","helperText","className","ref","t","useTranslation","baseId","useId","helperId","errorId","counterId","currentValueRaw","setCurrentValue","useControllableState","currentValue","valueSet","useMemo","violationMsg","setViolationMsg","useState","allValues","o","commit","next","currentValueRef","useRef","agentHandle","ids","useAgentRegistration","ctxValue","itemValue","v","total","count","parentChecked","handleSelectAll","toCheck","describedBy","resolvedChildren","opt","jsx","Checkbox","fieldsetClasses","jsxs","CheckboxGroupContext","AlertCircle"],"mappings":"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"}
@@ -1,14 +1,15 @@
1
- import { jsxs as G, jsx as r } from "react/jsx-runtime";
2
- import { createContext as K, useContext as O, forwardRef as T, useId as A, useState as B, useRef as F, useMemo as H } from "react";
3
- import * as v from "@radix-ui/react-checkbox";
4
- import { c as V } from "./index-D2ZczOXr.js";
5
- import { T as W } from "./tooltip-DHik5yRI.js";
6
- import { u as C } from "./registry-C9nwlNyL.js";
7
- const D = K(null);
8
- function P() {
9
- return O(D);
1
+ import { jsxs as M, jsx as s } from "react/jsx-runtime";
2
+ import { createContext as O, useContext as S, forwardRef as G, useId as K, useRef as T, useMemo as V } from "react";
3
+ import * as b from "@radix-ui/react-checkbox";
4
+ import { c as A } from "./index-D2ZczOXr.js";
5
+ import { u as B } from "./use-controllable-state-BiY4xTzM.js";
6
+ import { T as F } from "./tooltip-DHik5yRI.js";
7
+ import { u as H } from "./registry-C9nwlNyL.js";
8
+ const W = O(null);
9
+ function D() {
10
+ return S(W);
10
11
  }
11
- const q = {
12
+ const P = {
12
13
  id: "checkbox",
13
14
  capabilities: ["select_single"],
14
15
  state: {
@@ -25,8 +26,8 @@ const q = {
25
26
  argsType: '{ checked: boolean | "indeterminate" }',
26
27
  descriptionKey: "ui.agent.checkbox.actions.setChecked",
27
28
  description: "Set the checked state to a specific value.",
28
- invoke: (t, n) => {
29
- t.setChecked(n.checked);
29
+ invoke: (t, l) => {
30
+ t.setChecked(l.checked);
30
31
  }
31
32
  },
32
33
  toggle: {
@@ -50,12 +51,12 @@ const q = {
50
51
  description: "Sourced from the id prop."
51
52
  }
52
53
  }
53
- }, x = [
54
+ }, g = [
54
55
  "ds:[stroke-dasharray:1] ds:[stroke-dashoffset:1]",
55
56
  "ds:animate-[checkbox-indicator-draw_var(--animation-duration)_ease-out_forwards]"
56
57
  ].join(" ");
57
- function E({ className: t }) {
58
- return /* @__PURE__ */ r(
58
+ function q({ className: t }) {
59
+ return /* @__PURE__ */ s(
59
60
  "svg",
60
61
  {
61
62
  viewBox: "0 0 24 24",
@@ -67,12 +68,12 @@ function E({ className: t }) {
67
68
  "aria-hidden": "true",
68
69
  "data-slot": "checkbox-check-icon",
69
70
  className: t,
70
- children: /* @__PURE__ */ r("path", { pathLength: "1", d: "M5 12l5 5L20 7", className: x })
71
+ children: /* @__PURE__ */ s("path", { pathLength: "1", d: "M5 12l5 5L20 7", className: g })
71
72
  }
72
73
  );
73
74
  }
74
- function J({ className: t }) {
75
- return /* @__PURE__ */ r(
75
+ function E({ className: t }) {
76
+ return /* @__PURE__ */ s(
76
77
  "svg",
77
78
  {
78
79
  viewBox: "0 0 24 24",
@@ -83,11 +84,11 @@ function J({ className: t }) {
83
84
  "aria-hidden": "true",
84
85
  "data-slot": "checkbox-indeterminate-icon",
85
86
  className: t,
86
- children: /* @__PURE__ */ r("path", { pathLength: "1", d: "M5 12h14", className: x })
87
+ children: /* @__PURE__ */ s("path", { pathLength: "1", d: "M5 12h14", className: g })
87
88
  }
88
89
  );
89
90
  }
90
- const Q = V(
91
+ const J = A(
91
92
  [
92
93
  "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
93
94
  "ds:border ds:border-border ds:rounded-[var(--radius-sm)] ds:bg-background",
@@ -115,89 +116,93 @@ const Q = V(
115
116
  size: "md"
116
117
  }
117
118
  }
118
- ), U = T(
119
+ ), Q = G(
119
120
  ({
120
121
  label: t,
121
- checked: n,
122
- onCheckedChange: s,
123
- size: m = "md",
124
- disabled: y,
125
- disabledReason: b,
126
- name: w,
122
+ checked: l,
123
+ onCheckedChange: C,
124
+ size: h = "md",
125
+ disabled: v,
126
+ disabledReason: m,
127
+ name: x,
127
128
  value: o,
128
- id: f,
129
- className: z,
130
- ...I
131
- }, N) => {
132
- const j = A(), h = f ?? j, e = P(), c = e !== null && o !== void 0, [L, p] = B(n ?? !1), d = n !== void 0, l = c ? e.value.has(o) : d ? n : L, R = c ? () => e.toggle(o) : (i) => {
133
- d || p(i), s == null || s(i);
134
- }, _ = (e == null ? void 0 : e.name) ?? w, u = (e == null ? void 0 : e.disabled) || y, a = F(
135
- l ?? !1
129
+ id: u,
130
+ className: y,
131
+ ...w
132
+ }, z) => {
133
+ const N = K(), f = u ?? N, e = D(), r = e !== null && o !== void 0, [j, i] = B({
134
+ value: l,
135
+ defaultValue: !1,
136
+ onChange: C
137
+ }), c = r ? e.value.has(o) : j ?? !1, I = r ? () => e.toggle(o) : (n) => {
138
+ i(n);
139
+ }, L = (e == null ? void 0 : e.name) ?? x, d = (e == null ? void 0 : e.disabled) || v, a = T(
140
+ c ?? !1
136
141
  );
137
- a.current = l ?? !1;
138
- const M = H(
142
+ a.current = c ?? !1;
143
+ const R = V(
139
144
  () => ({
140
145
  getChecked: () => a.current,
141
- setChecked: (i) => {
142
- if (c) {
143
- (a.current === !0 || a.current === "indeterminate") !== (i === !0 || i === "indeterminate") && e.toggle(o);
146
+ setChecked: (n) => {
147
+ if (r) {
148
+ (a.current === !0 || a.current === "indeterminate") !== (n === !0 || n === "indeterminate") && e.toggle(o);
144
149
  return;
145
150
  }
146
- d || p(i), s == null || s(i);
151
+ i(n);
147
152
  },
148
153
  toggle: () => {
149
- if (c) {
154
+ if (r) {
150
155
  e.toggle(o);
151
156
  return;
152
157
  }
153
- const i = !(a.current === !0 || a.current === "indeterminate");
154
- d || p(i), s == null || s(i);
158
+ const n = !(a.current === !0 || a.current === "indeterminate");
159
+ i(n);
155
160
  }
156
161
  }),
157
- [c, e, o, d, s]
162
+ [r, e, o, i]
158
163
  );
159
- C(q, M, f);
164
+ H(P, R, u);
160
165
  const k = [
161
166
  "ds:text-primary-foreground",
162
- m === "sm" ? "ds:size-3" : m === "lg" ? "ds:size-4" : "ds:size-3.5"
163
- ].join(" "), S = [
167
+ h === "sm" ? "ds:size-3" : h === "lg" ? "ds:size-4" : "ds:size-3.5"
168
+ ].join(" "), _ = [
164
169
  "type-label ds:text-foreground ds:select-none",
165
- u ? "ds:cursor-not-allowed ds:opacity-50" : "ds:cursor-pointer"
166
- ].join(" "), g = /* @__PURE__ */ G(
170
+ d ? "ds:cursor-not-allowed ds:opacity-50" : "ds:cursor-pointer"
171
+ ].join(" "), p = /* @__PURE__ */ M(
167
172
  "div",
168
173
  {
169
174
  "data-component": "checkbox",
170
- "data-component-id": f,
175
+ "data-component-id": u,
171
176
  "data-option-id": o,
172
177
  className: "ds:inline-flex ds:items-start ds:gap-[var(--spacing-sm)]",
173
178
  children: [
174
- /* @__PURE__ */ r(
175
- v.Root,
179
+ /* @__PURE__ */ s(
180
+ b.Root,
176
181
  {
177
- ref: N,
178
- id: h,
179
- checked: l,
180
- onCheckedChange: R,
181
- disabled: u,
182
- "aria-disabled": u || void 0,
183
- name: _,
182
+ ref: z,
183
+ id: f,
184
+ checked: c,
185
+ onCheckedChange: I,
186
+ disabled: d,
187
+ "aria-disabled": d || void 0,
188
+ name: L,
184
189
  value: o,
185
- className: Q({ size: m, className: z }),
186
- ...I,
187
- children: /* @__PURE__ */ r(v.Indicator, { children: l === "indeterminate" ? /* @__PURE__ */ r(J, { className: k }) : /* @__PURE__ */ r(E, { className: k }) })
190
+ className: J({ size: h, className: y }),
191
+ ...w,
192
+ children: /* @__PURE__ */ s(b.Indicator, { children: c === "indeterminate" ? /* @__PURE__ */ s(E, { className: k }) : /* @__PURE__ */ s(q, { className: k }) })
188
193
  }
189
194
  ),
190
- /* @__PURE__ */ r("label", { htmlFor: h, className: S, children: t })
195
+ /* @__PURE__ */ s("label", { htmlFor: f, className: _, children: t })
191
196
  ]
192
197
  }
193
198
  );
194
- return u && b ? /* @__PURE__ */ r(W, { label: b, children: g }) : g;
199
+ return d && m ? /* @__PURE__ */ s(F, { label: m, children: p }) : p;
195
200
  }
196
201
  );
197
- U.displayName = "Checkbox";
202
+ Q.displayName = "Checkbox";
198
203
  export {
199
- U as C,
200
- D as a,
201
- P as u
204
+ Q as C,
205
+ W as a,
206
+ D as u
202
207
  };
203
- //# sourceMappingURL=checkbox-D5EHnB14.js.map
208
+ //# sourceMappingURL=checkbox-mwbrPZDY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-mwbrPZDY.js","sources":["../../src/components/checkbox/checkbox-group-context.ts","../../src/components/checkbox/checkbox.agent.ts","../../src/components/checkbox/checkbox.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport interface CheckboxGroupContextShape {\n name?: string;\n value: Set<string>;\n toggle: (itemValue: string) => void;\n disabled: boolean;\n}\n\nexport const CheckboxGroupContext =\n createContext<CheckboxGroupContextShape | null>(null);\n\nexport function useCheckboxGroup(): CheckboxGroupContextShape | null {\n return useContext(CheckboxGroupContext);\n}\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — Checkbox. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CheckboxHandle } from './checkbox';\n\nexport const checkboxAgent: AgentAdapter<CheckboxHandle> = {\n id: 'checkbox',\n capabilities: ['select_single'],\n state: {\n checked: {\n type: 'boolean | \"indeterminate\"',\n descriptionKey: 'ui.agent.checkbox.state.checked',\n description: 'Current checked state.',\n read: (handle) => handle.getChecked(),\n },\n },\n actions: {\n set_checked: {\n safety: 'write',\n argsType: '{ checked: boolean | \"indeterminate\" }',\n descriptionKey: 'ui.agent.checkbox.actions.setChecked',\n description: 'Set the checked state to a specific value.',\n invoke: (handle, args: { checked: boolean | 'indeterminate' }) => {\n handle.setChecked(args.checked);\n },\n },\n toggle: {\n safety: 'write',\n descriptionKey: 'ui.agent.checkbox.actions.toggle',\n description: 'Flip the checked state between checked and unchecked.',\n invoke: (handle) => {\n handle.toggle();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'checkbox',\n description: 'Marks the Checkbox wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport * as RadixCheckbox from '@radix-ui/react-checkbox';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useCheckboxGroup } from './checkbox-group-context';\nimport { Tooltip } from '../tooltip';\nimport { useAgentRegistration } from '../../agent';\nimport { checkboxAgent } from './checkbox.agent';\n\n/** Agent-readiness curated handle for Checkbox. */\nexport interface CheckboxHandle {\n getChecked: () => boolean | 'indeterminate';\n setChecked: (checked: boolean | 'indeterminate') => void;\n toggle: () => void;\n}\n\nconst drawClasses = [\n 'ds:[stroke-dasharray:1] ds:[stroke-dashoffset:1]',\n 'ds:animate-[checkbox-indicator-draw_var(--animation-duration)_ease-out_forwards]',\n].join(' ');\n\nfunction CheckIcon({ className }: { className?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n data-slot=\"checkbox-check-icon\"\n className={className}\n >\n <path pathLength=\"1\" d=\"M5 12l5 5L20 7\" className={drawClasses} />\n </svg>\n );\n}\n\nfunction IndeterminateIcon({ className }: { className?: string }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n aria-hidden=\"true\"\n data-slot=\"checkbox-indeterminate-icon\"\n className={className}\n >\n <path pathLength=\"1\" d=\"M5 12h14\" className={drawClasses} />\n </svg>\n );\n}\n\nconst checkboxVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center ds:shrink-0',\n 'ds:border ds:border-border ds:rounded-[var(--radius-sm)] ds:bg-background',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:data-[state=checked]:bg-primary ds:data-[state=checked]:border-primary',\n 'ds:data-[state=indeterminate]:bg-primary ds:data-[state=indeterminate]:border-primary',\n 'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"]',\n ].join(' '),\n {\n variants: {\n // Per-size `mt` centers the box optically on the first line of the\n // label using the type-label line-box height — important when the\n // label wraps, because the wrapper uses `items-start` so children\n // align to the top edge rather than the multi-line block's centre.\n size: {\n sm: 'ds:size-3.5 ds:mt-[calc((var(--type-label-size)*var(--type-label-line-height)-0.875rem)/2)]',\n md: 'ds:size-4 ds:mt-[calc((var(--type-label-size)*var(--type-label-line-height)-1rem)/2)]',\n lg: 'ds:size-5 ds:mt-[calc((var(--type-label-size)*var(--type-label-line-height)-1.25rem)/2)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\ntype RadixRootProps = ComponentPropsWithoutRef<typeof RadixCheckbox.Root>;\n\nexport interface CheckboxProps\n extends\n Omit<RadixRootProps, 'checked' | 'onCheckedChange' | 'children'>,\n VariantProps<typeof checkboxVariants> {\n label: string;\n checked?: boolean | 'indeterminate';\n onCheckedChange?: (checked: boolean | 'indeterminate') => void;\n size?: 'sm' | 'md' | 'lg';\n disabledReason?: string;\n value?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n label,\n checked,\n onCheckedChange,\n size = 'md',\n disabled,\n disabledReason,\n name,\n value,\n id,\n className,\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const checkboxId = id ?? generatedId;\n const group = useCheckboxGroup();\n\n const inGroup = group !== null && value !== undefined;\n const [ownCheckedRaw, setOwnChecked] = useControllableState<\n boolean | 'indeterminate'\n >({\n value: checked,\n defaultValue: false,\n onChange: onCheckedChange,\n });\n const ownChecked = ownCheckedRaw ?? false;\n const effectiveChecked = inGroup ? group.value.has(value) : ownChecked;\n const effectiveOnChange = inGroup\n ? () => group.toggle(value)\n : (next: boolean | 'indeterminate') => {\n setOwnChecked(next);\n };\n const effectiveName = group?.name ?? name;\n const effectiveDisabled = group?.disabled || disabled;\n\n const checkedRef = useRef<boolean | 'indeterminate'>(\n effectiveChecked ?? false,\n );\n checkedRef.current = effectiveChecked ?? false;\n\n const agentHandle = useMemo<CheckboxHandle>(\n () => ({\n getChecked: () => checkedRef.current,\n setChecked: (next) => {\n if (inGroup) {\n // Inside a group: toggle implements set via the group context.\n const isOn =\n checkedRef.current === true ||\n checkedRef.current === 'indeterminate';\n const want = next === true || next === 'indeterminate';\n if (isOn !== want) group.toggle(value);\n return;\n }\n setOwnChecked(next);\n },\n toggle: () => {\n if (inGroup) {\n group.toggle(value);\n return;\n }\n const next =\n checkedRef.current === true ||\n checkedRef.current === 'indeterminate'\n ? false\n : true;\n setOwnChecked(next);\n },\n }),\n [inGroup, group, value, setOwnChecked],\n );\n useAgentRegistration(checkboxAgent, agentHandle, id);\n\n // `text-primary-foreground` lives on the SVG (not the <button> Root) so\n // a legacy consumer rule like `button, input, … { color: inherit }`\n // can't intercept it — the unlayered consumer rule would beat any\n // @layer utilities rule on the button itself, leaving the tick paint\n // (currentColor) inheriting the consumer's body text colour. See\n // styles.css for the matching form-element revert inside [data-component].\n const iconSizeClass = [\n 'ds:text-primary-foreground',\n size === 'sm' ? 'ds:size-3' : size === 'lg' ? 'ds:size-4' : 'ds:size-3.5',\n ].join(' ');\n\n const labelClasses = [\n 'type-label ds:text-foreground ds:select-none',\n effectiveDisabled\n ? 'ds:cursor-not-allowed ds:opacity-50'\n : 'ds:cursor-pointer',\n ].join(' ');\n\n const content = (\n <div\n data-component=\"checkbox\"\n data-component-id={id}\n data-option-id={value}\n className=\"ds:inline-flex ds:items-start ds:gap-[var(--spacing-sm)]\"\n >\n <RadixCheckbox.Root\n ref={ref}\n id={checkboxId}\n checked={effectiveChecked}\n onCheckedChange={effectiveOnChange}\n disabled={effectiveDisabled}\n aria-disabled={effectiveDisabled || undefined}\n name={effectiveName}\n value={value}\n className={checkboxVariants({ size, className })}\n {...props}\n >\n <RadixCheckbox.Indicator>\n {effectiveChecked === 'indeterminate' ? (\n <IndeterminateIcon className={iconSizeClass} />\n ) : (\n <CheckIcon className={iconSizeClass} />\n )}\n </RadixCheckbox.Indicator>\n </RadixCheckbox.Root>\n <label htmlFor={checkboxId} className={labelClasses}>\n {label}\n </label>\n </div>\n );\n\n if (effectiveDisabled && disabledReason) {\n return <Tooltip label={disabledReason}>{content}</Tooltip>;\n }\n\n return content;\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n"],"names":["CheckboxGroupContext","createContext","useCheckboxGroup","useContext","checkboxAgent","handle","args","drawClasses","CheckIcon","className","jsx","IndeterminateIcon","checkboxVariants","cva","Checkbox","forwardRef","label","checked","onCheckedChange","size","disabled","disabledReason","name","value","id","props","ref","generatedId","useId","checkboxId","group","inGroup","ownCheckedRaw","setOwnChecked","useControllableState","effectiveChecked","effectiveOnChange","next","effectiveName","effectiveDisabled","checkedRef","useRef","agentHandle","useMemo","useAgentRegistration","iconSizeClass","labelClasses","content","jsxs","RadixCheckbox","Tooltip"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- import { forwardRef as b, useState as C, useRef as k, useCallback as w, useMemo as x, useEffect as h } from "react";
3
- import * as u from "@radix-ui/react-collapsible";
4
- import { a as R, c as N } from "./index-D2ZczOXr.js";
5
- import { u as T } from "./registry-C9nwlNyL.js";
6
- const K = {
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ import { forwardRef as p, useRef as f, useMemo as C, useEffect as v } from "react";
3
+ import * as b from "@radix-ui/react-collapsible";
4
+ import { a as y, c as h } from "./index-D2ZczOXr.js";
5
+ import { u as k } from "./use-controllable-state-BiY4xTzM.js";
6
+ import { u as w } from "./registry-C9nwlNyL.js";
7
+ const x = {
7
8
  id: "collapsible",
8
9
  capabilities: ["expand"],
9
10
  state: {
@@ -52,7 +53,7 @@ const K = {
52
53
  description: "Sourced from the id prop."
53
54
  }
54
55
  }
55
- }, O = N("", {
56
+ }, O = h("", {
56
57
  variants: {
57
58
  variant: {
58
59
  default: "",
@@ -63,7 +64,7 @@ const K = {
63
64
  defaultVariants: {
64
65
  variant: "default"
65
66
  }
66
- }), z = [
67
+ }), R = [
67
68
  "ds:overflow-hidden",
68
69
  "ds:transition-[block-size]",
69
70
  "ds:duration-[var(--animation-duration)]",
@@ -71,77 +72,74 @@ const K = {
71
72
  "ds:motion-reduce:transition-none",
72
73
  "ds:data-[state=open]:[block-size:var(--radix-collapsible-content-height)]",
73
74
  "ds:data-[state=closed]:[block-size:0]"
74
- ].join(" "), j = b(
75
+ ].join(" "), N = p(
75
76
  ({
76
77
  variant: e,
77
- className: t,
78
- children: s,
79
- open: o,
80
- defaultOpen: l,
81
- onOpenChange: a,
82
- ...n
83
- }, f) => {
84
- const r = o !== void 0, [g, v] = C(
85
- !!l
86
- ), d = r ? !!o : g, c = k(d);
87
- c.current = d;
88
- const i = w(
89
- (m) => {
90
- r || v(m), a == null || a(m);
91
- },
92
- [r, a]
93
- ), y = x(
78
+ className: o,
79
+ children: a,
80
+ open: t,
81
+ defaultOpen: s,
82
+ onOpenChange: l,
83
+ ...i
84
+ }, u) => {
85
+ const [g, n] = k({
86
+ value: t,
87
+ defaultValue: !!s,
88
+ onChange: l
89
+ }), r = g ?? !1, d = f(r);
90
+ d.current = r;
91
+ const m = C(
94
92
  () => ({
95
- isOpen: () => c.current,
96
- toggle: () => i(!c.current),
97
- open: () => i(!0),
98
- close: () => i(!1)
93
+ isOpen: () => d.current,
94
+ toggle: () => n(!d.current),
95
+ open: () => n(!0),
96
+ close: () => n(!1)
99
97
  }),
100
- [i]
98
+ [n]
101
99
  );
102
- return T(K, y, n.id), /* @__PURE__ */ p(
103
- u.Root,
100
+ return w(x, m, i.id), /* @__PURE__ */ c(
101
+ b.Root,
104
102
  {
105
- ref: f,
106
- open: d,
107
- onOpenChange: i,
108
- className: O({ variant: e, className: t }),
103
+ ref: u,
104
+ open: r,
105
+ onOpenChange: n,
106
+ className: O({ variant: e, className: o }),
109
107
  "data-component": "collapsible",
110
- "data-component-id": n.id,
111
- ...n,
112
- children: s
108
+ "data-component-id": i.id,
109
+ ...i,
110
+ children: a
113
111
  }
114
112
  );
115
113
  }
116
114
  );
117
- j.displayName = "Collapsible";
118
- const A = b(({ asChild: e = !1, children: t, ...s }, o) => /* @__PURE__ */ p(u.Trigger, { ref: o, asChild: e, ...s, children: t }));
119
- A.displayName = "CollapsibleTrigger";
120
- const B = b(
115
+ N.displayName = "Collapsible";
116
+ const T = p(({ asChild: e = !1, children: o, ...a }, t) => /* @__PURE__ */ c(b.Trigger, { ref: t, asChild: e, ...a, children: o }));
117
+ T.displayName = "CollapsibleTrigger";
118
+ const K = p(
121
119
  ({
122
120
  className: e,
123
- children: t,
124
- "aria-labelledby": s,
125
- "aria-label": o,
126
- ...l
127
- }, a) => (h(() => {
128
- }, []), /* @__PURE__ */ p(
129
- u.Content,
121
+ children: o,
122
+ "aria-labelledby": a,
123
+ "aria-label": t,
124
+ ...s
125
+ }, l) => (v(() => {
126
+ }, []), /* @__PURE__ */ c(
127
+ b.Content,
130
128
  {
131
- ref: a,
132
- "aria-labelledby": s,
133
- "aria-label": o,
134
- className: R(z, e),
135
- ...l,
136
- children: t
129
+ ref: l,
130
+ "aria-labelledby": a,
131
+ "aria-label": t,
132
+ className: y(R, e),
133
+ ...s,
134
+ children: o
137
135
  }
138
136
  ))
139
137
  );
140
- B.displayName = "CollapsibleContent";
138
+ K.displayName = "CollapsibleContent";
141
139
  export {
142
- j as C,
143
- B as a,
144
- A as b,
145
- K as c
140
+ N as C,
141
+ K as a,
142
+ T as b,
143
+ x as c
146
144
  };
147
- //# sourceMappingURL=collapsible-CuxUBoHJ.js.map
145
+ //# sourceMappingURL=collapsible-hHiyZp0b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible-hHiyZp0b.js","sources":["../../src/components/collapsible/collapsible.agent.ts","../../src/components/collapsible/collapsible.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Collapsible. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CollapsibleHandle } from './collapsible';\n\nexport const collapsibleAgent: AgentAdapter<CollapsibleHandle> = {\n id: 'collapsible',\n capabilities: ['expand'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.collapsible.state.isOpen',\n description: 'True when the content panel is expanded.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n toggle: {\n safety: 'write',\n descriptionKey: 'ui.agent.collapsible.actions.toggle',\n description: 'Toggle between open and closed.',\n invoke: (handle) => {\n handle.toggle();\n },\n },\n open: {\n safety: 'write',\n descriptionKey: 'ui.agent.collapsible.actions.open',\n description: 'Expand the content panel.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'write',\n descriptionKey: 'ui.agent.collapsible.actions.close',\n description: 'Collapse the content panel.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'collapsible',\n description: 'Marks the Collapsible root.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n} from 'react';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport { cva, cx, type VariantProps } from 'class-variance-authority';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { collapsibleAgent } from './collapsible.agent';\n\nconst collapsibleVariants = cva('', {\n variants: {\n variant: {\n default: '',\n card: 'ds:bg-[var(--card)] ds:border ds:border-border ds:rounded-[var(--radius-lg)] ds:overflow-hidden',\n minimal: 'ds:forced-colors:[border-block-end:1px_solid]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst contentCls = [\n 'ds:overflow-hidden',\n 'ds:transition-[block-size]',\n 'ds:duration-[var(--animation-duration)]',\n 'ds:ease-out',\n 'ds:motion-reduce:transition-none',\n 'ds:data-[state=open]:[block-size:var(--radix-collapsible-content-height)]',\n 'ds:data-[state=closed]:[block-size:0]',\n].join(' ');\n\ntype RootProps = ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Root>;\ntype TriggerProps = ComponentPropsWithoutRef<\n typeof CollapsiblePrimitive.Trigger\n>;\ntype PrimitiveContentProps = ComponentPropsWithoutRef<\n typeof CollapsiblePrimitive.Content\n>;\n\nexport interface CollapsibleProps\n extends\n Omit<RootProps, 'asChild'>,\n VariantProps<typeof collapsibleVariants> {}\n\n/** Curated imperative handle for agent / external automation. */\nexport interface CollapsibleHandle {\n isOpen: () => boolean;\n toggle: () => void;\n open: () => void;\n close: () => void;\n}\n\nexport type CollapsibleTriggerProps = TriggerProps;\n\nexport type CollapsibleContentProps = PrimitiveContentProps;\n\ntype CollapsibleRootElement = ElementRef<typeof CollapsiblePrimitive.Root>;\n\nexport const Collapsible = forwardRef<CollapsibleRootElement, CollapsibleProps>(\n (\n {\n variant,\n className,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n },\n ref,\n ) => {\n const [currentOpenRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: Boolean(defaultOpen),\n onChange: onOpenChange,\n });\n const currentOpen = currentOpenRaw ?? false;\n // Latest snapshot for the imperative handle — keeps invoke callers from\n // reading stale state when they fire `toggle()` then `isOpen()` in rapid\n // succession (the latest setState batch may not have flushed yet).\n const latestRef = useRef(currentOpen);\n latestRef.current = currentOpen;\n\n const agentHandle = useMemo<CollapsibleHandle>(\n () => ({\n isOpen: () => latestRef.current,\n toggle: () => setOpen(!latestRef.current),\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(collapsibleAgent, agentHandle, props.id);\n\n return (\n <CollapsiblePrimitive.Root\n ref={ref}\n open={currentOpen}\n onOpenChange={setOpen}\n className={collapsibleVariants({ variant, className })}\n data-component=\"collapsible\"\n data-component-id={props.id}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Root>\n );\n },\n);\nCollapsible.displayName = 'Collapsible';\n\nexport const CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(({ asChild = false, children, ...props }, ref) => (\n <CollapsiblePrimitive.Trigger ref={ref} asChild={asChild} {...props}>\n {children}\n </CollapsiblePrimitive.Trigger>\n));\nCollapsibleTrigger.displayName = 'CollapsibleTrigger';\n\nexport const CollapsibleContent = forwardRef<\n HTMLDivElement,\n CollapsibleContentProps\n>(\n (\n {\n className,\n children,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-label': ariaLabel,\n ...props\n },\n ref,\n ) => {\n useEffect(() => {\n if (import.meta.env.DEV && !ariaLabelledBy && !ariaLabel) {\n console.warn(\n 'CollapsibleContent: Provide `aria-labelledby` pointing at the trigger id, or `aria-label`, so screen readers can identify this region.',\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n aria-labelledby={ariaLabelledBy}\n aria-label={ariaLabel}\n className={cx(contentCls, className)}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Content>\n );\n },\n);\nCollapsibleContent.displayName = 'CollapsibleContent';\n"],"names":["collapsibleAgent","handle","collapsibleVariants","cva","contentCls","Collapsible","forwardRef","variant","className","children","openProp","defaultOpen","onOpenChange","props","ref","currentOpenRaw","setOpen","useControllableState","currentOpen","latestRef","useRef","agentHandle","useMemo","useAgentRegistration","jsx","CollapsiblePrimitive","CollapsibleTrigger","asChild","CollapsibleContent","ariaLabelledBy","ariaLabel","useEffect","cx"],"mappings":"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"}
@@ -4,7 +4,7 @@ import * as E from "@radix-ui/react-popover";
4
4
  import { c as ae } from "./index-D2ZczOXr.js";
5
5
  import { useTranslation as Pe } from "react-i18next";
6
6
  import { u as Ae } from "./form-field-context-B3APVHKx.js";
7
- import { S as re } from "./slider-CkR6CLun.js";
7
+ import { S as re } from "./slider-CfEzeseL.js";
8
8
  import { u as Me } from "./registry-C9nwlNyL.js";
9
9
  import { C as ne } from "./check-DPdL_Sm7.js";
10
10
  import { X as Se } from "./x-CCcI3eJp.js";
@@ -669,4 +669,4 @@ export {
669
669
  Ze as B,
670
670
  De as C
671
671
  };
672
- //# sourceMappingURL=color-picker-BPfcByHH.js.map
672
+ //# sourceMappingURL=color-picker-Bm-gzpsh.js.map