@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,157 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ import { useTranslation } from '../../i18n/index.js';
4
+ import { getBackgroundClasses, getBorderClasses, getTextClasses } from '../../utils/colorUtils.js';
5
+ import { renderWithAsChild } from '../ComponentUtils/renderWithAsChild.js';
6
+ const getNormalizedVariant = (variant)=>{
7
+ if (variant === 'contained') return 'solid';
8
+ if (variant === 'outlined') return 'outline';
9
+ return variant;
10
+ };
11
+ export const Button = ({ as, asChild = false, backgroundColor, children, className, color = 'primary', disabled, hasNotification = false, hasShadow = false, icon, isLoading = false, label = '', labelColor, onClick = ()=>{}, ref, rounded = 0, size = 'md', style, type = 'button', variant = 'solid', ...props })=>{
12
+ const { t } = useTranslation();
13
+ const normalizedVariant = getNormalizedVariant(variant);
14
+ const resolvedBackgroundColor = backgroundColor ?? (normalizedVariant === 'solid' ? color : 'transparent');
15
+ const resolvedLabelColor = labelColor ?? (normalizedVariant === 'solid' ? 'white' : color);
16
+ const resolvedBorderColor = normalizedVariant === 'outline' ? resolvedLabelColor : resolvedBackgroundColor;
17
+ const classes = [
18
+ 'disabled:pointer-events-none',
19
+ 'disabled:opacity-50'
20
+ ];
21
+ if (variant) {
22
+ classes.push(...[
23
+ 'cursor-pointer',
24
+ 'flex',
25
+ 'focus-visible:outline',
26
+ 'focus-visible:outline-2',
27
+ 'focus-visible:outline-offset-2',
28
+ 'focus-visible:outline-secondary',
29
+ 'items-center',
30
+ 'justify-center',
31
+ 'leading-6',
32
+ 'relative',
33
+ 'transition-colors',
34
+ 'duration-300',
35
+ 'ease-out'
36
+ ]);
37
+ switch(normalizedVariant){
38
+ case 'outline':
39
+ classes.push(getBackgroundClasses(resolvedBackgroundColor, {
40
+ hasFocus: true,
41
+ hasHover: resolvedBackgroundColor !== 'transparent'
42
+ }), 'border-1', 'font-semibold', getBorderClasses(resolvedBorderColor, {
43
+ hasFocus: true,
44
+ hasHover: true
45
+ }), getTextClasses(resolvedLabelColor, {
46
+ hasFocus: true,
47
+ hasHover: true
48
+ }));
49
+ break;
50
+ case 'text':
51
+ classes.push(getBackgroundClasses(resolvedBackgroundColor, {
52
+ hasFocus: true,
53
+ hasHover: resolvedBackgroundColor !== 'transparent'
54
+ }), 'font-semibold', getTextClasses(resolvedLabelColor, {
55
+ hasFocus: true,
56
+ hasHover: true
57
+ }));
58
+ break;
59
+ case 'solid':
60
+ default:
61
+ classes.push(getBackgroundClasses(resolvedBackgroundColor, {
62
+ hasFocus: true,
63
+ hasHover: true
64
+ }), getBorderClasses(resolvedBackgroundColor, {
65
+ hasFocus: true,
66
+ hasHover: true
67
+ }), 'font-medium', getTextClasses(resolvedLabelColor, {
68
+ hasFocus: true,
69
+ hasHover: resolvedLabelColor !== 'white'
70
+ }));
71
+ break;
72
+ }
73
+ if (hasShadow && variant !== 'text') {
74
+ classes.push('shadow-[0_0_12px_rgba(0,0,0,0.12)] dark:shadow-[0_0_12px_rgba(0,0,0,0.28)]');
75
+ }
76
+ switch(size){
77
+ case 'sm':
78
+ classes.push('px-4', 'py-0.5', 'text-sm');
79
+ break;
80
+ case 'lg':
81
+ classes.push('px-8', 'py-4', 'text-lg');
82
+ break;
83
+ case 'md':
84
+ default:
85
+ classes.push('px-6', 'py-2', 'text-md');
86
+ }
87
+ }
88
+ let buttonNotification = null;
89
+ if (hasNotification) {
90
+ buttonNotification = /*#__PURE__*/ _jsxs("span", {
91
+ className: "absolute top-0 right-0 -mt-1 -mr-1 flex size-3",
92
+ children: [
93
+ /*#__PURE__*/ _jsx("span", {
94
+ className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-sky-400 opacity-75"
95
+ }),
96
+ /*#__PURE__*/ _jsx("span", {
97
+ className: "relative inline-flex size-3 rounded-full bg-sky-500"
98
+ })
99
+ ]
100
+ });
101
+ }
102
+ const buttonContent = asChild ? children : /*#__PURE__*/ _jsxs(_Fragment, {
103
+ children: [
104
+ buttonNotification,
105
+ /*#__PURE__*/ _jsxs("span", {
106
+ className: cn('inline-flex items-center justify-center gap-2', isLoading && 'opacity-0'),
107
+ children: [
108
+ icon,
109
+ children ? children : t(label)
110
+ ]
111
+ }),
112
+ isLoading ? /*#__PURE__*/ _jsxs("svg", {
113
+ "aria-hidden": "true",
114
+ className: "absolute left-1/2 top-1/2 size-5 -translate-x-1/2 -translate-y-1/2 animate-spin",
115
+ fill: "none",
116
+ viewBox: "0 0 24 24",
117
+ xmlns: "http://www.w3.org/2000/svg",
118
+ children: [
119
+ /*#__PURE__*/ _jsx("circle", {
120
+ className: "opacity-25",
121
+ cx: "12",
122
+ cy: "12",
123
+ r: "10",
124
+ stroke: "currentColor",
125
+ strokeWidth: "4"
126
+ }),
127
+ /*#__PURE__*/ _jsx("path", {
128
+ className: "opacity-75",
129
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z",
130
+ fill: "currentColor"
131
+ })
132
+ ]
133
+ }) : null
134
+ ]
135
+ });
136
+ return renderWithAsChild({
137
+ as: as ?? 'button',
138
+ asChild,
139
+ children: buttonContent,
140
+ className: cn(...classes, className),
141
+ 'data-testid': `button-${label || children}`,
142
+ disabled: isLoading || disabled,
143
+ onClick,
144
+ ref,
145
+ style: {
146
+ ...style,
147
+ borderRadius: rounded
148
+ },
149
+ type,
150
+ ...props
151
+ }, {
152
+ 'data-slot': 'button',
153
+ 'data-variant': variant
154
+ });
155
+ };
156
+
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7dXNlVHJhbnNsYXRpb259IGZyb20gJy4uLy4uL2kxOG4vaW5kZXguanMnO1xuaW1wb3J0IHtnZXRCYWNrZ3JvdW5kQ2xhc3NlcywgZ2V0Qm9yZGVyQ2xhc3NlcywgZ2V0VGV4dENsYXNzZXN9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9yVXRpbHMuanMnO1xuaW1wb3J0IHtyZW5kZXJXaXRoQXNDaGlsZH0gZnJvbSAnLi4vQ29tcG9uZW50VXRpbHMvcmVuZGVyV2l0aEFzQ2hpbGQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QnV0dG9uSFRNTEF0dHJpYnV0ZXMsIENTU1Byb3BlcnRpZXMsIEVsZW1lbnRUeXBlLCBSZWFjdE5vZGUsIFJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0dvdGhhbUNvbG9yfSBmcm9tICcuLi8uLi91dGlscy9jb2xvclV0aWxzLmpzJztcbmltcG9ydCB0eXBlIHtHb3RoYW1TaXplfSBmcm9tICcuLi8uLi91dGlscy9zaXplVXRpbHMuanMnO1xuXG5leHBvcnQgdHlwZSBCdXR0b25UeXBlID0gJ2J1dHRvbicgfCAncmVzZXQnIHwgJ3N1Ym1pdCc7XG5leHBvcnQgdHlwZSBCdXR0b25WYXJpYW50ID0gJ3RleHQnIHwgJ3NvbGlkJyB8ICdvdXRsaW5lJyB8ICdjb250YWluZWQnIHwgJ291dGxpbmVkJztcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wcyBleHRlbmRzIE9taXQ8QnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LCAnY2hpbGRyZW4nIHwgJ2NvbG9yJyB8ICdvbkNsaWNrJyB8ICd0eXBlJz4ge1xuICByZWFkb25seSBhcz86IEVsZW1lbnRUeXBlO1xuICByZWFkb25seSBhc0NoaWxkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYmFja2dyb3VuZENvbG9yPzogR290aGFtQ29sb3I7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBjb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSBoYXNOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICByZWFkb25seSBoYXNTaGFkb3c/OiBib29sZWFuO1xuICByZWFkb25seSBpY29uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBpc0xvYWRpbmc/OiBib29sZWFuO1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWxDb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSBvbkNsaWNrPzogKGV2ZW50PzogdW5rbm93bikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcmVmPzogUmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgcmVhZG9ubHkgcm91bmRlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgc2l6ZT86IEdvdGhhbVNpemU7XG4gIHJlYWRvbmx5IHR5cGU/OiBCdXR0b25UeXBlO1xuICByZWFkb25seSB2YXJpYW50PzogQnV0dG9uVmFyaWFudDtcbn1cblxuY29uc3QgZ2V0Tm9ybWFsaXplZFZhcmlhbnQgPSAodmFyaWFudDogQnV0dG9uVmFyaWFudCk6ICd0ZXh0JyB8ICdzb2xpZCcgfCAnb3V0bGluZScgPT4ge1xuICBpZih2YXJpYW50ID09PSAnY29udGFpbmVkJykgcmV0dXJuICdzb2xpZCc7XG4gIGlmKHZhcmlhbnQgPT09ICdvdXRsaW5lZCcpIHJldHVybiAnb3V0bGluZSc7XG5cbiAgcmV0dXJuIHZhcmlhbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gKHtcbiAgYXMsXG4gIGFzQ2hpbGQgPSBmYWxzZSxcbiAgYmFja2dyb3VuZENvbG9yLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgZGlzYWJsZWQsXG4gIGhhc05vdGlmaWNhdGlvbiA9IGZhbHNlLFxuICBoYXNTaGFkb3cgPSBmYWxzZSxcbiAgaWNvbixcbiAgaXNMb2FkaW5nID0gZmFsc2UsXG4gIGxhYmVsID0gJycsXG4gIGxhYmVsQ29sb3IsXG4gIG9uQ2xpY2sgPSAoKSA9PiB7fSxcbiAgcmVmLFxuICByb3VuZGVkID0gMCxcbiAgc2l6ZSA9ICdtZCcsXG4gIHN0eWxlLFxuICB0eXBlID0gJ2J1dHRvbicsXG4gIHZhcmlhbnQgPSAnc29saWQnLFxuICAuLi5wcm9wc1xufTogQnV0dG9uUHJvcHMpID0+IHtcbiAgY29uc3Qge3R9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm9ybWFsaXplZFZhcmlhbnQgPSBnZXROb3JtYWxpemVkVmFyaWFudCh2YXJpYW50KTtcbiAgY29uc3QgcmVzb2x2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IgPz8gKG5vcm1hbGl6ZWRWYXJpYW50ID09PSAnc29saWQnID8gY29sb3IgOiAndHJhbnNwYXJlbnQnKTtcbiAgY29uc3QgcmVzb2x2ZWRMYWJlbENvbG9yID0gbGFiZWxDb2xvciA/PyAobm9ybWFsaXplZFZhcmlhbnQgPT09ICdzb2xpZCcgPyAnd2hpdGUnIDogY29sb3IpO1xuICBjb25zdCByZXNvbHZlZEJvcmRlckNvbG9yID0gbm9ybWFsaXplZFZhcmlhbnQgPT09ICdvdXRsaW5lJyA/IHJlc29sdmVkTGFiZWxDb2xvciA6IHJlc29sdmVkQmFja2dyb3VuZENvbG9yO1xuICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtcbiAgICAnZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgJ2Rpc2FibGVkOm9wYWNpdHktNTAnXG4gIF07XG5cbiAgaWYodmFyaWFudCkge1xuICAgIGNsYXNzZXMucHVzaCguLi5bXG4gICAgICAnY3Vyc29yLXBvaW50ZXInLFxuICAgICAgJ2ZsZXgnLFxuICAgICAgJ2ZvY3VzLXZpc2libGU6b3V0bGluZScsXG4gICAgICAnZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTInLFxuICAgICAgJ2ZvY3VzLXZpc2libGU6b3V0bGluZS1vZmZzZXQtMicsXG4gICAgICAnZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXNlY29uZGFyeScsXG4gICAgICAnaXRlbXMtY2VudGVyJyxcbiAgICAgICdqdXN0aWZ5LWNlbnRlcicsXG4gICAgICAnbGVhZGluZy02JyxcbiAgICAgICdyZWxhdGl2ZScsXG4gICAgICAndHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgJ2R1cmF0aW9uLTMwMCcsXG4gICAgICAnZWFzZS1vdXQnXG4gICAgXSk7XG5cbiAgICBzd2l0Y2gobm9ybWFsaXplZFZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ291dGxpbmUnOlxuICAgICAgICBjbGFzc2VzLnB1c2goXG4gICAgICAgICAgZ2V0QmFja2dyb3VuZENsYXNzZXMocmVzb2x2ZWRCYWNrZ3JvdW5kQ29sb3IsIHtoYXNGb2N1czogdHJ1ZSwgaGFzSG92ZXI6IHJlc29sdmVkQmFja2dyb3VuZENvbG9yICE9PSAndHJhbnNwYXJlbnQnfSksXG4gICAgICAgICAgJ2JvcmRlci0xJyxcbiAgICAgICAgICAnZm9udC1zZW1pYm9sZCcsXG4gICAgICAgICAgZ2V0Qm9yZGVyQ2xhc3NlcyhyZXNvbHZlZEJvcmRlckNvbG9yLCB7aGFzRm9jdXM6IHRydWUsIGhhc0hvdmVyOiB0cnVlfSksXG4gICAgICAgICAgZ2V0VGV4dENsYXNzZXMocmVzb2x2ZWRMYWJlbENvbG9yLCB7aGFzRm9jdXM6IHRydWUsIGhhc0hvdmVyOiB0cnVlfSlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgY2xhc3Nlcy5wdXNoKFxuICAgICAgICAgIGdldEJhY2tncm91bmRDbGFzc2VzKHJlc29sdmVkQmFja2dyb3VuZENvbG9yLCB7aGFzRm9jdXM6IHRydWUsIGhhc0hvdmVyOiByZXNvbHZlZEJhY2tncm91bmRDb2xvciAhPT0gJ3RyYW5zcGFyZW50J30pLFxuICAgICAgICAgICdmb250LXNlbWlib2xkJyxcbiAgICAgICAgICBnZXRUZXh0Q2xhc3NlcyhyZXNvbHZlZExhYmVsQ29sb3IsIHtoYXNGb2N1czogdHJ1ZSwgaGFzSG92ZXI6IHRydWV9KVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NvbGlkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNsYXNzZXMucHVzaChcbiAgICAgICAgICBnZXRCYWNrZ3JvdW5kQ2xhc3NlcyhyZXNvbHZlZEJhY2tncm91bmRDb2xvciwge2hhc0ZvY3VzOiB0cnVlLCBoYXNIb3ZlcjogdHJ1ZX0pLFxuICAgICAgICAgIGdldEJvcmRlckNsYXNzZXMocmVzb2x2ZWRCYWNrZ3JvdW5kQ29sb3IsIHtoYXNGb2N1czogdHJ1ZSwgaGFzSG92ZXI6IHRydWV9KSxcbiAgICAgICAgICAnZm9udC1tZWRpdW0nLFxuICAgICAgICAgIGdldFRleHRDbGFzc2VzKHJlc29sdmVkTGFiZWxDb2xvciwge2hhc0ZvY3VzOiB0cnVlLCBoYXNIb3ZlcjogcmVzb2x2ZWRMYWJlbENvbG9yICE9PSAnd2hpdGUnfSlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYoaGFzU2hhZG93ICYmIHZhcmlhbnQgIT09ICd0ZXh0Jykge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdzaGFkb3ctWzBfMF8xMnB4X3JnYmEoMCwwLDAsMC4xMildIGRhcms6c2hhZG93LVswXzBfMTJweF9yZ2JhKDAsMCwwLDAuMjgpXScpO1xuICAgIH1cblxuICAgIHN3aXRjaChzaXplKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIGNsYXNzZXMucHVzaChcbiAgICAgICAgICAncHgtNCcsXG4gICAgICAgICAgJ3B5LTAuNScsXG4gICAgICAgICAgJ3RleHQtc20nXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICBjbGFzc2VzLnB1c2goXG4gICAgICAgICAgJ3B4LTgnLFxuICAgICAgICAgICdweS00JyxcbiAgICAgICAgICAndGV4dC1sZydcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtZCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjbGFzc2VzLnB1c2goXG4gICAgICAgICAgJ3B4LTYnLFxuICAgICAgICAgICdweS0yJyxcbiAgICAgICAgICAndGV4dC1tZCdcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsZXQgYnV0dG9uTm90aWZpY2F0aW9uOiBSZWFjdE5vZGUgfCBudWxsID0gbnVsbDtcblxuICBpZihoYXNOb3RpZmljYXRpb24pIHtcbiAgICBidXR0b25Ob3RpZmljYXRpb24gPSAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIC1tdC0xIC1tci0xIGZsZXggc2l6ZS0zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIGlubGluZS1mbGV4IGgtZnVsbCB3LWZ1bGwgYW5pbWF0ZS1waW5nIHJvdW5kZWQtZnVsbCBiZy1za3ktNDAwIG9wYWNpdHktNzVcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJlbGF0aXZlIGlubGluZS1mbGV4IHNpemUtMyByb3VuZGVkLWZ1bGwgYmctc2t5LTUwMFwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgYnV0dG9uQ29udGVudCA9IGFzQ2hpbGQgPyBjaGlsZHJlbiA6IChcbiAgICA8PlxuICAgICAge2J1dHRvbk5vdGlmaWNhdGlvbn1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oJ2lubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMicsIGlzTG9hZGluZyAmJiAnb3BhY2l0eS0wJyl9PlxuICAgICAgICB7aWNvbn1cbiAgICAgICAge2NoaWxkcmVuID8gY2hpbGRyZW4gOiB0KGxhYmVsKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxzdmdcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMS8yIHRvcC0xLzIgc2l6ZS01IC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBhbmltYXRlLXNwaW5cIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGUgY2xhc3NOYW1lPVwib3BhY2l0eS0yNVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCI0XCI+PC9jaXJjbGU+XG4gICAgICAgICAgPHBhdGggY2xhc3NOYW1lPVwib3BhY2l0eS03NVwiIGQ9XCJNNCAxMmE4IDggMCAwMTgtOFYwQzUuMzczIDAgMCA1LjM3MyAwIDEyaDR6bTIgNS4yOTFBNy45NjIgNy45NjIgMCAwMTQgMTJIMGMwIDMuMDQyIDEuMTM1IDUuODI0IDMgNy45MzhsMy0yLjY0N3pcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvPlxuICApO1xuXG4gIHJldHVybiByZW5kZXJXaXRoQXNDaGlsZChcbiAgICB7XG4gICAgICBhczogYXMgPz8gJ2J1dHRvbicsXG4gICAgICBhc0NoaWxkLFxuICAgICAgY2hpbGRyZW46IGJ1dHRvbkNvbnRlbnQsXG4gICAgICBjbGFzc05hbWU6IGNuKC4uLmNsYXNzZXMsIGNsYXNzTmFtZSksXG4gICAgICAnZGF0YS10ZXN0aWQnOiBgYnV0dG9uLSR7bGFiZWwgfHwgY2hpbGRyZW59YCxcbiAgICAgIGRpc2FibGVkOiBpc0xvYWRpbmcgfHwgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgcmVmLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgIGJvcmRlclJhZGl1czogcm91bmRlZFxuICAgICAgfSBhcyBDU1NQcm9wZXJ0aWVzLFxuICAgICAgdHlwZSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSBhcyBuZXZlcixcbiAgICB7XG4gICAgICAnZGF0YS1zbG90JzogJ2J1dHRvbicsXG4gICAgICAnZGF0YS12YXJpYW50JzogdmFyaWFudFxuICAgIH1cbiAgKTtcbn07XG4iXSwibmFtZXMiOlsiY24iLCJ1c2VUcmFuc2xhdGlvbiIsImdldEJhY2tncm91bmRDbGFzc2VzIiwiZ2V0Qm9yZGVyQ2xhc3NlcyIsImdldFRleHRDbGFzc2VzIiwicmVuZGVyV2l0aEFzQ2hpbGQiLCJnZXROb3JtYWxpemVkVmFyaWFudCIsInZhcmlhbnQiLCJCdXR0b24iLCJhcyIsImFzQ2hpbGQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImNvbG9yIiwiZGlzYWJsZWQiLCJoYXNOb3RpZmljYXRpb24iLCJoYXNTaGFkb3ciLCJpY29uIiwiaXNMb2FkaW5nIiwibGFiZWwiLCJsYWJlbENvbG9yIiwib25DbGljayIsInJlZiIsInJvdW5kZWQiLCJzaXplIiwic3R5bGUiLCJ0eXBlIiwicHJvcHMiLCJ0Iiwibm9ybWFsaXplZFZhcmlhbnQiLCJyZXNvbHZlZEJhY2tncm91bmRDb2xvciIsInJlc29sdmVkTGFiZWxDb2xvciIsInJlc29sdmVkQm9yZGVyQ29sb3IiLCJjbGFzc2VzIiwicHVzaCIsImhhc0ZvY3VzIiwiaGFzSG92ZXIiLCJidXR0b25Ob3RpZmljYXRpb24iLCJzcGFuIiwiYnV0dG9uQ29udGVudCIsInN2ZyIsImFyaWEtaGlkZGVuIiwiZmlsbCIsInZpZXdCb3giLCJ4bWxucyIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJwYXRoIiwiZCIsImJvcmRl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
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { I18nextProvider, initReactI18next } from 'react-i18next';
4
+ import { i18n } from '../../i18n/index.js';
5
+ import { gothamColors } from '../../utils/colorUtils.js';
6
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
7
+ import { Button as ButtonComponent } from './Button.js';
8
+ const meta = {
9
+ argTypes: {
10
+ color: {
11
+ control: 'select',
12
+ options: gothamColors
13
+ },
14
+ backgroundColor: {
15
+ control: 'select',
16
+ options: [
17
+ ...gothamColors,
18
+ 'transparent'
19
+ ]
20
+ },
21
+ hasShadow: {
22
+ control: 'boolean'
23
+ },
24
+ isLoading: {
25
+ control: 'boolean'
26
+ },
27
+ labelColor: {
28
+ control: 'select',
29
+ options: gothamColors
30
+ },
31
+ rounded: {
32
+ control: {
33
+ max: 32,
34
+ min: 0,
35
+ step: 1,
36
+ type: 'number'
37
+ }
38
+ },
39
+ size: {
40
+ control: 'select',
41
+ options: [
42
+ 'sm',
43
+ 'md',
44
+ 'lg'
45
+ ]
46
+ },
47
+ variant: {
48
+ control: 'select',
49
+ options: [
50
+ 'solid',
51
+ 'outline',
52
+ 'text',
53
+ 'contained',
54
+ 'outlined'
55
+ ]
56
+ }
57
+ },
58
+ component: ButtonComponent,
59
+ decorators: [
60
+ (Story)=>{
61
+ // Initialize i18n for Storybook
62
+ const storyI18n = i18n.createInstance();
63
+ storyI18n.use(initReactI18next).init({
64
+ fallbackLng: 'en',
65
+ interpolation: {
66
+ escapeValue: false
67
+ },
68
+ lng: 'en',
69
+ resources: {
70
+ en: {
71
+ translation: {
72
+ Button: 'Button'
73
+ }
74
+ }
75
+ }
76
+ });
77
+ return /*#__PURE__*/ _jsx(I18nextProvider, {
78
+ i18n: storyI18n,
79
+ children: /*#__PURE__*/ _jsx("div", {
80
+ className: "p-4",
81
+ children: /*#__PURE__*/ _jsx(Story, {})
82
+ })
83
+ });
84
+ }
85
+ ],
86
+ parameters: {
87
+ backgrounds: {
88
+ default: 'light',
89
+ values: [
90
+ {
91
+ name: 'light',
92
+ value: '#ffffff'
93
+ },
94
+ {
95
+ name: 'dark',
96
+ value: '#1a1a1a'
97
+ }
98
+ ]
99
+ },
100
+ layout: 'centered'
101
+ },
102
+ title: 'Components/Button'
103
+ };
104
+ export default meta;
105
+ export const Button = {
106
+ args: {
107
+ color: 'secondary',
108
+ disabled: false,
109
+ hasShadow: false,
110
+ isLoading: false,
111
+ label: 'Button',
112
+ rounded: 0,
113
+ size: 'md',
114
+ variant: 'solid'
115
+ },
116
+ play: interactWithCanvas
117
+ };
118
+
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24uc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7STE4bmV4dFByb3ZpZGVyLCBpbml0UmVhY3RJMThuZXh0fSBmcm9tICdyZWFjdC1pMThuZXh0JztcblxuaW1wb3J0IHtpMThufSBmcm9tICcuLi8uLi9pMThuL2luZGV4LmpzJztcbmltcG9ydCB7Z290aGFtQ29sb3JzfSBmcm9tICcuLi8uLi91dGlscy9jb2xvclV0aWxzLmpzJztcbmltcG9ydCB7aW50ZXJhY3RXaXRoQ2FudmFzfSBmcm9tICcuLi8uLi91dGlscy9zdG9yeUludGVyYWN0aW9ucy5qcyc7XG5pbXBvcnQge0J1dHRvbiBhcyBCdXR0b25Db21wb25lbnR9IGZyb20gJy4vQnV0dG9uLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIEJ1dHRvbkNvbXBvbmVudD4gPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgY29sb3I6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogZ290aGFtQ29sb3JzXG4gICAgfSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWy4uLmdvdGhhbUNvbG9ycywgJ3RyYW5zcGFyZW50J11cbiAgICB9LFxuICAgIGhhc1NoYWRvdzoge1xuICAgICAgY29udHJvbDogJ2Jvb2xlYW4nXG4gICAgfSxcbiAgICBpc0xvYWRpbmc6IHtcbiAgICAgIGNvbnRyb2w6ICdib29sZWFuJ1xuICAgIH0sXG4gICAgbGFiZWxDb2xvcjoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBnb3RoYW1Db2xvcnNcbiAgICB9LFxuICAgIHJvdW5kZWQ6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgbWF4OiAzMixcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBzdGVwOiAxLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJ1xuICAgICAgfVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBbJ3NtJywgJ21kJywgJ2xnJ11cbiAgICB9LFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogWydzb2xpZCcsICdvdXRsaW5lJywgJ3RleHQnLCAnY29udGFpbmVkJywgJ291dGxpbmVkJ11cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50LFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiB7XG4gICAgICAvLyBJbml0aWFsaXplIGkxOG4gZm9yIFN0b3J5Ym9va1xuICAgICAgY29uc3Qgc3RvcnlJMThuID0gaTE4bi5jcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgc3RvcnlJMThuXG4gICAgICAgIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgICAgICAgLmluaXQoe1xuICAgICAgICAgIGZhbGxiYWNrTG5nOiAnZW4nLFxuICAgICAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbG5nOiAnZW4nLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgZW46IHtcbiAgICAgICAgICAgICAgdHJhbnNsYXRpb246IHtcbiAgICAgICAgICAgICAgICBCdXR0b246ICdCdXR0b24nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8STE4bmV4dFByb3ZpZGVyIGkxOG49e3N0b3J5STE4bn0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTRcIj5cbiAgICAgICAgICAgIDxTdG9yeSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgICAgICk7XG4gICAgfVxuICBdLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgYmFja2dyb3VuZHM6IHtcbiAgICAgIGRlZmF1bHQ6ICdsaWdodCcsXG4gICAgICB2YWx1ZXM6IFtcbiAgICAgICAge25hbWU6ICdsaWdodCcsIHZhbHVlOiAnI2ZmZmZmZid9LFxuICAgICAgICB7bmFtZTogJ2RhcmsnLCB2YWx1ZTogJyMxYTFhMWEnfVxuICAgICAgXVxuICAgIH0sXG4gICAgbGF5b3V0OiAnY2VudGVyZWQnXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9CdXR0b24nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIEJ1dHRvbkNvbXBvbmVudD47XG5cbmV4cG9ydCBjb25zdCBCdXR0b246IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY29sb3I6ICdzZWNvbmRhcnknLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBoYXNTaGFkb3c6IGZhbHNlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgbGFiZWw6ICdCdXR0b24nLFxuICAgIHJvdW5kZWQ6IDAsXG4gICAgc2l6ZTogJ21kJyxcbiAgICB2YXJpYW50OiAnc29saWQnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkkxOG5leHRQcm92aWRlciIsImluaXRSZWFjdEkxOG5leHQiLCJpMThuIiwiZ290aGFtQ29sb3JzIiwiaW50ZXJhY3RXaXRoQ2FudmFzIiwiQnV0dG9uIiwiQnV0dG9uQ29tcG9uZW50IiwibWV0YSIsImFyZ1R5cGVzIiwiY29sb3IiLCJjb250cm9sIiwib3B0aW9ucyIsImJhY2tncm91bmRDb2xvciIsImhhc1NoYWRvdyIsImlzTG9hZGluZyIsImxhYmVsQ29sb3IiLCJyb3VuZGVkIiwibWF4IiwibWluIiwic3RlcCIsInR5cGUiLCJzaXplIiwidmFyaWFudCIsImNvbXBvbmVudCIsImRlY29yYXRvcnMiLCJTdG9yeSIsInN0b3J5STE4biIsImNyZWF0ZUluc3RhbmNlIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwibG5nIiwicmVzb3VyY2VzIiwiZW4iLCJ0cmFuc2xhdGlvbiIsImRpdiIsImNsYXNzTmFtZSIsInBhcmFtZXRlcnMiLCJiYWNrZ3JvdW5kcyIsImRlZmF1bHQiLCJ2YWx1ZXMiLCJuYW1lIiwidmFsdWUiLCJsYXlvdXQiLCJ0aXRsZSIsImFyZ3MiLCJkaXNhYmxlZCIsImxhYmVsIiwicGxheSJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxlQUFlLEVBQUVDLGdCQUFnQixRQUFPLGdCQUFnQjtBQUVoRSxTQUFRQyxJQUFJLFFBQU8sc0JBQXNCO0FBQ3pDLFNBQVFDLFlBQVksUUFBTyw0QkFBNEI7QUFDdkQsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBQ3BFLFNBQVFDLFVBQVVDLGVBQWUsUUFBTyxjQUFjO0FBSXRELE1BQU1DLE9BQXFDO0lBQ3pDQyxVQUFVO1FBQ1JDLE9BQU87WUFDTEMsU0FBUztZQUNUQyxTQUFTUjtRQUNYO1FBQ0FTLGlCQUFpQjtZQUNmRixTQUFTO1lBQ1RDLFNBQVM7bUJBQUlSO2dCQUFjO2FBQWM7UUFDM0M7UUFDQVUsV0FBVztZQUNUSCxTQUFTO1FBQ1g7UUFDQUksV0FBVztZQUNUSixTQUFTO1FBQ1g7UUFDQUssWUFBWTtZQUNWTCxTQUFTO1lBQ1RDLFNBQVNSO1FBQ1g7UUFDQWEsU0FBUztZQUNQTixTQUFTO2dCQUNQTyxLQUFLO2dCQUNMQyxLQUFLO2dCQUNMQyxNQUFNO2dCQUNOQyxNQUFNO1lBQ1I7UUFDRjtRQUNBQyxNQUFNO1lBQ0pYLFNBQVM7WUFDVEMsU0FBUztnQkFBQztnQkFBTTtnQkFBTTthQUFLO1FBQzdCO1FBQ0FXLFNBQVM7WUFDUFosU0FBUztZQUNUQyxTQUFTO2dCQUFDO2dCQUFTO2dCQUFXO2dCQUFRO2dCQUFhO2FBQVc7UUFDaEU7SUFDRjtJQUNBWSxXQUFXakI7SUFDWGtCLFlBQVk7UUFDVixDQUFDQztZQUNDLGdDQUFnQztZQUNoQyxNQUFNQyxZQUFZeEIsS0FBS3lCLGNBQWM7WUFDckNELFVBQ0dFLEdBQUcsQ0FBQzNCLGtCQUNKNEIsSUFBSSxDQUFDO2dCQUNKQyxhQUFhO2dCQUNiQyxlQUFlO29CQUNiQyxhQUFhO2dCQUNmO2dCQUNBQyxLQUFLO2dCQUNMQyxXQUFXO29CQUNUQyxJQUFJO3dCQUNGQyxhQUFhOzRCQUNYL0IsUUFBUTt3QkFDVjtvQkFDRjtnQkFDRjtZQUNGO1lBRUYscUJBQ0UsS0FBQ0w7Z0JBQWdCRSxNQUFNd0I7MEJBQ3JCLGNBQUEsS0FBQ1c7b0JBQUlDLFdBQVU7OEJBQ2IsY0FBQSxLQUFDYjs7O1FBSVQ7S0FDRDtJQUNEYyxZQUFZO1FBQ1ZDLGFBQWE7WUFDWEMsU0FBUztZQUNUQyxRQUFRO2dCQUNOO29CQUFDQyxNQUFNO29CQUFTQyxPQUFPO2dCQUFTO2dCQUNoQztvQkFBQ0QsTUFBTTtvQkFBUUMsT0FBTztnQkFBUzthQUNoQztRQUNIO1FBQ0FDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFldkMsS0FBSztBQUlwQixPQUFPLE1BQU1GLFNBQWdCO0lBQzNCMEMsTUFBTTtRQUNKdEMsT0FBTztRQUNQdUMsVUFBVTtRQUNWbkMsV0FBVztRQUNYQyxXQUFXO1FBQ1htQyxPQUFPO1FBQ1BqQyxTQUFTO1FBQ1RLLE1BQU07UUFDTkMsU0FBUztJQUNYO0lBQ0E0QixNQUFNOUM7QUFDUixFQUFFIn0=
@@ -0,0 +1,8 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export declare const Card: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
3
+ export declare const CardHeader: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
4
+ export declare const CardTitle: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
5
+ export declare const CardDescription: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
6
+ export declare const CardAction: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
7
+ export declare const CardContent: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
8
+ export declare const CardFooter: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ export const Card = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
4
+ className: cn('flex flex-col gap-6 rounded-xl border border-border bg-card py-6 text-card-foreground shadow-sm', className),
5
+ "data-slot": "card",
6
+ ...props
7
+ });
8
+ export const CardHeader = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
9
+ className: cn('@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6', className),
10
+ "data-slot": "card-header",
11
+ ...props
12
+ });
13
+ export const CardTitle = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
14
+ className: cn('leading-none font-semibold', className),
15
+ "data-slot": "card-title",
16
+ ...props
17
+ });
18
+ export const CardDescription = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
19
+ className: cn('text-sm text-muted-foreground', className),
20
+ "data-slot": "card-description",
21
+ ...props
22
+ });
23
+ export const CardAction = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
24
+ className: cn('col-start-2 row-span-2 row-start-1 self-start justify-self-end', className),
25
+ "data-slot": "card-action",
26
+ ...props
27
+ });
28
+ export const CardContent = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
29
+ className: cn('px-6', className),
30
+ "data-slot": "card-content",
31
+ ...props
32
+ });
33
+ export const CardFooter = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
34
+ className: cn('flex items-center px-6 [.border-t]:pt-6', className),
35
+ "data-slot": "card-footer",
36
+ ...props
37
+ });
38
+
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NhcmQvQ2FyZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge0hUTUxBdHRyaWJ1dGVzfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBjb25zdCBDYXJkID0gKHtjbGFzc05hbWUsIC4uLnByb3BzfTogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIGdhcC02IHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctY2FyZCBweS02IHRleHQtY2FyZC1mb3JlZ3JvdW5kIHNoYWRvdy1zbScsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiY2FyZFwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENhcmRIZWFkZXIgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ0Bjb250YWluZXIvY2FyZC1oZWFkZXIgZ3JpZCBhdXRvLXJvd3MtbWluIGdyaWQtcm93cy1bYXV0b19hdXRvXSBpdGVtcy1zdGFydCBnYXAtMiBweC02IGhhcy1kYXRhLVtzbG90PWNhcmQtYWN0aW9uXTpncmlkLWNvbHMtWzFmcl9hdXRvXSBbLmJvcmRlci1iXTpwYi02JywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJjYXJkLWhlYWRlclwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENhcmRUaXRsZSA9ICh7Y2xhc3NOYW1lLCAuLi5wcm9wc306IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbignbGVhZGluZy1ub25lIGZvbnQtc2VtaWJvbGQnLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cImNhcmQtdGl0bGVcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBjb25zdCBDYXJkRGVzY3JpcHRpb24gPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ3RleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJjYXJkLWRlc2NyaXB0aW9uXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ2FyZEFjdGlvbiA9ICh7Y2xhc3NOYW1lLCAuLi5wcm9wc306IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbignY29sLXN0YXJ0LTIgcm93LXNwYW4tMiByb3ctc3RhcnQtMSBzZWxmLXN0YXJ0IGp1c3RpZnktc2VsZi1lbmQnLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cImNhcmQtYWN0aW9uXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ2FyZENvbnRlbnQgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ3B4LTYnLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cImNhcmQtY29udGVudFwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IENhcmRGb290ZXIgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggaXRlbXMtY2VudGVyIHB4LTYgWy5ib3JkZXItdF06cHQtNicsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiY2FyZC1mb290ZXJcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG4iXSwibmFtZXMiOlsiY24iLCJDYXJkIiwiY2xhc3NOYW1lIiwicHJvcHMiLCJkaXYiLCJkYXRhLXNsb3QiLCJDYXJkSGVhZGVyIiwiQ2FyZFRpdGxlIiwiQ2FyZERlc2NyaXB0aW9uIiwiQ2FyZEFjdGlvbiIsIkNhcmRDb250ZW50IiwiQ2FyZEZvb3RlciJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBSWhDLE9BQU8sTUFBTUMsT0FBTyxDQUFDLEVBQUNDLFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDeEUsS0FBQ0M7UUFDQ0YsV0FBV0YsR0FBRyxtR0FBbUdFO1FBQ2pIRyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNRyxhQUFhLENBQUMsRUFBQ0osU0FBUyxFQUFFLEdBQUdDLE9BQXNDLGlCQUM5RSxLQUFDQztRQUNDRixXQUFXRixHQUFHLDRKQUE0SkU7UUFDMUtHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1JLFlBQVksQ0FBQyxFQUFDTCxTQUFTLEVBQUUsR0FBR0MsT0FBc0MsaUJBQzdFLEtBQUNDO1FBQ0NGLFdBQVdGLEdBQUcsOEJBQThCRTtRQUM1Q0csYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTUssa0JBQWtCLENBQUMsRUFBQ04sU0FBUyxFQUFFLEdBQUdDLE9BQXNDLGlCQUNuRixLQUFDQztRQUNDRixXQUFXRixHQUFHLGlDQUFpQ0U7UUFDL0NHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1NLGFBQWEsQ0FBQyxFQUFDUCxTQUFTLEVBQUUsR0FBR0MsT0FBc0MsaUJBQzlFLEtBQUNDO1FBQ0NGLFdBQVdGLEdBQUcsa0VBQWtFRTtRQUNoRkcsYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTU8sY0FBYyxDQUFDLEVBQUNSLFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDL0UsS0FBQ0M7UUFDQ0YsV0FBV0YsR0FBRyxRQUFRRTtRQUN0QkcsYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTVEsYUFBYSxDQUFDLEVBQUNULFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDOUUsS0FBQ0M7UUFDQ0YsV0FBV0YsR0FBRywyQ0FBMkNFO1FBQ3pERyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYIn0=
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
4
+ import { Button } from '../Button/Button.js';
5
+ import { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './Card.js';
6
+ const meta = {
7
+ argTypes: {
8
+ className: {
9
+ control: 'text'
10
+ }
11
+ },
12
+ component: Card,
13
+ parameters: {
14
+ layout: 'centered'
15
+ },
16
+ title: 'Components/Card'
17
+ };
18
+ export default meta;
19
+ export const Default = {
20
+ args: {
21
+ className: 'w-96'
22
+ },
23
+ play: interactWithCanvas,
24
+ render: (args)=>/*#__PURE__*/ _jsxs(Card, {
25
+ ...args,
26
+ children: [
27
+ /*#__PURE__*/ _jsxs(CardHeader, {
28
+ children: [
29
+ /*#__PURE__*/ _jsx(CardTitle, {
30
+ children: "Release checklist"
31
+ }),
32
+ /*#__PURE__*/ _jsx(CardDescription, {
33
+ children: "Review package health before publishing."
34
+ }),
35
+ /*#__PURE__*/ _jsx(CardAction, {
36
+ children: /*#__PURE__*/ _jsx(BadgeLabel, {})
37
+ })
38
+ ]
39
+ }),
40
+ /*#__PURE__*/ _jsx(CardContent, {
41
+ children: /*#__PURE__*/ _jsx("p", {
42
+ className: "text-sm text-muted-foreground",
43
+ children: "Stories, controls, and interaction coverage are ready for verification."
44
+ })
45
+ }),
46
+ /*#__PURE__*/ _jsx(CardFooter, {
47
+ children: /*#__PURE__*/ _jsx(Button, {
48
+ label: "Review",
49
+ size: "sm"
50
+ })
51
+ })
52
+ ]
53
+ })
54
+ };
55
+ const BadgeLabel = ()=>/*#__PURE__*/ _jsx("span", {
56
+ className: "rounded-full bg-primary/10 px-2 py-1 text-xs font-medium text-primary",
57
+ children: "Ready"
58
+ });
59
+
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NhcmQvQ2FyZC5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi9CdXR0b24vQnV0dG9uLmpzJztcbmltcG9ydCB7Q2FyZCwgQ2FyZEFjdGlvbiwgQ2FyZENvbnRlbnQsIENhcmREZXNjcmlwdGlvbiwgQ2FyZEZvb3RlciwgQ2FyZEhlYWRlciwgQ2FyZFRpdGxlfSBmcm9tICcuL0NhcmQuanMnO1xuXG5pbXBvcnQgdHlwZSB7TWV0YSwgU3RvcnlPYmp9IGZyb20gJ0BubGFicy9sZXgvc3Rvcnlib29rJztcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgQ2FyZD4gPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudDogQ2FyZCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvQ2FyZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgQ2FyZD47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0OiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGNsYXNzTmFtZTogJ3ctOTYnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhcyxcbiAgcmVuZGVyOiAoYXJncykgPT4gKFxuICAgIDxDYXJkIHsuLi5hcmdzfT5cbiAgICAgIDxDYXJkSGVhZGVyPlxuICAgICAgICA8Q2FyZFRpdGxlPlJlbGVhc2UgY2hlY2tsaXN0PC9DYXJkVGl0bGU+XG4gICAgICAgIDxDYXJkRGVzY3JpcHRpb24+UmV2aWV3IHBhY2thZ2UgaGVhbHRoIGJlZm9yZSBwdWJsaXNoaW5nLjwvQ2FyZERlc2NyaXB0aW9uPlxuICAgICAgICA8Q2FyZEFjdGlvbj5cbiAgICAgICAgICA8QmFkZ2VMYWJlbCAvPlxuICAgICAgICA8L0NhcmRBY3Rpb24+XG4gICAgICA8L0NhcmRIZWFkZXI+XG4gICAgICA8Q2FyZENvbnRlbnQ+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+U3RvcmllcywgY29udHJvbHMsIGFuZCBpbnRlcmFjdGlvbiBjb3ZlcmFnZSBhcmUgcmVhZHkgZm9yIHZlcmlmaWNhdGlvbi48L3A+XG4gICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPENhcmRGb290ZXI+XG4gICAgICAgIDxCdXR0b24gbGFiZWw9XCJSZXZpZXdcIiBzaXplPVwic21cIiAvPlxuICAgICAgPC9DYXJkRm9vdGVyPlxuICAgIDwvQ2FyZD5cbiAgKVxufTtcblxuY29uc3QgQmFkZ2VMYWJlbCA9ICgpID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPVwicm91bmRlZC1mdWxsIGJnLXByaW1hcnkvMTAgcHgtMiBweS0xIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1wcmltYXJ5XCI+UmVhZHk8L3NwYW4+XG4pO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiaW50ZXJhY3RXaXRoQ2FudmFzIiwiQnV0dG9uIiwiQ2FyZCIsIkNhcmRBY3Rpb24iLCJDYXJkQ29udGVudCIsIkNhcmREZXNjcmlwdGlvbiIsIkNhcmRGb290ZXIiLCJDYXJkSGVhZGVyIiwiQ2FyZFRpdGxlIiwibWV0YSIsImFyZ1R5cGVzIiwiY2xhc3NOYW1lIiwiY29udHJvbCIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkRlZmF1bHQiLCJhcmdzIiwicGxheSIsInJlbmRlciIsIkJhZGdlTGFiZWwiLCJwIiwibGFiZWwiLCJzaXplIiwic3BhbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FBUUMsTUFBTSxRQUFPLHNCQUFzQjtBQUMzQyxTQUFRQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxFQUFFQyxlQUFlLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxTQUFTLFFBQU8sWUFBWTtBQUk1RyxNQUFNQyxPQUEwQjtJQUM5QkMsVUFBVTtRQUNSQyxXQUFXO1lBQ1RDLFNBQVM7UUFDWDtJQUNGO0lBQ0FDLFdBQVdYO0lBQ1hZLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVQLEtBQUs7QUFJcEIsT0FBTyxNQUFNUSxVQUFpQjtJQUM1QkMsTUFBTTtRQUNKUCxXQUFXO0lBQ2I7SUFDQVEsTUFBTW5CO0lBQ05vQixRQUFRLENBQUNGLHFCQUNQLE1BQUNoQjtZQUFNLEdBQUdnQixJQUFJOzs4QkFDWixNQUFDWDs7c0NBQ0MsS0FBQ0M7c0NBQVU7O3NDQUNYLEtBQUNIO3NDQUFnQjs7c0NBQ2pCLEtBQUNGO3NDQUNDLGNBQUEsS0FBQ2tCOzs7OzhCQUdMLEtBQUNqQjs4QkFDQyxjQUFBLEtBQUNrQjt3QkFBRVgsV0FBVTtrQ0FBZ0M7Ozs4QkFFL0MsS0FBQ0w7OEJBQ0MsY0FBQSxLQUFDTDt3QkFBT3NCLE9BQU07d0JBQVNDLE1BQUs7Ozs7O0FBSXBDLEVBQUU7QUFFRixNQUFNSCxhQUFhLGtCQUNqQixLQUFDSTtRQUFLZCxXQUFVO2tCQUF3RSJ9
@@ -0,0 +1,15 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface CategoryItem {
3
+ readonly description?: ReactNode;
4
+ readonly href?: string;
5
+ readonly id?: string | number;
6
+ readonly imageAlt: string;
7
+ readonly imageSrc: string;
8
+ readonly name: ReactNode;
9
+ }
10
+ export interface CategoryGridProps extends HTMLAttributes<HTMLDivElement> {
11
+ readonly categories: CategoryItem[];
12
+ }
13
+ declare const CategoryGridComponent: ({ categories, className, ...props }: CategoryGridProps) => import("react").JSX.Element;
14
+ export declare const CategoryGrid: import("react").MemoExoticComponent<typeof CategoryGridComponent>;
15
+ export {};
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ import { memo } from 'react';
4
+ const CategoryGridComponent = ({ categories, className, ...props })=>/*#__PURE__*/ _jsx("div", {
5
+ className: cn('grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3', className),
6
+ "data-slot": "category-grid",
7
+ ...props,
8
+ children: categories.map((category)=>{
9
+ const Element = category.href ? 'a' : 'article';
10
+ return /*#__PURE__*/ _jsxs(Element, {
11
+ className: "group relative block overflow-hidden rounded-lg bg-muted dark:bg-muted-dark",
12
+ href: category.href,
13
+ children: [
14
+ /*#__PURE__*/ _jsx("img", {
15
+ alt: category.imageAlt,
16
+ className: "aspect-3/2 w-full object-cover transition-transform duration-300 group-hover:scale-105",
17
+ src: category.imageSrc
18
+ }),
19
+ /*#__PURE__*/ _jsx("div", {
20
+ className: "absolute inset-0 bg-linear-to-t from-black/70 via-black/15 to-transparent"
21
+ }),
22
+ /*#__PURE__*/ _jsxs("div", {
23
+ className: "absolute inset-x-0 bottom-0 p-5",
24
+ children: [
25
+ /*#__PURE__*/ _jsx("h3", {
26
+ className: "text-lg font-semibold text-white",
27
+ children: category.name
28
+ }),
29
+ category.description ? /*#__PURE__*/ _jsx("p", {
30
+ className: "mt-1 text-sm text-white/80",
31
+ children: category.description
32
+ }) : null
33
+ ]
34
+ })
35
+ ]
36
+ }, category.id ?? String(category.name));
37
+ })
38
+ });
39
+ export const CategoryGrid = /*#__PURE__*/ memo(CategoryGridComponent);
40
+ CategoryGrid.displayName = 'CategoryGrid';
41
+
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NhdGVnb3J5R3JpZC9DYXRlZ29yeUdyaWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge21lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge0hUTUxBdHRyaWJ1dGVzLCBSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBDYXRlZ29yeUl0ZW0ge1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IFJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgaHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHJlYWRvbmx5IGltYWdlQWx0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGltYWdlU3JjOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRlZ29yeUdyaWRQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IGNhdGVnb3JpZXM6IENhdGVnb3J5SXRlbVtdO1xufVxuXG5jb25zdCBDYXRlZ29yeUdyaWRDb21wb25lbnQgPSAoe1xuICBjYXRlZ29yaWVzLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBDYXRlZ29yeUdyaWRQcm9wcykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2dyaWQgZ3JpZC1jb2xzLTEgZ2FwLTYgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMnLCBjbGFzc05hbWUpfSBkYXRhLXNsb3Q9XCJjYXRlZ29yeS1ncmlkXCIgey4uLnByb3BzfT5cbiAgICB7Y2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiB7XG4gICAgICBjb25zdCBFbGVtZW50ID0gY2F0ZWdvcnkuaHJlZiA/ICdhJyA6ICdhcnRpY2xlJztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEVsZW1lbnRcbiAgICAgICAgICBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBibG9jayBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy1tdXRlZCBkYXJrOmJnLW11dGVkLWRhcmtcIlxuICAgICAgICAgIGhyZWY9e2NhdGVnb3J5LmhyZWYgYXMgbmV2ZXJ9XG4gICAgICAgICAga2V5PXtjYXRlZ29yeS5pZCA/PyBTdHJpbmcoY2F0ZWdvcnkubmFtZSl9XG4gICAgICAgID5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBhbHQ9e2NhdGVnb3J5LmltYWdlQWx0fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYXNwZWN0LTMvMiB3LWZ1bGwgb2JqZWN0LWNvdmVyIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBncm91cC1ob3ZlcjpzY2FsZS0xMDVcIlxuICAgICAgICAgICAgc3JjPXtjYXRlZ29yeS5pbWFnZVNyY31cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1saW5lYXItdG8tdCBmcm9tLWJsYWNrLzcwIHZpYS1ibGFjay8xNSB0by10cmFuc3BhcmVudFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC14LTAgYm90dG9tLTAgcC01XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtd2hpdGVcIj57Y2F0ZWdvcnkubmFtZX08L2gzPlxuICAgICAgICAgICAge2NhdGVnb3J5LmRlc2NyaXB0aW9uID8gPHAgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LXNtIHRleHQtd2hpdGUvODBcIj57Y2F0ZWdvcnkuZGVzY3JpcHRpb259PC9wPiA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRWxlbWVudD5cbiAgICAgICk7XG4gICAgfSl9XG4gIDwvZGl2PlxuKTtcblxuZXhwb3J0IGNvbnN0IENhdGVnb3J5R3JpZCA9IG1lbW8oQ2F0ZWdvcnlHcmlkQ29tcG9uZW50KTtcbkNhdGVnb3J5R3JpZC5kaXNwbGF5TmFtZSA9ICdDYXRlZ29yeUdyaWQnO1xuIl0sIm5hbWVzIjpbImNuIiwibWVtbyIsIkNhdGVnb3J5R3JpZENvbXBvbmVudCIsImNhdGVnb3JpZXMiLCJjbGFzc05hbWUiLCJwcm9wcyIsImRpdiIsImRhdGEtc2xvdCIsIm1hcCIsImNhdGVnb3J5IiwiRWxlbWVudCIsImhyZWYiLCJpbWciLCJhbHQiLCJpbWFnZUFsdCIsInNyYyIsImltYWdlU3JjIiwiaDMiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJwIiwiaWQiLCJTdHJpbmciLCJDYXRlZ29yeUdyaWQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLElBQUksUUFBTyxRQUFRO0FBaUIzQixNQUFNQyx3QkFBd0IsQ0FBQyxFQUM3QkMsVUFBVSxFQUNWQyxTQUFTLEVBQ1QsR0FBR0MsT0FDZSxpQkFDbEIsS0FBQ0M7UUFBSUYsV0FBV0osR0FBRyx3REFBd0RJO1FBQVlHLGFBQVU7UUFBaUIsR0FBR0YsS0FBSztrQkFDdkhGLFdBQVdLLEdBQUcsQ0FBQyxDQUFDQztZQUNmLE1BQU1DLFVBQVVELFNBQVNFLElBQUksR0FBRyxNQUFNO1lBRXRDLHFCQUNFLE1BQUNEO2dCQUNDTixXQUFVO2dCQUNWTyxNQUFNRixTQUFTRSxJQUFJOztrQ0FHbkIsS0FBQ0M7d0JBQ0NDLEtBQUtKLFNBQVNLLFFBQVE7d0JBQ3RCVixXQUFVO3dCQUNWVyxLQUFLTixTQUFTTyxRQUFROztrQ0FFeEIsS0FBQ1Y7d0JBQUlGLFdBQVU7O2tDQUNmLE1BQUNFO3dCQUFJRixXQUFVOzswQ0FDYixLQUFDYTtnQ0FBR2IsV0FBVTswQ0FBb0NLLFNBQVNTLElBQUk7OzRCQUM5RFQsU0FBU1UsV0FBVyxpQkFBRyxLQUFDQztnQ0FBRWhCLFdBQVU7MENBQThCSyxTQUFTVSxXQUFXO2lDQUFROzs7O2VBVjVGVixTQUFTWSxFQUFFLElBQUlDLE9BQU9iLFNBQVNTLElBQUk7UUFjOUM7O0FBSUosT0FBTyxNQUFNSyw2QkFBZXRCLEtBQUtDLHVCQUF1QjtBQUN4RHFCLGFBQWFDLFdBQVcsR0FBRyJ9
@@ -0,0 +1,35 @@
1
+ import { CategoryGrid } from './CategoryGrid.js';
2
+ const meta = {
3
+ component: CategoryGrid,
4
+ parameters: {
5
+ layout: 'padded'
6
+ },
7
+ title: 'Ecommerce/CategoryGrid'
8
+ };
9
+ export default meta;
10
+ export const ImageBackgrounds = {
11
+ args: {
12
+ categories: [
13
+ {
14
+ href: '#',
15
+ imageAlt: 'Desk accessories arranged on a tabletop.',
16
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/home-page-02-edition-01.jpg',
17
+ name: 'Desk and office'
18
+ },
19
+ {
20
+ href: '#',
21
+ imageAlt: 'Organized productivity products.',
22
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/home-page-02-edition-02.jpg',
23
+ name: 'Self-improvement'
24
+ },
25
+ {
26
+ href: '#',
27
+ imageAlt: 'Travel products in warm light.',
28
+ imageSrc: 'https://tailwindcss.com/plus-assets/img/ecommerce-images/home-page-02-edition-03.jpg',
29
+ name: 'Travel'
30
+ }
31
+ ]
32
+ }
33
+ };
34
+
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NhdGVnb3J5R3JpZC9DYXRlZ29yeUdyaWQuc3Rvcmllcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYXRlZ29yeUdyaWR9IGZyb20gJy4vQ2F0ZWdvcnlHcmlkLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIENhdGVnb3J5R3JpZD4gPSB7XG4gIGNvbXBvbmVudDogQ2F0ZWdvcnlHcmlkLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAncGFkZGVkJ1xuICB9LFxuICB0aXRsZTogJ0Vjb21tZXJjZS9DYXRlZ29yeUdyaWQnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIENhdGVnb3J5R3JpZD47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUJhY2tncm91bmRzOiBTdG9yeSA9IHtcbiAgYXJnczoge1xuICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICBpbWFnZUFsdDogJ0Rlc2sgYWNjZXNzb3JpZXMgYXJyYW5nZWQgb24gYSB0YWJsZXRvcC4nLFxuICAgICAgICBpbWFnZVNyYzogJ2h0dHBzOi8vdGFpbHdpbmRjc3MuY29tL3BsdXMtYXNzZXRzL2ltZy9lY29tbWVyY2UtaW1hZ2VzL2hvbWUtcGFnZS0wMi1lZGl0aW9uLTAxLmpwZycsXG4gICAgICAgIG5hbWU6ICdEZXNrIGFuZCBvZmZpY2UnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBocmVmOiAnIycsXG4gICAgICAgIGltYWdlQWx0OiAnT3JnYW5pemVkIHByb2R1Y3Rpdml0eSBwcm9kdWN0cy4nLFxuICAgICAgICBpbWFnZVNyYzogJ2h0dHBzOi8vdGFpbHdpbmRjc3MuY29tL3BsdXMtYXNzZXRzL2ltZy9lY29tbWVyY2UtaW1hZ2VzL2hvbWUtcGFnZS0wMi1lZGl0aW9uLTAyLmpwZycsXG4gICAgICAgIG5hbWU6ICdTZWxmLWltcHJvdmVtZW50J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICBpbWFnZUFsdDogJ1RyYXZlbCBwcm9kdWN0cyBpbiB3YXJtIGxpZ2h0LicsXG4gICAgICAgIGltYWdlU3JjOiAnaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vcGx1cy1hc3NldHMvaW1nL2Vjb21tZXJjZS1pbWFnZXMvaG9tZS1wYWdlLTAyLWVkaXRpb24tMDMuanBnJyxcbiAgICAgICAgbmFtZTogJ1RyYXZlbCdcbiAgICAgIH1cbiAgICBdXG4gIH1cbn07XG4iXSwibmFtZXMiOlsiQ2F0ZWdvcnlHcmlkIiwibWV0YSIsImNvbXBvbmVudCIsInBhcmFtZXRlcnMiLCJsYXlvdXQiLCJ0aXRsZSIsIkltYWdlQmFja2dyb3VuZHMiLCJhcmdzIiwiY2F0ZWdvcmllcyIsImhyZWYiLCJpbWFnZUFsdCIsImltYWdlU3JjIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsWUFBWSxRQUFPLG9CQUFvQjtBQUkvQyxNQUFNQyxPQUFrQztJQUN0Q0MsV0FBV0Y7SUFDWEcsWUFBWTtRQUNWQyxRQUFRO0lBQ1Y7SUFDQUMsT0FBTztBQUNUO0FBRUEsZUFBZUosS0FBSztBQUlwQixPQUFPLE1BQU1LLG1CQUEwQjtJQUNyQ0MsTUFBTTtRQUNKQyxZQUFZO1lBQ1Y7Z0JBQ0VDLE1BQU07Z0JBQ05DLFVBQVU7Z0JBQ1ZDLFVBQVU7Z0JBQ1ZDLE1BQU07WUFDUjtZQUNBO2dCQUNFSCxNQUFNO2dCQUNOQyxVQUFVO2dCQUNWQyxVQUFVO2dCQUNWQyxNQUFNO1lBQ1I7WUFDQTtnQkFDRUgsTUFBTTtnQkFDTkMsVUFBVTtnQkFDVkMsVUFBVTtnQkFDVkMsTUFBTTtZQUNSO1NBQ0Q7SUFDSDtBQUNGLEVBQUUifQ==
@@ -0,0 +1 @@
1
+ .rce-mbox-audio{padding-bottom:10px;max-width:300px}audio:focus{outline:none}
@@ -0,0 +1,3 @@
1
+ import { IAudioMessageProps } from '../type';
2
+ import type { FC } from 'react';
3
+ export declare const AudioMessage: FC<IAudioMessageProps>;
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export const AudioMessage = (props)=>{
3
+ const { controlsList } = props.data;
4
+ return /*#__PURE__*/ _jsxs("div", {
5
+ className: 'rce-mbox-audio',
6
+ style: props.customStyle,
7
+ children: [
8
+ /*#__PURE__*/ _jsxs("audio", {
9
+ ...props.audioProps,
10
+ controls: true,
11
+ controlsList: controlsList ? controlsList : 'nodownload',
12
+ children: [
13
+ /*#__PURE__*/ _jsx("source", {
14
+ src: props.data.audioURL,
15
+ type: props.data.audioType || 'audio/mp3'
16
+ }),
17
+ "Your browser does not support the audio element."
18
+ ]
19
+ }),
20
+ props.text && /*#__PURE__*/ _jsx("div", {
21
+ className: "rce-mbox-text",
22
+ children: props.text
23
+ })
24
+ ]
25
+ });
26
+ };
27
+
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0NoYXQvQXVkaW9NZXNzYWdlL0F1ZGlvTWVzc2FnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQXVkaW9NZXNzYWdlUHJvcHN9IGZyb20gJy4uL3R5cGUnO1xuXG5pbXBvcnQgdHlwZSB7RkN9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IEF1ZGlvTWVzc2FnZTogRkM8SUF1ZGlvTWVzc2FnZVByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7Y29udHJvbHNMaXN0fSA9IHByb3BzLmRhdGE7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17J3JjZS1tYm94LWF1ZGlvJ30gc3R5bGU9e3Byb3BzLmN1c3RvbVN0eWxlfT5cbiAgICAgIDxhdWRpbyB7Li4ucHJvcHMuYXVkaW9Qcm9wc30gY29udHJvbHMgY29udHJvbHNMaXN0PXtjb250cm9sc0xpc3QgPyBjb250cm9sc0xpc3QgOiAnbm9kb3dubG9hZCd9PlxuICAgICAgICA8c291cmNlIHNyYz17cHJvcHMuZGF0YS5hdWRpb1VSTH0gdHlwZT17cHJvcHMuZGF0YS5hdWRpb1R5cGUgfHwgJ2F1ZGlvL21wMyd9IC8+XG4gICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhdWRpbyBlbGVtZW50LlxuICAgICAgPC9hdWRpbz5cbiAgICAgIHtwcm9wcy50ZXh0ICYmIDxkaXYgY2xhc3NOYW1lPSdyY2UtbWJveC10ZXh0Jz57cHJvcHMudGV4dH08L2Rpdj59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbIkF1ZGlvTWVzc2FnZSIsInByb3BzIiwiY29udHJvbHNMaXN0IiwiZGF0YSIsImRpdiIsImNsYXNzTmFtZSIsInN0eWxlIiwiY3VzdG9tU3R5bGUiLCJhdWRpbyIsImF1ZGlvUHJvcHMiLCJjb250cm9scyIsInNvdXJjZSIsInNyYyIsImF1ZGlvVVJMIiwidHlwZSIsImF1ZGlvVHlwZSIsInRleHQiXSwibWFwcGluZ3MiOiI7QUFJQSxPQUFPLE1BQU1BLGVBQXVDLENBQUNDO0lBQ25ELE1BQU0sRUFBQ0MsWUFBWSxFQUFDLEdBQUdELE1BQU1FLElBQUk7SUFFakMscUJBQ0UsTUFBQ0M7UUFBSUMsV0FBVztRQUFrQkMsT0FBT0wsTUFBTU0sV0FBVzs7MEJBQ3hELE1BQUNDO2dCQUFPLEdBQUdQLE1BQU1RLFVBQVU7Z0JBQUVDLFFBQVE7Z0JBQUNSLGNBQWNBLGVBQWVBLGVBQWU7O2tDQUNoRixLQUFDUzt3QkFBT0MsS0FBS1gsTUFBTUUsSUFBSSxDQUFDVSxRQUFRO3dCQUFFQyxNQUFNYixNQUFNRSxJQUFJLENBQUNZLFNBQVMsSUFBSTs7b0JBQWU7OztZQUdoRmQsTUFBTWUsSUFBSSxrQkFBSSxLQUFDWjtnQkFBSUMsV0FBVTswQkFBaUJKLE1BQU1lLElBQUk7Ozs7QUFHL0QsRUFBRSJ9
@@ -0,0 +1 @@
1
+ .rce-avatar-container{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.rce-avatar-container .rce-avatar{width:100%;height:100%}.rce-avatar-container.flexible .rce-avatar{height:auto!important;width:100%!important;border-radius:unset!important;overflow:unset!important}.rce-avatar-container.default{width:25px;height:25px}.rce-avatar-container.rounded{border-radius:5px}.rce-avatar-container.circle{border-radius:100%}.rce-avatar-container.xsmall{width:30px;height:30px}.rce-avatar-container.small{width:35px;height:35px}.rce-avatar-container.medium{width:40px;height:40px}.rce-avatar-container.large{width:45px;height:45px}.rce-avatar-container.xlarge{width:55px;height:55px}@-webkit-keyframes avatarLazy{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes avatarLazy{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.rce-avatar-lazy{-webkit-animation:avatarLazy 2s ease-in-out infinite normal;animation:avatarLazy 2s ease-in-out infinite normal}.rce-avatar-container.rce-citem-avatar-encircle-status{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.rce-avatar-letter{margin-top:5px;font-size:20px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.rce-avatar-letter-background{height:35px;width:35px;border-radius:20px}
@@ -0,0 +1,3 @@
1
+ import { IAvatarProps } from '../type';
2
+ import type { FC } from 'react';
3
+ export declare const Avatar: FC<IAvatarProps>;