@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,43 @@
1
+ import i18n from 'i18next';
2
+ import type { FluxFramework, FluxMiddlewareType, FluxOptions } from '@nlabs/arkhamjs';
3
+ import type { FC, ReactNode } from 'react';
4
+ import type { GothamRouteData } from '../../types/gotham.js';
5
+ import type { AwsRum } from '../../utils/awsRum.js';
6
+ export interface GothamProviderProps {
7
+ readonly children?: ReactNode;
8
+ readonly config: GothamConfiguration;
9
+ readonly session?: Record<string, unknown>;
10
+ }
11
+ export type GothamPosition = 't' | 'tc' | 'tl' | 'tr' | 'b' | 'bc' | 'br' | 'bl';
12
+ export type GothamStatus = 'default' | 'error' | 'info' | 'success' | 'warning' | number;
13
+ export type ThemeDisplayMode = 'auto' | 'dark' | 'light';
14
+ export interface GothamConfiguration {
15
+ readonly analytics?: {
16
+ readonly interactions?: boolean;
17
+ };
18
+ readonly app?: {
19
+ readonly logo?: string;
20
+ readonly name?: string;
21
+ readonly title?: string;
22
+ readonly titleBarSeparator?: string;
23
+ };
24
+ readonly authRoute?: string;
25
+ readonly awsRum?: AwsRum;
26
+ readonly baseUrl?: string;
27
+ readonly config?: FluxOptions;
28
+ readonly displayMode?: ThemeDisplayMode;
29
+ readonly flux?: FluxFramework;
30
+ readonly isAuth?: () => boolean;
31
+ readonly middleware?: FluxMiddlewareType[];
32
+ readonly onInit?: () => void;
33
+ readonly routes?: GothamRouteData[];
34
+ readonly storageType?: 'local' | 'session' | false;
35
+ readonly stores?: unknown[];
36
+ readonly theme?: Record<string, unknown>;
37
+ readonly translations?: Record<string, unknown>;
38
+ readonly i18n?: typeof i18n;
39
+ }
40
+ export declare const defaultGothamConfig: GothamConfiguration;
41
+ export declare const init: (config: GothamConfiguration) => () => void;
42
+ export declare const signOut: (flux: FluxFramework) => () => Promise<void>;
43
+ export declare const GothamProvider: FC<GothamProviderProps>;
@@ -0,0 +1,217 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2024-Present, Nitrogen Labs, Inc.
4
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
5
+ */ import { Logger, LoggerDebugLevel } from '@nlabs/arkhamjs-middleware-logger';
6
+ import { BrowserStorage } from '@nlabs/arkhamjs-storage-browser';
7
+ import { useFlux } from '@nlabs/arkhamjs-utils-react';
8
+ import { merge } from '@nlabs/utils';
9
+ import i18n from 'i18next';
10
+ import { useEffect, useMemo, useState } from 'react';
11
+ import { I18nextProvider, initReactI18next } from 'react-i18next';
12
+ import { createBrowserRouter, RouterProvider } from 'react-router';
13
+ import { GothamActions } from '../../actions/GothamActions.js';
14
+ import { Config } from '../../config/appConfig.js';
15
+ import { GothamConstants } from '../../constants/GothamConstants.js';
16
+ import { gothamApp } from '../../stores/GothamAppStore.js';
17
+ import { createAwsRumBrowserClient } from '../../utils/awsRum.js';
18
+ import { GothamContext } from '../../utils/GothamContext.js';
19
+ import { registerInteractionAnalytics } from '../../utils/interactionAnalytics.js';
20
+ import { registerFlux } from '../../utils/navEventQueue.js';
21
+ import { parseRoutes } from '../../utils/routeUtils.js';
22
+ import { GothamRoot } from './GothamRoot.js';
23
+ export const defaultGothamConfig = {
24
+ analytics: {
25
+ interactions: true
26
+ },
27
+ app: {
28
+ name: 'gotham',
29
+ title: 'GothamUI'
30
+ },
31
+ authRoute: '/',
32
+ baseUrl: '',
33
+ isAuth: ()=>false,
34
+ middleware: [],
35
+ routes: [],
36
+ storageType: 'session',
37
+ stores: [],
38
+ theme: {},
39
+ translations: {
40
+ translation: {}
41
+ }
42
+ };
43
+ const defaultAwsRum = createAwsRumBrowserClient();
44
+ export const init = (config)=>()=>{
45
+ const { onInit } = config;
46
+ GothamActions.init();
47
+ if (onInit) {
48
+ onInit();
49
+ }
50
+ };
51
+ export const signOut = (flux)=>async ()=>{
52
+ await flux.clearAppData();
53
+ await GothamActions.loading(false);
54
+ const authRoute = Config.get('authRoute', '/');
55
+ GothamActions.navGoto(authRoute);
56
+ };
57
+ /* eslint-disable react-hooks/rules-of-hooks -- The compatibility rule does not recognize arrow-function components. */ export const GothamProvider = ({ config: appConfig })=>{
58
+ const flux = useFlux();
59
+ const config = useMemo(()=>merge({
60
+ ...defaultGothamConfig,
61
+ analytics: {
62
+ ...defaultGothamConfig.analytics
63
+ },
64
+ app: {
65
+ ...defaultGothamConfig.app
66
+ },
67
+ theme: {},
68
+ translations: {
69
+ translation: {}
70
+ }
71
+ }, appConfig), [
72
+ appConfig
73
+ ]);
74
+ const { isAuth, middleware, routes = [], storageType, stores, i18n: providedI18n, translations } = config;
75
+ const name = config?.app?.name;
76
+ const awsRum = config.awsRum || defaultAwsRum;
77
+ const [session, setSession] = useState({});
78
+ const [isFluxReady, setIsFluxReady] = useState(Boolean(flux?.isInit));
79
+ const router = useMemo(()=>createBrowserRouter([
80
+ {
81
+ Component: GothamRoot,
82
+ children: parseRoutes(routes),
83
+ index: false,
84
+ path: '/'
85
+ }
86
+ ]), [
87
+ routes
88
+ ]);
89
+ // Initialize i18next if translations are provided but no i18n instance is given
90
+ const i18nInstance = useMemo(()=>{
91
+ if (providedI18n) {
92
+ return providedI18n;
93
+ }
94
+ if (translations && Object.keys(translations).length > 0) {
95
+ // Create a new i18next instance and initialize it
96
+ const newI18n = i18n.createInstance();
97
+ newI18n.use(initReactI18next).init({
98
+ fallbackLng: 'en',
99
+ interpolation: {
100
+ escapeValue: false // React already escapes values
101
+ },
102
+ lng: 'en',
103
+ resources: translations
104
+ });
105
+ return newI18n;
106
+ }
107
+ return null;
108
+ }, [
109
+ providedI18n,
110
+ translations
111
+ ]);
112
+ useEffect(()=>{
113
+ Config.set(config);
114
+ let isMounted = true;
115
+ const setupFlux = async ()=>{
116
+ if (!flux) {
117
+ if (isMounted) {
118
+ setIsFluxReady(true);
119
+ }
120
+ return;
121
+ }
122
+ const env = Config.get('environment');
123
+ const logger = new Logger({
124
+ debugLevel: env === 'development' ? LoggerDebugLevel.DISPATCH : LoggerDebugLevel.DISABLED
125
+ });
126
+ const storage = storageType ? new BrowserStorage({
127
+ type: storageType
128
+ }) : undefined;
129
+ const fluxMiddleware = [
130
+ logger,
131
+ ...middleware || []
132
+ ];
133
+ const fluxStores = [
134
+ gothamApp,
135
+ ...stores || []
136
+ ];
137
+ if (flux.isInit) {
138
+ await flux.addStores(fluxStores);
139
+ flux.addMiddleware(fluxMiddleware);
140
+ } else {
141
+ const fluxConfig = {
142
+ middleware: fluxMiddleware,
143
+ name,
144
+ stores: fluxStores,
145
+ ...storage ? {
146
+ storage
147
+ } : {}
148
+ };
149
+ await flux.init(fluxConfig);
150
+ }
151
+ flux.on(GothamConstants.SIGN_OUT, signOut(flux));
152
+ flux.on(GothamConstants.UPDATE_SESSION, ({ session })=>{
153
+ setSession(session);
154
+ });
155
+ registerFlux(flux);
156
+ if (isMounted) {
157
+ setIsFluxReady(true);
158
+ }
159
+ };
160
+ void setupFlux();
161
+ init(config);
162
+ return ()=>{
163
+ isMounted = false;
164
+ };
165
+ }, [
166
+ flux,
167
+ config,
168
+ middleware,
169
+ name,
170
+ storageType,
171
+ stores
172
+ ]);
173
+ useEffect(()=>{
174
+ const unregister = config.analytics?.interactions === false ? undefined : registerInteractionAnalytics(awsRum);
175
+ return ()=>unregister?.();
176
+ }, [
177
+ awsRum,
178
+ config.analytics?.interactions
179
+ ]);
180
+ const contextValue = useMemo(()=>({
181
+ Flux: flux,
182
+ awsRum,
183
+ isAuth,
184
+ session
185
+ }), [
186
+ flux,
187
+ awsRum,
188
+ isAuth,
189
+ session
190
+ ]);
191
+ if (!isFluxReady) {
192
+ return null;
193
+ }
194
+ if (i18nInstance) {
195
+ return /*#__PURE__*/ _jsx(I18nextProvider, {
196
+ i18n: i18nInstance,
197
+ children: /*#__PURE__*/ _jsx(GothamContext.Provider, {
198
+ value: contextValue,
199
+ children: /*#__PURE__*/ _jsx("div", {
200
+ children: /*#__PURE__*/ _jsx(RouterProvider, {
201
+ router: router
202
+ })
203
+ })
204
+ })
205
+ });
206
+ }
207
+ return /*#__PURE__*/ _jsx(GothamContext.Provider, {
208
+ value: contextValue,
209
+ children: /*#__PURE__*/ _jsx("div", {
210
+ children: /*#__PURE__*/ _jsx(RouterProvider, {
211
+ router: router
212
+ })
213
+ })
214
+ });
215
+ }; /* eslint-enable react-hooks/rules-of-hooks */
216
+
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9Hb3RoYW0vR290aGFtUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI0LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyRGVidWdMZXZlbH0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzLW1pZGRsZXdhcmUtbG9nZ2VyJztcbmltcG9ydCB7QnJvd3NlclN0b3JhZ2V9IGZyb20gJ0BubGFicy9hcmtoYW1qcy1zdG9yYWdlLWJyb3dzZXInO1xuaW1wb3J0IHt1c2VGbHV4fSBmcm9tICdAbmxhYnMvYXJraGFtanMtdXRpbHMtcmVhY3QnO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCBpMThuIGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0kxOG5leHRQcm92aWRlciwgaW5pdFJlYWN0STE4bmV4dH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQge2NyZWF0ZUJyb3dzZXJSb3V0ZXIsIFJvdXRlclByb3ZpZGVyfSBmcm9tICdyZWFjdC1yb3V0ZXInO1xuXG5pbXBvcnQge0dvdGhhbUFjdGlvbnN9IGZyb20gJy4uLy4uL2FjdGlvbnMvR290aGFtQWN0aW9ucy5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vLi4vY29uZmlnL2FwcENvbmZpZy5qcyc7XG5pbXBvcnQge0dvdGhhbUNvbnN0YW50c30gZnJvbSAnLi4vLi4vY29uc3RhbnRzL0dvdGhhbUNvbnN0YW50cy5qcyc7XG5pbXBvcnQge2dvdGhhbUFwcH0gZnJvbSAnLi4vLi4vc3RvcmVzL0dvdGhhbUFwcFN0b3JlLmpzJztcbmltcG9ydCB7Y3JlYXRlQXdzUnVtQnJvd3NlckNsaWVudH0gZnJvbSAnLi4vLi4vdXRpbHMvYXdzUnVtLmpzJztcbmltcG9ydCB7R290aGFtQ29udGV4dH0gZnJvbSAnLi4vLi4vdXRpbHMvR290aGFtQ29udGV4dC5qcyc7XG5pbXBvcnQge3JlZ2lzdGVySW50ZXJhY3Rpb25BbmFseXRpY3N9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyYWN0aW9uQW5hbHl0aWNzLmpzJztcbmltcG9ydCB7cmVnaXN0ZXJGbHV4fSBmcm9tICcuLi8uLi91dGlscy9uYXZFdmVudFF1ZXVlLmpzJztcbmltcG9ydCB7cGFyc2VSb3V0ZXN9IGZyb20gJy4uLy4uL3V0aWxzL3JvdXRlVXRpbHMuanMnO1xuaW1wb3J0IHtHb3RoYW1Sb290fSBmcm9tICcuL0dvdGhhbVJvb3QuanMnO1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29yaywgRmx1eE1pZGRsZXdhcmVUeXBlLCBGbHV4T3B0aW9uc30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHtGQywgUmVhY3ROb2RlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7R290aGFtUm91dGVEYXRhfSBmcm9tICcuLi8uLi90eXBlcy9nb3RoYW0uanMnO1xuaW1wb3J0IHR5cGUge0F3c1J1bX0gZnJvbSAnLi4vLi4vdXRpbHMvYXdzUnVtLmpzJztcbmltcG9ydCB0eXBlIHtDdXN0b21Sb3V0ZVByb3BzfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZVV0aWxzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBHb3RoYW1Qcm92aWRlclByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGNvbmZpZzogR290aGFtQ29uZmlndXJhdGlvbjtcbiAgcmVhZG9ubHkgc2Vzc2lvbj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgdHlwZSBHb3RoYW1Qb3NpdGlvbiA9ICd0JyB8ICd0YycgfCAndGwnIHwgJ3RyJyB8ICdiJyB8ICdiYycgfCAnYnInIHwgJ2JsJztcbmV4cG9ydCB0eXBlIEdvdGhhbVN0YXR1cyA9ICdkZWZhdWx0JyB8ICdlcnJvcicgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCBudW1iZXI7XG5leHBvcnQgdHlwZSBUaGVtZURpc3BsYXlNb2RlID0gJ2F1dG8nIHwgJ2RhcmsnIHwgJ2xpZ2h0JztcblxuZXhwb3J0IGludGVyZmFjZSBHb3RoYW1Db25maWd1cmF0aW9uIHtcbiAgcmVhZG9ubHkgYW5hbHl0aWNzPzoge1xuICAgIHJlYWRvbmx5IGludGVyYWN0aW9ucz86IGJvb2xlYW47XG4gIH07XG4gIHJlYWRvbmx5IGFwcD86IHtcbiAgICByZWFkb25seSBsb2dvPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdGl0bGVCYXJTZXBhcmF0b3I/OiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IGF1dGhSb3V0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgYXdzUnVtPzogQXdzUnVtO1xuICByZWFkb25seSBiYXNlVXJsPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWc/OiBGbHV4T3B0aW9ucztcbiAgcmVhZG9ubHkgZGlzcGxheU1vZGU/OiBUaGVtZURpc3BsYXlNb2RlO1xuICByZWFkb25seSBmbHV4PzogRmx1eEZyYW1ld29yaztcbiAgcmVhZG9ubHkgaXNBdXRoPzogKCkgPT4gYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWlkZGxld2FyZT86IEZsdXhNaWRkbGV3YXJlVHlwZVtdO1xuICByZWFkb25seSBvbkluaXQ/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seSByb3V0ZXM/OiBHb3RoYW1Sb3V0ZURhdGFbXTtcbiAgcmVhZG9ubHkgc3RvcmFnZVR5cGU/OiAnbG9jYWwnIHwgJ3Nlc3Npb24nIHwgZmFsc2U7XG4gIHJlYWRvbmx5IHN0b3Jlcz86IHVua25vd25bXTtcbiAgcmVhZG9ubHkgdGhlbWU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJlYWRvbmx5IGkxOG4/OiB0eXBlb2YgaTE4bjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRHb3RoYW1Db25maWc6IEdvdGhhbUNvbmZpZ3VyYXRpb24gPSB7XG4gIGFuYWx5dGljczoge1xuICAgIGludGVyYWN0aW9uczogdHJ1ZVxuICB9LFxuICBhcHA6IHtcbiAgICBuYW1lOiAnZ290aGFtJyxcbiAgICB0aXRsZTogJ0dvdGhhbVVJJ1xuICB9LFxuICBhdXRoUm91dGU6ICcvJyxcbiAgYmFzZVVybDogJycsXG4gIGlzQXV0aDogKCkgPT4gZmFsc2UsXG4gIG1pZGRsZXdhcmU6IFtdLFxuICByb3V0ZXM6IFtdLFxuICBzdG9yYWdlVHlwZTogJ3Nlc3Npb24nLFxuICBzdG9yZXM6IFtdLFxuICB0aGVtZToge30sXG4gIHRyYW5zbGF0aW9uczoge3RyYW5zbGF0aW9uOiB7fX1cbn07XG5cbmNvbnN0IGRlZmF1bHRBd3NSdW0gPSBjcmVhdGVBd3NSdW1Ccm93c2VyQ2xpZW50KCk7XG5cbmV4cG9ydCBjb25zdCBpbml0ID0gKGNvbmZpZzogR290aGFtQ29uZmlndXJhdGlvbikgPT4gKCk6IHZvaWQgPT4ge1xuICBjb25zdCB7b25Jbml0fSA9IGNvbmZpZztcbiAgR290aGFtQWN0aW9ucy5pbml0KCk7XG5cbiAgaWYob25Jbml0KSB7XG4gICAgb25Jbml0KCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzaWduT3V0ID0gKGZsdXg6IEZsdXhGcmFtZXdvcmspID0+IGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZmx1eC5jbGVhckFwcERhdGEoKTtcbiAgYXdhaXQgR290aGFtQWN0aW9ucy5sb2FkaW5nKGZhbHNlKTtcblxuICBjb25zdCBhdXRoUm91dGUgPSBDb25maWcuZ2V0KCdhdXRoUm91dGUnLCAnLycpIGFzIHN0cmluZztcbiAgR290aGFtQWN0aW9ucy5uYXZHb3RvKGF1dGhSb3V0ZSk7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcyAtLSBUaGUgY29tcGF0aWJpbGl0eSBydWxlIGRvZXMgbm90IHJlY29nbml6ZSBhcnJvdy1mdW5jdGlvbiBjb21wb25lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IEdvdGhhbVByb3ZpZGVyOiBGQzxHb3RoYW1Qcm92aWRlclByb3BzPiA9ICh7Y29uZmlnOiBhcHBDb25maWd9KSA9PiB7XG4gIGNvbnN0IGZsdXggPSB1c2VGbHV4KCk7XG4gIGNvbnN0IGNvbmZpZzogR290aGFtQ29uZmlndXJhdGlvbiA9IHVzZU1lbW8oKCkgPT4gbWVyZ2Uoe1xuICAgIC4uLmRlZmF1bHRHb3RoYW1Db25maWcsXG4gICAgYW5hbHl0aWNzOiB7Li4uZGVmYXVsdEdvdGhhbUNvbmZpZy5hbmFseXRpY3N9LFxuICAgIGFwcDogey4uLmRlZmF1bHRHb3RoYW1Db25maWcuYXBwfSxcbiAgICB0aGVtZToge30sXG4gICAgdHJhbnNsYXRpb25zOiB7dHJhbnNsYXRpb246IHt9fVxuICB9LCBhcHBDb25maWcpLCBbYXBwQ29uZmlnXSk7XG4gIGNvbnN0IHtcbiAgICBpc0F1dGgsXG4gICAgbWlkZGxld2FyZSxcbiAgICByb3V0ZXMgPSBbXSxcbiAgICBzdG9yYWdlVHlwZSxcbiAgICBzdG9yZXMsXG4gICAgaTE4bjogcHJvdmlkZWRJMThuLFxuICAgIHRyYW5zbGF0aW9uc1xuICB9ID0gY29uZmlnO1xuICBjb25zdCBuYW1lID0gY29uZmlnPy5hcHA/Lm5hbWU7XG4gIGNvbnN0IGF3c1J1bSA9IGNvbmZpZy5hd3NSdW0gfHwgZGVmYXVsdEF3c1J1bTtcbiAgY29uc3QgW3Nlc3Npb24sIHNldFNlc3Npb25dID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbaXNGbHV4UmVhZHksIHNldElzRmx1eFJlYWR5XSA9IHVzZVN0YXRlKEJvb2xlYW4oKGZsdXggYXMgYW55KT8uaXNJbml0KSk7XG4gIGNvbnN0IHJvdXRlciA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQnJvd3NlclJvdXRlcihcbiAgICBbXG4gICAgICB7XG4gICAgICAgIENvbXBvbmVudDogR290aGFtUm9vdCxcbiAgICAgICAgY2hpbGRyZW46IHBhcnNlUm91dGVzKHJvdXRlcyBhcyB1bmtub3duIGFzIEN1c3RvbVJvdXRlUHJvcHNbXSksXG4gICAgICAgIGluZGV4OiBmYWxzZSxcbiAgICAgICAgcGF0aDogJy8nXG4gICAgICB9XG4gICAgXVxuICApLCBbcm91dGVzXSk7XG5cbiAgLy8gSW5pdGlhbGl6ZSBpMThuZXh0IGlmIHRyYW5zbGF0aW9ucyBhcmUgcHJvdmlkZWQgYnV0IG5vIGkxOG4gaW5zdGFuY2UgaXMgZ2l2ZW5cbiAgY29uc3QgaTE4bkluc3RhbmNlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYocHJvdmlkZWRJMThuKSB7XG4gICAgICByZXR1cm4gcHJvdmlkZWRJMThuO1xuICAgIH1cblxuICAgIGlmKHRyYW5zbGF0aW9ucyAmJiBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBpMThuZXh0IGluc3RhbmNlIGFuZCBpbml0aWFsaXplIGl0XG4gICAgICBjb25zdCBuZXdJMThuID0gaTE4bi5jcmVhdGVJbnN0YW5jZSgpO1xuXG4gICAgICBuZXdJMThuXG4gICAgICAgIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgICAgICAgLmluaXQoe1xuICAgICAgICAgIGZhbGxiYWNrTG5nOiAnZW4nLFxuICAgICAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBSZWFjdCBhbHJlYWR5IGVzY2FwZXMgdmFsdWVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsbmc6ICdlbicsIC8vIGRlZmF1bHQgbGFuZ3VhZ2VcbiAgICAgICAgICByZXNvdXJjZXM6IHRyYW5zbGF0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj5cbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXdJMThuO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LCBbcHJvdmlkZWRJMThuLCB0cmFuc2xhdGlvbnNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIENvbmZpZy5zZXQoY29uZmlnIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICBsZXQgaXNNb3VudGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHNldHVwRmx1eCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmKCFmbHV4KSB7XG4gICAgICAgIGlmKGlzTW91bnRlZCkge1xuICAgICAgICAgIHNldElzRmx1eFJlYWR5KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW52OiBzdHJpbmcgPSBDb25maWcuZ2V0KCdlbnZpcm9ubWVudCcpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGxvZ2dlcjogTG9nZ2VyID0gbmV3IExvZ2dlcih7XG4gICAgICAgIGRlYnVnTGV2ZWw6IGVudiA9PT0gJ2RldmVsb3BtZW50JyA/IExvZ2dlckRlYnVnTGV2ZWwuRElTUEFUQ0ggOiBMb2dnZXJEZWJ1Z0xldmVsLkRJU0FCTEVEXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0b3JhZ2U6IEJyb3dzZXJTdG9yYWdlIHwgdW5kZWZpbmVkID0gc3RvcmFnZVR5cGUgPyBuZXcgQnJvd3NlclN0b3JhZ2Uoe3R5cGU6IHN0b3JhZ2VUeXBlfSkgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBmbHV4TWlkZGxld2FyZSA9IFtsb2dnZXIsIC4uLihtaWRkbGV3YXJlIHx8IFtdKV07XG4gICAgICBjb25zdCBmbHV4U3RvcmVzID0gW2dvdGhhbUFwcCwgLi4uKHN0b3JlcyB8fCBbXSldO1xuXG4gICAgICBpZigoZmx1eCBhcyBhbnkpLmlzSW5pdCkge1xuICAgICAgICBhd2FpdCBmbHV4LmFkZFN0b3JlcyhmbHV4U3RvcmVzKTtcbiAgICAgICAgZmx1eC5hZGRNaWRkbGV3YXJlKGZsdXhNaWRkbGV3YXJlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZsdXhDb25maWc6IEZsdXhPcHRpb25zID0ge1xuICAgICAgICAgIG1pZGRsZXdhcmU6IGZsdXhNaWRkbGV3YXJlLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgc3RvcmVzOiBmbHV4U3RvcmVzLFxuICAgICAgICAgIC4uLihzdG9yYWdlID8ge3N0b3JhZ2V9IDoge30pXG4gICAgICAgIH07XG5cbiAgICAgICAgYXdhaXQgZmx1eC5pbml0KGZsdXhDb25maWcpO1xuICAgICAgfVxuXG4gICAgICBmbHV4Lm9uKEdvdGhhbUNvbnN0YW50cy5TSUdOX09VVCwgc2lnbk91dChmbHV4KSk7XG4gICAgICBmbHV4Lm9uKEdvdGhhbUNvbnN0YW50cy5VUERBVEVfU0VTU0lPTiwgKHtzZXNzaW9ufSkgPT4ge1xuICAgICAgICBzZXRTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgfSk7XG5cbiAgICAgIHJlZ2lzdGVyRmx1eChmbHV4KTtcbiAgICAgIGlmKGlzTW91bnRlZCkge1xuICAgICAgICBzZXRJc0ZsdXhSZWFkeSh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdm9pZCBzZXR1cEZsdXgoKTtcblxuICAgIGluaXQoY29uZmlnKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbZmx1eCwgY29uZmlnLCBtaWRkbGV3YXJlLCBuYW1lLCBzdG9yYWdlVHlwZSwgc3RvcmVzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB1bnJlZ2lzdGVyID0gY29uZmlnLmFuYWx5dGljcz8uaW50ZXJhY3Rpb25zID09PSBmYWxzZVxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogcmVnaXN0ZXJJbnRlcmFjdGlvbkFuYWx5dGljcyhhd3NSdW0pO1xuXG4gICAgcmV0dXJuICgpID0+IHVucmVnaXN0ZXI/LigpO1xuICB9LCBbYXdzUnVtLCBjb25maWcuYW5hbHl0aWNzPy5pbnRlcmFjdGlvbnNdKTtcblxuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7Rmx1eDogZmx1eCwgYXdzUnVtLCBpc0F1dGgsIHNlc3Npb259KSwgW2ZsdXgsIGF3c1J1bSwgaXNBdXRoLCBzZXNzaW9uXSk7XG5cbiAgaWYoIWlzRmx1eFJlYWR5KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZihpMThuSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEkxOG5leHRQcm92aWRlciBpMThuPXtpMThuSW5zdGFuY2V9PlxuICAgICAgICA8R290aGFtQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dFZhbHVlfT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPFJvdXRlclByb3ZpZGVyIHJvdXRlcj17cm91dGVyfS8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvR290aGFtQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvSTE4bmV4dFByb3ZpZGVyPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxHb3RoYW1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAgPGRpdj5cbiAgICAgICAgPFJvdXRlclByb3ZpZGVyIHJvdXRlcj17cm91dGVyfS8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0dvdGhhbUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuLyogZXNsaW50LWVuYWJsZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcyAqL1xuIl0sIm5hbWVzIjpbIkxvZ2dlciIsIkxvZ2dlckRlYnVnTGV2ZWwiLCJCcm93c2VyU3RvcmFnZSIsInVzZUZsdXgiLCJtZXJnZSIsImkxOG4iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJJMThuZXh0UHJvdmlkZXIiLCJpbml0UmVhY3RJMThuZXh0IiwiY3JlYXRlQnJvd3NlclJvdXRlciIsIlJvdXRlclByb3ZpZGVyIiwiR290aGFtQWN0aW9ucyIsIkNvbmZpZyIsIkdvdGhhbUNvbnN0YW50cyIsImdvdGhhbUFwcCIsImNyZWF0ZUF3c1J1bUJyb3dzZXJDbGllbnQiLCJHb3RoYW1Db250ZXh0IiwicmVnaXN0ZXJJbnRlcmFjdGlvbkFuYWx5dGljcyIsInJlZ2lzdGVyRmx1eCIsInBhcnNlUm91dGVzIiwiR290aGFtUm9vdCIsImRlZmF1bHRHb3RoYW1Db25maWciLCJhbmFseXRpY3MiLCJpbnRlcmFjdGlvbnMiLCJhcHAiLCJuYW1lIiwidGl0bGUiLCJhdXRoUm91dGUiLCJiYXNlVXJsIiwiaXNBdXRoIiwibWlkZGxld2FyZSIsInJvdXRlcyIsInN0b3JhZ2VUeXBlIiwic3RvcmVzIiwidGhlbWUiLCJ0cmFuc2xhdGlvbnMiLCJ0cmFuc2xhdGlvbiIsImRlZmF1bHRBd3NSdW0iLCJpbml0IiwiY29uZmlnIiwib25Jbml0Iiwic2lnbk91dCIsImZsdXgiLCJjbGVhckFwcERhdGEiLCJsb2FkaW5nIiwiZ2V0IiwibmF2R290byIsIkdvdGhhbVByb3ZpZGVyIiwiYXBwQ29uZmlnIiwicHJvdmlkZWRJMThuIiwiYXdzUnVtIiwic2Vzc2lvbiIsInNldFNlc3Npb24iLCJpc0ZsdXhSZWFkeSIsInNldElzRmx1eFJlYWR5IiwiQm9vbGVhbiIsImlzSW5pdCIsInJvdXRlciIsIkNvbXBvbmVudCIsImNoaWxkcmVuIiwiaW5kZXgiLCJwYXRoIiwiaTE4bkluc3RhbmNlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIm5ld0kxOG4iLCJjcmVhdGVJbnN0YW5jZSIsInVzZSIsImZhbGxiYWNrTG5nIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwibG5nIiwicmVzb3VyY2VzIiwic2V0IiwiaXNNb3VudGVkIiwic2V0dXBGbHV4IiwiZW52IiwibG9nZ2VyIiwiZGVidWdMZXZlbCIsIkRJU1BBVENIIiwiRElTQUJMRUQiLCJzdG9yYWdlIiwidHlwZSIsInVuZGVmaW5lZCIsImZsdXhNaWRkbGV3YXJlIiwiZmx1eFN0b3JlcyIsImFkZFN0b3JlcyIsImFkZE1pZGRsZXdhcmUiLCJmbHV4Q29uZmlnIiwib24iLCJTSUdOX09VVCIsIlVQREFURV9TRVNTSU9OIiwidW5yZWdpc3RlciIsImNvbnRleHRWYWx1ZSIsIkZsdXgiLCJQcm92aWRlciIsInZhbHVlIiwiZGl2Il0sIm1hcHBpbmdzIjoiO0FBQUE7OztDQUdDLEdBQ0QsU0FBUUEsTUFBTSxFQUFFQyxnQkFBZ0IsUUFBTyxvQ0FBb0M7QUFDM0UsU0FBUUMsY0FBYyxRQUFPLGtDQUFrQztBQUMvRCxTQUFRQyxPQUFPLFFBQU8sOEJBQThCO0FBQ3BELFNBQVFDLEtBQUssUUFBTyxlQUFlO0FBQ25DLE9BQU9DLFVBQVUsVUFBVTtBQUMzQixTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFPLFFBQVE7QUFDbkQsU0FBUUMsZUFBZSxFQUFFQyxnQkFBZ0IsUUFBTyxnQkFBZ0I7QUFDaEUsU0FBUUMsbUJBQW1CLEVBQUVDLGNBQWMsUUFBTyxlQUFlO0FBRWpFLFNBQVFDLGFBQWEsUUFBTyxpQ0FBaUM7QUFDN0QsU0FBUUMsTUFBTSxRQUFPLDRCQUE0QjtBQUNqRCxTQUFRQyxlQUFlLFFBQU8scUNBQXFDO0FBQ25FLFNBQVFDLFNBQVMsUUFBTyxpQ0FBaUM7QUFDekQsU0FBUUMseUJBQXlCLFFBQU8sd0JBQXdCO0FBQ2hFLFNBQVFDLGFBQWEsUUFBTywrQkFBK0I7QUFDM0QsU0FBUUMsNEJBQTRCLFFBQU8sc0NBQXNDO0FBQ2pGLFNBQVFDLFlBQVksUUFBTywrQkFBK0I7QUFDMUQsU0FBUUMsV0FBVyxRQUFPLDRCQUE0QjtBQUN0RCxTQUFRQyxVQUFVLFFBQU8sa0JBQWtCO0FBNkMzQyxPQUFPLE1BQU1DLHNCQUEyQztJQUN0REMs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
@@ -0,0 +1,6 @@
1
+ import type { FC } from 'react';
2
+ export declare const navBack: (history: any) => () => void;
3
+ export declare const navForward: (history: any) => () => void;
4
+ export declare const navGoto: (navigate: any) => (data: any) => void;
5
+ export declare const navReplace: (history: any) => (data: any) => void;
6
+ export declare const GothamRoot: FC;
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } 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 { useFluxListener } from '@nlabs/arkhamjs-utils-react';
6
+ import { useContext, useEffect, useRef } from 'react';
7
+ import { Outlet, useLocation, useMatches, useNavigate } from 'react-router';
8
+ import { Notify } from '../../components/Notify/Notify.js';
9
+ import { GothamConstants } from '../../constants/GothamConstants.js';
10
+ import { GothamContext } from '../../utils/GothamContext.js';
11
+ import { LoaderView } from '../LoaderView/LoaderView.js';
12
+ export const navBack = (history)=>()=>{
13
+ history.goBack();
14
+ };
15
+ export const navForward = (history)=>()=>{
16
+ history.goForward();
17
+ };
18
+ export const navGoto = (navigate)=>(data)=>{
19
+ const { params, path = '' } = data;
20
+ navigate(path, params);
21
+ };
22
+ export const navReplace = (history)=>(data)=>{
23
+ const { params, path = '' } = data;
24
+ history.replace(path, params);
25
+ };
26
+ export const GothamRoot = ()=>{
27
+ const { awsRum } = useContext(GothamContext);
28
+ const navigate = useNavigate();
29
+ const location = useLocation();
30
+ const matches = useMatches();
31
+ const lastTrackedPath = useRef(undefined);
32
+ useFluxListener(GothamConstants.NAV_BACK, navBack(navigate));
33
+ useFluxListener(GothamConstants.NAV_FORWARD, navForward(navigate));
34
+ useFluxListener(GothamConstants.NAV_GOTO, navGoto(navigate));
35
+ useFluxListener(GothamConstants.NAV_REPLACE, navReplace(navigate));
36
+ useEffect(()=>{
37
+ const analytics = [
38
+ ...matches
39
+ ].reverse().map((match)=>match.handle?.analytics).find(Boolean);
40
+ const path = analytics?.route || location.pathname;
41
+ const viewId = analytics?.viewId || path;
42
+ if (!awsRum || lastTrackedPath.current === viewId) {
43
+ return;
44
+ }
45
+ lastTrackedPath.current = viewId;
46
+ awsRum.track({
47
+ name: 'page_view',
48
+ path,
49
+ properties: {
50
+ title: analytics?.title || document.title,
51
+ viewId
52
+ },
53
+ type: 'page_view'
54
+ });
55
+ }, [
56
+ awsRum,
57
+ location.pathname,
58
+ matches
59
+ ]);
60
+ return /*#__PURE__*/ _jsxs(_Fragment, {
61
+ children: [
62
+ /*#__PURE__*/ _jsx(Outlet, {}),
63
+ /*#__PURE__*/ _jsx(Notify, {}),
64
+ /*#__PURE__*/ _jsx(LoaderView, {})
65
+ ]
66
+ });
67
+ };
68
+
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9Hb3RoYW0vR290aGFtUm9vdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dXNlRmx1eExpc3RlbmVyfSBmcm9tICdAbmxhYnMvYXJraGFtanMtdXRpbHMtcmVhY3QnO1xuaW1wb3J0IHt1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtPdXRsZXQsIHVzZUxvY2F0aW9uLCB1c2VNYXRjaGVzLCB1c2VOYXZpZ2F0ZX0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuaW1wb3J0IHtOb3RpZnl9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvTm90aWZ5L05vdGlmeS5qcyc7XG5pbXBvcnQge0dvdGhhbUNvbnN0YW50c30gZnJvbSAnLi4vLi4vY29uc3RhbnRzL0dvdGhhbUNvbnN0YW50cy5qcyc7XG5pbXBvcnQge0dvdGhhbUNvbnRleHR9IGZyb20gJy4uLy4uL3V0aWxzL0dvdGhhbUNvbnRleHQuanMnO1xuaW1wb3J0IHtMb2FkZXJWaWV3fSBmcm9tICcuLi9Mb2FkZXJWaWV3L0xvYWRlclZpZXcuanMnO1xuXG5pbXBvcnQgdHlwZSB7RkN9IGZyb20gJ3JlYWN0JztcblxuaW50ZXJmYWNlIFJvdXRlQW5hbHl0aWNzIHtcbiAgcmVhZG9ubHkgcm91dGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuICByZWFkb25seSB2aWV3SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IG5hdkJhY2sgPSAoaGlzdG9yeSkgPT4gKCk6IHZvaWQgPT4ge1xuICBoaXN0b3J5LmdvQmFjaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IG5hdkZvcndhcmQgPSAoaGlzdG9yeSkgPT4gKCk6IHZvaWQgPT4ge1xuICBoaXN0b3J5LmdvRm9yd2FyZCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IG5hdkdvdG8gPSAobmF2aWdhdGUpID0+IChkYXRhKTogdm9pZCA9PiB7XG4gIGNvbnN0IHtwYXJhbXMsIHBhdGggPSAnJ30gPSBkYXRhO1xuICBuYXZpZ2F0ZShwYXRoLCBwYXJhbXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IG5hdlJlcGxhY2UgPSAoaGlzdG9yeSkgPT4gKGRhdGEpOiB2b2lkID0+IHtcbiAgY29uc3Qge3BhcmFtcywgcGF0aCA9ICcnfSA9IGRhdGE7XG4gIGhpc3RvcnkucmVwbGFjZShwYXRoLCBwYXJhbXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IEdvdGhhbVJvb3Q6IEZDID0gKCkgPT4ge1xuICBjb25zdCB7YXdzUnVtfSA9IHVzZUNvbnRleHQoR290aGFtQ29udGV4dCk7XG4gIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBjb25zdCBtYXRjaGVzID0gdXNlTWF0Y2hlcygpO1xuICBjb25zdCBsYXN0VHJhY2tlZFBhdGggPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHVzZUZsdXhMaXN0ZW5lcihHb3RoYW1Db25zdGFudHMuTkFWX0JBQ0ssIG5hdkJhY2sobmF2aWdhdGUpKTtcbiAgdXNlRmx1eExpc3RlbmVyKEdvdGhhbUNvbnN0YW50cy5OQVZfRk9SV0FSRCwgbmF2Rm9yd2FyZChuYXZpZ2F0ZSkpO1xuICB1c2VGbHV4TGlzdGVuZXIoR290aGFtQ29uc3RhbnRzLk5BVl9HT1RPLCBuYXZHb3RvKG5hdmlnYXRlKSk7XG4gIHVzZUZsdXhMaXN0ZW5lcihHb3RoYW1Db25zdGFudHMuTkFWX1JFUExBQ0UsIG5hdlJlcGxhY2UobmF2aWdhdGUpKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFuYWx5dGljcyA9IFsuLi5tYXRjaGVzXVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLm1hcCgobWF0Y2gpID0+IChtYXRjaC5oYW5kbGUgYXMge2FuYWx5dGljcz86IFJvdXRlQW5hbHl0aWNzfSB8IHVuZGVmaW5lZCk/LmFuYWx5dGljcylcbiAgICAgIC5maW5kKEJvb2xlYW4pO1xuICAgIGNvbnN0IHBhdGggPSBhbmFseXRpY3M/LnJvdXRlIHx8IGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIGNvbnN0IHZpZXdJZCA9IGFuYWx5dGljcz8udmlld0lkIHx8IHBhdGg7XG5cbiAgICBpZighYXdzUnVtIHx8IGxhc3RUcmFja2VkUGF0aC5jdXJyZW50ID09PSB2aWV3SWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsYXN0VHJhY2tlZFBhdGguY3VycmVudCA9IHZpZXdJZDtcbiAgICBhd3NSdW0udHJhY2soe1xuICAgICAgbmFtZTogJ3BhZ2VfdmlldycsXG4gICAgICBwYXRoLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICB0aXRsZTogYW5hbHl0aWNzPy50aXRsZSB8fCBkb2N1bWVudC50aXRsZSxcbiAgICAgICAgdmlld0lkXG4gICAgICB9LFxuICAgICAgdHlwZTogJ3BhZ2VfdmlldydcbiAgICB9KTtcbiAgfSwgW2F3c1J1bSwgbG9jYXRpb24ucGF0aG5hbWUsIG1hdGNoZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8T3V0bGV0Lz5cbiAgICAgIDxOb3RpZnkgLz5cbiAgICAgIDxMb2FkZXJWaWV3IC8+XG4gICAgPC8+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbInVzZUZsdXhMaXN0ZW5lciIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJPdXRsZXQiLCJ1c2VMb2NhdGlvbiIsInVzZU1hdGNoZXMiLCJ1c2VOYXZpZ2F0ZSIsIk5vdGlmeSIsIkdvdGhhbUNvbnN0YW50cyIsIkdvdGhhbUNvbnRleHQiLCJMb2FkZXJWaWV3IiwibmF2QmFjayIsImhpc3RvcnkiLCJnb0JhY2siLCJuYXZGb3J3YXJkIiwiZ29Gb3J3YXJkIiwibmF2R290byIsIm5hdmlnYXRlIiwiZGF0YSIsInBhcmFtcyIsInBhdGgiLCJuYXZSZXBsYWNlIiwicmVwbGFjZSIsIkdvdGhhbVJvb3QiLCJhd3NSdW0iLCJsb2NhdGlvbiIsIm1hdGNoZXMiLCJsYXN0VHJhY2tlZFBhdGgiLCJ1bmRlZmluZWQiLCJOQVZfQkFDSyIsIk5BVl9GT1JXQVJEIiwiTkFWX0dPVE8iLCJOQVZfUkVQTEFDRSIsImFuYWx5dGljcyIsInJldmVyc2UiLCJtYXAiLCJtYXRjaCIsImhhbmRsZSIsImZpbmQiLCJCb29sZWFuIiwicm91dGUiLCJwYXRobmFtZSIsInZpZXdJZCIsImN1cnJlbnQiLCJ0cmFjayIsIm5hbWUiLCJwcm9wZXJ0aWVzIiwidGl0bGUiLCJkb2N1bWVudCIsInR5cGUiXSwibWFwcGluZ3MiOiI7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxlQUFlLFFBQU8sOEJBQThCO0FBQzVELFNBQVFDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxNQUFNLFFBQU8sUUFBUTtBQUNwRCxTQUFRQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsVUFBVSxFQUFFQyxXQUFXLFFBQU8sZUFBZTtBQUUxRSxTQUFRQyxNQUFNLFFBQU8sb0NBQW9DO0FBQ3pELFNBQVFDLGVBQWUsUUFBTyxxQ0FBcUM7QUFDbkUsU0FBUUMsYUFBYSxRQUFPLCtCQUErQjtBQUMzRCxTQUFRQyxVQUFVLFFBQU8sOEJBQThCO0FBVXZELE9BQU8sTUFBTUMsVUFBVSxDQUFDQyxVQUFZO1FBQ2xDQSxRQUFRQyxNQUFNO0lBQ2hCLEVBQUU7QUFFRixPQUFPLE1BQU1DLGFBQWEsQ0FBQ0YsVUFBWTtRQUNyQ0EsUUFBUUcsU0FBUztJQUNuQixFQUFFO0FBRUYsT0FBTyxNQUFNQyxVQUFVLENBQUNDLFdBQWEsQ0FBQ0M7UUFDcEMsTUFBTSxFQUFDQyxNQUFNLEVBQUVDLE9BQU8sRUFBRSxFQUFDLEdBQUdGO1FBQzVCRCxTQUFTRyxNQUFNRDtJQUNqQixFQUFFO0FBRUYsT0FBTyxNQUFNRSxhQUFhLENBQUNULFVBQVksQ0FBQ007UUFDdEMsTUFBTSxFQUFDQyxNQUFNLEVBQUVDLE9BQU8sRUFBRSxFQUFDLEdBQUdGO1FBQzVCTixRQUFRVSxPQUFPLENBQUNGLE1BQU1EO0lBQ3hCLEVBQUU7QUFFRixPQUFPLE1BQU1JLGFBQWlCO0lBQzVCLE1BQU0sRUFBQ0MsTUFBTSxFQUFDLEdBQUd4QixXQUFXUztJQUM1QixNQUFNUSxXQUFXWDtJQUNqQixNQUFNbUIsV0FBV3JCO0lBQ2pCLE1BQU1zQixVQUFVckI7SUFDaEIsTUFBTXNCLGtCQUFrQnpCLE9BQTJCMEI7SUFFbkQ3QixnQkFBZ0JTLGdCQUFnQnFCLFFBQVEsRUFBRWxCLFFBQVFNO0lBQ2xEbEIsZ0JBQWdCUyxnQkFBZ0JzQixXQUFXLEVBQUVoQixXQUFXRztJQUN4RGxCLGdCQUFnQlMsZ0JBQWdCdUIsUUFBUSxFQUFFZixRQUFRQztJQUNsRGxCLGdCQUFnQlMsZ0JBQWdCd0IsV0FBVyxFQUFFWCxXQUFXSjtJQUV4RGhCLFVBQVU7UUFDUixNQUFNZ0MsWUFBWTtlQUFJUDtTQUFRLENBQzNCUSxPQUFPLEdBQ1BDLEdBQUcsQ0FBQyxDQUFDQyxRQUFXQSxNQUFNQyxNQUFNLEVBQStDSixXQUMzRUssSUFBSSxDQUFDQztRQUNSLE1BQU1uQixPQUFPYSxXQUFXTyxTQUFTZixTQUFTZ0IsUUFBUTtRQUNsRCxNQUFNQyxTQUFTVCxXQUFXUyxVQUFVdEI7UUFFcEMsSUFBRyxDQUFDSSxVQUFVRyxnQkFBZ0JnQixPQUFPLEtBQUtELFFBQVE7WUFDaEQ7UUFDRjtRQUVBZixnQkFBZ0JnQixPQUFPLEdBQUdEO1FBQzFCbEIsT0FBT29CLEtBQUssQ0FBQztZQUNYQyxNQUFNO1lBQ056QjtZQUNBMEIsWUFBWTtnQkFDVkMsT0FBT2QsV0FBV2MsU0FBU0MsU0FBU0QsS0FBSztnQkFDekNMO1lBQ0Y7WUFDQU8sTUFBTTtRQUNSO0lBQ0YsR0FBRztRQUFDekI7UUFBUUMsU0FBU2dCLFFBQVE7UUFBRWY7S0FBUTtJQUV2QyxxQkFDRTs7MEJBQ0UsS0FBQ3ZCOzBCQUNELEtBQUNJOzBCQUNELEtBQUNHOzs7QUFHUCxFQUFFIn0=
@@ -0,0 +1,10 @@
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 React from 'react';
6
+ export interface HomeViewProps {
7
+ children?: React.ReactNode;
8
+ title?: string;
9
+ }
10
+ export declare const HomeView: React.NamedExoticComponent<HomeViewProps>;
@@ -0,0 +1,134 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } 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 React, { memo, useState } from 'react';
6
+ import { useNavigate } from 'react-router';
7
+ const navItems = [
8
+ {
9
+ label: 'Home',
10
+ path: '/'
11
+ },
12
+ {
13
+ label: 'About',
14
+ path: '/about'
15
+ },
16
+ {
17
+ label: 'Contact',
18
+ path: '/contact'
19
+ }
20
+ ];
21
+ const HomeViewComponent = ({ children, title = 'GothamUI' })=>{
22
+ const [mobileOpen, setMobileOpen] = useState(false);
23
+ const navigate = useNavigate();
24
+ const handleDrawerToggle = ()=>{
25
+ setMobileOpen(!mobileOpen);
26
+ };
27
+ const handleNavigation = (path)=>{
28
+ navigate(path);
29
+ setMobileOpen(false);
30
+ };
31
+ return /*#__PURE__*/ _jsxs("div", {
32
+ className: "flex flex-col min-h-screen",
33
+ children: [
34
+ /*#__PURE__*/ _jsxs("header", {
35
+ className: "bg-indigo-600 text-white shadow-md",
36
+ children: [
37
+ /*#__PURE__*/ _jsx("div", {
38
+ className: "container mx-auto px-4",
39
+ children: /*#__PURE__*/ _jsxs("div", {
40
+ className: "flex items-center justify-between h-16",
41
+ children: [
42
+ /*#__PURE__*/ _jsx("div", {
43
+ className: "flex items-center sm:hidden",
44
+ children: /*#__PURE__*/ _jsxs("button", {
45
+ "aria-controls": "mobile-menu",
46
+ "aria-expanded": mobileOpen,
47
+ className: "inline-flex items-center justify-center p-2 rounded-md text-white hover:bg-indigo-500 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white",
48
+ onClick: handleDrawerToggle,
49
+ type: "button",
50
+ children: [
51
+ /*#__PURE__*/ _jsx("span", {
52
+ className: "sr-only",
53
+ children: "Open main menu"
54
+ }),
55
+ /*#__PURE__*/ _jsx("svg", {
56
+ "aria-hidden": "true",
57
+ className: `${mobileOpen ? 'hidden' : 'block'} h-6 w-6`,
58
+ fill: "none",
59
+ stroke: "currentColor",
60
+ viewBox: "0 0 24 24",
61
+ xmlns: "http://www.w3.org/2000/svg",
62
+ children: /*#__PURE__*/ _jsx("path", {
63
+ d: "M4 6h16M4 12h16M4 18h16",
64
+ strokeLinecap: "round",
65
+ strokeLinejoin: "round",
66
+ strokeWidth: 2
67
+ })
68
+ }),
69
+ /*#__PURE__*/ _jsx("svg", {
70
+ "aria-hidden": "true",
71
+ className: `${mobileOpen ? 'block' : 'hidden'} h-6 w-6`,
72
+ fill: "none",
73
+ stroke: "currentColor",
74
+ viewBox: "0 0 24 24",
75
+ xmlns: "http://www.w3.org/2000/svg",
76
+ children: /*#__PURE__*/ _jsx("path", {
77
+ d: "M6 18L18 6M6 6l12 12",
78
+ strokeLinecap: "round",
79
+ strokeLinejoin: "round",
80
+ strokeWidth: 2
81
+ })
82
+ })
83
+ ]
84
+ })
85
+ }),
86
+ /*#__PURE__*/ _jsx("div", {
87
+ className: "flex-1 flex items-center justify-center sm:items-stretch sm:justify-start",
88
+ children: /*#__PURE__*/ _jsx("div", {
89
+ className: "flex-shrink-0 flex items-center",
90
+ children: /*#__PURE__*/ _jsx("h1", {
91
+ className: "text-xl font-bold",
92
+ children: title
93
+ })
94
+ })
95
+ }),
96
+ /*#__PURE__*/ _jsx("div", {
97
+ className: "hidden sm:block sm:ml-6",
98
+ children: /*#__PURE__*/ _jsx("div", {
99
+ className: "flex space-x-4",
100
+ children: navItems.map(({ label, path })=>/*#__PURE__*/ _jsx("button", {
101
+ className: "text-white hover:bg-indigo-500 px-3 py-2 rounded-md text-sm font-medium",
102
+ onClick: ()=>handleNavigation(path),
103
+ children: label
104
+ }, path))
105
+ })
106
+ })
107
+ ]
108
+ })
109
+ }),
110
+ /*#__PURE__*/ _jsx("div", {
111
+ className: `${mobileOpen ? 'block' : 'hidden'} sm:hidden`,
112
+ id: "mobile-menu",
113
+ children: /*#__PURE__*/ _jsx("div", {
114
+ className: "px-2 pt-2 pb-3 space-y-1",
115
+ children: navItems.map(({ label, path })=>/*#__PURE__*/ _jsx("button", {
116
+ className: "text-white hover:bg-indigo-500 block px-3 py-2 rounded-md text-base font-medium w-full text-left",
117
+ onClick: ()=>handleNavigation(path),
118
+ children: label
119
+ }, path))
120
+ })
121
+ })
122
+ ]
123
+ }),
124
+ /*#__PURE__*/ _jsx("main", {
125
+ className: "flex-grow p-4",
126
+ children: children
127
+ })
128
+ ]
129
+ });
130
+ };
131
+ export const HomeView = /*#__PURE__*/ memo(HomeViewComponent);
132
+ HomeView.displayName = 'HomeView';
133
+
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9Ib21lVmlldy9Ib21lVmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBSZWFjdCwge21lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZU5hdmlnYXRlfSBmcm9tICdyZWFjdC1yb3V0ZXInO1xuXG5jb25zdCBuYXZJdGVtcyA9IFtcbiAge2xhYmVsOiAnSG9tZScsIHBhdGg6ICcvJ30sXG4gIHtsYWJlbDogJ0Fib3V0JywgcGF0aDogJy9hYm91dCd9LFxuICB7bGFiZWw6ICdDb250YWN0JywgcGF0aDogJy9jb250YWN0J31cbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9tZVZpZXdQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICB0aXRsZT86IHN0cmluZztcbn1cblxuY29uc3QgSG9tZVZpZXdDb21wb25lbnQ6IFJlYWN0LkZDPEhvbWVWaWV3UHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIHRpdGxlID0gJ0dvdGhhbVVJJ1xufSkgPT4ge1xuICBjb25zdCBbbW9iaWxlT3Blbiwgc2V0TW9iaWxlT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcblxuICBjb25zdCBoYW5kbGVEcmF3ZXJUb2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0TW9iaWxlT3BlbighbW9iaWxlT3Blbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTmF2aWdhdGlvbiA9IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBuYXZpZ2F0ZShwYXRoKTtcbiAgICBzZXRNb2JpbGVPcGVuKGZhbHNlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBtaW4taC1zY3JlZW5cIj5cbiAgICAgIHsvKiBOYXZpZ2F0aW9uIEJhciAqL31cbiAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYmctaW5kaWdvLTYwMCB0ZXh0LXdoaXRlIHNoYWRvdy1tZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBteC1hdXRvIHB4LTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBoLTE2XCI+XG4gICAgICAgICAgICB7LyogTW9iaWxlIG1lbnUgYnV0dG9uICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBzbTpoaWRkZW5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtb2JpbGUtbWVudVwiXG4gICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17bW9iaWxlT3Blbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC0yIHJvdW5kZWQtbWQgdGV4dC13aGl0ZSBob3ZlcjpiZy1pbmRpZ28tNTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1pbnNldCBmb2N1czpyaW5nLXdoaXRlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVEcmF3ZXJUb2dnbGV9XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+T3BlbiBtYWluIG1lbnU8L3NwYW4+XG4gICAgICAgICAgICAgICAgey8qIEljb24gd2hlbiBtZW51IGlzIGNsb3NlZCAqL31cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHttb2JpbGVPcGVuID8gJ2hpZGRlbicgOiAnYmxvY2snfSBoLTYgdy02YH1cbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNNCA2aDE2TTQgMTJoMTZNNCAxOGgxNlwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgey8qIEljb24gd2hlbiBtZW51IGlzIG9wZW4gKi99XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7bW9iaWxlT3BlbiA/ICdibG9jaycgOiAnaGlkZGVuJ30gaC02IHctNmB9XG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwiTTYgMThMMTggNk02IDZsMTIgMTJcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogTG9nbyAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNtOml0ZW1zLXN0cmV0Y2ggc206anVzdGlmeS1zdGFydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTAgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWJvbGRcIj57dGl0bGV9PC9oMT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIERlc2t0b3AgTmF2aWdhdGlvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIHNtOmJsb2NrIHNtOm1sLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgIHtuYXZJdGVtcy5tYXAoKHtsYWJlbCwgcGF0aH0pID0+IChcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSBob3ZlcjpiZy1pbmRpZ28tNTAwIHB4LTMgcHktMiByb3VuZGVkLW1kIHRleHQtc20gZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICBrZXk9e3BhdGh9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU5hdmlnYXRpb24ocGF0aCl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogTW9iaWxlIE5hdmlnYXRpb24gKi99XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake21vYmlsZU9wZW4gPyAnYmxvY2snIDogJ2hpZGRlbid9IHNtOmhpZGRlbmB9XG4gICAgICAgICAgaWQ9XCJtb2JpbGUtbWVudVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTIgcHQtMiBwYi0zIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAge25hdkl0ZW1zLm1hcCgoe2xhYmVsLCBwYXRofSkgPT4gKFxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSBob3ZlcjpiZy1pbmRpZ28tNTAwIGJsb2NrIHB4LTMgcHktMiByb3VuZGVkLW1kIHRleHQtYmFzZSBmb250LW1lZGl1bSB3LWZ1bGwgdGV4dC1sZWZ0XCJcbiAgICAgICAgICAgICAgICBrZXk9e3BhdGh9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTmF2aWdhdGlvbihwYXRoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgIDxtYWluIGNsYXNzTmFtZT1cImZsZXgtZ3JvdyBwLTRcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9tYWluPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEhvbWVWaWV3ID0gbWVtbyhIb21lVmlld0NvbXBvbmVudCk7XG5Ib21lVmlldy5kaXNwbGF5TmFtZSA9ICdIb21lVmlldyc7XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJtZW1vIiwidXNlU3RhdGUiLCJ1c2VOYXZpZ2F0ZSIsIm5hdkl0ZW1zIiwibGFiZWwiLCJwYXRoIiwiSG9tZVZpZXdDb21wb25lbnQiLCJjaGlsZHJlbiIsInRpdGxlIiwibW9iaWxlT3BlbiIsInNldE1vYmlsZU9wZW4iLCJuYXZpZ2F0ZSIsImhhbmRsZURyYXdlclRvZ2dsZSIsImhhbmRsZU5hdmlnYXRpb24iLCJkaXYiLCJjbGFzc05hbWUiLCJoZWFkZXIiLCJidXR0b24iLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1leHBhbmRlZCIsIm9uQ2xpY2siLCJ0eXBlIiwic3BhbiIsInN2ZyIsImFyaWEtaGlkZGVuIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJ4bWxucyIsImQiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImgxIiwibWFwIiwiaWQiLCJtYWluIiwiSG9tZVZpZXciLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Q0FHQyxHQUNELE9BQU9BLFNBQVFDLElBQUksRUFBRUMsUUFBUSxRQUFPLFFBQVE7QUFDNUMsU0FBUUMsV0FBVyxRQUFPLGVB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
@@ -0,0 +1,8 @@
1
+ export interface LoaderContent {
2
+ content?: string;
3
+ isLoading: boolean;
4
+ }
5
+ export declare const toggleLoader: (setLoading: any, setLoaderContent: any) => ({ content, isLoading }: LoaderContent) => void;
6
+ declare const LoaderViewComponent: () => import("react").JSX.Element | null;
7
+ export declare const LoaderView: import("react").MemoExoticComponent<typeof LoaderViewComponent>;
8
+ export {};
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useFluxListener } from '@nlabs/arkhamjs-utils-react';
3
+ import { memo, useState } from 'react';
4
+ import { Loader } from '../../components/Loader/Loader.js';
5
+ import { GothamConstants } from '../../constants/GothamConstants.js';
6
+ export const toggleLoader = (setLoading, setLoaderContent)=>({ content, isLoading })=>{
7
+ setLoading(isLoading);
8
+ setLoaderContent(content);
9
+ };
10
+ const LoaderViewComponent = ()=>{
11
+ const [isLoading, setLoading] = useState(false);
12
+ const [content, setLoaderContent] = useState();
13
+ useFluxListener(GothamConstants.LOADING, ({ content, isLoading })=>{
14
+ setLoading(isLoading);
15
+ setLoaderContent(content);
16
+ });
17
+ if (!isLoading) {
18
+ return null;
19
+ }
20
+ return /*#__PURE__*/ _jsx("div", {
21
+ className: "fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center",
22
+ children: /*#__PURE__*/ _jsx(Loader, {
23
+ content: content
24
+ })
25
+ });
26
+ };
27
+ export const LoaderView = /*#__PURE__*/ memo(LoaderViewComponent);
28
+ LoaderView.displayName = 'LoaderView';
29
+
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy92aWV3cy9Mb2FkZXJWaWV3L0xvYWRlclZpZXcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlRmx1eExpc3RlbmVyfSBmcm9tICdAbmxhYnMvYXJraGFtanMtdXRpbHMtcmVhY3QnO1xuaW1wb3J0IHttZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge0xvYWRlcn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIvTG9hZGVyLmpzJztcbmltcG9ydCB7R290aGFtQ29uc3RhbnRzfSBmcm9tICcuLi8uLi9jb25zdGFudHMvR290aGFtQ29uc3RhbnRzLmpzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRlckNvbnRlbnQge1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCB0b2dnbGVMb2FkZXIgPSAoc2V0TG9hZGluZywgc2V0TG9hZGVyQ29udGVudCkgPT4gKHtjb250ZW50LCBpc0xvYWRpbmd9OiBMb2FkZXJDb250ZW50KSA9PiB7XG4gIHNldExvYWRpbmcoaXNMb2FkaW5nKTtcbiAgc2V0TG9hZGVyQ29udGVudChjb250ZW50KTtcbn07XG5cbmNvbnN0IExvYWRlclZpZXdDb21wb25lbnQgPSAoKSA9PiB7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbY29udGVudCwgc2V0TG9hZGVyQ29udGVudF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgdXNlRmx1eExpc3RlbmVyKEdvdGhhbUNvbnN0YW50cy5MT0FESU5HLCAoe2NvbnRlbnQsIGlzTG9hZGluZ306IExvYWRlckNvbnRlbnQpID0+IHtcbiAgICBzZXRMb2FkaW5nKGlzTG9hZGluZyk7XG4gICAgc2V0TG9hZGVyQ29udGVudChjb250ZW50KTtcbiAgfSk7XG5cbiAgaWYoIWlzTG9hZGluZykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgYmctYmxhY2sgYmctb3BhY2l0eS01MCB6LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8TG9hZGVyIGNvbnRlbnQ9e2NvbnRlbnR9IC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgTG9hZGVyVmlldyA9IG1lbW8oTG9hZGVyVmlld0NvbXBvbmVudCk7XG5Mb2FkZXJWaWV3LmRpc3BsYXlOYW1lID0gJ0xvYWRlclZpZXcnO1xuIl0sIm5hbWVzIjpbInVzZUZsdXhMaXN0ZW5lciIsIm1lbW8iLCJ1c2VTdGF0ZSIsIkxvYWRlciIsIkdvdGhhbUNvbnN0YW50cyIsInRvZ2dsZUxvYWRlciIsInNldExvYWRpbmciLCJzZXRMb2FkZXJDb250ZW50IiwiY29udGVudCIsImlzTG9hZGluZyIsIkxvYWRlclZpZXdDb21wb25lbnQiLCJMT0FESU5HIiwiZGl2IiwiY2xhc3NOYW1lIiwiTG9hZGVyVmlldyIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsZUFBZSxRQUFPLDhCQUE4QjtBQUM1RCxTQUFRQyxJQUFJLEVBQUVDLFFBQVEsUUFBTyxRQUFRO0FBRXJDLFNBQVFDLE1BQU0sUUFBTyxvQ0FBb0M7QUFDekQsU0FBUUMsZUFBZSxRQUFPLHFDQUFxQztBQVFuRSxPQUFPLE1BQU1DLGVBQWUsQ0FBQ0MsWUFBWUMsbUJBQXFCLENBQUMsRUFBQ0MsT0FBTyxFQUFFQyxTQUFTLEVBQWdCO1FBQ2hHSCxXQUFXRztRQUNYRixpQkFBaUJDO0lBQ25CLEVBQUU7QUFFRixNQUFNRSxzQkFBc0I7SUFDMUIsTUFBTSxDQUFDRCxXQUFXSCxXQUFXLEdBQUdKLFNBQVM7SUFDekMsTUFBTSxDQUFDTSxTQUFTRCxpQkFBaUIsR0FBR0w7SUFFcENGLGdCQUFnQkksZ0JBQWdCTyxPQUFPLEVBQUUsQ0FBQyxFQUFDSCxPQUFPLEVBQUVDLFNBQVMsRUFBZ0I7UUFDM0VILFdBQVdHO1FBQ1hGLGlCQUFpQkM7SUFDbkI7SUFFQSxJQUFHLENBQUNDLFdBQVc7UUFDYixPQUFPO0lBQ1Q7SUFFQSxxQkFDRSxLQUFDRztRQUFJQyxXQUFVO2tCQUNiLGNBQUEsS0FBQ1Y7WUFBT0ssU0FBU0E7OztBQUd2QjtBQUVBLE9BQU8sTUFBTU0sMkJBQWFiLEtBQUtTLHFCQUFxQjtBQUNwREksV0FBV0MsV0FBVyxHQUFHIn0=
@@ -0,0 +1,13 @@
1
+ import type { ElementType } from 'react';
2
+ export type MenuItems = {
3
+ readonly current?: boolean;
4
+ readonly href: string;
5
+ readonly icon?: ElementType;
6
+ readonly name: string;
7
+ };
8
+ export interface MenuViewProps {
9
+ sideMenuItems: MenuItems[];
10
+ userMenuItems: MenuItems[];
11
+ }
12
+ export declare const MenuView: import("react").NamedExoticComponent<MenuViewProps>;
13
+ export default MenuView;