@nlabs/gothamui 1.8.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 (426) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +36 -0
  3. package/README.md +768 -0
  4. package/docs/assets/gothamui-app-architecture.svg +159 -0
  5. package/docs/assets/gothamui-logo.png +0 -0
  6. package/docs/assets/gothamui-logo.svg +42 -0
  7. package/docs/render-performance.md +34 -0
  8. package/lib/actions/GothamActions.d.ts +42 -0
  9. package/lib/actions/GothamActions.js +67 -0
  10. package/lib/actions/MarkdownActions.d.ts +4 -0
  11. package/lib/actions/MarkdownActions.js +48 -0
  12. package/lib/app.d.ts +1 -0
  13. package/lib/app.js +198 -0
  14. package/lib/components/Alert/Alert.d.ts +8 -0
  15. package/lib/components/Alert/Alert.js +24 -0
  16. package/lib/components/Alert/Alert.stories.js +59 -0
  17. package/lib/components/AuthRoute/AuthRoute.d.ts +3 -0
  18. package/lib/components/AuthRoute/AuthRoute.js +21 -0
  19. package/lib/components/AuthRoute/AuthRoute.stories.js +45 -0
  20. package/lib/components/AutocompleteField/AutocompleteField.d.ts +24 -0
  21. package/lib/components/AutocompleteField/AutocompleteField.js +148 -0
  22. package/lib/components/AutocompleteField/AutocompleteField.stories.js +62 -0
  23. package/lib/components/Avatar/Avatar.d.ts +29 -0
  24. package/lib/components/Avatar/Avatar.js +154 -0
  25. package/lib/components/Avatar/Avatar.stories.js +105 -0
  26. package/lib/components/Badge/Badge.d.ts +9 -0
  27. package/lib/components/Badge/Badge.js +22 -0
  28. package/lib/components/Badge/Badge.stories.js +53 -0
  29. package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +19 -0
  30. package/lib/components/Breadcrumbs/Breadcrumbs.js +74 -0
  31. package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +95 -0
  32. package/lib/components/Button/Button.d.ts +25 -0
  33. package/lib/components/Button/Button.js +157 -0
  34. package/lib/components/Button/Button.stories.js +119 -0
  35. package/lib/components/Card/Card.d.ts +8 -0
  36. package/lib/components/Card/Card.js +39 -0
  37. package/lib/components/Card/Card.stories.js +60 -0
  38. package/lib/components/CategoryGrid/CategoryGrid.d.ts +15 -0
  39. package/lib/components/CategoryGrid/CategoryGrid.js +42 -0
  40. package/lib/components/CategoryGrid/CategoryGrid.stories.js +35 -0
  41. package/lib/components/Chat/AudioMessage/AudioMessage.css +1 -0
  42. package/lib/components/Chat/AudioMessage/AudioMessage.d.ts +3 -0
  43. package/lib/components/Chat/AudioMessage/AudioMessage.js +28 -0
  44. package/lib/components/Chat/Avatar/Avatar.css +1 -0
  45. package/lib/components/Chat/Avatar/Avatar.d.ts +3 -0
  46. package/lib/components/Chat/Avatar/Avatar.js +72 -0
  47. package/lib/components/Chat/Button/Button.css +1 -0
  48. package/lib/components/Chat/Button/Button.d.ts +3 -0
  49. package/lib/components/Chat/Button/Button.js +37 -0
  50. package/lib/components/Chat/Chat.stories.js +688 -0
  51. package/lib/components/Chat/ChatItem/ChatItem.css +1 -0
  52. package/lib/components/Chat/ChatItem/ChatItem.d.ts +3 -0
  53. package/lib/components/Chat/ChatItem/ChatItem.js +183 -0
  54. package/lib/components/Chat/ChatList/ChatList.css +1 -0
  55. package/lib/components/Chat/ChatList/ChatList.d.ts +3 -0
  56. package/lib/components/Chat/ChatList/ChatList.js +84 -0
  57. package/lib/components/Chat/Circle/Circle.d.ts +3 -0
  58. package/lib/components/Chat/Circle/Circle.js +27 -0
  59. package/lib/components/Chat/Dropdown/Dropdown.css +1 -0
  60. package/lib/components/Chat/Dropdown/Dropdown.d.ts +3 -0
  61. package/lib/components/Chat/Dropdown/Dropdown.js +66 -0
  62. package/lib/components/Chat/FileMessage/FileMessage.css +1 -0
  63. package/lib/components/Chat/FileMessage/FileMessage.d.ts +3 -0
  64. package/lib/components/Chat/FileMessage/FileMessage.js +77 -0
  65. package/lib/components/Chat/Input/Input.css +1 -0
  66. package/lib/components/Chat/Input/Input.d.ts +3 -0
  67. package/lib/components/Chat/Input/Input.js +108 -0
  68. package/lib/components/Chat/LocationMessage/LocationMessage.css +1 -0
  69. package/lib/components/Chat/LocationMessage/LocationMessage.d.ts +3 -0
  70. package/lib/components/Chat/LocationMessage/LocationMessage.js +36 -0
  71. package/lib/components/Chat/MeetingItem/MeetingItem.css +1 -0
  72. package/lib/components/Chat/MeetingItem/MeetingItem.d.ts +3 -0
  73. package/lib/components/Chat/MeetingItem/MeetingItem.js +106 -0
  74. package/lib/components/Chat/MeetingLink/MeetingLink.css +1 -0
  75. package/lib/components/Chat/MeetingLink/MeetingLink.d.ts +3 -0
  76. package/lib/components/Chat/MeetingLink/MeetingLink.js +26 -0
  77. package/lib/components/Chat/MeetingList/MeetingList.css +1 -0
  78. package/lib/components/Chat/MeetingList/MeetingList.d.ts +3 -0
  79. package/lib/components/Chat/MeetingList/MeetingList.js +52 -0
  80. package/lib/components/Chat/MeetingMessage/MeetingMessage.css +1 -0
  81. package/lib/components/Chat/MeetingMessage/MeetingMessage.d.ts +3 -0
  82. package/lib/components/Chat/MeetingMessage/MeetingMessage.js +227 -0
  83. package/lib/components/Chat/MessageBox/MessageBox.css +1 -0
  84. package/lib/components/Chat/MessageBox/MessageBox.d.ts +3 -0
  85. package/lib/components/Chat/MessageBox/MessageBox.js +263 -0
  86. package/lib/components/Chat/MessageList/MessageList.css +1 -0
  87. package/lib/components/Chat/MessageList/MessageList.d.ts +2 -0
  88. package/lib/components/Chat/MessageList/MessageList.js +196 -0
  89. package/lib/components/Chat/Navbar/Navbar.css +1 -0
  90. package/lib/components/Chat/Navbar/Navbar.d.ts +3 -0
  91. package/lib/components/Chat/Navbar/Navbar.js +21 -0
  92. package/lib/components/Chat/PhotoMessage/PhotoMessage.css +1 -0
  93. package/lib/components/Chat/PhotoMessage/PhotoMessage.d.ts +3 -0
  94. package/lib/components/Chat/PhotoMessage/PhotoMessage.js +73 -0
  95. package/lib/components/Chat/Popup/Popup.css +1 -0
  96. package/lib/components/Chat/Popup/Popup.d.ts +3 -0
  97. package/lib/components/Chat/Popup/Popup.js +45 -0
  98. package/lib/components/Chat/README.md +50 -0
  99. package/lib/components/Chat/ReplyMessage/ReplyMessage.css +1 -0
  100. package/lib/components/Chat/ReplyMessage/ReplyMessage.d.ts +3 -0
  101. package/lib/components/Chat/ReplyMessage/ReplyMessage.js +42 -0
  102. package/lib/components/Chat/SideBar/SideBar.css +1 -0
  103. package/lib/components/Chat/SideBar/SideBar.d.ts +3 -0
  104. package/lib/components/Chat/SideBar/SideBar.js +21 -0
  105. package/lib/components/Chat/SpotifyMessage/SpotifyMessage.css +1 -0
  106. package/lib/components/Chat/SpotifyMessage/SpotifyMessage.d.ts +3 -0
  107. package/lib/components/Chat/SpotifyMessage/SpotifyMessage.js +28 -0
  108. package/lib/components/Chat/SystemMessage/SystemMessage.css +1 -0
  109. package/lib/components/Chat/SystemMessage/SystemMessage.d.ts +3 -0
  110. package/lib/components/Chat/SystemMessage/SystemMessage.js +14 -0
  111. package/lib/components/Chat/VideoMessage/VideoMessage.css +1 -0
  112. package/lib/components/Chat/VideoMessage/VideoMessage.d.ts +3 -0
  113. package/lib/components/Chat/VideoMessage/VideoMessage.js +88 -0
  114. package/lib/components/Chat/assets/img/leftArrow.svg +6 -0
  115. package/lib/components/Chat/assets/img/rightArrow.svg +6 -0
  116. package/lib/components/Chat/index.d.ts +25 -0
  117. package/lib/components/Chat/index.js +27 -0
  118. package/lib/components/Chat/type.d.js +52 -0
  119. package/lib/components/Chat/utils/formatRelativeDate.d.ts +4 -0
  120. package/lib/components/Chat/utils/formatRelativeDate.js +110 -0
  121. package/lib/components/Checkbox/Checkbox.d.ts +15 -0
  122. package/lib/components/Checkbox/Checkbox.js +106 -0
  123. package/lib/components/Checkbox/Checkbox.stories.js +51 -0
  124. package/lib/components/ComponentUtils/renderWithAsChild.d.ts +9 -0
  125. package/lib/components/ComponentUtils/renderWithAsChild.js +27 -0
  126. package/lib/components/Container/Container.d.ts +7 -0
  127. package/lib/components/Container/Container.js +16 -0
  128. package/lib/components/Container/Container.stories.js +36 -0
  129. package/lib/components/DateField/DateField.d.ts +22 -0
  130. package/lib/components/DateField/DateField.js +145 -0
  131. package/lib/components/DateField/DateField.stories.js +125 -0
  132. package/lib/components/DateField/DatePicker.d.ts +9 -0
  133. package/lib/components/DateField/DatePicker.js +205 -0
  134. package/lib/components/DateField/DatePicker.stories.js +33 -0
  135. package/lib/components/DescriptionList/DescriptionList.d.ts +4 -0
  136. package/lib/components/DescriptionList/DescriptionList.js +19 -0
  137. package/lib/components/DescriptionList/DescriptionList.stories.js +34 -0
  138. package/lib/components/Dialog/Dialog.d.ts +25 -0
  139. package/lib/components/Dialog/Dialog.js +66 -0
  140. package/lib/components/Dialog/Dialog.stories.js +88 -0
  141. package/lib/components/DropUpload/DropUpload.d.ts +37 -0
  142. package/lib/components/DropUpload/DropUpload.js +323 -0
  143. package/lib/components/DropUpload/DropUpload.stories.js +48 -0
  144. package/lib/components/Empty/Empty.d.ts +11 -0
  145. package/lib/components/Empty/Empty.js +39 -0
  146. package/lib/components/Empty/Empty.stories.js +52 -0
  147. package/lib/components/EmptyState/EmptyState.d.ts +15 -0
  148. package/lib/components/EmptyState/EmptyState.js +44 -0
  149. package/lib/components/EmptyState/EmptyState.stories.js +36 -0
  150. package/lib/components/ErrorMessage/ErrorMessage.d.ts +7 -0
  151. package/lib/components/ErrorMessage/ErrorMessage.js +20 -0
  152. package/lib/components/ErrorMessage/ErrorMessage.stories.js +25 -0
  153. package/lib/components/FaqSection/FaqSection.d.ts +14 -0
  154. package/lib/components/FaqSection/FaqSection.js +37 -0
  155. package/lib/components/FaqSection/FaqSection.stories.js +31 -0
  156. package/lib/components/Fieldset/Fieldset.d.ts +21 -0
  157. package/lib/components/Fieldset/Fieldset.js +39 -0
  158. package/lib/components/Fieldset/Fieldset.stories.js +42 -0
  159. package/lib/components/Footer/Footer.d.ts +26 -0
  160. package/lib/components/Footer/Footer.js +119 -0
  161. package/lib/components/Footer/Footer.stories.js +184 -0
  162. package/lib/components/Form/Form.d.ts +42 -0
  163. package/lib/components/Form/Form.js +198 -0
  164. package/lib/components/Form/Form.stories.js +65 -0
  165. package/lib/components/Form/FormContext.d.ts +35 -0
  166. package/lib/components/Form/FormContext.js +71 -0
  167. package/lib/components/GothamRoute/GothamRoute.d.ts +0 -0
  168. package/lib/components/GothamRoute/GothamRoute.js +56 -0
  169. package/lib/components/GothamRouter/GothamRouter.d.ts +0 -0
  170. package/lib/components/GothamRouter/GothamRouter.js +52 -0
  171. package/lib/components/Heading/Heading.d.ts +7 -0
  172. package/lib/components/Heading/Heading.js +20 -0
  173. package/lib/components/Heading/Heading.stories.js +51 -0
  174. package/lib/components/IncentiveGrid/IncentiveGrid.d.ts +15 -0
  175. package/lib/components/IncentiveGrid/IncentiveGrid.js +34 -0
  176. package/lib/components/IncentiveGrid/IncentiveGrid.stories.js +41 -0
  177. package/lib/components/InputField/InputField.d.ts +25 -0
  178. package/lib/components/InputField/InputField.js +68 -0
  179. package/lib/components/InputField/InputField.stories.js +58 -0
  180. package/lib/components/Item/Item.d.ts +25 -0
  181. package/lib/components/Item/Item.js +79 -0
  182. package/lib/components/Item/Item.stories.js +94 -0
  183. package/lib/components/Kbd/Kbd.d.ts +2 -0
  184. package/lib/components/Kbd/Kbd.js +9 -0
  185. package/lib/components/Kbd/Kbd.stories.js +24 -0
  186. package/lib/components/Label/Label.d.ts +11 -0
  187. package/lib/components/Label/Label.js +23 -0
  188. package/lib/components/Label/Label.stories.js +38 -0
  189. package/lib/components/Link/Link.d.ts +7 -0
  190. package/lib/components/Link/Link.js +13 -0
  191. package/lib/components/Link/Link.stories.js +28 -0
  192. package/lib/components/ListContainer/ListContainer.d.ts +8 -0
  193. package/lib/components/ListContainer/ListContainer.js +14 -0
  194. package/lib/components/ListContainer/ListContainer.stories.js +45 -0
  195. package/lib/components/Loader/Loader.d.ts +9 -0
  196. package/lib/components/Loader/Loader.js +36 -0
  197. package/lib/components/Loader/Loader.stories.js +94 -0
  198. package/lib/components/LogoCloud/LogoCloud.d.ts +15 -0
  199. package/lib/components/LogoCloud/LogoCloud.js +43 -0
  200. package/lib/components/LogoCloud/LogoCloud.stories.js +28 -0
  201. package/lib/components/Markdown/Markdown.d.ts +8 -0
  202. package/lib/components/Markdown/Markdown.js +64 -0
  203. package/lib/components/Markdown/Markdown.stories.js +34 -0
  204. package/lib/components/MediaLightbox/MediaLightbox.d.ts +22 -0
  205. package/lib/components/MediaLightbox/MediaLightbox.js +80 -0
  206. package/lib/components/MediaObject/MediaObject.d.ts +8 -0
  207. package/lib/components/MediaObject/MediaObject.js +37 -0
  208. package/lib/components/MediaObject/MediaObject.stories.js +28 -0
  209. package/lib/components/Navbar/Navbar.d.ts +43 -0
  210. package/lib/components/Navbar/Navbar.js +213 -0
  211. package/lib/components/Navbar/Navbar.stories.js +235 -0
  212. package/lib/components/NotFound/NotFound.d.ts +34 -0
  213. package/lib/components/NotFound/NotFound.js +351 -0
  214. package/lib/components/NotFound/NotFound.stories.js +80 -0
  215. package/lib/components/Notify/Notify.d.ts +18 -0
  216. package/lib/components/Notify/Notify.js +178 -0
  217. package/lib/components/Notify/Notify.stories.js +148 -0
  218. package/lib/components/Notify/NotifyExample.d.ts +1 -0
  219. package/lib/components/Notify/NotifyExample.js +174 -0
  220. package/lib/components/Notify/README.md +103 -0
  221. package/lib/components/Pagination/Pagination.d.ts +18 -0
  222. package/lib/components/Pagination/Pagination.js +225 -0
  223. package/lib/components/Pagination/Pagination.stories.js +69 -0
  224. package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
  225. package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.js +88 -0
  226. package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.stories.js +16 -0
  227. package/lib/components/PaymentMethodPanel/PaymentMethodPanel.d.ts +18 -0
  228. package/lib/components/PaymentMethodPanel/PaymentMethodPanel.js +113 -0
  229. package/lib/components/PaymentMethodPanel/PaymentMethodPanel.stories.js +88 -0
  230. package/lib/components/Pricing/Pricing.d.ts +78 -0
  231. package/lib/components/Pricing/Pricing.js +764 -0
  232. package/lib/components/Pricing/Pricing.stories.js +146 -0
  233. package/lib/components/ProductGrid/ProductGrid.d.ts +23 -0
  234. package/lib/components/ProductGrid/ProductGrid.js +79 -0
  235. package/lib/components/ProductGrid/ProductGrid.stories.js +50 -0
  236. package/lib/components/ProgressSteps/ProgressSteps.d.ts +13 -0
  237. package/lib/components/ProgressSteps/ProgressSteps.js +51 -0
  238. package/lib/components/ProgressSteps/ProgressSteps.stories.js +35 -0
  239. package/lib/components/RadioField/RadioField.d.ts +16 -0
  240. package/lib/components/RadioField/RadioField.js +63 -0
  241. package/lib/components/RadioField/RadioField.stories.js +140 -0
  242. package/lib/components/ReviewList/ReviewList.d.ts +15 -0
  243. package/lib/components/ReviewList/ReviewList.js +51 -0
  244. package/lib/components/ReviewList/ReviewList.stories.js +29 -0
  245. package/lib/components/SectionHeader/SectionHeader.d.ts +9 -0
  246. package/lib/components/SectionHeader/SectionHeader.js +36 -0
  247. package/lib/components/SectionHeader/SectionHeader.stories.js +35 -0
  248. package/lib/components/SelectField/SelectField.d.ts +18 -0
  249. package/lib/components/SelectField/SelectField.js +145 -0
  250. package/lib/components/SelectField/SelectField.stories.js +155 -0
  251. package/lib/components/SelectField/SelectOption.d.ts +13 -0
  252. package/lib/components/SelectField/SelectOption.js +40 -0
  253. package/lib/components/SelectField/SelectOption.stories.js +40 -0
  254. package/lib/components/Separator/Separator.d.ts +6 -0
  255. package/lib/components/Separator/Separator.js +13 -0
  256. package/lib/components/Separator/Separator.stories.js +70 -0
  257. package/lib/components/Skeleton/Skeleton.d.ts +2 -0
  258. package/lib/components/Skeleton/Skeleton.js +9 -0
  259. package/lib/components/Skeleton/Skeleton.stories.js +24 -0
  260. package/lib/components/Svg/Svg.d.ts +9 -0
  261. package/lib/components/Svg/Svg.js +25 -0
  262. package/lib/components/Svg/Svg.stories.js +34 -0
  263. package/lib/components/Switch/Switch.d.ts +12 -0
  264. package/lib/components/Switch/Switch.js +54 -0
  265. package/lib/components/Switch/Switch.stories.js +61 -0
  266. package/lib/components/Table/Table.d.ts +18 -0
  267. package/lib/components/Table/Table.js +99 -0
  268. package/lib/components/Table/Table.stories.js +79 -0
  269. package/lib/components/Tabs/Tabs.d.ts +17 -0
  270. package/lib/components/Tabs/Tabs.js +85 -0
  271. package/lib/components/Tabs/Tabs.stories.js +45 -0
  272. package/lib/components/Text/Text.d.ts +5 -0
  273. package/lib/components/Text/Text.js +24 -0
  274. package/lib/components/Text/Text.stories.js +35 -0
  275. package/lib/components/TextField/TextField.d.ts +31 -0
  276. package/lib/components/TextField/TextField.js +91 -0
  277. package/lib/components/TextField/TextField.stories.js +158 -0
  278. package/lib/components/Textarea/Textarea.d.ts +5 -0
  279. package/lib/components/Textarea/Textarea.js +10 -0
  280. package/lib/components/Textarea/Textarea.stories.js +32 -0
  281. package/lib/components/index.d.ts +60 -0
  282. package/lib/components/index.js +62 -0
  283. package/lib/config/appConfig.d.ts +5 -0
  284. package/lib/config/appConfig.js +20 -0
  285. package/lib/constants/AuthConstants.d.ts +8 -0
  286. package/lib/constants/AuthConstants.js +9 -0
  287. package/lib/constants/GothamConstants.d.ts +24 -0
  288. package/lib/constants/GothamConstants.js +25 -0
  289. package/lib/constants/MarkdownConstants.d.ts +8 -0
  290. package/lib/constants/MarkdownConstants.js +9 -0
  291. package/lib/constants/MessageConstants.d.ts +10 -0
  292. package/lib/constants/MessageConstants.js +11 -0
  293. package/lib/docs/analytics.md +231 -0
  294. package/lib/docs/api-reference.md +364 -0
  295. package/lib/docs/comparison.md +83 -0
  296. package/lib/docs/containers.md +11 -0
  297. package/lib/docs/gettingStarted.md +338 -0
  298. package/lib/docs/payments.md +79 -0
  299. package/lib/editor/CodeEditor.d.ts +11 -0
  300. package/lib/editor/CodeEditor.js +15 -0
  301. package/lib/editor/CodeEditor.stories.js +24 -0
  302. package/lib/editor/index.d.ts +1 -0
  303. package/lib/editor/index.js +3 -0
  304. package/lib/errors/UserError.d.ts +8 -0
  305. package/lib/errors/UserError.js +12 -0
  306. package/lib/examples/OptimizedFormExample.d.ts +1 -0
  307. package/lib/examples/OptimizedFormExample.js +130 -0
  308. package/lib/form/index.d.ts +11 -0
  309. package/lib/form/index.js +13 -0
  310. package/lib/hooks/useIsMobile.d.ts +1 -0
  311. package/lib/hooks/useIsMobile.js +12 -0
  312. package/lib/i18n/index.d.ts +8 -0
  313. package/lib/i18n/index.js +7 -0
  314. package/lib/icons/Dual Ring-1s-100px.svg +1 -0
  315. package/lib/icons/gotham-logo.svg +17 -0
  316. package/lib/icons/gotham.svg +8 -0
  317. package/lib/icons/index.d.ts +5 -0
  318. package/lib/icons/index.js +6 -0
  319. package/lib/icons/pencil.svg +6 -0
  320. package/lib/img/arkhamjs-logo.png +0 -0
  321. package/lib/img/logo.png +0 -0
  322. package/lib/index.d.ts +25 -0
  323. package/lib/index.js +25 -0
  324. package/lib/router/index.d.ts +5 -0
  325. package/lib/router/index.js +6 -0
  326. package/lib/stores/GothamAppStore.d.ts +35 -0
  327. package/lib/stores/GothamAppStore.js +70 -0
  328. package/lib/stories/Button.d.ts +28 -0
  329. package/lib/stories/Button.js +22 -0
  330. package/lib/stories/Header.d.ts +12 -0
  331. package/lib/stories/Header.js +78 -0
  332. package/lib/stories/Page.d.ts +3 -0
  333. package/lib/stories/Page.js +108 -0
  334. package/lib/stories/assets/accessibility.png +0 -0
  335. package/lib/stories/assets/accessibility.svg +5 -0
  336. package/lib/stories/assets/addon-library.png +0 -0
  337. package/lib/stories/assets/assets.png +0 -0
  338. package/lib/stories/assets/context.png +0 -0
  339. package/lib/stories/assets/discord.svg +15 -0
  340. package/lib/stories/assets/docs.png +0 -0
  341. package/lib/stories/assets/figma-plugin.png +0 -0
  342. package/lib/stories/assets/github.svg +3 -0
  343. package/lib/stories/assets/share.png +0 -0
  344. package/lib/stories/assets/styling.png +0 -0
  345. package/lib/stories/assets/testing.png +0 -0
  346. package/lib/stories/assets/theming.png +0 -0
  347. package/lib/stories/assets/tutorials.svg +12 -0
  348. package/lib/stories/assets/youtube.svg +4 -0
  349. package/lib/stories/button.css +1 -0
  350. package/lib/stories/header.css +1 -0
  351. package/lib/stories/page.css +1 -0
  352. package/lib/styles/chat.css +1 -0
  353. package/lib/styles/index.css +2 -0
  354. package/lib/styles/tailwind.css +1 -0
  355. package/lib/types/assets.d.js +2 -0
  356. package/lib/types/gotham.d.ts +12 -0
  357. package/lib/types/gotham.js +3 -0
  358. package/lib/types/vitest-globals.d.js +3 -0
  359. package/lib/utils/GothamContext.d.ts +14 -0
  360. package/lib/utils/GothamContext.js +14 -0
  361. package/lib/utils/awsRum.d.ts +23 -0
  362. package/lib/utils/awsRum.js +50 -0
  363. package/lib/utils/colorUtils.d.ts +20 -0
  364. package/lib/utils/colorUtils.js +499 -0
  365. package/lib/utils/contentUtils.d.ts +2 -0
  366. package/lib/utils/contentUtils.js +18 -0
  367. package/lib/utils/i18nUtil.d.ts +1 -0
  368. package/lib/utils/i18nUtil.js +7 -0
  369. package/lib/utils/imageUtils.d.ts +5 -0
  370. package/lib/utils/imageUtils.js +48 -0
  371. package/lib/utils/interactionAnalytics.d.ts +10 -0
  372. package/lib/utils/interactionAnalytics.js +142 -0
  373. package/lib/utils/navEventQueue.d.ts +6 -0
  374. package/lib/utils/navEventQueue.js +50 -0
  375. package/lib/utils/refUtils.d.ts +2 -0
  376. package/lib/utils/refUtils.js +11 -0
  377. package/lib/utils/routeUtils.d.ts +12 -0
  378. package/lib/utils/routeUtils.js +109 -0
  379. package/lib/utils/sizeUtils.d.ts +5 -0
  380. package/lib/utils/sizeUtils.js +6 -0
  381. package/lib/utils/storyInteractions.d.ts +6 -0
  382. package/lib/utils/storyInteractions.js +45 -0
  383. package/lib/utils/storyUtils.d.ts +1 -0
  384. package/lib/utils/storyUtils.js +11 -0
  385. package/lib/utils/testUtils.d.ts +3 -0
  386. package/lib/utils/testUtils.js +56 -0
  387. package/lib/utils/timer.d.ts +21 -0
  388. package/lib/utils/timer.js +38 -0
  389. package/lib/utils/useBreakpoint.d.ts +6 -0
  390. package/lib/utils/useBreakpoint.js +56 -0
  391. package/lib/utils/viewPerformance.d.ts +34 -0
  392. package/lib/utils/viewPerformance.js +103 -0
  393. package/lib/utils/viewUtils.d.ts +9 -0
  394. package/lib/utils/viewUtils.js +44 -0
  395. package/lib/views/AuthSignInView/AuthSignInView.d.ts +20 -0
  396. package/lib/views/AuthSignInView/AuthSignInView.js +107 -0
  397. package/lib/views/AuthSignInView/AuthSignInView.stories.js +29 -0
  398. package/lib/views/AuthSignUpView/AuthSignUpView.d.ts +21 -0
  399. package/lib/views/AuthSignUpView/AuthSignUpView.js +146 -0
  400. package/lib/views/AuthSignUpView/AuthSignUpView.stories.js +30 -0
  401. package/lib/views/AuthView/AuthView.d.ts +16 -0
  402. package/lib/views/AuthView/AuthView.js +60 -0
  403. package/lib/views/AuthView/AuthView.stories.js +34 -0
  404. package/lib/views/DefaultView/DefaultView.d.ts +5 -0
  405. package/lib/views/DefaultView/DefaultView.js +134 -0
  406. package/lib/views/Gotham/Gotham.d.ts +44 -0
  407. package/lib/views/Gotham/Gotham.js +24 -0
  408. package/lib/views/Gotham/Gotham.stories.js +31 -0
  409. package/lib/views/Gotham/GothamListeners.d.ts +0 -0
  410. package/lib/views/Gotham/GothamListeners.js +2 -0
  411. package/lib/views/Gotham/GothamProvider.d.ts +43 -0
  412. package/lib/views/Gotham/GothamProvider.js +217 -0
  413. package/lib/views/Gotham/GothamRoot.d.ts +6 -0
  414. package/lib/views/Gotham/GothamRoot.js +69 -0
  415. package/lib/views/HomeView/HomeView.d.ts +10 -0
  416. package/lib/views/HomeView/HomeView.js +134 -0
  417. package/lib/views/LoaderView/LoaderView.d.ts +8 -0
  418. package/lib/views/LoaderView/LoaderView.js +30 -0
  419. package/lib/views/MenuView/MenuView.d.ts +13 -0
  420. package/lib/views/MenuView/MenuView.js +305 -0
  421. package/lib/views/NotFoundView/NotFoundView.d.ts +2 -0
  422. package/lib/views/NotFoundView/NotFoundView.js +12 -0
  423. package/lib/views/index.d.ts +11 -0
  424. package/lib/views/index.js +13 -0
  425. package/package.json +202 -0
  426. package/styles/tailwind.css +1 -0
@@ -0,0 +1,146 @@
1
+ import React from 'react';
2
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
3
+ import { Pricing } from './Pricing.js';
4
+ const tiers = [
5
+ {
6
+ ctaLabel: 'Choose starter',
7
+ description: 'For small component libraries.',
8
+ features: [
9
+ 'Story coverage',
10
+ 'Basic controls',
11
+ 'Smoke interactions'
12
+ ],
13
+ href: '#starter',
14
+ id: 'starter',
15
+ name: 'Starter',
16
+ price: {
17
+ annually: '$190',
18
+ monthly: '$19'
19
+ }
20
+ },
21
+ {
22
+ badge: 'Popular',
23
+ ctaLabel: 'Choose growth',
24
+ description: 'For production design systems.',
25
+ featured: true,
26
+ features: [
27
+ 'Full controls',
28
+ 'Interaction tests',
29
+ 'Release checks'
30
+ ],
31
+ href: '#growth',
32
+ id: 'growth',
33
+ name: 'Growth',
34
+ price: {
35
+ annually: '$490',
36
+ monthly: '$49'
37
+ }
38
+ }
39
+ ];
40
+ const comparisonSections = [
41
+ {
42
+ features: [
43
+ {
44
+ name: 'Controls',
45
+ tiers: {
46
+ Growth: true,
47
+ Starter: true
48
+ }
49
+ },
50
+ {
51
+ name: 'Interaction stories',
52
+ tiers: {
53
+ Growth: true,
54
+ Starter: 'Basic'
55
+ }
56
+ }
57
+ ],
58
+ name: 'Storybook'
59
+ }
60
+ ];
61
+ const meta = {
62
+ argTypes: {
63
+ cardStyle: {
64
+ control: 'select',
65
+ options: [
66
+ 'default',
67
+ 'contrast',
68
+ 'solid'
69
+ ]
70
+ },
71
+ defaultFrequency: {
72
+ control: 'select',
73
+ options: [
74
+ 'monthly',
75
+ 'annually'
76
+ ]
77
+ },
78
+ description: {
79
+ control: 'text'
80
+ },
81
+ eyebrow: {
82
+ control: 'text'
83
+ },
84
+ title: {
85
+ control: 'text'
86
+ },
87
+ tone: {
88
+ control: 'select',
89
+ options: [
90
+ 'default',
91
+ 'dark',
92
+ 'gradient'
93
+ ]
94
+ },
95
+ variant: {
96
+ control: 'select',
97
+ options: [
98
+ 'grid',
99
+ 'single',
100
+ 'comparison'
101
+ ]
102
+ }
103
+ },
104
+ component: Pricing,
105
+ parameters: {
106
+ layout: 'fullscreen'
107
+ },
108
+ title: 'Components/Pricing'
109
+ };
110
+ export default meta;
111
+ export const Grid = {
112
+ args: {
113
+ cardStyle: 'default',
114
+ defaultFrequency: 'monthly',
115
+ description: 'Pick the coverage level that fits your release workflow.',
116
+ eyebrow: 'Pricing',
117
+ frequencies: [
118
+ {
119
+ label: 'Monthly',
120
+ priceSuffix: '/mo',
121
+ value: 'monthly'
122
+ },
123
+ {
124
+ label: 'Annually',
125
+ priceSuffix: '/yr',
126
+ value: 'annually'
127
+ }
128
+ ],
129
+ tiers,
130
+ title: 'Plans for every component system',
131
+ tone: 'default',
132
+ variant: 'grid'
133
+ },
134
+ play: interactWithCanvas
135
+ };
136
+ export const Comparison = {
137
+ args: {
138
+ comparisonSections,
139
+ tiers,
140
+ title: 'Compare plans',
141
+ variant: 'comparison'
142
+ },
143
+ play: interactWithCanvas
144
+ };
145
+
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1ByaWNpbmcvUHJpY2luZy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7UHJpY2luZ30gZnJvbSAnLi9QcmljaW5nLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IHRpZXJzID0gW1xuICB7XG4gICAgY3RhTGFiZWw6ICdDaG9vc2Ugc3RhcnRlcicsXG4gICAgZGVzY3JpcHRpb246ICdGb3Igc21hbGwgY29tcG9uZW50IGxpYnJhcmllcy4nLFxuICAgIGZlYXR1cmVzOiBbJ1N0b3J5IGNvdmVyYWdlJywgJ0Jhc2ljIGNvbnRyb2xzJywgJ1Ntb2tlIGludGVyYWN0aW9ucyddLFxuICAgIGhyZWY6ICcjc3RhcnRlcicsXG4gICAgaWQ6ICdzdGFydGVyJyxcbiAgICBuYW1lOiAnU3RhcnRlcicsXG4gICAgcHJpY2U6IHthbm51YWxseTogJyQxOTAnLCBtb250aGx5OiAnJDE5J31cbiAgfSxcbiAge1xuICAgIGJhZGdlOiAnUG9wdWxhcicsXG4gICAgY3RhTGFiZWw6ICdDaG9vc2UgZ3Jvd3RoJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZvciBwcm9kdWN0aW9uIGRlc2lnbiBzeXN0ZW1zLicsXG4gICAgZmVhdHVyZWQ6IHRydWUsXG4gICAgZmVhdHVyZXM6IFsnRnVsbCBjb250cm9scycsICdJbnRlcmFjdGlvbiB0ZXN0cycsICdSZWxlYXNlIGNoZWNrcyddLFxuICAgIGhyZWY6ICcjZ3Jvd3RoJyxcbiAgICBpZDogJ2dyb3d0aCcsXG4gICAgbmFtZTogJ0dyb3d0aCcsXG4gICAgcHJpY2U6IHthbm51YWxseTogJyQ0OTAnLCBtb250aGx5OiAnJDQ5J31cbiAgfVxuXTtcblxuY29uc3QgY29tcGFyaXNvblNlY3Rpb25zID0gW1xuICB7XG4gICAgZmVhdHVyZXM6IFtcbiAgICAgIHtuYW1lOiAnQ29udHJvbHMnLCB0aWVyczoge0dyb3d0aDogdHJ1ZSwgU3RhcnRlcjogdHJ1ZX19LFxuICAgICAge25hbWU6ICdJbnRlcmFjdGlvbiBzdG9yaWVzJywgdGllcnM6IHtHcm93dGg6IHRydWUsIFN0YXJ0ZXI6ICdCYXNpYyd9fVxuICAgIF0sXG4gICAgbmFtZTogJ1N0b3J5Ym9vaydcbiAgfVxuXTtcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgUHJpY2luZz4gPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgY2FyZFN0eWxlOiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IFsnZGVmYXVsdCcsICdjb250cmFzdCcsICdzb2xpZCddXG4gICAgfSxcbiAgICBkZWZhdWx0RnJlcXVlbmN5OiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IFsnbW9udGhseScsICdhbm51YWxseSddXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBleWVicm93OiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIHRpdGxlOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIHRvbmU6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWydkZWZhdWx0JywgJ2RhcmsnLCAnZ3JhZGllbnQnXVxuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBbJ2dyaWQnLCAnc2luZ2xlJywgJ2NvbXBhcmlzb24nXVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBQcmljaW5nLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnZnVsbHNjcmVlbidcbiAgfSxcbiAgdGl0bGU6ICdDb21wb25lbnRzL1ByaWNpbmcnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIFByaWNpbmc+O1xuXG5leHBvcnQgY29uc3QgR3JpZDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjYXJkU3R5bGU6ICdkZWZhdWx0JyxcbiAgICBkZWZhdWx0RnJlcXVlbmN5OiAnbW9udGhseScsXG4gICAgZGVzY3JpcHRpb246ICdQaWNrIHRoZSBjb3ZlcmFnZSBsZXZlbCB0aGF0IGZpdHMgeW91ciByZWxlYXNlIHdvcmtmbG93LicsXG4gICAgZXllYnJvdzogJ1ByaWNpbmcnLFxuICAgIGZyZXF1ZW5jaWVzOiBbXG4gICAgICB7bGFiZWw6ICdNb250aGx5JywgcHJpY2VTdWZmaXg6ICcvbW8nLCB2YWx1ZTogJ21vbnRobHknfSxcbiAgICAgIHtsYWJlbDogJ0FubnVhbGx5JywgcHJpY2VTdWZmaXg6ICcveXInLCB2YWx1ZTogJ2FubnVhbGx5J31cbiAgICBdLFxuICAgIHRpZXJzLFxuICAgIHRpdGxlOiAnUGxhbnMgZm9yIGV2ZXJ5IGNvbXBvbmVudCBzeXN0ZW0nLFxuICAgIHRvbmU6ICdkZWZhdWx0JyxcbiAgICB2YXJpYW50OiAnZ3JpZCdcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuXG5leHBvcnQgY29uc3QgQ29tcGFyaXNvbjogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBjb21wYXJpc29uU2VjdGlvbnMsXG4gICAgdGllcnMsXG4gICAgdGl0bGU6ICdDb21wYXJlIHBsYW5zJyxcbiAgICB2YXJpYW50OiAnY29tcGFyaXNvbidcbiAgfSxcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzXG59O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiaW50ZXJhY3RXaXRoQ2FudmFzIiwiUHJpY2luZyIsInRpZXJzIiwiY3RhTGFiZWwiLCJkZXNjcmlwdGlvbiIsImZlYXR1cmVzIiwiaHJlZiIsImlkIiwibmFtZSIsInByaWNlIiwiYW5udWFsbHkiLCJtb250aGx5IiwiYmFkZ2UiLCJmZWF0dXJlZCIsImNvbXBhcmlzb25TZWN0aW9ucyIsIkdyb3d0aCIsIlN0YXJ0ZXIiLCJtZXRhIiwiYXJnVHlwZXMiLCJjYXJkU3R5bGUiLCJjb250cm9sIiwib3B0aW9ucyIsImRlZmF1bHRGcmVxdWVuY3kiLCJleWVicm93IiwidGl0bGUiLCJ0b25lIiwidmFyaWFudCIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJHcmlkIiwiYXJncyIsImZyZXF1ZW5jaWVzIiwibGFiZWwiLCJwcmljZVN1ZmZpeCIsInZhbHVlIiwicGxheSIsIkNvbXBhcmlzb24iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FBUUMsT0FBTyxRQUFPLGVBQWU7QUFJckMsTUFBTUMsUUFBUTtJQUNaO1FBQ0VDLFVBQVU7UUFDVkMsYUFBYTtRQUNiQyxVQUFVO1lBQUM7WUFBa0I7WUFBa0I7U0FBcUI7UUFDcEVDLE1BQU07UUFDTkMsSUFBSTtRQUNKQyxNQUFNO1FBQ05DLE9BQU87WUFBQ0MsVUFBVTtZQUFRQyxTQUFTO1FBQUs7SUFDMUM7SUFDQTtRQUNFQyxPQUFPO1FBQ1BULFVBQVU7UUFDVkMsYUFBYTtRQUNiUyxVQUFVO1FBQ1ZSLFVBQVU7WUFBQztZQUFpQjtZQUFxQjtTQUFpQjtRQUNsRUMsTUFBTTtRQUNOQyxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsT0FBTztZQUFDQyxVQUFVO1lBQVFDLFNBQVM7UUFBSztJQUMxQztDQUNEO0FBRUQsTUFBTUcscUJBQXFCO0lBQ3pCO1FBQ0VULFVBQVU7WUFDUjtnQkFBQ0csTUFBTTtnQkFBWU4sT0FBTztvQkFBQ2EsUUFBUTtvQkFBTUMsU0FBUztnQkFBSTtZQUFDO1lBQ3ZEO2dCQUFDUixNQUFNO2dCQUF1Qk4sT0FBTztvQkFBQ2EsUUFBUTtvQkFBTUMsU0FBUztnQkFBTztZQUFDO1NBQ3RFO1FBQ0RSLE1BQU07SUFDUjtDQUNEO0FBRUQsTUFBTVMsT0FBNkI7SUFDakNDLFVBQVU7UUFDUkMsV0FBVztZQUNUQyxTQUFTO1lBQ1RDLFNBQVM7Z0JBQUM7Z0JBQVc7Z0JBQVk7YUFBUTtRQUMzQztRQUNBQyxrQkFBa0I7WUFDaEJGLFNBQVM7WUFDVEMsU0FBUztnQkFBQztnQkFBVzthQUFXO1FBQ2xDO1FBQ0FqQixhQUFhO1lBQ1hnQixTQUFTO1FBQ1g7UUFDQUcsU0FBUztZQUNQSCxTQUFTO1FBQ1g7UUFDQUksT0FBTztZQUNMSixTQUFTO1FBQ1g7UUFDQUssTUFBTTtZQUNKTCxTQUFTO1lBQ1RDLFNBQVM7Z0JBQUM7Z0JBQVc7Z0JBQVE7YUFBVztRQUMxQztRQUNBSyxTQUFTO1lBQ1BOLFNBQVM7WUFDVEMsU0FBUztnQkFBQztnQkFBUTtnQkFBVTthQUFhO1FBQzNDO0lBQ0Y7SUFDQU0sV0FBVzFCO0lBQ1gyQixZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBTCxPQUFPO0FBQ1Q7QUFFQSxlQUFlUCxLQUFLO0FBSXBCLE9BQU8sTUFBTWEsT0FBYztJQUN6QkMsTUFBTTtRQUNKWixXQUFXO1FBQ1hHLGtCQUFrQjtRQUNsQmxCLGFBQWE7UUFDYm1CLFNBQVM7UUFDVFMsYUFBYTtZQUNYO2dCQUFDQyxPQUFPO2dCQUFXQyxhQUFhO2dCQUFPQyxPQUFPO1lBQVM7WUFDdkQ7Z0JBQUNGLE9BQU87Z0JBQVlDLGFBQWE7Z0JBQU9DLE9BQU87WUFBVTtTQUMxRDtRQUNEakM7UUFDQXNCLE9BQU87UUFDUEMsTUFBTTtRQUNOQyxTQUFTO0lBQ1g7SUFDQVUsTUFBTXBDO0FBQ1IsRUFBRTtBQUVGLE9BQU8sTUFBTXFDLGFBQW9CO0lBQy9CTixNQUFNO1FBQ0pqQjtRQUNBWjtRQUNBc0IsT0FBTztRQUNQRSxTQUFTO0lBQ1g7SUFDQVUsTUFBTXBDO0FBQ1IsRUFBRSJ9
@@ -0,0 +1,23 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface ProductItem {
3
+ readonly badge?: ReactNode;
4
+ readonly colors?: string[];
5
+ readonly description?: ReactNode;
6
+ readonly href?: string;
7
+ readonly id?: string | number;
8
+ readonly imageAlt: string;
9
+ readonly imageSrc: string;
10
+ readonly name: ReactNode;
11
+ readonly price?: ReactNode;
12
+ }
13
+ export interface ProductGridProps extends HTMLAttributes<HTMLDivElement> {
14
+ readonly products: ProductItem[];
15
+ }
16
+ declare const ProductGridComponent: ({ className, products, ...props }: ProductGridProps) => import("react").JSX.Element;
17
+ export interface ProductCardProps extends HTMLAttributes<HTMLElement> {
18
+ readonly product: ProductItem;
19
+ }
20
+ declare const ProductCardComponent: ({ className, product, ...props }: ProductCardProps) => import("react").JSX.Element;
21
+ export declare const ProductGrid: import("react").MemoExoticComponent<typeof ProductGridComponent>;
22
+ export declare const ProductCard: import("react").MemoExoticComponent<typeof ProductCardComponent>;
23
+ export {};
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ import { memo } from 'react';
4
+ const ProductGridComponent = ({ className, products, ...props })=>/*#__PURE__*/ _jsx("div", {
5
+ className: cn('grid grid-cols-1 gap-x-6 gap-y-10 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 xl:gap-x-8', className),
6
+ "data-slot": "product-grid",
7
+ ...props,
8
+ children: products.map((product)=>/*#__PURE__*/ _jsx(ProductCard, {
9
+ product: product
10
+ }, product.id ?? String(product.name)))
11
+ });
12
+ const ProductCardComponent = ({ className, product, ...props })=>{
13
+ const content = /*#__PURE__*/ _jsxs(_Fragment, {
14
+ children: [
15
+ /*#__PURE__*/ _jsx("img", {
16
+ alt: product.imageAlt,
17
+ className: "aspect-square w-full rounded-lg bg-muted object-cover transition-opacity group-hover:opacity-80 dark:bg-muted-dark xl:aspect-7/8",
18
+ src: product.imageSrc
19
+ }),
20
+ /*#__PURE__*/ _jsxs("div", {
21
+ className: "mt-4 flex items-start justify-between gap-3",
22
+ children: [
23
+ /*#__PURE__*/ _jsxs("div", {
24
+ className: "min-w-0",
25
+ children: [
26
+ /*#__PURE__*/ _jsx("h3", {
27
+ className: "text-sm text-foreground dark:text-foreground-dark",
28
+ children: product.name
29
+ }),
30
+ product.description ? /*#__PURE__*/ _jsx("p", {
31
+ className: "mt-1 text-sm text-muted-foreground dark:text-muted-foreground-dark",
32
+ children: product.description
33
+ }) : null
34
+ ]
35
+ }),
36
+ product.price ? /*#__PURE__*/ _jsx("p", {
37
+ className: "shrink-0 text-sm font-medium text-foreground dark:text-foreground-dark",
38
+ children: product.price
39
+ }) : null
40
+ ]
41
+ }),
42
+ product.colors?.length ? /*#__PURE__*/ _jsx("div", {
43
+ className: "mt-3 flex gap-1.5",
44
+ children: product.colors.map((color)=>/*#__PURE__*/ _jsx("span", {
45
+ "aria-label": color,
46
+ className: "size-4 rounded-full border border-black/10 ring-1 ring-black/5 dark:border-white/20 dark:ring-white/10",
47
+ style: {
48
+ backgroundColor: color
49
+ }
50
+ }, color))
51
+ }) : null,
52
+ product.badge ? /*#__PURE__*/ _jsx("div", {
53
+ className: "mt-3",
54
+ children: product.badge
55
+ }) : null
56
+ ]
57
+ });
58
+ if (product.href) {
59
+ return /*#__PURE__*/ _jsx("a", {
60
+ className: cn('group block', className),
61
+ "data-slot": "product-card",
62
+ href: product.href,
63
+ ...props,
64
+ children: content
65
+ });
66
+ }
67
+ return /*#__PURE__*/ _jsx("article", {
68
+ className: cn('group block', className),
69
+ "data-slot": "product-card",
70
+ ...props,
71
+ children: content
72
+ });
73
+ };
74
+ export const ProductGrid = /*#__PURE__*/ memo(ProductGridComponent);
75
+ ProductGrid.displayName = 'ProductGrid';
76
+ export const ProductCard = /*#__PURE__*/ memo(ProductCardComponent);
77
+ ProductCard.displayName = 'ProductCard';
78
+
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2R1Y3RHcmlkL1Byb2R1Y3RHcmlkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHttZW1vfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtBbmNob3JIVE1MQXR0cmlidXRlcywgSFRNTEF0dHJpYnV0ZXMsIFJlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RJdGVtIHtcbiAgcmVhZG9ubHkgYmFkZ2U/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGNvbG9ycz86IHN0cmluZ1tdO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgaHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHJlYWRvbmx5IGltYWdlQWx0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGltYWdlU3JjOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgcHJpY2U/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdEdyaWRQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHByb2R1Y3RzOiBQcm9kdWN0SXRlbVtdO1xufVxuXG5jb25zdCBQcm9kdWN0R3JpZENvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgcHJvZHVjdHMsXG4gIC4uLnByb3BzXG59OiBQcm9kdWN0R3JpZFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdncmlkIGdyaWQtY29scy0xIGdhcC14LTYgZ2FwLXktMTAgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgeGw6Z3JpZC1jb2xzLTQgeGw6Z2FwLXgtOCcsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwicHJvZHVjdC1ncmlkXCJcbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7cHJvZHVjdHMubWFwKChwcm9kdWN0KSA9PiAoXG4gICAgICA8UHJvZHVjdENhcmQga2V5PXtwcm9kdWN0LmlkID8/IFN0cmluZyhwcm9kdWN0Lm5hbWUpfSBwcm9kdWN0PXtwcm9kdWN0fSAvPlxuICAgICkpfVxuICA8L2Rpdj5cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdENhcmRQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PiB7XG4gIHJlYWRvbmx5IHByb2R1Y3Q6IFByb2R1Y3RJdGVtO1xufVxuXG5jb25zdCBQcm9kdWN0Q2FyZENvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgcHJvZHVjdCxcbiAgLi4ucHJvcHNcbn06IFByb2R1Y3RDYXJkUHJvcHMpID0+IHtcbiAgY29uc3QgY29udGVudCA9IChcbiAgICA8PlxuICAgICAgPGltZ1xuICAgICAgICBhbHQ9e3Byb2R1Y3QuaW1hZ2VBbHR9XG4gICAgICAgIGNsYXNzTmFtZT1cImFzcGVjdC1zcXVhcmUgdy1mdWxsIHJvdW5kZWQtbGcgYmctbXV0ZWQgb2JqZWN0LWNvdmVyIHRyYW5zaXRpb24tb3BhY2l0eSBncm91cC1ob3ZlcjpvcGFjaXR5LTgwIGRhcms6YmctbXV0ZWQtZGFyayB4bDphc3BlY3QtNy84XCJcbiAgICAgICAgc3JjPXtwcm9kdWN0LmltYWdlU3JjfVxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtNCBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTBcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWZvcmVncm91bmQgZGFyazp0ZXh0LWZvcmVncm91bmQtZGFya1wiPntwcm9kdWN0Lm5hbWV9PC9oMz5cbiAgICAgICAgICB7cHJvZHVjdC5kZXNjcmlwdGlvbiA/IDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazp0ZXh0LW11dGVkLWZvcmVncm91bmQtZGFya1wiPntwcm9kdWN0LmRlc2NyaXB0aW9ufTwvcD4gOiBudWxsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Byb2R1Y3QucHJpY2UgPyA8cCBjbGFzc05hbWU9XCJzaHJpbmstMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBkYXJrOnRleHQtZm9yZWdyb3VuZC1kYXJrXCI+e3Byb2R1Y3QucHJpY2V9PC9wPiA6IG51bGx9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtwcm9kdWN0LmNvbG9ycz8ubGVuZ3RoID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgZmxleCBnYXAtMS41XCI+XG4gICAgICAgICAge3Byb2R1Y3QuY29sb3JzLm1hcCgoY29sb3IpID0+IChcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2NvbG9yfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaXplLTQgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItYmxhY2svMTAgcmluZy0xIHJpbmctYmxhY2svNSBkYXJrOmJvcmRlci13aGl0ZS8yMCBkYXJrOnJpbmctd2hpdGUvMTBcIlxuICAgICAgICAgICAgICBrZXk9e2NvbG9yfVxuICAgICAgICAgICAgICBzdHlsZT17e2JhY2tncm91bmRDb2xvcjogY29sb3J9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHtwcm9kdWN0LmJhZGdlID8gPGRpdiBjbGFzc05hbWU9XCJtdC0zXCI+e3Byb2R1Y3QuYmFkZ2V9PC9kaXY+IDogbnVsbH1cbiAgICA8Lz5cbiAgKTtcblxuICBpZihwcm9kdWN0LmhyZWYpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPXtjbignZ3JvdXAgYmxvY2snLCBjbGFzc05hbWUpfVxuICAgICAgICBkYXRhLXNsb3Q9XCJwcm9kdWN0LWNhcmRcIlxuICAgICAgICBocmVmPXtwcm9kdWN0LmhyZWZ9XG4gICAgICAgIHsuLi5wcm9wcyBhcyBBbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD59XG4gICAgICA+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxhcnRpY2xlXG4gICAgICBjbGFzc05hbWU9e2NuKCdncm91cCBibG9jaycsIGNsYXNzTmFtZSl9XG4gICAgICBkYXRhLXNsb3Q9XCJwcm9kdWN0LWNhcmRcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtjb250ZW50fVxuICAgIDwvYXJ0aWNsZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBQcm9kdWN0R3JpZCA9IG1lbW8oUHJvZHVjdEdyaWRDb21wb25lbnQpO1xuUHJvZHVjdEdyaWQuZGlzcGxheU5hbWUgPSAnUHJvZHVjdEdyaWQnO1xuXG5leHBvcnQgY29uc3QgUHJvZHVjdENhcmQgPSBtZW1vKFByb2R1Y3RDYXJkQ29tcG9uZW50KTtcblByb2R1Y3RDYXJkLmRpc3BsYXlOYW1lID0gJ1Byb2R1Y3RDYXJkJztcbiJdLCJuYW1lcyI6WyJjbiIsIm1lbW8iLCJQcm9kdWN0R3JpZENvbXBvbmVudCIsImNsYXNzTmFtZSIsInByb2R1Y3RzIiwicHJvcHMiLCJkaXYiLCJkYXRhLXNsb3QiLCJtYXAiLCJwcm9kdWN0IiwiUHJvZHVjdENhcmQiLCJpZCIsIlN0cmluZyIsIm5hbWUiLCJQcm9kdWN0Q2FyZENvbXBvbmVudCIsImNvbnRlbnQiLCJpbWciLCJhbHQiLCJpbWFnZUFsdCIsInNyYyIsImltYWdlU3JjIiwiaDMiLCJkZXNjcmlwdGlvbiIsInAiLCJwcmljZSIsImNvbG9ycyIsImxlbmd0aCIsImNvbG9yIiwic3BhbiIsImFyaWEtbGFiZWwiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImJhZGdlIiwiaHJlZiIsImEiLCJhcnRpY2xlIiwiUHJvZHVjdEdyaWQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLElBQUksUUFBTyxRQUFRO0FBb0IzQixNQUFNQyx1QkFBdUIsQ0FBQyxFQUM1QkMsU0FBUyxFQUNUQyxRQUFRLEVBQ1IsR0FBR0MsT0FDYyxpQkFDakIsS0FBQ0M7UUFDQ0gsV0FBV0gsR0FBRyw2RkFBNkZHO1FBQzNHSSxhQUFVO1FBQ1QsR0FBR0YsS0FBSztrQkFFUkQsU0FBU0ksR0FBRyxDQUFDLENBQUNDLHdCQUNiLEtBQUNDO2dCQUFxREQsU0FBU0E7ZUFBN0NBLFFBQVFFLEVBQUUsSUFBSUMsT0FBT0gsUUFBUUksSUFBSTs7QUFTekQsTUFBTUMsdUJBQXVCLENBQUMsRUFDNUJYLFNBQVMsRUFDVE0sT0FBTyxFQUNQLEdBQUdKLE9BQ2M7SUFDakIsTUFBTVUsd0JBQ0o7OzBCQUNFLEtBQUNDO2dCQUNDQyxLQUFLUixRQUFRUyxRQUFRO2dCQUNyQmYsV0FBVTtnQkFDVmdCLEtBQUtWLFFBQVFXLFFBQVE7OzBCQUV2QixNQUFDZDtnQkFBSUgsV0FBVTs7a0NBQ2IsTUFBQ0c7d0JBQUlILFdBQVU7OzBDQUNiLEtBQUNrQjtnQ0FBR2xCLFdBQVU7MENBQXFETSxRQUFRSSxJQUFJOzs0QkFDOUVKLFFBQVFhLFdBQVcsaUJBQUcsS0FBQ0M7Z0NBQUVwQixXQUFVOzBDQUFzRU0sUUFBUWEsV0FBVztpQ0FBUTs7O29CQUV0SWIsUUFBUWUsS0FBSyxpQkFBRyxLQUFDRDt3QkFBRXBCLFdBQVU7a0NBQTBFTSxRQUFRZSxLQUFLO3lCQUFROzs7WUFFOUhmLFFBQVFnQixNQUFNLEVBQUVDLHVCQUNmLEtBQUNwQjtnQkFBSUgsV0FBVTswQkFDWk0sUUFBUWdCLE1BQU0sQ0FBQ2pCLEdBQUcsQ0FBQyxDQUFDbUIsc0JBQ25CLEtBQUNDO3dCQUNDQyxjQUFZRjt3QkFDWnhCLFdBQVU7d0JBRVYyQixPQUFPOzRCQUFDQyxpQkFBaUJKO3dCQUFLO3VCQUR6QkE7aUJBS1Q7WUFDSGxCLFFBQVF1QixLQUFLLGlCQUFHLEtBQUMxQjtnQkFBSUgsV0FBVTswQkFBUU0sUUFBUXVCLEtBQUs7aUJBQVU7OztJQUluRSxJQUFHdkIsUUFBUXdCLElBQUksRUFBRTtRQUNmLHFCQUNFLEtBQUNDO1lBQ0MvQixXQUFXSCxHQUFHLGVBQWVHO1lBQzdCSSxhQUFVO1lBQ1YwQixNQUFNeEIsUUFBUXdCLElBQUk7WUFDakIsR0FBRzVCLEtBQUs7c0JBRVJVOztJQUdQO0lBRUEscUJBQ0UsS0FBQ29CO1FBQ0NoQyxXQUFXSCxHQUFHLGVBQWVHO1FBQzdCSSxhQUFVO1FBQ1QsR0FBR0YsS0FBSztrQkFFUlU7O0FBR1A7QUFFQSxPQUFPLE1BQU1xQiw0QkFBY25DLEtBQUtDLHNCQUFzQjtBQUN0RGtDLFlBQVlDLFdBQVcsR0FBRztBQUUxQixPQUFPLE1BQU0zQiw0QkFBY1QsS0FBS2Esc0JBQXNCO0FBQ3RESixZQUFZMkIsV0FBVyxHQUFHIn0=
@@ -0,0 +1,50 @@
1
+ import { ProductGrid } from './ProductGrid.js';
2
+ const products = [
3
+ {
4
+ href: '#',
5
+ id: 1,
6
+ imageAlt: 'Tall porcelain bottle with cork stopper.',
7
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-01.jpg',
8
+ name: 'Earthen Bottle',
9
+ price: '$48'
10
+ },
11
+ {
12
+ href: '#',
13
+ id: 2,
14
+ imageAlt: 'Olive insulated bottle with flared lid.',
15
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-02.jpg',
16
+ name: 'Nomad Tumbler',
17
+ price: '$35'
18
+ },
19
+ {
20
+ href: '#',
21
+ id: 3,
22
+ imageAlt: 'Paper refill cards on a desk.',
23
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-03.jpg',
24
+ name: 'Focus Paper Refill',
25
+ price: '$89'
26
+ },
27
+ {
28
+ href: '#',
29
+ id: 4,
30
+ imageAlt: 'Black machined mechanical pencil.',
31
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/category-page-04-image-card-04.jpg',
32
+ name: 'Machined Mechanical Pencil',
33
+ price: '$35'
34
+ }
35
+ ];
36
+ const meta = {
37
+ component: ProductGrid,
38
+ parameters: {
39
+ layout: 'padded'
40
+ },
41
+ title: 'Ecommerce/ProductGrid'
42
+ };
43
+ export default meta;
44
+ export const Simple = {
45
+ args: {
46
+ products
47
+ }
48
+ };
49
+
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2R1Y3RHcmlkL1Byb2R1Y3RHcmlkLnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvZHVjdEdyaWR9IGZyb20gJy4vUHJvZHVjdEdyaWQuanMnO1xuXG5pbXBvcnQgdHlwZSB7TWV0YSwgU3RvcnlPYmp9IGZyb20gJ0BubGFicy9sZXgvc3Rvcnlib29rJztcblxuY29uc3QgcHJvZHVjdHMgPSBbXG4gIHtcbiAgICBocmVmOiAnIycsXG4gICAgaWQ6IDEsXG4gICAgaW1hZ2VBbHQ6ICdUYWxsIHBvcmNlbGFpbiBib3R0bGUgd2l0aCBjb3JrIHN0b3BwZXIuJyxcbiAgICBpbWFnZVNyYzogJ2h0dHBzOi8vdGFpbHdpbmRjc3MuY29tL3BsdXMtYXNzZXRzL2ltZy9lY29tbWVyY2UtaW1hZ2VzL2NhdGVnb3J5LXBhZ2UtMDQtaW1hZ2UtY2FyZC0wMS5qcGcnLFxuICAgIG5hbWU6ICdFYXJ0aGVuIEJvdHRsZScsXG4gICAgcHJpY2U6ICckNDgnXG4gIH0sXG4gIHtcbiAgICBocmVmOiAnIycsXG4gICAgaWQ6IDIsXG4gICAgaW1hZ2VBbHQ6ICdPbGl2ZSBpbnN1bGF0ZWQgYm90dGxlIHdpdGggZmxhcmVkIGxpZC4nLFxuICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvY2F0ZWdvcnktcGFnZS0wNC1pbWFnZS1jYXJkLTAyLmpwZycsXG4gICAgbmFtZTogJ05vbWFkIFR1bWJsZXInLFxuICAgIHByaWNlOiAnJDM1J1xuICB9LFxuICB7XG4gICAgaHJlZjogJyMnLFxuICAgIGlkOiAzLFxuICAgIGltYWdlQWx0OiAnUGFwZXIgcmVmaWxsIGNhcmRzIG9uIGEgZGVzay4nLFxuICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvY2F0ZWdvcnktcGFnZS0wNC1pbWFnZS1jYXJkLTAzLmpwZycsXG4gICAgbmFtZTogJ0ZvY3VzIFBhcGVyIFJlZmlsbCcsXG4gICAgcHJpY2U6ICckODknXG4gIH0sXG4gIHtcbiAgICBocmVmOiAnIycsXG4gICAgaWQ6IDQsXG4gICAgaW1hZ2VBbHQ6ICdCbGFjayBtYWNoaW5lZCBtZWNoYW5pY2FsIHBlbmNpbC4nLFxuICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvY2F0ZWdvcnktcGFnZS0wNC1pbWFnZS1jYXJkLTA0LmpwZycsXG4gICAgbmFtZTogJ01hY2hpbmVkIE1lY2hhbmljYWwgUGVuY2lsJyxcbiAgICBwcmljZTogJyQzNSdcbiAgfVxuXTtcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgUHJvZHVjdEdyaWQ+ID0ge1xuICBjb21wb25lbnQ6IFByb2R1Y3RHcmlkLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAncGFkZGVkJ1xuICB9LFxuICB0aXRsZTogJ0Vjb21tZXJjZS9Qcm9kdWN0R3JpZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgUHJvZHVjdEdyaWQ+O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlOiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIHByb2R1Y3RzXG4gIH1cbn07XG4iXSwibmFtZXMiOlsiUHJvZHVjdEdyaWQiLCJwcm9kdWN0cyIsImhyZWYiLCJpZCIsImltYWdlQWx0IiwiaW1hZ2VTcmMiLCJuYW1lIiwicHJpY2UiLCJtZXRhIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiU2ltcGxlIiwiYXJncyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsV0FBVyxRQUFPLG1CQUFtQjtBQUk3QyxNQUFNQyxXQUFXO0lBQ2Y7UUFDRUMsTUFBTTtRQUNOQyxJQUFJO1FBQ0pDLFVBQVU7UUFDVkMsVUFBVTtRQUNWQyxNQUFNO1FBQ05DLE9BQU87SUFDVDtJQUNBO1FBQ0VMLE1BQU07UUFDTkMsSUFBSTtRQUNKQyxVQUFVO1FBQ1ZDLFVBQVU7UUFDVkMsTUFBTTtRQUNOQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFTCxNQUFNO1FBQ05DLElBQUk7UUFDSkMsVUFBVTtRQUNWQyxVQUFVO1FBQ1ZDLE1BQU07UUFDTkMsT0FBTztJQUNUO0lBQ0E7UUFDRUwsTUFBTTtRQUNOQyxJQUFJO1FBQ0pDLFVBQVU7UUFDVkMsVUFBVTtRQUNWQyxNQUFNO1FBQ05DLE9BQU87SUFDVDtDQUNEO0FBRUQsTUFBTUMsT0FBaUM7SUFDckNDLFdBQVdUO0lBQ1hVLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxTQUFnQjtJQUMzQkMsTUFBTTtRQUNKYjtJQUNGO0FBQ0YsRUFBRSJ9
@@ -0,0 +1,13 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type ProgressStepStatus = 'complete' | 'current' | 'upcoming';
3
+ export interface ProgressStepItem {
4
+ readonly href?: string;
5
+ readonly id?: string;
6
+ readonly label: string;
7
+ readonly status: ProgressStepStatus;
8
+ }
9
+ export interface ProgressStepsProps extends HTMLAttributes<HTMLElement> {
10
+ readonly ariaLabel?: string;
11
+ readonly steps: ProgressStepItem[];
12
+ }
13
+ export declare const ProgressSteps: ({ ariaLabel, className, steps, ...props }: ProgressStepsProps) => import("react").JSX.Element;
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ const getStepClasses = (status)=>{
4
+ if (status === 'complete') {
5
+ return 'border-primary hover:border-primary-700 dark:border-primary-dark dark:hover:border-primary-dark-300';
6
+ }
7
+ if (status === 'current') {
8
+ return 'border-primary dark:border-primary-dark';
9
+ }
10
+ return 'border-border hover:border-muted-foreground dark:border-border-dark dark:hover:border-muted-foreground-dark';
11
+ };
12
+ const getStepLabelClasses = (status)=>status === 'upcoming' ? 'text-muted-foreground group-hover:text-foreground dark:text-muted-foreground-dark dark:group-hover:text-foreground-dark' : 'text-primary dark:text-primary-dark';
13
+ export const ProgressSteps = ({ ariaLabel = 'Progress', className, steps, ...props })=>/*#__PURE__*/ _jsx("nav", {
14
+ "aria-label": ariaLabel,
15
+ className: className,
16
+ "data-slot": "progress-steps",
17
+ ...props,
18
+ children: /*#__PURE__*/ _jsx("ol", {
19
+ className: "space-y-4 md:flex md:space-y-0 md:space-x-8",
20
+ children: steps.map((step, index)=>{
21
+ const content = /*#__PURE__*/ _jsxs(_Fragment, {
22
+ children: [
23
+ /*#__PURE__*/ _jsx("span", {
24
+ className: cn('text-sm font-medium', getStepLabelClasses(step.status)),
25
+ children: step.id ?? `Step ${index + 1}`
26
+ }),
27
+ /*#__PURE__*/ _jsx("span", {
28
+ className: "text-sm font-medium text-foreground dark:text-foreground-dark",
29
+ children: step.label
30
+ })
31
+ ]
32
+ });
33
+ const classes = cn('group flex flex-col border-l-4 py-2 pl-4 md:border-t-4 md:border-l-0 md:pt-4 md:pb-0 md:pl-0', getStepClasses(step.status));
34
+ return /*#__PURE__*/ _jsx("li", {
35
+ className: "md:flex-1",
36
+ children: step.href ? /*#__PURE__*/ _jsx("a", {
37
+ "aria-current": step.status === 'current' ? 'step' : undefined,
38
+ className: classes,
39
+ href: step.href,
40
+ children: content
41
+ }) : /*#__PURE__*/ _jsx("div", {
42
+ "aria-current": step.status === 'current' ? 'step' : undefined,
43
+ className: classes,
44
+ children: content
45
+ })
46
+ }, step.id ?? step.label);
47
+ })
48
+ })
49
+ });
50
+
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2dyZXNzU3RlcHMvUHJvZ3Jlc3NTdGVwcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge0hUTUxBdHRyaWJ1dGVzfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzU3RlcFN0YXR1cyA9ICdjb21wbGV0ZScgfCAnY3VycmVudCcgfCAndXBjb21pbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzU3RlcEl0ZW0ge1xuICByZWFkb25seSBocmVmPzogc3RyaW5nO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdHVzOiBQcm9ncmVzc1N0ZXBTdGF0dXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NTdGVwc1Byb3BzIGV4dGVuZHMgSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnQ+IHtcbiAgcmVhZG9ubHkgYXJpYUxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBzdGVwczogUHJvZ3Jlc3NTdGVwSXRlbVtdO1xufVxuXG5jb25zdCBnZXRTdGVwQ2xhc3NlcyA9IChzdGF0dXM6IFByb2dyZXNzU3RlcFN0YXR1cykgPT4ge1xuICBpZihzdGF0dXMgPT09ICdjb21wbGV0ZScpIHtcbiAgICByZXR1cm4gJ2JvcmRlci1wcmltYXJ5IGhvdmVyOmJvcmRlci1wcmltYXJ5LTcwMCBkYXJrOmJvcmRlci1wcmltYXJ5LWRhcmsgZGFyazpob3Zlcjpib3JkZXItcHJpbWFyeS1kYXJrLTMwMCc7XG4gIH1cblxuICBpZihzdGF0dXMgPT09ICdjdXJyZW50Jykge1xuICAgIHJldHVybiAnYm9yZGVyLXByaW1hcnkgZGFyazpib3JkZXItcHJpbWFyeS1kYXJrJztcbiAgfVxuXG4gIHJldHVybiAnYm9yZGVyLWJvcmRlciBob3Zlcjpib3JkZXItbXV0ZWQtZm9yZWdyb3VuZCBkYXJrOmJvcmRlci1ib3JkZXItZGFyayBkYXJrOmhvdmVyOmJvcmRlci1tdXRlZC1mb3JlZ3JvdW5kLWRhcmsnO1xufTtcblxuY29uc3QgZ2V0U3RlcExhYmVsQ2xhc3NlcyA9IChzdGF0dXM6IFByb2dyZXNzU3RlcFN0YXR1cykgPT4gKHN0YXR1cyA9PT0gJ3VwY29taW5nJ1xuICA/ICd0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGRhcms6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kLWRhcmsgZGFyazpncm91cC1ob3Zlcjp0ZXh0LWZvcmVncm91bmQtZGFyaydcbiAgOiAndGV4dC1wcmltYXJ5IGRhcms6dGV4dC1wcmltYXJ5LWRhcmsnKTtcblxuZXhwb3J0IGNvbnN0IFByb2dyZXNzU3RlcHMgPSAoe1xuICBhcmlhTGFiZWwgPSAnUHJvZ3Jlc3MnLFxuICBjbGFzc05hbWUsXG4gIHN0ZXBzLFxuICAuLi5wcm9wc1xufTogUHJvZ3Jlc3NTdGVwc1Byb3BzKSA9PiAoXG4gIDxuYXYgYXJpYS1sYWJlbD17YXJpYUxhYmVsfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gZGF0YS1zbG90PVwicHJvZ3Jlc3Mtc3RlcHNcIiB7Li4ucHJvcHN9PlxuICAgIDxvbCBjbGFzc05hbWU9XCJzcGFjZS15LTQgbWQ6ZmxleCBtZDpzcGFjZS15LTAgbWQ6c3BhY2UteC04XCI+XG4gICAgICB7c3RlcHMubWFwKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NuKCd0ZXh0LXNtIGZvbnQtbWVkaXVtJywgZ2V0U3RlcExhYmVsQ2xhc3NlcyhzdGVwLnN0YXR1cykpfT5cbiAgICAgICAgICAgICAge3N0ZXAuaWQgPz8gYFN0ZXAgJHtpbmRleCArIDF9YH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kIGRhcms6dGV4dC1mb3JlZ3JvdW5kLWRhcmtcIj57c3RlcC5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgPC8+XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBjbignZ3JvdXAgZmxleCBmbGV4LWNvbCBib3JkZXItbC00IHB5LTIgcGwtNCBtZDpib3JkZXItdC00IG1kOmJvcmRlci1sLTAgbWQ6cHQtNCBtZDpwYi0wIG1kOnBsLTAnLCBnZXRTdGVwQ2xhc3NlcyhzdGVwLnN0YXR1cykpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGxpIGNsYXNzTmFtZT1cIm1kOmZsZXgtMVwiIGtleT17c3RlcC5pZCA/PyBzdGVwLmxhYmVsfT5cbiAgICAgICAgICAgIHtzdGVwLmhyZWYgPyAoXG4gICAgICAgICAgICAgIDxhIGFyaWEtY3VycmVudD17c3RlcC5zdGF0dXMgPT09ICdjdXJyZW50JyA/ICdzdGVwJyA6IHVuZGVmaW5lZH0gY2xhc3NOYW1lPXtjbGFzc2VzfSBocmVmPXtzdGVwLmhyZWZ9PlxuICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGFyaWEtY3VycmVudD17c3RlcC5zdGF0dXMgPT09ICdjdXJyZW50JyA/ICdzdGVwJyA6IHVuZGVmaW5lZH0gY2xhc3NOYW1lPXtjbGFzc2VzfT5cbiAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L29sPlxuICA8L25hdj5cbik7XG4iXSwibmFtZXMiOlsiY24iLCJnZXRTdGVwQ2xhc3NlcyIsInN0YXR1cyIsImdldFN0ZXBMYWJlbENsYXNzZXMiLCJQcm9ncmVzc1N0ZXBzIiwiYXJpYUxhYmVsIiwiY2xhc3NOYW1lIiwic3RlcHMiLCJwcm9wcyIsIm5hdiIsImFyaWEtbGFiZWwiLCJkYXRhLXNsb3QiLCJvbCIsIm1hcCIsInN0ZXAiLCJpbmRleCIsImNvbnRlbnQiLCJzcGFuIiwiaWQiLCJsYWJlbCIsImNsYXNzZXMiLCJsaSIsImhyZWYiLCJhIiwiYXJpYS1jdXJyZW50IiwidW5kZWZpbmVkIiwiZGl2Il0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFrQmhDLE1BQU1DLGlCQUFpQixDQUFDQztJQUN0QixJQUFHQSxXQUFXLFlBQVk7UUFDeEIsT0FBTztJQUNUO0lBRUEsSUFBR0EsV0FBVyxXQUFXO1FBQ3ZCLE9BQU87SUFDVDtJQUVBLE9BQU87QUFDVDtBQUVBLE1BQU1DLHNCQUFzQixDQUFDRCxTQUFnQ0EsV0FBVyxhQUNwRSw0SEFDQTtBQUVKLE9BQU8sTUFBTUUsZ0JBQWdCLENBQUMsRUFDNUJDLFlBQVksVUFBVSxFQUN0QkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0wsR0FBR0MsT0FDZ0IsaUJBQ25CLEtBQUNDO1FBQUlDLGNBQVlMO1FBQVdDLFdBQVdBO1FBQVdLLGFBQVU7UUFBa0IsR0FBR0gsS0FBSztrQkFDcEYsY0FBQSxLQUFDSTtZQUFHTixXQUFVO3NCQUNYQyxNQUFNTSxHQUFHLENBQUMsQ0FBQ0MsTUFBTUM7Z0JBQ2hCLE1BQU1DLHdCQUNKOztzQ0FDRSxLQUFDQzs0QkFBS1gsV0FBV04sR0FBRyx1QkFBdUJHLG9CQUFvQlcsS0FBS1osTUFBTTtzQ0FDdkVZLEtBQUtJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRUgsUUFBUSxHQUFHOztzQ0FFakMsS0FBQ0U7NEJBQUtYLFdBQVU7c0NBQWlFUSxLQUFLSyxLQUFLOzs7O2dCQUcvRixNQUFNQyxVQUFVcEIsR0FBRyxnR0FBZ0dDLGVBQWVhLEtBQUtaLE1BQU07Z0JBRTdJLHFCQUNFLEtBQUNtQjtvQkFBR2YsV0FBVTs4QkFDWFEsS0FBS1EsSUFBSSxpQkFDUixLQUFDQzt3QkFBRUMsZ0JBQWNWLEtBQUtaLE1BQU0sS0FBSyxZQUFZLFNBQVN1Qjt3QkFBV25CLFdBQVdjO3dCQUFTRSxNQUFNUixLQUFLUSxJQUFJO2tDQUNqR047dUNBR0gsS0FBQ1U7d0JBQUlGLGdCQUFjVixLQUFLWixNQUFNLEtBQUssWUFBWSxTQUFTdUI7d0JBQVduQixXQUFXYztrQ0FDM0VKOzttQkFQd0JGLEtBQUtJLEVBQUUsSUFBSUosS0FBS0ssS0FBSztZQVl4RDs7T0FHSiJ9
@@ -0,0 +1,35 @@
1
+ import { ProgressSteps } from './ProgressSteps.js';
2
+ const meta = {
3
+ component: ProgressSteps,
4
+ parameters: {
5
+ layout: 'padded'
6
+ },
7
+ title: 'Application UI/Navigation/ProgressSteps'
8
+ };
9
+ export default meta;
10
+ export const Default = {
11
+ args: {
12
+ steps: [
13
+ {
14
+ href: '#',
15
+ id: 'Step 1',
16
+ label: 'Job details',
17
+ status: 'complete'
18
+ },
19
+ {
20
+ href: '#',
21
+ id: 'Step 2',
22
+ label: 'Application form',
23
+ status: 'current'
24
+ },
25
+ {
26
+ href: '#',
27
+ id: 'Step 3',
28
+ label: 'Preview',
29
+ status: 'upcoming'
30
+ }
31
+ ]
32
+ }
33
+ };
34
+
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1Byb2dyZXNzU3RlcHMvUHJvZ3Jlc3NTdGVwcy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb2dyZXNzU3RlcHN9IGZyb20gJy4vUHJvZ3Jlc3NTdGVwcy5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBQcm9ncmVzc1N0ZXBzPiA9IHtcbiAgY29tcG9uZW50OiBQcm9ncmVzc1N0ZXBzLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAncGFkZGVkJ1xuICB9LFxuICB0aXRsZTogJ0FwcGxpY2F0aW9uIFVJL05hdmlnYXRpb24vUHJvZ3Jlc3NTdGVwcydcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgUHJvZ3Jlc3NTdGVwcz47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIHN0ZXBzOiBbXG4gICAgICB7aHJlZjogJyMnLCBpZDogJ1N0ZXAgMScsIGxhYmVsOiAnSm9iIGRldGFpbHMnLCBzdGF0dXM6ICdjb21wbGV0ZSd9LFxuICAgICAge2hyZWY6ICcjJywgaWQ6ICdTdGVwIDInLCBsYWJlbDogJ0FwcGxpY2F0aW9uIGZvcm0nLCBzdGF0dXM6ICdjdXJyZW50J30sXG4gICAgICB7aHJlZjogJyMnLCBpZDogJ1N0ZXAgMycsIGxhYmVsOiAnUHJldmlldycsIHN0YXR1czogJ3VwY29taW5nJ31cbiAgICBdXG4gIH1cbn07XG4iXSwibmFtZXMiOlsiUHJvZ3Jlc3NTdGVwcyIsIm1ldGEiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJEZWZhdWx0IiwiYXJncyIsInN0ZXBzIiwiaHJlZiIsImlkIiwibGFiZWwiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGFBQWEsUUFBTyxxQkFBcUI7QUFJakQsTUFBTUMsT0FBbUM7SUFDdkNDLFdBQVdGO0lBQ1hHLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVKLEtBQUs7QUFJcEIsT0FBTyxNQUFNSyxVQUFpQjtJQUM1QkMsTUFBTTtRQUNKQyxPQUFPO1lBQ0w7Z0JBQUNDLE1BQU07Z0JBQUtDLElBQUk7Z0JBQVVDLE9BQU87Z0JBQWVDLFFBQVE7WUFBVTtZQUNsRTtnQkFBQ0gsTUFBTTtnQkFBS0MsSUFBSTtnQkFBVUMsT0FBTztnQkFBb0JDLFFBQVE7WUFBUztZQUN0RTtnQkFBQ0gsTUFBTTtnQkFBS0MsSUFBSTtnQkFBVUMsT0FBTztnQkFBV0MsUUFBUTtZQUFVO1NBQy9EO0lBQ0g7QUFDRixFQUFFIn0=
@@ -0,0 +1,16 @@
1
+ import { type GothamColor } from '../../utils/colorUtils.js';
2
+ export interface RadioFieldItem {
3
+ readonly description?: string;
4
+ readonly id?: string;
5
+ readonly label: string;
6
+ readonly value: string;
7
+ }
8
+ export interface RadioFieldProps {
9
+ readonly color?: GothamColor;
10
+ readonly defaultValue?: string;
11
+ readonly label?: string;
12
+ readonly name: string;
13
+ readonly optionClass?: string;
14
+ readonly options: RadioFieldItem[];
15
+ }
16
+ export declare const RadioField: import("react").NamedExoticComponent<RadioFieldProps>;
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ import { memo, useMemo, useState } from 'react';
4
+ import { getCheckedClasses } from '../../utils/colorUtils.js';
5
+ import { useGothamFormField } from '../Form/FormContext.js';
6
+ const RadioFieldComponent = ({ color = 'primary', defaultValue, label, name, optionClass = 'cursor-pointer relative size-4 appearance-none rounded-full border border-neutral/70 dark:border-neutral-dark/70 bg-white dark:bg-black before:absolute before:inset-1 before:rounded-full before:bg-white dark:before:bg-black not-checked:before:hidden focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary disabled:border-black/40 dark:disabled:border-white/40 disabled:bg-white/50 dark:disabled:bg-black/50 disabled:before:bg-black/40 dark:disabled:before:bg-white/50 forced-colors:appearance-auto forced-colors:before:hidden', options })=>{
7
+ const form = useGothamFormField(name);
8
+ const [localValue, setLocalValue] = useState(defaultValue);
9
+ const optionClasses = useMemo(()=>cn(optionClass, getCheckedClasses(color)), [
10
+ color,
11
+ optionClass
12
+ ]);
13
+ const currentValue = form?.value ?? localValue;
14
+ return /*#__PURE__*/ _jsx("fieldset", {
15
+ "aria-label": label,
16
+ children: /*#__PURE__*/ _jsx("div", {
17
+ className: "space-y-1",
18
+ children: options.map((option)=>/*#__PURE__*/ _jsxs("div", {
19
+ className: "flex items-start relative",
20
+ children: [
21
+ /*#__PURE__*/ _jsx("div", {
22
+ className: "flex h-6 items-center",
23
+ children: /*#__PURE__*/ _jsx("input", {
24
+ "aria-describedby": `${option.id || option.value}-description`,
25
+ checked: currentValue === option.value,
26
+ className: optionClasses,
27
+ id: option.id || option.value,
28
+ name: name,
29
+ onChange: ()=>{
30
+ if (!form) {
31
+ setLocalValue(option.value);
32
+ }
33
+ form?.setValue(name, option.value);
34
+ form?.clearError(name);
35
+ },
36
+ type: "radio",
37
+ value: option.value
38
+ })
39
+ }),
40
+ /*#__PURE__*/ _jsxs("div", {
41
+ className: "ml-3 text-sm/6",
42
+ children: [
43
+ option.label && /*#__PURE__*/ _jsx("label", {
44
+ className: "font-medium text-gray-900 dark:text-white",
45
+ htmlFor: option.id || option.value,
46
+ children: option.label
47
+ }),
48
+ option.description && /*#__PURE__*/ _jsx("p", {
49
+ className: "text-gray-500 dark:text-white",
50
+ id: `${option.id || option.value}-description`,
51
+ children: option.description
52
+ })
53
+ ]
54
+ })
55
+ ]
56
+ }, option.id || option.value))
57
+ })
58
+ });
59
+ };
60
+ export const RadioField = /*#__PURE__*/ memo(RadioFieldComponent);
61
+ RadioField.displayName = 'RadioField';
62
+
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL1JhZGlvRmllbGQvUmFkaW9GaWVsZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7bWVtbywgdXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtnZXRDaGVja2VkQ2xhc3NlcywgdHlwZSBHb3RoYW1Db2xvcn0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5pbXBvcnQge3VzZUdvdGhhbUZvcm1GaWVsZH0gZnJvbSAnLi4vRm9ybS9Gb3JtQ29udGV4dC5qcyc7XG5cbmltcG9ydCB0eXBlIHtGQ30gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmllbGRJdGVtIHtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmllbGRQcm9wcyB7XG4gIHJlYWRvbmx5IGNvbG9yPzogR290aGFtQ29sb3I7XG4gIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgb3B0aW9uQ2xhc3M/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFJhZGlvRmllbGRJdGVtW107XG59XG5cbmNvbnN0IFJhZGlvRmllbGRDb21wb25lbnQ6IEZDPFJhZGlvRmllbGRQcm9wcz4gPSAoe1xuICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgZGVmYXVsdFZhbHVlLFxuICBsYWJlbCxcbiAgbmFtZSxcbiAgb3B0aW9uQ2xhc3MgPSAnY3Vyc29yLXBvaW50ZXIgcmVsYXRpdmUgc2l6ZS00IGFwcGVhcmFuY2Utbm9uZSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uZXV0cmFsLzcwIGRhcms6Ym9yZGVyLW5ldXRyYWwtZGFyay83MCBiZy13aGl0ZSBkYXJrOmJnLWJsYWNrIGJlZm9yZTphYnNvbHV0ZSBiZWZvcmU6aW5zZXQtMSBiZWZvcmU6cm91bmRlZC1mdWxsIGJlZm9yZTpiZy13aGl0ZSBkYXJrOmJlZm9yZTpiZy1ibGFjayBub3QtY2hlY2tlZDpiZWZvcmU6aGlkZGVuIGZvY3VzLXZpc2libGU6b3V0bGluZS0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtc2Vjb25kYXJ5IGRpc2FibGVkOmJvcmRlci1ibGFjay80MCBkYXJrOmRpc2FibGVkOmJvcmRlci13aGl0ZS80MCBkaXNhYmxlZDpiZy13aGl0ZS81MCBkYXJrOmRpc2FibGVkOmJnLWJsYWNrLzUwIGRpc2FibGVkOmJlZm9yZTpiZy1ibGFjay80MCBkYXJrOmRpc2FibGVkOmJlZm9yZTpiZy13aGl0ZS81MCBmb3JjZWQtY29sb3JzOmFwcGVhcmFuY2UtYXV0byBmb3JjZWQtY29sb3JzOmJlZm9yZTpoaWRkZW4nLFxuICBvcHRpb25zXG59KSA9PiB7XG4gIGNvbnN0IGZvcm0gPSB1c2VHb3RoYW1Gb3JtRmllbGQobmFtZSk7XG4gIGNvbnN0IFtsb2NhbFZhbHVlLCBzZXRMb2NhbFZhbHVlXSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIGNvbnN0IG9wdGlvbkNsYXNzZXMgPSB1c2VNZW1vKFxuICAgICgpID0+IGNuKG9wdGlvbkNsYXNzLCBnZXRDaGVja2VkQ2xhc3Nlcyhjb2xvcikpLFxuICAgIFtjb2xvciwgb3B0aW9uQ2xhc3NdXG4gICk7XG4gIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGZvcm0/LnZhbHVlID8/IGxvY2FsVmFsdWU7XG4gIHJldHVybiAoXG4gICAgPGZpZWxkc2V0IGFyaWEtbGFiZWw9e2xhYmVsfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IHJlbGF0aXZlXCIga2V5PXtvcHRpb24uaWQgfHwgb3B0aW9uLnZhbHVlfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLTYgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2Ake29wdGlvbi5pZCB8fCBvcHRpb24udmFsdWV9LWRlc2NyaXB0aW9uYH1cbiAgICAgICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWUgPT09IG9wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e29wdGlvbkNsYXNzZXN9XG4gICAgICAgICAgICAgICAgaWQ9e29wdGlvbi5pZCB8fCBvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYoIWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxWYWx1ZShvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZm9ybT8uc2V0VmFsdWUobmFtZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIGZvcm0/LmNsZWFyRXJyb3IobmFtZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWwtMyB0ZXh0LXNtLzZcIj5cbiAgICAgICAgICAgICAge29wdGlvbi5sYWJlbCAmJiAoXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIgaHRtbEZvcj17b3B0aW9uLmlkIHx8IG9wdGlvbi52YWx1ZX0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtvcHRpb24uZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgZGFyazp0ZXh0LXdoaXRlXCIgaWQ9e2Ake29wdGlvbi5pZCB8fCBvcHRpb24udmFsdWV9LWRlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgUmFkaW9GaWVsZCA9IG1lbW8oUmFkaW9GaWVsZENvbXBvbmVudCk7XG5SYWRpb0ZpZWxkLmRpc3BsYXlOYW1lID0gJ1JhZGlvRmllbGQnO1xuIl0sIm5hbWVzIjpbImNuIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImdldENoZWNrZWRDbGFzc2VzIiwidXNlR290aGFtRm9ybUZpZWxkIiwiUmFkaW9GaWVsZENvbXBvbmVudCIsImNvbG9yIiwiZGVmYXVsdFZhbHVlIiwibGFiZWwiLCJuYW1lIiwib3B0aW9uQ2xhc3MiLCJvcHRpb25zIiwiZm9ybSIsImxvY2FsVmFsdWUiLCJzZXRMb2NhbFZhbHVlIiwib3B0aW9uQ2xhc3NlcyIsImN1cnJlbnRWYWx1ZSIsInZhbHVlIiwiZmllbGRzZXQiLCJhcmlhLWxhYmVsIiwiZGl2IiwiY2xhc3NOYW1lIiwibWFwIiwib3B0aW9uIiwiaW5wdXQiLCJhcmlhLWRlc2NyaWJlZGJ5IiwiaWQiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJzZXRWYWx1ZSIsImNsZWFyRXJyb3IiLCJ0eXBlIiwiaHRtbEZvciIsImRlc2NyaXB0aW9uIiwicCIsIlJhZGlvRmllbGQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQU8sUUFBUTtBQUU5QyxTQUFRQyxpQkFBaUIsUUFBeUIsNEJBQTRCO0FBQzlFLFNBQVFDLGtCQUFrQixRQUFPLHlCQUF5QjtBQW9CMUQsTUFBTUMsc0JBQTJDLENBQUMsRUFDaERDLFFBQVEsU0FBUyxFQUNqQkMsWUFBWSxFQUNaQyxLQUFLLEVBQ0xDLElBQUksRUFDSkMsY0FBYywraUJBQStpQixFQUM3akJDLE9BQU8sRUFDUjtJQUNDLE1BQU1DLE9BQU9SLG1CQUFtQks7SUFDaEMsTUFBTSxDQUFDSSxZQUFZQyxjQUFjLEdBQUdaLFNBQVNLO0lBQzdDLE1BQU1RLGdCQUFnQmQsUUFDcEIsSUFBTUYsR0FBR1csYUFBYVAsa0JBQWtCRyxTQUN4QztRQUFDQTtRQUFPSTtLQUFZO0lBRXRCLE1BQU1NLGVBQWVKLE1BQU1LLFNBQVNKO0lBQ3BDLHFCQUNFLEtBQUNLO1FBQVNDLGNBQVlYO2tCQUNwQixjQUFBLEtBQUNZO1lBQUlDLFdBQVU7c0JBQ1pWLFFBQVFXLEdBQUcsQ0FBQyxDQUFDQyx1QkFDWixNQUFDSDtvQkFBSUMsV0FBVTs7c0NBQ2IsS0FBQ0Q7NEJBQUlDLFdBQVU7c0NBQ2IsY0FBQSxLQUFDRztnQ0FDQ0Msb0JBQWtCLEdBQUdGLE9BQU9HLEVBQUUsSUFBSUgsT0FBT04sS0FBSyxDQUFDLFlBQVksQ0FBQztnQ0FDNURVLFNBQVNYLGlCQUFpQk8sT0FBT04sS0FBSztnQ0FDdENJLFdBQVdOO2dDQUNYVyxJQUFJSCxPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUs7Z0NBQzdCUixNQUFNQTtnQ0FDTm1CLFVBQVU7b0NBQ1IsSUFBRyxDQUFDaEIsTUFBTTt3Q0FDUkUsY0FBY1MsT0FBT04sS0FBSztvQ0FDNUI7b0NBQ0FMLE1BQU1pQixTQUFTcEIsTUFBTWMsT0FBT04sS0FBSztvQ0FDakNMLE1BQU1rQixXQUFXckI7Z0NBQ25CO2dDQUNBc0IsTUFBSztnQ0FDTGQsT0FBT00sT0FBT04sS0FBSzs7O3NDQUd2QixNQUFDRzs0QkFBSUMsV0FBVTs7Z0NBQ1pFLE9BQU9mLEtBQUssa0JBQ1gsS0FBQ0E7b0NBQU1hLFdBQVU7b0NBQTRDVyxTQUFTVCxPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUs7OENBQzVGTSxPQUFPZixLQUFLOztnQ0FHaEJlLE9BQU9VLFdBQVcsa0JBQ2pCLEtBQUNDO29DQUFFYixXQUFVO29DQUFnQ0ssSUFBSSxHQUFHSCxPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUssQ0FBQyxZQUFZLENBQUM7OENBQ3hGTSxPQUFPVSxXQUFXOzs7OzttQkEzQnFCVixPQUFPRyxFQUFFLElBQUlILE9BQU9OLEtBQUs7OztBQW9DbkY7QUFFQSxPQUFPLE1BQU1rQiwyQkFBYW5DLEtBQUtLLHFCQUFxQjtBQUNwRDhCLFdBQVdDLFdBQVcsR0FBRyJ9