@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,38 @@
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
+ * Create a Timer
6
+ * @param {Number} delay
7
+ * @param {Function} callback
8
+ * @constructor
9
+ */ export class GothamTimer {
10
+ timerId;
11
+ start = 0;
12
+ remaining = 0;
13
+ delay = 0;
14
+ callback;
15
+ constructor(delay, callback){
16
+ this.callback = callback;
17
+ this.delay = delay;
18
+ this.remaining = delay;
19
+ // Methods
20
+ this.getTimeRemaining = this.getTimeRemaining.bind(this);
21
+ this.pause = this.pause.bind(this);
22
+ this.resume = this.resume.bind(this);
23
+ }
24
+ pause() {
25
+ clearTimeout(this.timerId);
26
+ this.remaining -= +new Date() - this.start;
27
+ }
28
+ resume() {
29
+ this.start = +new Date();
30
+ clearTimeout(this.timerId);
31
+ this.timerId = setTimeout(this.callback, this.remaining);
32
+ }
33
+ getTimeRemaining() {
34
+ return this.remaining;
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy90aW1lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuLyoqXG4gKiBDcmVhdGUgYSBUaW1lclxuICogQHBhcmFtIHtOdW1iZXJ9IGRlbGF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBjbGFzcyBHb3RoYW1UaW1lciB7XG4gIHRpbWVySWQ6IHVua25vd247XG4gIHN0YXJ0OiBudW1iZXIgPSAwO1xuICByZW1haW5pbmc6IG51bWJlciA9IDA7XG4gIGRlbGF5OiBudW1iZXIgPSAwO1xuICBjYWxsYmFjazogdW5rbm93bjtcblxuICBjb25zdHJ1Y3RvcihkZWxheTogbnVtYmVyLCBjYWxsYmFjazogdW5rbm93bikge1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgdGhpcy5yZW1haW5pbmcgPSBkZWxheTtcblxuICAgIC8vIE1ldGhvZHNcbiAgICB0aGlzLmdldFRpbWVSZW1haW5pbmcgPSB0aGlzLmdldFRpbWVSZW1haW5pbmcuYmluZCh0aGlzKTtcbiAgICB0aGlzLnBhdXNlID0gdGhpcy5wYXVzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVzdW1lID0gdGhpcy5yZXN1bWUuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQgYXMgbnVtYmVyKTtcbiAgICB0aGlzLnJlbWFpbmluZyAtPSAoKyhuZXcgRGF0ZSgpKSAtIHRoaXMuc3RhcnQpO1xuICB9XG5cbiAgcmVzdW1lKCkge1xuICAgIHRoaXMuc3RhcnQgPSArKG5ldyBEYXRlKCkpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQgYXMgbnVtYmVyKTtcbiAgICB0aGlzLnRpbWVySWQgPSBzZXRUaW1lb3V0KHRoaXMuY2FsbGJhY2sgYXMgKCkgPT4gdm9pZCwgdGhpcy5yZW1haW5pbmcpO1xuICB9XG5cbiAgZ2V0VGltZVJlbWFpbmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1haW5pbmc7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJHb3RoYW1UaW1lciIsInRpbWVySWQiLCJzdGFydCIsInJlbWFpbmluZyIsImRlbGF5IiwiY2FsbGJhY2siLCJnZXRUaW1lUmVtYWluaW5nIiwiYmluZCIsInBhdXNlIiwicmVzdW1lIiwiY2xlYXJUaW1lb3V0IiwiRGF0ZSIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNEOzs7OztDQUtDLEdBQ0QsT0FBTyxNQUFNQTtJQUNYQyxRQUFpQjtJQUNqQkMsUUFBZ0IsRUFBRTtJQUNsQkMsWUFBb0IsRUFBRTtJQUN0QkMsUUFBZ0IsRUFBRTtJQUNsQkMsU0FBa0I7SUFFbEIsWUFBWUQsS0FBYSxFQUFFQyxRQUFpQixDQUFFO1FBQzVDLElBQUksQ0FBQ0EsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNELFNBQVMsR0FBR0M7UUFFakIsVUFBVTtRQUNWLElBQUksQ0FBQ0UsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFDdkQsSUFBSSxDQUFDQyxLQUFLLEdBQUcsSUFBSSxDQUFDQSxLQUFLLENBQUNELElBQUksQ0FBQyxJQUFJO1FBQ2pDLElBQUksQ0FBQ0UsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFDRixJQUFJLENBQUMsSUFBSTtJQUNyQztJQUVBQyxRQUFRO1FBQ05FLGFBQWEsSUFBSSxDQUFDVCxPQUFPO1FBQ3pCLElBQUksQ0FBQ0UsU0FBUyxJQUFLLENBQUUsSUFBSVEsU0FBVSxJQUFJLENBQUNULEtBQUs7SUFDL0M7SUFFQU8sU0FBUztRQUNQLElBQUksQ0FBQ1AsS0FBSyxHQUFHLENBQUUsSUFBSVM7UUFDbkJELGFBQWEsSUFBSSxDQUFDVCxPQUFPO1FBQ3pCLElBQUksQ0FBQ0EsT0FBTyxHQUFHVyxXQUFXLElBQUksQ0FBQ1AsUUFBUSxFQUFnQixJQUFJLENBQUNGLFNBQVM7SUFDdkU7SUFFQUcsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDSCxTQUFTO0lBQ3ZCO0FBQ0YifQ==
@@ -0,0 +1,6 @@
1
+ export declare const useBreakpoint: () => {
2
+ at: (size: string) => boolean;
3
+ down: (size: string) => boolean;
4
+ up: (size: string) => boolean;
5
+ value: () => string;
6
+ };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { throttle } from '@nlabs/utils';
5
+ import { useEffect, useMemo, useState } from 'react';
6
+ const getCurrentBreakpoint = (setBreakpoint)=>()=>{
7
+ const breakpoints = {
8
+ values: {
9
+ lg: 1200,
10
+ md: 900,
11
+ sm: 600,
12
+ xl: 1536
13
+ }
14
+ };
15
+ const { values: { lg, md, sm, xl } } = breakpoints;
16
+ const { innerWidth } = window;
17
+ if (innerWidth < sm) {
18
+ setBreakpoint(0);
19
+ } else if (innerWidth < md) {
20
+ setBreakpoint(1);
21
+ } else if (innerWidth < lg) {
22
+ setBreakpoint(2);
23
+ } else if (innerWidth < xl) {
24
+ setBreakpoint(3);
25
+ } else {
26
+ setBreakpoint(4);
27
+ }
28
+ };
29
+ const breakpointValues = [
30
+ 'xs',
31
+ 'sm',
32
+ 'md',
33
+ 'lg',
34
+ 'xl'
35
+ ];
36
+ export const useBreakpoint = ()=>{
37
+ const [breakpoint, setBreakpoint] = useState(0);
38
+ useEffect(()=>{
39
+ const onResizeBreakpoint = getCurrentBreakpoint(setBreakpoint);
40
+ const onResize = throttle(onResizeBreakpoint, 100);
41
+ // Inital sizing
42
+ onResizeBreakpoint();
43
+ window.addEventListener('resize', onResize);
44
+ return ()=>window.removeEventListener('resize', onResize);
45
+ }, []);
46
+ return useMemo(()=>({
47
+ at: (size)=>size === breakpointValues[breakpoint],
48
+ down: (size)=>breakpointValues.indexOf(size) >= breakpoint,
49
+ up: (size)=>breakpointValues.indexOf(size) <= breakpoint,
50
+ value: ()=>breakpointValues[breakpoint]
51
+ }), [
52
+ breakpoint
53
+ ]);
54
+ };
55
+
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy91c2VCcmVha3BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3Rocm90dGxlfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGdldEN1cnJlbnRCcmVha3BvaW50ID0gKHNldEJyZWFrcG9pbnQpID0+ICgpOiB2b2lkID0+IHtcbiAgY29uc3QgYnJlYWtwb2ludHMgPSB7XG4gICAgdmFsdWVzOiB7XG4gICAgICBsZzogMTIwMCxcbiAgICAgIG1kOiA5MDAsXG4gICAgICBzbTogNjAwLFxuICAgICAgeGw6IDE1MzZcbiAgICB9XG4gIH07XG4gIGNvbnN0IHt2YWx1ZXM6IHtsZywgbWQsIHNtLCB4bH19ID0gYnJlYWtwb2ludHM7XG4gIGNvbnN0IHtpbm5lcldpZHRofSA9IHdpbmRvdztcblxuICBpZihpbm5lcldpZHRoIDwgc20pIHtcbiAgICBzZXRCcmVha3BvaW50KDApO1xuICB9IGVsc2UgaWYoaW5uZXJXaWR0aCA8IG1kKSB7XG4gICAgc2V0QnJlYWtwb2ludCgxKTtcbiAgfSBlbHNlIGlmKGlubmVyV2lkdGggPCBsZykge1xuICAgIHNldEJyZWFrcG9pbnQoMik7XG4gIH0gZWxzZSBpZihpbm5lcldpZHRoIDwgeGwpIHtcbiAgICBzZXRCcmVha3BvaW50KDMpO1xuICB9IGVsc2Uge1xuICAgIHNldEJyZWFrcG9pbnQoNCk7XG4gIH1cbn07XG5cbmNvbnN0IGJyZWFrcG9pbnRWYWx1ZXMgPSBbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJ107XG5cbmV4cG9ydCBjb25zdCB1c2VCcmVha3BvaW50ID0gKCkgPT4ge1xuICBjb25zdCBbYnJlYWtwb2ludCwgc2V0QnJlYWtwb2ludF0gPSB1c2VTdGF0ZSgwKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uUmVzaXplQnJlYWtwb2ludCA9IGdldEN1cnJlbnRCcmVha3BvaW50KHNldEJyZWFrcG9pbnQpO1xuICAgIGNvbnN0IG9uUmVzaXplID0gdGhyb3R0bGUob25SZXNpemVCcmVha3BvaW50LCAxMDApO1xuXG4gICAgLy8gSW5pdGFsIHNpemluZ1xuICAgIG9uUmVzaXplQnJlYWtwb2ludCgpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHtcbiAgICBhdDogKHNpemU6IHN0cmluZyk6IGJvb2xlYW4gPT4gc2l6ZSA9PT0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XSxcbiAgICBkb3duOiAoc2l6ZTogc3RyaW5nKTogYm9vbGVhbiA9PiBicmVha3BvaW50VmFsdWVzLmluZGV4T2Yoc2l6ZSkgPj0gYnJlYWtwb2ludCxcbiAgICB1cDogKHNpemU6IHN0cmluZyk6IGJvb2xlYW4gPT4gYnJlYWtwb2ludFZhbHVlcy5pbmRleE9mKHNpemUpIDw9IGJyZWFrcG9pbnQsXG4gICAgdmFsdWU6ICgpOiBzdHJpbmcgPT4gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XVxuICB9KSwgW2JyZWFrcG9pbnRdKTtcbn07XG4iXSwibmFtZXMiOlsidGhyb3R0bGUiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDdXJyZW50QnJlYWtwb2ludCIsInNldEJyZWFrcG9pbnQiLCJicmVha3BvaW50cyIsInZhbHVlcyIsImxnIiwibWQiLCJzbSIsInhsIiwiaW5uZXJXaWR0aCIsIndpbmRvdyIsImJyZWFrcG9pbnRWYWx1ZXMiLCJ1c2VCcmVha3BvaW50IiwiYnJlYWtwb2ludCIsIm9uUmVzaXplQnJlYWtwb2ludCIsIm9uUmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhdCIsInNpemUiLCJkb3duIiwiaW5kZXhPZiIsInVwIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFFBQVEsUUFBTyxlQUFlO0FBQ3RDLFNBQVFDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQU8sUUFBUTtBQUVuRCxNQUFNQyx1QkFBdUIsQ0FBQ0MsZ0JBQWtCO1FBQzlDLE1BQU1DLGNBQWM7WUFDbEJDLFFBQVE7Z0JBQ05DLElBQUk7Z0JBQ0pDLElBQUk7Z0JBQ0pDLElBQUk7Z0JBQ0pDLElBQUk7WUFDTjtRQUNGO1FBQ0EsTUFBTSxFQUFDSixRQUFRLEVBQUNDLEVBQUUsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBQyxFQUFDLEdBQUdMO1FBQ25DLE1BQU0sRUFBQ00sVUFBVSxFQUFDLEdBQUdDO1FBRXJCLElBQUdELGFBQWFGLElBQUk7WUFDbEJMLGNBQWM7UUFDaEIsT0FBTyxJQUFHTyxhQUFhSCxJQUFJO1lBQ3pCSixjQUFjO1FBQ2hCLE9BQU8sSUFBR08sYUFBYUosSUFBSTtZQUN6QkgsY0FBYztRQUNoQixPQUFPLElBQUdPLGFBQWFELElBQUk7WUFDekJOLGNBQWM7UUFDaEIsT0FBTztZQUNMQSxjQUFjO1FBQ2hCO0lBQ0Y7QUFFQSxNQUFNUyxtQkFBbUI7SUFBQztJQUFNO0lBQU07SUFBTTtJQUFNO0NBQUs7QUFFdkQsT0FBTyxNQUFNQyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDQyxZQUFZWCxjQUFjLEdBQUdGLFNBQVM7SUFFN0NGLFVBQVU7UUFDUixNQUFNZ0IscUJBQXFCYixxQkFBcUJDO1FBQ2hELE1BQU1hLFdBQVdsQixTQUFTaUIsb0JBQW9CO1FBRTlDLGdCQUFnQjtRQUNoQkE7UUFFQUosT0FBT00sZ0JBQWdCLENBQUMsVUFBVUQ7UUFFbEMsT0FBTyxJQUFNTCxPQUFPTyxtQkFBbUIsQ0FBQyxVQUFVRjtJQUNwRCxHQUFHLEVBQUU7SUFFTCxPQUFPaEIsUUFBUSxJQUFPLENBQUE7WUFDcEJtQixJQUFJLENBQUNDLE9BQTBCQSxTQUFTUixnQkFBZ0IsQ0FBQ0UsV0FBVztZQUNwRU8sTUFBTSxDQUFDRCxPQUEwQlIsaUJBQWlCVSxPQUFPLENBQUNGLFNBQVNOO1lBQ25FUyxJQUFJLENBQUNILE9BQTBCUixpQkFBaUJVLE9BQU8sQ0FBQ0YsU0FBU047WUFDakVVLE9BQU8sSUFBY1osZ0JBQWdCLENBQUNFLFdBQVc7UUFDbkQsQ0FBQSxHQUFJO1FBQUNBO0tBQVc7QUFDbEIsRUFBRSJ9
@@ -0,0 +1,34 @@
1
+ import type { AwsRum } from './awsRum.js';
2
+ export type ViewPerformanceOutcome = 'cancelled' | 'failure' | 'success' | 'timeout';
3
+ export type ViewPerformanceStatus = 'failure' | 'pending' | 'success';
4
+ export interface ViewPerformanceMeasurement {
5
+ readonly durationMs: number;
6
+ readonly outcome: ViewPerformanceOutcome;
7
+ readonly route?: string;
8
+ readonly title?: string;
9
+ readonly viewId: string;
10
+ }
11
+ export interface StartViewOptions {
12
+ readonly now?: () => number;
13
+ readonly onComplete: (measurement: ViewPerformanceMeasurement) => void;
14
+ readonly route?: string;
15
+ readonly timeoutMs?: number;
16
+ readonly title?: string;
17
+ readonly viewId: string;
18
+ }
19
+ export interface ViewPerformanceHandle {
20
+ readonly cancel: () => void;
21
+ readonly fail: () => void;
22
+ readonly succeed: () => void;
23
+ readonly timeout: () => void;
24
+ }
25
+ export interface UseViewPerformanceOptions {
26
+ readonly route?: string;
27
+ readonly status: ViewPerformanceStatus;
28
+ readonly timeoutMs?: number;
29
+ readonly title?: string;
30
+ readonly viewId: string;
31
+ }
32
+ export declare const startView: ({ now, onComplete, route, timeoutMs, title, viewId }: StartViewOptions) => ViewPerformanceHandle;
33
+ export declare const reportViewPerformance: (awsRum: AwsRum | undefined, measurement: ViewPerformanceMeasurement) => void;
34
+ export declare const useViewPerformance: ({ route, status, timeoutMs, title, viewId }: UseViewPerformanceOptions) => void;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Copyright (c) 2026-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { useContext, useEffect, useRef } from 'react';
5
+ import { GothamContext } from './GothamContext.js';
6
+ const DEFAULT_TIMEOUT_MS = 30_000;
7
+ const normalizeDuration = (duration)=>Math.max(0, Math.round(duration));
8
+ export const startView = ({ now = ()=>globalThis.performance?.now?.() ?? Date.now(), onComplete, route, timeoutMs = DEFAULT_TIMEOUT_MS, title, viewId })=>{
9
+ const startedAt = now();
10
+ let complete = false;
11
+ let timer;
12
+ const finish = (outcome)=>{
13
+ if (complete) {
14
+ return;
15
+ }
16
+ complete = true;
17
+ if (timer) {
18
+ clearTimeout(timer);
19
+ timer = undefined;
20
+ }
21
+ onComplete({
22
+ durationMs: normalizeDuration(now() - startedAt),
23
+ outcome,
24
+ ...route ? {
25
+ route
26
+ } : {},
27
+ ...title ? {
28
+ title
29
+ } : {},
30
+ viewId
31
+ });
32
+ };
33
+ if (timeoutMs > 0) {
34
+ timer = setTimeout(()=>finish('timeout'), timeoutMs);
35
+ }
36
+ return {
37
+ cancel: ()=>finish('cancelled'),
38
+ fail: ()=>finish('failure'),
39
+ succeed: ()=>finish('success'),
40
+ timeout: ()=>finish('timeout')
41
+ };
42
+ };
43
+ export const reportViewPerformance = (awsRum, measurement)=>{
44
+ awsRum?.track({
45
+ name: 'view_performance',
46
+ ...measurement.route ? {
47
+ path: measurement.route
48
+ } : {},
49
+ properties: {
50
+ durationMs: measurement.durationMs,
51
+ outcome: measurement.outcome,
52
+ ...measurement.title ? {
53
+ viewTitle: measurement.title
54
+ } : {},
55
+ viewId: measurement.viewId
56
+ },
57
+ type: 'view_performance'
58
+ });
59
+ };
60
+ export const useViewPerformance = ({ route, status, timeoutMs, title, viewId })=>{
61
+ const { awsRum } = useContext(GothamContext);
62
+ const handleRef = useRef(undefined);
63
+ const statusRef = useRef(status);
64
+ statusRef.current = status;
65
+ useEffect(()=>{
66
+ const handle = startView({
67
+ onComplete: (measurement)=>reportViewPerformance(awsRum, measurement),
68
+ route,
69
+ timeoutMs,
70
+ title,
71
+ viewId
72
+ });
73
+ handleRef.current = handle;
74
+ if (statusRef.current === 'failure') {
75
+ handle.fail();
76
+ } else if (statusRef.current === 'success') {
77
+ handle.succeed();
78
+ }
79
+ return ()=>{
80
+ handle.cancel();
81
+ if (handleRef.current === handle) {
82
+ handleRef.current = undefined;
83
+ }
84
+ };
85
+ }, [
86
+ awsRum,
87
+ route,
88
+ timeoutMs,
89
+ title,
90
+ viewId
91
+ ]);
92
+ useEffect(()=>{
93
+ if (status === 'failure') {
94
+ handleRef.current?.fail();
95
+ } else if (status === 'success') {
96
+ handleRef.current?.succeed();
97
+ }
98
+ }, [
99
+ status
100
+ ]);
101
+ };
102
+
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy92aWV3UGVyZm9ybWFuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtHb3RoYW1Db250ZXh0fSBmcm9tICcuL0dvdGhhbUNvbnRleHQuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXdzUnVtfSBmcm9tICcuL2F3c1J1bS5qcyc7XG5cbmV4cG9ydCB0eXBlIFZpZXdQZXJmb3JtYW5jZU91dGNvbWUgPSAnY2FuY2VsbGVkJyB8ICdmYWlsdXJlJyB8ICdzdWNjZXNzJyB8ICd0aW1lb3V0JztcbmV4cG9ydCB0eXBlIFZpZXdQZXJmb3JtYW5jZVN0YXR1cyA9ICdmYWlsdXJlJyB8ICdwZW5kaW5nJyB8ICdzdWNjZXNzJztcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3UGVyZm9ybWFuY2VNZWFzdXJlbWVudCB7XG4gIHJlYWRvbmx5IGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgb3V0Y29tZTogVmlld1BlcmZvcm1hbmNlT3V0Y29tZTtcbiAgcmVhZG9ubHkgcm91dGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuICByZWFkb25seSB2aWV3SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydFZpZXdPcHRpb25zIHtcbiAgcmVhZG9ubHkgbm93PzogKCkgPT4gbnVtYmVyO1xuICByZWFkb25seSBvbkNvbXBsZXRlOiAobWVhc3VyZW1lbnQ6IFZpZXdQZXJmb3JtYW5jZU1lYXN1cmVtZW50KSA9PiB2b2lkO1xuICByZWFkb25seSByb3V0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdGltZW91dE1zPzogbnVtYmVyO1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmlld0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1BlcmZvcm1hbmNlSGFuZGxlIHtcbiAgcmVhZG9ubHkgY2FuY2VsOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSBmYWlsOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSBzdWNjZWVkOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSB0aW1lb3V0OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVZpZXdQZXJmb3JtYW5jZU9wdGlvbnMge1xuICByZWFkb25seSByb3V0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdHVzOiBWaWV3UGVyZm9ybWFuY2VTdGF0dXM7XG4gIHJlYWRvbmx5IHRpbWVvdXRNcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZpZXdJZDogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX1RJTUVPVVRfTVMgPSAzMF8wMDA7XG5jb25zdCBub3JtYWxpemVEdXJhdGlvbiA9IChkdXJhdGlvbjogbnVtYmVyKTogbnVtYmVyID0+IE1hdGgubWF4KDAsIE1hdGgucm91bmQoZHVyYXRpb24pKTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0VmlldyA9ICh7XG4gIG5vdyA9ICgpID0+IGdsb2JhbFRoaXMucGVyZm9ybWFuY2U/Lm5vdz8uKCkgPz8gRGF0ZS5ub3coKSxcbiAgb25Db21wbGV0ZSxcbiAgcm91dGUsXG4gIHRpbWVvdXRNcyA9IERFRkFVTFRfVElNRU9VVF9NUyxcbiAgdGl0bGUsXG4gIHZpZXdJZFxufTogU3RhcnRWaWV3T3B0aW9ucyk6IFZpZXdQZXJmb3JtYW5jZUhhbmRsZSA9PiB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IG5vdygpO1xuICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgbGV0IHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBmaW5pc2ggPSAob3V0Y29tZTogVmlld1BlcmZvcm1hbmNlT3V0Y29tZSk6IHZvaWQgPT4ge1xuICAgIGlmKGNvbXBsZXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29tcGxldGUgPSB0cnVlO1xuICAgIGlmKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgdGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG9uQ29tcGxldGUoe1xuICAgICAgZHVyYXRpb25Nczogbm9ybWFsaXplRHVyYXRpb24obm93KCkgLSBzdGFydGVkQXQpLFxuICAgICAgb3V0Y29tZSxcbiAgICAgIC4uLihyb3V0ZSA/IHtyb3V0ZX0gOiB7fSksXG4gICAgICAuLi4odGl0bGUgPyB7dGl0bGV9IDoge30pLFxuICAgICAgdmlld0lkXG4gICAgfSk7XG4gIH07XG5cbiAgaWYodGltZW91dE1zID4gMCkge1xuICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBmaW5pc2goJ3RpbWVvdXQnKSwgdGltZW91dE1zKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2FuY2VsOiAoKSA9PiBmaW5pc2goJ2NhbmNlbGxlZCcpLFxuICAgIGZhaWw6ICgpID0+IGZpbmlzaCgnZmFpbHVyZScpLFxuICAgIHN1Y2NlZWQ6ICgpID0+IGZpbmlzaCgnc3VjY2VzcycpLFxuICAgIHRpbWVvdXQ6ICgpID0+IGZpbmlzaCgndGltZW91dCcpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVwb3J0Vmlld1BlcmZvcm1hbmNlID0gKFxuICBhd3NSdW06IEF3c1J1bSB8IHVuZGVmaW5lZCxcbiAgbWVhc3VyZW1lbnQ6IFZpZXdQZXJmb3JtYW5jZU1lYXN1cmVtZW50XG4pOiB2b2lkID0+IHtcbiAgYXdzUnVtPy50cmFjayh7XG4gICAgbmFtZTogJ3ZpZXdfcGVyZm9ybWFuY2UnLFxuICAgIC4uLihtZWFzdXJlbWVudC5yb3V0ZSA/IHtwYXRoOiBtZWFzdXJlbWVudC5yb3V0ZX0gOiB7fSksXG4gICAgcHJvcGVydGllczoge1xuICAgICAgZHVyYXRpb25NczogbWVhc3VyZW1lbnQuZHVyYXRpb25NcyxcbiAgICAgIG91dGNvbWU6IG1lYXN1cmVtZW50Lm91dGNvbWUsXG4gICAgICAuLi4obWVhc3VyZW1lbnQudGl0bGUgPyB7dmlld1RpdGxlOiBtZWFzdXJlbWVudC50aXRsZX0gOiB7fSksXG4gICAgICB2aWV3SWQ6IG1lYXN1cmVtZW50LnZpZXdJZFxuICAgIH0sXG4gICAgdHlwZTogJ3ZpZXdfcGVyZm9ybWFuY2UnXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVZpZXdQZXJmb3JtYW5jZSA9ICh7XG4gIHJvdXRlLFxuICBzdGF0dXMsXG4gIHRpbWVvdXRNcyxcbiAgdGl0bGUsXG4gIHZpZXdJZFxufTogVXNlVmlld1BlcmZvcm1hbmNlT3B0aW9ucyk6IHZvaWQgPT4ge1xuICBjb25zdCB7YXdzUnVtfSA9IHVzZUNvbnRleHQoR290aGFtQ29udGV4dCk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZVJlZjxWaWV3UGVyZm9ybWFuY2VIYW5kbGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHN0YXR1c1JlZiA9IHVzZVJlZihzdGF0dXMpO1xuICBzdGF0dXNSZWYuY3VycmVudCA9IHN0YXR1cztcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZSA9IHN0YXJ0Vmlldyh7XG4gICAgICBvbkNvbXBsZXRlOiAobWVhc3VyZW1lbnQpID0+IHJlcG9ydFZpZXdQZXJmb3JtYW5jZShhd3NSdW0sIG1lYXN1cmVtZW50KSxcbiAgICAgIHJvdXRlLFxuICAgICAgdGltZW91dE1zLFxuICAgICAgdGl0bGUsXG4gICAgICB2aWV3SWRcbiAgICB9KTtcbiAgICBoYW5kbGVSZWYuY3VycmVudCA9IGhhbmRsZTtcblxuICAgIGlmKHN0YXR1c1JlZi5jdXJyZW50ID09PSAnZmFpbHVyZScpIHtcbiAgICAgIGhhbmRsZS5mYWlsKCk7XG4gICAgfSBlbHNlIGlmKHN0YXR1c1JlZi5jdXJyZW50ID09PSAnc3VjY2VzcycpIHtcbiAgICAgIGhhbmRsZS5zdWNjZWVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGhhbmRsZS5jYW5jZWwoKTtcbiAgICAgIGlmKGhhbmRsZVJlZi5jdXJyZW50ID09PSBoYW5kbGUpIHtcbiAgICAgICAgaGFuZGxlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2F3c1J1bSwgcm91dGUsIHRpbWVvdXRNcywgdGl0bGUsIHZpZXdJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYoc3RhdHVzID09PSAnZmFpbHVyZScpIHtcbiAgICAgIGhhbmRsZVJlZi5jdXJyZW50Py5mYWlsKCk7XG4gICAgfSBlbHNlIGlmKHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICBoYW5kbGVSZWYuY3VycmVudD8uc3VjY2VlZCgpO1xuICAgIH1cbiAgfSwgW3N0YXR1c10pO1xufTtcbiJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwiR290aGFtQ29udGV4dCIsIkRFRkFVTFRfVElNRU9VVF9NUyIsIm5vcm1hbGl6ZUR1cmF0aW9uIiwiZHVyYXRpb24iLCJNYXRoIiwibWF4Iiwicm91bmQiLCJzdGFydFZpZXciLCJub3ciLCJnbG9iYWxUaGlzIiwicGVyZm9ybWFuY2UiLCJEYXRlIiwib25Db21wbGV0ZSIsInJvdXRlIiwidGltZW91dE1zIiwidGl0bGUiLCJ2aWV3SWQiLCJzdGFydGVkQXQiLCJjb21wbGV0ZSIsInRpbWVyIiwiZmluaXNoIiwib3V0Y29tZSIsImNsZWFyVGltZW91dCIsInVuZGVmaW5lZCIsImR1cmF0aW9uTXMiLCJzZXRUaW1lb3V0IiwiY2FuY2VsIiwiZmFpbCIsInN1Y2NlZWQiLCJ0aW1lb3V0IiwicmVwb3J0Vmlld1BlcmZvcm1hbmNlIiwiYXdzUnVtIiwibWVhc3VyZW1lbnQiLCJ0cmFjayIsIm5hbWUiLCJwYXRoIiwicHJvcGVydGllcyIsInZpZXdUaXRsZSIsInR5cGUiLCJ1c2VWaWV3UGVyZm9ybWFuY2UiLCJzdGF0dXMiLCJoYW5kbGVSZWYiLCJzdGF0dXNSZWYiLCJjdXJyZW50IiwiaGFuZGxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxRQUFPLFFBQVE7QUFFcEQsU0FBUUMsYUFBYSxRQUFPLHFCQUFxQjtBQXVDakQsTUFBTUMscUJBQXFCO0FBQzNCLE1BQU1DLG9CQUFvQixDQUFDQyxXQUE2QkMsS0FBS0MsR0FBRyxDQUFDLEdBQUdELEtBQUtFLEtBQUssQ0FBQ0g7QUFFL0UsT0FBTyxNQUFNSSxZQUFZLENBQUMsRUFDeEJDLE1BQU0sSUFBTUMsV0FBV0MsV0FBVyxFQUFFRixXQUFXRyxLQUFLSCxHQUFHLEVBQUUsRUFDekRJLFVBQVUsRUFDVkMsS0FBSyxFQUNMQyxZQUFZYixrQkFBa0IsRUFDOUJjLEtBQUssRUFDTEMsTUFBTSxFQUNXO0lBQ2pCLE1BQU1DLFlBQVlUO0lBQ2xCLElBQUlVLFdBQVc7SUFDZixJQUFJQztJQUVKLE1BQU1DLFNBQVMsQ0FBQ0M7UUFDZCxJQUFHSCxVQUFVO1lBQ1g7UUFDRjtRQUVBQSxXQUFXO1FBQ1gsSUFBR0MsT0FBTztZQUNSRyxhQUFhSDtZQUNiQSxRQUFRSTtRQUNWO1FBQ0FYLFdBQVc7WUFDVFksWUFBWXRCLGtCQUFrQk0sUUFBUVM7WUFDdENJO1lBQ0EsR0FBSVIsUUFBUTtnQkFBQ0E7WUFBSyxJQUFJLENBQUMsQ0FBQztZQUN4QixHQUFJRSxRQUFRO2dCQUFDQTtZQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3hCQztRQUNGO0lBQ0Y7SUFFQSxJQUFHRixZQUFZLEdBQUc7UUFDaEJLLFFBQVFNLFdBQVcsSUFBTUwsT0FBTyxZQUFZTjtJQUM5QztJQUVBLE9BQU87UUFDTFksUUFBUSxJQUFNTixPQUFPO1FBQ3JCTyxNQUFNLElBQU1QLE9BQU87UUFDbkJRLFNBQVMsSUFBTVIsT0FBTztRQUN0QlMsU0FBUyxJQUFNVCxPQUFPO0lBQ3hCO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTVUsd0JBQXdCLENBQ25DQyxRQUNBQztJQUVBRCxRQUFRRSxNQUFNO1FBQ1pDLE1BQU07UUFDTixHQUFJRixZQUFZbkIsS0FBSyxHQUFHO1lBQUNzQixNQUFNSCxZQUFZbkIsS0FBSztRQUFBLElBQUksQ0FBQyxDQUFDO1FBQ3REdUIsWUFBWTtZQUNWWixZQUFZUSxZQUFZUixVQUFVO1lBQ2xDSCxTQUFTVyxZQUFZWCxPQUFPO1lBQzVCLEdBQUlXLFlBQVlqQixLQUFLLEdBQUc7Z0JBQUNzQixXQUFXTCxZQUFZakIsS0FBSztZQUFBLElBQUksQ0FBQyxDQUFDO1lBQzNEQyxRQUFRZ0IsWUFBWWhCLE1BQU07UUFDNUI7UUFDQXNCLE1BQU07SUFDUjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1DLHFCQUFxQixDQUFDLEVBQ2pDMUIsS0FBSyxFQUNMMkIsTUFBTSxFQUNOMUIsU0FBUyxFQUNUQyxLQUFLLEVBQ0xDLE1BQU0sRUFDb0I7SUFDMUIsTUFBTSxFQUFDZSxNQUFNLEVBQUMsR0FBR2xDLFdBQVdHO0lBQzVCLE1BQU15QyxZQUFZMUMsT0FBMEN3QjtJQUM1RCxNQUFNbUIsWUFBWTNDLE9BQU95QztJQUN6QkUsVUFBVUMsT0FBTyxHQUFHSDtJQUVwQjFDLFVBQVU7UUFDUixNQUFNOEMsU0FBU3JDLFVBQVU7WUFDdkJLLFlBQVksQ0FBQ29CLGNBQWdCRixzQkFBc0JDLFFBQVFDO1lBQzNEbkI7WUFDQUM7WUFDQUM7WUFDQUM7UUFDRjtRQUNBeUIsVUFBVUUsT0FBTyxHQUFHQztRQUVwQixJQUFHRixVQUFVQyxPQUFPLEtBQUssV0FBVztZQUNsQ0MsT0FBT2pCLElBQUk7UUFDYixPQUFPLElBQUdlLFVBQVVDLE9BQU8sS0FBSyxXQUFXO1lBQ3pDQyxPQUFPaEIsT0FBTztRQUNoQjtRQUVBLE9BQU87WUFDTGdCLE9BQU9sQixNQUFNO1lBQ2IsSUFBR2UsVUFBVUUsT0FBTyxLQUFLQyxRQUFRO2dCQUMvQkgsVUFBVUUsT0FBTyxHQUFHcEI7WUFDdEI7UUFDRjtJQUNGLEdBQUc7UUFBQ1E7UUFBUWxCO1FBQU9DO1FBQVdDO1FBQU9DO0tBQU87SUFFNUNsQixVQUFVO1FBQ1IsSUFBRzBDLFdBQVcsV0FBVztZQUN2QkMsVUFBVUUsT0FBTyxFQUFFaEI7UUFDckIsT0FBTyxJQUFHYSxXQUFXLFdBQVc7WUFDOUJDLFVBQVVFLE9BQU8sRUFBRWY7UUFDckI7SUFDRixHQUFHO1FBQUNZO0tBQU87QUFDYixFQUFFIn0=
@@ -0,0 +1,9 @@
1
+ import { Location, useNavigation } from 'react-router';
2
+ export interface AppRouter {
3
+ readonly location: Location;
4
+ readonly matches: unknown[];
5
+ readonly navigation: ReturnType<typeof useNavigation>;
6
+ readonly params: unknown;
7
+ }
8
+ export declare const useRoute: () => AppRouter;
9
+ export declare const parseNavUrl: (path: string, params: Record<string, unknown>) => string;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { qs } from '@nlabs/utils';
5
+ import { useMemo } from 'react';
6
+ import { useLocation, useMatches, useNavigation, useParams } from 'react-router';
7
+ export const useRoute = ()=>{
8
+ const navigation = useNavigation();
9
+ const location = useLocation() || {};
10
+ const urlParams = useParams();
11
+ const matches = useMatches();
12
+ return useMemo(()=>({
13
+ location,
14
+ matches,
15
+ navigation,
16
+ params: {
17
+ ...location.state || {},
18
+ ...urlParams,
19
+ ...qs.parse(location.search, {
20
+ ignoreQueryPrefix: true
21
+ })
22
+ }
23
+ }), [
24
+ navigation,
25
+ location,
26
+ matches,
27
+ urlParams
28
+ ]);
29
+ };
30
+ export const parseNavUrl = (path, params)=>path.split('/').reduce((list, part)=>{
31
+ if (part?.substring(0, 1) === ':') {
32
+ const value = params[part.substring(1)];
33
+ return [
34
+ ...list,
35
+ value !== undefined ? value : part
36
+ ];
37
+ }
38
+ return [
39
+ ...list,
40
+ part
41
+ ];
42
+ }, []).join('/');
43
+
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy92aWV3VXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cXN9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TG9jYXRpb24sIHVzZUxvY2F0aW9uLCB1c2VNYXRjaGVzLCB1c2VOYXZpZ2F0aW9uLCB1c2VQYXJhbXN9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwUm91dGVyIHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uO1xuICByZWFkb25seSBtYXRjaGVzOiB1bmtub3duW107XG4gIHJlYWRvbmx5IG5hdmlnYXRpb246IFJldHVyblR5cGU8dHlwZW9mIHVzZU5hdmlnYXRpb24+O1xuICByZWFkb25seSBwYXJhbXM6IHVua25vd247XG59XG5cbmV4cG9ydCBjb25zdCB1c2VSb3V0ZSA9ICgpOiBBcHBSb3V0ZXIgPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlTmF2aWdhdGlvbigpO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCkgfHwge30gYXMgdW5rbm93biBhcyBMb2NhdGlvbjtcbiAgY29uc3QgdXJsUGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IG1hdGNoZXMgPSB1c2VNYXRjaGVzKCk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gKHtcbiAgICBsb2NhdGlvbixcbiAgICBtYXRjaGVzLFxuICAgIG5hdmlnYXRpb24sXG4gICAgcGFyYW1zOiB7XG4gICAgICAuLi4obG9jYXRpb24uc3RhdGUgfHwge30pLFxuICAgICAgLi4udXJsUGFyYW1zLFxuICAgICAgLi4ucXMucGFyc2UobG9jYXRpb24uc2VhcmNoLCB7aWdub3JlUXVlcnlQcmVmaXg6IHRydWV9KVxuICAgIH1cbiAgfSksIFtuYXZpZ2F0aW9uLCBsb2NhdGlvbiwgbWF0Y2hlcywgdXJsUGFyYW1zXSk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VOYXZVcmwgPSAocGF0aDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nID0+IHBhdGhcbiAgLnNwbGl0KCcvJylcbiAgLnJlZHVjZSgobGlzdDogc3RyaW5nW10sIHBhcnQ6IHN0cmluZykgPT4ge1xuICAgIGlmKHBhcnQ/LnN1YnN0cmluZygwLCAxKSA9PT0gJzonKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtc1twYXJ0LnN1YnN0cmluZygxKV07XG4gICAgICByZXR1cm4gWy4uLmxpc3QsIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHBhcnRdIGFzIHN0cmluZ1tdO1xuICAgIH1cblxuICAgIHJldHVybiBbLi4ubGlzdCwgcGFydF07XG4gIH0sIFtdKS5qb2luKCcvJyk7XG4iXSwibmFtZXMiOlsicXMiLCJ1c2VNZW1vIiwidXNlTG9jYXRpb24iLCJ1c2VNYXRjaGVzIiwidXNlTmF2aWdhdGlvbiIsInVzZVBhcmFtcyIsInVzZVJvdXRlIiwibmF2aWdhdGlvbiIsImxvY2F0aW9uIiwidXJsUGFyYW1zIiwibWF0Y2hlcyIsInBhcmFtcyIsInN0YXRlIiwicGFyc2UiLCJzZWFyY2giLCJpZ25vcmVRdWVyeVByZWZpeCIsInBhcnNlTmF2VXJsIiwicGF0aCIsInNwbGl0IiwicmVkdWNlIiwibGlzdCIsInBhcnQiLCJzdWJzdHJpbmciLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEVBQUUsUUFBTyxlQUFlO0FBQ2hDLFNBQVFDLE9BQU8sUUFBTyxRQUFRO0FBQzlCLFNBQWtCQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxTQUFTLFFBQU8sZUFBZTtBQVN6RixPQUFPLE1BQU1DLFdBQVc7SUFDdEIsTUFBTUMsYUFBYUg7SUFDbkIsTUFBTUksV0FBV04saUJBQWlCLENBQUM7SUFDbkMsTUFBTU8sWUFBWUo7SUFDbEIsTUFBTUssVUFBVVA7SUFFaEIsT0FBT0YsUUFBUSxJQUFPLENBQUE7WUFDcEJPO1lBQ0FFO1lBQ0FIO1lBQ0FJLFFBQVE7Z0JBQ04sR0FBSUgsU0FBU0ksS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsR0FBR0gsU0FBUztnQkFDWixHQUFHVCxHQUFHYSxLQUFLLENBQUNMLFNBQVNNLE1BQU0sRUFBRTtvQkFBQ0MsbUJBQW1CO2dCQUFJLEVBQUU7WUFDekQ7UUFDRixDQUFBLEdBQUk7UUFBQ1I7UUFBWUM7UUFBVUU7UUFBU0Q7S0FBVTtBQUNoRCxFQUFFO0FBRUYsT0FBTyxNQUFNTyxjQUFjLENBQUNDLE1BQWNOLFNBQTRDTSxLQUNuRkMsS0FBSyxDQUFDLEtBQ05DLE1BQU0sQ0FBQyxDQUFDQyxNQUFnQkM7UUFDdkIsSUFBR0EsTUFBTUMsVUFBVSxHQUFHLE9BQU8sS0FBSztZQUNoQyxNQUFNQyxRQUFRWixNQUFNLENBQUNVLEtBQUtDLFNBQVMsQ0FBQyxHQUFHO1lBQ3ZDLE9BQU87bUJBQUlGO2dCQUFNRyxVQUFVQyxZQUFZRCxRQUFRRjthQUFLO1FBQ3REO1FBRUEsT0FBTztlQUFJRDtZQUFNQztTQUFLO0lBQ3hCLEdBQUcsRUFBRSxFQUFFSSxJQUFJLENBQUMsS0FBSyJ9
@@ -0,0 +1,20 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { AuthViewProps } from '../AuthView/AuthView.js';
3
+ export interface AuthSignInValues extends Record<string, unknown> {
4
+ readonly email: string;
5
+ readonly password: string;
6
+ readonly rememberEmail: boolean;
7
+ }
8
+ export interface AuthSignInViewProps extends Omit<AuthViewProps, 'cardDescription' | 'cardTitle' | 'children' | 'onSubmit'> {
9
+ readonly cardDescription?: ReactNode;
10
+ readonly cardTitle?: ReactNode;
11
+ readonly defaultEmail?: string;
12
+ readonly error?: ReactNode;
13
+ readonly forgotPasswordHref?: string;
14
+ readonly onSubmit: (values: AuthSignInValues) => void | Promise<void>;
15
+ readonly signUpHref?: string;
16
+ readonly submitClassName?: string;
17
+ }
18
+ declare const AuthSignInViewComponent: ({ cardDescription, cardTitle, defaultEmail, error, forgotPasswordHref, onSubmit, signUpHref, submitClassName, ...authViewProps }: AuthSignInViewProps) => import("react").JSX.Element;
19
+ export declare const AuthSignInView: import("react").MemoExoticComponent<typeof AuthSignInViewComponent>;
20
+ export {};
@@ -0,0 +1,107 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import { z } from 'zod';
4
+ import { Button } from '../../components/Button/Button.js';
5
+ import { Checkbox } from '../../components/Checkbox/Checkbox.js';
6
+ import { Form } from '../../components/Form/Form.js';
7
+ import { Link } from '../../components/Link/Link.js';
8
+ import { TextField } from '../../components/TextField/TextField.js';
9
+ import { AuthView } from '../AuthView/AuthView.js';
10
+ const authSignInSchema = z.object({
11
+ email: z.email('Enter a valid email address.'),
12
+ password: z.string().min(1, 'Enter your password.'),
13
+ rememberEmail: z.boolean()
14
+ });
15
+ const AuthSignInViewComponent = ({ cardDescription = 'Use your email and password to continue.', cardTitle = 'Sign in', defaultEmail = '', error, forgotPasswordHref = '/forgot-password', onSubmit, signUpHref = '/signup', submitClassName, ...authViewProps })=>/*#__PURE__*/ _jsxs(AuthView, {
16
+ cardDescription: cardDescription,
17
+ cardTitle: cardTitle,
18
+ ...authViewProps,
19
+ children: [
20
+ error ? /*#__PURE__*/ _jsx("div", {
21
+ className: "mb-5 rounded-lg border border-error-300 bg-error-50 p-3 text-sm text-error-700",
22
+ role: "alert",
23
+ children: error
24
+ }) : null,
25
+ /*#__PURE__*/ _jsx(Form, {
26
+ className: "grid",
27
+ defaultValues: {
28
+ email: defaultEmail,
29
+ password: '',
30
+ rememberEmail: true
31
+ },
32
+ name: "sign-in",
33
+ onSubmit: onSubmit,
34
+ schema: authSignInSchema,
35
+ showErrors: true,
36
+ children: ({ formState })=>/*#__PURE__*/ _jsxs(_Fragment, {
37
+ children: [
38
+ /*#__PURE__*/ _jsxs("div", {
39
+ className: "grid gap-7 max-[600px]:gap-6",
40
+ children: [
41
+ /*#__PURE__*/ _jsx(TextField, {
42
+ autoComplete: "email",
43
+ borderColor: "neutral",
44
+ borderType: "underline",
45
+ inputClass: "min-h-12 rounded-none border-x-0 border-t-0 bg-transparent px-0 text-base shadow-none",
46
+ label: "Email",
47
+ labelClass: "mb-2 text-sm font-bold",
48
+ name: "email",
49
+ placeholder: "you@example.com",
50
+ type: "email"
51
+ }),
52
+ /*#__PURE__*/ _jsx(TextField, {
53
+ autoComplete: "current-password",
54
+ borderColor: "neutral",
55
+ borderType: "underline",
56
+ inputClass: "min-h-12 rounded-none border-x-0 border-t-0 bg-transparent px-0 pr-11 text-base shadow-none",
57
+ label: "Password",
58
+ labelClass: "mb-2 text-sm font-bold",
59
+ name: "password",
60
+ placeholder: "Your password",
61
+ showPasswordToggle: true,
62
+ type: "password"
63
+ })
64
+ ]
65
+ }),
66
+ /*#__PURE__*/ _jsxs("div", {
67
+ className: "my-5 flex items-center justify-between gap-4",
68
+ children: [
69
+ /*#__PURE__*/ _jsx(Checkbox, {
70
+ defaultValue: true,
71
+ label: "Remember me",
72
+ name: "rememberEmail"
73
+ }),
74
+ /*#__PURE__*/ _jsx(Link, {
75
+ className: "text-sm font-bold no-underline",
76
+ href: forgotPasswordHref,
77
+ children: "Forgot password?"
78
+ })
79
+ ]
80
+ }),
81
+ /*#__PURE__*/ _jsx(Button, {
82
+ className: submitClassName,
83
+ disabled: formState.isSubmitting,
84
+ isLoading: formState.isSubmitting,
85
+ type: "submit",
86
+ children: "Sign In"
87
+ })
88
+ ]
89
+ })
90
+ }),
91
+ /*#__PURE__*/ _jsxs("p", {
92
+ className: "mb-0 mt-6 text-sm text-muted-foreground dark:text-muted-foreground-dark",
93
+ children: [
94
+ "New here? ",
95
+ /*#__PURE__*/ _jsx(Link, {
96
+ className: "font-bold no-underline",
97
+ href: signUpHref,
98
+ children: "Sign Up"
99
+ })
100
+ ]
101
+ })
102
+ ]
103
+ });
104
+ export const AuthSignInView = /*#__PURE__*/ memo(AuthSignInViewComponent);
105
+ AuthSignInView.displayName = 'AuthSignInView';
106
+
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9BdXRoU2lnbkluVmlldy9BdXRoU2lnbkluVmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24uanMnO1xuaW1wb3J0IHtDaGVja2JveH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC5qcyc7XG5pbXBvcnQge0Zvcm19IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvRm9ybS9Gb3JtLmpzJztcbmltcG9ydCB7TGlua30gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHtUZXh0RmllbGR9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVGV4dEZpZWxkL1RleHRGaWVsZC5qcyc7XG5pbXBvcnQge0F1dGhWaWV3fSBmcm9tICcuLi9BdXRoVmlldy9BdXRoVmlldy5qcyc7XG5cbmltcG9ydCB0eXBlIHtSZWFjdE5vZGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtBdXRoVmlld1Byb3BzfSBmcm9tICcuLi9BdXRoVmlldy9BdXRoVmlldy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFNpZ25JblZhbHVlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmVhZG9ubHkgZW1haWw6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVtZW1iZXJFbWFpbDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoU2lnbkluVmlld1Byb3BzIGV4dGVuZHMgT21pdDxBdXRoVmlld1Byb3BzLCAnY2FyZERlc2NyaXB0aW9uJyB8ICdjYXJkVGl0bGUnIHwgJ2NoaWxkcmVuJyB8ICdvblN1Ym1pdCc+IHtcbiAgcmVhZG9ubHkgY2FyZERlc2NyaXB0aW9uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBjYXJkVGl0bGU/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGRlZmF1bHRFbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3I/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGZvcmdvdFBhc3N3b3JkSHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgb25TdWJtaXQ6ICh2YWx1ZXM6IEF1dGhTaWduSW5WYWx1ZXMpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBzaWduVXBIcmVmPzogc3RyaW5nO1xuICByZWFkb25seSBzdWJtaXRDbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGF1dGhTaWduSW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVtYWlsOiB6LmVtYWlsKCdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuJyksXG4gIHBhc3N3b3JkOiB6LnN0cmluZygpLm1pbigxLCAnRW50ZXIgeW91ciBwYXNzd29yZC4nKSxcbiAgcmVtZW1iZXJFbWFpbDogei5ib29sZWFuKClcbn0pO1xuXG5jb25zdCBBdXRoU2lnbkluVmlld0NvbXBvbmVudCA9ICh7XG4gIGNhcmREZXNjcmlwdGlvbiA9ICdVc2UgeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQgdG8gY29udGludWUuJyxcbiAgY2FyZFRpdGxlID0gJ1NpZ24gaW4nLFxuICBkZWZhdWx0RW1haWwgPSAnJyxcbiAgZXJyb3IsXG4gIGZvcmdvdFBhc3N3b3JkSHJlZiA9ICcvZm9yZ290LXBhc3N3b3JkJyxcbiAgb25TdWJtaXQsXG4gIHNpZ25VcEhyZWYgPSAnL3NpZ251cCcsXG4gIHN1Ym1pdENsYXNzTmFtZSxcbiAgLi4uYXV0aFZpZXdQcm9wc1xufTogQXV0aFNpZ25JblZpZXdQcm9wcykgPT4gKFxuICA8QXV0aFZpZXcgY2FyZERlc2NyaXB0aW9uPXtjYXJkRGVzY3JpcHRpb259IGNhcmRUaXRsZT17Y2FyZFRpdGxlfSB7Li4uYXV0aFZpZXdQcm9wc30+XG4gICAge2Vycm9yID8gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi01IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1lcnJvci0zMDAgYmctZXJyb3ItNTAgcC0zIHRleHQtc20gdGV4dC1lcnJvci03MDBcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAge2Vycm9yfVxuICAgICAgPC9kaXY+XG4gICAgKSA6IG51bGx9XG4gICAgPEZvcm08QXV0aFNpZ25JblZhbHVlcz5cbiAgICAgIGNsYXNzTmFtZT1cImdyaWRcIlxuICAgICAgZGVmYXVsdFZhbHVlcz17e2VtYWlsOiBkZWZhdWx0RW1haWwsIHBhc3N3b3JkOiAnJywgcmVtZW1iZXJFbWFpbDogdHJ1ZX19XG4gICAgICBuYW1lPVwic2lnbi1pblwiXG4gICAgICBvblN1Ym1pdD17b25TdWJtaXR9XG4gICAgICBzY2hlbWE9e2F1dGhTaWduSW5TY2hlbWF9XG4gICAgICBzaG93RXJyb3JzXG4gICAgPlxuICAgICAgeyh7Zm9ybVN0YXRlfSkgPT4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNyBtYXgtWzYwMHB4XTpnYXAtNlwiPlxuICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgIGJvcmRlclR5cGU9XCJ1bmRlcmxpbmVcIlxuICAgICAgICAgICAgICBpbnB1dENsYXNzPVwibWluLWgtMTIgcm91bmRlZC1ub25lIGJvcmRlci14LTAgYm9yZGVyLXQtMCBiZy10cmFuc3BhcmVudCBweC0wIHRleHQtYmFzZSBzaGFkb3ctbm9uZVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiRW1haWxcIlxuICAgICAgICAgICAgICBsYWJlbENsYXNzPVwibWItMiB0ZXh0LXNtIGZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieW91QGV4YW1wbGUuY29tXCJcbiAgICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cImN1cnJlbnQtcGFzc3dvcmRcIlxuICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICBib3JkZXJUeXBlPVwidW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cIm1pbi1oLTEyIHJvdW5kZWQtbm9uZSBib3JkZXIteC0wIGJvcmRlci10LTAgYmctdHJhbnNwYXJlbnQgcHgtMCBwci0xMSB0ZXh0LWJhc2Ugc2hhZG93LW5vbmVcIlxuICAgICAgICAgICAgICBsYWJlbD1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cIm1iLTIgdGV4dC1zbSBmb250LWJvbGRcIlxuICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIllvdXIgcGFzc3dvcmRcIlxuICAgICAgICAgICAgICBzaG93UGFzc3dvcmRUb2dnbGVcbiAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgPENoZWNrYm94IGRlZmF1bHRWYWx1ZSBsYWJlbD1cIlJlbWVtYmVyIG1lXCIgbmFtZT1cInJlbWVtYmVyRW1haWxcIiAvPlxuICAgICAgICAgICAgPExpbmsgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LWJvbGQgbm8tdW5kZXJsaW5lXCIgaHJlZj17Zm9yZ290UGFzc3dvcmRIcmVmfT5Gb3Jnb3QgcGFzc3dvcmQ/PC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3VibWl0Q2xhc3NOYW1lfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1TdGF0ZS5pc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2Zvcm1TdGF0ZS5pc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTaWduIEluXG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0Zvcm0+XG4gICAgPHAgY2xhc3NOYW1lPVwibWItMCBtdC02IHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kLWRhcmtcIj5cbiAgICAgIE5ldyBoZXJlPyA8TGluayBjbGFzc05hbWU9XCJmb250LWJvbGQgbm8tdW5kZXJsaW5lXCIgaHJlZj17c2lnblVwSHJlZn0+U2lnbiBVcDwvTGluaz5cbiAgICA8L3A+XG4gIDwvQXV0aFZpZXc+XG4pO1xuXG5leHBvcnQgY29uc3QgQXV0aFNpZ25JblZpZXcgPSBtZW1vKEF1dGhTaWduSW5WaWV3Q29tcG9uZW50KTtcbkF1dGhTaWduSW5WaWV3LmRpc3BsYXlOYW1lID0gJ0F1dGhTaWduSW5WaWV3JztcbiJdLCJuYW1lcyI6WyJtZW1vIiwieiIsIkJ1dHRvbiIsIkNoZWNrYm94IiwiRm9ybSIsIkxpbmsiLCJUZXh0RmllbGQiLCJBdXRoVmlldyIsImF1dGhTaWduSW5TY2hlbWEiLCJvYmplY3QiLCJlbWFpbCIsInBhc3N3b3JkIiwic3RyaW5nIiwibWluIiwicmVtZW1iZXJFbWFpbCIsImJvb2xlYW4iLCJBdXRoU2lnbkluVmlld0NvbXBvbmVudCIsImNhcmREZXNjcmlwdGlvbiIsImNhcmRUaXRsZSIsImRlZmF1bHRFbWFpbCIsImVycm9yIiwiZm9yZ290UGFzc3dvcmRIcmVmIiwib25TdWJtaXQiLCJzaWduVXBIcmVmIiwic3VibWl0Q2xhc3NOYW1lIiwiYXV0aFZpZXdQcm9wcyIsImRpdiIsImNsYXNzTmFtZSIsInJvbGUiLCJkZWZhdWx0VmFsdWVzIiwibmFtZSIsInNjaGVtYSIsInNob3dFcnJvcnMiLCJmb3JtU3RhdGUiLCJhdXRvQ29tcGxldGUiLCJib3JkZXJDb2xvciIsImJvcmRlclR5cGUiLCJpbnB1dENsYXNzIiwibGFiZWwiLCJsYWJlbENsYXNzIiwicGxhY2Vob2xkZXIiLCJ0eXBlIiwic2hvd1Bhc3N3b3JkVG9nZ2xlIiwiZGVmYXVsdFZhbHVlIiwiaHJlZiIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwiaXNMb2FkaW5nIiwicCIsIkF1dGhTaWduSW5WaWV3IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxJQUFJLFFBQU8sUUFBUTtBQUMzQixTQUFRQyxDQUFDLFFBQU8sTUFBTTtBQUV0QixTQUFRQyxNQUFNLFFBQU8sb0NBQW9DO0FBQ3pELFNBQVFDLFFBQVEsUUFBTyx3Q0FBd0M7QUFDL0QsU0FBUUMsSUFBSSxRQUFPLGdDQUFnQztBQUNuRCxTQUFRQyxJQUFJLFFBQU8sZ0NBQWdDO0FBQ25ELFNBQVFDLFNBQVMsUUFBTywwQ0FBMEM7QUFDbEUsU0FBUUMsUUFBUSxRQUFPLDBCQUEwQjtBQXNCakQsTUFBTUMsbUJBQW1CUCxFQUFFUSxNQUFNLENBQUM7SUFDaENDLE9BQU9ULEVBQUVTLEtBQUssQ0FBQztJQUNmQyxVQUFVVixFQUFFVyxNQUFNLEdBQUdDLEdBQUcsQ0FBQyxHQUFHO0lBQzVCQyxlQUFlYixFQUFFYyxPQUFPO0FBQzFCO0FBRUEsTUFBTUMsMEJBQTBCLENBQUMsRUFDL0JDLGtCQUFrQiwwQ0FBMEMsRUFDNURDLFlBQVksU0FBUyxFQUNyQkMsZUFBZSxFQUFFLEVBQ2pCQyxLQUFLLEVBQ0xDLHFCQUFxQixrQkFBa0IsRUFDdkNDLFFBQVEsRUFDUkMsYUFBYSxTQUFTLEVBQ3RCQyxlQUFlLEVBQ2YsR0FBR0MsZUFDaUIsaUJBQ3BCLE1BQUNsQjtRQUFTVSxpQkFBaUJBO1FBQWlCQyxXQUFXQTtRQUFZLEdBQUdPLGFBQWE7O1lBQ2hGTCxzQkFDQyxLQUFDTTtnQkFBSUMsV0FBVTtnQkFBaUZDLE1BQUs7MEJBQ2xHUjtpQkFFRDswQkFDSixLQUFDaEI7Z0JBQ0N1QixXQUFVO2dCQUNWRSxlQUFlO29CQUFDbkIsT0FBT1M7b0JBQWNSLFVBQVU7b0JBQUlHLGVBQWU7Z0JBQUk7Z0JBQ3RFZ0IsTUFBSztnQkFDTFIsVUFBVUE7Z0JBQ1ZTLFFBQVF2QjtnQkFDUndCLFVBQVU7MEJBRVQsQ0FBQyxFQUFDQyxTQUFTLEVBQUMsaUJBQ1g7OzBDQUNFLE1BQUNQO2dDQUFJQyxXQUFVOztrREFDYixLQUFDckI7d0NBQ0M0QixjQUFhO3dDQUNiQyxhQUFZO3dDQUNaQyxZQUFXO3dDQUNYQyxZQUFXO3dDQUNYQyxPQUFNO3dDQUNOQyxZQUFXO3dDQUNYVCxNQUFLO3dDQUNMVSxhQUFZO3dDQUNaQyxNQUFLOztrREFFUCxLQUFDbkM7d0NBQ0M0QixjQUFhO3dDQUNiQyxhQUFZO3dDQUNaQyxZQUFXO3dDQUNYQyxZQUFXO3dDQUNYQyxPQUFNO3dDQUNOQyxZQUFXO3dDQUNYVCxNQUFLO3dDQUNMVSxhQUFZO3dDQUNaRSxrQkFBa0I7d0NBQ2xCRCxNQUFLOzs7OzBDQUdULE1BQUNmO2dDQUFJQyxXQUFVOztrREFDYixLQUFDeEI7d0NBQVN3QyxZQUFZO3dDQUFDTCxPQUFNO3dDQUFjUixNQUFLOztrREFDaEQsS0FBQ3pCO3dDQUFLc0IsV0FBVTt3Q0FBaUNpQixNQUFNdkI7a0RBQW9COzs7OzBDQUU3RSxLQUFDbkI7Z0NBQ0N5QixXQUFXSDtnQ0FDWHFCLFVBQVVaLFVBQVVhLFlBQVk7Z0NBQ2hDQyxXQUFXZCxVQUFVYSxZQUFZO2dDQUNqQ0wsTUFBSzswQ0FDTjs7Ozs7MEJBTVAsTUFBQ087Z0JBQUVyQixXQUFVOztvQkFBMEU7a0NBQzNFLEtBQUN0Qjt3QkFBS3NCLFdBQVU7d0JBQXlCaUIsTUFBTXJCO2tDQUFZOzs7Ozs7QUFLM0UsT0FBTyxNQUFNMEIsK0JBQWlCakQsS0FBS2dCLHlCQUF5QjtBQUM1RGlDLGVBQWVDLFdBQVcsR0FBRyJ9
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
4
+ import { AuthSignInView } from './AuthSignInView.js';
5
+ const meta = {
6
+ component: AuthSignInView,
7
+ parameters: {
8
+ layout: 'fullscreen'
9
+ },
10
+ title: 'Views/Auth/AuthSignInView'
11
+ };
12
+ export default meta;
13
+ export const Default = {
14
+ args: {
15
+ description: 'Sign in once to return to everything your account can access.',
16
+ eyebrow: 'Acme identity',
17
+ onSubmit: async ()=>{},
18
+ title: /*#__PURE__*/ _jsxs(_Fragment, {
19
+ children: [
20
+ "Welcome",
21
+ /*#__PURE__*/ _jsx("br", {}),
22
+ "back."
23
+ ]
24
+ })
25
+ },
26
+ play: interactWithCanvas
27
+ };
28
+
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9BdXRoU2lnbkluVmlldy9BdXRoU2lnbkluVmlldy5zdG9yaWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtBdXRoU2lnbkluVmlld30gZnJvbSAnLi9BdXRoU2lnbkluVmlldy5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBtZXRhOiBNZXRhPHR5cGVvZiBBdXRoU2lnbkluVmlldz4gPSB7XG4gIGNvbXBvbmVudDogQXV0aFNpZ25JblZpZXcsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBsYXlvdXQ6ICdmdWxsc2NyZWVuJ1xuICB9LFxuICB0aXRsZTogJ1ZpZXdzL0F1dGgvQXV0aFNpZ25JblZpZXcnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhO1xuXG50eXBlIFN0b3J5ID0gU3RvcnlPYmo8dHlwZW9mIEF1dGhTaWduSW5WaWV3PjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHQ6IFN0b3J5ID0ge1xuICBhcmdzOiB7XG4gICAgZGVzY3JpcHRpb246ICdTaWduIGluIG9uY2UgdG8gcmV0dXJuIHRvIGV2ZXJ5dGhpbmcgeW91ciBhY2NvdW50IGNhbiBhY2Nlc3MuJyxcbiAgICBleWVicm93OiAnQWNtZSBpZGVudGl0eScsXG4gICAgb25TdWJtaXQ6IGFzeW5jICgpID0+IHt9LFxuICAgIHRpdGxlOiA8PldlbGNvbWU8YnIgLz5iYWNrLjwvPlxuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXNcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJBdXRoU2lnbkluVmlldyIsIm1ldGEiLCJjb21wb25lbnQiLCJwYXJhbWV0ZXJzIiwibGF5b3V0IiwidGl0bGUiLCJEZWZhdWx0IiwiYXJncyIsImRlc2NyaXB0aW9uIiwiZXllYnJvdyIsIm9uU3VibWl0IiwiYnIiLCJwbGF5Il0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsV0FBVyxRQUFRO0FBRTFCLFNBQVFDLGtCQUFrQixRQUFPLG1DQUFtQztBQUNwRSxTQUFRQyxjQUFjLFFBQU8sc0JBQXNCO0FBSW5ELE1BQU1DLE9BQW9DO0lBQ3hDQyxXQUFXRjtJQUNYRyxZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBQyxPQUFPO0FBQ1Q7QUFFQSxlQUFlSixLQUFLO0FBSXBCLE9BQU8sTUFBTUssVUFBaUI7SUFDNUJDLE1BQU07UUFDSkMsYUFBYTtRQUNiQyxTQUFTO1FBQ1RDLFVBQVUsV0FBYTtRQUN2QkwscUJBQU87O2dCQUFFOzhCQUFPLEtBQUNNO2dCQUFLOzs7SUFDeEI7SUFDQUMsTUFBTWI7QUFDUixFQUFFIn0=
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { AuthViewProps } from '../AuthView/AuthView.js';
3
+ export interface AuthSignUpValues extends Record<string, unknown> {
4
+ readonly acceptTerms: boolean;
5
+ readonly confirmPassword: string;
6
+ readonly email: string;
7
+ readonly password: string;
8
+ }
9
+ export interface AuthSignUpViewProps extends Omit<AuthViewProps, 'cardDescription' | 'cardTitle' | 'children' | 'onSubmit'> {
10
+ readonly cardDescription?: ReactNode;
11
+ readonly cardTitle?: ReactNode;
12
+ readonly error?: ReactNode;
13
+ readonly onSubmit: (values: AuthSignUpValues) => void | Promise<void>;
14
+ readonly resendVerificationHref?: string;
15
+ readonly signInHref?: string;
16
+ readonly submitClassName?: string;
17
+ readonly termsHref?: string;
18
+ }
19
+ declare const AuthSignUpViewComponent: ({ cardClassName, cardDescription, cardHeaderClassName, cardTitle, error, onSubmit, resendVerificationHref, signInHref, submitClassName, termsHref, ...authViewProps }: AuthSignUpViewProps) => import("react").JSX.Element;
20
+ export declare const AuthSignUpView: import("react").MemoExoticComponent<typeof AuthSignUpViewComponent>;
21
+ export {};