@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,56 @@
1
+ // import {useEffect, type FC} from 'react';
2
+ // import {Navigate} from 'react-router';
3
+ // import {LazyLoad} from '..';
4
+ // import {GothamActions} from '../../actions/GothamActions';
5
+ // import {DefaultView} from '../../views/DefaultView/DefaultView';
6
+ // import {HomeView} from '../../views/HomeView/HomeView';
7
+ // import {Markdown} from '../Markdown/Markdown';
8
+ // import MenuView from '../../views/MenuView/MenuView';
9
+ // import {NotFoundView} from '../../views/NotFoundView/NotFoundView';
10
+ // import {Loader} from '../Loader/Loader';
11
+ // import type {GothamRouteData} from '../../types/gotham';
12
+ // import type {RouteViewProps} from '../../utils/routeUtils';
13
+ // export interface GothamRouteProps {
14
+ // readonly routeProps: GothamRouteData;
15
+ // readonly viewProps: RouteViewProps;
16
+ // }
17
+ // export const GothamRoute: FC<GothamRouteProps> = ({routeProps, viewProps}) => {
18
+ // const {isAuth: defaultIsAuth} = viewProps.gothamConfig;
19
+ // const {
20
+ // authenticate = false,
21
+ // component,
22
+ // isAuth = defaultIsAuth,
23
+ // path,
24
+ // view
25
+ // } = routeProps;
26
+ // const updatedViewProps: RouteViewProps = {loader: Loader, ...viewProps};
27
+ // useEffect(() => {
28
+ // const {title} = routeProps;
29
+ // const {app: {titleBarSeparator}} = viewProps.gothamConfig;
30
+ // GothamActions.updateTitle(title, titleBarSeparator);
31
+ // }, [routeProps.title, viewProps.gothamConfig?.app?.titleBarSeparator]);
32
+ // if(authenticate && !isAuth()) {
33
+ // return <Navigate to="/signin" />;
34
+ // }
35
+ // if(view) {
36
+ // switch(view) {
37
+ // case 'default':
38
+ // return <LazyLoad component={DefaultView} {...updatedViewProps} />;
39
+ // case 'home':
40
+ // return <LazyLoad component={HomeView} {...updatedViewProps} />;
41
+ // case 'markdown':
42
+ // return <LazyLoad component={Markdown} {...updatedViewProps} />;
43
+ // case 'menu':
44
+ // return <LazyLoad component={MenuView} {...updatedViewProps} />;
45
+ // case 'notfound':
46
+ // return <LazyLoad component={NotFoundView} {...updatedViewProps} />;
47
+ // default:
48
+ // return null;
49
+ // }
50
+ // } else if(component) {
51
+ // return <LazyLoad component={component} {...updatedViewProps} />;
52
+ // }
53
+ // throw new Error(`Gotham Error: Route "${path}" is missing "component" property.`);
54
+ // };
55
+
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0dvdGhhbVJvdXRlL0dvdGhhbVJvdXRlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG4vLyBpbXBvcnQge3VzZUVmZmVjdCwgdHlwZSBGQ30gZnJvbSAncmVhY3QnO1xuLy8gaW1wb3J0IHtOYXZpZ2F0ZX0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuLy8gaW1wb3J0IHtMYXp5TG9hZH0gZnJvbSAnLi4nO1xuLy8gaW1wb3J0IHtHb3RoYW1BY3Rpb25zfSBmcm9tICcuLi8uLi9hY3Rpb25zL0dvdGhhbUFjdGlvbnMnO1xuLy8gaW1wb3J0IHtEZWZhdWx0Vmlld30gZnJvbSAnLi4vLi4vdmlld3MvRGVmYXVsdFZpZXcvRGVmYXVsdFZpZXcnO1xuLy8gaW1wb3J0IHtIb21lVmlld30gZnJvbSAnLi4vLi4vdmlld3MvSG9tZVZpZXcvSG9tZVZpZXcnO1xuLy8gaW1wb3J0IHtNYXJrZG93bn0gZnJvbSAnLi4vTWFya2Rvd24vTWFya2Rvd24nO1xuLy8gaW1wb3J0IE1lbnVWaWV3IGZyb20gJy4uLy4uL3ZpZXdzL01lbnVWaWV3L01lbnVWaWV3Jztcbi8vIGltcG9ydCB7Tm90Rm91bmRWaWV3fSBmcm9tICcuLi8uLi92aWV3cy9Ob3RGb3VuZFZpZXcvTm90Rm91bmRWaWV3Jztcbi8vIGltcG9ydCB7TG9hZGVyfSBmcm9tICcuLi9Mb2FkZXIvTG9hZGVyJztcblxuLy8gaW1wb3J0IHR5cGUge0dvdGhhbVJvdXRlRGF0YX0gZnJvbSAnLi4vLi4vdHlwZXMvZ290aGFtJztcbi8vIGltcG9ydCB0eXBlIHtSb3V0ZVZpZXdQcm9wc30gZnJvbSAnLi4vLi4vdXRpbHMvcm91dGVVdGlscyc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgR290aGFtUm91dGVQcm9wcyB7XG4vLyAgIHJlYWRvbmx5IHJvdXRlUHJvcHM6IEdvdGhhbVJvdXRlRGF0YTtcbi8vICAgcmVhZG9ubHkgdmlld1Byb3BzOiBSb3V0ZVZpZXdQcm9wcztcbi8vIH1cblxuLy8gZXhwb3J0IGNvbnN0IEdvdGhhbVJvdXRlOiBGQzxHb3RoYW1Sb3V0ZVByb3BzPiA9ICh7cm91dGVQcm9wcywgdmlld1Byb3BzfSkgPT4ge1xuLy8gICBjb25zdCB7aXNBdXRoOiBkZWZhdWx0SXNBdXRofSA9IHZpZXdQcm9wcy5nb3RoYW1Db25maWc7XG4vLyAgIGNvbnN0IHtcbi8vICAgICBhdXRoZW50aWNhdGUgPSBmYWxzZSxcbi8vICAgICBjb21wb25lbnQsXG4vLyAgICAgaXNBdXRoID0gZGVmYXVsdElzQXV0aCxcbi8vICAgICBwYXRoLFxuLy8gICAgIHZpZXdcbi8vICAgfSA9IHJvdXRlUHJvcHM7XG4vLyAgIGNvbnN0IHVwZGF0ZWRWaWV3UHJvcHM6IFJvdXRlVmlld1Byb3BzID0ge2xvYWRlcjogTG9hZGVyLCAuLi52aWV3UHJvcHN9O1xuXG4vLyAgIHVzZUVmZmVjdCgoKSA9PiB7XG4vLyAgICAgY29uc3Qge3RpdGxlfSA9IHJvdXRlUHJvcHM7XG4vLyAgICAgY29uc3Qge2FwcDoge3RpdGxlQmFyU2VwYXJhdG9yfX0gPSB2aWV3UHJvcHMuZ290aGFtQ29uZmlnO1xuLy8gICAgIEdvdGhhbUFjdGlvbnMudXBkYXRlVGl0bGUodGl0bGUsIHRpdGxlQmFyU2VwYXJhdG9yKTtcbi8vICAgfSwgW3JvdXRlUHJvcHMudGl0bGUsIHZpZXdQcm9wcy5nb3RoYW1Db25maWc/LmFwcD8udGl0bGVCYXJTZXBhcmF0b3JdKTtcblxuXG4vLyAgIGlmKGF1dGhlbnRpY2F0ZSAmJiAhaXNBdXRoKCkpIHtcbi8vICAgICByZXR1cm4gPE5hdmlnYXRlIHRvPVwiL3NpZ25pblwiIC8+O1xuLy8gICB9XG5cbi8vICAgaWYodmlldykge1xuLy8gICAgIHN3aXRjaCh2aWV3KSB7XG4vLyAgICAgICBjYXNlICdkZWZhdWx0Jzpcbi8vICAgICAgICAgcmV0dXJuIDxMYXp5TG9hZCBjb21wb25lbnQ9e0RlZmF1bHRWaWV3fSB7Li4udXBkYXRlZFZpZXdQcm9wc30gLz47XG4vLyAgICAgICBjYXNlICdob21lJzpcbi8vICAgICAgICAgcmV0dXJuIDxMYXp5TG9hZCBjb21wb25lbnQ9e0hvbWVWaWV3fSB7Li4udXBkYXRlZFZpZXdQcm9wc30gLz47XG4vLyAgICAgICBjYXNlICdtYXJrZG93bic6XG4vLyAgICAgICAgIHJldHVybiA8TGF6eUxvYWQgY29tcG9uZW50PXtNYXJrZG93bn0gey4uLnVwZGF0ZWRWaWV3UHJvcHN9IC8+O1xuLy8gICAgICAgY2FzZSAnbWVudSc6XG4vLyAgICAgICAgIHJldHVybiA8TGF6eUxvYWQgY29tcG9uZW50PXtNZW51Vmlld30gey4uLnVwZGF0ZWRWaWV3UHJvcHN9IC8+O1xuLy8gICAgICAgY2FzZSAnbm90Zm91bmQnOlxuLy8gICAgICAgICByZXR1cm4gPExhenlMb2FkIGNvbXBvbmVudD17Tm90Rm91bmRWaWV3fSB7Li4udXBkYXRlZFZpZXdQcm9wc30gLz47XG4vLyAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICByZXR1cm4gbnVsbDtcbi8vICAgICB9XG4vLyAgIH0gZWxzZSBpZihjb21wb25lbnQpIHtcbi8vICAgICByZXR1cm4gPExhenlMb2FkIGNvbXBvbmVudD17Y29tcG9uZW50fSB7Li4udXBkYXRlZFZpZXdQcm9wc30gLz47XG4vLyAgIH1cblxuLy8gICB0aHJvdyBuZXcgRXJyb3IoYEdvdGhhbSBFcnJvcjogUm91dGUgXCIke3BhdGh9XCIgaXMgbWlzc2luZyBcImNvbXBvbmVudFwiIHByb3BlcnR5LmApO1xuLy8gfTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSw0Q0FBNEM7QUFDNUMseUNBQXlDO0FBRXpDLCtCQUErQjtBQUMvQiw2REFBNkQ7QUFDN0QsbUVBQW1FO0FBQ25FLDBEQUEwRDtBQUMxRCxpREFBaUQ7QUFDakQsd0RBQXdEO0FBQ3hELHNFQUFzRTtBQUN0RSwyQ0FBMkM7QUFFM0MsMkRBQTJEO0FBQzNELDhEQUE4RDtBQUU5RCxzQ0FBc0M7QUFDdEMsMENBQTBDO0FBQzFDLHdDQUF3QztBQUN4QyxJQUFJO0FBRUosa0ZBQWtGO0FBQ2xGLDREQUE0RDtBQUM1RCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLGlCQUFpQjtBQUNqQiw4QkFBOEI7QUFDOUIsWUFBWTtBQUNaLFdBQVc7QUFDWCxvQkFBb0I7QUFDcEIsNkVBQTZFO0FBRTdFLHNCQUFzQjtBQUN0QixrQ0FBa0M7QUFDbEMsaUVBQWlFO0FBQ2pFLDJEQUEyRDtBQUMzRCw0RUFBNEU7QUFHNUUsb0NBQW9DO0FBQ3BDLHdDQUF3QztBQUN4QyxNQUFNO0FBRU4sZUFBZTtBQUNmLHFCQUFxQjtBQUNyQix3QkFBd0I7QUFDeEIsNkVBQTZFO0FBQzdFLHFCQUFxQjtBQUNyQiwwRUFBMEU7QUFDMUUseUJBQXlCO0FBQ3pCLDBFQUEwRTtBQUMxRSxxQkFBcUI7QUFDckIsMEVBQTBFO0FBQzFFLHlCQUF5QjtBQUN6Qiw4RUFBOEU7QUFDOUUsaUJBQWlCO0FBQ2pCLHVCQUF1QjtBQUN2QixRQUFRO0FBQ1IsMkJBQTJCO0FBQzNCLHVFQUF1RTtBQUN2RSxNQUFNO0FBRU4sdUZBQXVGO0FBQ3ZGLEtBQUsifQ==
File without changes
@@ -0,0 +1,52 @@
1
+ // /**
2
+ // * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
+ // * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ // */
5
+ // import {FluxFramework} from '@nlabs/arkhamjs';
6
+ // import {useFluxListener} from '@nlabs/arkhamjs-utils-react';
7
+ // import {BrowserRouter, Routes, useNavigate} from 'react-router';
8
+ // import {GothamConstants} from '../../constants/GothamConstants';
9
+ // import {GothamConfiguration} from '../../views/Gotham/GothamProvider';
10
+ // import type {GothamRouteData} from '../../types/gotham';
11
+ // import type {FC} from 'react';
12
+ // export const navBack = (history) => (): void => {
13
+ // history.goBack();
14
+ // };
15
+ // export const navForward = (history) => (): void => {
16
+ // history.goForward();
17
+ // };
18
+ // export const navGoto = (navigate) => (data): void => {
19
+ // const {params, path = ''} = data;
20
+ // navigate(path, params);
21
+ // };
22
+ // export const navReplace = (history) => (data): void => {
23
+ // const {params, path = ''} = data;
24
+ // history.replace(path, params);
25
+ // };
26
+ // export const GothamRouteListeners: FC = (): null => {
27
+ // const navigate = useNavigate();
28
+ // useFluxListener(GothamConstants.NAV_BACK, navBack(navigate));
29
+ // useFluxListener(GothamConstants.NAV_FORWARD, navForward(navigate));
30
+ // useFluxListener(GothamConstants.NAV_GOTO, navGoto(navigate));
31
+ // useFluxListener(GothamConstants.NAV_REPLACE, navReplace(navigate));
32
+ // return null;
33
+ // };
34
+ // export type GothamRoutesProps = {
35
+ // readonly flux: FluxFramework;
36
+ // readonly gothamConfig: GothamConfiguration;
37
+ // readonly routes: GothamRouteData[];
38
+ // };
39
+ // export const GothamRoutes: FC<GothamRoutesProps> = ({
40
+ // flux,
41
+ // gothamConfig,
42
+ // routes
43
+ // }) => (
44
+ // <BrowserRouter>
45
+ // <GothamRouteListeners />
46
+ // <Routes>
47
+ // {renderRouteList(routes, flux, gothamConfig)}
48
+ // </Routes>
49
+ // </BrowserRouter>
50
+ // );
51
+
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0dvdGhhbVJvdXRlci9Hb3RoYW1Sb3V0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIC8qKlxuLy8gICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbi8vICAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuLy8gICovXG4vLyBpbXBvcnQge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG4vLyBpbXBvcnQge3VzZUZsdXhMaXN0ZW5lcn0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzLXV0aWxzLXJlYWN0Jztcbi8vIGltcG9ydCB7QnJvd3NlclJvdXRlciwgUm91dGVzLCB1c2VOYXZpZ2F0ZX0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuLy8gaW1wb3J0IHtHb3RoYW1Db25zdGFudHN9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9Hb3RoYW1Db25zdGFudHMnO1xuLy8gaW1wb3J0IHtHb3RoYW1Db25maWd1cmF0aW9ufSBmcm9tICcuLi8uLi92aWV3cy9Hb3RoYW0vR290aGFtUHJvdmlkZXInO1xuXG4vLyBpbXBvcnQgdHlwZSB7R290aGFtUm91dGVEYXRhfSBmcm9tICcuLi8uLi90eXBlcy9nb3RoYW0nO1xuLy8gaW1wb3J0IHR5cGUge0ZDfSBmcm9tICdyZWFjdCc7XG5cbi8vIGV4cG9ydCBjb25zdCBuYXZCYWNrID0gKGhpc3RvcnkpID0+ICgpOiB2b2lkID0+IHtcbi8vICAgaGlzdG9yeS5nb0JhY2soKTtcbi8vIH07XG5cbi8vIGV4cG9ydCBjb25zdCBuYXZGb3J3YXJkID0gKGhpc3RvcnkpID0+ICgpOiB2b2lkID0+IHtcbi8vICAgaGlzdG9yeS5nb0ZvcndhcmQoKTtcbi8vIH07XG5cbi8vIGV4cG9ydCBjb25zdCBuYXZHb3RvID0gKG5hdmlnYXRlKSA9PiAoZGF0YSk6IHZvaWQgPT4ge1xuLy8gICBjb25zdCB7cGFyYW1zLCBwYXRoID0gJyd9ID0gZGF0YTtcbi8vICAgbmF2aWdhdGUocGF0aCwgcGFyYW1zKTtcbi8vIH07XG5cbi8vIGV4cG9ydCBjb25zdCBuYXZSZXBsYWNlID0gKGhpc3RvcnkpID0+IChkYXRhKTogdm9pZCA9PiB7XG4vLyAgIGNvbnN0IHtwYXJhbXMsIHBhdGggPSAnJ30gPSBkYXRhO1xuLy8gICBoaXN0b3J5LnJlcGxhY2UocGF0aCwgcGFyYW1zKTtcbi8vIH07XG5cbi8vIGV4cG9ydCBjb25zdCBHb3RoYW1Sb3V0ZUxpc3RlbmVyczogRkMgPSAoKTogbnVsbCA9PiB7XG4vLyAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcblxuLy8gICB1c2VGbHV4TGlzdGVuZXIoR290aGFtQ29uc3RhbnRzLk5BVl9CQUNLLCBuYXZCYWNrKG5hdmlnYXRlKSk7XG4vLyAgIHVzZUZsdXhMaXN0ZW5lcihHb3RoYW1Db25zdGFudHMuTkFWX0ZPUldBUkQsIG5hdkZvcndhcmQobmF2aWdhdGUpKTtcbi8vICAgdXNlRmx1eExpc3RlbmVyKEdvdGhhbUNvbnN0YW50cy5OQVZfR09UTywgbmF2R290byhuYXZpZ2F0ZSkpO1xuLy8gICB1c2VGbHV4TGlzdGVuZXIoR290aGFtQ29uc3RhbnRzLk5BVl9SRVBMQUNFLCBuYXZSZXBsYWNlKG5hdmlnYXRlKSk7XG5cbi8vICAgcmV0dXJuIG51bGw7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBHb3RoYW1Sb3V0ZXNQcm9wcyA9IHtcbi8vICAgcmVhZG9ubHkgZmx1eDogRmx1eEZyYW1ld29yaztcbi8vICAgcmVhZG9ubHkgZ290aGFtQ29uZmlnOiBHb3RoYW1Db25maWd1cmF0aW9uO1xuLy8gICByZWFkb25seSByb3V0ZXM6IEdvdGhhbVJvdXRlRGF0YVtdO1xuLy8gfTtcblxuLy8gZXhwb3J0IGNvbnN0IEdvdGhhbVJvdXRlczogRkM8R290aGFtUm91dGVzUHJvcHM+ID0gKHtcbi8vICAgZmx1eCxcbi8vICAgZ290aGFtQ29uZmlnLFxuLy8gICByb3V0ZXNcbi8vIH0pID0+IChcbi8vICAgPEJyb3dzZXJSb3V0ZXI+XG4vLyAgICAgPEdvdGhhbVJvdXRlTGlzdGVuZXJzIC8+XG4vLyAgICAgPFJvdXRlcz5cbi8vICAgICAgIHtyZW5kZXJSb3V0ZUxpc3Qocm91dGVzLCBmbHV4LCBnb3RoYW1Db25maWcpfVxuLy8gICAgIDwvUm91dGVzPlxuLy8gICA8L0Jyb3dzZXJSb3V0ZXI+XG4vLyApOyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04scURBQXFEO0FBQ3JELDZGQUE2RjtBQUM3RixNQUFNO0FBQ04saURBQWlEO0FBQ2pELCtEQUErRDtBQUMvRCxtRUFBbUU7QUFFbkUsbUVBQW1FO0FBQ25FLHlFQUF5RTtBQUV6RSwyREFBMkQ7QUFDM0QsaUNBQWlDO0FBRWpDLG9EQUFvRDtBQUNwRCxzQkFBc0I7QUFDdEIsS0FBSztBQUVMLHVEQUF1RDtBQUN2RCx5QkFBeUI7QUFDekIsS0FBSztBQUVMLHlEQUF5RDtBQUN6RCxzQ0FBc0M7QUFDdEMsNEJBQTRCO0FBQzVCLEtBQUs7QUFFTCwyREFBMkQ7QUFDM0Qsc0NBQXNDO0FBQ3RDLG1DQUFtQztBQUNuQyxLQUFLO0FBRUwsd0RBQXdEO0FBQ3hELG9DQUFvQztBQUVwQyxrRUFBa0U7QUFDbEUsd0VBQXdFO0FBQ3hFLGtFQUFrRTtBQUNsRSx3RUFBd0U7QUFFeEUsaUJBQWlCO0FBQ2pCLEtBQUs7QUFFTCxvQ0FBb0M7QUFDcEMsa0NBQWtDO0FBQ2xDLGdEQUFnRDtBQUNoRCx3Q0FBd0M7QUFDeEMsS0FBSztBQUVMLHdEQUF3RDtBQUN4RCxVQUFVO0FBQ1Ysa0JBQWtCO0FBQ2xCLFdBQVc7QUFDWCxVQUFVO0FBQ1Ysb0JBQW9CO0FBQ3BCLCtCQUErQjtBQUMvQixlQUFlO0FBQ2Ysc0RBQXNEO0FBQ3RELGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckIsS0FBSyJ9
@@ -0,0 +1,7 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
3
+ export type HeadingProps = {
4
+ readonly level?: HeadingLevel;
5
+ } & ComponentPropsWithoutRef<'h1'>;
6
+ export declare const Heading: ({ className, level, ...props }: HeadingProps) => import("react").JSX.Element;
7
+ export declare const Subheading: ({ className, level, ...props }: HeadingProps) => import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ export const Heading = ({ className, level = 1, ...props })=>{
4
+ const Element = `h${level}`;
5
+ return /*#__PURE__*/ _jsx(Element, {
6
+ className: cn('text-2xl/8 font-semibold text-foreground sm:text-xl/8 dark:text-foreground-dark', className),
7
+ "data-slot": "heading",
8
+ ...props
9
+ });
10
+ };
11
+ export const Subheading = ({ className, level = 2, ...props })=>{
12
+ const Element = `h${level}`;
13
+ return /*#__PURE__*/ _jsx(Element, {
14
+ className: cn('text-base/7 font-semibold text-foreground sm:text-sm/6 dark:text-foreground-dark', className),
15
+ "data-slot": "subheading",
16
+ ...props
17
+ });
18
+ };
19
+
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0hlYWRpbmcvSGVhZGluZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZn0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgdHlwZSBIZWFkaW5nTGV2ZWwgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEhlYWRpbmdQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbGV2ZWw/OiBIZWFkaW5nTGV2ZWw7XG59ICYgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdoMSc+O1xuXG5leHBvcnQgY29uc3QgSGVhZGluZyA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgbGV2ZWwgPSAxLFxuICAuLi5wcm9wc1xufTogSGVhZGluZ1Byb3BzKSA9PiB7XG4gIGNvbnN0IEVsZW1lbnQgPSBgaCR7bGV2ZWx9YCBhcyBjb25zdDtcblxuICByZXR1cm4gKFxuICAgIDxFbGVtZW50XG4gICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LTJ4bC84IGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kIHNtOnRleHQteGwvOCBkYXJrOnRleHQtZm9yZWdyb3VuZC1kYXJrJywgY2xhc3NOYW1lKX1cbiAgICAgIGRhdGEtc2xvdD1cImhlYWRpbmdcIlxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgU3ViaGVhZGluZyA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgbGV2ZWwgPSAyLFxuICAuLi5wcm9wc1xufTogSGVhZGluZ1Byb3BzKSA9PiB7XG4gIGNvbnN0IEVsZW1lbnQgPSBgaCR7bGV2ZWx9YCBhcyBjb25zdDtcblxuICByZXR1cm4gKFxuICAgIDxFbGVtZW50XG4gICAgICBjbGFzc05hbWU9e2NuKCd0ZXh0LWJhc2UvNyBmb250LXNlbWlib2xkIHRleHQtZm9yZWdyb3VuZCBzbTp0ZXh0LXNtLzYgZGFyazp0ZXh0LWZvcmVncm91bmQtZGFyaycsIGNsYXNzTmFtZSl9XG4gICAgICBkYXRhLXNsb3Q9XCJzdWJoZWFkaW5nXCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJjbiIsIkhlYWRpbmciLCJjbGFzc05hbWUiLCJsZXZlbCIsInByb3BzIiwiRWxlbWVudCIsImRhdGEtc2xvdCIsIlN1YmhlYWRpbmciXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxFQUFFLFFBQU8sZUFBZTtBQVVoQyxPQUFPLE1BQU1DLFVBQVUsQ0FBQyxFQUN0QkMsU0FBUyxFQUNUQyxRQUFRLENBQUMsRUFDVCxHQUFHQyxPQUNVO0lBQ2IsTUFBTUMsVUFBVSxDQUFDLENBQUMsRUFBRUYsT0FBTztJQUUzQixxQkFDRSxLQUFDRTtRQUNDSCxXQUFXRixHQUFHLG1GQUFtRkU7UUFDakdJLGFBQVU7UUFDVCxHQUFHRixLQUFLOztBQUdmLEVBQUU7QUFFRixPQUFPLE1BQU1HLGFBQWEsQ0FBQyxFQUN6QkwsU0FBUyxFQUNUQyxRQUFRLENBQUMsRUFDVCxHQUFHQyxPQUNVO0lBQ2IsTUFBTUMsVUFBVSxDQUFDLENBQUMsRUFBRUYsT0FBTztJQUUzQixxQkFDRSxLQUFDRTtRQUNDSCxXQUFXRixHQUFHLG9GQUFvRkU7UUFDbEdJLGFBQVU7UUFDVCxHQUFHRixLQUFLOztBQUdmLEVBQUUifQ==
@@ -0,0 +1,51 @@
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 { Heading, Subheading } from './Heading.js';
5
+ const meta = {
6
+ argTypes: {
7
+ children: {
8
+ control: 'text'
9
+ },
10
+ level: {
11
+ control: 'select',
12
+ options: [
13
+ 1,
14
+ 2,
15
+ 3,
16
+ 4,
17
+ 5,
18
+ 6
19
+ ]
20
+ }
21
+ },
22
+ component: Heading,
23
+ parameters: {
24
+ layout: 'centered'
25
+ },
26
+ title: 'Components/Heading'
27
+ };
28
+ export default meta;
29
+ export const Default = {
30
+ args: {
31
+ children: 'Workspace overview',
32
+ level: 1
33
+ },
34
+ play: interactWithCanvas
35
+ };
36
+ export const WithSubheading = {
37
+ play: interactWithCanvas,
38
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
39
+ className: "space-y-2",
40
+ children: [
41
+ /*#__PURE__*/ _jsx(Heading, {
42
+ children: "Workspace overview"
43
+ }),
44
+ /*#__PURE__*/ _jsx(Subheading, {
45
+ children: "Activity summary"
46
+ })
47
+ ]
48
+ })
49
+ };
50
+
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0hlYWRpbmcvSGVhZGluZy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtpbnRlcmFjdFdpdGhDYW52YXN9IGZyb20gJy4uLy4uL3V0aWxzL3N0b3J5SW50ZXJhY3Rpb25zLmpzJztcbmltcG9ydCB7SGVhZGluZywgU3ViaGVhZGluZ30gZnJvbSAnLi9IZWFkaW5nLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIEhlYWRpbmc+ID0ge1xuICBhcmdUeXBlczoge1xuICAgIGNoaWxkcmVuOiB7XG4gICAgICBjb250cm9sOiAndGV4dCdcbiAgICB9LFxuICAgIGxldmVsOiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IFsxLCAyLCAzLCA0LCA1LCA2XVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBIZWFkaW5nLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgbGF5b3V0OiAnY2VudGVyZWQnXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9IZWFkaW5nJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWV0YTtcblxudHlwZSBTdG9yeSA9IFN0b3J5T2JqPHR5cGVvZiBIZWFkaW5nPjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgY2hpbGRyZW46ICdXb3Jrc3BhY2Ugb3ZlcnZpZXcnLFxuICAgIGxldmVsOiAxXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcblxuZXhwb3J0IGNvbnN0IFdpdGhTdWJoZWFkaW5nOiBTdG9yeSA9IHtcbiAgcGxheTogaW50ZXJhY3RXaXRoQ2FudmFzLFxuICByZW5kZXI6ICgpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgPEhlYWRpbmc+V29ya3NwYWNlIG92ZXJ2aWV3PC9IZWFkaW5nPlxuICAgICAgPFN1YmhlYWRpbmc+QWN0aXZpdHkgc3VtbWFyeTwvU3ViaGVhZGluZz5cbiAgICA8L2Rpdj5cbiAgKVxufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImludGVyYWN0V2l0aENhbnZhcyIsIkhlYWRpbmciLCJTdWJoZWFkaW5nIiwibWV0YSIsImFyZ1R5cGVzIiwiY2hpbGRyZW4iLCJjb250cm9sIiwibGV2ZWwiLCJvcHRpb25zIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiRGVmYXVsdCIsImFyZ3MiLCJwbGF5IiwiV2l0aFN1YmhlYWRpbmciLCJyZW5kZXIiLCJkaXYiLCJjbGFzc05hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsa0JBQWtCLFFBQU8sbUNBQW1DO0FBQ3BFLFNBQVFDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFJakQsTUFBTUMsT0FBNkI7SUFDakNDLFVBQVU7UUFDUkMsVUFBVTtZQUNSQyxTQUFTO1FBQ1g7UUFDQUMsT0FBTztZQUNMRCxTQUFTO1lBQ1RFLFNBQVM7Z0JBQUM7Z0JBQUc7Z0JBQUc7Z0JBQUc7Z0JBQUc7Z0JBQUc7YUFBRTtRQUM3QjtJQUNGO0lBQ0FDLFdBQVdSO0lBQ1hTLFlBQVk7UUFDVkMsUUFBUTtJQUNWO0lBQ0FDLE9BQU87QUFDVDtBQUVBLGVBQWVULEtBQUs7QUFJcEIsT0FBTyxNQUFNVSxVQUFpQjtJQUM1QkMsTUFBTTtRQUNKVCxVQUFVO1FBQ1ZFLE9BQU87SUFDVDtJQUNBUSxNQUFNZjtBQUNSLEVBQUU7QUFFRixPQUFPLE1BQU1nQixpQkFBd0I7SUFDbkNELE1BQU1mO0lBQ05pQixRQUFRLGtCQUNOLE1BQUNDO1lBQUlDLFdBQVU7OzhCQUNiLEtBQUNsQjs4QkFBUTs7OEJBQ1QsS0FBQ0M7OEJBQVc7Ozs7QUFHbEIsRUFBRSJ9
@@ -0,0 +1,15 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface IncentiveItem {
3
+ readonly description: ReactNode;
4
+ readonly icon?: ReactNode;
5
+ readonly id?: string;
6
+ readonly imageAlt?: string;
7
+ readonly imageSrc?: string;
8
+ readonly title: ReactNode;
9
+ }
10
+ export interface IncentiveGridProps extends HTMLAttributes<HTMLDivElement> {
11
+ readonly incentives: IncentiveItem[];
12
+ }
13
+ declare const IncentiveGridComponent: ({ className, incentives, ...props }: IncentiveGridProps) => import("react").JSX.Element;
14
+ export declare const IncentiveGrid: import("react").MemoExoticComponent<typeof IncentiveGridComponent>;
15
+ export {};
@@ -0,0 +1,34 @@
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 IncentiveGridComponent = ({ className, incentives, ...props })=>/*#__PURE__*/ _jsx("div", {
5
+ className: cn('grid grid-cols-1 gap-x-8 gap-y-10 sm:grid-cols-2 lg:grid-cols-3', className),
6
+ "data-slot": "incentive-grid",
7
+ ...props,
8
+ children: incentives.map((incentive)=>/*#__PURE__*/ _jsxs("div", {
9
+ className: "flex flex-col items-center text-center",
10
+ "data-slot": "incentive-card",
11
+ children: [
12
+ incentive.imageSrc ? /*#__PURE__*/ _jsx("img", {
13
+ alt: incentive.imageAlt ?? '',
14
+ className: "size-16 object-contain",
15
+ src: incentive.imageSrc
16
+ }) : /*#__PURE__*/ _jsx("div", {
17
+ className: "flex size-12 items-center justify-center rounded-md bg-primary/10 text-primary dark:bg-primary-dark/20 dark:text-primary-dark",
18
+ children: incentive.icon
19
+ }),
20
+ /*#__PURE__*/ _jsx("h3", {
21
+ className: "mt-5 text-base font-semibold text-foreground dark:text-foreground-dark",
22
+ children: incentive.title
23
+ }),
24
+ /*#__PURE__*/ _jsx("p", {
25
+ className: "mt-2 text-sm/6 text-muted-foreground dark:text-muted-foreground-dark",
26
+ children: incentive.description
27
+ })
28
+ ]
29
+ }, incentive.id ?? String(incentive.title)))
30
+ });
31
+ export const IncentiveGrid = /*#__PURE__*/ memo(IncentiveGridComponent);
32
+ IncentiveGrid.displayName = 'IncentiveGrid';
33
+
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0luY2VudGl2ZUdyaWQvSW5jZW50aXZlR3JpZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7bWVtb30gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7SFRNTEF0dHJpYnV0ZXMsIFJlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluY2VudGl2ZUl0ZW0ge1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogUmVhY3ROb2RlO1xuICByZWFkb25seSBpY29uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgaW1hZ2VBbHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGltYWdlU3JjPzogc3RyaW5nO1xuICByZWFkb25seSB0aXRsZTogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluY2VudGl2ZUdyaWRQcm9wcyBleHRlbmRzIEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiB7XG4gIHJlYWRvbmx5IGluY2VudGl2ZXM6IEluY2VudGl2ZUl0ZW1bXTtcbn1cblxuY29uc3QgSW5jZW50aXZlR3JpZENvbXBvbmVudCA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgaW5jZW50aXZlcyxcbiAgLi4ucHJvcHNcbn06IEluY2VudGl2ZUdyaWRQcm9wcykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2dyaWQgZ3JpZC1jb2xzLTEgZ2FwLXgtOCBnYXAteS0xMCBzbTpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMycsIGNsYXNzTmFtZSl9IGRhdGEtc2xvdD1cImluY2VudGl2ZS1ncmlkXCIgey4uLnByb3BzfT5cbiAgICB7aW5jZW50aXZlcy5tYXAoKGluY2VudGl2ZSkgPT4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlclwiIGRhdGEtc2xvdD1cImluY2VudGl2ZS1jYXJkXCIga2V5PXtpbmNlbnRpdmUuaWQgPz8gU3RyaW5nKGluY2VudGl2ZS50aXRsZSl9PlxuICAgICAgICB7aW5jZW50aXZlLmltYWdlU3JjID8gKFxuICAgICAgICAgIDxpbWcgYWx0PXtpbmNlbnRpdmUuaW1hZ2VBbHQgPz8gJyd9IGNsYXNzTmFtZT1cInNpemUtMTYgb2JqZWN0LWNvbnRhaW5cIiBzcmM9e2luY2VudGl2ZS5pbWFnZVNyY30gLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc2l6ZS0xMiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeSBkYXJrOmJnLXByaW1hcnktZGFyay8yMCBkYXJrOnRleHQtcHJpbWFyeS1kYXJrXCI+XG4gICAgICAgICAgICB7aW5jZW50aXZlLmljb259XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJtdC01IHRleHQtYmFzZSBmb250LXNlbWlib2xkIHRleHQtZm9yZWdyb3VuZCBkYXJrOnRleHQtZm9yZWdyb3VuZC1kYXJrXCI+e2luY2VudGl2ZS50aXRsZX08L2gzPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20vNiB0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazp0ZXh0LW11dGVkLWZvcmVncm91bmQtZGFya1wiPntpbmNlbnRpdmUuZGVzY3JpcHRpb259PC9wPlxuICAgICAgPC9kaXY+XG4gICAgKSl9XG4gIDwvZGl2PlxuKTtcblxuZXhwb3J0IGNvbnN0IEluY2VudGl2ZUdyaWQgPSBtZW1vKEluY2VudGl2ZUdyaWRDb21wb25lbnQpO1xuSW5jZW50aXZlR3JpZC5kaXNwbGF5TmFtZSA9ICdJbmNlbnRpdmVHcmlkJztcbiJdLCJuYW1lcyI6WyJjbiIsIm1lbW8iLCJJbmNlbnRpdmVHcmlkQ29tcG9uZW50IiwiY2xhc3NOYW1lIiwiaW5jZW50aXZlcyIsInByb3BzIiwiZGl2IiwiZGF0YS1zbG90IiwibWFwIiwiaW5jZW50aXZlIiwiaW1hZ2VTcmMiLCJpbWciLCJhbHQiLCJpbWFnZUFsdCIsInNyYyIsImljb24iLCJoMyIsInRpdGxlIiwicCIsImRlc2NyaXB0aW9uIiwiaWQiLCJTdHJpbmciLCJJbmNlbnRpdmVHcmlkIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxFQUFFLFFBQU8sZUFBZTtBQUNoQyxTQUFRQyxJQUFJLFFBQU8sUUFBUTtBQWlCM0IsTUFBTUMseUJBQXlCLENBQUMsRUFDOUJDLFNBQVMsRUFDVEMsVUFBVSxFQUNWLEdBQUdDLE9BQ2dCLGlCQUNuQixLQUFDQztRQUFJSCxXQUFXSCxHQUFHLG1FQUFtRUc7UUFBWUksYUFBVTtRQUFrQixHQUFHRixLQUFLO2tCQUNuSUQsV0FBV0ksR0FBRyxDQUFDLENBQUNDLDBCQUNmLE1BQUNIO2dCQUFJSCxXQUFVO2dCQUF5Q0ksYUFBVTs7b0JBQy9ERSxVQUFVQyxRQUFRLGlCQUNqQixLQUFDQzt3QkFBSUMsS0FBS0gsVUFBVUksUUFBUSxJQUFJO3dCQUFJVixXQUFVO3dCQUF5QlcsS0FBS0wsVUFBVUMsUUFBUTt1Q0FFOUYsS0FBQ0o7d0JBQUlILFdBQVU7a0NBQ1pNLFVBQVVNLElBQUk7O2tDQUduQixLQUFDQzt3QkFBR2IsV0FBVTtrQ0FBMEVNLFVBQVVRLEtBQUs7O2tDQUN2RyxLQUFDQzt3QkFBRWYsV0FBVTtrQ0FBd0VNLFVBQVVVLFdBQVc7OztlQVRwQlYsVUFBVVcsRUFBRSxJQUFJQyxPQUFPWixVQUFVUSxLQUFLOztBQWVwSSxPQUFPLE1BQU1LLDhCQUFnQnJCLEtBQUtDLHdCQUF3QjtBQUMxRG9CLGNBQWNDLFdBQVcsR0FBRyJ9
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { RefreshCcw, ShieldCheck, Truck } from 'lucide-react';
3
+ import React from 'react';
4
+ import { IncentiveGrid } from './IncentiveGrid.js';
5
+ const meta = {
6
+ component: IncentiveGrid,
7
+ parameters: {
8
+ layout: 'padded'
9
+ },
10
+ title: 'Ecommerce/IncentiveGrid'
11
+ };
12
+ export default meta;
13
+ export const ThreeColumn = {
14
+ args: {
15
+ incentives: [
16
+ {
17
+ description: 'Free shipping on domestic orders over $75.',
18
+ icon: /*#__PURE__*/ _jsx(Truck, {
19
+ className: "size-6"
20
+ }),
21
+ title: 'Free shipping'
22
+ },
23
+ {
24
+ description: '30 day returns with prepaid labels.',
25
+ icon: /*#__PURE__*/ _jsx(RefreshCcw, {
26
+ className: "size-6"
27
+ }),
28
+ title: 'Easy returns'
29
+ },
30
+ {
31
+ description: 'Every checkout is encrypted and protected.',
32
+ icon: /*#__PURE__*/ _jsx(ShieldCheck, {
33
+ className: "size-6"
34
+ }),
35
+ title: 'Secure payment'
36
+ }
37
+ ]
38
+ }
39
+ };
40
+
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0luY2VudGl2ZUdyaWQvSW5jZW50aXZlR3JpZC5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlZnJlc2hDY3csIFNoaWVsZENoZWNrLCBUcnVja30gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7SW5jZW50aXZlR3JpZH0gZnJvbSAnLi9JbmNlbnRpdmVHcmlkLmpzJztcblxuaW1wb3J0IHR5cGUge01ldGEsIFN0b3J5T2JqfSBmcm9tICdAbmxhYnMvbGV4L3N0b3J5Ym9vayc7XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIEluY2VudGl2ZUdyaWQ+ID0ge1xuICBjb21wb25lbnQ6IEluY2VudGl2ZUdyaWQsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdwYWRkZWQnXG4gIH0sXG4gIHRpdGxlOiAnRWNvbW1lcmNlL0luY2VudGl2ZUdyaWQnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIEluY2VudGl2ZUdyaWQ+O1xuXG5leHBvcnQgY29uc3QgVGhyZWVDb2x1bW46IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgaW5jZW50aXZlczogW1xuICAgICAge2Rlc2NyaXB0aW9uOiAnRnJlZSBzaGlwcGluZyBvbiBkb21lc3RpYyBvcmRlcnMgb3ZlciAkNzUuJywgaWNvbjogPFRydWNrIGNsYXNzTmFtZT1cInNpemUtNlwiIC8+LCB0aXRsZTogJ0ZyZWUgc2hpcHBpbmcnfSxcbiAgICAgIHtkZXNjcmlwdGlvbjogJzMwIGRheSByZXR1cm5zIHdpdGggcHJlcGFpZCBsYWJlbHMuJywgaWNvbjogPFJlZnJlc2hDY3cgY2xhc3NOYW1lPVwic2l6ZS02XCIgLz4sIHRpdGxlOiAnRWFzeSByZXR1cm5zJ30sXG4gICAgICB7ZGVzY3JpcHRpb246ICdFdmVyeSBjaGVja291dCBpcyBlbmNyeXB0ZWQgYW5kIHByb3RlY3RlZC4nLCBpY29uOiA8U2hpZWxkQ2hlY2sgY2xhc3NOYW1lPVwic2l6ZS02XCIgLz4sIHRpdGxlOiAnU2VjdXJlIHBheW1lbnQnfVxuICAgIF1cbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJSZWZyZXNoQ2N3IiwiU2hpZWxkQ2hlY2siLCJUcnVjayIsIlJlYWN0IiwiSW5jZW50aXZlR3JpZCIsIm1ldGEiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJUaHJlZUNvbHVtbiIsImFyZ3MiLCJpbmNlbnRpdmVzIiwiZGVzY3JpcHRpb24iLCJpY29uIiwiY2xhc3NOYW1lIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLEtBQUssUUFBTyxlQUFlO0FBQzVELE9BQU9DLFdBQVcsUUFBUTtBQUUxQixTQUFRQyxhQUFhLFFBQU8scUJBQXFCO0FBSWpELE1BQU1DLE9BQW1DO0lBQ3ZDQyxXQUFXRjtJQUNYRyxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlSixLQUFLO0FBSXBCLE9BQU8sTUFBTUssY0FBcUI7SUFDaENDLE1BQU07UUFDSkMsWUFBWTtZQUNWO2dCQUFDQyxhQUFhO2dCQUE4Q0Msb0JBQU0sS0FBQ1o7b0JBQU1hLFdBQVU7O2dCQUFhTixPQUFPO1lBQWU7WUFDdEg7Z0JBQUNJLGFBQWE7Z0JBQXVDQyxvQkFBTSxLQUFDZDtvQkFBV2UsV0FBVTs7Z0JBQWFOLE9BQU87WUFBYztZQUNuSDtnQkFBQ0ksYUFBYTtnQkFBOENDLG9CQUFNLEtBQUNiO29CQUFZYyxXQUFVOztnQkFBYU4sT0FBTztZQUFnQjtTQUM5SDtJQUNIO0FBQ0YsRUFBRSJ9
@@ -0,0 +1,25 @@
1
+ import type { InputHTMLAttributes, Ref, TextareaHTMLAttributes } from 'react';
2
+ import type { GothamColor } from '../../utils/colorUtils.js';
3
+ export type InputBorderType = 'solid' | 'rounded' | 'none' | 'underline';
4
+ export interface InputFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement> & TextareaHTMLAttributes<HTMLTextAreaElement>, 'className'> {
5
+ readonly borderColor?: GothamColor;
6
+ readonly borderType?: InputBorderType;
7
+ readonly className?: string;
8
+ readonly id?: string;
9
+ readonly label?: string;
10
+ readonly multiline?: boolean;
11
+ readonly placeholderColor?: GothamColor;
12
+ readonly ref?: Ref<HTMLInputElement | HTMLTextAreaElement>;
13
+ readonly textFillColor?: string;
14
+ readonly textColor?: GothamColor;
15
+ }
16
+ export declare const baseClasses: {
17
+ none: string;
18
+ rounded: string;
19
+ solid: string;
20
+ underline: string;
21
+ };
22
+ export declare const getInputBorderClass: (borderType: InputBorderType, borderColor: GothamColor, textColor: GothamColor, placeholderColor: GothamColor) => string;
23
+ declare const InputFieldComponent: ({ borderColor, borderType, className, disabled, label, multiline, placeholderColor, ref, style, textFillColor, textColor, ...inputProps }: InputFieldProps) => import("react").JSX.Element;
24
+ export declare const InputField: import("react").MemoExoticComponent<typeof InputFieldComponent>;
25
+ export {};
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
4
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
5
+ */ import { cn } from '@nlabs/utils';
6
+ import { memo, useMemo } from 'react';
7
+ import { getBorderClasses, getOutlineClasses, getPlaceholderClasses, getTextClasses } from '../../utils/colorUtils.js';
8
+ export const baseClasses = {
9
+ none: '',
10
+ rounded: 'w-full rounded-md outline-1 outline-solid focus:outline-3 px-3.5 py-2 sm:text-sm sm:leading-6 bg-white/30 dark:bg-black/30',
11
+ solid: 'w-full outline-1 outline-solid focus:outline-3 px-3.5 py-2 sm:text-sm sm:leading-6 bg-white/30 dark:bg-black/30',
12
+ underline: 'w-full border-b autofill:bg-transparent outline-none py-2 sm:text-sm sm:leading-6'
13
+ };
14
+ export const getInputBorderClass = (borderType, borderColor, textColor, placeholderColor)=>cn(baseClasses[borderType], getTextClasses(textColor), borderType === 'underline' ? getBorderClasses(borderColor, {
15
+ hasFocus: true,
16
+ hasHover: true
17
+ }) : '', borderType === 'rounded' || borderType === 'solid' ? getOutlineClasses(borderColor, {
18
+ hasFocus: true,
19
+ hasHover: true
20
+ }) : '', getPlaceholderClasses(placeholderColor, {
21
+ hasFocus: true,
22
+ hasHover: true
23
+ }));
24
+ const InputFieldComponent = ({ borderColor = 'neutral', borderType = 'solid', className, disabled = false, label, multiline = false, placeholderColor = 'neutral', ref, style, textFillColor, textColor = 'neutral', ...inputProps })=>{
25
+ const borderClasses = useMemo(()=>getInputBorderClass(borderType, borderColor, textColor, placeholderColor), [
26
+ borderType,
27
+ borderColor,
28
+ textColor,
29
+ placeholderColor
30
+ ]);
31
+ const inputClasses = useMemo(()=>cn(className, disabled ? 'text-neutral/30 dark:text-neutral-dark/30 outline-neutral/30 dark:outline-neutral-dark/30' : borderClasses, multiline && 'min-h-[100px] resize-y'), [
32
+ className,
33
+ borderClasses,
34
+ disabled,
35
+ multiline
36
+ ]);
37
+ const inputStyle = useMemo(()=>{
38
+ if (!textFillColor) {
39
+ return style;
40
+ }
41
+ return {
42
+ ...style,
43
+ WebkitTextFillColor: textFillColor,
44
+ caretColor: textFillColor,
45
+ color: textFillColor
46
+ };
47
+ }, [
48
+ style,
49
+ textFillColor
50
+ ]);
51
+ return multiline ? /*#__PURE__*/ _jsx("textarea", {
52
+ ...inputProps,
53
+ className: inputClasses,
54
+ disabled: disabled,
55
+ ref: ref,
56
+ style: inputStyle
57
+ }) : /*#__PURE__*/ _jsx("input", {
58
+ ...inputProps,
59
+ className: inputClasses,
60
+ disabled: disabled,
61
+ ref: ref,
62
+ style: inputStyle
63
+ });
64
+ };
65
+ export const InputField = /*#__PURE__*/ memo(InputFieldComponent);
66
+ InputField.displayName = 'InputField';
67
+
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0lucHV0RmllbGQvSW5wdXRGaWVsZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y259IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge21lbW8sIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtcbiAgZ2V0Qm9yZGVyQ2xhc3NlcyxcbiAgZ2V0T3V0bGluZUNsYXNzZXMsXG4gIGdldFBsYWNlaG9sZGVyQ2xhc3NlcyxcbiAgZ2V0VGV4dENsYXNzZXNcbn0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5cbmltcG9ydCB0eXBlIHtJbnB1dEhUTUxBdHRyaWJ1dGVzLCBSZWYsIFRleHRhcmVhSFRNTEF0dHJpYnV0ZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtHb3RoYW1Db2xvcn0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5cbmV4cG9ydCB0eXBlIElucHV0Qm9yZGVyVHlwZSA9ICdzb2xpZCcgfCAncm91bmRlZCcgfCAnbm9uZScgfCAndW5kZXJsaW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEZpZWxkUHJvcHMgZXh0ZW5kcyBPbWl0PElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4gJiBUZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LCAnY2xhc3NOYW1lJz4ge1xuICByZWFkb25seSBib3JkZXJDb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSBib3JkZXJUeXBlPzogSW5wdXRCb3JkZXJUeXBlO1xuICByZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgbXVsdGlsaW5lPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXJDb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSByZWY/OiBSZWY8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuICByZWFkb25seSB0ZXh0RmlsbENvbG9yPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXh0Q29sb3I/OiBHb3RoYW1Db2xvcjtcbn1cblxuZXhwb3J0IGNvbnN0IGJhc2VDbGFzc2VzID0ge1xuICBub25lOiAnJyxcbiAgcm91bmRlZDogJ3ctZnVsbCByb3VuZGVkLW1kIG91dGxpbmUtMSBvdXRsaW5lLXNvbGlkIGZvY3VzOm91dGxpbmUtMyBweC0zLjUgcHktMiBzbTp0ZXh0LXNtIHNtOmxlYWRpbmctNiBiZy13aGl0ZS8zMCBkYXJrOmJnLWJsYWNrLzMwJyxcbiAgc29saWQ6ICd3LWZ1bGwgb3V0bGluZS0xIG91dGxpbmUtc29saWQgZm9jdXM6b3V0bGluZS0zIHB4LTMuNSBweS0yIHNtOnRleHQtc20gc206bGVhZGluZy02IGJnLXdoaXRlLzMwIGRhcms6YmctYmxhY2svMzAnLFxuICB1bmRlcmxpbmU6ICd3LWZ1bGwgYm9yZGVyLWIgYXV0b2ZpbGw6YmctdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lIHB5LTIgc206dGV4dC1zbSBzbTpsZWFkaW5nLTYnXG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5wdXRCb3JkZXJDbGFzcyA9IChcbiAgYm9yZGVyVHlwZTogSW5wdXRCb3JkZXJUeXBlLFxuICBib3JkZXJDb2xvcjogR290aGFtQ29sb3IsXG4gIHRleHRDb2xvcjogR290aGFtQ29sb3IsXG4gIHBsYWNlaG9sZGVyQ29sb3I6IEdvdGhhbUNvbG9yXG4pID0+IGNuKFxuICBiYXNlQ2xhc3Nlc1tib3JkZXJUeXBlXSxcbiAgZ2V0VGV4dENsYXNzZXModGV4dENvbG9yKSxcbiAgYm9yZGVyVHlwZSA9PT0gJ3VuZGVybGluZSdcbiAgICA/IGdldEJvcmRlckNsYXNzZXMoYm9yZGVyQ29sb3IsIHtoYXNGb2N1czogdHJ1ZSwgaGFzSG92ZXI6IHRydWV9KVxuICAgIDogJycsXG4gIGJvcmRlclR5cGUgPT09ICdyb3VuZGVkJyB8fCBib3JkZXJUeXBlID09PSAnc29saWQnXG4gICAgPyBnZXRPdXRsaW5lQ2xhc3Nlcyhib3JkZXJDb2xvciwge2hhc0ZvY3VzOiB0cnVlLCBoYXNIb3ZlcjogdHJ1ZX0pXG4gICAgOiAnJyxcbiAgZ2V0UGxhY2Vob2xkZXJDbGFzc2VzKHBsYWNlaG9sZGVyQ29sb3IsIHtoYXNGb2N1czogdHJ1ZSwgaGFzSG92ZXI6IHRydWV9KVxuKTtcblxuY29uc3QgSW5wdXRGaWVsZENvbXBvbmVudCA9ICh7XG4gIGJvcmRlckNvbG9yID0gJ25ldXRyYWwnLFxuICBib3JkZXJUeXBlID0gJ3NvbGlkJyxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBsYWJlbCxcbiAgbXVsdGlsaW5lID0gZmFsc2UsXG4gIHBsYWNlaG9sZGVyQ29sb3IgPSAnbmV1dHJhbCcsXG4gIHJlZixcbiAgc3R5bGUsXG4gIHRleHRGaWxsQ29sb3IsXG4gIHRleHRDb2xvciA9ICduZXV0cmFsJyxcbiAgLi4uaW5wdXRQcm9wc1xufTogSW5wdXRGaWVsZFByb3BzKSA9PiB7XG4gIGNvbnN0IGJvcmRlckNsYXNzZXMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldElucHV0Qm9yZGVyQ2xhc3MoYm9yZGVyVHlwZSwgYm9yZGVyQ29sb3IsIHRleHRDb2xvciwgcGxhY2Vob2xkZXJDb2xvciksXG4gICAgW2JvcmRlclR5cGUsIGJvcmRlckNvbG9yLCB0ZXh0Q29sb3IsIHBsYWNlaG9sZGVyQ29sb3JdXG4gICk7XG5cbiAgY29uc3QgaW5wdXRDbGFzc2VzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjbihcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkID8gJ3RleHQtbmV1dHJhbC8zMCBkYXJrOnRleHQtbmV1dHJhbC1kYXJrLzMwIG91dGxpbmUtbmV1dHJhbC8zMCBkYXJrOm91dGxpbmUtbmV1dHJhbC1kYXJrLzMwJyA6IGJvcmRlckNsYXNzZXMsXG4gICAgICBtdWx0aWxpbmUgJiYgJ21pbi1oLVsxMDBweF0gcmVzaXplLXknXG4gICAgKSxcbiAgICBbY2xhc3NOYW1lLCBib3JkZXJDbGFzc2VzLCBkaXNhYmxlZCwgbXVsdGlsaW5lXVxuICApO1xuXG4gIGNvbnN0IGlucHV0U3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZighdGV4dEZpbGxDb2xvcikge1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdHlsZSxcbiAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHRleHRGaWxsQ29sb3IsXG4gICAgICBjYXJldENvbG9yOiB0ZXh0RmlsbENvbG9yLFxuICAgICAgY29sb3I6IHRleHRGaWxsQ29sb3JcbiAgICB9O1xuICB9LCBbc3R5bGUsIHRleHRGaWxsQ29sb3JdKTtcblxuICByZXR1cm4gbXVsdGlsaW5lID8gKFxuICAgIDx0ZXh0YXJlYVxuICAgICAgey4uLmlucHV0UHJvcHMgYXMgVGV4dGFyZWFIVE1MQXR0cmlidXRlczxIVE1MVGV4dEFyZWFFbGVtZW50Pn1cbiAgICAgIGNsYXNzTmFtZT17aW5wdXRDbGFzc2VzfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgcmVmPXtyZWYgYXMgUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+fVxuICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgLz5cbiAgKSA6IChcbiAgICA8aW5wdXRcbiAgICAgIHsuLi5pbnB1dFByb3BzIGFzIElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD59XG4gICAgICBjbGFzc05hbWU9e2lucHV0Q2xhc3Nlc31cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHJlZj17cmVmIGFzIFJlZjxIVE1MSW5wdXRFbGVtZW50Pn1cbiAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgSW5wdXRGaWVsZCA9IG1lbW8oSW5wdXRGaWVsZENvbXBvbmVudCk7XG5JbnB1dEZpZWxkLmRpc3BsYXlOYW1lID0gJ0lucHV0RmllbGQnO1xuIl0sIm5hbWVzIjpbImNuIiwibWVtbyIsInVzZU1lbW8iLCJnZXRCb3JkZXJDbGFzc2VzIiwiZ2V0T3V0bGluZUNsYXNzZXMiLCJnZXRQbGFjZWhvbGRlckNsYXNzZXMiLCJnZXRUZXh0Q2xhc3NlcyIsImJhc2VDbGFzc2VzIiwibm9uZSIsInJvdW5kZWQiLCJzb2xpZCIsInVuZGVybGluZSIsImdldElucHV0Qm9yZGVyQ2xhc3MiLCJib3JkZXJUeXBlIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJwbGFjZWhvbGRlckNvbG9yIiwiaGFzRm9jdXMiLCJoYXNIb3ZlciIsIklucHV0RmllbGRDb21wb25lbnQiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImxhYmVsIiwibXVsdGlsaW5lIiwicmVmIiwic3R5bGUiLCJ0ZXh0RmlsbENvbG9yIiwiaW5wdXRQcm9wcyIsImJvcmRlckNsYXNzZXMiLCJpbnB1dENsYXNzZXMiLCJpbnB1dFN0eWxlIiwiV2Via2l0VGV4dEZpbGxDb2xvciIsImNhcmV0Q29sb3IiLCJjb2xvciIsInRleHRhcmVhIiwiaW5wdXQiLCJJbnB1dEZpZWxkIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxFQUFFLFFBQU8sZUFBZTtBQUNoQyxTQUFRQyxJQUFJLEVBQUVDLE9BQU8sUUFBTyxRQUFRO0FBRXBDLFNBQ0VDLGdCQUFnQixFQUNoQkMsaUJBQWlCLEVBQ2pCQyxxQkFBcUIsRUFDckJDLGNBQWMsUUFDVCw0QkFBNEI7QUFvQm5DLE9BQU8sTUFBTUMsY0FBYztJQUN6QkMsTUFBTTtJQUNOQyxTQUFTO0lBQ1RDLE9BQU87SUFDUEMsV0FBVztBQUNiLEVBQUU7QUFFRixPQUFPLE1BQU1DLHNCQUFzQixDQUNqQ0MsWUFDQUMsYUFDQUMsV0FDQUMsbUJBQ0doQixHQUNITyxXQUFXLENBQUNNLFdBQVcsRUFDdkJQLGVBQWVTLFlBQ2ZGLGVBQWUsY0FDWFYsaUJBQWlCVyxhQUFhO1FBQUNHLFVBQVU7UUFBTUMsVUFBVTtJQUFJLEtBQzdELElBQ0pMLGVBQWUsYUFBYUEsZUFBZSxVQUN2Q1Qsa0JBQWtCVSxhQUFhO1FBQUNHLFVBQVU7UUFBTUMsVUFBVTtJQUFJLEtBQzlELElBQ0piLHNCQUFzQlcsa0JBQWtCO1FBQUNDLFVBQVU7UUFBTUMsVUFBVTtJQUFJLElBQ3ZFO0FBRUYsTUFBTUMsc0JBQXNCLENBQUMsRUFDM0JMLGNBQWMsU0FBUyxFQUN2QkQsYUFBYSxPQUFPLEVBQ3BCTyxTQUFTLEVBQ1RDLFdBQVcsS0FBSyxFQUNoQkMsS0FBSyxFQUNMQyxZQUFZLEtBQUssRUFDakJQLG1CQUFtQixTQUFTLEVBQzVCUSxHQUFHLEVBQ0hDLEtBQUssRUFDTEMsYUFBYSxFQUNiWCxZQUFZLFNBQVMsRUFDckIsR0FBR1ksWUFDYTtJQUNoQixNQUFNQyxnQkFBZ0IxQixRQUNwQixJQUFNVSxvQkFBb0JDLFlBQVlDLGFBQWFDLFdBQVdDLG1CQUM5RDtRQUFDSDtRQUFZQztRQUFhQztRQUFXQztLQUFpQjtJQUd4RCxNQUFNYSxlQUFlM0IsUUFDbkIsSUFBTUYsR0FDSm9CLFdBQ0FDLFdBQVcsOEZBQThGTyxlQUN6R0wsYUFBYSwyQkFFZjtRQUFDSDtRQUFXUTtRQUFlUDtRQUFVRTtLQUFVO0lBR2pELE1BQU1PLGFBQWE1QixRQUFRO1FBQ3pCLElBQUcsQ0FBQ3dCLGVBQWU7WUFDakIsT0FBT0Q7UUFDVDtRQUVBLE9BQU87WUFDTCxHQUFHQSxLQUFLO1lBQ1JNLHFCQUFxQkw7WUFDckJNLFlBQVlOO1lBQ1pPLE9BQU9QO1FBQ1Q7SUFDRixHQUFHO1FBQUNEO1FBQU9DO0tBQWM7SUFFekIsT0FBT0gsMEJBQ0wsS0FBQ1c7UUFDRSxHQUFHUCxVQUFVO1FBQ2RQLFdBQVdTO1FBQ1hSLFVBQVVBO1FBQ1ZHLEtBQUtBO1FBQ0xDLE9BQU9LO3VCQUdULEtBQUNLO1FBQ0UsR0FBR1IsVUFBVTtRQUNkUCxXQUFXUztRQUNYUixVQUFVQTtRQUNWRyxLQUFLQTtRQUNMQyxPQUFPSzs7QUFHYjtBQUVBLE9BQU8sTUFBTU0sMkJBQWFuQyxLQUFLa0IscUJBQXFCO0FBQ3BEaUIsV0FBV0MsV0FBVyxHQUFHIn0=
@@ -0,0 +1,58 @@
1
+ import React from 'react';
2
+ import { gothamColors } from '../../utils/colorUtils.js';
3
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
4
+ import { InputField } from './InputField.js';
5
+ const meta = {
6
+ argTypes: {
7
+ borderColor: {
8
+ control: 'select',
9
+ options: gothamColors
10
+ },
11
+ borderType: {
12
+ control: 'select',
13
+ options: [
14
+ 'solid',
15
+ 'rounded',
16
+ 'none',
17
+ 'underline'
18
+ ]
19
+ },
20
+ disabled: {
21
+ control: 'boolean'
22
+ },
23
+ multiline: {
24
+ control: 'boolean'
25
+ },
26
+ placeholder: {
27
+ control: 'text'
28
+ },
29
+ placeholderColor: {
30
+ control: 'select',
31
+ options: gothamColors
32
+ },
33
+ textColor: {
34
+ control: 'select',
35
+ options: gothamColors
36
+ }
37
+ },
38
+ component: InputField,
39
+ parameters: {
40
+ layout: 'centered'
41
+ },
42
+ title: 'Components/Form/InputField'
43
+ };
44
+ export default meta;
45
+ export const Default = {
46
+ args: {
47
+ borderColor: 'primary',
48
+ borderType: 'rounded',
49
+ disabled: false,
50
+ multiline: false,
51
+ placeholder: 'Component name',
52
+ placeholderColor: 'neutral',
53
+ textColor: 'neutral'
54
+ },
55
+ play: interactWithCanvas
56
+ };
57
+
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0lucHV0RmllbGQvSW5wdXRGaWVsZC5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge2dvdGhhbUNvbG9yc30gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JVdGlscy5qcyc7XG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtJbnB1dEZpZWxkfSBmcm9tICcuL0lucHV0RmllbGQuanMnO1xuXG5pbXBvcnQgdHlwZSB7TWV0YSwgU3RvcnlPYmp9IGZyb20gJ0BubGFicy9sZXgvc3Rvcnlib29rJztcblxuY29uc3QgbWV0YTogTWV0YTx0eXBlb2YgSW5wdXRGaWVsZD4gPSB7XG4gIGFyZ1R5cGVzOiB7XG4gICAgYm9yZGVyQ29sb3I6IHtcbiAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLFxuICAgICAgb3B0aW9uczogZ290aGFtQ29sb3JzXG4gICAgfSxcbiAgICBib3JkZXJUeXBlOiB7XG4gICAgICBjb250cm9sOiAnc2VsZWN0JyxcbiAgICAgIG9wdGlvbnM6IFsnc29saWQnLCAncm91bmRlZCcsICdub25lJywgJ3VuZGVybGluZSddXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29udHJvbDogJ2Jvb2xlYW4nXG4gICAgfSxcbiAgICBtdWx0aWxpbmU6IHtcbiAgICAgIGNvbnRyb2w6ICdib29sZWFuJ1xuICAgIH0sXG4gICAgcGxhY2Vob2xkZXI6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgcGxhY2Vob2xkZXJDb2xvcjoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBnb3RoYW1Db2xvcnNcbiAgICB9LFxuICAgIHRleHRDb2xvcjoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBnb3RoYW1Db2xvcnNcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudDogSW5wdXRGaWVsZCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2NlbnRlcmVkJ1xuICB9LFxuICB0aXRsZTogJ0NvbXBvbmVudHMvRm9ybS9JbnB1dEZpZWxkJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWV0YTtcblxudHlwZSBTdG9yeSA9IFN0b3J5T2JqPHR5cGVvZiBJbnB1dEZpZWxkPjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICBib3JkZXJUeXBlOiAncm91bmRlZCcsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIG11bHRpbGluZTogZmFsc2UsXG4gICAgcGxhY2Vob2xkZXI6ICdDb21wb25lbnQgbmFtZScsXG4gICAgcGxhY2Vob2xkZXJDb2xvcjogJ25ldXRyYWwnLFxuICAgIHRleHRDb2xvcjogJ25ldXRyYWwnXG4gIH0sXG4gIHBsYXk6IGludGVyYWN0V2l0aENhbnZhc1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImdvdGhhbUNvbG9ycyIsImludGVyYWN0V2l0aENhbnZhcyIsIklucHV0RmllbGQiLCJtZXRhIiwiYXJnVHlwZXMiLCJib3JkZXJDb2xvciIsImNvbnRyb2wiLCJvcHRpb25zIiwiYm9yZGVyVHlwZSIsImRpc2FibGVkIiwibXVsdGlsaW5lIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlckNvbG9yIiwidGV4dENvbG9yIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsInRpdGxlIiwiRGVmYXVsdCIsImFyZ3MiLCJwbGF5Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFFMUIsU0FBUUMsWUFBWSxRQUFPLDRCQUE0QjtBQUN2RCxTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FBUUMsVUFBVSxRQUFPLGtCQUFrQjtBQUkzQyxNQUFNQyxPQUFnQztJQUNwQ0MsVUFBVTtRQUNSQyxhQUFhO1lBQ1hDLFNBQVM7WUFDVEMsU0FBU1A7UUFDWDtRQUNBUSxZQUFZO1lBQ1ZGLFNBQVM7WUFDVEMsU0FBUztnQkFBQztnQkFBUztnQkFBVztnQkFBUTthQUFZO1FBQ3BEO1FBQ0FFLFVBQVU7WUFDUkgsU0FBUztRQUNYO1FBQ0FJLFdBQVc7WUFDVEosU0FBUztRQUNYO1FBQ0FLLGFBQWE7WUFDWEwsU0FBUztRQUNYO1FBQ0FNLGtCQUFrQjtZQUNoQk4sU0FBUztZQUNUQyxTQUFTUDtRQUNYO1FBQ0FhLFdBQVc7WUFDVFAsU0FBUztZQUNUQyxTQUFTUDtRQUNYO0lBQ0Y7SUFDQWMsV0FBV1o7SUFDWGEsWUFBWTtRQUNWQyxRQUFRO0lBQ1Y7SUFDQUMsT0FBTztBQUNUO0FBRUEsZUFBZWQsS0FBSztBQUlwQixPQUFPLE1BQU1lLFVBQWlCO0lBQzVCQyxNQUFNO1FBQ0pkLGFBQWE7UUFDYkcsWUFBWTtRQUNaQyxVQUFVO1FBQ1ZDLFdBQVc7UUFDWEMsYUFBYTtRQUNiQyxrQkFBa0I7UUFDbEJDLFdBQVc7SUFDYjtJQUNBTyxNQUFNbkI7QUFDUixFQUFFIn0=
@@ -0,0 +1,25 @@
1
+ import { SeparatorProps } from '../Separator/Separator.js';
2
+ import type { ElementType, HTMLAttributes, ReactNode } from 'react';
3
+ export type ItemVariant = 'default' | 'outline' | 'muted';
4
+ export type ItemSize = 'default' | 'sm';
5
+ export type ItemMediaVariant = 'default' | 'icon' | 'image';
6
+ export declare const ItemGroup: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
7
+ export declare const ItemSeparator: ({ className, ...props }: SeparatorProps) => import("react").JSX.Element;
8
+ export interface ItemProps extends HTMLAttributes<HTMLElement> {
9
+ readonly as?: ElementType;
10
+ readonly asChild?: boolean;
11
+ readonly children?: ReactNode;
12
+ readonly size?: ItemSize;
13
+ readonly variant?: ItemVariant;
14
+ }
15
+ export declare const Item: ({ as, asChild, children, className, size, variant, ...props }: ItemProps) => import("react").JSX.Element | null;
16
+ export interface ItemMediaProps extends HTMLAttributes<HTMLDivElement> {
17
+ readonly variant?: ItemMediaVariant;
18
+ }
19
+ export declare const ItemMedia: ({ className, variant, ...props }: ItemMediaProps) => import("react").JSX.Element;
20
+ export declare const ItemContent: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
21
+ export declare const ItemTitle: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
22
+ export declare const ItemDescription: ({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) => import("react").JSX.Element;
23
+ export declare const ItemActions: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
24
+ export declare const ItemHeader: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
25
+ export declare const ItemFooter: ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ import { renderWithAsChild } from '../ComponentUtils/renderWithAsChild.js';
4
+ import { Separator } from '../Separator/Separator.js';
5
+ const itemVariantClasses = {
6
+ default: 'bg-transparent',
7
+ muted: 'bg-muted/50',
8
+ outline: 'border-border'
9
+ };
10
+ const itemSizeClasses = {
11
+ default: 'gap-4 p-4',
12
+ sm: 'gap-2.5 px-4 py-3'
13
+ };
14
+ const mediaVariantClasses = {
15
+ default: 'bg-transparent',
16
+ icon: 'size-8 rounded-sm border border-border bg-muted [&_svg:not([class*=size-])]:size-4',
17
+ image: 'size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover'
18
+ };
19
+ export const ItemGroup = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
20
+ className: cn('group/item-group flex flex-col', className),
21
+ "data-slot": "item-group",
22
+ role: "list",
23
+ ...props
24
+ });
25
+ export const ItemSeparator = ({ className, ...props })=>/*#__PURE__*/ _jsx(Separator, {
26
+ className: cn('my-0', className),
27
+ "data-slot": "item-separator",
28
+ orientation: "horizontal",
29
+ ...props
30
+ });
31
+ export const Item = ({ as, asChild = false, children, className, size = 'default', variant = 'default', ...props })=>renderWithAsChild({
32
+ as: as ?? 'div',
33
+ asChild,
34
+ children,
35
+ className: cn('group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-accent/50', itemVariantClasses[variant], itemSizeClasses[size], className),
36
+ ...props
37
+ }, {
38
+ 'data-size': size,
39
+ 'data-slot': 'item',
40
+ 'data-variant': variant
41
+ });
42
+ export const ItemMedia = ({ className, variant = 'default', ...props })=>/*#__PURE__*/ _jsx("div", {
43
+ className: cn('flex shrink-0 items-center justify-center gap-2 self-start [&_svg]:pointer-events-none', mediaVariantClasses[variant], className),
44
+ "data-slot": "item-media",
45
+ "data-variant": variant,
46
+ ...props
47
+ });
48
+ export const ItemContent = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
49
+ className: cn('flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none', className),
50
+ "data-slot": "item-content",
51
+ ...props
52
+ });
53
+ export const ItemTitle = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
54
+ className: cn('flex w-fit items-center gap-2 text-sm leading-snug font-medium', className),
55
+ "data-slot": "item-title",
56
+ ...props
57
+ });
58
+ export const ItemDescription = ({ className, ...props })=>/*#__PURE__*/ _jsx("p", {
59
+ className: cn('line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary', className),
60
+ "data-slot": "item-description",
61
+ ...props
62
+ });
63
+ export const ItemActions = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
64
+ className: cn('flex items-center gap-2', className),
65
+ "data-slot": "item-actions",
66
+ ...props
67
+ });
68
+ export const ItemHeader = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
69
+ className: cn('flex basis-full items-center justify-between gap-2', className),
70
+ "data-slot": "item-header",
71
+ ...props
72
+ });
73
+ export const ItemFooter = ({ className, ...props })=>/*#__PURE__*/ _jsx("div", {
74
+ className: cn('flex basis-full items-center justify-between gap-2', className),
75
+ "data-slot": "item-footer",
76
+ ...props
77
+ });
78
+
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL0l0ZW0vSXRlbS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjbn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHtyZW5kZXJXaXRoQXNDaGlsZH0gZnJvbSAnLi4vQ29tcG9uZW50VXRpbHMvcmVuZGVyV2l0aEFzQ2hpbGQuanMnO1xuaW1wb3J0IHtTZXBhcmF0b3IsIFNlcGFyYXRvclByb3BzfSBmcm9tICcuLi9TZXBhcmF0b3IvU2VwYXJhdG9yLmpzJztcblxuaW1wb3J0IHR5cGUge0VsZW1lbnRUeXBlLCBIVE1MQXR0cmlidXRlcywgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB0eXBlIEl0ZW1WYXJpYW50ID0gJ2RlZmF1bHQnIHwgJ291dGxpbmUnIHwgJ211dGVkJztcbmV4cG9ydCB0eXBlIEl0ZW1TaXplID0gJ2RlZmF1bHQnIHwgJ3NtJztcbmV4cG9ydCB0eXBlIEl0ZW1NZWRpYVZhcmlhbnQgPSAnZGVmYXVsdCcgfCAnaWNvbicgfCAnaW1hZ2UnO1xuXG5jb25zdCBpdGVtVmFyaWFudENsYXNzZXM6IFJlY29yZDxJdGVtVmFyaWFudCwgc3RyaW5nPiA9IHtcbiAgZGVmYXVsdDogJ2JnLXRyYW5zcGFyZW50JyxcbiAgbXV0ZWQ6ICdiZy1tdXRlZC81MCcsXG4gIG91dGxpbmU6ICdib3JkZXItYm9yZGVyJ1xufTtcblxuY29uc3QgaXRlbVNpemVDbGFzc2VzOiBSZWNvcmQ8SXRlbVNpemUsIHN0cmluZz4gPSB7XG4gIGRlZmF1bHQ6ICdnYXAtNCBwLTQnLFxuICBzbTogJ2dhcC0yLjUgcHgtNCBweS0zJ1xufTtcblxuY29uc3QgbWVkaWFWYXJpYW50Q2xhc3NlczogUmVjb3JkPEl0ZW1NZWRpYVZhcmlhbnQsIHN0cmluZz4gPSB7XG4gIGRlZmF1bHQ6ICdiZy10cmFuc3BhcmVudCcsXG4gIGljb246ICdzaXplLTggcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1tdXRlZCBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS00JyxcbiAgaW1hZ2U6ICdzaXplLTEwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXNtIFsmX2ltZ106c2l6ZS1mdWxsIFsmX2ltZ106b2JqZWN0LWNvdmVyJ1xufTtcblxuZXhwb3J0IGNvbnN0IEl0ZW1Hcm91cCA9ICh7Y2xhc3NOYW1lLCAuLi5wcm9wc306IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbignZ3JvdXAvaXRlbS1ncm91cCBmbGV4IGZsZXgtY29sJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJpdGVtLWdyb3VwXCJcbiAgICByb2xlPVwibGlzdFwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IEl0ZW1TZXBhcmF0b3IgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBTZXBhcmF0b3JQcm9wcykgPT4gKFxuICA8U2VwYXJhdG9yXG4gICAgY2xhc3NOYW1lPXtjbignbXktMCcsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiaXRlbS1zZXBhcmF0b3JcIlxuICAgIG9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtUHJvcHMgZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD4ge1xuICByZWFkb25seSBhcz86IEVsZW1lbnRUeXBlO1xuICByZWFkb25seSBhc0NoaWxkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IHNpemU/OiBJdGVtU2l6ZTtcbiAgcmVhZG9ubHkgdmFyaWFudD86IEl0ZW1WYXJpYW50O1xufVxuXG5leHBvcnQgY29uc3QgSXRlbSA9ICh7XG4gIGFzLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIHNpemUgPSAnZGVmYXVsdCcsXG4gIHZhcmlhbnQgPSAnZGVmYXVsdCcsXG4gIC4uLnByb3BzXG59OiBJdGVtUHJvcHMpID0+IHJlbmRlcldpdGhBc0NoaWxkKFxuICB7XG4gICAgYXM6IGFzID8/ICdkaXYnLFxuICAgIGFzQ2hpbGQsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICdncm91cC9pdGVtIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xMDAgb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy1bM3B4XSBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBbYV06dHJhbnNpdGlvbi1jb2xvcnMgW2FdOmhvdmVyOmJnLWFjY2VudC81MCcsXG4gICAgICBpdGVtVmFyaWFudENsYXNzZXNbdmFyaWFudF0sXG4gICAgICBpdGVtU2l6ZUNsYXNzZXNbc2l6ZV0sXG4gICAgICBjbGFzc05hbWVcbiAgICApLFxuICAgIC4uLnByb3BzXG4gIH0sXG4gIHtcbiAgICAnZGF0YS1zaXplJzogc2l6ZSxcbiAgICAnZGF0YS1zbG90JzogJ2l0ZW0nLFxuICAgICdkYXRhLXZhcmlhbnQnOiB2YXJpYW50XG4gIH1cbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbU1lZGlhUHJvcHMgZXh0ZW5kcyBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4ge1xuICByZWFkb25seSB2YXJpYW50PzogSXRlbU1lZGlhVmFyaWFudDtcbn1cblxuZXhwb3J0IGNvbnN0IEl0ZW1NZWRpYSA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgdmFyaWFudCA9ICdkZWZhdWx0JyxcbiAgLi4ucHJvcHNcbn06IEl0ZW1NZWRpYVByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgJ2ZsZXggc2hyaW5rLTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHNlbGYtc3RhcnQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICAgIG1lZGlhVmFyaWFudENsYXNzZXNbdmFyaWFudF0sXG4gICAgICBjbGFzc05hbWVcbiAgICApfVxuICAgIGRhdGEtc2xvdD1cIml0ZW0tbWVkaWFcIlxuICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgSXRlbUNvbnRlbnQgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggZmxleC0xIGZsZXgtY29sIGdhcC0xIFsmK1tkYXRhLXNsb3Q9aXRlbS1jb250ZW50XV06ZmxleC1ub25lJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJpdGVtLWNvbnRlbnRcIlxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbmV4cG9ydCBjb25zdCBJdGVtVGl0bGUgPSAoe2NsYXNzTmFtZSwgLi4ucHJvcHN9OiBIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17Y24oJ2ZsZXggdy1maXQgaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc20gbGVhZGluZy1zbnVnIGZvbnQtbWVkaXVtJywgY2xhc3NOYW1lKX1cbiAgICBkYXRhLXNsb3Q9XCJpdGVtLXRpdGxlXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgSXRlbURlc2NyaXB0aW9uID0gKHtjbGFzc05hbWUsIC4uLnByb3BzfTogSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+KSA9PiAoXG4gIDxwXG4gICAgY2xhc3NOYW1lPXtjbignbGluZS1jbGFtcC0yIHRleHQtc20gbGVhZGluZy1ub3JtYWwgZm9udC1ub3JtYWwgdGV4dC1iYWxhbmNlIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBbJj5hXTp1bmRlcmxpbmUgWyY+YV06dW5kZXJsaW5lLW9mZnNldC00IFsmPmE6aG92ZXJdOnRleHQtcHJpbWFyeScsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiaXRlbS1kZXNjcmlwdGlvblwiXG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGNvbnN0IEl0ZW1BY3Rpb25zID0gKHtjbGFzc05hbWUsIC4uLnByb3BzfTogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2NuKCdmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMicsIGNsYXNzTmFtZSl9XG4gICAgZGF0YS1zbG90PVwiaXRlbS1hY3Rpb25zXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgSXRlbUhlYWRlciA9ICh7Y2xhc3NOYW1lLCAuLi5wcm9wc306IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbignZmxleCBiYXNpcy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTInLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cIml0ZW0taGVhZGVyXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgSXRlbUZvb3RlciA9ICh7Y2xhc3NOYW1lLCAuLi5wcm9wc306IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PikgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtjbignZmxleCBiYXNpcy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTInLCBjbGFzc05hbWUpfVxuICAgIGRhdGEtc2xvdD1cIml0ZW0tZm9vdGVyXCJcbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuIl0sIm5hbWVzIjpbImNuIiwicmVuZGVyV2l0aEFzQ2hpbGQiLCJTZXBhcmF0b3IiLCJpdGVtVmFyaWFudENsYXNzZXMiLCJkZWZhdWx0IiwibXV0ZWQiLCJvdXRsaW5lIiwiaXRlbVNpemVDbGFzc2VzIiwic20iLCJtZWRpYVZhcmlhbnRDbGFzc2VzIiwiaWNvbiIsImltYWdlIiwiSXRlbUdyb3VwIiwiY2xhc3NOYW1lIiwicHJvcHMiLCJkaXYiLCJkYXRhLXNsb3QiLCJyb2xlIiwiSXRlbVNlcGFyYXRvciIsIm9yaWVudGF0aW9uIiwiSXRlbSIsImFzIiwiYXNDaGlsZCIsImNoaWxkcmVuIiwic2l6ZSIsInZhcmlhbnQiLCJJdGVtTWVkaWEiLCJkYXRhLXZhcmlhbnQiLCJJdGVtQ29udGVudCIsIkl0ZW1UaXRsZSIsIkl0ZW1EZXNjcmlwdGlvbiIsInAiLCJJdGVtQWN0aW9ucyIsIkl0ZW1IZWFkZXIiLCJJdGVtRm9vdGVyIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFFaEMsU0FBUUMsaUJBQWlCLFFBQU8seUNBQXlDO0FBQ3pFLFNBQVFDLFNBQVMsUUFBdUIsNEJBQTRCO0FBUXBFLE1BQU1DLHFCQUFrRDtJQUN0REMsU0FBUztJQUNUQyxPQUFPO0lBQ1BDLFNBQVM7QUFDWDtBQUVBLE1BQU1DLGtCQUE0QztJQUNoREgsU0FBUztJQUNUSSxJQUFJO0FBQ047QUFFQSxNQUFNQyxzQkFBd0Q7SUFDNURMLFNBQVM7SUFDVE0sTUFBTTtJQUNOQyxPQUFPO0FBQ1Q7QUFFQSxPQUFPLE1BQU1DLFlBQVksQ0FBQyxFQUFDQyxTQUFTLEVBQUUsR0FBR0MsT0FBc0MsaUJBQzdFLEtBQUNDO1FBQ0NGLFdBQVdiLEdBQUcsa0NBQWtDYTtRQUNoREcsYUFBVTtRQUNWQyxNQUFLO1FBQ0osR0FBR0gsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNSSxnQkFBZ0IsQ0FBQyxFQUFDTCxTQUFTLEVBQUUsR0FBR0MsT0FBc0IsaUJBQ2pFLEtBQUNaO1FBQ0NXLFdBQVdiLEdBQUcsUUFBUWE7UUFDdEJHLGFBQVU7UUFDVkcsYUFBWTtRQUNYLEdBQUdMLEtBQUs7T0FFWDtBQVVGLE9BQU8sTUFBTU0sT0FBTyxDQUFDLEVBQ25CQyxFQUFFLEVBQ0ZDLFVBQVUsS0FBSyxFQUNmQyxRQUFRLEVBQ1JWLFNBQVMsRUFDVFcsT0FBTyxTQUFTLEVBQ2hCQyxVQUFVLFNBQVMsRUFDbkIsR0FBR1gsT0FDTyxHQUFLYixrQkFDZjtRQUNFb0IsSUFBSUEsTUFBTTtRQUNWQztRQUNBQztRQUNBVixXQUFXYixHQUNULG9PQUNBRyxrQkFBa0IsQ0FBQ3NCLFFBQVEsRUFDM0JsQixlQUFlLENBQUNpQixLQUFLLEVBQ3JCWDtRQUVGLEdBQUdDLEtBQUs7SUFDVixHQUNBO1FBQ0UsYUFBYVU7UUFDYixhQUFhO1FBQ2IsZ0JBQWdCQztJQUNsQixHQUNBO0FBTUYsT0FBTyxNQUFNQyxZQUFZLENBQUMsRUFDeEJiLFNBQVMsRUFDVFksVUFBVSxTQUFTLEVBQ25CLEdBQUdYLE9BQ1ksaUJBQ2YsS0FBQ0M7UUFDQ0YsV0FBV2IsR0FDVCwwRkFDQVMsbUJBQW1CLENBQUNnQixRQUFRLEVBQzVCWjtRQUVGRyxhQUFVO1FBQ1ZXLGdCQUFjRjtRQUNiLEdBQUdYLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTWMsY0FBYyxDQUFDLEVBQUNmLFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDL0UsS0FBQ0M7UUFDQ0YsV0FBV2IsR0FBRyxxRUFBcUVhO1FBQ25GRyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNZSxZQUFZLENBQUMsRUFBQ2hCLFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDN0UsS0FBQ0M7UUFDQ0YsV0FBV2IsR0FBRyxrRUFBa0VhO1FBQ2hGRyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNZ0Isa0JBQWtCLENBQUMsRUFBQ2pCLFNBQVMsRUFBRSxHQUFHQyxPQUE0QyxpQkFDekYsS0FBQ2lCO1FBQ0NsQixXQUFXYixHQUFHLHdKQUF3SmE7UUFDdEtHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVg7QUFFRixPQUFPLE1BQU1rQixjQUFjLENBQUMsRUFBQ25CLFNBQVMsRUFBRSxHQUFHQyxPQUFzQyxpQkFDL0UsS0FBQ0M7UUFDQ0YsV0FBV2IsR0FBRywyQkFBMkJhO1FBQ3pDRyxhQUFVO1FBQ1QsR0FBR0YsS0FBSztPQUVYO0FBRUYsT0FBTyxNQUFNbUIsYUFBYSxDQUFDLEVBQUNwQixTQUFTLEVBQUUsR0FBR0MsT0FBc0MsaUJBQzlFLEtBQUNDO1FBQ0NGLFdBQVdiLEdBQUcsc0RBQXNEYTtRQUNwRUcsYUFBVTtRQUNULEdBQUdGLEtBQUs7T0FFWDtBQUVGLE9BQU8sTUFBTW9CLGFBQWEsQ0FBQyxFQUFDckIsU0FBUyxFQUFFLEdBQUdDLE9BQXNDLGlCQUM5RSxLQUFDQztRQUNDRixXQUFXYixHQUFHLHNEQUFzRGE7UUFDcEVHLGFBQVU7UUFDVCxHQUFHRixLQUFLO09BRVgifQ==