aural-ui 2.0.0

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 (308) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +456 -0
  3. package/dist/components/aspect-ratio/AspectRatio.stories.tsx +1327 -0
  4. package/dist/components/aspect-ratio/index.tsx +10 -0
  5. package/dist/components/aspect-ratio/meta.ts +8 -0
  6. package/dist/components/avatar/Avatar.stories.tsx +645 -0
  7. package/dist/components/avatar/index.tsx +50 -0
  8. package/dist/components/avatar/meta.ts +8 -0
  9. package/dist/components/badge/Badge.stories.tsx +169 -0
  10. package/dist/components/badge/index.tsx +28 -0
  11. package/dist/components/badge/meta.ts +6 -0
  12. package/dist/components/banner/Banner.stories.tsx +475 -0
  13. package/dist/components/banner/index.tsx +256 -0
  14. package/dist/components/banner/meta.ts +36 -0
  15. package/dist/components/button/Button.stories.tsx +74 -0
  16. package/dist/components/button/index.tsx +158 -0
  17. package/dist/components/button/meta.ts +33 -0
  18. package/dist/components/card/Card.stories.tsx +377 -0
  19. package/dist/components/card/index.tsx +85 -0
  20. package/dist/components/card/meta.ts +14 -0
  21. package/dist/components/char-count/CharCount.stories.tsx +334 -0
  22. package/dist/components/char-count/index.tsx +51 -0
  23. package/dist/components/char-count/meta.ts +13 -0
  24. package/dist/components/checkbox/Checkbox.stories.tsx +209 -0
  25. package/dist/components/checkbox/index.tsx +34 -0
  26. package/dist/components/checkbox/meta.ts +19 -0
  27. package/dist/components/chip/Chip.stories.tsx +207 -0
  28. package/dist/components/chip/index.tsx +92 -0
  29. package/dist/components/chip/meta.ts +17 -0
  30. package/dist/components/circular-loader/CircularLoader.stories.tsx +741 -0
  31. package/dist/components/circular-loader/index.tsx +138 -0
  32. package/dist/components/circular-loader/meta.ts +11 -0
  33. package/dist/components/collapsible/Collapsible.stories.tsx +319 -0
  34. package/dist/components/collapsible/index.tsx +158 -0
  35. package/dist/components/collapsible/meta.ts +22 -0
  36. package/dist/components/command/Command.stories.tsx +996 -0
  37. package/dist/components/command/index.tsx +324 -0
  38. package/dist/components/command/meta.ts +18 -0
  39. package/dist/components/dialog/Dialog.stories.tsx +963 -0
  40. package/dist/components/dialog/index.tsx +250 -0
  41. package/dist/components/dialog/meta.ts +28 -0
  42. package/dist/components/divider/Divider.stories.tsx +633 -0
  43. package/dist/components/divider/index.tsx +181 -0
  44. package/dist/components/divider/meta.ts +12 -0
  45. package/dist/components/dot-loader/DotLoader.stories.tsx +352 -0
  46. package/dist/components/dot-loader/index.tsx +78 -0
  47. package/dist/components/dot-loader/meta.ts +14 -0
  48. package/dist/components/dropdown/Dropdown.stories.tsx +1210 -0
  49. package/dist/components/dropdown/index.tsx +479 -0
  50. package/dist/components/dropdown/meta.ts +21 -0
  51. package/dist/components/form/Form.stories.tsx +320 -0
  52. package/dist/components/form/index.tsx +183 -0
  53. package/dist/components/form/meta.ts +11 -0
  54. package/dist/components/helper-text/HelperText.stories.tsx +254 -0
  55. package/dist/components/helper-text/index.tsx +102 -0
  56. package/dist/components/helper-text/meta.ts +18 -0
  57. package/dist/components/hover-card/HoverCard.stories.tsx +1328 -0
  58. package/dist/components/hover-card/index.tsx +42 -0
  59. package/dist/components/hover-card/meta.ts +12 -0
  60. package/dist/components/icon-button/IconButton.stories.tsx +252 -0
  61. package/dist/components/icon-button/index.tsx +130 -0
  62. package/dist/components/icon-button/meta.ts +20 -0
  63. package/dist/components/if-else/if-else.stories.tsx +100 -0
  64. package/dist/components/if-else/index.tsx +56 -0
  65. package/dist/components/if-else/meta.ts +6 -0
  66. package/dist/components/index.ts +70 -0
  67. package/dist/components/input/Input.stories.tsx +431 -0
  68. package/dist/components/input/index.tsx +487 -0
  69. package/dist/components/input/meta.ts +28 -0
  70. package/dist/components/label/Label.stories.tsx +200 -0
  71. package/dist/components/label/index.tsx +43 -0
  72. package/dist/components/label/meta.ts +14 -0
  73. package/dist/components/list/List.stories.tsx +963 -0
  74. package/dist/components/list/index.tsx +567 -0
  75. package/dist/components/list/meta.ts +24 -0
  76. package/dist/components/marquee/Marquee.stories.tsx +819 -0
  77. package/dist/components/marquee/index.tsx +107 -0
  78. package/dist/components/marquee/meta.ts +6 -0
  79. package/dist/components/overlay/Overlay.stories.tsx +954 -0
  80. package/dist/components/overlay/index.tsx +58 -0
  81. package/dist/components/overlay/meta.ts +10 -0
  82. package/dist/components/pagination/Pagination.stories.tsx +354 -0
  83. package/dist/components/pagination/index.tsx +455 -0
  84. package/dist/components/pagination/meta.ts +29 -0
  85. package/dist/components/popover/Popover.stories.tsx +1037 -0
  86. package/dist/components/popover/index.tsx +67 -0
  87. package/dist/components/popover/meta.ts +12 -0
  88. package/dist/components/radio/Radio.stories.tsx +146 -0
  89. package/dist/components/radio/index.tsx +41 -0
  90. package/dist/components/radio/meta.ts +19 -0
  91. package/dist/components/resizable/Resizable.stories.tsx +866 -0
  92. package/dist/components/resizable/index.tsx +55 -0
  93. package/dist/components/resizable/meta.ts +12 -0
  94. package/dist/components/scroll-area/ScrollArea.stories.tsx +1104 -0
  95. package/dist/components/scroll-area/index.tsx +55 -0
  96. package/dist/components/scroll-area/meta.ts +8 -0
  97. package/dist/components/search/Search.stories.tsx +678 -0
  98. package/dist/components/search/index.tsx +141 -0
  99. package/dist/components/search/meta.ts +6 -0
  100. package/dist/components/select/Select.stories.tsx +962 -0
  101. package/dist/components/select/index.tsx +512 -0
  102. package/dist/components/select/meta.ts +40 -0
  103. package/dist/components/sheet/Sheet.stories.tsx +1060 -0
  104. package/dist/components/sheet/index.tsx +440 -0
  105. package/dist/components/sheet/meta.ts +38 -0
  106. package/dist/components/skelton/Skelton.stories.tsx +859 -0
  107. package/dist/components/skelton/index.tsx +17 -0
  108. package/dist/components/skelton/meta.ts +6 -0
  109. package/dist/components/slider/Slider.stories.tsx +876 -0
  110. package/dist/components/slider/index.tsx +156 -0
  111. package/dist/components/slider/meta.ts +29 -0
  112. package/dist/components/stepper/Stepper.stories.tsx +639 -0
  113. package/dist/components/stepper/index.tsx +650 -0
  114. package/dist/components/stepper/meta.ts +19 -0
  115. package/dist/components/switch/Switch.stories.tsx +85 -0
  116. package/dist/components/switch/index.tsx +37 -0
  117. package/dist/components/switch/meta.ts +24 -0
  118. package/dist/components/switch-case/SwitchCase.stories.tsx +209 -0
  119. package/dist/components/switch-case/index.tsx +89 -0
  120. package/dist/components/switch-case/meta.ts +6 -0
  121. package/dist/components/table/Table.stories.tsx +1095 -0
  122. package/dist/components/table/index.tsx +113 -0
  123. package/dist/components/table/meta.ts +20 -0
  124. package/dist/components/tabs/Tabs.stories.tsx +1379 -0
  125. package/dist/components/tabs/index.tsx +186 -0
  126. package/dist/components/tabs/meta.ts +25 -0
  127. package/dist/components/tag/Tag.stories.tsx +625 -0
  128. package/dist/components/tag/index.tsx +320 -0
  129. package/dist/components/tag/meta.ts +52 -0
  130. package/dist/components/textarea/TextArea.stories.tsx +723 -0
  131. package/dist/components/textarea/index.tsx +480 -0
  132. package/dist/components/textarea/meta.ts +23 -0
  133. package/dist/components/toast/Toast.stories.tsx +1427 -0
  134. package/dist/components/toast/index.tsx +26 -0
  135. package/dist/components/toast/meta.ts +19 -0
  136. package/dist/components/toggle/Toggle.stories.tsx +1093 -0
  137. package/dist/components/toggle/index.tsx +44 -0
  138. package/dist/components/toggle/meta.ts +19 -0
  139. package/dist/components/tooltip/Tooltip.stories.tsx +1548 -0
  140. package/dist/components/tooltip/index.tsx +304 -0
  141. package/dist/components/tooltip/meta.ts +21 -0
  142. package/dist/components/typography/Typography.stories.tsx +197 -0
  143. package/dist/components/typography/index.tsx +184 -0
  144. package/dist/components/typography/meta.ts +38 -0
  145. package/dist/fonts/LabGrotesque-Regular.ttf +0 -0
  146. package/dist/fonts/LabGrotesqueTRIAL-Bold.otf +0 -0
  147. package/dist/fonts/LabGrotesqueTRIAL-Light.otf +0 -0
  148. package/dist/fonts/LabGrotesqueTRIAL-Medium.otf +0 -0
  149. package/dist/fonts/LabGrotesqueTRIAL-Regular.otf +0 -0
  150. package/dist/fonts/PPSupplySans-Regular (1).otf +0 -0
  151. package/dist/fonts/PPSupplySans-Regular.otf +0 -0
  152. package/dist/fonts/PPSupplySans-Ultralight.otf +0 -0
  153. package/dist/hooks/index.ts +3 -0
  154. package/dist/hooks/use-previous/UsePrevious.stories.tsx +997 -0
  155. package/dist/hooks/use-previous/index.ts +15 -0
  156. package/dist/hooks/use-previous/meta.ts +6 -0
  157. package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +983 -0
  158. package/dist/hooks/use-standalone-pagination/index.ts +146 -0
  159. package/dist/hooks/use-standalone-pagination/meta.ts +6 -0
  160. package/dist/icons/Icons.stories.tsx +29 -0
  161. package/dist/icons/alert-icon/AlertIcon.stories.tsx +991 -0
  162. package/dist/icons/alert-icon/index.tsx +48 -0
  163. package/dist/icons/alert-icon/meta.ts +8 -0
  164. package/dist/icons/all-icons.tsx +738 -0
  165. package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +1031 -0
  166. package/dist/icons/angle-down-icon/index.tsx +25 -0
  167. package/dist/icons/angle-down-icon/meta.ts +8 -0
  168. package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +1080 -0
  169. package/dist/icons/arrow-box-left-icon/index.tsx +24 -0
  170. package/dist/icons/arrow-box-left-icon/meta.ts +8 -0
  171. package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +1151 -0
  172. package/dist/icons/arrow-right-icon/index.tsx +26 -0
  173. package/dist/icons/arrow-right-icon/meta.ts +8 -0
  174. package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +1273 -0
  175. package/dist/icons/arrow-right-up-icon/index.tsx +24 -0
  176. package/dist/icons/arrow-right-up-icon/meta.ts +8 -0
  177. package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +670 -0
  178. package/dist/icons/art-board-icon/index.tsx +24 -0
  179. package/dist/icons/art-board-icon/meta.ts +7 -0
  180. package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +1244 -0
  181. package/dist/icons/audio-bar-icon/index.tsx +19 -0
  182. package/dist/icons/audio-bar-icon/meta.ts +8 -0
  183. package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +1239 -0
  184. package/dist/icons/bubble-check-icon/index.tsx +24 -0
  185. package/dist/icons/bubble-check-icon/meta.ts +8 -0
  186. package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +1228 -0
  187. package/dist/icons/bubble-crossed-icon/index.tsx +24 -0
  188. package/dist/icons/bubble-crossed-icon/meta.ts +8 -0
  189. package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +912 -0
  190. package/dist/icons/bubble-sparkle-icon/index.tsx +26 -0
  191. package/dist/icons/bubble-sparkle-icon/meta.ts +8 -0
  192. package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +1021 -0
  193. package/dist/icons/chevron-double-left-icon/index.tsx +34 -0
  194. package/dist/icons/chevron-double-left-icon/meta.ts +8 -0
  195. package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +1021 -0
  196. package/dist/icons/chevron-double-right-icon/index.tsx +34 -0
  197. package/dist/icons/chevron-double-right-icon/meta.ts +8 -0
  198. package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +1001 -0
  199. package/dist/icons/chevron-down-icon/index.tsx +27 -0
  200. package/dist/icons/chevron-down-icon/meta.ts +8 -0
  201. package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +1029 -0
  202. package/dist/icons/chevron-left-icon/index.tsx +27 -0
  203. package/dist/icons/chevron-left-icon/meta.ts +8 -0
  204. package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +1021 -0
  205. package/dist/icons/chevron-right-icon/index.tsx +27 -0
  206. package/dist/icons/chevron-right-icon/meta.ts +8 -0
  207. package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +1036 -0
  208. package/dist/icons/chevron-up-icon/index.tsx +27 -0
  209. package/dist/icons/chevron-up-icon/meta.ts +8 -0
  210. package/dist/icons/command-icon/CommandIcon.stories.tsx +1098 -0
  211. package/dist/icons/command-icon/index.tsx +24 -0
  212. package/dist/icons/command-icon/meta.ts +8 -0
  213. package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +1061 -0
  214. package/dist/icons/cross-circle-icon/index.tsx +23 -0
  215. package/dist/icons/cross-circle-icon/meta.ts +8 -0
  216. package/dist/icons/cross-icon/CrossIcon.stories.tsx +1027 -0
  217. package/dist/icons/cross-icon/index.tsx +24 -0
  218. package/dist/icons/cross-icon/meta.ts +8 -0
  219. package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +1092 -0
  220. package/dist/icons/edit-big-icon/index.tsx +22 -0
  221. package/dist/icons/edit-big-icon/meta.ts +8 -0
  222. package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +1090 -0
  223. package/dist/icons/eye-close-icon/index.tsx +26 -0
  224. package/dist/icons/eye-close-icon/meta.ts +8 -0
  225. package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +1098 -0
  226. package/dist/icons/eye-open-icon/index.tsx +24 -0
  227. package/dist/icons/eye-open-icon/meta.ts +8 -0
  228. package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +1071 -0
  229. package/dist/icons/feature-shine-icon/index.tsx +29 -0
  230. package/dist/icons/feature-shine-icon/meta.ts +8 -0
  231. package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +1115 -0
  232. package/dist/icons/file-chart-icon/index.tsx +24 -0
  233. package/dist/icons/file-chart-icon/meta.ts +8 -0
  234. package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +668 -0
  235. package/dist/icons/file-text-icon/index.tsx +24 -0
  236. package/dist/icons/file-text-icon/meta.ts +8 -0
  237. package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +1239 -0
  238. package/dist/icons/grip-vertical-icon/index.tsx +28 -0
  239. package/dist/icons/grip-vertical-icon/meta.ts +8 -0
  240. package/dist/icons/image-icon/ImageIcon.stories.tsx +1181 -0
  241. package/dist/icons/image-icon/index.tsx +24 -0
  242. package/dist/icons/image-icon/meta.ts +8 -0
  243. package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +1248 -0
  244. package/dist/icons/import-folder-icon/index.tsx +22 -0
  245. package/dist/icons/import-folder-icon/meta.ts +8 -0
  246. package/dist/icons/index.ts +46 -0
  247. package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +1272 -0
  248. package/dist/icons/light-bulb-simple-icon/index.tsx +24 -0
  249. package/dist/icons/light-bulb-simple-icon/meta.ts +8 -0
  250. package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +1245 -0
  251. package/dist/icons/magic-book-icon/index.tsx +32 -0
  252. package/dist/icons/magic-book-icon/meta.ts +8 -0
  253. package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +1251 -0
  254. package/dist/icons/maintenance-icon/index.tsx +23 -0
  255. package/dist/icons/maintenance-icon/meta.ts +8 -0
  256. package/dist/icons/message-icon/MessageIcon.stories.tsx +595 -0
  257. package/dist/icons/message-icon/index.tsx +30 -0
  258. package/dist/icons/message-icon/meta.ts +8 -0
  259. package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +1245 -0
  260. package/dist/icons/move-horizontal-icon/index.tsx +23 -0
  261. package/dist/icons/move-horizontal-icon/meta.ts +8 -0
  262. package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +1196 -0
  263. package/dist/icons/move-vertical-icon/index.tsx +23 -0
  264. package/dist/icons/move-vertical-icon/meta.ts +8 -0
  265. package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +1167 -0
  266. package/dist/icons/page-search-icon/index.tsx +21 -0
  267. package/dist/icons/page-search-icon/meta.ts +8 -0
  268. package/dist/icons/pencil-icon/PencilIcon.stories.tsx +1131 -0
  269. package/dist/icons/pencil-icon/index.tsx +21 -0
  270. package/dist/icons/pencil-icon/meta.ts +8 -0
  271. package/dist/icons/plus-icon/PlusIcon.stories.tsx +1151 -0
  272. package/dist/icons/plus-icon/index.tsx +24 -0
  273. package/dist/icons/plus-icon/meta.ts +8 -0
  274. package/dist/icons/search-icon/SearchIcon.stories.tsx +1181 -0
  275. package/dist/icons/search-icon/index.tsx +24 -0
  276. package/dist/icons/search-icon/meta.ts +8 -0
  277. package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +1167 -0
  278. package/dist/icons/site-logo-icon/index.tsx +79 -0
  279. package/dist/icons/site-logo-icon/meta.ts +8 -0
  280. package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +637 -0
  281. package/dist/icons/spinner-gradient-icon/index.tsx +53 -0
  282. package/dist/icons/spinner-gradient-icon/meta.ts +8 -0
  283. package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +644 -0
  284. package/dist/icons/spinner-solid-icon/index.tsx +59 -0
  285. package/dist/icons/spinner-solid-icon/meta.ts +8 -0
  286. package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +736 -0
  287. package/dist/icons/spinner-solid-neutral-icon/index.tsx +53 -0
  288. package/dist/icons/spinner-solid-neutral-icon/meta.ts +8 -0
  289. package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +1204 -0
  290. package/dist/icons/tick-circle-icon/index.tsx +23 -0
  291. package/dist/icons/tick-circle-icon/meta.ts +8 -0
  292. package/dist/icons/tick-icon/TickIcon.stories.tsx +1340 -0
  293. package/dist/icons/tick-icon/index.tsx +24 -0
  294. package/dist/icons/tick-icon/meta.ts +8 -0
  295. package/dist/icons/trash-icon/TrashIcon.stories.tsx +996 -0
  296. package/dist/icons/trash-icon/index.tsx +24 -0
  297. package/dist/icons/trash-icon/meta.ts +8 -0
  298. package/dist/icons/upload-icon/UploadIcon.stories.tsx +947 -0
  299. package/dist/icons/upload-icon/index.tsx +24 -0
  300. package/dist/icons/upload-icon/meta.ts +8 -0
  301. package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +1045 -0
  302. package/dist/icons/vertical-menu-icon/index.tsx +27 -0
  303. package/dist/icons/vertical-menu-icon/meta.ts +8 -0
  304. package/dist/index.d.ts +6 -0
  305. package/dist/index.js +206 -0
  306. package/dist/lib/utils.ts +6 -0
  307. package/dist/styles/aural-theme.css +1008 -0
  308. package/package.json +142 -0
@@ -0,0 +1,633 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { Divider } from "."
5
+
6
+ const meta: Meta<typeof Divider> = {
7
+ title: "Components/UI/Divider",
8
+ component: Divider,
9
+ parameters: {
10
+ layout: "centered",
11
+ backgrounds: {
12
+ default: "dark",
13
+ values: [
14
+ { name: "dark", value: "#0a0a0a" },
15
+ { name: "light", value: "#ffffff" },
16
+ ],
17
+ },
18
+ docs: {
19
+ description: {
20
+ component: `
21
+ A versatile divider component built on Radix UI Divider with dark theme optimization and multiple visual styles.
22
+
23
+ ## Overview
24
+
25
+ The Divider component provides clear visual separation between content sections, improving layout organization and readability. It supports multiple variants including solid, stylized, and dashed styles with flexible sizing and orientation options.
26
+
27
+ ## Features
28
+ - **Multiple Variants**: Primary, secondary, stylised, and dashed styles
29
+ - **Flexible Sizing**: Four size options from thin to large
30
+ - **Dual Orientation**: Horizontal and vertical layouts
31
+ - **Dark Theme Optimized**: Designed for dark interfaces
32
+ - **Accessibility Ready**: Built on Radix UI Divider primitive
33
+ - **Stylised Option**: Includes decorative audio bar icon
34
+ - **Dashed Style**: Perfect for subtle separations and grouped content
35
+
36
+ ## Design Tokens
37
+ - Uses \`--fm-divider-primary\`, \`--fm-divider-secondary\`, \`--fm-divider-tertiary\` color tokens
38
+ - Responsive sizing with consistent visual hierarchy
39
+ - Semantic color mapping for different use cases
40
+
41
+ ## Usage
42
+
43
+ ### Basic Divider
44
+ \`\`\`tsx
45
+ import { Divider } from '@/ui/components/divider'
46
+
47
+ export default function Example() {
48
+ return (
49
+ <div className="space-y-4">
50
+ <p>Content above</p>
51
+ <Divider />
52
+ <p>Content below</p>
53
+ </div>
54
+ )
55
+ }
56
+ \`\`\`
57
+
58
+ ### Dashed Divider
59
+ \`\`\`tsx
60
+ export default function DashedExample() {
61
+ return (
62
+ <div className="space-y-4">
63
+ <h3>Section Title</h3>
64
+ <Divider variant="dashed" />
65
+ <p>Section content with subtle separation</p>
66
+ </div>
67
+ )
68
+ }
69
+ \`\`\`
70
+
71
+ ### Vertical Divider
72
+ \`\`\`tsx
73
+ export default function VerticalExample() {
74
+ return (
75
+ <div className="flex items-center gap-4">
76
+ <span>Item 1</span>
77
+ <Divider orientation="vertical" className="h-6" />
78
+ <span>Item 2</span>
79
+ </div>
80
+ )
81
+ }
82
+ \`\`\`
83
+
84
+ ### Stylised Divider
85
+ \`\`\`tsx
86
+ export default function StylisedExample() {
87
+ return (
88
+ <div className="space-y-6">
89
+ <section>Main content section</section>
90
+ <Divider variant="stylised" />
91
+ <section>Next content section</section>
92
+ </div>
93
+ )
94
+ }
95
+ \`\`\`
96
+ `,
97
+ },
98
+ },
99
+ },
100
+ tags: ["autodocs"],
101
+ argTypes: {
102
+ variant: {
103
+ control: "select",
104
+ options: ["primary", "secondary", "stylised", "dashed"],
105
+ description: "The visual style of the divider",
106
+ table: {
107
+ type: { summary: "string" },
108
+ defaultValue: { summary: "primary" },
109
+ },
110
+ },
111
+ size: {
112
+ control: "select",
113
+ options: ["half_default", "full_default", "full_medium", "full_large"],
114
+ description: "The size/thickness of the divider",
115
+ table: {
116
+ type: { summary: "string" },
117
+ defaultValue: { summary: "full_default" },
118
+ },
119
+ },
120
+ orientation: {
121
+ control: "select",
122
+ options: ["horizontal", "vertical"],
123
+ description: "The orientation of the divider",
124
+ table: {
125
+ type: { summary: "string" },
126
+ defaultValue: { summary: "horizontal" },
127
+ },
128
+ },
129
+ decorative: {
130
+ control: "boolean",
131
+ description:
132
+ "Whether the Divider is decorative (hidden from screen readers)",
133
+ table: {
134
+ type: { summary: "boolean" },
135
+ defaultValue: { summary: "true" },
136
+ },
137
+ },
138
+ className: {
139
+ control: "text",
140
+ description: "Additional CSS classes for custom styling",
141
+ table: {
142
+ type: { summary: "string" },
143
+ },
144
+ },
145
+ wrapperClassName: {
146
+ control: "text",
147
+ description:
148
+ "CSS classes for the wrapper element (used with stylised variant)",
149
+ table: {
150
+ type: { summary: "string" },
151
+ },
152
+ },
153
+ },
154
+ }
155
+
156
+ export default meta
157
+ type Story = StoryObj<typeof Divider>
158
+
159
+ export const Primary: Story = {
160
+ args: {
161
+ variant: "primary",
162
+ size: "full_default",
163
+ className: "my-4 min-w-96",
164
+ },
165
+ parameters: {
166
+ docs: {
167
+ description: {
168
+ story:
169
+ "The default primary divider with medium opacity, perfect for standard content separation.",
170
+ },
171
+ },
172
+ },
173
+ }
174
+
175
+ export const Secondary: Story = {
176
+ args: {
177
+ variant: "secondary",
178
+ size: "full_default",
179
+ className: "my-4 min-w-96",
180
+ },
181
+ parameters: {
182
+ docs: {
183
+ description: {
184
+ story:
185
+ "A lighter secondary divider for subtle separations within grouped content.",
186
+ },
187
+ },
188
+ },
189
+ }
190
+
191
+ export const Dashed: Story = {
192
+ args: {
193
+ variant: "dashed",
194
+ size: "full_default",
195
+ className: "my-4 min-w-96",
196
+ },
197
+ parameters: {
198
+ docs: {
199
+ description: {
200
+ story:
201
+ "A dashed divider style perfect for indicating temporary or conditional separations.",
202
+ },
203
+ },
204
+ },
205
+ }
206
+
207
+ export const Stylised: Story = {
208
+ args: {
209
+ variant: "stylised",
210
+ size: "full_default",
211
+ className: "my-4 min-w-96",
212
+ },
213
+ parameters: {
214
+ docs: {
215
+ description: {
216
+ story:
217
+ "A decorative divider with an audio bar icon, ideal for section breaks in audio/media interfaces.",
218
+ },
219
+ },
220
+ },
221
+ }
222
+
223
+ export const SizeVariations: Story = {
224
+ render: () => (
225
+ <div className="w-full max-w-2xl space-y-8 rounded-lg bg-gray-900 p-6">
226
+ <div className="text-center">
227
+ <h3 className="mb-2 text-lg font-medium text-white">Size Variations</h3>
228
+ <p className="text-sm text-white/60">
229
+ Different thickness options for various use cases
230
+ </p>
231
+ </div>
232
+
233
+ <div className="space-y-6">
234
+ {(
235
+ [
236
+ {
237
+ size: "half_default",
238
+ label: "Half Default",
239
+ description: "50% width, minimal thickness",
240
+ },
241
+ {
242
+ size: "full_default",
243
+ label: "Full Default",
244
+ description: "Standard thickness for most use cases",
245
+ },
246
+ {
247
+ size: "full_medium",
248
+ label: "Full Medium",
249
+ description: "Medium thickness for emphasis",
250
+ },
251
+ {
252
+ size: "full_large",
253
+ label: "Full Large",
254
+ description: "Bold thickness for strong separation",
255
+ },
256
+ ] as const
257
+ ).map((item) => (
258
+ <div key={item.size} className="space-y-3">
259
+ <div className="flex items-center justify-between">
260
+ <h4 className="text-sm font-medium text-white">{item.label}</h4>
261
+ <span className="text-xs text-white/40">{item.description}</span>
262
+ </div>
263
+ <Divider variant="primary" size={item.size} />
264
+ </div>
265
+ ))}
266
+ </div>
267
+ </div>
268
+ ),
269
+ parameters: {
270
+ docs: {
271
+ description: {
272
+ story:
273
+ "Comparison of all available size options for dividers, from subtle to prominent separations.",
274
+ },
275
+ },
276
+ },
277
+ }
278
+
279
+ export const VariantComparison: Story = {
280
+ render: () => (
281
+ <div className="w-full max-w-2xl space-y-8 rounded-lg bg-gray-900 p-6">
282
+ <div className="text-center">
283
+ <h3 className="mb-2 text-lg font-medium text-white">
284
+ Variant Comparison
285
+ </h3>
286
+ <p className="text-sm text-white/60">
287
+ Different visual styles for various design needs
288
+ </p>
289
+ </div>
290
+
291
+ <div className="space-y-8">
292
+ {(
293
+ [
294
+ {
295
+ variant: "primary",
296
+ label: "Primary",
297
+ description: "Standard divider for main content separation",
298
+ useCase: "Main sections, page content",
299
+ },
300
+ {
301
+ variant: "secondary",
302
+ label: "Secondary",
303
+ description: "Subtle divider for related content groups",
304
+ useCase: "Subsections, related items",
305
+ },
306
+ {
307
+ variant: "dashed",
308
+ label: "Dashed",
309
+ description:
310
+ "Dotted line for temporary or conditional separations",
311
+ useCase: "Grouped items, optional content",
312
+ },
313
+ {
314
+ variant: "stylised",
315
+ label: "Stylised",
316
+ description: "Decorative divider with audio bar icon",
317
+ useCase: "Section breaks, audio interfaces",
318
+ },
319
+ ] as const
320
+ ).map((item) => (
321
+ <div key={item.variant} className="space-y-3">
322
+ <div className="space-y-1">
323
+ <h4 className="text-sm font-medium text-white">{item.label}</h4>
324
+ <p className="text-xs text-white/60">{item.description}</p>
325
+ <p className="text-xs text-white/40">Use case: {item.useCase}</p>
326
+ </div>
327
+ <Divider variant={item.variant} size="full_default" />
328
+ </div>
329
+ ))}
330
+ </div>
331
+ </div>
332
+ ),
333
+ parameters: {
334
+ docs: {
335
+ description: {
336
+ story:
337
+ "Side-by-side comparison of all divider variants with their recommended use cases.",
338
+ },
339
+ },
340
+ },
341
+ }
342
+
343
+ export const DashedVariations: Story = {
344
+ render: () => (
345
+ <div className="w-full max-w-2xl space-y-8 rounded-lg bg-gray-900 p-6">
346
+ <div className="text-center">
347
+ <h3 className="mb-2 text-lg font-medium text-white">
348
+ Dashed Divider Variations
349
+ </h3>
350
+ <p className="text-sm text-white/60">
351
+ Different sizes and orientations of dashed dividers
352
+ </p>
353
+ </div>
354
+
355
+ <div className="space-y-6">
356
+ <div>
357
+ <h4 className="mb-4 text-sm font-medium text-white">
358
+ Horizontal Dashed
359
+ </h4>
360
+ <div className="space-y-4">
361
+ {(
362
+ [
363
+ { size: "half_default", label: "Half Width" },
364
+ { size: "full_default", label: "Full Width" },
365
+ { size: "full_medium", label: "Medium Thickness" },
366
+ { size: "full_large", label: "Large Thickness" },
367
+ ] as const
368
+ ).map((item) => (
369
+ <div key={item.size} className="space-y-2">
370
+ <span className="text-xs text-white/60">{item.label}</span>
371
+ <Divider variant="dashed" size={item.size} />
372
+ </div>
373
+ ))}
374
+ </div>
375
+ </div>
376
+
377
+ <div>
378
+ <h4 className="mb-4 text-sm font-medium text-white">
379
+ Vertical Dashed
380
+ </h4>
381
+ <div className="flex h-16 items-center gap-6">
382
+ {(
383
+ [
384
+ { size: "half_default", label: "Half" },
385
+ { size: "full_default", label: "Full" },
386
+ { size: "full_medium", label: "Medium" },
387
+ { size: "full_large", label: "Large" },
388
+ ] as const
389
+ ).map((item) => (
390
+ <div key={item.size} className="flex flex-col items-center gap-2">
391
+ <span className="text-xs text-white/60">{item.label}</span>
392
+ <Divider
393
+ variant="dashed"
394
+ size={item.size}
395
+ orientation="vertical"
396
+ className="h-12"
397
+ />
398
+ </div>
399
+ ))}
400
+ </div>
401
+ </div>
402
+ </div>
403
+ </div>
404
+ ),
405
+ parameters: {
406
+ docs: {
407
+ description: {
408
+ story:
409
+ "Comprehensive showcase of dashed divider options in both horizontal and vertical orientations.",
410
+ },
411
+ },
412
+ },
413
+ }
414
+
415
+ export const OrientationExample: Story = {
416
+ render: () => (
417
+ <div className="w-full max-w-2xl space-y-8 rounded-lg bg-gray-900 p-6">
418
+ <div className="text-center">
419
+ <h3 className="mb-2 text-lg font-medium text-white">
420
+ Orientation Examples
421
+ </h3>
422
+ <p className="text-sm text-white/60">
423
+ Horizontal and vertical divider usage in layouts
424
+ </p>
425
+ </div>
426
+
427
+ <div className="space-y-8">
428
+ {/* Horizontal Example */}
429
+ <div className="space-y-4">
430
+ <h4 className="text-sm font-medium text-white">
431
+ Horizontal Dividers
432
+ </h4>
433
+ <div className="space-y-4 rounded-lg bg-white/5 p-4">
434
+ <div className="text-sm text-white/80">Section A: User Profile</div>
435
+ <Divider variant="primary" />
436
+ <div className="text-sm text-white/80">
437
+ Section B: Account Settings
438
+ </div>
439
+ <Divider variant="dashed" />
440
+ <div className="text-sm text-white/80">
441
+ Section C: Privacy Options
442
+ </div>
443
+ </div>
444
+ </div>
445
+
446
+ {/* Vertical Example */}
447
+ <div className="space-y-4">
448
+ <h4 className="text-sm font-medium text-white">Vertical Dividers</h4>
449
+ <div className="flex items-center gap-6 rounded-lg bg-white/5 p-4">
450
+ <div className="text-sm text-white/80">Profile</div>
451
+ <Divider variant="primary" orientation="vertical" className="h-8" />
452
+ <div className="text-sm text-white/80">Settings</div>
453
+ <Divider variant="dashed" orientation="vertical" className="h-8" />
454
+ <div className="text-sm text-white/80">Help</div>
455
+ <Divider
456
+ variant="secondary"
457
+ orientation="vertical"
458
+ className="h-8"
459
+ />
460
+ <div className="text-sm text-white/80">Logout</div>
461
+ </div>
462
+ </div>
463
+ </div>
464
+ </div>
465
+ ),
466
+ parameters: {
467
+ docs: {
468
+ description: {
469
+ story:
470
+ "Real-world examples showing how to use dividers in both horizontal and vertical layouts.",
471
+ },
472
+ },
473
+ },
474
+ }
475
+
476
+ export const RealWorldUsage: Story = {
477
+ render: () => (
478
+ <div className="w-full max-w-4xl space-y-8 rounded-lg bg-gray-900 p-6">
479
+ <div className="text-center">
480
+ <h3 className="mb-2 text-lg font-medium text-white">
481
+ Real World Usage
482
+ </h3>
483
+ <p className="text-sm text-white/60">
484
+ Practical examples in common UI patterns
485
+ </p>
486
+ </div>
487
+
488
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
489
+ {/* Card Layout */}
490
+ <div className="space-y-4">
491
+ <h4 className="text-sm font-medium text-white">Card Layout</h4>
492
+ <div className="space-y-4 rounded-lg bg-white/5 p-4">
493
+ <div className="flex items-center gap-3">
494
+ <div className="h-10 w-10 rounded-full bg-blue-600"></div>
495
+ <div>
496
+ <div className="text-sm font-medium text-white">John Doe</div>
497
+ <div className="text-xs text-white/60">Product Designer</div>
498
+ </div>
499
+ </div>
500
+ <Divider variant="dashed" />
501
+ <div className="text-sm text-white/80">
502
+ Passionate about creating intuitive user experiences and
503
+ innovative design solutions.
504
+ </div>
505
+ <Divider variant="secondary" />
506
+ <div className="flex gap-4 text-xs text-white/60">
507
+ <span>Joined: Jan 2024</span>
508
+ <span>Projects: 12</span>
509
+ </div>
510
+ </div>
511
+ </div>
512
+
513
+ {/* Navigation Layout */}
514
+ <div className="space-y-4">
515
+ <h4 className="text-sm font-medium text-white">Navigation Menu</h4>
516
+ <div className="space-y-3 rounded-lg bg-white/5 p-4">
517
+ <div className="cursor-pointer text-sm text-white hover:text-blue-400">
518
+ Dashboard
519
+ </div>
520
+ <Divider variant="secondary" />
521
+ <div className="cursor-pointer text-sm text-white hover:text-blue-400">
522
+ Projects
523
+ </div>
524
+ <Divider variant="secondary" />
525
+ <div className="cursor-pointer text-sm text-white hover:text-blue-400">
526
+ Team
527
+ </div>
528
+ <Divider variant="dashed" />
529
+ <div className="cursor-pointer text-sm text-white hover:text-blue-400">
530
+ Settings
531
+ </div>
532
+ <Divider variant="primary" />
533
+ <div className="cursor-pointer text-sm text-red-400 hover:text-red-300">
534
+ Logout
535
+ </div>
536
+ </div>
537
+ </div>
538
+
539
+ {/* Timeline Layout */}
540
+ <div className="space-y-4">
541
+ <h4 className="text-sm font-medium text-white">Content Timeline</h4>
542
+ <div className="space-y-4 rounded-lg bg-white/5 p-4">
543
+ <div className="space-y-2">
544
+ <div className="text-sm font-medium text-white">
545
+ Project Started
546
+ </div>
547
+ <div className="text-xs text-white/60">
548
+ Initial setup and planning phase
549
+ </div>
550
+ </div>
551
+ <Divider variant="stylised" />
552
+ <div className="space-y-2">
553
+ <div className="text-sm font-medium text-white">
554
+ Development Phase
555
+ </div>
556
+ <div className="text-xs text-white/60">
557
+ Core features implementation
558
+ </div>
559
+ </div>
560
+ <Divider variant="dashed" />
561
+ <div className="space-y-2">
562
+ <div className="text-sm font-medium text-white">Testing & QA</div>
563
+ <div className="text-xs text-white/60">
564
+ Quality assurance and bug fixes
565
+ </div>
566
+ </div>
567
+ </div>
568
+ </div>
569
+
570
+ {/* Toolbar Layout */}
571
+ <div className="space-y-4">
572
+ <h4 className="text-sm font-medium text-white">Toolbar Actions</h4>
573
+ <div className="rounded-lg bg-white/5 p-4">
574
+ <div className="flex items-center gap-4">
575
+ <button className="text-sm text-white/80 hover:text-white">
576
+ Edit
577
+ </button>
578
+ <Divider
579
+ variant="secondary"
580
+ orientation="vertical"
581
+ className="h-6"
582
+ />
583
+ <button className="text-sm text-white/80 hover:text-white">
584
+ Share
585
+ </button>
586
+ <Divider
587
+ variant="dashed"
588
+ orientation="vertical"
589
+ className="h-6"
590
+ />
591
+ <button className="text-sm text-white/80 hover:text-white">
592
+ Export
593
+ </button>
594
+ <Divider
595
+ variant="primary"
596
+ orientation="vertical"
597
+ className="h-6"
598
+ />
599
+ <button className="text-sm text-red-400 hover:text-red-300">
600
+ Delete
601
+ </button>
602
+ </div>
603
+ </div>
604
+ </div>
605
+ </div>
606
+ </div>
607
+ ),
608
+ parameters: {
609
+ docs: {
610
+ description: {
611
+ story:
612
+ "Real-world UI patterns showing effective use of different divider variants in common interface layouts.",
613
+ },
614
+ },
615
+ },
616
+ }
617
+
618
+ export const InteractivePlayground: Story = {
619
+ args: {
620
+ variant: "primary",
621
+ size: "full_default",
622
+ orientation: "horizontal",
623
+ className: "my-4 min-w-96",
624
+ },
625
+ parameters: {
626
+ docs: {
627
+ description: {
628
+ story:
629
+ "Interactive playground to experiment with all divider properties and see live changes.",
630
+ },
631
+ },
632
+ },
633
+ }