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,254 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import HelperText from "."
5
+
6
+ const meta: Meta<typeof HelperText> = {
7
+ title: "Components/UI/HelperText",
8
+ component: HelperText,
9
+ parameters: {
10
+ layout: "centered",
11
+ },
12
+ tags: ["autodocs"],
13
+ argTypes: {
14
+ variant: {
15
+ control: { type: "select" },
16
+ options: ["default", "error", "warning", "success"],
17
+ description:
18
+ "Visual style of the helper text indicating different states",
19
+ },
20
+ children: {
21
+ control: { type: "text" },
22
+ description: "The text content to display",
23
+ },
24
+ disabled: {
25
+ control: { type: "boolean" },
26
+ description: "Whether the helper text appears in a disabled state",
27
+ },
28
+ className: {
29
+ control: { type: "text" },
30
+ description: "Additional CSS classes to apply",
31
+ },
32
+ id: {
33
+ control: { type: "text" },
34
+ description: "HTML id attribute for accessibility",
35
+ },
36
+ },
37
+ }
38
+
39
+ export default meta
40
+ type Story = StoryObj<typeof meta>
41
+
42
+ export const Default: Story = {
43
+ args: {
44
+ variant: "default",
45
+ children: "This is helpful information about the field above.",
46
+ disabled: false,
47
+ },
48
+ }
49
+
50
+ export const Error: Story = {
51
+ args: {
52
+ variant: "error",
53
+ children: "This field contains an error that needs to be fixed.",
54
+ disabled: false,
55
+ },
56
+ }
57
+
58
+ export const Warning: Story = {
59
+ args: {
60
+ variant: "warning",
61
+ children: "Please review this field before continuing.",
62
+ disabled: false,
63
+ },
64
+ }
65
+
66
+ export const Success: Story = {
67
+ args: {
68
+ variant: "success",
69
+ children: "This field has been validated successfully.",
70
+ disabled: false,
71
+ },
72
+ }
73
+
74
+ export const Disabled: Story = {
75
+ args: {
76
+ variant: "default",
77
+ children: "This helper text is in a disabled state.",
78
+ disabled: true,
79
+ },
80
+ }
81
+
82
+ export const LongText: Story = {
83
+ args: {
84
+ variant: "default",
85
+ children:
86
+ "This is a longer helper text that demonstrates how the component handles more extensive content that might wrap to multiple lines in certain layouts.",
87
+ disabled: false,
88
+ },
89
+ }
90
+
91
+ export const WithCustomClassName: Story = {
92
+ args: {
93
+ variant: "default",
94
+ children: "Helper text with custom styling.",
95
+ className: "!text-blue-600 font-semibold",
96
+ disabled: false,
97
+ },
98
+ }
99
+
100
+ // Showcase all variants together
101
+ export const AllVariants: Story = {
102
+ render: () => (
103
+ <div className="w-96 space-y-4">
104
+ <div>
105
+ <h3 className="mb-2 text-sm font-medium">Default</h3>
106
+ <HelperText variant="default">
107
+ This is helpful information about the field above.
108
+ </HelperText>
109
+ </div>
110
+
111
+ <div>
112
+ <h3 className="mb-2 text-sm font-medium">Error</h3>
113
+ <HelperText variant="error">
114
+ This field contains an error that needs to be fixed.
115
+ </HelperText>
116
+ </div>
117
+
118
+ <div>
119
+ <h3 className="mb-2 text-sm font-medium">Warning</h3>
120
+ <HelperText variant="warning">
121
+ Please review this field before continuing.
122
+ </HelperText>
123
+ </div>
124
+
125
+ <div>
126
+ <h3 className="mb-2 text-sm font-medium">Success</h3>
127
+ <HelperText variant="success">
128
+ This field has been validated successfully.
129
+ </HelperText>
130
+ </div>
131
+
132
+ <div>
133
+ <h3 className="mb-2 text-sm font-medium">Disabled</h3>
134
+ <HelperText variant="default" disabled>
135
+ This helper text is in a disabled state.
136
+ </HelperText>
137
+ </div>
138
+ </div>
139
+ ),
140
+ }
141
+
142
+ // Interactive examples with form fields
143
+ export const WithFormField: Story = {
144
+ render: () => (
145
+ <div className="w-96 space-y-6">
146
+ <div>
147
+ <label className="mb-2 block text-sm font-medium">Email Address</label>
148
+ <input
149
+ type="email"
150
+ className="w-full rounded-md border border-gray-300 px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:outline-none"
151
+ placeholder="Enter your email"
152
+ />
153
+ <div className="mt-1">
154
+ <HelperText variant="default">
155
+ We'll never share your email with anyone else.
156
+ </HelperText>
157
+ </div>
158
+ </div>
159
+
160
+ <div>
161
+ <label className="mb-2 block text-sm font-medium">Password</label>
162
+ <input
163
+ type="password"
164
+ className="w-full rounded-md border border-red-300 px-3 py-2 focus:ring-2 focus:ring-red-500 focus:outline-none"
165
+ placeholder="Enter your password"
166
+ />
167
+ <div className="mt-1">
168
+ <HelperText variant="error">
169
+ Password must be at least 8 characters long.
170
+ </HelperText>
171
+ </div>
172
+ </div>
173
+
174
+ <div>
175
+ <label className="mb-2 block text-sm font-medium">Username</label>
176
+ <input
177
+ type="text"
178
+ className="w-full rounded-md border border-yellow-300 px-3 py-2 focus:ring-2 focus:ring-yellow-500 focus:outline-none"
179
+ placeholder="Enter your username"
180
+ value="john123"
181
+ />
182
+ <div className="mt-1">
183
+ <HelperText variant="warning">
184
+ This username is already taken. Consider adding numbers.
185
+ </HelperText>
186
+ </div>
187
+ </div>
188
+
189
+ <div>
190
+ <label className="mb-2 block text-sm font-medium">Display Name</label>
191
+ <input
192
+ type="text"
193
+ className="w-full rounded-md border border-green-300 px-3 py-2 focus:ring-2 focus:ring-green-500 focus:outline-none"
194
+ placeholder="Enter your display name"
195
+ value="John Doe"
196
+ />
197
+ <div className="mt-1">
198
+ <HelperText variant="success">
199
+ Perfect! This display name is available.
200
+ </HelperText>
201
+ </div>
202
+ </div>
203
+ </div>
204
+ ),
205
+ }
206
+
207
+ export const AccessibilityExample: Story = {
208
+ render: () => (
209
+ <div className="w-96 space-y-4">
210
+ <div>
211
+ <label
212
+ htmlFor="accessible-input"
213
+ className="mb-2 block text-sm font-medium"
214
+ >
215
+ Email Address *
216
+ </label>
217
+ <input
218
+ id="accessible-input"
219
+ type="email"
220
+ className="w-full rounded-md border border-gray-300 px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:outline-none"
221
+ placeholder="Enter your email"
222
+ aria-describedby="email-helper"
223
+ required
224
+ />
225
+ <div className="mt-1">
226
+ <HelperText variant="default" id="email-helper">
227
+ We'll use this email to send you important account updates.
228
+ </HelperText>
229
+ </div>
230
+ </div>
231
+
232
+ <div>
233
+ <label htmlFor="error-input" className="mb-2 block text-sm font-medium">
234
+ Password *
235
+ </label>
236
+ <input
237
+ id="error-input"
238
+ type="password"
239
+ className="w-full rounded-md border border-red-300 px-3 py-2 focus:ring-2 focus:ring-red-500 focus:outline-none"
240
+ placeholder="Enter your password"
241
+ aria-describedby="password-error"
242
+ aria-invalid="true"
243
+ required
244
+ />
245
+ <div className="mt-1">
246
+ <HelperText variant="error" id="password-error">
247
+ Password must contain at least one uppercase letter, one lowercase
248
+ letter, and one number.
249
+ </HelperText>
250
+ </div>
251
+ </div>
252
+ </div>
253
+ ),
254
+ }
@@ -0,0 +1,102 @@
1
+ import React, { forwardRef, ReactNode } from "react"
2
+ import { Case, Default, SwitchCase } from "@components/switch-case"
3
+ import { Tag } from "@components/tag"
4
+ import { AlertIcon } from "@icons/alert-icon"
5
+ import { CrossCircleIcon } from "@icons/cross-circle-icon"
6
+ import { TickCircleIcon } from "@icons/tick-circle-icon"
7
+ import { cn } from "@lib/utils"
8
+
9
+ type HelperTextVariant = "default" | "error" | "warning" | "success"
10
+
11
+ interface HelperTextProps {
12
+ variant: HelperTextVariant
13
+ className?: string
14
+ children: ReactNode
15
+ disabled?: boolean
16
+ id?: string
17
+ }
18
+
19
+ const HelperText = forwardRef<HTMLSpanElement, HelperTextProps>(
20
+ ({ variant, className = "", children, disabled, id }, ref) => {
21
+ return (
22
+ <SwitchCase value={variant}>
23
+ <Case value="error">
24
+ <Tag
25
+ className={cn("w-full justify-normal normal-case", className)}
26
+ ref={ref}
27
+ variant="system"
28
+ leftIcon={
29
+ <span className="inline-block w-4">
30
+ <CrossCircleIcon color="var(--color-fm-icon-negative)" />
31
+ </span>
32
+ }
33
+ size="sm"
34
+ color="negative"
35
+ id={id}
36
+ >
37
+ {children}
38
+ </Tag>
39
+ </Case>
40
+ <Case value="warning">
41
+ <Tag
42
+ className={cn("w-full justify-normal normal-case", className)}
43
+ ref={ref}
44
+ variant="system"
45
+ leftIcon={
46
+ <span className="inline-block w-4">
47
+ <AlertIcon color="var(--color-fm-icon-contrast)" />
48
+ </span>
49
+ }
50
+ size="sm"
51
+ color="warning"
52
+ id={id}
53
+ >
54
+ {children}
55
+ </Tag>
56
+ </Case>
57
+ <Case value="success">
58
+ <Tag
59
+ className={cn("w-full justify-normal normal-case", className)}
60
+ ref={ref}
61
+ variant="system"
62
+ leftIcon={
63
+ <span className="inline-block w-4">
64
+ <TickCircleIcon color="var(--color-fm-icon-positive)" />
65
+ </span>
66
+ }
67
+ size="sm"
68
+ color="positive"
69
+ id={id}
70
+ >
71
+ {children}
72
+ </Tag>
73
+ </Case>
74
+ <Default>
75
+ <Tag
76
+ className={cn(
77
+ "w-full justify-normal !px-0 normal-case",
78
+ {
79
+ "text-fm-inactive": disabled,
80
+ "text-fm-tertiary": !disabled,
81
+ },
82
+ className
83
+ )}
84
+ ref={ref}
85
+ variant="system"
86
+ emphasis="tertiary"
87
+ leftIcon={false}
88
+ size="sm"
89
+ id={id}
90
+ >
91
+ {children}
92
+ </Tag>
93
+ </Default>
94
+ </SwitchCase>
95
+ )
96
+ }
97
+ )
98
+ HelperText.displayName = "HelperText"
99
+
100
+ export default HelperText
101
+ export { HelperText }
102
+ export type { HelperTextProps, HelperTextVariant }
@@ -0,0 +1,18 @@
1
+ export const meta = {
2
+ dependencies: {},
3
+ devDependencies: {},
4
+ internalDependencies: [
5
+ "tag",
6
+ "switch-case",
7
+ "alert-icon",
8
+ "cross-circle-icon",
9
+ "tick-circle-icon",
10
+ ],
11
+ tokens: [
12
+ "--color-fm-icon-warning",
13
+ "--color-fm-icon-negative",
14
+ "--color-fm-icon-positive",
15
+ "--color-fm-inactive",
16
+ "--color-fm-tertiary",
17
+ ],
18
+ }