@webiny/admin-ui 6.4.0-beta.2 → 6.4.0-beta.4

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 (261) hide show
  1. package/Accordion/Accordion.stories.d.ts +1 -1
  2. package/Accordion/Accordion.stories.js.map +1 -1
  3. package/AdminUiProvider/AdminUiProvider.d.ts +3 -0
  4. package/AdminUiProvider/AdminUiProvider.js +15 -5
  5. package/AdminUiProvider/AdminUiProvider.js.map +1 -1
  6. package/AdminUiProvider/FileUrlFormatter.d.ts +7 -0
  7. package/AdminUiProvider/FileUrlFormatter.js +0 -0
  8. package/AdminUiProvider/index.d.ts +1 -0
  9. package/AdminUiProvider/index.js +1 -0
  10. package/Alert/Alert.stories.d.ts +1 -1
  11. package/Alert/Alert.stories.js.map +1 -1
  12. package/AutoComplete/AutoComplete.stories.d.ts +1 -1
  13. package/AutoComplete/AutoComplete.stories.js.map +1 -1
  14. package/AutoComplete/primitives/AutoCompletePrimitive.stories.d.ts +1 -1
  15. package/AutoComplete/primitives/AutoCompletePrimitive.stories.js.map +1 -1
  16. package/Avatar/Avatar.stories.d.ts +1 -1
  17. package/Avatar/Avatar.stories.js.map +1 -1
  18. package/Button/Button.stories.d.ts +1 -1
  19. package/Button/Button.stories.js.map +1 -1
  20. package/Button/IconButton.stories.d.ts +1 -1
  21. package/Button/IconButton.stories.js.map +1 -1
  22. package/Card/Card.stories.d.ts +1 -1
  23. package/Card/Card.stories.js.map +1 -1
  24. package/Checkbox/Checkbox.stories.d.ts +1 -1
  25. package/Checkbox/Checkbox.stories.js.map +1 -1
  26. package/Checkbox/primitives/CheckboxPrimitive.stories.d.ts +1 -1
  27. package/Checkbox/primitives/CheckboxPrimitive.stories.js.map +1 -1
  28. package/CheckboxGroup/CheckboxGroup.stories.d.ts +1 -1
  29. package/CheckboxGroup/CheckboxGroup.stories.js.map +1 -1
  30. package/CheckboxGroup/primitives/CheckboxGroupPrimitive.stories.d.ts +1 -1
  31. package/CheckboxGroup/primitives/CheckboxGroupPrimitive.stories.js.map +1 -1
  32. package/CodeEditor/CodeEditor.stories.d.ts +1 -1
  33. package/CodeEditor/CodeEditor.stories.js.map +1 -1
  34. package/CodeEditor/CodeEditorPrimitive.stories.d.ts +1 -1
  35. package/CodeEditor/CodeEditorPrimitive.stories.js.map +1 -1
  36. package/ColorPicker/ColorPicker.stories.d.ts +1 -1
  37. package/ColorPicker/ColorPicker.stories.js.map +1 -1
  38. package/ColorPicker/primitives/ColorPickerPrimitive.stories.d.ts +1 -1
  39. package/ColorPicker/primitives/ColorPickerPrimitive.stories.js.map +1 -1
  40. package/DataTable/DataTable.stories.d.ts +1 -1
  41. package/DataTable/DataTable.stories.js.map +1 -1
  42. package/DatePicker/DatePicker.stories.d.ts +1 -1
  43. package/DatePicker/DatePicker.stories.js.map +1 -1
  44. package/DatePicker/primitives/components/DatePickerTrigger.js +1 -1
  45. package/DatePicker/primitives/components/DatePickerTrigger.js.map +1 -1
  46. package/Dialog/Dialog.stories.d.ts +1 -1
  47. package/Dialog/Dialog.stories.js.map +1 -1
  48. package/DragCursor/DragCursor.d.ts +7 -0
  49. package/DragCursor/DragCursor.js +21 -0
  50. package/DragCursor/DragCursor.js.map +1 -0
  51. package/DragCursor/DragCursor.stories.d.ts +10 -0
  52. package/DragCursor/DragCursor.stories.js +97 -0
  53. package/DragCursor/DragCursor.stories.js.map +1 -0
  54. package/DragCursor/index.d.ts +1 -0
  55. package/DragCursor/index.js +1 -0
  56. package/Drawer/Drawer.stories.d.ts +1 -1
  57. package/Drawer/Drawer.stories.js.map +1 -1
  58. package/DropdownMenu/DropdownMenu.stories.d.ts +1 -1
  59. package/DropdownMenu/DropdownMenu.stories.js.map +1 -1
  60. package/FilePicker/FilePicker.stories.d.ts +1 -1
  61. package/FilePicker/FilePicker.stories.js.map +1 -1
  62. package/FilePicker/domains/FileItem.js +3 -2
  63. package/FilePicker/domains/FileItem.js.map +1 -1
  64. package/FilePicker/domains/FileItemDto.d.ts +9 -2
  65. package/FilePicker/primitives/FilePickerPrimitive.stories.d.ts +1 -1
  66. package/FilePicker/primitives/FilePickerPrimitive.stories.js.map +1 -1
  67. package/FilePicker/primitives/components/previews/FilePreview.js +5 -3
  68. package/FilePicker/primitives/components/previews/FilePreview.js.map +1 -1
  69. package/FilePicker/primitives/useFilePicker.js +24 -1
  70. package/FilePicker/primitives/useFilePicker.js.map +1 -1
  71. package/FillViewport/FillViewport.d.ts +60 -0
  72. package/FillViewport/FillViewport.js +67 -0
  73. package/FillViewport/FillViewport.js.map +1 -0
  74. package/FillViewport/index.d.ts +1 -0
  75. package/FillViewport/index.js +1 -0
  76. package/Grid/Grid.d.ts +1 -1
  77. package/Grid/Grid.js.map +1 -1
  78. package/Grid/Grid.stories.d.ts +1 -1
  79. package/Grid/Grid.stories.js.map +1 -1
  80. package/HeaderBar/HeaderBar.stories.d.ts +1 -1
  81. package/HeaderBar/HeaderBar.stories.js.map +1 -1
  82. package/Heading/Heading.stories.d.ts +1 -1
  83. package/Heading/Heading.stories.js.map +1 -1
  84. package/Icon/Icon.stories.d.ts +1 -1
  85. package/Icon/Icon.stories.js.map +1 -1
  86. package/IconPicker/IconPicker.stories.d.ts +1 -1
  87. package/IconPicker/IconPicker.stories.js.map +1 -1
  88. package/IconPicker/primitives/IconPickerPrimitive.stories.d.ts +1 -1
  89. package/IconPicker/primitives/IconPickerPrimitive.stories.js.map +1 -1
  90. package/Input/Input.stories.d.ts +1 -1
  91. package/Input/Input.stories.js.map +1 -1
  92. package/Input/InputPrimitive.stories.d.ts +1 -1
  93. package/Input/InputPrimitive.stories.js.map +1 -1
  94. package/Label/Label.stories.d.ts +1 -1
  95. package/Label/Label.stories.js.map +1 -1
  96. package/Link/Link.stories.d.ts +1 -1
  97. package/Link/Link.stories.js.map +1 -1
  98. package/List/List.stories.d.ts +1 -1
  99. package/List/List.stories.js.map +1 -1
  100. package/Loader/Loader.stories.d.ts +1 -1
  101. package/Loader/Loader.stories.js.map +1 -1
  102. package/Loader/OverlayLoader.stories.d.ts +1 -1
  103. package/Loader/OverlayLoader.stories.js.map +1 -1
  104. package/MultiAutoComplete/MultiAutoComplete.stories.d.ts +1 -1
  105. package/MultiAutoComplete/MultiAutoComplete.stories.js.map +1 -1
  106. package/MultiAutoComplete/primitives/MultiAutoCompletePrimitive.stories.d.ts +1 -1
  107. package/MultiAutoComplete/primitives/MultiAutoCompletePrimitive.stories.js.map +1 -1
  108. package/MultiFilePicker/MultiFilePicker.stories.d.ts +1 -1
  109. package/MultiFilePicker/MultiFilePicker.stories.js.map +1 -1
  110. package/MultiFilePicker/primitives/MultiFilePickerPrimitive.stories.d.ts +1 -1
  111. package/MultiFilePicker/primitives/MultiFilePickerPrimitive.stories.js.map +1 -1
  112. package/MultiSelect/MultiSelect.stories.d.ts +1 -1
  113. package/MultiSelect/MultiSelect.stories.js.map +1 -1
  114. package/Popover/Popover.stories.d.ts +1 -1
  115. package/Popover/Popover.stories.js.map +1 -1
  116. package/ProgressBar/ProgressBar.stories.d.ts +1 -1
  117. package/ProgressBar/ProgressBar.stories.js.map +1 -1
  118. package/RadioGroup/RadioGroup.stories.d.ts +1 -1
  119. package/RadioGroup/RadioGroup.stories.js.map +1 -1
  120. package/RadioGroup/primitives/RadioGroupPrimitive.stories.d.ts +1 -1
  121. package/RadioGroup/primitives/RadioGroupPrimitive.stories.js.map +1 -1
  122. package/RangeSlider/RangeSlider.stories.d.ts +1 -1
  123. package/RangeSlider/RangeSlider.stories.js.map +1 -1
  124. package/RangeSlider/primitives/RangeSliderPrimitive.stories.d.ts +1 -1
  125. package/RangeSlider/primitives/RangeSliderPrimitive.stories.js.map +1 -1
  126. package/ScrollArea/ScrollArea.stories.d.ts +1 -1
  127. package/ScrollArea/ScrollArea.stories.js.map +1 -1
  128. package/SegmentedControl/SegmentedControl.d.ts +4 -0
  129. package/SegmentedControl/SegmentedControl.js +6 -2
  130. package/SegmentedControl/SegmentedControl.js.map +1 -1
  131. package/SegmentedControl/SegmentedControl.stories.d.ts +5 -1
  132. package/SegmentedControl/SegmentedControl.stories.js +100 -2
  133. package/SegmentedControl/SegmentedControl.stories.js.map +1 -1
  134. package/SegmentedControl/SegmentedControlTab.d.ts +10 -0
  135. package/SegmentedControl/SegmentedControlTab.js +21 -0
  136. package/SegmentedControl/SegmentedControlTab.js.map +1 -0
  137. package/SegmentedControl/SegmentedControlTabs.d.ts +11 -0
  138. package/SegmentedControl/SegmentedControlTabs.js +71 -0
  139. package/SegmentedControl/SegmentedControlTabs.js.map +1 -0
  140. package/SegmentedControl/SegmentedControlTabsContext.d.ts +19 -0
  141. package/SegmentedControl/SegmentedControlTabsContext.js +11 -0
  142. package/SegmentedControl/SegmentedControlTabsContext.js.map +1 -0
  143. package/SegmentedControl/index.d.ts +2 -0
  144. package/SegmentedControl/index.js +2 -0
  145. package/SegmentedControl/primitives/SegmentedControlPrimitive.d.ts +5 -1
  146. package/SegmentedControl/primitives/SegmentedControlPrimitive.js +4 -3
  147. package/SegmentedControl/primitives/SegmentedControlPrimitive.js.map +1 -1
  148. package/SegmentedControl/primitives/SegmentedControlPrimitive.stories.d.ts +2 -1
  149. package/SegmentedControl/primitives/SegmentedControlPrimitive.stories.js +8 -1
  150. package/SegmentedControl/primitives/SegmentedControlPrimitive.stories.js.map +1 -1
  151. package/Select/Select.stories.d.ts +1 -1
  152. package/Select/Select.stories.js.map +1 -1
  153. package/Select/primitives/SelectPrimitive.stories.d.ts +1 -1
  154. package/Select/primitives/SelectPrimitive.stories.js.map +1 -1
  155. package/Separator/Separator.stories.d.ts +1 -1
  156. package/Separator/Separator.stories.js.map +1 -1
  157. package/Sidebar/Sidebar.d.ts +2 -0
  158. package/Sidebar/Sidebar.stories.d.ts +1 -1
  159. package/Sidebar/Sidebar.stories.js.map +1 -1
  160. package/Sidebar/components/items/SidebarMenuItem.d.ts +4 -1
  161. package/Sidebar/components/items/SidebarMenuItem.js +3 -1
  162. package/Sidebar/components/items/SidebarMenuItem.js.map +1 -1
  163. package/Sidebar/components/items/SidebarMenuItemBadge.d.ts +6 -0
  164. package/Sidebar/components/items/SidebarMenuItemBadge.js +7 -0
  165. package/Sidebar/components/items/SidebarMenuItemBadge.js.map +1 -0
  166. package/Sidebar/components/items/SidebarMenuLink.d.ts +3 -1
  167. package/Sidebar/components/items/SidebarMenuLink.js +3 -1
  168. package/Sidebar/components/items/SidebarMenuLink.js.map +1 -1
  169. package/Sidebar/components/items/SidebarMenuRootButton.d.ts +1 -1
  170. package/Sidebar/components/items/SidebarMenuRootButton.js +8 -3
  171. package/Sidebar/components/items/SidebarMenuRootButton.js.map +1 -1
  172. package/Sidebar/components/items/SidebarMenuSubButton.d.ts +1 -1
  173. package/Sidebar/components/items/SidebarMenuSubButton.js +8 -3
  174. package/Sidebar/components/items/SidebarMenuSubButton.js.map +1 -1
  175. package/Sidebar/components/items/SidebarMenuSubItemIndentation.js +2 -1
  176. package/Sidebar/components/items/SidebarMenuSubItemIndentation.js.map +1 -1
  177. package/Skeleton/Skeleton.stories.d.ts +1 -1
  178. package/Skeleton/Skeleton.stories.js.map +1 -1
  179. package/Slider/Slider.stories.d.ts +1 -1
  180. package/Slider/Slider.stories.js.map +1 -1
  181. package/Slider/primitives/SliderPrimitive.stories.d.ts +1 -1
  182. package/Slider/primitives/SliderPrimitive.stories.js.map +1 -1
  183. package/SteppedProgress/SteppedProgress.stories.d.ts +1 -1
  184. package/SteppedProgress/SteppedProgress.stories.js.map +1 -1
  185. package/Switch/Switch.stories.d.ts +1 -1
  186. package/Switch/Switch.stories.js.map +1 -1
  187. package/Switch/primitives/SwitchPrimitive.stories.d.ts +1 -1
  188. package/Switch/primitives/SwitchPrimitive.stories.js.map +1 -1
  189. package/Tabs/Tabs.js.map +1 -1
  190. package/Tabs/Tabs.stories.d.ts +1 -1
  191. package/Tabs/Tabs.stories.js.map +1 -1
  192. package/Tag/Tag.stories.d.ts +1 -1
  193. package/Tag/Tag.stories.js.map +1 -1
  194. package/Tags/Tags.stories.d.ts +1 -1
  195. package/Tags/Tags.stories.js.map +1 -1
  196. package/Tags/primitives/TagsPrimitive.stories.d.ts +1 -1
  197. package/Tags/primitives/TagsPrimitive.stories.js.map +1 -1
  198. package/Text/Text.stories.d.ts +1 -1
  199. package/Text/Text.stories.js.map +1 -1
  200. package/Textarea/Textarea.stories.d.ts +1 -1
  201. package/Textarea/Textarea.stories.js.map +1 -1
  202. package/Textarea/TextareaPrimitive.stories.d.ts +1 -1
  203. package/Textarea/TextareaPrimitive.stories.js.map +1 -1
  204. package/TimeAgo/TimeAgo.d.ts +3 -0
  205. package/TimeAgo/TimeAgo.js +45 -0
  206. package/TimeAgo/TimeAgo.js.map +1 -0
  207. package/TimeAgo/TimeAgo.stories.d.ts +15 -0
  208. package/TimeAgo/TimeAgo.stories.js +71 -0
  209. package/TimeAgo/TimeAgo.stories.js.map +1 -0
  210. package/TimeAgo/formatElapsed.d.ts +1 -0
  211. package/TimeAgo/formatElapsed.js +27 -0
  212. package/TimeAgo/formatElapsed.js.map +1 -0
  213. package/TimeAgo/getElapsedSeconds.d.ts +2 -0
  214. package/TimeAgo/getElapsedSeconds.js +9 -0
  215. package/TimeAgo/getElapsedSeconds.js.map +1 -0
  216. package/TimeAgo/getUpdateDelay.d.ts +3 -0
  217. package/TimeAgo/getUpdateDelay.js +24 -0
  218. package/TimeAgo/getUpdateDelay.js.map +1 -0
  219. package/TimeAgo/index.d.ts +2 -3
  220. package/TimeAgo/index.js +1 -1
  221. package/TimeAgo/toEpochMs.d.ts +2 -0
  222. package/TimeAgo/toEpochMs.js +8 -0
  223. package/TimeAgo/toEpochMs.js.map +1 -0
  224. package/TimeAgo/toISOString.d.ts +2 -0
  225. package/TimeAgo/toISOString.js +8 -0
  226. package/TimeAgo/toISOString.js.map +1 -0
  227. package/TimeAgo/types.d.ts +18 -0
  228. package/TimeAgo/types.js +0 -0
  229. package/Toast/useToast.stories.d.ts +1 -1
  230. package/Toast/useToast.stories.js.map +1 -1
  231. package/Toggle/Toggle.stories.d.ts +1 -1
  232. package/Toggle/Toggle.stories.js.map +1 -1
  233. package/Toggle/primitives/TogglePrimitive.stories.d.ts +1 -1
  234. package/Toggle/primitives/TogglePrimitive.stories.js.map +1 -1
  235. package/ToggleGroup/ToggleGroup.stories.d.ts +1 -1
  236. package/ToggleGroup/ToggleGroup.stories.js.map +1 -1
  237. package/ToggleGroup/domains/ToggleGroupItem.d.ts +3 -0
  238. package/ToggleGroup/domains/ToggleGroupItem.js +6 -1
  239. package/ToggleGroup/domains/ToggleGroupItem.js.map +1 -1
  240. package/ToggleGroup/domains/ToggleGroupItemFormatted.d.ts +1 -0
  241. package/ToggleGroup/domains/ToggleGroupItemFormatter.js +2 -1
  242. package/ToggleGroup/domains/ToggleGroupItemFormatter.js.map +1 -1
  243. package/ToggleGroup/domains/ToggleGroupItemParams.d.ts +1 -0
  244. package/ToggleGroup/primitives/ToggleGroupPrimitive.js +11 -2
  245. package/ToggleGroup/primitives/ToggleGroupPrimitive.js.map +1 -1
  246. package/ToggleGroup/primitives/ToggleGroupPrimitive.stories.d.ts +1 -1
  247. package/ToggleGroup/primitives/ToggleGroupPrimitive.stories.js.map +1 -1
  248. package/Tooltip/Tooltip.stories.d.ts +1 -1
  249. package/Tooltip/Tooltip.stories.js.map +1 -1
  250. package/Tree/Tree.stories.d.ts +1 -1
  251. package/Tree/Tree.stories.js.map +1 -1
  252. package/Widget/Widget.stories.d.ts +1 -1
  253. package/Widget/Widget.stories.js.map +1 -1
  254. package/exports/admin/ui.d.ts +1 -0
  255. package/exports/admin/ui.js +1 -0
  256. package/index.d.ts +2 -0
  257. package/index.js +2 -0
  258. package/package.json +24 -26
  259. package/theme.css +3 -1
  260. package/utils.js +1 -0
  261. package/utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl/SegmentedControl.js","sources":["../../src/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { makeDecoratable } from \"~/utils.js\";\nimport type { SegmentedControlPrimitiveProps } from \"./primitives/index.js\";\nimport { SegmentedControlPrimitive } from \"./primitives/index.js\";\nimport type { FormComponentProps } from \"~/FormComponent/index.js\";\nimport {\n FormComponentDescription,\n FormComponentErrorMessage,\n FormComponentLabel,\n FormComponentNote\n} from \"~/FormComponent/index.js\";\n\ntype SegmentedControlProps = SegmentedControlPrimitiveProps & FormComponentProps;\n\nconst DecoratableSegmentedControl = ({\n label,\n description,\n note,\n hint,\n required,\n disabled,\n validation,\n ...props\n}: SegmentedControlProps) => {\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n const invalid = useMemo(() => validationIsValid === false, [validationIsValid]);\n\n return (\n <div className=\"w-full\">\n <FormComponentLabel\n text={label}\n hint={hint}\n required={required}\n disabled={disabled}\n invalid={invalid}\n />\n <FormComponentDescription\n text={description}\n disabled={disabled}\n className=\"mb-xs-plus\"\n />\n <FormComponentErrorMessage\n text={validationMessage}\n invalid={invalid}\n disabled={disabled}\n className=\"mt-none mb-xs-plus\"\n />\n <SegmentedControlPrimitive {...props} disabled={disabled} />\n <FormComponentNote text={note} disabled={disabled} />\n </div>\n );\n};\n\nconst SegmentedControl = makeDecoratable(\"SegmentedControl\", DecoratableSegmentedControl);\n\nexport { SegmentedControl, type SegmentedControlProps };\n"],"names":["DecoratableSegmentedControl","label","description","note","hint","required","disabled","validation","props","validationIsValid","validationMessage","invalid","useMemo","FormComponentLabel","FormComponentDescription","FormComponentErrorMessage","SegmentedControlPrimitive","FormComponentNote","SegmentedControl","makeDecoratable"],"mappings":";;;;AAcA,MAAMA,8BAA8B,CAAC,EACjCC,KAAK,EACLC,WAAW,EACXC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACV,GAAGC,OACiB;IACpB,MAAM,EAAE,SAASC,iBAAiB,EAAE,SAASC,iBAAiB,EAAE,GAAGH,cAAc,CAAC;IAClF,MAAMI,UAAUC,QAAQ,IAAMH,AAAsB,UAAtBA,mBAA6B;QAACA;KAAkB;IAE9E,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACI,oBAAkBA;QACf,MAAMZ;QACN,MAAMG;QACN,UAAUC;QACV,UAAUC;QACV,SAASK;sBAEb,oBAACG,0BAAwBA;QACrB,MAAMZ;QACN,UAAUI;QACV,WAAU;sBAEd,oBAACS,2BAAyBA;QACtB,MAAML;QACN,SAASC;QACT,UAAUL;QACV,WAAU;sBAEd,oBAACU,2BAAyBA;QAAE,GAAGR,KAAK;QAAE,UAAUF;sBAChD,oBAACW,mBAAiBA;QAAC,MAAMd;QAAM,UAAUG;;AAGrD;AAEA,MAAMY,mBAAmBC,gBAAgB,oBAAoBnB"}
1
+ {"version":3,"file":"SegmentedControl/SegmentedControl.js","sources":["../../src/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport { SegmentedControlTabs } from \"./SegmentedControlTabs.js\";\nimport type { SegmentedControlPrimitiveProps } from \"./primitives/index.js\";\nimport { SegmentedControlPrimitive } from \"./primitives/index.js\";\nimport type { FormComponentProps } from \"~/FormComponent/index.js\";\nimport {\n FormComponentDescription,\n FormComponentErrorMessage,\n FormComponentLabel,\n FormComponentNote\n} from \"~/FormComponent/index.js\";\n\ntype SegmentedControlProps = SegmentedControlPrimitiveProps & FormComponentProps;\n\nconst DecoratableSegmentedControl = ({\n label,\n description,\n note,\n hint,\n required,\n disabled,\n validation,\n ...props\n}: SegmentedControlProps) => {\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n const invalid = useMemo(() => validationIsValid === false, [validationIsValid]);\n\n return (\n <div className=\"w-full\">\n <FormComponentLabel\n text={label}\n hint={hint}\n required={required}\n disabled={disabled}\n invalid={invalid}\n />\n <FormComponentDescription\n text={description}\n disabled={disabled}\n className=\"mb-xs-plus\"\n />\n <FormComponentErrorMessage\n text={validationMessage}\n invalid={invalid}\n disabled={disabled}\n className=\"mt-none mb-xs-plus\"\n />\n <SegmentedControlPrimitive {...props} disabled={disabled} />\n <FormComponentNote text={note} disabled={disabled} />\n </div>\n );\n};\n\nconst BaseSegmentedControl = makeDecoratable(\"SegmentedControl\", DecoratableSegmentedControl);\n\nconst SegmentedControl = withStaticProps(BaseSegmentedControl, {\n Tabs: SegmentedControlTabs\n});\n\nexport { SegmentedControl, type SegmentedControlProps };\n"],"names":["DecoratableSegmentedControl","label","description","note","hint","required","disabled","validation","props","validationIsValid","validationMessage","invalid","useMemo","FormComponentLabel","FormComponentDescription","FormComponentErrorMessage","SegmentedControlPrimitive","FormComponentNote","BaseSegmentedControl","makeDecoratable","SegmentedControl","withStaticProps","SegmentedControlTabs"],"mappings":";;;;;AAeA,MAAMA,8BAA8B,CAAC,EACjCC,KAAK,EACLC,WAAW,EACXC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACV,GAAGC,OACiB;IACpB,MAAM,EAAE,SAASC,iBAAiB,EAAE,SAASC,iBAAiB,EAAE,GAAGH,cAAc,CAAC;IAClF,MAAMI,UAAUC,QAAQ,IAAMH,AAAsB,UAAtBA,mBAA6B;QAACA;KAAkB;IAE9E,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACI,oBAAkBA;QACf,MAAMZ;QACN,MAAMG;QACN,UAAUC;QACV,UAAUC;QACV,SAASK;sBAEb,oBAACG,0BAAwBA;QACrB,MAAMZ;QACN,UAAUI;QACV,WAAU;sBAEd,oBAACS,2BAAyBA;QACtB,MAAML;QACN,SAASC;QACT,UAAUL;QACV,WAAU;sBAEd,oBAACU,2BAAyBA;QAAE,GAAGR,KAAK;QAAE,UAAUF;sBAChD,oBAACW,mBAAiBA;QAAC,MAAMd;QAAM,UAAUG;;AAGrD;AAEA,MAAMY,uBAAuBC,gBAAgB,oBAAoBnB;AAEjE,MAAMoB,mBAAmBC,gBAAgBH,sBAAsB;IAC3D,MAAMI;AACV"}
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from "@storybook/react-webpack5";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { SegmentedControl } from "./SegmentedControl.js";
3
3
  declare const meta: Meta<typeof SegmentedControl>;
4
4
  export default meta;
@@ -8,4 +8,8 @@ export declare const VariantLight: Story;
8
8
  export declare const VariantDimmed: Story;
9
9
  export declare const VariantGhost: Story;
10
10
  export declare const WithFormComponent: Story;
11
+ export declare const FullWidth: Story;
11
12
  export declare const Disabled: Story;
13
+ export declare const TabsDefault: Story;
14
+ export declare const TabsDimmed: Story;
15
+ export declare const TabsProgrammaticSwitch: Story;
@@ -1,7 +1,11 @@
1
1
  import react, { useState } from "react";
2
+ import { ReactComponent } from "@webiny/icons/notifications.svg";
3
+ import { ReactComponent as person_svg_ReactComponent } from "@webiny/icons/person.svg";
4
+ import { ReactComponent as settings_svg_ReactComponent } from "@webiny/icons/settings.svg";
2
5
  import { SegmentedControl } from "./SegmentedControl.js";
3
6
  import { Icon } from "../Icon/index.js";
4
- import { ReactComponent } from "@webiny/icons/notifications.svg";
7
+ import { Button } from "../Button/index.js";
8
+ import { useSegmentedTabs } from "./SegmentedControlTabsContext.js";
5
9
  const meta = {
6
10
  title: "Components/Form/SegmentedControl",
7
11
  component: SegmentedControl
@@ -136,6 +140,19 @@ const WithFormComponent = {
136
140
  }));
137
141
  }
138
142
  };
143
+ const FullWidth = {
144
+ render: ()=>{
145
+ const [value, setValue] = useState("item1");
146
+ return /*#__PURE__*/ react.createElement("div", {
147
+ className: "w-[500px]"
148
+ }, /*#__PURE__*/ react.createElement(SegmentedControl, {
149
+ items: items,
150
+ value: value,
151
+ onChange: setValue,
152
+ fullWidth: true
153
+ }));
154
+ }
155
+ };
139
156
  const Disabled = {
140
157
  render: ()=>{
141
158
  const [value, setValue] = useState("item1");
@@ -176,7 +193,88 @@ const Disabled = {
176
193
  })));
177
194
  }
178
195
  };
196
+ const TabsDefault = {
197
+ render: ()=>/*#__PURE__*/ react.createElement(SegmentedControl.Tabs, null, /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
198
+ value: "account",
199
+ trigger: "Account",
200
+ icon: /*#__PURE__*/ react.createElement(Icon, {
201
+ icon: /*#__PURE__*/ react.createElement(person_svg_ReactComponent, null),
202
+ label: "Account"
203
+ }),
204
+ content: /*#__PURE__*/ react.createElement("div", {
205
+ className: "p-md"
206
+ }, "Account content")
207
+ }), /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
208
+ value: "security",
209
+ trigger: "Security",
210
+ icon: /*#__PURE__*/ react.createElement(Icon, {
211
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
212
+ label: "Security"
213
+ }),
214
+ content: /*#__PURE__*/ react.createElement("div", {
215
+ className: "p-md"
216
+ }, "Security content")
217
+ }), /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
218
+ value: "preferences",
219
+ trigger: "Preferences",
220
+ icon: /*#__PURE__*/ react.createElement(Icon, {
221
+ icon: /*#__PURE__*/ react.createElement(settings_svg_ReactComponent, null),
222
+ label: "Preferences"
223
+ }),
224
+ content: /*#__PURE__*/ react.createElement("div", {
225
+ className: "p-md"
226
+ }, "Preferences content")
227
+ }))
228
+ };
229
+ const TabsDimmed = {
230
+ render: ()=>/*#__PURE__*/ react.createElement(SegmentedControl.Tabs, {
231
+ variant: "dimmed"
232
+ }, /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
233
+ value: "account",
234
+ trigger: "Account",
235
+ content: /*#__PURE__*/ react.createElement("div", {
236
+ className: "p-md"
237
+ }, "Account content")
238
+ }), /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
239
+ value: "security",
240
+ trigger: "Security",
241
+ content: /*#__PURE__*/ react.createElement("div", {
242
+ className: "p-md"
243
+ }, "Security content")
244
+ }), /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
245
+ value: "preferences",
246
+ trigger: "Preferences",
247
+ content: /*#__PURE__*/ react.createElement("div", {
248
+ className: "p-md"
249
+ }, "Preferences content")
250
+ }))
251
+ };
252
+ const SwitchFromContent = ()=>{
253
+ const { setActiveTab } = useSegmentedTabs();
254
+ return /*#__PURE__*/ react.createElement("div", {
255
+ className: "p-md flex flex-col gap-sm"
256
+ }, /*#__PURE__*/ react.createElement("p", null, "Account content"), /*#__PURE__*/ react.createElement(Button, {
257
+ variant: "secondary",
258
+ text: "Go to Security",
259
+ onClick: ()=>setActiveTab("security")
260
+ }));
261
+ };
262
+ const TabsProgrammaticSwitch = {
263
+ render: ()=>/*#__PURE__*/ react.createElement(SegmentedControl.Tabs, {
264
+ variant: "dimmed"
265
+ }, /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
266
+ value: "account",
267
+ trigger: "Account",
268
+ content: /*#__PURE__*/ react.createElement(SwitchFromContent, null)
269
+ }), /*#__PURE__*/ react.createElement(SegmentedControl.Tabs.Tab, {
270
+ value: "security",
271
+ trigger: "Security",
272
+ content: /*#__PURE__*/ react.createElement("div", {
273
+ className: "p-md"
274
+ }, "Security content")
275
+ }))
276
+ };
179
277
  export default SegmentedControl_stories;
180
- export { Default, Disabled, VariantDimmed, VariantGhost, VariantLight, WithFormComponent };
278
+ export { Default, Disabled, FullWidth, TabsDefault, TabsDimmed, TabsProgrammaticSwitch, VariantDimmed, VariantGhost, VariantLight, WithFormComponent };
181
279
 
182
280
  //# sourceMappingURL=SegmentedControl.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl/SegmentedControl.stories.js","sources":["../../src/SegmentedControl/SegmentedControl.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { SegmentedControl } from \"./SegmentedControl.js\";\nimport { Icon } from \"~/Icon/index.js\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/notifications.svg\";\n\nconst meta: Meta<typeof SegmentedControl> = {\n title: \"Components/Form/SegmentedControl\",\n component: SegmentedControl\n};\n\nexport default meta;\ntype Story = StoryObj<typeof SegmentedControl>;\n\nconst items = [\n { label: \"Item\", value: \"item1\" },\n { label: \"Item\", value: \"item2\" },\n { label: \"Item\", value: \"item3\" },\n { label: \"Item\", value: \"item4\" }\n];\n\nconst itemsWithIcons = [\n { label: \"Item 1\", value: \"item1\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 1\", value: \"item2\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 1\", value: \"item3\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 1\", value: \"item4\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> }\n];\n\nexport const Default: Story = {\n render: args => {\n const [value, setValue] = useState(args.value);\n return <SegmentedControl {...args} value={value} onChange={value => setValue(value)} />;\n },\n args: {\n items: itemsWithIcons\n }\n};\n\nexport const VariantLight: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return <SegmentedControl items={items} value={value} onChange={setValue} variant=\"light\" />;\n }\n};\n\nexport const VariantDimmed: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <SegmentedControl items={items} value={value} onChange={setValue} variant=\"dimmed\" />\n );\n }\n};\n\nexport const VariantGhost: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"p-md rounded-md\">\n <SegmentedControl items={items} value={value} onChange={setValue} variant=\"ghost\" />\n </div>\n );\n }\n};\n\nexport const WithFormComponent: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"space-y-lg\">\n <SegmentedControl\n label=\"Select an option\"\n description=\"Choose one of the available options\"\n items={items}\n value={value}\n onChange={setValue}\n />\n <SegmentedControl\n label=\"With error\"\n items={items}\n value={value}\n onChange={setValue}\n validation={{\n isValid: false,\n message: \"This field is required\"\n }}\n />\n <SegmentedControl\n label=\"Disabled\"\n items={items}\n value={value}\n onChange={setValue}\n disabled\n />\n </div>\n );\n }\n};\n\nexport const Disabled: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"space-y-md\">\n <div>\n <h3 className=\"text-lg font-semibold mb-sm\">Fully Disabled</h3>\n <SegmentedControl items={items} value={value} onChange={setValue} disabled />\n </div>\n <div>\n <h3 className=\"text-lg font-semibold mb-sm\">Partially Disabled</h3>\n <SegmentedControl\n items={[\n { label: \"Item\", value: \"item1\" },\n { label: \"Item (disabled)\", value: \"item2\", disabled: true },\n { label: \"Item\", value: \"item3\" },\n { label: \"Item (disabled)\", value: \"item4\", disabled: true }\n ]}\n value={value}\n onChange={setValue}\n />\n </div>\n </div>\n );\n }\n};\n"],"names":["meta","SegmentedControl","items","itemsWithIcons","Icon","LockIcon","Default","args","value","setValue","useState","VariantLight","VariantDimmed","VariantGhost","WithFormComponent","Disabled"],"mappings":"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"}
1
+ {"version":3,"file":"SegmentedControl/SegmentedControl.stories.js","sources":["../../src/SegmentedControl/SegmentedControl.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/notifications.svg\";\nimport { ReactComponent as PersonIcon } from \"@webiny/icons/person.svg\";\nimport { ReactComponent as SettingsIcon } from \"@webiny/icons/settings.svg\";\nimport { SegmentedControl } from \"./SegmentedControl.js\";\nimport { Icon } from \"~/Icon/index.js\";\nimport { Button } from \"~/Button/index.js\";\nimport { useSegmentedTabs } from \"./SegmentedControlTabsContext.js\";\n\nconst meta: Meta<typeof SegmentedControl> = {\n title: \"Components/Form/SegmentedControl\",\n component: SegmentedControl\n};\n\nexport default meta;\ntype Story = StoryObj<typeof SegmentedControl>;\n\nconst items = [\n { label: \"Item\", value: \"item1\" },\n { label: \"Item\", value: \"item2\" },\n { label: \"Item\", value: \"item3\" },\n { label: \"Item\", value: \"item4\" }\n];\n\nconst itemsWithIcons = [\n { label: \"Item 1\", value: \"item1\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 1\", value: \"item2\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 1\", value: \"item3\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 1\", value: \"item4\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> }\n];\n\nexport const Default: Story = {\n render: args => {\n const [value, setValue] = useState(args.value);\n return <SegmentedControl {...args} value={value} onChange={value => setValue(value)} />;\n },\n args: {\n items: itemsWithIcons\n }\n};\n\nexport const VariantLight: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return <SegmentedControl items={items} value={value} onChange={setValue} variant=\"light\" />;\n }\n};\n\nexport const VariantDimmed: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <SegmentedControl items={items} value={value} onChange={setValue} variant=\"dimmed\" />\n );\n }\n};\n\nexport const VariantGhost: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"p-md rounded-md\">\n <SegmentedControl items={items} value={value} onChange={setValue} variant=\"ghost\" />\n </div>\n );\n }\n};\n\nexport const WithFormComponent: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"space-y-lg\">\n <SegmentedControl\n label=\"Select an option\"\n description=\"Choose one of the available options\"\n items={items}\n value={value}\n onChange={setValue}\n />\n <SegmentedControl\n label=\"With error\"\n items={items}\n value={value}\n onChange={setValue}\n validation={{\n isValid: false,\n message: \"This field is required\"\n }}\n />\n <SegmentedControl\n label=\"Disabled\"\n items={items}\n value={value}\n onChange={setValue}\n disabled\n />\n </div>\n );\n }\n};\n\nexport const FullWidth: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"w-[500px]\">\n <SegmentedControl items={items} value={value} onChange={setValue} fullWidth />\n </div>\n );\n }\n};\n\nexport const Disabled: Story = {\n render: () => {\n const [value, setValue] = useState(\"item1\");\n\n return (\n <div className=\"space-y-md\">\n <div>\n <h3 className=\"text-lg font-semibold mb-sm\">Fully Disabled</h3>\n <SegmentedControl items={items} value={value} onChange={setValue} disabled />\n </div>\n <div>\n <h3 className=\"text-lg font-semibold mb-sm\">Partially Disabled</h3>\n <SegmentedControl\n items={[\n { label: \"Item\", value: \"item1\" },\n { label: \"Item (disabled)\", value: \"item2\", disabled: true },\n { label: \"Item\", value: \"item3\" },\n { label: \"Item (disabled)\", value: \"item4\", disabled: true }\n ]}\n value={value}\n onChange={setValue}\n />\n </div>\n </div>\n );\n }\n};\n\n// SegmentedControl.Tabs stories\n\nexport const TabsDefault: Story = {\n render: () => (\n <SegmentedControl.Tabs>\n <SegmentedControl.Tabs.Tab\n value={\"account\"}\n trigger={\"Account\"}\n icon={<Icon icon={<PersonIcon />} label={\"Account\"} />}\n content={<div className={\"p-md\"}>{\"Account content\"}</div>}\n />\n <SegmentedControl.Tabs.Tab\n value={\"security\"}\n trigger={\"Security\"}\n icon={<Icon icon={<LockIcon />} label={\"Security\"} />}\n content={<div className={\"p-md\"}>{\"Security content\"}</div>}\n />\n <SegmentedControl.Tabs.Tab\n value={\"preferences\"}\n trigger={\"Preferences\"}\n icon={<Icon icon={<SettingsIcon />} label={\"Preferences\"} />}\n content={<div className={\"p-md\"}>{\"Preferences content\"}</div>}\n />\n </SegmentedControl.Tabs>\n )\n};\n\nexport const TabsDimmed: Story = {\n render: () => (\n <SegmentedControl.Tabs variant={\"dimmed\"}>\n <SegmentedControl.Tabs.Tab\n value={\"account\"}\n trigger={\"Account\"}\n content={<div className={\"p-md\"}>{\"Account content\"}</div>}\n />\n <SegmentedControl.Tabs.Tab\n value={\"security\"}\n trigger={\"Security\"}\n content={<div className={\"p-md\"}>{\"Security content\"}</div>}\n />\n <SegmentedControl.Tabs.Tab\n value={\"preferences\"}\n trigger={\"Preferences\"}\n content={<div className={\"p-md\"}>{\"Preferences content\"}</div>}\n />\n </SegmentedControl.Tabs>\n )\n};\n\nconst SwitchFromContent = () => {\n const { setActiveTab } = useSegmentedTabs();\n return (\n <div className={\"p-md flex flex-col gap-sm\"}>\n <p>{\"Account content\"}</p>\n <Button\n variant={\"secondary\"}\n text={\"Go to Security\"}\n onClick={() => setActiveTab(\"security\")}\n />\n </div>\n );\n};\n\nexport const TabsProgrammaticSwitch: Story = {\n render: () => (\n <SegmentedControl.Tabs variant={\"dimmed\"}>\n <SegmentedControl.Tabs.Tab\n value={\"account\"}\n trigger={\"Account\"}\n content={<SwitchFromContent />}\n />\n <SegmentedControl.Tabs.Tab\n value={\"security\"}\n trigger={\"Security\"}\n content={<div className={\"p-md\"}>{\"Security content\"}</div>}\n />\n </SegmentedControl.Tabs>\n )\n};\n"],"names":["meta","SegmentedControl","items","itemsWithIcons","Icon","LockIcon","Default","args","value","setValue","useState","VariantLight","VariantDimmed","VariantGhost","WithFormComponent","FullWidth","Disabled","TabsDefault","PersonIcon","SettingsIcon","TabsDimmed","SwitchFromContent","setActiveTab","useSegmentedTabs","Button","TabsProgrammaticSwitch"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type React from "react";
2
+ export interface SegmentedControlTabProps {
3
+ value: string;
4
+ trigger: React.ReactNode;
5
+ icon?: React.ReactElement;
6
+ content: React.ReactNode;
7
+ disabled?: boolean;
8
+ visible?: boolean;
9
+ }
10
+ export declare const SegmentedControlTab: (props: SegmentedControlTabProps) => null;
@@ -0,0 +1,21 @@
1
+ import { useContext, useEffect, useRef } from "react";
2
+ import { generateId } from "../utils.js";
3
+ import { SegmentedControlTabsContext } from "./SegmentedControlTabsContext.js";
4
+ const SegmentedControlTab = (props)=>{
5
+ const { addTab, removeTab } = useContext(SegmentedControlTabsContext);
6
+ const idRef = useRef(generateId());
7
+ useEffect(()=>{
8
+ addTab({
9
+ ...props,
10
+ id: idRef.current,
11
+ visible: props.visible ?? true
12
+ });
13
+ }, [
14
+ props
15
+ ]);
16
+ useEffect(()=>()=>removeTab(idRef.current), []);
17
+ return null;
18
+ };
19
+ export { SegmentedControlTab };
20
+
21
+ //# sourceMappingURL=SegmentedControlTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedControl/SegmentedControlTab.js","sources":["../../src/SegmentedControl/SegmentedControlTab.tsx"],"sourcesContent":["import type React from \"react\";\nimport { useContext, useEffect, useRef } from \"react\";\nimport { generateId } from \"~/utils.js\";\nimport { SegmentedControlTabsContext } from \"./SegmentedControlTabsContext.js\";\n\nexport interface SegmentedControlTabProps {\n value: string;\n trigger: React.ReactNode;\n icon?: React.ReactElement;\n content: React.ReactNode;\n disabled?: boolean;\n visible?: boolean;\n}\n\nexport const SegmentedControlTab = (props: SegmentedControlTabProps) => {\n const { addTab, removeTab } = useContext(SegmentedControlTabsContext);\n const idRef = useRef(generateId());\n\n useEffect(() => {\n addTab({ ...props, id: idRef.current, visible: props.visible ?? true });\n }, [props]);\n\n useEffect(() => {\n return () => removeTab(idRef.current);\n }, []);\n\n return null;\n};\n"],"names":["SegmentedControlTab","props","addTab","removeTab","useContext","SegmentedControlTabsContext","idRef","useRef","generateId","useEffect"],"mappings":";;;AAcO,MAAMA,sBAAsB,CAACC;IAChC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACzC,MAAMC,QAAQC,OAAOC;IAErBC,UAAU;QACNP,OAAO;YAAE,GAAGD,KAAK;YAAE,IAAIK,MAAM,OAAO;YAAE,SAASL,MAAM,OAAO,IAAI;QAAK;IACzE,GAAG;QAACA;KAAM;IAEVQ,UAAU,IACC,IAAMN,UAAUG,MAAM,OAAO,GACrC,EAAE;IAEL,OAAO;AACX"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import type { SegmentedControlPrimitiveProps } from "./primitives/index.js";
3
+ export interface SegmentedControlTabsProps {
4
+ children: React.ReactNode;
5
+ variant?: SegmentedControlPrimitiveProps["variant"];
6
+ defaultValue?: string;
7
+ className?: string;
8
+ }
9
+ export declare const SegmentedControlTabs: (({ children, variant, defaultValue, className }: SegmentedControlTabsProps) => React.JSX.Element) & {
10
+ Tab: (props: import("./SegmentedControlTab.js").SegmentedControlTabProps) => null;
11
+ };
@@ -0,0 +1,71 @@
1
+ import react, { useEffect, useMemo, useState } from "react";
2
+ import { Tabs } from "radix-ui";
3
+ import { cn, withStaticProps } from "../utils.js";
4
+ import { SegmentedControlPrimitive } from "./primitives/index.js";
5
+ import { SegmentedControlTabsContext } from "./SegmentedControlTabsContext.js";
6
+ import { SegmentedControlTab } from "./SegmentedControlTab.js";
7
+ const BaseSegmentedControlTabs = ({ children, variant, defaultValue, className })=>{
8
+ const [tabs, setTabs] = useState([]);
9
+ const [activeTab, setActiveTab] = useState(defaultValue ?? "");
10
+ useEffect(()=>{
11
+ if (!activeTab && tabs.length > 0) setActiveTab(tabs[0].value);
12
+ }, [
13
+ tabs
14
+ ]);
15
+ const items = useMemo(()=>tabs.filter((tab)=>false !== tab.visible).map((tab)=>({
16
+ value: tab.value,
17
+ label: tab.trigger,
18
+ icon: tab.icon,
19
+ disabled: tab.disabled
20
+ })), [
21
+ tabs
22
+ ]);
23
+ const context = useMemo(()=>({
24
+ activeTab,
25
+ setActiveTab,
26
+ addTab (tab) {
27
+ setTabs((prev)=>{
28
+ const idx = prev.findIndex((t)=>t.value === tab.value);
29
+ if (idx > -1) return [
30
+ ...prev.slice(0, idx),
31
+ tab,
32
+ ...prev.slice(idx + 1)
33
+ ];
34
+ return [
35
+ ...prev,
36
+ tab
37
+ ];
38
+ });
39
+ },
40
+ removeTab (id) {
41
+ setTabs((prev)=>prev.filter((t)=>t.id !== id));
42
+ }
43
+ }), [
44
+ activeTab,
45
+ setActiveTab
46
+ ]);
47
+ return /*#__PURE__*/ react.createElement(SegmentedControlTabsContext.Provider, {
48
+ value: context
49
+ }, /*#__PURE__*/ react.createElement(Tabs.Root, {
50
+ value: activeTab,
51
+ onValueChange: setActiveTab,
52
+ className: className
53
+ }, /*#__PURE__*/ react.createElement(SegmentedControlPrimitive, {
54
+ items: items,
55
+ value: activeTab,
56
+ onChange: setActiveTab,
57
+ variant: variant,
58
+ fullWidth: true
59
+ }), tabs.map((tab)=>/*#__PURE__*/ react.createElement(Tabs.Content, {
60
+ key: tab.id,
61
+ value: tab.value,
62
+ forceMount: true,
63
+ className: cn("focus-visible:outline-none", "data-[state=inactive]:hidden")
64
+ }, tab.content)), children));
65
+ };
66
+ const SegmentedControlTabs = withStaticProps(BaseSegmentedControlTabs, {
67
+ Tab: SegmentedControlTab
68
+ });
69
+ export { SegmentedControlTabs };
70
+
71
+ //# sourceMappingURL=SegmentedControlTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedControl/SegmentedControlTabs.js","sources":["../../src/SegmentedControl/SegmentedControlTabs.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { Tabs } from \"radix-ui\";\nimport { cn, withStaticProps } from \"~/utils.js\";\nimport { SegmentedControlPrimitive } from \"./primitives/index.js\";\nimport type { SegmentedControlPrimitiveProps } from \"./primitives/index.js\";\nimport {\n SegmentedControlTabsContext,\n type SegmentedTabItem\n} from \"./SegmentedControlTabsContext.js\";\nimport { SegmentedControlTab } from \"./SegmentedControlTab.js\";\n\nexport interface SegmentedControlTabsProps {\n children: React.ReactNode;\n variant?: SegmentedControlPrimitiveProps[\"variant\"];\n defaultValue?: string;\n className?: string;\n}\n\nconst BaseSegmentedControlTabs = ({\n children,\n variant,\n defaultValue,\n className\n}: SegmentedControlTabsProps) => {\n const [tabs, setTabs] = useState<SegmentedTabItem[]>([]);\n const [activeTab, setActiveTab] = useState(defaultValue ?? \"\");\n\n useEffect(() => {\n if (!activeTab && tabs.length > 0) {\n setActiveTab(tabs[0].value);\n }\n }, [tabs]);\n\n const items = useMemo(\n () =>\n tabs\n .filter(tab => tab.visible !== false)\n .map(tab => ({\n value: tab.value,\n label: tab.trigger,\n icon: tab.icon,\n disabled: tab.disabled\n })),\n [tabs]\n );\n\n const context = useMemo(\n () => ({\n activeTab,\n setActiveTab,\n addTab(tab: SegmentedTabItem) {\n setTabs(prev => {\n const idx = prev.findIndex(t => t.value === tab.value);\n if (idx > -1) {\n return [...prev.slice(0, idx), tab, ...prev.slice(idx + 1)];\n }\n return [...prev, tab];\n });\n },\n removeTab(id: string) {\n setTabs(prev => prev.filter(t => t.id !== id));\n }\n }),\n [activeTab, setActiveTab]\n );\n\n return (\n <SegmentedControlTabsContext.Provider value={context}>\n <Tabs.Root value={activeTab} onValueChange={setActiveTab} className={className}>\n <SegmentedControlPrimitive\n items={items}\n value={activeTab}\n onChange={setActiveTab}\n variant={variant}\n fullWidth\n />\n {tabs.map(tab => (\n <Tabs.Content\n key={tab.id}\n value={tab.value}\n forceMount\n className={cn(\"focus-visible:outline-none\", \"data-[state=inactive]:hidden\")}\n >\n {tab.content}\n </Tabs.Content>\n ))}\n {children}\n </Tabs.Root>\n </SegmentedControlTabsContext.Provider>\n );\n};\n\nexport const SegmentedControlTabs = withStaticProps(BaseSegmentedControlTabs, {\n Tab: SegmentedControlTab\n});\n"],"names":["BaseSegmentedControlTabs","children","variant","defaultValue","className","tabs","setTabs","useState","activeTab","setActiveTab","useEffect","items","useMemo","tab","context","prev","idx","t","id","SegmentedControlTabsContext","Tabs","SegmentedControlPrimitive","cn","SegmentedControlTabs","withStaticProps","SegmentedControlTab"],"mappings":";;;;;;AAkBA,MAAMA,2BAA2B,CAAC,EAC9BC,QAAQ,EACRC,OAAO,EACPC,YAAY,EACZC,SAAS,EACe;IACxB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAA6B,EAAE;IACvD,MAAM,CAACC,WAAWC,aAAa,GAAGF,SAASJ,gBAAgB;IAE3DO,UAAU;QACN,IAAI,CAACF,aAAaH,KAAK,MAAM,GAAG,GAC5BI,aAAaJ,IAAI,CAAC,EAAE,CAAC,KAAK;IAElC,GAAG;QAACA;KAAK;IAET,MAAMM,QAAQC,QACV,IACIP,KACK,MAAM,CAACQ,CAAAA,MAAOA,AAAgB,UAAhBA,IAAI,OAAO,EACzB,GAAG,CAACA,CAAAA,MAAQ;gBACT,OAAOA,IAAI,KAAK;gBAChB,OAAOA,IAAI,OAAO;gBAClB,MAAMA,IAAI,IAAI;gBACd,UAAUA,IAAI,QAAQ;YAC1B,KACR;QAACR;KAAK;IAGV,MAAMS,UAAUF,QACZ,IAAO;YACHJ;YACAC;YACA,QAAOI,GAAqB;gBACxBP,QAAQS,CAAAA;oBACJ,MAAMC,MAAMD,KAAK,SAAS,CAACE,CAAAA,IAAKA,EAAE,KAAK,KAAKJ,IAAI,KAAK;oBACrD,IAAIG,MAAM,IACN,OAAO;2BAAID,KAAK,KAAK,CAAC,GAAGC;wBAAMH;2BAAQE,KAAK,KAAK,CAACC,MAAM;qBAAG;oBAE/D,OAAO;2BAAID;wBAAMF;qBAAI;gBACzB;YACJ;YACA,WAAUK,EAAU;gBAChBZ,QAAQS,CAAAA,OAAQA,KAAK,MAAM,CAACE,CAAAA,IAAKA,EAAE,EAAE,KAAKC;YAC9C;QACJ,IACA;QAACV;QAAWC;KAAa;IAG7B,OAAO,WAAP,GACI,oBAACU,4BAA4B,QAAQ;QAAC,OAAOL;qBACzC,oBAACM,KAAK,IAAI;QAAC,OAAOZ;QAAW,eAAeC;QAAc,WAAWL;qBACjE,oBAACiB,2BAAyBA;QACtB,OAAOV;QACP,OAAOH;QACP,UAAUC;QACV,SAASP;QACT;QAEHG,KAAK,GAAG,CAACQ,CAAAA,MAAAA,WAAAA,GACN,oBAACO,KAAK,OAAO;YACT,KAAKP,IAAI,EAAE;YACX,OAAOA,IAAI,KAAK;YAChB;YACA,WAAWS,GAAG,8BAA8B;WAE3CT,IAAI,OAAO,IAGnBZ;AAIjB;AAEO,MAAMsB,uBAAuBC,gBAAgBxB,0BAA0B;IAC1E,KAAKyB;AACT"}
@@ -0,0 +1,19 @@
1
+ import type React from "react";
2
+ export interface SegmentedTabItem {
3
+ id: string;
4
+ value: string;
5
+ trigger: React.ReactNode;
6
+ icon?: React.ReactElement;
7
+ content: React.ReactNode;
8
+ disabled?: boolean;
9
+ visible?: boolean;
10
+ }
11
+ interface SegmentedControlTabsContextValue {
12
+ addTab: (tab: SegmentedTabItem) => void;
13
+ removeTab: (id: string) => void;
14
+ activeTab: string;
15
+ setActiveTab: (tab: string) => void;
16
+ }
17
+ export declare const SegmentedControlTabsContext: React.Context<SegmentedControlTabsContextValue>;
18
+ export declare const useSegmentedTabs: () => SegmentedControlTabsContextValue;
19
+ export {};
@@ -0,0 +1,11 @@
1
+ import { createContext, useContext } from "react";
2
+ const SegmentedControlTabsContext = createContext({
3
+ addTab: ()=>void 0,
4
+ removeTab: ()=>void 0,
5
+ activeTab: "",
6
+ setActiveTab: ()=>void 0
7
+ });
8
+ const useSegmentedTabs = ()=>useContext(SegmentedControlTabsContext);
9
+ export { SegmentedControlTabsContext, useSegmentedTabs };
10
+
11
+ //# sourceMappingURL=SegmentedControlTabsContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedControl/SegmentedControlTabsContext.js","sources":["../../src/SegmentedControl/SegmentedControlTabsContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type React from \"react\";\n\nexport interface SegmentedTabItem {\n id: string;\n value: string;\n trigger: React.ReactNode;\n icon?: React.ReactElement;\n content: React.ReactNode;\n disabled?: boolean;\n visible?: boolean;\n}\n\ninterface SegmentedControlTabsContextValue {\n addTab: (tab: SegmentedTabItem) => void;\n removeTab: (id: string) => void;\n activeTab: string;\n setActiveTab: (tab: string) => void;\n}\n\nexport const SegmentedControlTabsContext = createContext<SegmentedControlTabsContextValue>({\n addTab: () => undefined,\n removeTab: () => undefined,\n activeTab: \"\",\n setActiveTab: () => undefined\n});\n\nexport const useSegmentedTabs = () => useContext(SegmentedControlTabsContext);\n"],"names":["SegmentedControlTabsContext","createContext","undefined","useSegmentedTabs","useContext"],"mappings":";AAoBO,MAAMA,8BAA8BC,cAAgD;IACvF,QAAQ,IAAMC;IACd,WAAW,IAAMA;IACjB,WAAW;IACX,cAAc,IAAMA;AACxB;AAEO,MAAMC,mBAAmB,IAAMC,WAAWJ"}
@@ -1,3 +1,5 @@
1
1
  export * from "./SegmentedControl.js";
2
+ export * from "./SegmentedControlTabs.js";
3
+ export { useSegmentedTabs } from "./SegmentedControlTabsContext.js";
2
4
  export * from "./primitives/index.js";
3
5
  export * from "./domains/index.js";
@@ -1,3 +1,5 @@
1
1
  export * from "./SegmentedControl.js";
2
+ export * from "./SegmentedControlTabs.js";
2
3
  export * from "./primitives/index.js";
3
4
  export * from "./domains/index.js";
5
+ export { useSegmentedTabs } from "./SegmentedControlTabsContext.js";
@@ -32,6 +32,10 @@ interface SegmentedControlPrimitiveProps {
32
32
  * Disabled state for all items.
33
33
  */
34
34
  disabled?: boolean;
35
+ /**
36
+ * Stretch the control to fill its container width, with buttons sharing space equally.
37
+ */
38
+ fullWidth?: boolean;
35
39
  }
36
40
  interface SegmentedControlVm {
37
41
  items: SegmentedControlItemFormatted[];
@@ -40,7 +44,7 @@ interface SegmentedControlRendererProps extends SegmentedControlPrimitiveProps {
40
44
  items: SegmentedControlItemFormatted[];
41
45
  changeValue: (value: string) => void;
42
46
  }
43
- declare const SegmentedControlRenderer: ({ items, changeValue, value, variant, className, disabled }: SegmentedControlRendererProps) => React.JSX.Element;
47
+ declare const SegmentedControlRenderer: ({ items, changeValue, value, variant, className, disabled, fullWidth }: SegmentedControlRendererProps) => React.JSX.Element;
44
48
  /**
45
49
  * Segmented Control Primitive Component
46
50
  */
@@ -65,11 +65,11 @@ const SegmentedControlItemButton = ({ item, isActive, onValueChange, variant, cl
65
65
  label: String(item.label),
66
66
  color: "neutral-strong"
67
67
  }), item.label);
68
- const SegmentedControlRenderer = ({ items, changeValue, value, variant = "light", className, disabled })=>/*#__PURE__*/ __rspack_external_react.createElement("div", {
68
+ const SegmentedControlRenderer = ({ items, changeValue, value, variant = "light", className, disabled, fullWidth })=>/*#__PURE__*/ __rspack_external_react.createElement("div", {
69
69
  role: "radiogroup",
70
70
  className: cn(segmentedControlRootVariants({
71
71
  variant
72
- }), className)
72
+ }), fullWidth && "flex w-full", className)
73
73
  }, items.map((item)=>/*#__PURE__*/ __rspack_external_react.createElement(SegmentedControlItemButton, {
74
74
  key: item.id,
75
75
  item: {
@@ -78,7 +78,8 @@ const SegmentedControlRenderer = ({ items, changeValue, value, variant = "light"
78
78
  },
79
79
  isActive: value === item.value,
80
80
  onValueChange: changeValue,
81
- variant: variant
81
+ variant: variant,
82
+ className: fullWidth ? "flex-1" : void 0
82
83
  })));
83
84
  const SegmentedControlPrimitive = (props)=>{
84
85
  const { vm, changeValue } = useSegmentedControl(props);
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl/primitives/SegmentedControlPrimitive.js","sources":["../../../src/SegmentedControl/primitives/SegmentedControlPrimitive.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn, cva, type VariantProps } from \"~/utils.js\";\nimport type {\n SegmentedControlItemParams,\n SegmentedControlItemFormatted\n} from \"../domains/index.js\";\nimport { useSegmentedControl } from \"./useSegmentedControl.js\";\nimport { Icon } from \"~/Icon/index.js\";\n\n/**\n * Segmented Control Item Button\n */\nconst segmentedControlItemVariants = cva(\n [\n \"inline-flex items-center justify-center whitespace-nowrap transition-colors cursor-pointer relative rounded-md\",\n \"text-md px-sm-extra py-xs [&>svg]:size-md gap-xs\",\n \"focus-visible:outline-none focus-visible:ring-md focus-visible:ring-primary-dimmed focus-visible:ring-offset-0\",\n \"disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed\"\n ],\n {\n variants: {\n variant: {\n light: [\n \"text-neutral-strong fill-neutral-xstrong\",\n \"data-[state=active]:text-neutral-primary data-[state=active]:fill-neutral-xstrong data-[state=active]:bg-neutral-base/80\",\n \"hover:data-[state=inactive]:text-neutral-primary\",\n \"hover:data-[state=inactive]:bg-neutral-base/80\",\n \"active:data-[state=inactive]:bg-neutral-base/80\"\n ],\n dimmed: [\n \"text-neutral-strong fill-neutral-xstrong\",\n \"data-[state=active]:text-neutral-primary data-[state=active]:fill-neutral-xstrong data-[state=active]:bg-neutral-base/80\",\n \"hover:data-[state=inactive]:text-neutral-primary\",\n \"hover:data-[state=inactive]:bg-neutral-base/80\",\n \"active:data-[state=inactive]:bg-neutral-base/80\"\n ],\n ghost: [\n \"text-neutral-strong fill-neutral-xstrong\",\n \"data-[state=active]:bg-neutral-dark/5\",\n \"hover:data-[state=inactive]:bg-neutral-dark/5\",\n \"active:data-[state=inactive]:bg-neutral-dark/5\"\n ]\n }\n },\n defaultVariants: {\n variant: \"light\"\n }\n }\n);\n\nconst segmentedControlRootVariants = cva(\"inline-flex rounded-md p-xxs gap-xs\", {\n variants: {\n variant: {\n light: \"bg-neutral-light\",\n dimmed: \"bg-neutral-dimmed\",\n ghost: \"\"\n }\n },\n defaultVariants: {\n variant: \"light\"\n }\n});\n\ninterface SegmentedControlItemProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"value\"\n> {\n item: SegmentedControlItemFormatted;\n isActive: boolean;\n onValueChange: (value: string) => void;\n variant?: VariantProps<typeof segmentedControlItemVariants>[\"variant\"];\n}\n\nconst SegmentedControlItemButton = ({\n item,\n isActive,\n onValueChange,\n variant,\n className,\n ...props\n}: SegmentedControlItemProps) => {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={isActive}\n data-state={isActive ? \"active\" : \"inactive\"}\n disabled={item.disabled}\n onClick={() => onValueChange(item.value)}\n className={cn(segmentedControlItemVariants({ variant }), className)}\n {...props}\n >\n {item.icon && (\n <Icon\n icon={item.icon}\n size={\"sm\"}\n label={String(item.label)}\n color={\"neutral-strong\"}\n />\n )}\n {item.label}\n </button>\n );\n};\n\n/**\n * Segmented Control Primitive\n */\ninterface SegmentedControlPrimitiveProps {\n items: SegmentedControlItemParams[];\n /**\n * Callback triggered when the selected value changes.\n */\n onChange?: (value: string) => void;\n /**\n * The selected value.\n */\n value?: string;\n /**\n * Visual style variant.\n */\n variant?: VariantProps<typeof segmentedControlItemVariants>[\"variant\"];\n /**\n * Additional class name.\n */\n className?: string;\n /**\n * Disabled state for all items.\n */\n disabled?: boolean;\n}\n\ninterface SegmentedControlVm {\n items: SegmentedControlItemFormatted[];\n}\n\ninterface SegmentedControlRendererProps extends SegmentedControlPrimitiveProps {\n items: SegmentedControlItemFormatted[];\n changeValue: (value: string) => void;\n}\n\nconst SegmentedControlRenderer = ({\n items,\n changeValue,\n value,\n variant = \"light\",\n className,\n disabled\n}: SegmentedControlRendererProps) => {\n return (\n <div role=\"radiogroup\" className={cn(segmentedControlRootVariants({ variant }), className)}>\n {items.map(item => (\n <SegmentedControlItemButton\n key={item.id}\n item={{ ...item, disabled: disabled || item.disabled }}\n isActive={value === item.value}\n onValueChange={changeValue}\n variant={variant}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Segmented Control Primitive Component\n */\nconst SegmentedControlPrimitive = (props: SegmentedControlPrimitiveProps) => {\n const { vm, changeValue } = useSegmentedControl(props);\n return <SegmentedControlRenderer {...props} items={vm.items} changeValue={changeValue} />;\n};\n\nexport {\n SegmentedControlPrimitive,\n SegmentedControlRenderer,\n type SegmentedControlPrimitiveProps,\n type SegmentedControlVm\n};\n"],"names":["segmentedControlItemVariants","cva","segmentedControlRootVariants","SegmentedControlItemButton","item","isActive","onValueChange","variant","className","props","cn","Icon","String","SegmentedControlRenderer","items","changeValue","value","disabled","SegmentedControlPrimitive","vm","useSegmentedControl"],"mappings":";;;;AAYA,MAAMA,+BAA+BC,IACjC;IACI;IACA;IACA;IACA;CACH,EACD;IACI,UAAU;QACN,SAAS;YACL,OAAO;gBACH;gBACA;gBACA;gBACA;gBACA;aACH;YACD,QAAQ;gBACJ;gBACA;gBACA;gBACA;gBACA;aACH;YACD,OAAO;gBACH;gBACA;gBACA;gBACA;aACH;QACL;IACJ;IACA,iBAAiB;QACb,SAAS;IACb;AACJ;AAGJ,MAAMC,+BAA+BD,IAAI,uCAAuC;IAC5E,UAAU;QACN,SAAS;YACL,OAAO;YACP,QAAQ;YACR,OAAO;QACX;IACJ;IACA,iBAAiB;QACb,SAAS;IACb;AACJ;AAYA,MAAME,6BAA6B,CAAC,EAChCC,IAAI,EACJC,QAAQ,EACRC,aAAa,EACbC,OAAO,EACPC,SAAS,EACT,GAAGC,OACqB,GACjB,WAAP,GACI,sCAAC;QACG,MAAK;QACL,MAAK;QACL,gBAAcJ;QACd,cAAYA,WAAW,WAAW;QAClC,UAAUD,KAAK,QAAQ;QACvB,SAAS,IAAME,cAAcF,KAAK,KAAK;QACvC,WAAWM,GAAGV,6BAA6B;YAAEO;QAAQ,IAAIC;QACxD,GAAGC,KAAK;OAERL,KAAK,IAAI,IAAI,WAAJ,GACN,sCAACO,MAAIA;QACD,MAAMP,KAAK,IAAI;QACf,MAAM;QACN,OAAOQ,OAAOR,KAAK,KAAK;QACxB,OAAO;QAGdA,KAAK,KAAK;AAyCvB,MAAMS,2BAA2B,CAAC,EAC9BC,KAAK,EACLC,WAAW,EACXC,KAAK,EACLT,UAAU,OAAO,EACjBC,SAAS,EACTS,QAAQ,EACoB,GACrB,WAAP,GACI,sCAAC;QAAI,MAAK;QAAa,WAAWP,GAAGR,6BAA6B;YAAEK;QAAQ,IAAIC;OAC3EM,MAAM,GAAG,CAACV,CAAAA,OAAAA,WAAAA,GACP,sCAACD,4BAA0BA;YACvB,KAAKC,KAAK,EAAE;YACZ,MAAM;gBAAE,GAAGA,IAAI;gBAAE,UAAUa,YAAYb,KAAK,QAAQ;YAAC;YACrD,UAAUY,UAAUZ,KAAK,KAAK;YAC9B,eAAeW;YACf,SAASR;;AAU7B,MAAMW,4BAA4B,CAACT;IAC/B,MAAM,EAAEU,EAAE,EAAEJ,WAAW,EAAE,GAAGK,oBAAoBX;IAChD,OAAO,WAAP,GAAO,sCAACI,0BAAwBA;QAAE,GAAGJ,KAAK;QAAE,OAAOU,GAAG,KAAK;QAAE,aAAaJ;;AAC9E"}
1
+ {"version":3,"file":"SegmentedControl/primitives/SegmentedControlPrimitive.js","sources":["../../../src/SegmentedControl/primitives/SegmentedControlPrimitive.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn, cva, type VariantProps } from \"~/utils.js\";\nimport type {\n SegmentedControlItemParams,\n SegmentedControlItemFormatted\n} from \"../domains/index.js\";\nimport { useSegmentedControl } from \"./useSegmentedControl.js\";\nimport { Icon } from \"~/Icon/index.js\";\n\n/**\n * Segmented Control Item Button\n */\nconst segmentedControlItemVariants = cva(\n [\n \"inline-flex items-center justify-center whitespace-nowrap transition-colors cursor-pointer relative rounded-md\",\n \"text-md px-sm-extra py-xs [&>svg]:size-md gap-xs\",\n \"focus-visible:outline-none focus-visible:ring-md focus-visible:ring-primary-dimmed focus-visible:ring-offset-0\",\n \"disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed\"\n ],\n {\n variants: {\n variant: {\n light: [\n \"text-neutral-strong fill-neutral-xstrong\",\n \"data-[state=active]:text-neutral-primary data-[state=active]:fill-neutral-xstrong data-[state=active]:bg-neutral-base/80\",\n \"hover:data-[state=inactive]:text-neutral-primary\",\n \"hover:data-[state=inactive]:bg-neutral-base/80\",\n \"active:data-[state=inactive]:bg-neutral-base/80\"\n ],\n dimmed: [\n \"text-neutral-strong fill-neutral-xstrong\",\n \"data-[state=active]:text-neutral-primary data-[state=active]:fill-neutral-xstrong data-[state=active]:bg-neutral-base/80\",\n \"hover:data-[state=inactive]:text-neutral-primary\",\n \"hover:data-[state=inactive]:bg-neutral-base/80\",\n \"active:data-[state=inactive]:bg-neutral-base/80\"\n ],\n ghost: [\n \"text-neutral-strong fill-neutral-xstrong\",\n \"data-[state=active]:bg-neutral-dark/5\",\n \"hover:data-[state=inactive]:bg-neutral-dark/5\",\n \"active:data-[state=inactive]:bg-neutral-dark/5\"\n ]\n }\n },\n defaultVariants: {\n variant: \"light\"\n }\n }\n);\n\nconst segmentedControlRootVariants = cva(\"inline-flex rounded-md p-xxs gap-xs\", {\n variants: {\n variant: {\n light: \"bg-neutral-light\",\n dimmed: \"bg-neutral-dimmed\",\n ghost: \"\"\n }\n },\n defaultVariants: {\n variant: \"light\"\n }\n});\n\ninterface SegmentedControlItemProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"value\"\n> {\n item: SegmentedControlItemFormatted;\n isActive: boolean;\n onValueChange: (value: string) => void;\n variant?: VariantProps<typeof segmentedControlItemVariants>[\"variant\"];\n}\n\nconst SegmentedControlItemButton = ({\n item,\n isActive,\n onValueChange,\n variant,\n className,\n ...props\n}: SegmentedControlItemProps) => {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={isActive}\n data-state={isActive ? \"active\" : \"inactive\"}\n disabled={item.disabled}\n onClick={() => onValueChange(item.value)}\n className={cn(segmentedControlItemVariants({ variant }), className)}\n {...props}\n >\n {item.icon && (\n <Icon\n icon={item.icon}\n size={\"sm\"}\n label={String(item.label)}\n color={\"neutral-strong\"}\n />\n )}\n {item.label}\n </button>\n );\n};\n\n/**\n * Segmented Control Primitive\n */\ninterface SegmentedControlPrimitiveProps {\n items: SegmentedControlItemParams[];\n /**\n * Callback triggered when the selected value changes.\n */\n onChange?: (value: string) => void;\n /**\n * The selected value.\n */\n value?: string;\n /**\n * Visual style variant.\n */\n variant?: VariantProps<typeof segmentedControlItemVariants>[\"variant\"];\n /**\n * Additional class name.\n */\n className?: string;\n /**\n * Disabled state for all items.\n */\n disabled?: boolean;\n /**\n * Stretch the control to fill its container width, with buttons sharing space equally.\n */\n fullWidth?: boolean;\n}\n\ninterface SegmentedControlVm {\n items: SegmentedControlItemFormatted[];\n}\n\ninterface SegmentedControlRendererProps extends SegmentedControlPrimitiveProps {\n items: SegmentedControlItemFormatted[];\n changeValue: (value: string) => void;\n}\n\nconst SegmentedControlRenderer = ({\n items,\n changeValue,\n value,\n variant = \"light\",\n className,\n disabled,\n fullWidth\n}: SegmentedControlRendererProps) => {\n return (\n <div\n role=\"radiogroup\"\n className={cn(\n segmentedControlRootVariants({ variant }),\n fullWidth && \"flex w-full\",\n className\n )}\n >\n {items.map(item => (\n <SegmentedControlItemButton\n key={item.id}\n item={{ ...item, disabled: disabled || item.disabled }}\n isActive={value === item.value}\n onValueChange={changeValue}\n variant={variant}\n className={fullWidth ? \"flex-1\" : undefined}\n />\n ))}\n </div>\n );\n};\n\n/**\n * Segmented Control Primitive Component\n */\nconst SegmentedControlPrimitive = (props: SegmentedControlPrimitiveProps) => {\n const { vm, changeValue } = useSegmentedControl(props);\n return <SegmentedControlRenderer {...props} items={vm.items} changeValue={changeValue} />;\n};\n\nexport {\n SegmentedControlPrimitive,\n SegmentedControlRenderer,\n type SegmentedControlPrimitiveProps,\n type SegmentedControlVm\n};\n"],"names":["segmentedControlItemVariants","cva","segmentedControlRootVariants","SegmentedControlItemButton","item","isActive","onValueChange","variant","className","props","cn","Icon","String","SegmentedControlRenderer","items","changeValue","value","disabled","fullWidth","undefined","SegmentedControlPrimitive","vm","useSegmentedControl"],"mappings":";;;;AAYA,MAAMA,+BAA+BC,IACjC;IACI;IACA;IACA;IACA;CACH,EACD;IACI,UAAU;QACN,SAAS;YACL,OAAO;gBACH;gBACA;gBACA;gBACA;gBACA;aACH;YACD,QAAQ;gBACJ;gBACA;gBACA;gBACA;gBACA;aACH;YACD,OAAO;gBACH;gBACA;gBACA;gBACA;aACH;QACL;IACJ;IACA,iBAAiB;QACb,SAAS;IACb;AACJ;AAGJ,MAAMC,+BAA+BD,IAAI,uCAAuC;IAC5E,UAAU;QACN,SAAS;YACL,OAAO;YACP,QAAQ;YACR,OAAO;QACX;IACJ;IACA,iBAAiB;QACb,SAAS;IACb;AACJ;AAYA,MAAME,6BAA6B,CAAC,EAChCC,IAAI,EACJC,QAAQ,EACRC,aAAa,EACbC,OAAO,EACPC,SAAS,EACT,GAAGC,OACqB,GACjB,WAAP,GACI,sCAAC;QACG,MAAK;QACL,MAAK;QACL,gBAAcJ;QACd,cAAYA,WAAW,WAAW;QAClC,UAAUD,KAAK,QAAQ;QACvB,SAAS,IAAME,cAAcF,KAAK,KAAK;QACvC,WAAWM,GAAGV,6BAA6B;YAAEO;QAAQ,IAAIC;QACxD,GAAGC,KAAK;OAERL,KAAK,IAAI,IAAI,WAAJ,GACN,sCAACO,MAAIA;QACD,MAAMP,KAAK,IAAI;QACf,MAAM;QACN,OAAOQ,OAAOR,KAAK,KAAK;QACxB,OAAO;QAGdA,KAAK,KAAK;AA6CvB,MAAMS,2BAA2B,CAAC,EAC9BC,KAAK,EACLC,WAAW,EACXC,KAAK,EACLT,UAAU,OAAO,EACjBC,SAAS,EACTS,QAAQ,EACRC,SAAS,EACmB,GACrB,WAAP,GACI,sCAAC;QACG,MAAK;QACL,WAAWR,GACPR,6BAA6B;YAAEK;QAAQ,IACvCW,aAAa,eACbV;OAGHM,MAAM,GAAG,CAACV,CAAAA,OAAAA,WAAAA,GACP,sCAACD,4BAA0BA;YACvB,KAAKC,KAAK,EAAE;YACZ,MAAM;gBAAE,GAAGA,IAAI;gBAAE,UAAUa,YAAYb,KAAK,QAAQ;YAAC;YACrD,UAAUY,UAAUZ,KAAK,KAAK;YAC9B,eAAeW;YACf,SAASR;YACT,WAAWW,YAAY,WAAWC;;AAUtD,MAAMC,4BAA4B,CAACX;IAC/B,MAAM,EAAEY,EAAE,EAAEN,WAAW,EAAE,GAAGO,oBAAoBb;IAChD,OAAO,WAAP,GAAO,sCAACI,0BAAwBA;QAAE,GAAGJ,KAAK;QAAE,OAAOY,GAAG,KAAK;QAAE,aAAaN;;AAC9E"}
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from "@storybook/react-webpack5";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { SegmentedControlPrimitive } from "./SegmentedControlPrimitive.js";
3
3
  declare const meta: Meta<typeof SegmentedControlPrimitive>;
4
4
  export default meta;
@@ -11,3 +11,4 @@ export declare const VariantDimmed: Story;
11
11
  export declare const VariantGhost: Story;
12
12
  export declare const Disabled: Story;
13
13
  export declare const PartiallyDisabled: Story;
14
+ export declare const FullWidth: Story;
@@ -151,7 +151,14 @@ const PartiallyDisabled = {
151
151
  value: "item1"
152
152
  }
153
153
  };
154
+ const FullWidth = {
155
+ args: {
156
+ items: items,
157
+ value: "item1",
158
+ fullWidth: true
159
+ }
160
+ };
154
161
  export default SegmentedControlPrimitive_stories;
155
- export { Default, Disabled, PartiallyDisabled, VariantDimmed, VariantGhost, VariantLight, WithDefaultOption, WithIcons };
162
+ export { Default, Disabled, FullWidth, PartiallyDisabled, VariantDimmed, VariantGhost, VariantLight, WithDefaultOption, WithIcons };
156
163
 
157
164
  //# sourceMappingURL=SegmentedControlPrimitive.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl/primitives/SegmentedControlPrimitive.stories.js","sources":["../../../src/SegmentedControl/primitives/SegmentedControlPrimitive.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { SegmentedControlPrimitive } from \"./SegmentedControlPrimitive.js\";\nimport { Icon } from \"~/Icon/index.js\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/notifications.svg\";\n\nconst meta: Meta<typeof SegmentedControlPrimitive> = {\n title: \"Components/Form Primitives/SegmentedControl\",\n component: SegmentedControlPrimitive,\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return (\n <div className={\"w-full\"}>\n <SegmentedControlPrimitive\n {...args}\n value={value}\n onChange={value => setValue(value)}\n />\n <div className={\"mt-4 text-center\"}>\n Current selected value: <pre>{value}</pre>\n </div>\n </div>\n );\n }\n};\n\nexport default meta;\n\ntype Story = StoryObj<typeof SegmentedControlPrimitive>;\n\nconst items = [\n { label: \"Item 1\", value: \"item1\" },\n { label: \"Item 2\", value: \"item2\" },\n { label: \"Item 3\", value: \"item3\" },\n { label: \"Item 4\", value: \"item4\" }\n];\n\nconst itemsWithIcons = [\n { label: \"Item 1\", value: \"item1\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 2\", value: \"item2\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 3\", value: \"item3\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 4\", value: \"item4\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> }\n];\n\nexport const Default: Story = {\n args: {\n items\n }\n};\n\nexport const WithDefaultOption: Story = {\n args: {\n items,\n value: \"item2\"\n }\n};\n\nexport const WithIcons: Story = {\n args: {\n items: itemsWithIcons,\n value: \"item1\"\n }\n};\n\nexport const VariantLight: Story = {\n args: {\n items,\n value: \"item1\",\n variant: \"light\"\n }\n};\n\nexport const VariantDimmed: Story = {\n args: {\n items,\n value: \"item1\",\n variant: \"dimmed\"\n }\n};\n\nexport const VariantGhost: Story = {\n render: args => {\n const [value, setValue] = useState(args.value || \"item1\");\n return (\n <div className=\"p-md rounded-md bg-neutral-light\">\n <SegmentedControlPrimitive\n {...args}\n items={items}\n value={value}\n onChange={value => setValue(value)}\n variant=\"ghost\"\n />\n </div>\n );\n }\n};\n\nexport const Disabled: Story = {\n args: {\n items,\n value: \"item2\",\n disabled: true\n }\n};\n\nexport const PartiallyDisabled: Story = {\n args: {\n items: [\n { label: \"Item 1\", value: \"item1\" },\n { label: \"Item 2 (disabled)\", value: \"item2\", disabled: true },\n { label: \"Item 3\", value: \"item3\" },\n { label: \"Item 4 (disabled)\", value: \"item4\", disabled: true }\n ],\n value: \"item1\"\n }\n};\n"],"names":["meta","SegmentedControlPrimitive","args","value","setValue","useState","items","itemsWithIcons","Icon","LockIcon","Default","WithDefaultOption","WithIcons","VariantLight","VariantDimmed","VariantGhost","Disabled","PartiallyDisabled"],"mappings":";;;;AAMA,MAAMA,OAA+C;IACjD,OAAO;IACP,WAAWC;IACX,YAAY;QACR,QAAQ;IACZ;IACA,QAAQC,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,KAAK,KAAK;QAC7C,OAAO,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAACD,2BAAyBA;YACrB,GAAGC,IAAI;YACR,OAAOC;YACP,UAAUA,CAAAA,QAASC,SAASD;0BAEhC,oBAAC;YAAI,WAAW;WAAoB,0CACR,oBAAC,aAAKA;IAI9C;AACJ;AAEA,0CAAeH;AAIf,MAAMM,QAAQ;IACV;QAAE,OAAO;QAAU,OAAO;IAAQ;IAClC;QAAE,OAAO;QAAU,OAAO;IAAQ;IAClC;QAAE,OAAO;QAAU,OAAO;IAAQ;IAClC;QAAE,OAAO;QAAU,OAAO;IAAQ;CACrC;AAED,MAAMC,iBAAiB;IACnB;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;IACnF;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACD,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;IACnF;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACD,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;IACnF;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACD,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;CACtF;AAEM,MAAMC,UAAiB;IAC1B,MAAM;QACFJ,OAAAA;IACJ;AACJ;AAEO,MAAMK,oBAA2B;IACpC,MAAM;QACFL,OAAAA;QACA,OAAO;IACX;AACJ;AAEO,MAAMM,YAAmB;IAC5B,MAAM;QACF,OAAOL;QACP,OAAO;IACX;AACJ;AAEO,MAAMM,eAAsB;IAC/B,MAAM;QACFP,OAAAA;QACA,OAAO;QACP,SAAS;IACb;AACJ;AAEO,MAAMQ,gBAAuB;IAChC,MAAM;QACFR,OAAAA;QACA,OAAO;QACP,SAAS;IACb;AACJ;AAEO,MAAMS,eAAsB;IAC/B,QAAQb,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,KAAK,KAAK,IAAI;QACjD,OAAO,WAAP,GACI,oBAAC;YAAI,WAAU;yBACX,oBAACD,2BAAyBA;YACrB,GAAGC,IAAI;YACR,OAAOI;YACP,OAAOH;YACP,UAAUA,CAAAA,QAASC,SAASD;YAC5B,SAAQ;;IAIxB;AACJ;AAEO,MAAMa,WAAkB;IAC3B,MAAM;QACFV,OAAAA;QACA,OAAO;QACP,UAAU;IACd;AACJ;AAEO,MAAMW,oBAA2B;IACpC,MAAM;QACF,OAAO;YACH;gBAAE,OAAO;gBAAU,OAAO;YAAQ;YAClC;gBAAE,OAAO;gBAAqB,OAAO;gBAAS,UAAU;YAAK;YAC7D;gBAAE,OAAO;gBAAU,OAAO;YAAQ;YAClC;gBAAE,OAAO;gBAAqB,OAAO;gBAAS,UAAU;YAAK;SAChE;QACD,OAAO;IACX;AACJ"}
1
+ {"version":3,"file":"SegmentedControl/primitives/SegmentedControlPrimitive.stories.js","sources":["../../../src/SegmentedControl/primitives/SegmentedControlPrimitive.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { SegmentedControlPrimitive } from \"./SegmentedControlPrimitive.js\";\nimport { Icon } from \"~/Icon/index.js\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/notifications.svg\";\n\nconst meta: Meta<typeof SegmentedControlPrimitive> = {\n title: \"Components/Form Primitives/SegmentedControl\",\n component: SegmentedControlPrimitive,\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return (\n <div className={\"w-full\"}>\n <SegmentedControlPrimitive\n {...args}\n value={value}\n onChange={value => setValue(value)}\n />\n <div className={\"mt-4 text-center\"}>\n Current selected value: <pre>{value}</pre>\n </div>\n </div>\n );\n }\n};\n\nexport default meta;\n\ntype Story = StoryObj<typeof SegmentedControlPrimitive>;\n\nconst items = [\n { label: \"Item 1\", value: \"item1\" },\n { label: \"Item 2\", value: \"item2\" },\n { label: \"Item 3\", value: \"item3\" },\n { label: \"Item 4\", value: \"item4\" }\n];\n\nconst itemsWithIcons = [\n { label: \"Item 1\", value: \"item1\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 2\", value: \"item2\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 3\", value: \"item3\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> },\n { label: \"Item 4\", value: \"item4\", icon: <Icon icon={<LockIcon />} label=\"Lock\" /> }\n];\n\nexport const Default: Story = {\n args: {\n items\n }\n};\n\nexport const WithDefaultOption: Story = {\n args: {\n items,\n value: \"item2\"\n }\n};\n\nexport const WithIcons: Story = {\n args: {\n items: itemsWithIcons,\n value: \"item1\"\n }\n};\n\nexport const VariantLight: Story = {\n args: {\n items,\n value: \"item1\",\n variant: \"light\"\n }\n};\n\nexport const VariantDimmed: Story = {\n args: {\n items,\n value: \"item1\",\n variant: \"dimmed\"\n }\n};\n\nexport const VariantGhost: Story = {\n render: args => {\n const [value, setValue] = useState(args.value || \"item1\");\n return (\n <div className=\"p-md rounded-md bg-neutral-light\">\n <SegmentedControlPrimitive\n {...args}\n items={items}\n value={value}\n onChange={value => setValue(value)}\n variant=\"ghost\"\n />\n </div>\n );\n }\n};\n\nexport const Disabled: Story = {\n args: {\n items,\n value: \"item2\",\n disabled: true\n }\n};\n\nexport const PartiallyDisabled: Story = {\n args: {\n items: [\n { label: \"Item 1\", value: \"item1\" },\n { label: \"Item 2 (disabled)\", value: \"item2\", disabled: true },\n { label: \"Item 3\", value: \"item3\" },\n { label: \"Item 4 (disabled)\", value: \"item4\", disabled: true }\n ],\n value: \"item1\"\n }\n};\n\nexport const FullWidth: Story = {\n args: {\n items,\n value: \"item1\",\n fullWidth: true\n }\n};\n"],"names":["meta","SegmentedControlPrimitive","args","value","setValue","useState","items","itemsWithIcons","Icon","LockIcon","Default","WithDefaultOption","WithIcons","VariantLight","VariantDimmed","VariantGhost","Disabled","PartiallyDisabled","FullWidth"],"mappings":";;;;AAMA,MAAMA,OAA+C;IACjD,OAAO;IACP,WAAWC;IACX,YAAY;QACR,QAAQ;IACZ;IACA,QAAQC,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,KAAK,KAAK;QAC7C,OAAO,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAACD,2BAAyBA;YACrB,GAAGC,IAAI;YACR,OAAOC;YACP,UAAUA,CAAAA,QAASC,SAASD;0BAEhC,oBAAC;YAAI,WAAW;WAAoB,0CACR,oBAAC,aAAKA;IAI9C;AACJ;AAEA,0CAAeH;AAIf,MAAMM,QAAQ;IACV;QAAE,OAAO;QAAU,OAAO;IAAQ;IAClC;QAAE,OAAO;QAAU,OAAO;IAAQ;IAClC;QAAE,OAAO;QAAU,OAAO;IAAQ;IAClC;QAAE,OAAO;QAAU,OAAO;IAAQ;CACrC;AAED,MAAMC,iBAAiB;IACnB;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;IACnF;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACD,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;IACnF;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACD,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;IACnF;QAAE,OAAO;QAAU,OAAO;QAAS,MAAM,WAAN,GAAM,oBAACD,MAAIA;YAAC,oBAAM,oBAACC,gBAAQA;YAAK,OAAM;;IAAU;CACtF;AAEM,MAAMC,UAAiB;IAC1B,MAAM;QACFJ,OAAAA;IACJ;AACJ;AAEO,MAAMK,oBAA2B;IACpC,MAAM;QACFL,OAAAA;QACA,OAAO;IACX;AACJ;AAEO,MAAMM,YAAmB;IAC5B,MAAM;QACF,OAAOL;QACP,OAAO;IACX;AACJ;AAEO,MAAMM,eAAsB;IAC/B,MAAM;QACFP,OAAAA;QACA,OAAO;QACP,SAAS;IACb;AACJ;AAEO,MAAMQ,gBAAuB;IAChC,MAAM;QACFR,OAAAA;QACA,OAAO;QACP,SAAS;IACb;AACJ;AAEO,MAAMS,eAAsB;IAC/B,QAAQb,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,KAAK,KAAK,IAAI;QACjD,OAAO,WAAP,GACI,oBAAC;YAAI,WAAU;yBACX,oBAACD,2BAAyBA;YACrB,GAAGC,IAAI;YACR,OAAOI;YACP,OAAOH;YACP,UAAUA,CAAAA,QAASC,SAASD;YAC5B,SAAQ;;IAIxB;AACJ;AAEO,MAAMa,WAAkB;IAC3B,MAAM;QACFV,OAAAA;QACA,OAAO;QACP,UAAU;IACd;AACJ;AAEO,MAAMW,oBAA2B;IACpC,MAAM;QACF,OAAO;YACH;gBAAE,OAAO;gBAAU,OAAO;YAAQ;YAClC;gBAAE,OAAO;gBAAqB,OAAO;gBAAS,UAAU;YAAK;YAC7D;gBAAE,OAAO;gBAAU,OAAO;YAAQ;YAClC;gBAAE,OAAO;gBAAqB,OAAO;gBAAS,UAAU;YAAK;SAChE;QACD,OAAO;IACX;AACJ;AAEO,MAAMC,YAAmB;IAC5B,MAAM;QACFZ,OAAAA;QACA,OAAO;QACP,WAAW;IACf;AACJ"}
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from "@storybook/react-webpack5";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { Select } from "../Select/index.js";
3
3
  declare const meta: Meta<typeof Select>;
4
4
  export default meta;
@@ -1 +1 @@
1
- {"version":3,"file":"Select/Select.stories.js","sources":["../../src/Select/Select.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { Select } from \"~/Select/index.js\";\n\nconst meta: Meta<typeof Select> = {\n title: \"Components/Form/Select\",\n component: Select,\n argTypes: {\n onChange: { action: \"onChange\" },\n onOpenChange: { action: \"onOpenChange\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return <Select {...args} value={value} onChange={setValue} />;\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof Select>;\n\nexport const Default: Story = {\n args: {\n options: [\n { value: \"EST\", label: \"Eastern Standard Time (UTC-5)\" },\n { value: \"CST\", label: \"Central Standard Time (UTC-6)\" },\n { value: \"PST\", label: \"Pacific Standard Time (UTC-8)\" },\n { value: \"GMT\", label: \"Greenwich Mean Time (UTC+0)\" },\n { value: \"CET\", label: \"Central European Time (UTC+1)\" },\n { value: \"CAT\", label: \"Central Africa Time (UTC+2)\" },\n { value: \"IST\", label: \"India Standard Time (UTC+5:30)\" },\n { value: \"CST_CHINA\", label: \"China Standard Time (UTC+8)\" },\n { value: \"JST\", label: \"Japan Standard Time (UTC+9)\" },\n { value: \"AWST\", label: \"Australian Western Standard Time (UTC+8)\" },\n { value: \"NZST\", label: \"New Zealand Standard Time (UTC+12)\" },\n { value: \"FJT\", label: \"Fiji Time (UTC+12)\" },\n { value: \"ART\", label: \"Argentina Time (UTC-3)\" },\n { value: \"BOT\", label: \"Bolivia Time (UTC-4)\" },\n { value: \"BRT\", label: \"Brasilia Time (UTC-3)\" }\n ]\n }\n};\n\nexport const WithLabel: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\"\n }\n};\n\nexport const WithRequiredLabel: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const WithDescription: Story = {\n args: {\n ...Default.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const WithNotes: Story = {\n args: {\n ...Default.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const WithErrors: Story = {\n args: {\n ...Default.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Disabled: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const FullExample: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [value, setValue] = useState(\"\");\n\n return <Select {...args} value={value} onChange={newValue => setValue(newValue)} />;\n },\n args: {\n label: \"Time Zone\",\n description: \"Select your preferred time zone\",\n note: \"This setting will affect how times are displayed throughout the application\",\n required: true,\n disabled: false,\n options: [\n { value: \"EST\", label: \"Eastern Standard Time (UTC-5)\" },\n { value: \"CST\", label: \"Central Standard Time (UTC-6)\" },\n { value: \"PST\", label: \"Pacific Standard Time (UTC-8)\" },\n { value: \"GMT\", label: \"Greenwich Mean Time (UTC+0)\" },\n { value: \"CET\", label: \"Central European Time (UTC+1)\" },\n { value: \"IST\", label: \"India Standard Time (UTC+5:30)\" }\n ]\n }\n};\n"],"names":["meta","Select","args","value","setValue","useState","Default","WithLabel","WithRequiredLabel","WithDescription","WithNotes","WithErrors","Disabled","FullExample","Documentation","newValue"],"mappings":";;AAIA,MAAMA,OAA4B;IAC9B,OAAO;IACP,WAAWC;IACX,UAAU;QACN,UAAU;YAAE,QAAQ;QAAW;QAC/B,cAAc;YAAE,QAAQ;QAAe;QACvC,UAAU;YACN,SAAS;YACT,cAAc;QAClB;IACJ;IACA,YAAY;QACR,QAAQ;IACZ;IACA,QAAQC,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,KAAK,KAAK;QAC7C,OAAO,WAAP,GAAO,oBAACD,QAAMA;YAAE,GAAGC,IAAI;YAAE,OAAOC;YAAO,UAAUC;;IACrD;AACJ;AAEA,uBAAeJ;AAGR,MAAMM,UAAiB;IAC1B,MAAM;QACF,SAAS;YACL;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAO,OAAO;YAAiC;YACxD;gBAAE,OAAO;gBAAa,OAAO;YAA8B;YAC3D;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAQ,OAAO;YAA2C;YACnE;gBAAE,OAAO;gBAAQ,OAAO;YAAqC;YAC7D;gBAAE,OAAO;gBAAO,OAAO;YAAqB;YAC5C;gBAAE,OAAO;gBAAO,OAAO;YAAyB;YAChD;gBAAE,OAAO;gBAAO,OAAO;YAAuB;YAC9C;gBAAE,OAAO;gBAAO,OAAO;YAAwB;SAClD;IACL;AACJ;AAEO,MAAMC,YAAmB;IAC5B,MAAM;QACF,GAAGD,QAAQ,IAAI;QACf,OAAO;IACX;AACJ;AAEO,MAAME,oBAA2B;IACpC,MAAM;QACF,GAAGF,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;IACd;AACJ;AAEO,MAAMG,kBAAyB;IAClC,MAAM;QACF,GAAGH,QAAQ,IAAI;QACf,aAAa;IACjB;AACJ;AAEO,MAAMI,YAAmB;IAC5B,MAAM;QACF,GAAGJ,QAAQ,IAAI;QACf,MAAM;IACV;AACJ;AAEO,MAAMK,aAAoB;IAC7B,MAAM;QACF,GAAGL,QAAQ,IAAI;QACf,YAAY;YACR,SAAS;YACT,SAAS;QACb;IACJ;AACJ;AAEO,MAAMM,WAAkB;IAC3B,MAAM;QACF,GAAGN,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;IACd;AACJ;AAEO,MAAMO,cAAqB;IAC9B,MAAM;QACF,GAAGP,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;QACV,aAAa;QACb,MAAM;QACN,YAAY;YACR,SAAS;YACT,SAAS;QACb;IACJ;AACJ;AAEO,MAAMQ,gBAAuB;IAChC,QAAQZ,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;QAEnC,OAAO,WAAP,GAAO,oBAACJ,QAAMA;YAAE,GAAGC,IAAI;YAAE,OAAOC;YAAO,UAAUY,CAAAA,WAAYX,SAASW;;IAC1E;IACA,MAAM;QACF,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU;QACV,UAAU;QACV,SAAS;YACL;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAiC;SAC3D;IACL;AACJ"}
1
+ {"version":3,"file":"Select/Select.stories.js","sources":["../../src/Select/Select.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { Select } from \"~/Select/index.js\";\n\nconst meta: Meta<typeof Select> = {\n title: \"Components/Form/Select\",\n component: Select,\n argTypes: {\n onChange: { action: \"onChange\" },\n onOpenChange: { action: \"onOpenChange\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return <Select {...args} value={value} onChange={setValue} />;\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof Select>;\n\nexport const Default: Story = {\n args: {\n options: [\n { value: \"EST\", label: \"Eastern Standard Time (UTC-5)\" },\n { value: \"CST\", label: \"Central Standard Time (UTC-6)\" },\n { value: \"PST\", label: \"Pacific Standard Time (UTC-8)\" },\n { value: \"GMT\", label: \"Greenwich Mean Time (UTC+0)\" },\n { value: \"CET\", label: \"Central European Time (UTC+1)\" },\n { value: \"CAT\", label: \"Central Africa Time (UTC+2)\" },\n { value: \"IST\", label: \"India Standard Time (UTC+5:30)\" },\n { value: \"CST_CHINA\", label: \"China Standard Time (UTC+8)\" },\n { value: \"JST\", label: \"Japan Standard Time (UTC+9)\" },\n { value: \"AWST\", label: \"Australian Western Standard Time (UTC+8)\" },\n { value: \"NZST\", label: \"New Zealand Standard Time (UTC+12)\" },\n { value: \"FJT\", label: \"Fiji Time (UTC+12)\" },\n { value: \"ART\", label: \"Argentina Time (UTC-3)\" },\n { value: \"BOT\", label: \"Bolivia Time (UTC-4)\" },\n { value: \"BRT\", label: \"Brasilia Time (UTC-3)\" }\n ]\n }\n};\n\nexport const WithLabel: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\"\n }\n};\n\nexport const WithRequiredLabel: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const WithDescription: Story = {\n args: {\n ...Default.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const WithNotes: Story = {\n args: {\n ...Default.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const WithErrors: Story = {\n args: {\n ...Default.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Disabled: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const FullExample: Story = {\n args: {\n ...Default.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [value, setValue] = useState(\"\");\n\n return <Select {...args} value={value} onChange={newValue => setValue(newValue)} />;\n },\n args: {\n label: \"Time Zone\",\n description: \"Select your preferred time zone\",\n note: \"This setting will affect how times are displayed throughout the application\",\n required: true,\n disabled: false,\n options: [\n { value: \"EST\", label: \"Eastern Standard Time (UTC-5)\" },\n { value: \"CST\", label: \"Central Standard Time (UTC-6)\" },\n { value: \"PST\", label: \"Pacific Standard Time (UTC-8)\" },\n { value: \"GMT\", label: \"Greenwich Mean Time (UTC+0)\" },\n { value: \"CET\", label: \"Central European Time (UTC+1)\" },\n { value: \"IST\", label: \"India Standard Time (UTC+5:30)\" }\n ]\n }\n};\n"],"names":["meta","Select","args","value","setValue","useState","Default","WithLabel","WithRequiredLabel","WithDescription","WithNotes","WithErrors","Disabled","FullExample","Documentation","newValue"],"mappings":";;AAIA,MAAMA,OAA4B;IAC9B,OAAO;IACP,WAAWC;IACX,UAAU;QACN,UAAU;YAAE,QAAQ;QAAW;QAC/B,cAAc;YAAE,QAAQ;QAAe;QACvC,UAAU;YACN,SAAS;YACT,cAAc;QAClB;IACJ;IACA,YAAY;QACR,QAAQ;IACZ;IACA,QAAQC,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,KAAK,KAAK;QAC7C,OAAO,WAAP,GAAO,oBAACD,QAAMA;YAAE,GAAGC,IAAI;YAAE,OAAOC;YAAO,UAAUC;;IACrD;AACJ;AAEA,uBAAeJ;AAGR,MAAMM,UAAiB;IAC1B,MAAM;QACF,SAAS;YACL;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAO,OAAO;YAAiC;YACxD;gBAAE,OAAO;gBAAa,OAAO;YAA8B;YAC3D;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAQ,OAAO;YAA2C;YACnE;gBAAE,OAAO;gBAAQ,OAAO;YAAqC;YAC7D;gBAAE,OAAO;gBAAO,OAAO;YAAqB;YAC5C;gBAAE,OAAO;gBAAO,OAAO;YAAyB;YAChD;gBAAE,OAAO;gBAAO,OAAO;YAAuB;YAC9C;gBAAE,OAAO;gBAAO,OAAO;YAAwB;SAClD;IACL;AACJ;AAEO,MAAMC,YAAmB;IAC5B,MAAM;QACF,GAAGD,QAAQ,IAAI;QACf,OAAO;IACX;AACJ;AAEO,MAAME,oBAA2B;IACpC,MAAM;QACF,GAAGF,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;IACd;AACJ;AAEO,MAAMG,kBAAyB;IAClC,MAAM;QACF,GAAGH,QAAQ,IAAI;QACf,aAAa;IACjB;AACJ;AAEO,MAAMI,YAAmB;IAC5B,MAAM;QACF,GAAGJ,QAAQ,IAAI;QACf,MAAM;IACV;AACJ;AAEO,MAAMK,aAAoB;IAC7B,MAAM;QACF,GAAGL,QAAQ,IAAI;QACf,YAAY;YACR,SAAS;YACT,SAAS;QACb;IACJ;AACJ;AAEO,MAAMM,WAAkB;IAC3B,MAAM;QACF,GAAGN,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;IACd;AACJ;AAEO,MAAMO,cAAqB;IAC9B,MAAM;QACF,GAAGP,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;QACV,aAAa;QACb,MAAM;QACN,YAAY;YACR,SAAS;YACT,SAAS;QACb;IACJ;AACJ;AAEO,MAAMQ,gBAAuB;IAChC,QAAQZ,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;QAEnC,OAAO,WAAP,GAAO,oBAACJ,QAAMA;YAAE,GAAGC,IAAI;YAAE,OAAOC;YAAO,UAAUY,CAAAA,WAAYX,SAASW;;IAC1E;IACA,MAAM;QACF,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU;QACV,UAAU;QACV,SAAS;YACL;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAA8B;YACrD;gBAAE,OAAO;gBAAO,OAAO;YAAgC;YACvD;gBAAE,OAAO;gBAAO,OAAO;YAAiC;SAC3D;IACL;AACJ"}
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from "@storybook/react-webpack5";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { SelectPrimitive } from "./SelectPrimitive.js";
3
3
  declare const meta: Meta<typeof SelectPrimitive>;
4
4
  export default meta;