@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,351 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '@nlabs/utils';
3
+ import { ArrowLeft, ArrowRight, Bookmark, BookOpen, ChevronRight, List, Rss } from 'lucide-react';
4
+ const defaultLinks = [
5
+ {
6
+ description: 'Learn how to integrate GothamUI components with your app.',
7
+ href: '/docs',
8
+ icon: BookOpen,
9
+ label: 'Documentation'
10
+ },
11
+ {
12
+ description: 'Find the available components, utilities, and package exports.',
13
+ href: '/docs/api',
14
+ icon: List,
15
+ label: 'API Reference'
16
+ },
17
+ {
18
+ description: 'Review common setup patterns and implementation notes.',
19
+ href: '/guides',
20
+ icon: Bookmark,
21
+ label: 'Guides'
22
+ },
23
+ {
24
+ description: 'Read the latest updates and project notes.',
25
+ href: '/blog',
26
+ icon: Rss,
27
+ label: 'Blog'
28
+ }
29
+ ];
30
+ const defaultFooterLinks = [
31
+ {
32
+ href: '/support',
33
+ label: 'Contact support'
34
+ },
35
+ {
36
+ href: '/status',
37
+ label: 'Status'
38
+ }
39
+ ];
40
+ const renderLogo = (logo)=>logo ? /*#__PURE__*/ _jsx("div", {
41
+ className: "mx-auto flex h-10 w-fit items-center justify-center sm:h-12",
42
+ children: logo
43
+ }) : null;
44
+ const NotFoundContent = ({ center = false, description, homeHref, homeLabel, statusCode, supportHref, supportLabel, title })=>/*#__PURE__*/ _jsxs("div", {
45
+ className: cn(center && 'text-center'),
46
+ children: [
47
+ /*#__PURE__*/ _jsx("p", {
48
+ className: "text-base/8 font-semibold text-primary dark:text-primary-dark-300",
49
+ children: statusCode
50
+ }),
51
+ /*#__PURE__*/ _jsx("h1", {
52
+ className: "mt-4 text-5xl font-semibold tracking-tight text-balance text-gray-900 sm:text-7xl dark:text-white",
53
+ children: title
54
+ }),
55
+ /*#__PURE__*/ _jsx("p", {
56
+ className: "mt-6 text-lg font-medium text-pretty text-gray-500 sm:text-xl/8 dark:text-gray-400",
57
+ children: description
58
+ }),
59
+ /*#__PURE__*/ _jsxs("div", {
60
+ className: cn('mt-10 flex flex-wrap items-center gap-x-6 gap-y-3', center && 'justify-center'),
61
+ children: [
62
+ /*#__PURE__*/ _jsx("a", {
63
+ className: "inline-flex items-center rounded-md bg-primary px-3.5 py-2.5 text-sm font-semibold text-white shadow-xs hover:bg-primary-700 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary dark:bg-primary-dark dark:hover:bg-primary-dark-300",
64
+ href: homeHref,
65
+ children: homeLabel
66
+ }),
67
+ supportHref ? /*#__PURE__*/ _jsxs("a", {
68
+ className: "inline-flex items-center gap-1 text-sm font-semibold text-gray-900 dark:text-white",
69
+ href: supportHref,
70
+ children: [
71
+ supportLabel,
72
+ /*#__PURE__*/ _jsx(ArrowRight, {
73
+ "aria-hidden": "true",
74
+ className: "size-4"
75
+ })
76
+ ]
77
+ }) : null
78
+ ]
79
+ })
80
+ ]
81
+ });
82
+ const PopularLinks = ({ links })=>/*#__PURE__*/ _jsxs("div", {
83
+ className: "mx-auto mt-16 flow-root max-w-lg sm:mt-20",
84
+ children: [
85
+ /*#__PURE__*/ _jsx("h2", {
86
+ className: "sr-only",
87
+ children: "Popular pages"
88
+ }),
89
+ /*#__PURE__*/ _jsx("ul", {
90
+ className: "-mt-6 divide-y divide-gray-900/5 border-b border-gray-900/5 dark:divide-white/10 dark:border-white/10",
91
+ role: "list",
92
+ children: links.map((link)=>{
93
+ const Icon = link.icon ?? BookOpen;
94
+ return /*#__PURE__*/ _jsxs("li", {
95
+ className: "relative flex gap-x-6 py-6",
96
+ children: [
97
+ /*#__PURE__*/ _jsx("div", {
98
+ className: "flex size-10 flex-none items-center justify-center rounded-lg shadow-xs outline-1 outline-gray-900/10 dark:bg-gray-800/50 dark:-outline-offset-1 dark:outline-white/10",
99
+ children: /*#__PURE__*/ _jsx(Icon, {
100
+ "aria-hidden": "true",
101
+ className: "size-6 text-primary dark:text-primary-dark-300"
102
+ })
103
+ }),
104
+ /*#__PURE__*/ _jsxs("div", {
105
+ className: "flex-auto",
106
+ children: [
107
+ /*#__PURE__*/ _jsx("h3", {
108
+ className: "text-sm/6 font-semibold text-gray-900 dark:text-white",
109
+ children: /*#__PURE__*/ _jsxs("a", {
110
+ href: link.href,
111
+ children: [
112
+ /*#__PURE__*/ _jsx("span", {
113
+ "aria-hidden": "true",
114
+ className: "absolute inset-0"
115
+ }),
116
+ link.label
117
+ ]
118
+ })
119
+ }),
120
+ link.description ? /*#__PURE__*/ _jsx("p", {
121
+ className: "mt-2 text-sm/6 text-gray-600 dark:text-gray-400",
122
+ children: link.description
123
+ }) : null
124
+ ]
125
+ }),
126
+ /*#__PURE__*/ _jsx("div", {
127
+ className: "flex-none self-center",
128
+ children: /*#__PURE__*/ _jsx(ChevronRight, {
129
+ "aria-hidden": "true",
130
+ className: "size-5 text-gray-400 dark:text-gray-500"
131
+ })
132
+ })
133
+ ]
134
+ }, `${link.label}-${link.href}`);
135
+ })
136
+ })
137
+ ]
138
+ });
139
+ export const NotFound = ({ backgroundImageAlt = '', backgroundImageSrc, className, copyright, description = 'Sorry, we could not find the page you are looking for.', footerLinks = defaultFooterLinks, homeHref = '/', homeLabel = 'Go back home', imageAlt = '', imageSrc, links = defaultLinks, logo, socialLinks = [], statusCode = '404', supportHref, supportLabel = 'Contact support', title = 'Page not found', variant = 'simple', ...props })=>{
140
+ if (variant === 'background') {
141
+ return /*#__PURE__*/ _jsxs("div", {
142
+ className: cn('relative isolate min-h-screen', className),
143
+ "data-slot": "not-found",
144
+ "data-variant": variant,
145
+ ...props,
146
+ children: [
147
+ backgroundImageSrc ? /*#__PURE__*/ _jsx("img", {
148
+ alt: backgroundImageAlt,
149
+ className: "absolute inset-0 -z-10 size-full object-cover object-top",
150
+ src: backgroundImageSrc
151
+ }) : null,
152
+ /*#__PURE__*/ _jsx("div", {
153
+ className: "absolute inset-0 -z-10 bg-gray-950/70"
154
+ }),
155
+ /*#__PURE__*/ _jsxs("main", {
156
+ className: "mx-auto max-w-7xl px-6 py-32 text-center sm:py-40 lg:px-8",
157
+ children: [
158
+ /*#__PURE__*/ _jsx("p", {
159
+ className: "text-base/8 font-semibold text-white",
160
+ children: statusCode
161
+ }),
162
+ /*#__PURE__*/ _jsx("h1", {
163
+ className: "mt-4 text-5xl font-semibold tracking-tight text-balance text-white sm:text-7xl",
164
+ children: title
165
+ }),
166
+ /*#__PURE__*/ _jsx("p", {
167
+ className: "mt-6 text-lg font-medium text-pretty text-white/70 sm:text-xl/8",
168
+ children: description
169
+ }),
170
+ /*#__PURE__*/ _jsx("div", {
171
+ className: "mt-10 flex justify-center",
172
+ children: /*#__PURE__*/ _jsxs("a", {
173
+ className: "inline-flex items-center gap-1 text-sm/7 font-semibold text-white hover:text-white/90",
174
+ href: homeHref,
175
+ children: [
176
+ /*#__PURE__*/ _jsx(ArrowLeft, {
177
+ "aria-hidden": "true",
178
+ className: "size-4"
179
+ }),
180
+ homeLabel
181
+ ]
182
+ })
183
+ })
184
+ ]
185
+ })
186
+ ]
187
+ });
188
+ }
189
+ if (variant === 'split') {
190
+ return /*#__PURE__*/ _jsxs("div", {
191
+ className: cn('grid min-h-screen grid-cols-1 grid-rows-[auto_1fr_auto] bg-white lg:grid-cols-[minmax(0,36rem)_1fr] dark:bg-gray-900', className),
192
+ "data-slot": "not-found",
193
+ "data-variant": variant,
194
+ ...props,
195
+ children: [
196
+ /*#__PURE__*/ _jsx("header", {
197
+ className: "mx-auto w-full max-w-7xl px-6 pt-6 sm:pt-10 lg:col-span-2 lg:col-start-1 lg:row-start-1 lg:px-8",
198
+ children: logo ? /*#__PURE__*/ _jsx("a", {
199
+ href: homeHref,
200
+ children: logo
201
+ }) : null
202
+ }),
203
+ /*#__PURE__*/ _jsx("main", {
204
+ className: "mx-auto flex w-full max-w-7xl items-center px-6 py-24 sm:py-32 lg:col-span-2 lg:col-start-1 lg:row-start-2 lg:px-8",
205
+ children: /*#__PURE__*/ _jsx("div", {
206
+ className: "max-w-lg",
207
+ children: /*#__PURE__*/ _jsx(NotFoundContent, {
208
+ description: description,
209
+ homeHref: homeHref,
210
+ homeLabel: homeLabel,
211
+ statusCode: statusCode,
212
+ supportHref: undefined,
213
+ supportLabel: supportLabel,
214
+ title: title
215
+ })
216
+ })
217
+ }),
218
+ /*#__PURE__*/ _jsx("footer", {
219
+ className: "self-end lg:col-span-2 lg:col-start-1 lg:row-start-3",
220
+ children: /*#__PURE__*/ _jsx("div", {
221
+ className: "border-t border-gray-100 bg-gray-50 py-10 dark:border-white/10 dark:bg-gray-800/50",
222
+ children: /*#__PURE__*/ _jsx("nav", {
223
+ className: "mx-auto flex w-full max-w-7xl items-center gap-x-4 px-6 text-sm/7 text-gray-600 lg:px-8 dark:text-gray-400",
224
+ children: footerLinks.map((link, index)=>/*#__PURE__*/ _jsxs("span", {
225
+ className: "contents",
226
+ children: [
227
+ index > 0 ? /*#__PURE__*/ _jsx("span", {
228
+ "aria-hidden": "true",
229
+ className: "size-0.5 rounded-full bg-gray-300 dark:bg-gray-600"
230
+ }) : null,
231
+ /*#__PURE__*/ _jsx("a", {
232
+ href: link.href,
233
+ children: link.label
234
+ })
235
+ ]
236
+ }, `${link.label}-${link.href}`))
237
+ })
238
+ })
239
+ }),
240
+ imageSrc ? /*#__PURE__*/ _jsx("div", {
241
+ className: "hidden lg:relative lg:col-start-2 lg:row-start-1 lg:row-end-4 lg:block",
242
+ children: /*#__PURE__*/ _jsx("img", {
243
+ alt: imageAlt,
244
+ className: "absolute inset-0 size-full object-cover",
245
+ src: imageSrc
246
+ })
247
+ }) : null
248
+ ]
249
+ });
250
+ }
251
+ if (variant === 'popular') {
252
+ return /*#__PURE__*/ _jsxs("div", {
253
+ className: cn('min-h-screen bg-white dark:bg-gray-900', className),
254
+ "data-slot": "not-found",
255
+ "data-variant": variant,
256
+ ...props,
257
+ children: [
258
+ /*#__PURE__*/ _jsxs("main", {
259
+ className: "mx-auto w-full max-w-7xl px-6 pt-10 pb-16 sm:pb-24 lg:px-8",
260
+ children: [
261
+ renderLogo(logo),
262
+ /*#__PURE__*/ _jsx("div", {
263
+ className: "mx-auto mt-20 max-w-2xl text-center sm:mt-24",
264
+ children: /*#__PURE__*/ _jsx(NotFoundContent, {
265
+ center: true,
266
+ description: description,
267
+ homeHref: homeHref,
268
+ homeLabel: homeLabel,
269
+ statusCode: statusCode,
270
+ supportHref: undefined,
271
+ supportLabel: supportLabel,
272
+ title: title
273
+ })
274
+ }),
275
+ /*#__PURE__*/ _jsx(PopularLinks, {
276
+ links: links
277
+ }),
278
+ /*#__PURE__*/ _jsx("div", {
279
+ className: "mt-10 flex justify-center",
280
+ children: /*#__PURE__*/ _jsxs("a", {
281
+ className: "inline-flex items-center gap-1 text-sm/6 font-semibold text-primary dark:text-primary-dark-300",
282
+ href: homeHref,
283
+ children: [
284
+ /*#__PURE__*/ _jsx(ArrowLeft, {
285
+ "aria-hidden": "true",
286
+ className: "size-4"
287
+ }),
288
+ homeLabel
289
+ ]
290
+ })
291
+ })
292
+ ]
293
+ }),
294
+ copyright || socialLinks.length > 0 ? /*#__PURE__*/ _jsx("footer", {
295
+ className: "border-t border-gray-100 py-6 sm:py-10 dark:border-white/10",
296
+ children: /*#__PURE__*/ _jsxs("div", {
297
+ className: "mx-auto flex max-w-7xl flex-col items-center justify-center gap-8 px-6 sm:flex-row lg:px-8",
298
+ children: [
299
+ copyright ? /*#__PURE__*/ _jsx("p", {
300
+ className: "text-sm/7 text-gray-400 dark:text-gray-500",
301
+ children: copyright
302
+ }) : null,
303
+ copyright && socialLinks.length > 0 ? /*#__PURE__*/ _jsx("div", {
304
+ className: "hidden sm:block sm:h-7 sm:w-px sm:flex-none sm:bg-gray-200 dark:sm:bg-gray-700"
305
+ }) : null,
306
+ /*#__PURE__*/ _jsx("div", {
307
+ className: "flex gap-x-4",
308
+ children: socialLinks.map((item)=>{
309
+ const Icon = item.icon;
310
+ return /*#__PURE__*/ _jsxs("a", {
311
+ className: "text-gray-400 hover:text-gray-500 dark:text-gray-500 dark:hover:text-gray-400",
312
+ href: item.href,
313
+ children: [
314
+ /*#__PURE__*/ _jsx("span", {
315
+ className: "sr-only",
316
+ children: item.label
317
+ }),
318
+ /*#__PURE__*/ _jsx(Icon, {
319
+ "aria-hidden": "true",
320
+ className: "size-6"
321
+ })
322
+ ]
323
+ }, `${item.label}-${item.href}`);
324
+ })
325
+ })
326
+ ]
327
+ })
328
+ }) : null
329
+ ]
330
+ });
331
+ }
332
+ return /*#__PURE__*/ _jsx("main", {
333
+ className: cn('grid min-h-screen place-items-center bg-white px-6 py-24 sm:py-32 lg:px-8 dark:bg-gray-900', className),
334
+ "data-slot": "not-found",
335
+ "data-variant": variant,
336
+ ...props,
337
+ children: /*#__PURE__*/ _jsx(NotFoundContent, {
338
+ center: true,
339
+ description: description,
340
+ homeHref: homeHref,
341
+ homeLabel: homeLabel,
342
+ statusCode: statusCode,
343
+ supportHref: supportHref,
344
+ supportLabel: supportLabel,
345
+ title: title
346
+ })
347
+ });
348
+ };
349
+ export default NotFound;
350
+
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHtBcnJvd0xlZnQsIEFycm93UmlnaHQsIEJvb2ttYXJrLCBCb29rT3BlbiwgQ2hldnJvblJpZ2h0LCBMaXN0LCBSc3N9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtDb21wb25lbnRUeXBlLCBIVE1MQXR0cmlidXRlcywgUmVhY3ROb2RlLCBTVkdQcm9wc30gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgdHlwZSBOb3RGb3VuZFZhcmlhbnQgPSAnc2ltcGxlJyB8ICdwb3B1bGFyJyB8ICdzcGxpdCcgfCAnYmFja2dyb3VuZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90Rm91bmRMaW5rIHtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhyZWY6IHN0cmluZztcbiAgcmVhZG9ubHkgaWNvbj86IENvbXBvbmVudFR5cGU8U1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdEZvdW5kU29jaWFsTGluayB7XG4gIHJlYWRvbmx5IGhyZWY6IHN0cmluZztcbiAgcmVhZG9ubHkgaWNvbjogQ29tcG9uZW50VHlwZTxTVkdQcm9wczxTVkdTVkdFbGVtZW50Pj47XG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90Rm91bmRQcm9wcyBleHRlbmRzIE9taXQ8SFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCAndGl0bGUnPiB7XG4gIHJlYWRvbmx5IGJhY2tncm91bmRJbWFnZUFsdD86IHN0cmluZztcbiAgcmVhZG9ubHkgYmFja2dyb3VuZEltYWdlU3JjPzogc3RyaW5nO1xuICByZWFkb25seSBjb3B5cmlnaHQ/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogUmVhY3ROb2RlO1xuICByZWFkb25seSBmb290ZXJMaW5rcz86IHJlYWRvbmx5IE5vdEZvdW5kTGlua1tdO1xuICByZWFkb25seSBob21lSHJlZj86IHN0cmluZztcbiAgcmVhZG9ubHkgaG9tZUxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBpbWFnZUFsdD86IHN0cmluZztcbiAgcmVhZG9ubHkgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxpbmtzPzogcmVhZG9ubHkgTm90Rm91bmRMaW5rW107XG4gIHJlYWRvbmx5IGxvZ28/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IHNvY2lhbExpbmtzPzogcmVhZG9ubHkgTm90Rm91bmRTb2NpYWxMaW5rW107XG4gIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBSZWFjdE5vZGU7XG4gIHJlYWRvbmx5IHN1cHBvcnRIcmVmPzogc3RyaW5nO1xuICByZWFkb25seSBzdXBwb3J0TGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpdGxlPzogUmVhY3ROb2RlO1xuICByZWFkb25seSB2YXJpYW50PzogTm90Rm91bmRWYXJpYW50O1xufVxuXG5jb25zdCBkZWZhdWx0TGlua3M6IHJlYWRvbmx5IE5vdEZvdW5kTGlua1tdID0gW1xuICB7XG4gICAgZGVzY3JpcHRpb246ICdMZWFybiBob3cgdG8gaW50ZWdyYXRlIEdvdGhhbVVJIGNvbXBvbmVudHMgd2l0aCB5b3VyIGFwcC4nLFxuICAgIGhyZWY6ICcvZG9jcycsXG4gICAgaWNvbjogQm9va09wZW4sXG4gICAgbGFiZWw6ICdEb2N1bWVudGF0aW9uJ1xuICB9LFxuICB7XG4gICAgZGVzY3JpcHRpb246ICdGaW5kIHRoZSBhdmFpbGFibGUgY29tcG9uZW50cywgdXRpbGl0aWVzLCBhbmQgcGFja2FnZSBleHBvcnRzLicsXG4gICAgaHJlZjogJy9kb2NzL2FwaScsXG4gICAgaWNvbjogTGlzdCxcbiAgICBsYWJlbDogJ0FQSSBSZWZlcmVuY2UnXG4gIH0sXG4gIHtcbiAgICBkZXNjcmlwdGlvbjogJ1JldmlldyBjb21tb24gc2V0dXAgcGF0dGVybnMgYW5kIGltcGxlbWVudGF0aW9uIG5vdGVzLicsXG4gICAgaHJlZjogJy9ndWlkZXMnLFxuICAgIGljb246IEJvb2ttYXJrLFxuICAgIGxhYmVsOiAnR3VpZGVzJ1xuICB9LFxuICB7XG4gICAgZGVzY3JpcHRpb246ICdSZWFkIHRoZSBsYXRlc3QgdXBkYXRlcyBhbmQgcHJvamVjdCBub3Rlcy4nLFxuICAgIGhyZWY6ICcvYmxvZycsXG4gICAgaWNvbjogUnNzLFxuICAgIGxhYmVsOiAnQmxvZydcbiAgfVxuXTtcblxuY29uc3QgZGVmYXVsdEZvb3RlckxpbmtzOiByZWFkb25seSBOb3RGb3VuZExpbmtbXSA9IFtcbiAge2hyZWY6ICcvc3VwcG9ydCcsIGxhYmVsOiAnQ29udGFjdCBzdXBwb3J0J30sXG4gIHtocmVmOiAnL3N0YXR1cycsIGxhYmVsOiAnU3RhdHVzJ31cbl07XG5cbmNvbnN0IHJlbmRlckxvZ28gPSAobG9nbz86IFJlYWN0Tm9kZSkgPT4gbG9nbyA/IChcbiAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggaC0xMCB3LWZpdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc206aC0xMlwiPlxuICAgIHtsb2dvfVxuICA8L2Rpdj5cbikgOiBudWxsO1xuXG5jb25zdCBOb3RGb3VuZENvbnRlbnQgPSAoe1xuICBjZW50ZXIgPSBmYWxzZSxcbiAgZGVzY3JpcHRpb24sXG4gIGhvbWVIcmVmLFxuICBob21lTGFiZWwsXG4gIHN0YXR1c0NvZGUsXG4gIHN1cHBvcnRIcmVmLFxuICBzdXBwb3J0TGFiZWwsXG4gIHRpdGxlXG59OiBQaWNrPE5vdEZvdW5kUHJvcHMsICdkZXNjcmlwdGlvbicgfCAnaG9tZUhyZWYnIHwgJ2hvbWVMYWJlbCcgfCAnc3RhdHVzQ29kZScgfCAnc3VwcG9ydEhyZWYnIHwgJ3N1cHBvcnRMYWJlbCcgfCAndGl0bGUnPiAmIHtcbiAgcmVhZG9ubHkgY2VudGVyPzogYm9vbGVhbjtcbn0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2NuKGNlbnRlciAmJiAndGV4dC1jZW50ZXInKX0+XG4gICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlLzggZm9udC1zZW1pYm9sZCB0ZXh0LXByaW1hcnkgZGFyazp0ZXh0LXByaW1hcnktZGFyay0zMDBcIj57c3RhdHVzQ29kZX08L3A+XG4gICAgPGgxIGNsYXNzTmFtZT1cIm10LTQgdGV4dC01eGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWJhbGFuY2UgdGV4dC1ncmF5LTkwMCBzbTp0ZXh0LTd4bCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgIHt0aXRsZX1cbiAgICA8L2gxPlxuICAgIDxwIGNsYXNzTmFtZT1cIm10LTYgdGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LXByZXR0eSB0ZXh0LWdyYXktNTAwIHNtOnRleHQteGwvOCBkYXJrOnRleHQtZ3JheS00MDBcIj5cbiAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzc05hbWU9e2NuKCdtdC0xMCBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtNiBnYXAteS0zJywgY2VudGVyICYmICdqdXN0aWZ5LWNlbnRlcicpfT5cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJnLXByaW1hcnkgcHgtMy41IHB5LTIuNSB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBzaGFkb3cteHMgaG92ZXI6YmctcHJpbWFyeS03MDAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC0yIGZvY3VzLXZpc2libGU6b3V0bGluZS1wcmltYXJ5IGRhcms6YmctcHJpbWFyeS1kYXJrIGRhcms6aG92ZXI6YmctcHJpbWFyeS1kYXJrLTMwMFwiXG4gICAgICAgIGhyZWY9e2hvbWVIcmVmfVxuICAgICAgPlxuICAgICAgICB7aG9tZUxhYmVsfVxuICAgICAgPC9hPlxuICAgICAge3N1cHBvcnRIcmVmID8gKFxuICAgICAgICA8YSBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCIgaHJlZj17c3VwcG9ydEhyZWZ9PlxuICAgICAgICAgIHtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgPEFycm93UmlnaHQgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgUG9wdWxhckxpbmtzID0gKHtsaW5rc306IHtyZWFkb25seSBsaW5rczogcmVhZG9ubHkgTm90Rm91bmRMaW5rW119KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtdC0xNiBmbG93LXJvb3QgbWF4LXctbGcgc206bXQtMjBcIj5cbiAgICA8aDIgY2xhc3NOYW1lPVwic3Itb25seVwiPlBvcHVsYXIgcGFnZXM8L2gyPlxuICAgIDx1bFxuICAgICAgY2xhc3NOYW1lPVwiLW10LTYgZGl2aWRlLXkgZGl2aWRlLWdyYXktOTAwLzUgYm9yZGVyLWIgYm9yZGVyLWdyYXktOTAwLzUgZGFyazpkaXZpZGUtd2hpdGUvMTAgZGFyazpib3JkZXItd2hpdGUvMTBcIlxuICAgICAgcm9sZT1cImxpc3RcIlxuICAgID5cbiAgICAgIHtsaW5rcy5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgY29uc3QgSWNvbiA9IGxpbmsuaWNvbiA/PyBCb29rT3BlbjtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGdhcC14LTYgcHktNlwiIGtleT17YCR7bGluay5sYWJlbH0tJHtsaW5rLmhyZWZ9YH0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggc2l6ZS0xMCBmbGV4LW5vbmUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgc2hhZG93LXhzIG91dGxpbmUtMSBvdXRsaW5lLWdyYXktOTAwLzEwIGRhcms6YmctZ3JheS04MDAvNTAgZGFyazotb3V0bGluZS1vZmZzZXQtMSBkYXJrOm91dGxpbmUtd2hpdGUvMTBcIj5cbiAgICAgICAgICAgICAgPEljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwic2l6ZS02IHRleHQtcHJpbWFyeSBkYXJrOnRleHQtcHJpbWFyeS1kYXJrLTMwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9e2xpbmsuaHJlZn0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wXCIgLz5cbiAgICAgICAgICAgICAgICAgIHtsaW5rLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAge2xpbmsuZGVzY3JpcHRpb24gPyAoXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtLzYgdGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS00MDBcIj57bGluay5kZXNjcmlwdGlvbn08L3A+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtbm9uZSBzZWxmLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNpemUtNSB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC91bD5cbiAgPC9kaXY+XG4pO1xuXG5leHBvcnQgY29uc3QgTm90Rm91bmQgPSAoe1xuICBiYWNrZ3JvdW5kSW1hZ2VBbHQgPSAnJyxcbiAgYmFja2dyb3VuZEltYWdlU3JjLFxuICBjbGFzc05hbWUsXG4gIGNvcHlyaWdodCxcbiAgZGVzY3JpcHRpb24gPSAnU29ycnksIHdlIGNvdWxkIG5vdCBmaW5kIHRoZSBwYWdlIHlvdSBhcmUgbG9va2luZyBmb3IuJyxcbiAgZm9vdGVyTGlua3MgPSBkZWZhdWx0Rm9vdGVyTGlua3MsXG4gIGhvbWVIcmVmID0gJy8nLFxuICBob21lTGFiZWwgPSAnR28gYmFjayBob21lJyxcbiAgaW1hZ2VBbHQgPSAnJyxcbiAgaW1hZ2VTcmMsXG4gIGxpbmtzID0gZGVmYXVsdExpbmtzLFxuICBsb2dvLFxuICBzb2NpYWxMaW5rcyA9IFtdLFxuICBzdGF0dXNDb2RlID0gJzQwNCcsXG4gIHN1cHBvcnRIcmVmLFxuICBzdXBwb3J0TGFiZWwgPSAnQ29udGFjdCBzdXBwb3J0JyxcbiAgdGl0bGUgPSAnUGFnZSBub3QgZm91bmQnLFxuICB2YXJpYW50ID0gJ3NpbXBsZScsXG4gIC4uLnByb3BzXG59OiBOb3RGb3VuZFByb3BzKSA9PiB7XG4gIGlmICh2YXJpYW50ID09PSAnYmFja2dyb3VuZCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdyZWxhdGl2ZSBpc29sYXRlIG1pbi1oLXNjcmVlbicsIGNsYXNzTmFtZSl9IGRhdGEtc2xvdD1cIm5vdC1mb3VuZFwiIGRhdGEtdmFyaWFudD17dmFyaWFudH0gey4uLnByb3BzfT5cbiAgICAgICAge2JhY2tncm91bmRJbWFnZVNyYyA/IChcbiAgICAgICAgICA8aW1nIGFsdD17YmFja2dyb3VuZEltYWdlQWx0fSBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIC16LTEwIHNpemUtZnVsbCBvYmplY3QtY292ZXIgb2JqZWN0LXRvcFwiIHNyYz17YmFja2dyb3VuZEltYWdlU3JjfSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIC16LTEwIGJnLWdyYXktOTUwLzcwXCIgLz5cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy03eGwgcHgtNiBweS0zMiB0ZXh0LWNlbnRlciBzbTpweS00MCBsZzpweC04XCI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlLzggZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlXCI+e3N0YXR1c0NvZGV9PC9wPlxuICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC00IHRleHQtNXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1iYWxhbmNlIHRleHQtd2hpdGUgc206dGV4dC03eGxcIj57dGl0bGV9PC9oMT5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC02IHRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1wcmV0dHkgdGV4dC13aGl0ZS83MCBzbTp0ZXh0LXhsLzhcIj57ZGVzY3JpcHRpb259PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMTAgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtc20vNyBmb250LXNlbWlib2xkIHRleHQtd2hpdGUgaG92ZXI6dGV4dC13aGl0ZS85MFwiIGhyZWY9e2hvbWVIcmVmfT5cbiAgICAgICAgICAgICAgPEFycm93TGVmdCBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICAgICAgICB7aG9tZUxhYmVsfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21haW4+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHZhcmlhbnQgPT09ICdzcGxpdCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NuKCdncmlkIG1pbi1oLXNjcmVlbiBncmlkLWNvbHMtMSBncmlkLXJvd3MtW2F1dG9fMWZyX2F1dG9dIGJnLXdoaXRlIGxnOmdyaWQtY29scy1bbWlubWF4KDAsMzZyZW0pXzFmcl0gZGFyazpiZy1ncmF5LTkwMCcsIGNsYXNzTmFtZSl9XG4gICAgICAgIGRhdGEtc2xvdD1cIm5vdC1mb3VuZFwiXG4gICAgICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm14LWF1dG8gdy1mdWxsIG1heC13LTd4bCBweC02IHB0LTYgc206cHQtMTAgbGc6Y29sLXNwYW4tMiBsZzpjb2wtc3RhcnQtMSBsZzpyb3ctc3RhcnQtMSBsZzpweC04XCI+XG4gICAgICAgICAge2xvZ28gPyA8YSBocmVmPXtob21lSHJlZn0+e2xvZ299PC9hPiA6IG51bGx9XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggdy1mdWxsIG1heC13LTd4bCBpdGVtcy1jZW50ZXIgcHgtNiBweS0yNCBzbTpweS0zMiBsZzpjb2wtc3Bhbi0yIGxnOmNvbC1zdGFydC0xIGxnOnJvdy1zdGFydC0yIGxnOnB4LThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LWxnXCI+XG4gICAgICAgICAgICA8Tm90Rm91bmRDb250ZW50XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgaG9tZUhyZWY9e2hvbWVIcmVmfVxuICAgICAgICAgICAgICBob21lTGFiZWw9e2hvbWVMYWJlbH1cbiAgICAgICAgICAgICAgc3RhdHVzQ29kZT17c3RhdHVzQ29kZX1cbiAgICAgICAgICAgICAgc3VwcG9ydEhyZWY9e3VuZGVmaW5lZH1cbiAgICAgICAgICAgICAgc3VwcG9ydExhYmVsPXtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWFpbj5cbiAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJzZWxmLWVuZCBsZzpjb2wtc3Bhbi0yIGxnOmNvbC1zdGFydC0xIGxnOnJvdy1zdGFydC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItZ3JheS0xMDAgYmctZ3JheS01MCBweS0xMCBkYXJrOmJvcmRlci13aGl0ZS8xMCBkYXJrOmJnLWdyYXktODAwLzUwXCI+XG4gICAgICAgICAgICA8bmF2IGNsYXNzTmFtZT1cIm14LWF1dG8gZmxleCB3LWZ1bGwgbWF4LXctN3hsIGl0ZW1zLWNlbnRlciBnYXAteC00IHB4LTYgdGV4dC1zbS83IHRleHQtZ3JheS02MDAgbGc6cHgtOCBkYXJrOnRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAge2Zvb3RlckxpbmtzLm1hcCgobGluaywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjb250ZW50c1wiIGtleT17YCR7bGluay5sYWJlbH0tJHtsaW5rLmhyZWZ9YH0+XG4gICAgICAgICAgICAgICAgICB7aW5kZXggPiAwID8gPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwic2l6ZS0wLjUgcm91bmRlZC1mdWxsIGJnLWdyYXktMzAwIGRhcms6YmctZ3JheS02MDBcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8YSBocmVmPXtsaW5rLmhyZWZ9PntsaW5rLmxhYmVsfTwvYT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9vdGVyPlxuICAgICAgICB7aW1hZ2VTcmMgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbGc6cmVsYXRpdmUgbGc6Y29sLXN0YXJ0LTIgbGc6cm93LXN0YXJ0LTEgbGc6cm93LWVuZC00IGxnOmJsb2NrXCI+XG4gICAgICAgICAgICA8aW1nIGFsdD17aW1hZ2VBbHR9IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgc2l6ZS1mdWxsIG9iamVjdC1jb3ZlclwiIHNyYz17aW1hZ2VTcmN9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh2YXJpYW50ID09PSAncG9wdWxhcicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdtaW4taC1zY3JlZW4gYmctd2hpdGUgZGFyazpiZy1ncmF5LTkwMCcsIGNsYXNzTmFtZSl9IGRhdGEtc2xvdD1cIm5vdC1mb3VuZFwiIGRhdGEtdmFyaWFudD17dmFyaWFudH0gey4uLnByb3BzfT5cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibXgtYXV0byB3LWZ1bGwgbWF4LXctN3hsIHB4LTYgcHQtMTAgcGItMTYgc206cGItMjQgbGc6cHgtOFwiPlxuICAgICAgICAgIHtyZW5kZXJMb2dvKGxvZ28pfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtdC0yMCBtYXgtdy0yeGwgdGV4dC1jZW50ZXIgc206bXQtMjRcIj5cbiAgICAgICAgICAgIDxOb3RGb3VuZENvbnRlbnRcbiAgICAgICAgICAgICAgY2VudGVyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgaG9tZUhyZWY9e2hvbWVIcmVmfVxuICAgICAgICAgICAgICBob21lTGFiZWw9e2hvbWVMYWJlbH1cbiAgICAgICAgICAgICAgc3RhdHVzQ29kZT17c3RhdHVzQ29kZX1cbiAgICAgICAgICAgICAgc3VwcG9ydEhyZWY9e3VuZGVmaW5lZH1cbiAgICAgICAgICAgICAgc3VwcG9ydExhYmVsPXtzdXBwb3J0TGFiZWx9XG4gICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFBvcHVsYXJMaW5rcyBsaW5rcz17bGlua3N9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xMCBmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1zbS82IGZvbnQtc2VtaWJvbGQgdGV4dC1wcmltYXJ5IGRhcms6dGV4dC1wcmltYXJ5LWRhcmstMzAwXCIgaHJlZj17aG9tZUhyZWZ9PlxuICAgICAgICAgICAgICA8QXJyb3dMZWZ0IGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+XG4gICAgICAgICAgICAgIHtob21lTGFiZWx9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWFpbj5cbiAgICAgICAgeyhjb3B5cmlnaHQgfHwgc29jaWFsTGlua3MubGVuZ3RoID4gMCkgPyAoXG4gICAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItZ3JheS0xMDAgcHktNiBzbTpweS0xMCBkYXJrOmJvcmRlci13aGl0ZS8xMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctN3hsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtOCBweC02IHNtOmZsZXgtcm93IGxnOnB4LThcIj5cbiAgICAgICAgICAgICAge2NvcHlyaWdodCA/IDxwIGNsYXNzTmFtZT1cInRleHQtc20vNyB0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMFwiPntjb3B5cmlnaHR9PC9wPiA6IG51bGx9XG4gICAgICAgICAgICAgIHsoY29weXJpZ2h0ICYmIHNvY2lhbExpbmtzLmxlbmd0aCA+IDApID8gPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gc206YmxvY2sgc206aC03IHNtOnctcHggc206ZmxleC1ub25lIHNtOmJnLWdyYXktMjAwIGRhcms6c206YmctZ3JheS03MDBcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAteC00XCI+XG4gICAgICAgICAgICAgICAge3NvY2lhbExpbmtzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgSWNvbiA9IGl0ZW0uaWNvbjtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtZ3JheS00MDBcIiBocmVmPXtpdGVtLmhyZWZ9IGtleT17YCR7aXRlbS5sYWJlbH0tJHtpdGVtLmhyZWZ9YH0+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPntpdGVtLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJzaXplLTZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluXG4gICAgICBjbGFzc05hbWU9e2NuKCdncmlkIG1pbi1oLXNjcmVlbiBwbGFjZS1pdGVtcy1jZW50ZXIgYmctd2hpdGUgcHgtNiBweS0yNCBzbTpweS0zMiBsZzpweC04IGRhcms6YmctZ3JheS05MDAnLCBjbGFzc05hbWUpfVxuICAgICAgZGF0YS1zbG90PVwibm90LWZvdW5kXCJcbiAgICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8Tm90Rm91bmRDb250ZW50XG4gICAgICAgIGNlbnRlclxuICAgICAgICBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259XG4gICAgICAgIGhvbWVIcmVmPXtob21lSHJlZn1cbiAgICAgICAgaG9tZUxhYmVsPXtob21lTGFiZWx9XG4gICAgICAgIHN0YXR1c0NvZGU9e3N0YXR1c0NvZGV9XG4gICAgICAgIHN1cHBvcnRIcmVmPXtzdXBwb3J0SHJlZn1cbiAgICAgICAgc3VwcG9ydExhYmVsPXtzdXBwb3J0TGFiZWx9XG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIC8+XG4gICAgPC9tYWluPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTm90Rm91bmQ7XG4iXSwibmFtZXMiOlsiY24iLCJBcnJvd0xlZnQiLCJBcnJvd1JpZ2h0IiwiQm9va21hcmsiLCJCb29rT3BlbiIsIkNoZXZyb25SaWdodCIsIkxpc3QiLCJSc3MiLCJkZWZhdWx0TGlua3MiLCJkZXNjcmlwdGlvbiIsImhyZWYiLCJpY29uIiwibGFiZWwiLCJkZWZhdWx0Rm9vdGVyTGlua3MiLCJyZW5kZXJMb2dvIiwibG9nbyIsImRpdiIsImNsYXNzTmFtZSIsIk5vdEZvdW5kQ29udGVudCIsImNlbnRlciIsImhvbWVIcmVmIiwiaG9tZUxhYmVsIiwic3RhdHVzQ29kZSIsInN1cHBvcnRIcmVmIiwic3VwcG9ydExhYmVsIiwidGl0bGUiLCJwIiwiaDEiLCJhIiwiYXJpYS1oaWRkZW4iLCJQb3B1bGFyTGlua3MiLCJsaW5rcyIsImgyIiwidWwiLCJyb2xlIiwibWFwIiwibGluayIsIkljb24iLCJsaSIsImgzIiwic3BhbiIsIk5vdEZvdW5kIiwiYmFja2dyb3VuZEltYWdlQWx0IiwiYmFja2dyb3VuZEltYWdlU3JjIiwiY29weXJpZ2h0IiwiZm9vdGVyTGlua3MiLCJpbWFnZUFsdCIsImltYWdlU3JjIiwic29jaWFsTGlua3MiLCJ2YXJpYW50IiwicHJvcHMiLCJkYXRhLXNsb3QiLCJkYXRhLXZhcmlhbnQiLCJpbWciLCJhbHQiLCJzcmMiLCJtYWluIiwiaGVhZGVyIiwidW5kZWZpbmVkIiwiZm9vdGVyIiwibmF2IiwiaW5kZXgiLCJsZW5ndGgiLCJpdGVtIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFDaEMsU0FBUUMsU0FBUyxFQUFFQyxVQUFVLEVBQUVDLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFPLGVBQWU7QUF1Q2hHLE1BQU1DLGVBQXdDO0lBQzVDO1FBQ0VDLGFBQWE7UUFDYkMsTUFBTTtRQUNOQyxNQUFNUDtRQUNOUSxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxhQUFhO1FBQ2JDLE1BQU07UUFDTkMsTUFBTUw7UUFDTk0sT0FBTztJQUNUO0lBQ0E7UUFDRUgsYUFBYTtRQUNiQyxNQUFNO1FBQ05DLE1BQU1SO1FBQ05TLE9BQU87SUFDVDtJQUNBO1FBQ0VILGFBQWE7UUFDYkMsTUFBTTtRQUNOQyxNQUFNSjtRQUNOSyxPQUFPO0lBQ1Q7Q0FDRDtBQUVELE1BQU1DLHFCQUE4QztJQUNsRDtRQUFDSCxNQUFNO1FBQVlFLE9BQU87SUFBaUI7SUFDM0M7UUFBQ0YsTUFBTTtRQUFXRSxPQUFPO0lBQVE7Q0FDbEM7QUFFRCxNQUFNRSxhQUFhLENBQUNDLE9BQXFCQSxxQkFDdkMsS0FBQ0M7UUFBSUMs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
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { BookOpen, Rss } from 'lucide-react';
3
+ import { interactWithCanvas } from '../../utils/storyInteractions.js';
4
+ import { NotFound } from './NotFound.js';
5
+ const links = [
6
+ {
7
+ description: 'Browse component usage and controls.',
8
+ href: '#docs',
9
+ icon: BookOpen,
10
+ label: 'Documentation'
11
+ },
12
+ {
13
+ description: 'Check the current package status.',
14
+ href: '#status',
15
+ label: 'Status'
16
+ }
17
+ ];
18
+ const meta = {
19
+ argTypes: {
20
+ description: {
21
+ control: 'text'
22
+ },
23
+ homeHref: {
24
+ control: 'text'
25
+ },
26
+ homeLabel: {
27
+ control: 'text'
28
+ },
29
+ statusCode: {
30
+ control: 'text'
31
+ },
32
+ supportHref: {
33
+ control: 'text'
34
+ },
35
+ supportLabel: {
36
+ control: 'text'
37
+ },
38
+ title: {
39
+ control: 'text'
40
+ },
41
+ variant: {
42
+ control: 'select',
43
+ options: [
44
+ 'simple',
45
+ 'popular',
46
+ 'split',
47
+ 'background'
48
+ ]
49
+ }
50
+ },
51
+ component: NotFound,
52
+ parameters: {
53
+ layout: 'fullscreen'
54
+ },
55
+ title: 'Components/NotFound'
56
+ };
57
+ export default meta;
58
+ export const Default = {
59
+ args: {
60
+ description: 'The page you requested could not be found.',
61
+ homeHref: '#home',
62
+ homeLabel: 'Go back home',
63
+ links,
64
+ socialLinks: [
65
+ {
66
+ href: '#updates',
67
+ icon: Rss,
68
+ label: 'Updates'
69
+ }
70
+ ],
71
+ statusCode: '404',
72
+ supportHref: '#support',
73
+ supportLabel: 'Contact support',
74
+ title: 'Page not found',
75
+ variant: 'popular'
76
+ },
77
+ play: interactWithCanvas
78
+ };
79
+
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnN0b3JpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Jvb2tPcGVuLCBSc3N9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQge2ludGVyYWN0V2l0aENhbnZhc30gZnJvbSAnLi4vLi4vdXRpbHMvc3RvcnlJbnRlcmFjdGlvbnMuanMnO1xuaW1wb3J0IHtOb3RGb3VuZH0gZnJvbSAnLi9Ob3RGb3VuZC5qcyc7XG5cbmltcG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9ian0gZnJvbSAnQG5sYWJzL2xleC9zdG9yeWJvb2snO1xuXG5jb25zdCBsaW5rcyA9IFtcbiAge2Rlc2NyaXB0aW9uOiAnQnJvd3NlIGNvbXBvbmVudCB1c2FnZSBhbmQgY29udHJvbHMuJywgaHJlZjogJyNkb2NzJywgaWNvbjogQm9va09wZW4sIGxhYmVsOiAnRG9jdW1lbnRhdGlvbid9LFxuICB7ZGVzY3JpcHRpb246ICdDaGVjayB0aGUgY3VycmVudCBwYWNrYWdlIHN0YXR1cy4nLCBocmVmOiAnI3N0YXR1cycsIGxhYmVsOiAnU3RhdHVzJ31cbl07XG5cbmNvbnN0IG1ldGE6IE1ldGE8dHlwZW9mIE5vdEZvdW5kPiA9IHtcbiAgYXJnVHlwZXM6IHtcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBob21lSHJlZjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBob21lTGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgc3RhdHVzQ29kZToge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBzdXBwb3J0SHJlZjoge1xuICAgICAgY29udHJvbDogJ3RleHQnXG4gICAgfSxcbiAgICBzdXBwb3J0TGFiZWw6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIGNvbnRyb2w6ICd0ZXh0J1xuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgY29udHJvbDogJ3NlbGVjdCcsXG4gICAgICBvcHRpb25zOiBbJ3NpbXBsZScsICdwb3B1bGFyJywgJ3NwbGl0JywgJ2JhY2tncm91bmQnXVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50OiBOb3RGb3VuZCxcbiAgcGFyYW1ldGVyczoge1xuICAgIGxheW91dDogJ2Z1bGxzY3JlZW4nXG4gIH0sXG4gIHRpdGxlOiAnQ29tcG9uZW50cy9Ob3RGb3VuZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1ldGE7XG5cbnR5cGUgU3RvcnkgPSBTdG9yeU9iajx0eXBlb2YgTm90Rm91bmQ+O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdDogU3RvcnkgPSB7XG4gIGFyZ3M6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYWdlIHlvdSByZXF1ZXN0ZWQgY291bGQgbm90IGJlIGZvdW5kLicsXG4gICAgaG9tZUhyZWY6ICcjaG9tZScsXG4gICAgaG9tZUxhYmVsOiAnR28gYmFjayBob21lJyxcbiAgICBsaW5rcyxcbiAgICBzb2NpYWxMaW5rczogW3tocmVmOiAnI3VwZGF0ZXMnLCBpY29uOiBSc3MsIGxhYmVsOiAnVXBkYXRlcyd9XSxcbiAgICBzdGF0dXNDb2RlOiAnNDA0JyxcbiAgICBzdXBwb3J0SHJlZjogJyNzdXBwb3J0JyxcbiAgICBzdXBwb3J0TGFiZWw6ICdDb250YWN0IHN1cHBvcnQnLFxuICAgIHRpdGxlOiAnUGFnZSBub3QgZm91bmQnLFxuICAgIHZhcmlhbnQ6ICdwb3B1bGFyJ1xuICB9LFxuICBwbGF5OiBpbnRlcmFjdFdpdGhDYW52YXNcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJCb29rT3BlbiIsIlJzcyIsImludGVyYWN0V2l0aENhbnZhcyIsIk5vdEZvdW5kIiwibGlua3MiLCJkZXNjcmlwdGlvbiIsImhyZWYiLCJpY29uIiwibGFiZWwiLCJtZXRhIiwiYXJnVHlwZXMiLCJjb250cm9sIiwiaG9tZUhyZWYiLCJob21lTGFiZWwiLCJzdGF0dXNDb2RlIiwic3VwcG9ydEhyZWYiLCJzdXBwb3J0TGFiZWwiLCJ0aXRsZSIsInZhcmlhbnQiLCJvcHRpb25zIiwiY29tcG9uZW50IiwicGFyYW1ldGVycyIsImxheW91dCIsIkRlZmF1bHQiLCJhcmdzIiwic29jaWFsTGlua3MiLCJwbGF5Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsU0FBUUMsUUFBUSxFQUFFQyxHQUFHLFFBQU8sZUFBZTtBQUMzQyxTQUFRQyxrQkFBa0IsUUFBTyxtQ0FBbUM7QUFDcEUsU0FBUUMsUUFBUSxRQUFPLGdCQUFnQjtBQUl2QyxNQUFNQyxRQUFRO0lBQ1o7UUFBQ0MsYUFBYTtRQUF3Q0MsTUFBTTtRQUFTQyxNQUFNUDtRQUFVUSxPQUFPO0lBQWU7SUFDM0c7UUFBQ0gsYUFBYTtRQUFxQ0MsTUFBTTtRQUFXRSxPQUFPO0lBQVE7Q0FDcEY7QUFFRCxNQUFNQyxPQUE4QjtJQUNsQ0MsVUFBVTtRQUNSTCxhQUFhO1lBQ1hNLFNBQVM7UUFDWDtRQUNBQyxVQUFVO1lBQ1JELFNBQVM7UUFDWDtRQUNBRSxXQUFXO1lBQ1RGLFNBQVM7UUFDWDtRQUNBRyxZQUFZO1lBQ1ZILFNBQVM7UUFDWDtRQUNBSSxhQUFhO1lBQ1hKLFNBQVM7UUFDWDtRQUNBSyxjQUFjO1lBQ1pMLFNBQVM7UUFDWDtRQUNBTSxPQUFPO1lBQ0xOLFNBQVM7UUFDWDtRQUNBTyxTQUFTO1lBQ1BQLFNBQVM7WUFDVFEsU0FBUztnQkFBQztnQkFBVTtnQkFBVztnQkFBUzthQUFhO1FBQ3ZEO0lBQ0Y7SUFDQUMsV0FBV2pCO0lBQ1hrQixZQUFZO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBTCxPQUFPO0FBQ1Q7QUFFQSxlQUFlUixLQUFLO0FBSXBCLE9BQU8sTUFBTWMsVUFBaUI7SUFDNUJDLE1BQU07UUFDSm5CLGFBQWE7UUFDYk8sVUFBVTtRQUNWQyxXQUFXO1FBQ1hUO1FBQ0FxQixhQUFhO1lBQUM7Z0JBQUNuQixNQUFNO2dCQUFZQyxNQUFNTjtnQkFBS08sT0FBTztZQUFTO1NBQUU7UUFDOURNLFlBQVk7UUFDWkMsYUFBYTtRQUNiQyxjQUFjO1FBQ2RDLE9BQU87UUFDUEMsU0FBUztJQUNYO0lBQ0FRLE1BQU14QjtBQUNSLEVBQUUifQ==
@@ -0,0 +1,18 @@
1
+ import type { ReactElement } from 'react';
2
+ export interface GothamNotifyAction {
3
+ readonly icon?: string;
4
+ readonly label?: string;
5
+ readonly onClick: (key: string) => void;
6
+ }
7
+ export type GothamSeverity = 'error' | 'info' | 'success' | 'warning';
8
+ export interface GothamNotifyParams {
9
+ readonly actions?: GothamNotifyAction[];
10
+ readonly anchorOrigin?: {
11
+ vertical: 'top' | 'bottom';
12
+ horizontal: 'left' | 'center' | 'right';
13
+ };
14
+ readonly autoHideDuration?: number;
15
+ readonly message?: ReactElement | string;
16
+ readonly severity?: GothamSeverity;
17
+ }
18
+ export declare const Notify: () => import("react").JSX.Element;