@webiny/admin-ui 6.4.0-beta.3 → 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 (224) hide show
  1. package/Accordion/Accordion.stories.d.ts +1 -1
  2. package/Accordion/Accordion.stories.js.map +1 -1
  3. package/Alert/Alert.stories.d.ts +1 -1
  4. package/Alert/Alert.stories.js.map +1 -1
  5. package/AutoComplete/AutoComplete.stories.d.ts +1 -1
  6. package/AutoComplete/AutoComplete.stories.js.map +1 -1
  7. package/AutoComplete/primitives/AutoCompletePrimitive.stories.d.ts +1 -1
  8. package/AutoComplete/primitives/AutoCompletePrimitive.stories.js.map +1 -1
  9. package/Avatar/Avatar.stories.d.ts +1 -1
  10. package/Avatar/Avatar.stories.js.map +1 -1
  11. package/Button/Button.stories.d.ts +1 -1
  12. package/Button/Button.stories.js.map +1 -1
  13. package/Button/IconButton.stories.d.ts +1 -1
  14. package/Button/IconButton.stories.js.map +1 -1
  15. package/Card/Card.stories.d.ts +1 -1
  16. package/Card/Card.stories.js.map +1 -1
  17. package/Checkbox/Checkbox.stories.d.ts +1 -1
  18. package/Checkbox/Checkbox.stories.js.map +1 -1
  19. package/Checkbox/primitives/CheckboxPrimitive.stories.d.ts +1 -1
  20. package/Checkbox/primitives/CheckboxPrimitive.stories.js.map +1 -1
  21. package/CheckboxGroup/CheckboxGroup.stories.d.ts +1 -1
  22. package/CheckboxGroup/CheckboxGroup.stories.js.map +1 -1
  23. package/CheckboxGroup/primitives/CheckboxGroupPrimitive.stories.d.ts +1 -1
  24. package/CheckboxGroup/primitives/CheckboxGroupPrimitive.stories.js.map +1 -1
  25. package/CodeEditor/CodeEditor.stories.d.ts +1 -1
  26. package/CodeEditor/CodeEditor.stories.js.map +1 -1
  27. package/CodeEditor/CodeEditorPrimitive.stories.d.ts +1 -1
  28. package/CodeEditor/CodeEditorPrimitive.stories.js.map +1 -1
  29. package/ColorPicker/ColorPicker.stories.d.ts +1 -1
  30. package/ColorPicker/ColorPicker.stories.js.map +1 -1
  31. package/ColorPicker/primitives/ColorPickerPrimitive.stories.d.ts +1 -1
  32. package/ColorPicker/primitives/ColorPickerPrimitive.stories.js.map +1 -1
  33. package/DataTable/DataTable.stories.d.ts +1 -1
  34. package/DataTable/DataTable.stories.js.map +1 -1
  35. package/DatePicker/DatePicker.stories.d.ts +1 -1
  36. package/DatePicker/DatePicker.stories.js.map +1 -1
  37. package/DatePicker/primitives/components/DatePickerTrigger.js +1 -1
  38. package/DatePicker/primitives/components/DatePickerTrigger.js.map +1 -1
  39. package/Dialog/Dialog.stories.d.ts +1 -1
  40. package/Dialog/Dialog.stories.js.map +1 -1
  41. package/DragCursor/DragCursor.d.ts +7 -0
  42. package/DragCursor/DragCursor.js +21 -0
  43. package/DragCursor/DragCursor.js.map +1 -0
  44. package/DragCursor/DragCursor.stories.d.ts +10 -0
  45. package/DragCursor/DragCursor.stories.js +97 -0
  46. package/DragCursor/DragCursor.stories.js.map +1 -0
  47. package/DragCursor/index.d.ts +1 -0
  48. package/DragCursor/index.js +1 -0
  49. package/Drawer/Drawer.stories.d.ts +1 -1
  50. package/Drawer/Drawer.stories.js.map +1 -1
  51. package/DropdownMenu/DropdownMenu.stories.d.ts +1 -1
  52. package/DropdownMenu/DropdownMenu.stories.js.map +1 -1
  53. package/FilePicker/FilePicker.stories.d.ts +1 -1
  54. package/FilePicker/FilePicker.stories.js.map +1 -1
  55. package/FilePicker/primitives/FilePickerPrimitive.stories.d.ts +1 -1
  56. package/FilePicker/primitives/FilePickerPrimitive.stories.js.map +1 -1
  57. package/FillViewport/FillViewport.d.ts +60 -0
  58. package/FillViewport/FillViewport.js +67 -0
  59. package/FillViewport/FillViewport.js.map +1 -0
  60. package/FillViewport/index.d.ts +1 -0
  61. package/FillViewport/index.js +1 -0
  62. package/Grid/Grid.d.ts +1 -1
  63. package/Grid/Grid.js.map +1 -1
  64. package/Grid/Grid.stories.d.ts +1 -1
  65. package/Grid/Grid.stories.js.map +1 -1
  66. package/HeaderBar/HeaderBar.stories.d.ts +1 -1
  67. package/HeaderBar/HeaderBar.stories.js.map +1 -1
  68. package/Heading/Heading.stories.d.ts +1 -1
  69. package/Heading/Heading.stories.js.map +1 -1
  70. package/Icon/Icon.stories.d.ts +1 -1
  71. package/Icon/Icon.stories.js.map +1 -1
  72. package/IconPicker/IconPicker.stories.d.ts +1 -1
  73. package/IconPicker/IconPicker.stories.js.map +1 -1
  74. package/IconPicker/primitives/IconPickerPrimitive.stories.d.ts +1 -1
  75. package/IconPicker/primitives/IconPickerPrimitive.stories.js.map +1 -1
  76. package/Input/Input.stories.d.ts +1 -1
  77. package/Input/Input.stories.js.map +1 -1
  78. package/Input/InputPrimitive.stories.d.ts +1 -1
  79. package/Input/InputPrimitive.stories.js.map +1 -1
  80. package/Label/Label.stories.d.ts +1 -1
  81. package/Label/Label.stories.js.map +1 -1
  82. package/Link/Link.stories.d.ts +1 -1
  83. package/Link/Link.stories.js.map +1 -1
  84. package/List/List.stories.d.ts +1 -1
  85. package/List/List.stories.js.map +1 -1
  86. package/Loader/Loader.stories.d.ts +1 -1
  87. package/Loader/Loader.stories.js.map +1 -1
  88. package/Loader/OverlayLoader.stories.d.ts +1 -1
  89. package/Loader/OverlayLoader.stories.js.map +1 -1
  90. package/MultiAutoComplete/MultiAutoComplete.stories.d.ts +1 -1
  91. package/MultiAutoComplete/MultiAutoComplete.stories.js.map +1 -1
  92. package/MultiAutoComplete/primitives/MultiAutoCompletePrimitive.stories.d.ts +1 -1
  93. package/MultiAutoComplete/primitives/MultiAutoCompletePrimitive.stories.js.map +1 -1
  94. package/MultiFilePicker/MultiFilePicker.stories.d.ts +1 -1
  95. package/MultiFilePicker/MultiFilePicker.stories.js.map +1 -1
  96. package/MultiFilePicker/primitives/MultiFilePickerPrimitive.stories.d.ts +1 -1
  97. package/MultiFilePicker/primitives/MultiFilePickerPrimitive.stories.js.map +1 -1
  98. package/MultiSelect/MultiSelect.stories.d.ts +1 -1
  99. package/MultiSelect/MultiSelect.stories.js.map +1 -1
  100. package/Popover/Popover.stories.d.ts +1 -1
  101. package/Popover/Popover.stories.js.map +1 -1
  102. package/ProgressBar/ProgressBar.stories.d.ts +1 -1
  103. package/ProgressBar/ProgressBar.stories.js.map +1 -1
  104. package/RadioGroup/RadioGroup.stories.d.ts +1 -1
  105. package/RadioGroup/RadioGroup.stories.js.map +1 -1
  106. package/RadioGroup/primitives/RadioGroupPrimitive.stories.d.ts +1 -1
  107. package/RadioGroup/primitives/RadioGroupPrimitive.stories.js.map +1 -1
  108. package/RangeSlider/RangeSlider.stories.d.ts +1 -1
  109. package/RangeSlider/RangeSlider.stories.js.map +1 -1
  110. package/RangeSlider/primitives/RangeSliderPrimitive.stories.d.ts +1 -1
  111. package/RangeSlider/primitives/RangeSliderPrimitive.stories.js.map +1 -1
  112. package/ScrollArea/ScrollArea.stories.d.ts +1 -1
  113. package/ScrollArea/ScrollArea.stories.js.map +1 -1
  114. package/SegmentedControl/SegmentedControl.d.ts +4 -0
  115. package/SegmentedControl/SegmentedControl.js +6 -2
  116. package/SegmentedControl/SegmentedControl.js.map +1 -1
  117. package/SegmentedControl/SegmentedControl.stories.d.ts +5 -1
  118. package/SegmentedControl/SegmentedControl.stories.js +100 -2
  119. package/SegmentedControl/SegmentedControl.stories.js.map +1 -1
  120. package/SegmentedControl/SegmentedControlTab.d.ts +10 -0
  121. package/SegmentedControl/SegmentedControlTab.js +21 -0
  122. package/SegmentedControl/SegmentedControlTab.js.map +1 -0
  123. package/SegmentedControl/SegmentedControlTabs.d.ts +11 -0
  124. package/SegmentedControl/SegmentedControlTabs.js +71 -0
  125. package/SegmentedControl/SegmentedControlTabs.js.map +1 -0
  126. package/SegmentedControl/SegmentedControlTabsContext.d.ts +19 -0
  127. package/SegmentedControl/SegmentedControlTabsContext.js +11 -0
  128. package/SegmentedControl/SegmentedControlTabsContext.js.map +1 -0
  129. package/SegmentedControl/index.d.ts +2 -0
  130. package/SegmentedControl/index.js +2 -0
  131. package/SegmentedControl/primitives/SegmentedControlPrimitive.d.ts +5 -1
  132. package/SegmentedControl/primitives/SegmentedControlPrimitive.js +4 -3
  133. package/SegmentedControl/primitives/SegmentedControlPrimitive.js.map +1 -1
  134. package/SegmentedControl/primitives/SegmentedControlPrimitive.stories.d.ts +2 -1
  135. package/SegmentedControl/primitives/SegmentedControlPrimitive.stories.js +8 -1
  136. package/SegmentedControl/primitives/SegmentedControlPrimitive.stories.js.map +1 -1
  137. package/Select/Select.stories.d.ts +1 -1
  138. package/Select/Select.stories.js.map +1 -1
  139. package/Select/primitives/SelectPrimitive.stories.d.ts +1 -1
  140. package/Select/primitives/SelectPrimitive.stories.js.map +1 -1
  141. package/Separator/Separator.stories.d.ts +1 -1
  142. package/Separator/Separator.stories.js.map +1 -1
  143. package/Sidebar/Sidebar.d.ts +2 -0
  144. package/Sidebar/Sidebar.stories.d.ts +1 -1
  145. package/Sidebar/Sidebar.stories.js.map +1 -1
  146. package/Sidebar/components/items/SidebarMenuItem.d.ts +4 -1
  147. package/Sidebar/components/items/SidebarMenuItem.js +3 -1
  148. package/Sidebar/components/items/SidebarMenuItem.js.map +1 -1
  149. package/Sidebar/components/items/SidebarMenuItemBadge.d.ts +6 -0
  150. package/Sidebar/components/items/SidebarMenuItemBadge.js +7 -0
  151. package/Sidebar/components/items/SidebarMenuItemBadge.js.map +1 -0
  152. package/Sidebar/components/items/SidebarMenuLink.d.ts +3 -1
  153. package/Sidebar/components/items/SidebarMenuLink.js +3 -1
  154. package/Sidebar/components/items/SidebarMenuLink.js.map +1 -1
  155. package/Sidebar/components/items/SidebarMenuRootButton.d.ts +1 -1
  156. package/Sidebar/components/items/SidebarMenuRootButton.js +8 -3
  157. package/Sidebar/components/items/SidebarMenuRootButton.js.map +1 -1
  158. package/Sidebar/components/items/SidebarMenuSubButton.d.ts +1 -1
  159. package/Sidebar/components/items/SidebarMenuSubButton.js +8 -3
  160. package/Sidebar/components/items/SidebarMenuSubButton.js.map +1 -1
  161. package/Sidebar/components/items/SidebarMenuSubItemIndentation.js +2 -1
  162. package/Sidebar/components/items/SidebarMenuSubItemIndentation.js.map +1 -1
  163. package/Skeleton/Skeleton.stories.d.ts +1 -1
  164. package/Skeleton/Skeleton.stories.js.map +1 -1
  165. package/Slider/Slider.stories.d.ts +1 -1
  166. package/Slider/Slider.stories.js.map +1 -1
  167. package/Slider/primitives/SliderPrimitive.stories.d.ts +1 -1
  168. package/Slider/primitives/SliderPrimitive.stories.js.map +1 -1
  169. package/SteppedProgress/SteppedProgress.stories.d.ts +1 -1
  170. package/SteppedProgress/SteppedProgress.stories.js.map +1 -1
  171. package/Switch/Switch.stories.d.ts +1 -1
  172. package/Switch/Switch.stories.js.map +1 -1
  173. package/Switch/primitives/SwitchPrimitive.stories.d.ts +1 -1
  174. package/Switch/primitives/SwitchPrimitive.stories.js.map +1 -1
  175. package/Tabs/Tabs.js.map +1 -1
  176. package/Tabs/Tabs.stories.d.ts +1 -1
  177. package/Tabs/Tabs.stories.js.map +1 -1
  178. package/Tag/Tag.stories.d.ts +1 -1
  179. package/Tag/Tag.stories.js.map +1 -1
  180. package/Tags/Tags.stories.d.ts +1 -1
  181. package/Tags/Tags.stories.js.map +1 -1
  182. package/Tags/primitives/TagsPrimitive.stories.d.ts +1 -1
  183. package/Tags/primitives/TagsPrimitive.stories.js.map +1 -1
  184. package/Text/Text.stories.d.ts +1 -1
  185. package/Text/Text.stories.js.map +1 -1
  186. package/Textarea/Textarea.stories.d.ts +1 -1
  187. package/Textarea/Textarea.stories.js.map +1 -1
  188. package/Textarea/TextareaPrimitive.stories.d.ts +1 -1
  189. package/Textarea/TextareaPrimitive.stories.js.map +1 -1
  190. package/TimeAgo/TimeAgo.stories.d.ts +1 -1
  191. package/TimeAgo/TimeAgo.stories.js.map +1 -1
  192. package/Toast/useToast.stories.d.ts +1 -1
  193. package/Toast/useToast.stories.js.map +1 -1
  194. package/Toggle/Toggle.stories.d.ts +1 -1
  195. package/Toggle/Toggle.stories.js.map +1 -1
  196. package/Toggle/primitives/TogglePrimitive.stories.d.ts +1 -1
  197. package/Toggle/primitives/TogglePrimitive.stories.js.map +1 -1
  198. package/ToggleGroup/ToggleGroup.stories.d.ts +1 -1
  199. package/ToggleGroup/ToggleGroup.stories.js.map +1 -1
  200. package/ToggleGroup/domains/ToggleGroupItem.d.ts +3 -0
  201. package/ToggleGroup/domains/ToggleGroupItem.js +6 -1
  202. package/ToggleGroup/domains/ToggleGroupItem.js.map +1 -1
  203. package/ToggleGroup/domains/ToggleGroupItemFormatted.d.ts +1 -0
  204. package/ToggleGroup/domains/ToggleGroupItemFormatter.js +2 -1
  205. package/ToggleGroup/domains/ToggleGroupItemFormatter.js.map +1 -1
  206. package/ToggleGroup/domains/ToggleGroupItemParams.d.ts +1 -0
  207. package/ToggleGroup/primitives/ToggleGroupPrimitive.js +11 -2
  208. package/ToggleGroup/primitives/ToggleGroupPrimitive.js.map +1 -1
  209. package/ToggleGroup/primitives/ToggleGroupPrimitive.stories.d.ts +1 -1
  210. package/ToggleGroup/primitives/ToggleGroupPrimitive.stories.js.map +1 -1
  211. package/Tooltip/Tooltip.stories.d.ts +1 -1
  212. package/Tooltip/Tooltip.stories.js.map +1 -1
  213. package/Tree/Tree.stories.d.ts +1 -1
  214. package/Tree/Tree.stories.js.map +1 -1
  215. package/Widget/Widget.stories.d.ts +1 -1
  216. package/Widget/Widget.stories.js.map +1 -1
  217. package/exports/admin/ui.d.ts +1 -0
  218. package/exports/admin/ui.js +1 -0
  219. package/index.d.ts +2 -0
  220. package/index.js +2 -0
  221. package/package.json +22 -23
  222. package/theme.css +3 -1
  223. package/utils.js +1 -0
  224. package/utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup/RadioGroup.stories.js","sources":["../../src/RadioGroup/RadioGroup.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { RadioGroup } from \"./RadioGroup.js\";\n\nconst meta: Meta<typeof RadioGroup> = {\n title: \"Components/Form/RadioGroup\",\n component: RadioGroup,\n argTypes: {\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 <RadioGroup {...args} value={value} onChange={value => setValue(value)} />;\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof RadioGroup>;\n\nexport const Default: Story = {\n args: {\n items: [\n {\n label: \"Value 1\",\n value: \"value-1\"\n },\n {\n label: \"Value 2\",\n value: \"value-2\"\n },\n {\n label: \"Value 3\",\n value: \"value-3\"\n }\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 items: [\n {\n label: \"Value 1\",\n value: \"value-1\",\n disabled: true\n },\n {\n label: \"Value 2\",\n value: \"value-2\",\n disabled: true\n },\n {\n label: \"Value 3\",\n value: \"value-3\",\n disabled: true\n }\n ]\n }\n};\n\nexport const FullExample: Story = {\n args: {\n ...Default.args,\n label: \"Select which deploy option do you prefer\",\n required: true,\n description:\n \"Deployment option is simply a way of parsing the data based on your database settings.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"You must select at least one option!\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [value, setValue] = useState(\"\");\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n const handleValidation = () => {\n if (args.required && !value) {\n setValidation({ isValid: false, message: \"This field is required\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n };\n\n return (\n <RadioGroup\n {...args}\n value={value}\n validation={validation}\n onChange={newValue => setValue(newValue)}\n onBlur={handleValidation}\n />\n );\n },\n args: {\n label: \"Deployment Option\",\n description: \"Choose your preferred deployment method\",\n note: \"This setting will determine how your application is deployed\",\n required: true,\n disabled: false,\n items: [\n {\n label: \"Automatic Deployment\",\n value: \"automatic\"\n },\n {\n label: \"Manual Deployment\",\n value: \"manual\"\n },\n {\n label: \"Scheduled Deployment\",\n value: \"scheduled\"\n }\n ]\n }\n};\n"],"names":["meta","RadioGroup","args","value","setValue","useState","Default","WithLabel","WithRequiredLabel","WithDescription","WithNotes","WithErrors","Disabled","FullExample","Documentation","validation","setValidation","handleValidation","newValue"],"mappings":";;AAIA,MAAMA,OAAgC;IAClC,OAAO;IACP,WAAWC;IACX,UAAU;QACN,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,YAAUA;YAAE,GAAGC,IAAI;YAAE,OAAOC;YAAO,UAAUA,CAAAA,QAASC,SAASD;;IAC3E;AACJ;AAEA,2BAAeH;AAGR,MAAMM,UAAiB;IAC1B,MAAM;QACF,OAAO;YACH;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;SACH;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;QACV,OAAO;YACH;gBACI,OAAO;gBACP,OAAO;gBACP,UAAU;YACd;YACA;gBACI,OAAO;gBACP,OAAO;gBACP,UAAU;YACd;YACA;gBACI,OAAO;gBACP,OAAO;gBACP,UAAU;YACd;SACH;IACL;AACJ;AAEO,MAAMO,cAAqB;IAC9B,MAAM;QACF,GAAGP,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;QACV,aACI;QACJ,MAAM;QACN,YAAY;YACR,SAAS;YACT,SAAS;QACb;IACJ;AACJ;AAEO,MAAMQ,gBAAuB;IAChC,QAAQZ,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;QACnC,MAAM,CAACU,YAAYC,cAAc,GAAGX,SAAS;YAAE,SAAS;YAAM,SAAS;QAAG;QAE1E,MAAMY,mBAAmB;YACjBf,KAAK,QAAQ,IAAI,CAACC,QAClBa,cAAc;gBAAE,SAAS;gBAAO,SAAS;YAAyB,KAElEA,cAAc;gBAAE,SAAS;gBAAM,SAAS;YAAG;QAEnD;QAEA,OAAO,WAAP,GACI,oBAACf,YAAUA;YACN,GAAGC,IAAI;YACR,OAAOC;YACP,YAAYY;YACZ,UAAUG,CAAAA,WAAYd,SAASc;YAC/B,QAAQD;;IAGpB;IACA,MAAM;QACF,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU;QACV,UAAU;QACV,OAAO;YACH;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;SACH;IACL;AACJ"}
1
+ {"version":3,"file":"RadioGroup/RadioGroup.stories.js","sources":["../../src/RadioGroup/RadioGroup.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { RadioGroup } from \"./RadioGroup.js\";\n\nconst meta: Meta<typeof RadioGroup> = {\n title: \"Components/Form/RadioGroup\",\n component: RadioGroup,\n argTypes: {\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 <RadioGroup {...args} value={value} onChange={value => setValue(value)} />;\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof RadioGroup>;\n\nexport const Default: Story = {\n args: {\n items: [\n {\n label: \"Value 1\",\n value: \"value-1\"\n },\n {\n label: \"Value 2\",\n value: \"value-2\"\n },\n {\n label: \"Value 3\",\n value: \"value-3\"\n }\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 items: [\n {\n label: \"Value 1\",\n value: \"value-1\",\n disabled: true\n },\n {\n label: \"Value 2\",\n value: \"value-2\",\n disabled: true\n },\n {\n label: \"Value 3\",\n value: \"value-3\",\n disabled: true\n }\n ]\n }\n};\n\nexport const FullExample: Story = {\n args: {\n ...Default.args,\n label: \"Select which deploy option do you prefer\",\n required: true,\n description:\n \"Deployment option is simply a way of parsing the data based on your database settings.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"You must select at least one option!\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [value, setValue] = useState(\"\");\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n const handleValidation = () => {\n if (args.required && !value) {\n setValidation({ isValid: false, message: \"This field is required\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n };\n\n return (\n <RadioGroup\n {...args}\n value={value}\n validation={validation}\n onChange={newValue => setValue(newValue)}\n onBlur={handleValidation}\n />\n );\n },\n args: {\n label: \"Deployment Option\",\n description: \"Choose your preferred deployment method\",\n note: \"This setting will determine how your application is deployed\",\n required: true,\n disabled: false,\n items: [\n {\n label: \"Automatic Deployment\",\n value: \"automatic\"\n },\n {\n label: \"Manual Deployment\",\n value: \"manual\"\n },\n {\n label: \"Scheduled Deployment\",\n value: \"scheduled\"\n }\n ]\n }\n};\n"],"names":["meta","RadioGroup","args","value","setValue","useState","Default","WithLabel","WithRequiredLabel","WithDescription","WithNotes","WithErrors","Disabled","FullExample","Documentation","validation","setValidation","handleValidation","newValue"],"mappings":";;AAIA,MAAMA,OAAgC;IAClC,OAAO;IACP,WAAWC;IACX,UAAU;QACN,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,YAAUA;YAAE,GAAGC,IAAI;YAAE,OAAOC;YAAO,UAAUA,CAAAA,QAASC,SAASD;;IAC3E;AACJ;AAEA,2BAAeH;AAGR,MAAMM,UAAiB;IAC1B,MAAM;QACF,OAAO;YACH;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;SACH;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;QACV,OAAO;YACH;gBACI,OAAO;gBACP,OAAO;gBACP,UAAU;YACd;YACA;gBACI,OAAO;gBACP,OAAO;gBACP,UAAU;YACd;YACA;gBACI,OAAO;gBACP,OAAO;gBACP,UAAU;YACd;SACH;IACL;AACJ;AAEO,MAAMO,cAAqB;IAC9B,MAAM;QACF,GAAGP,QAAQ,IAAI;QACf,OAAO;QACP,UAAU;QACV,aACI;QACJ,MAAM;QACN,YAAY;YACR,SAAS;YACT,SAAS;QACb;IACJ;AACJ;AAEO,MAAMQ,gBAAuB;IAChC,QAAQZ,CAAAA;QACJ,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;QACnC,MAAM,CAACU,YAAYC,cAAc,GAAGX,SAAS;YAAE,SAAS;YAAM,SAAS;QAAG;QAE1E,MAAMY,mBAAmB;YACjBf,KAAK,QAAQ,IAAI,CAACC,QAClBa,cAAc;gBAAE,SAAS;gBAAO,SAAS;YAAyB,KAElEA,cAAc;gBAAE,SAAS;gBAAM,SAAS;YAAG;QAEnD;QAEA,OAAO,WAAP,GACI,oBAACf,YAAUA;YACN,GAAGC,IAAI;YACR,OAAOC;YACP,YAAYY;YACZ,UAAUG,CAAAA,WAAYd,SAASc;YAC/B,QAAQD;;IAGpB;IACA,MAAM;QACF,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU;QACV,UAAU;QACV,OAAO;YACH;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;YACA;gBACI,OAAO;gBACP,OAAO;YACX;SACH;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 { RadioGroupPrimitive } from "./RadioGroupPrimitive.js";
3
3
  declare const meta: Meta<typeof RadioGroupPrimitive>;
4
4
  export default meta;
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup/primitives/RadioGroupPrimitive.stories.js","sources":["../../../src/RadioGroup/primitives/RadioGroupPrimitive.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { RadioGroupPrimitive } from \"./RadioGroupPrimitive.js\";\nimport { Text } from \"~/Text/index.js\";\nimport { Button } from \"~/Button/index.js\";\n\nconst meta: Meta<typeof RadioGroupPrimitive> = {\n title: \"Components/Form Primitives/RadioGroup\",\n component: RadioGroupPrimitive,\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return (\n <div className={\"w-full\"}>\n <RadioGroupPrimitive {...args} value={value} onChange={value => setValue(value)} />\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 RadioGroupPrimitive>;\n\nexport const Default: Story = {\n args: {\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\"\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const Disabled: Story = {\n args: {\n ...Default.args,\n value: \"value-2\",\n disabled: true,\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\"\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const WithDefaultOption: Story = {\n args: {\n ...Default.args,\n value: \"value-2\"\n }\n};\n\nexport const WithDisabledOption: Story = {\n args: {\n ...Default.args,\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\",\n disabled: true\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const WithDefaultDisabledOption: Story = {\n args: {\n ...Default.args,\n value: \"value-2\",\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\",\n disabled: true\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const WithLongOption: Story = {\n args: {\n ...Default.args,\n items: [\n {\n value: \"value-1\",\n label: \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer fringilla magna vel massa suscipit mollis. Nunc dui felis, iaculis id tortor ut, hendrerit pulvinar felis.\"\n },\n {\n value: \"value-2\",\n label: \" Pellentesque erat ipsum, posuere dapibus diam id, accumsan sagittis mi. In eu nibh ut nunc ultricies placerat.\",\n disabled: true\n },\n {\n value: \"value-3\",\n label: \"Integer a hendrerit dui. Sed tincidunt vel nibh a finibus.\"\n }\n ]\n }\n};\n\nexport const WithComplexOptions: Story = {\n args: {\n ...Default.args,\n items: [\n {\n id: \"value-1\",\n value: \"value-1\",\n label: (\n <div>\n <div>{\"Value 1\"}</div>\n <Text size={\"sm\"}>{\"Option description 1\"}</Text>\n </div>\n )\n },\n {\n id: \"value-2\",\n value: \"value-2\",\n label: (\n <div>\n <div>{\"Value 2\"}</div>\n <Text size={\"sm\"}>{\"Option description 2\"}</Text>\n </div>\n )\n },\n {\n id: \"value-3\",\n value: \"value-3\",\n label: (\n <div>\n <div>{\"Value 3\"}</div>\n <Text size={\"sm\"}>{\"Option description 3\"}</Text>\n </div>\n )\n }\n ]\n }\n};\n\nexport const WithExternalValueControl: Story = {\n args: {\n value: \"value-2\",\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\"\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return (\n <div className={\"w-full\"}>\n <div>\n <RadioGroupPrimitive\n {...args}\n value={value}\n onChange={value => setValue(value)}\n />\n </div>\n <div className={\"mt-4 text-center\"}>\n <Button onClick={() => setValue(args.value)} text={\"Reset\"} />\n </div>\n <div className={\"mt-4 text-center\"}>\n Current selected value: <pre>{value}</pre>\n </div>\n </div>\n );\n }\n};\n"],"names":["meta","RadioGroupPrimitive","args","value","setValue","useState","Default","Disabled","WithDefaultOption","WithDisabledOption","WithDefaultDisabledOption","WithLongOption","WithComplexOptions","Text","WithExternalValueControl","Button"],"mappings":"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"}
1
+ {"version":3,"file":"RadioGroup/primitives/RadioGroupPrimitive.stories.js","sources":["../../../src/RadioGroup/primitives/RadioGroupPrimitive.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { RadioGroupPrimitive } from \"./RadioGroupPrimitive.js\";\nimport { Text } from \"~/Text/index.js\";\nimport { Button } from \"~/Button/index.js\";\n\nconst meta: Meta<typeof RadioGroupPrimitive> = {\n title: \"Components/Form Primitives/RadioGroup\",\n component: RadioGroupPrimitive,\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return (\n <div className={\"w-full\"}>\n <RadioGroupPrimitive {...args} value={value} onChange={value => setValue(value)} />\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 RadioGroupPrimitive>;\n\nexport const Default: Story = {\n args: {\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\"\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const Disabled: Story = {\n args: {\n ...Default.args,\n value: \"value-2\",\n disabled: true,\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\"\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const WithDefaultOption: Story = {\n args: {\n ...Default.args,\n value: \"value-2\"\n }\n};\n\nexport const WithDisabledOption: Story = {\n args: {\n ...Default.args,\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\",\n disabled: true\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const WithDefaultDisabledOption: Story = {\n args: {\n ...Default.args,\n value: \"value-2\",\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\",\n disabled: true\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n }\n};\n\nexport const WithLongOption: Story = {\n args: {\n ...Default.args,\n items: [\n {\n value: \"value-1\",\n label: \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer fringilla magna vel massa suscipit mollis. Nunc dui felis, iaculis id tortor ut, hendrerit pulvinar felis.\"\n },\n {\n value: \"value-2\",\n label: \" Pellentesque erat ipsum, posuere dapibus diam id, accumsan sagittis mi. In eu nibh ut nunc ultricies placerat.\",\n disabled: true\n },\n {\n value: \"value-3\",\n label: \"Integer a hendrerit dui. Sed tincidunt vel nibh a finibus.\"\n }\n ]\n }\n};\n\nexport const WithComplexOptions: Story = {\n args: {\n ...Default.args,\n items: [\n {\n id: \"value-1\",\n value: \"value-1\",\n label: (\n <div>\n <div>{\"Value 1\"}</div>\n <Text size={\"sm\"}>{\"Option description 1\"}</Text>\n </div>\n )\n },\n {\n id: \"value-2\",\n value: \"value-2\",\n label: (\n <div>\n <div>{\"Value 2\"}</div>\n <Text size={\"sm\"}>{\"Option description 2\"}</Text>\n </div>\n )\n },\n {\n id: \"value-3\",\n value: \"value-3\",\n label: (\n <div>\n <div>{\"Value 3\"}</div>\n <Text size={\"sm\"}>{\"Option description 3\"}</Text>\n </div>\n )\n }\n ]\n }\n};\n\nexport const WithExternalValueControl: Story = {\n args: {\n value: \"value-2\",\n items: [\n {\n value: \"value-1\",\n label: \"Value 1\"\n },\n {\n value: \"value-2\",\n label: \"Value 2\"\n },\n {\n value: \"value-3\",\n label: \"Value 3\"\n }\n ]\n },\n render: args => {\n const [value, setValue] = useState(args.value);\n return (\n <div className={\"w-full\"}>\n <div>\n <RadioGroupPrimitive\n {...args}\n value={value}\n onChange={value => setValue(value)}\n />\n </div>\n <div className={\"mt-4 text-center\"}>\n <Button onClick={() => setValue(args.value)} text={\"Reset\"} />\n </div>\n <div className={\"mt-4 text-center\"}>\n Current selected value: <pre>{value}</pre>\n </div>\n </div>\n );\n }\n};\n"],"names":["meta","RadioGroupPrimitive","args","value","setValue","useState","Default","Disabled","WithDefaultOption","WithDisabledOption","WithDefaultDisabledOption","WithLongOption","WithComplexOptions","Text","WithExternalValueControl","Button"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from "@storybook/react-webpack5";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { RangeSlider } from "./RangeSlider.js";
3
3
  declare const meta: Meta<typeof RangeSlider>;
4
4
  export default meta;
@@ -1 +1 @@
1
- {"version":3,"file":"RangeSlider/RangeSlider.stories.js","sources":["../../src/RangeSlider/RangeSlider.stories.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { RangeSlider } from \"./RangeSlider.js\";\n\nconst meta: Meta<typeof RangeSlider> = {\n title: \"Components/Form/RangeSlider\",\n component: RangeSlider,\n argTypes: {\n onValuesChange: { action: \"onValuesChange\" },\n onValuesCommit: { action: \"onValuesCommit\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [values, setValues] = useState(args.values);\n return (\n <RangeSlider {...args} values={values} onValuesChange={values => setValues(values)} />\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof RangeSlider>;\n\nexport const Default: Story = {\n args: {\n label: \"Any field label\"\n }\n};\n\nexport const WithLabelRequired: Story = {\n args: {\n ...Default.args,\n required: true\n }\n};\n\nexport const WithDescription: Story = {\n args: {\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const WithNotes: Story = {\n args: {\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const WithErrors: Story = {\n args: {\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Disabled: Story = {\n 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 [values, setValues] = useState(args.values || [25, 75]);\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n // Update values when args.values changes\n useEffect(() => {\n setValues(args.values || [25, 75]);\n }, [args.values]);\n\n const handleChange = (newValues: number[]) => {\n setValues(newValues);\n\n if (args.required && newValues[0] === 0 && newValues[1] === 0) {\n setValidation({ isValid: false, message: \"Please select a range\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n };\n\n // Validate on required change or values change\n useEffect(() => {\n if (args.required && values[0] === 0 && values[1] === 0) {\n setValidation({ isValid: false, message: \"Please select a range\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n }, [args.required, values]);\n\n return (\n <RangeSlider\n {...args}\n values={values}\n onValuesChange={handleChange}\n validation={validation}\n required={args.required}\n showTooltip={args.showTooltip}\n transformValue={args.transformValue}\n />\n );\n },\n args: {\n label: \"Price Range\",\n required: true,\n disabled: false,\n description: \"Select the minimum and maximum price range\",\n note: \"Note: The selected range will filter available products\",\n min: 0,\n max: 100,\n step: 1,\n values: [25, 75],\n showTooltip: true,\n transformValue: (value: number) => `$${value}`,\n validation: undefined\n },\n argTypes: {\n label: {\n description: \"Label text for the range slider\",\n control: \"text\"\n },\n required: {\n description: \"Makes the field required when set to true\",\n control: \"boolean\"\n },\n disabled: {\n description: \"Disables the range slider when set to true\",\n control: \"boolean\"\n },\n description: {\n description: \"Additional description text below the field\",\n control: \"text\"\n },\n note: {\n description: \"Additional note text below the field\",\n control: \"text\"\n },\n min: {\n description: \"Minimum value for the range slider\",\n control: \"number\"\n },\n max: {\n description: \"Maximum value for the range slider\",\n control: \"number\"\n },\n step: {\n description: \"Step increment for the range slider\",\n control: \"number\"\n },\n values: {\n description: \"Current values of the range slider [min, max]\",\n control: \"object\"\n },\n showTooltip: {\n description: \"Whether to show tooltips with the current values\",\n control: \"boolean\",\n defaultValue: true\n },\n transformValue: {\n description:\n \"Function to transform the numeric values to display text. Please refer to the example code for details on usage.\"\n },\n validation: {\n description:\n \"Object containing validation state and message. Please refer to the example code for details on usage.\"\n },\n onValuesChange: {\n description: \"Function called when the range slider values change\"\n },\n onValuesCommit: {\n description: \"Function called when the range slider values are committed (on release)\"\n }\n }\n};\n"],"names":["meta","RangeSlider","args","values","setValues","useState","Default","WithLabelRequired","WithDescription","WithNotes","WithErrors","Disabled","FullExample","Documentation","validation","setValidation","useEffect","handleChange","newValues","value","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"RangeSlider/RangeSlider.stories.js","sources":["../../src/RangeSlider/RangeSlider.stories.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { RangeSlider } from \"./RangeSlider.js\";\n\nconst meta: Meta<typeof RangeSlider> = {\n title: \"Components/Form/RangeSlider\",\n component: RangeSlider,\n argTypes: {\n onValuesChange: { action: \"onValuesChange\" },\n onValuesCommit: { action: \"onValuesCommit\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [values, setValues] = useState(args.values);\n return (\n <RangeSlider {...args} values={values} onValuesChange={values => setValues(values)} />\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof RangeSlider>;\n\nexport const Default: Story = {\n args: {\n label: \"Any field label\"\n }\n};\n\nexport const WithLabelRequired: Story = {\n args: {\n ...Default.args,\n required: true\n }\n};\n\nexport const WithDescription: Story = {\n args: {\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const WithNotes: Story = {\n args: {\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const WithErrors: Story = {\n args: {\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Disabled: Story = {\n 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 [values, setValues] = useState(args.values || [25, 75]);\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n // Update values when args.values changes\n useEffect(() => {\n setValues(args.values || [25, 75]);\n }, [args.values]);\n\n const handleChange = (newValues: number[]) => {\n setValues(newValues);\n\n if (args.required && newValues[0] === 0 && newValues[1] === 0) {\n setValidation({ isValid: false, message: \"Please select a range\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n };\n\n // Validate on required change or values change\n useEffect(() => {\n if (args.required && values[0] === 0 && values[1] === 0) {\n setValidation({ isValid: false, message: \"Please select a range\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n }, [args.required, values]);\n\n return (\n <RangeSlider\n {...args}\n values={values}\n onValuesChange={handleChange}\n validation={validation}\n required={args.required}\n showTooltip={args.showTooltip}\n transformValue={args.transformValue}\n />\n );\n },\n args: {\n label: \"Price Range\",\n required: true,\n disabled: false,\n description: \"Select the minimum and maximum price range\",\n note: \"Note: The selected range will filter available products\",\n min: 0,\n max: 100,\n step: 1,\n values: [25, 75],\n showTooltip: true,\n transformValue: (value: number) => `$${value}`,\n validation: undefined\n },\n argTypes: {\n label: {\n description: \"Label text for the range slider\",\n control: \"text\"\n },\n required: {\n description: \"Makes the field required when set to true\",\n control: \"boolean\"\n },\n disabled: {\n description: \"Disables the range slider when set to true\",\n control: \"boolean\"\n },\n description: {\n description: \"Additional description text below the field\",\n control: \"text\"\n },\n note: {\n description: \"Additional note text below the field\",\n control: \"text\"\n },\n min: {\n description: \"Minimum value for the range slider\",\n control: \"number\"\n },\n max: {\n description: \"Maximum value for the range slider\",\n control: \"number\"\n },\n step: {\n description: \"Step increment for the range slider\",\n control: \"number\"\n },\n values: {\n description: \"Current values of the range slider [min, max]\",\n control: \"object\"\n },\n showTooltip: {\n description: \"Whether to show tooltips with the current values\",\n control: \"boolean\",\n defaultValue: true\n },\n transformValue: {\n description:\n \"Function to transform the numeric values to display text. Please refer to the example code for details on usage.\"\n },\n validation: {\n description:\n \"Object containing validation state and message. Please refer to the example code for details on usage.\"\n },\n onValuesChange: {\n description: \"Function called when the range slider values change\"\n },\n onValuesCommit: {\n description: \"Function called when the range slider values are committed (on release)\"\n }\n }\n};\n"],"names":["meta","RangeSlider","args","values","setValues","useState","Default","WithLabelRequired","WithDescription","WithNotes","WithErrors","Disabled","FullExample","Documentation","validation","setValidation","useEffect","handleChange","newValues","value","undefined"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Meta, StoryObj } from "@storybook/react-webpack5";
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { RangeSliderPrimitive } from "./RangeSliderPrimitive.js";
3
3
  declare const meta: Meta<typeof RangeSliderPrimitive>;
4
4
  export default meta;
@@ -1 +1 @@
1
- {"version":3,"file":"RangeSlider/primitives/RangeSliderPrimitive.stories.js","sources":["../../../src/RangeSlider/primitives/RangeSliderPrimitive.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { RangeSliderPrimitive } from \"./RangeSliderPrimitive.js\";\nimport { Button } from \"~/Button/index.js\";\n\nconst meta: Meta<typeof RangeSliderPrimitive> = {\n title: \"Components/Form Primitives/RangeSlider\",\n component: RangeSliderPrimitive,\n argTypes: {\n onValuesChange: { action: \"onValuesChange\" },\n onValuesCommit: { action: \"onValuesCommit\" }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [values, setValues] = useState(args.values);\n return (\n <RangeSliderPrimitive\n {...args}\n values={values}\n onValuesChange={values => setValues(values)}\n />\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof RangeSliderPrimitive>;\n\nexport const Default: Story = {};\n\nexport const WithDefaultValues: Story = {\n args: {\n values: [25, 75]\n }\n};\n\nexport const WithMinAndMaxValues: Story = {\n args: {\n min: 25,\n max: 75\n }\n};\n\nexport const WithSteps: Story = {\n args: {\n step: 10\n }\n};\n\nexport const Disabled: Story = {\n args: {\n disabled: true,\n values: [25, 75]\n }\n};\n\nexport const WithTooltip: Story = {\n args: {\n showTooltip: true\n }\n};\n\nexport const WithTooltipSideTop: Story = {\n args: {\n showTooltip: true,\n tooltipSide: \"top\"\n }\n};\n\nexport const WithTooltipAndCustomValueTransformer: Story = {\n args: {\n showTooltip: true,\n transformValue: (value: number) => {\n return `${Math.round(value)}%`;\n }\n }\n};\n\nexport const WithExternalValueControl: Story = {\n args: {\n showTooltip: true,\n transformValue: (value: number) => {\n return `${Math.round(value)}%`;\n }\n },\n render: args => {\n const defaultValues = args.values ?? [25, 75];\n const [values, setValues] = useState(defaultValues);\n return (\n <div className={\"w-full\"}>\n <div>\n <RangeSliderPrimitive\n {...args}\n values={values}\n onValuesChange={values => setValues(values)}\n />\n </div>\n <div className={\"mt-4 text-center\"}>\n <Button text={\"Reset\"} onClick={() => setValues(defaultValues)} />\n </div>\n <div className={\"mt-4 text-center\"}>\n Current value: <code>{values.toString()}</code>\n </div>\n </div>\n );\n }\n};\n"],"names":["meta","RangeSliderPrimitive","args","values","setValues","useState","Default","WithDefaultValues","WithMinAndMaxValues","WithSteps","Disabled","WithTooltip","WithTooltipSideTop","WithTooltipAndCustomValueTransformer","value","Math","WithExternalValueControl","defaultValues","Button"],"mappings":";;;AAKA,MAAMA,OAA0C;IAC5C,OAAO;IACP,WAAWC;IACX,UAAU;QACN,gBAAgB;YAAE,QAAQ;QAAiB;QAC3C,gBAAgB;YAAE,QAAQ;QAAiB;IAC/C;IACA,YAAY;QACR,QAAQ;IACZ;IACA,QAAQC,CAAAA;QACJ,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAASH,KAAK,MAAM;QAChD,OAAO,WAAP,GACI,oBAACD,sBAAoBA;YAChB,GAAGC,IAAI;YACR,QAAQC;YACR,gBAAgBA,CAAAA,SAAUC,UAAUD;;IAGhD;AACJ;AAEA,qCAAeH;AAGR,MAAMM,UAAiB,CAAC;AAExB,MAAMC,oBAA2B;IACpC,MAAM;QACF,QAAQ;YAAC;YAAI;SAAG;IACpB;AACJ;AAEO,MAAMC,sBAA6B;IACtC,MAAM;QACF,KAAK;QACL,KAAK;IACT;AACJ;AAEO,MAAMC,YAAmB;IAC5B,MAAM;QACF,MAAM;IACV;AACJ;AAEO,MAAMC,WAAkB;IAC3B,MAAM;QACF,UAAU;QACV,QAAQ;YAAC;YAAI;SAAG;IACpB;AACJ;AAEO,MAAMC,cAAqB;IAC9B,MAAM;QACF,aAAa;IACjB;AACJ;AAEO,MAAMC,qBAA4B;IACrC,MAAM;QACF,aAAa;QACb,aAAa;IACjB;AACJ;AAEO,MAAMC,uCAA8C;IACvD,MAAM;QACF,aAAa;QACb,gBAAgB,CAACC,QACN,GAAGC,KAAK,KAAK,CAACD,OAAO,CAAC,CAAC;IAEtC;AACJ;AAEO,MAAME,2BAAkC;IAC3C,MAAM;QACF,aAAa;QACb,gBAAgB,CAACF,QACN,GAAGC,KAAK,KAAK,CAACD,OAAO,CAAC,CAAC;IAEtC;IACA,QAAQZ,CAAAA;QACJ,MAAMe,gBAAgBf,KAAK,MAAM,IAAI;YAAC;YAAI;SAAG;QAC7C,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAASY;QACrC,OAAO,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAAC,2BACG,oBAAChB,sBAAoBA;YAChB,GAAGC,IAAI;YACR,QAAQC;YACR,gBAAgBA,CAAAA,SAAUC,UAAUD;2BAG5C,oBAAC;YAAI,WAAW;yBACZ,oBAACe,QAAMA;YAAC,MAAM;YAAS,SAAS,IAAMd,UAAUa;2BAEpD,oBAAC;YAAI,WAAW;WAAoB,iCACjB,oBAAC,cAAMd,OAAO,QAAQ;IAIrD;AACJ"}
1
+ {"version":3,"file":"RangeSlider/primitives/RangeSliderPrimitive.stories.js","sources":["../../../src/RangeSlider/primitives/RangeSliderPrimitive.stories.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\nimport { RangeSliderPrimitive } from \"./RangeSliderPrimitive.js\";\nimport { Button } from \"~/Button/index.js\";\n\nconst meta: Meta<typeof RangeSliderPrimitive> = {\n title: \"Components/Form Primitives/RangeSlider\",\n component: RangeSliderPrimitive,\n argTypes: {\n onValuesChange: { action: \"onValuesChange\" },\n onValuesCommit: { action: \"onValuesCommit\" }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [values, setValues] = useState(args.values);\n return (\n <RangeSliderPrimitive\n {...args}\n values={values}\n onValuesChange={values => setValues(values)}\n />\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof RangeSliderPrimitive>;\n\nexport const Default: Story = {};\n\nexport const WithDefaultValues: Story = {\n args: {\n values: [25, 75]\n }\n};\n\nexport const WithMinAndMaxValues: Story = {\n args: {\n min: 25,\n max: 75\n }\n};\n\nexport const WithSteps: Story = {\n args: {\n step: 10\n }\n};\n\nexport const Disabled: Story = {\n args: {\n disabled: true,\n values: [25, 75]\n }\n};\n\nexport const WithTooltip: Story = {\n args: {\n showTooltip: true\n }\n};\n\nexport const WithTooltipSideTop: Story = {\n args: {\n showTooltip: true,\n tooltipSide: \"top\"\n }\n};\n\nexport const WithTooltipAndCustomValueTransformer: Story = {\n args: {\n showTooltip: true,\n transformValue: (value: number) => {\n return `${Math.round(value)}%`;\n }\n }\n};\n\nexport const WithExternalValueControl: Story = {\n args: {\n showTooltip: true,\n transformValue: (value: number) => {\n return `${Math.round(value)}%`;\n }\n },\n render: args => {\n const defaultValues = args.values ?? [25, 75];\n const [values, setValues] = useState(defaultValues);\n return (\n <div className={\"w-full\"}>\n <div>\n <RangeSliderPrimitive\n {...args}\n values={values}\n onValuesChange={values => setValues(values)}\n />\n </div>\n <div className={\"mt-4 text-center\"}>\n <Button text={\"Reset\"} onClick={() => setValues(defaultValues)} />\n </div>\n <div className={\"mt-4 text-center\"}>\n Current value: <code>{values.toString()}</code>\n </div>\n </div>\n );\n }\n};\n"],"names":["meta","RangeSliderPrimitive","args","values","setValues","useState","Default","WithDefaultValues","WithMinAndMaxValues","WithSteps","Disabled","WithTooltip","WithTooltipSideTop","WithTooltipAndCustomValueTransformer","value","Math","WithExternalValueControl","defaultValues","Button"],"mappings":";;;AAKA,MAAMA,OAA0C;IAC5C,OAAO;IACP,WAAWC;IACX,UAAU;QACN,gBAAgB;YAAE,QAAQ;QAAiB;QAC3C,gBAAgB;YAAE,QAAQ;QAAiB;IAC/C;IACA,YAAY;QACR,QAAQ;IACZ;IACA,QAAQC,CAAAA;QACJ,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAASH,KAAK,MAAM;QAChD,OAAO,WAAP,GACI,oBAACD,sBAAoBA;YAChB,GAAGC,IAAI;YACR,QAAQC;YACR,gBAAgBA,CAAAA,SAAUC,UAAUD;;IAGhD;AACJ;AAEA,qCAAeH;AAGR,MAAMM,UAAiB,CAAC;AAExB,MAAMC,oBAA2B;IACpC,MAAM;QACF,QAAQ;YAAC;YAAI;SAAG;IACpB;AACJ;AAEO,MAAMC,sBAA6B;IACtC,MAAM;QACF,KAAK;QACL,KAAK;IACT;AACJ;AAEO,MAAMC,YAAmB;IAC5B,MAAM;QACF,MAAM;IACV;AACJ;AAEO,MAAMC,WAAkB;IAC3B,MAAM;QACF,UAAU;QACV,QAAQ;YAAC;YAAI;SAAG;IACpB;AACJ;AAEO,MAAMC,cAAqB;IAC9B,MAAM;QACF,aAAa;IACjB;AACJ;AAEO,MAAMC,qBAA4B;IACrC,MAAM;QACF,aAAa;QACb,aAAa;IACjB;AACJ;AAEO,MAAMC,uCAA8C;IACvD,MAAM;QACF,aAAa;QACb,gBAAgB,CAACC,QACN,GAAGC,KAAK,KAAK,CAACD,OAAO,CAAC,CAAC;IAEtC;AACJ;AAEO,MAAME,2BAAkC;IAC3C,MAAM;QACF,aAAa;QACb,gBAAgB,CAACF,QACN,GAAGC,KAAK,KAAK,CAACD,OAAO,CAAC,CAAC;IAEtC;IACA,QAAQZ,CAAAA;QACJ,MAAMe,gBAAgBf,KAAK,MAAM,IAAI;YAAC;YAAI;SAAG;QAC7C,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAASY;QACrC,OAAO,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAAC,2BACG,oBAAChB,sBAAoBA;YAChB,GAAGC,IAAI;YACR,QAAQC;YACR,gBAAgBA,CAAAA,SAAUC,UAAUD;2BAG5C,oBAAC;YAAI,WAAW;yBACZ,oBAACe,QAAMA;YAAC,MAAM;YAAS,SAAS,IAAMd,UAAUa;2BAEpD,oBAAC;YAAI,WAAW;WAAoB,iCACjB,oBAAC,cAAMd,OAAO,QAAQ;IAIrD;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 { ScrollArea } from "./ScrollArea.js";
3
3
  declare const meta: Meta<typeof ScrollArea>;
4
4
  export default meta;
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollArea/ScrollArea.stories.js","sources":["../../src/ScrollArea/ScrollArea.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { ScrollArea, ScrollBar, ScrollPosition } from \"./ScrollArea.js\";\nimport React from \"react\";\nimport { Heading } from \"~/Heading/index.js\";\nimport { Text } from \"~/Text/index.js\";\nimport { Separator } from \"~/Separator/index.js\";\n\nconst meta: Meta<typeof ScrollArea> = {\n title: \"Components/ScrollArea\",\n component: ScrollArea,\n argTypes: {},\n decorators: [\n Story => (\n <div className=\"w-[700px]\">\n <Story />\n </div>\n )\n ]\n};\n\nexport default meta;\n\ntype Story = StoryObj<typeof ScrollArea>;\n\nconst tags = Array.from({ length: 50 }).map((_, i, a) => `v1.2.0-beta.${a.length - i}`);\n\nexport const Default: Story = {\n render: () => {\n return (\n <ScrollArea className=\"h-72 w-48 rounded-md border border-neutral-dimmed\">\n <div className=\"p-4\">\n <Heading level={6} className=\"mb-4\">\n Tags\n </Heading>\n {tags.map(tag => (\n <div key={tag}>\n <Text className=\"text-sm\">{tag}</Text>\n <Separator className=\"my-2\" />\n </div>\n ))}\n </div>\n </ScrollArea>\n );\n }\n};\n\nexport const HorizontalScrolling: Story = {\n render: () => {\n const works = [\n {\n artist: \"Ornella Binni\",\n art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\"\n },\n {\n artist: \"Ornella Binni\",\n art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\"\n },\n {\n artist: \"Ornella Binni\",\n art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\"\n }\n ];\n\n return (\n <ScrollArea className=\"w-96 whitespace-nowrap rounded-md border border-neutral-dimmed\">\n <div className=\"flex w-max space-x-4 p-4\">\n {works.map(artwork => (\n <figure key={artwork.artist} className=\"shrink-0\">\n <div className=\"overflow-hidden rounded-md\">\n <img\n src={artwork.art}\n alt={`Photo by ${artwork.artist}`}\n className=\"aspect-[3/4] h-fit w-fit object-cover\"\n width={300}\n height={400}\n />\n </div>\n <figcaption className=\"pt-2 text-xs text-neutral-strong\">\n Photo by{\" \"}\n <span className=\"font-semibold text-neutral-primary\">\n {artwork.artist}\n </span>\n </figcaption>\n </figure>\n ))}\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n );\n }\n};\n\nexport const WithScrollPositionTracking: Story = {\n render: () => {\n const [position, setPosition] = React.useState<ScrollPosition | null>(null);\n const [loadMoreTriggered, setLoadMoreTriggered] = React.useState(false);\n\n const handleScrollPositionChange = React.useCallback(\n (pos: ScrollPosition) => {\n setPosition(pos);\n\n // Trigger load more when scrolled 90% down.\n if (pos.top >= 0.9 && !loadMoreTriggered) {\n setLoadMoreTriggered(true);\n console.log(\"Load more triggered at position:\", pos);\n } else if (pos.top < 0.9) {\n setLoadMoreTriggered(false);\n }\n },\n [loadMoreTriggered]\n );\n\n return (\n <div className=\"space-y-4\">\n <ScrollArea\n className=\"h-72 w-48 rounded-md border border-neutral-dimmed\"\n onScrollPositionChange={handleScrollPositionChange}\n >\n <div className=\"p-4\">\n <Heading level={6} className=\"mb-4\">\n Tags\n </Heading>\n {tags.map(tag => (\n <div key={tag}>\n <Text className=\"text-sm\">{tag}</Text>\n <Separator className=\"my-2\" />\n </div>\n ))}\n </div>\n </ScrollArea>\n\n {position && (\n <div className=\"rounded-md border border-neutral-dimmed p-4 space-y-2\">\n <Text className=\"font-semibold\">Scroll Position:</Text>\n <Text className=\"text-sm\">Top: {(position.top * 100).toFixed(1)}%</Text>\n <Text className=\"text-sm\">ScrollTop: {position.scrollTop}px</Text>\n <Text className=\"text-sm\">\n Load More Triggered: {loadMoreTriggered ? \"Yes\" : \"No\"}\n </Text>\n </div>\n )}\n </div>\n );\n }\n};\n"],"names":["meta","ScrollArea","Story","tags","Array","_","i","a","Default","Heading","tag","Text","Separator","HorizontalScrolling","works","artwork","ScrollBar","WithScrollPositionTracking","position","setPosition","React","loadMoreTriggered","setLoadMoreTriggered","handleScrollPositionChange","pos","console"],"mappings":"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"}
1
+ {"version":3,"file":"ScrollArea/ScrollArea.stories.js","sources":["../../src/ScrollArea/ScrollArea.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { ScrollArea, ScrollBar, ScrollPosition } from \"./ScrollArea.js\";\nimport React from \"react\";\nimport { Heading } from \"~/Heading/index.js\";\nimport { Text } from \"~/Text/index.js\";\nimport { Separator } from \"~/Separator/index.js\";\n\nconst meta: Meta<typeof ScrollArea> = {\n title: \"Components/ScrollArea\",\n component: ScrollArea,\n argTypes: {},\n decorators: [\n Story => (\n <div className=\"w-[700px]\">\n <Story />\n </div>\n )\n ]\n};\n\nexport default meta;\n\ntype Story = StoryObj<typeof ScrollArea>;\n\nconst tags = Array.from({ length: 50 }).map((_, i, a) => `v1.2.0-beta.${a.length - i}`);\n\nexport const Default: Story = {\n render: () => {\n return (\n <ScrollArea className=\"h-72 w-48 rounded-md border border-neutral-dimmed\">\n <div className=\"p-4\">\n <Heading level={6} className=\"mb-4\">\n Tags\n </Heading>\n {tags.map(tag => (\n <div key={tag}>\n <Text className=\"text-sm\">{tag}</Text>\n <Separator className=\"my-2\" />\n </div>\n ))}\n </div>\n </ScrollArea>\n );\n }\n};\n\nexport const HorizontalScrolling: Story = {\n render: () => {\n const works = [\n {\n artist: \"Ornella Binni\",\n art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\"\n },\n {\n artist: \"Ornella Binni\",\n art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\"\n },\n {\n artist: \"Ornella Binni\",\n art: \"https://images.unsplash.com/photo-1465869185982-5a1a7522cbcb?auto=format&fit=crop&w=300&q=80\"\n }\n ];\n\n return (\n <ScrollArea className=\"w-96 whitespace-nowrap rounded-md border border-neutral-dimmed\">\n <div className=\"flex w-max space-x-4 p-4\">\n {works.map(artwork => (\n <figure key={artwork.artist} className=\"shrink-0\">\n <div className=\"overflow-hidden rounded-md\">\n <img\n src={artwork.art}\n alt={`Photo by ${artwork.artist}`}\n className=\"aspect-[3/4] h-fit w-fit object-cover\"\n width={300}\n height={400}\n />\n </div>\n <figcaption className=\"pt-2 text-xs text-neutral-strong\">\n Photo by{\" \"}\n <span className=\"font-semibold text-neutral-primary\">\n {artwork.artist}\n </span>\n </figcaption>\n </figure>\n ))}\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n );\n }\n};\n\nexport const WithScrollPositionTracking: Story = {\n render: () => {\n const [position, setPosition] = React.useState<ScrollPosition | null>(null);\n const [loadMoreTriggered, setLoadMoreTriggered] = React.useState(false);\n\n const handleScrollPositionChange = React.useCallback(\n (pos: ScrollPosition) => {\n setPosition(pos);\n\n // Trigger load more when scrolled 90% down.\n if (pos.top >= 0.9 && !loadMoreTriggered) {\n setLoadMoreTriggered(true);\n console.log(\"Load more triggered at position:\", pos);\n } else if (pos.top < 0.9) {\n setLoadMoreTriggered(false);\n }\n },\n [loadMoreTriggered]\n );\n\n return (\n <div className=\"space-y-4\">\n <ScrollArea\n className=\"h-72 w-48 rounded-md border border-neutral-dimmed\"\n onScrollPositionChange={handleScrollPositionChange}\n >\n <div className=\"p-4\">\n <Heading level={6} className=\"mb-4\">\n Tags\n </Heading>\n {tags.map(tag => (\n <div key={tag}>\n <Text className=\"text-sm\">{tag}</Text>\n <Separator className=\"my-2\" />\n </div>\n ))}\n </div>\n </ScrollArea>\n\n {position && (\n <div className=\"rounded-md border border-neutral-dimmed p-4 space-y-2\">\n <Text className=\"font-semibold\">Scroll Position:</Text>\n <Text className=\"text-sm\">Top: {(position.top * 100).toFixed(1)}%</Text>\n <Text className=\"text-sm\">ScrollTop: {position.scrollTop}px</Text>\n <Text className=\"text-sm\">\n Load More Triggered: {loadMoreTriggered ? \"Yes\" : \"No\"}\n </Text>\n </div>\n )}\n </div>\n );\n }\n};\n"],"names":["meta","ScrollArea","Story","tags","Array","_","i","a","Default","Heading","tag","Text","Separator","HorizontalScrolling","works","artwork","ScrollBar","WithScrollPositionTracking","position","setPosition","React","loadMoreTriggered","setLoadMoreTriggered","handleScrollPositionChange","pos","console"],"mappings":"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"}
@@ -20,5 +20,9 @@ declare const SegmentedControl: (({ label, description, note, hint, required, di
20
20
  originalName: string;
21
21
  displayName: string;
22
22
  }>) => (props: unknown) => React.JSX.Element;
23
+ } & {
24
+ Tabs: (({ children, variant, defaultValue, className }: import("./SegmentedControlTabs.js").SegmentedControlTabsProps) => React.JSX.Element) & {
25
+ Tab: (props: import("./SegmentedControlTab.js").SegmentedControlTabProps) => null;
26
+ };
23
27
  };
24
28
  export { SegmentedControl, type SegmentedControlProps };
@@ -1,5 +1,6 @@
1
1
  import react, { useMemo } from "react";
2
- import { makeDecoratable } from "../utils.js";
2
+ import { makeDecoratable, withStaticProps } from "../utils.js";
3
+ import { SegmentedControlTabs } from "./SegmentedControlTabs.js";
3
4
  import { SegmentedControlPrimitive } from "./primitives/index.js";
4
5
  import { FormComponentDescription, FormComponentErrorMessage, FormComponentLabel, FormComponentNote } from "../FormComponent/index.js";
5
6
  const DecoratableSegmentedControl = ({ label, description, note, hint, required, disabled, validation, ...props })=>{
@@ -32,7 +33,10 @@ const DecoratableSegmentedControl = ({ label, description, note, hint, required,
32
33
  disabled: disabled
33
34
  }));
34
35
  };
35
- const SegmentedControl = makeDecoratable("SegmentedControl", DecoratableSegmentedControl);
36
+ const BaseSegmentedControl = makeDecoratable("SegmentedControl", DecoratableSegmentedControl);
37
+ const SegmentedControl = withStaticProps(BaseSegmentedControl, {
38
+ Tabs: SegmentedControlTabs
39
+ });
36
40
  export { SegmentedControl };
37
41
 
38
42
  //# sourceMappingURL=SegmentedControl.js.map
@@ -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