@shipfox/react-ui 0.15.0 → 0.17.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 (641) hide show
  1. package/dist/components/button-group/button-group.stories.js +4 -4
  2. package/dist/components/card/card.d.ts +24 -0
  3. package/dist/components/card/card.js +56 -0
  4. package/dist/components/card/card.stories.js +216 -0
  5. package/dist/components/card/index.d.ts +2 -0
  6. package/dist/components/card/index.js +3 -0
  7. package/dist/components/dashboard/components/charts/bar-chart.d.ts +30 -0
  8. package/dist/components/dashboard/components/charts/bar-chart.js +150 -0
  9. package/dist/components/dashboard/components/charts/bar-chart.stories.js +287 -0
  10. package/dist/components/dashboard/components/charts/chart-tooltip.d.ts +14 -0
  11. package/dist/components/dashboard/components/charts/chart-tooltip.js +46 -0
  12. package/dist/components/dashboard/components/charts/colors.d.ts +12 -0
  13. package/dist/components/dashboard/components/charts/colors.js +20 -0
  14. package/dist/components/dashboard/components/charts/index.d.ts +6 -0
  15. package/dist/components/dashboard/components/charts/index.js +7 -0
  16. package/dist/components/dashboard/components/charts/line-chart.d.ts +28 -0
  17. package/dist/components/dashboard/components/charts/line-chart.js +152 -0
  18. package/dist/components/dashboard/components/charts/line-chart.stories.js +257 -0
  19. package/dist/components/dashboard/components/charts/utils.d.ts +13 -0
  20. package/dist/components/dashboard/components/charts/utils.js +18 -0
  21. package/dist/components/dashboard/components/dashboard-alert.d.ts +8 -0
  22. package/dist/components/dashboard/components/dashboard-alert.js +24 -0
  23. package/dist/components/dashboard/components/kpi-card.d.ts +15 -0
  24. package/dist/components/dashboard/components/kpi-card.js +77 -0
  25. package/dist/components/dashboard/components/mobile-sidebar.d.ts +19 -0
  26. package/dist/components/dashboard/components/mobile-sidebar.js +50 -0
  27. package/dist/components/dashboard/components/organization-selector.d.ts +24 -1
  28. package/dist/components/dashboard/components/organization-selector.js +93 -70
  29. package/dist/components/dashboard/components/sidebar.d.ts +24 -0
  30. package/dist/components/dashboard/components/sidebar.js +218 -0
  31. package/dist/components/dashboard/context/dashboard-context.d.ts +70 -0
  32. package/dist/components/dashboard/context/dashboard-context.js +175 -0
  33. package/dist/components/dashboard/context/index.d.ts +8 -0
  34. package/dist/components/dashboard/context/index.js +6 -0
  35. package/dist/components/dashboard/context/types.d.ts +50 -0
  36. package/dist/components/dashboard/context/types.js +7 -0
  37. package/dist/components/dashboard/context/utils.d.ts +28 -0
  38. package/dist/components/dashboard/context/utils.js +53 -0
  39. package/dist/components/dashboard/dashboard.d.ts +27 -1
  40. package/dist/components/dashboard/dashboard.js +76 -36
  41. package/dist/components/dashboard/filters/expression-filter-bar.d.ts +42 -0
  42. package/dist/components/dashboard/filters/expression-filter-bar.js +80 -0
  43. package/dist/components/dashboard/filters/index.d.ts +6 -0
  44. package/dist/components/dashboard/filters/index.js +5 -0
  45. package/dist/components/dashboard/index.d.ts +25 -1
  46. package/dist/components/dashboard/index.js +22 -1
  47. package/dist/components/dashboard/pages/analytics-page.d.ts +20 -0
  48. package/dist/components/dashboard/pages/analytics-page.js +258 -0
  49. package/dist/components/dashboard/pages/index.d.ts +6 -0
  50. package/dist/components/dashboard/pages/index.js +6 -0
  51. package/dist/components/dashboard/pages/jobs-page.d.ts +20 -0
  52. package/dist/components/dashboard/pages/jobs-page.js +56 -0
  53. package/dist/components/dashboard/table/index.d.ts +6 -0
  54. package/dist/components/dashboard/table/index.js +5 -0
  55. package/dist/components/dashboard/table/table-wrapper.d.ts +104 -0
  56. package/dist/components/dashboard/table/table-wrapper.js +93 -0
  57. package/dist/components/dashboard/toolbar/filter-button.d.ts +12 -0
  58. package/dist/components/dashboard/toolbar/filter-button.js +124 -0
  59. package/dist/components/dashboard/toolbar/index.d.ts +13 -0
  60. package/dist/components/dashboard/toolbar/index.js +10 -0
  61. package/dist/components/dashboard/toolbar/page-toolbar.d.ts +75 -0
  62. package/dist/components/dashboard/toolbar/page-toolbar.js +208 -0
  63. package/dist/components/dashboard/toolbar/toolbar-actions.d.ts +52 -0
  64. package/dist/components/dashboard/toolbar/toolbar-actions.js +51 -0
  65. package/dist/components/dashboard/toolbar/toolbar-search.d.ts +21 -0
  66. package/dist/components/dashboard/toolbar/toolbar-search.js +123 -0
  67. package/dist/components/dashboard/toolbar/view-dropdown.d.ts +11 -0
  68. package/dist/components/dashboard/toolbar/view-dropdown.js +113 -0
  69. package/dist/components/empty-state/empty-state.d.ts +10 -0
  70. package/dist/components/empty-state/empty-state.js +40 -0
  71. package/dist/components/empty-state/empty-state.stories.js +74 -0
  72. package/dist/components/empty-state/index.d.ts +2 -0
  73. package/dist/components/empty-state/index.js +3 -0
  74. package/dist/components/index.d.ts +4 -0
  75. package/dist/components/index.js +4 -0
  76. package/dist/components/modal/modal.js +3 -3
  77. package/dist/components/search/search-inline.js +1 -1
  78. package/dist/components/search/search-modal.js +13 -7
  79. package/dist/components/select/select.d.ts +3 -1
  80. package/dist/components/select/select.js +2 -1
  81. package/dist/components/sheet/index.d.ts +2 -0
  82. package/dist/components/sheet/index.js +3 -0
  83. package/dist/components/sheet/sheet.d.ts +33 -0
  84. package/dist/components/sheet/sheet.js +163 -0
  85. package/dist/components/sheet/sheet.stories.js +368 -0
  86. package/dist/components/table/data-table.d.ts +19 -2
  87. package/dist/components/table/data-table.js +89 -72
  88. package/dist/components/table/table.js +1 -1
  89. package/dist/components/table/table.stories.components.js +6 -28
  90. package/dist/styles.css +1 -1
  91. package/package.json +12 -4
  92. package/.storybook/main.ts +0 -35
  93. package/.storybook/preview.tsx +0 -66
  94. package/.storybook/vitest.setup.ts +0 -4
  95. package/.turbo/turbo-build.log +0 -19
  96. package/.turbo/turbo-check.log +0 -6
  97. package/.turbo/turbo-type.log +0 -5
  98. package/CHANGELOG.md +0 -114
  99. package/argos.config.ts +0 -33
  100. package/dist/build-css-entry.js.map +0 -1
  101. package/dist/colors.stories.conts.d.ts.map +0 -1
  102. package/dist/colors.stories.conts.js.map +0 -1
  103. package/dist/colors.stories.js.map +0 -1
  104. package/dist/components/alert/alert.d.ts.map +0 -1
  105. package/dist/components/alert/alert.js.map +0 -1
  106. package/dist/components/alert/alert.stories.js.map +0 -1
  107. package/dist/components/alert/index.d.ts.map +0 -1
  108. package/dist/components/alert/index.js.map +0 -1
  109. package/dist/components/avatar/avatar-group.d.ts.map +0 -1
  110. package/dist/components/avatar/avatar-group.js.map +0 -1
  111. package/dist/components/avatar/avatar.d.ts.map +0 -1
  112. package/dist/components/avatar/avatar.js.map +0 -1
  113. package/dist/components/avatar/avatar.stories.js.map +0 -1
  114. package/dist/components/avatar/index.d.ts.map +0 -1
  115. package/dist/components/avatar/index.js.map +0 -1
  116. package/dist/components/badge/badge.d.ts.map +0 -1
  117. package/dist/components/badge/badge.js.map +0 -1
  118. package/dist/components/badge/badge.stories.js.map +0 -1
  119. package/dist/components/badge/icon-badge.d.ts.map +0 -1
  120. package/dist/components/badge/icon-badge.js.map +0 -1
  121. package/dist/components/badge/index.d.ts.map +0 -1
  122. package/dist/components/badge/index.js.map +0 -1
  123. package/dist/components/badge/status-badge.d.ts.map +0 -1
  124. package/dist/components/badge/status-badge.js.map +0 -1
  125. package/dist/components/badge/user-badge.d.ts.map +0 -1
  126. package/dist/components/badge/user-badge.js.map +0 -1
  127. package/dist/components/button/button-link.d.ts.map +0 -1
  128. package/dist/components/button/button-link.js.map +0 -1
  129. package/dist/components/button/button-link.stories.js.map +0 -1
  130. package/dist/components/button/button.d.ts.map +0 -1
  131. package/dist/components/button/button.js.map +0 -1
  132. package/dist/components/button/button.stories.js.map +0 -1
  133. package/dist/components/button/icon-button.d.ts.map +0 -1
  134. package/dist/components/button/icon-button.js.map +0 -1
  135. package/dist/components/button/icon-button.stories.js.map +0 -1
  136. package/dist/components/button/index.d.ts.map +0 -1
  137. package/dist/components/button/index.js.map +0 -1
  138. package/dist/components/button-group/button-group.d.ts.map +0 -1
  139. package/dist/components/button-group/button-group.js.map +0 -1
  140. package/dist/components/button-group/button-group.stories.js.map +0 -1
  141. package/dist/components/button-group/index.d.ts.map +0 -1
  142. package/dist/components/button-group/index.js.map +0 -1
  143. package/dist/components/calendar/calendar.d.ts.map +0 -1
  144. package/dist/components/calendar/calendar.js.map +0 -1
  145. package/dist/components/calendar/index.d.ts.map +0 -1
  146. package/dist/components/calendar/index.js.map +0 -1
  147. package/dist/components/checkbox/checkbox-label.d.ts.map +0 -1
  148. package/dist/components/checkbox/checkbox-label.js.map +0 -1
  149. package/dist/components/checkbox/checkbox-links.d.ts.map +0 -1
  150. package/dist/components/checkbox/checkbox-links.js.map +0 -1
  151. package/dist/components/checkbox/checkbox.d.ts.map +0 -1
  152. package/dist/components/checkbox/checkbox.js.map +0 -1
  153. package/dist/components/checkbox/checkbox.stories.js.map +0 -1
  154. package/dist/components/checkbox/index.d.ts.map +0 -1
  155. package/dist/components/checkbox/index.js.map +0 -1
  156. package/dist/components/code-block/code-block-footer.d.ts.map +0 -1
  157. package/dist/components/code-block/code-block-footer.js.map +0 -1
  158. package/dist/components/code-block/code-block.d.ts.map +0 -1
  159. package/dist/components/code-block/code-block.js.map +0 -1
  160. package/dist/components/code-block/code-block.stories.js.map +0 -1
  161. package/dist/components/code-block/code-content.d.ts.map +0 -1
  162. package/dist/components/code-block/code-content.js.map +0 -1
  163. package/dist/components/code-block/code-copy-button.d.ts.map +0 -1
  164. package/dist/components/code-block/code-copy-button.js.map +0 -1
  165. package/dist/components/code-block/code-tabs.d.ts.map +0 -1
  166. package/dist/components/code-block/code-tabs.js.map +0 -1
  167. package/dist/components/code-block/index.d.ts.map +0 -1
  168. package/dist/components/code-block/index.js.map +0 -1
  169. package/dist/components/command/command.d.ts.map +0 -1
  170. package/dist/components/command/command.js.map +0 -1
  171. package/dist/components/command/command.stories.js.map +0 -1
  172. package/dist/components/command/index.d.ts.map +0 -1
  173. package/dist/components/command/index.js.map +0 -1
  174. package/dist/components/confetti/confetti.d.ts.map +0 -1
  175. package/dist/components/confetti/confetti.js.map +0 -1
  176. package/dist/components/confetti/confetti.stories.js.map +0 -1
  177. package/dist/components/confetti/index.d.ts.map +0 -1
  178. package/dist/components/confetti/index.js.map +0 -1
  179. package/dist/components/dashboard/components/analytics-content.d.ts +0 -2
  180. package/dist/components/dashboard/components/analytics-content.d.ts.map +0 -1
  181. package/dist/components/dashboard/components/analytics-content.js +0 -180
  182. package/dist/components/dashboard/components/analytics-content.js.map +0 -1
  183. package/dist/components/dashboard/components/animated-logo.d.ts.map +0 -1
  184. package/dist/components/dashboard/components/animated-logo.js.map +0 -1
  185. package/dist/components/dashboard/components/complete-setup-button.d.ts.map +0 -1
  186. package/dist/components/dashboard/components/complete-setup-button.js.map +0 -1
  187. package/dist/components/dashboard/components/jobs-content.d.ts +0 -2
  188. package/dist/components/dashboard/components/jobs-content.d.ts.map +0 -1
  189. package/dist/components/dashboard/components/jobs-content.js +0 -69
  190. package/dist/components/dashboard/components/jobs-content.js.map +0 -1
  191. package/dist/components/dashboard/components/mobile-menu.d.ts.map +0 -1
  192. package/dist/components/dashboard/components/mobile-menu.js.map +0 -1
  193. package/dist/components/dashboard/components/organization-selector.d.ts.map +0 -1
  194. package/dist/components/dashboard/components/organization-selector.js.map +0 -1
  195. package/dist/components/dashboard/components/top-menu.d.ts.map +0 -1
  196. package/dist/components/dashboard/components/top-menu.js.map +0 -1
  197. package/dist/components/dashboard/components/topbar-button.d.ts.map +0 -1
  198. package/dist/components/dashboard/components/topbar-button.js.map +0 -1
  199. package/dist/components/dashboard/components/topbar.d.ts.map +0 -1
  200. package/dist/components/dashboard/components/topbar.js.map +0 -1
  201. package/dist/components/dashboard/components/user-profile.d.ts.map +0 -1
  202. package/dist/components/dashboard/components/user-profile.js.map +0 -1
  203. package/dist/components/dashboard/dashboard.d.ts.map +0 -1
  204. package/dist/components/dashboard/dashboard.js.map +0 -1
  205. package/dist/components/dashboard/dashboard.stories.js.map +0 -1
  206. package/dist/components/dashboard/index.d.ts.map +0 -1
  207. package/dist/components/dashboard/index.js.map +0 -1
  208. package/dist/components/date-picker/date-picker.d.ts.map +0 -1
  209. package/dist/components/date-picker/date-picker.js.map +0 -1
  210. package/dist/components/date-picker/date-picker.stories.js.map +0 -1
  211. package/dist/components/date-picker/index.d.ts.map +0 -1
  212. package/dist/components/date-picker/index.js.map +0 -1
  213. package/dist/components/date-time-range-picker/date-time-range-picker.d.ts.map +0 -1
  214. package/dist/components/date-time-range-picker/date-time-range-picker.js.map +0 -1
  215. package/dist/components/date-time-range-picker/index.d.ts.map +0 -1
  216. package/dist/components/date-time-range-picker/index.js.map +0 -1
  217. package/dist/components/dot-grid/dot-grid.d.ts.map +0 -1
  218. package/dist/components/dot-grid/dot-grid.js.map +0 -1
  219. package/dist/components/dot-grid/index.d.ts.map +0 -1
  220. package/dist/components/dot-grid/index.js.map +0 -1
  221. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +0 -1
  222. package/dist/components/dropdown-menu/dropdown-menu.js.map +0 -1
  223. package/dist/components/dropdown-menu/dropdown-menu.stories.js.map +0 -1
  224. package/dist/components/dropdown-menu/index.d.ts.map +0 -1
  225. package/dist/components/dropdown-menu/index.js.map +0 -1
  226. package/dist/components/dynamic-item/dynamic-item.d.ts.map +0 -1
  227. package/dist/components/dynamic-item/dynamic-item.js.map +0 -1
  228. package/dist/components/dynamic-item/dynamic-item.stories.js.map +0 -1
  229. package/dist/components/dynamic-item/index.d.ts.map +0 -1
  230. package/dist/components/dynamic-item/index.js.map +0 -1
  231. package/dist/components/form/form.d.ts.map +0 -1
  232. package/dist/components/form/form.js.map +0 -1
  233. package/dist/components/form/form.stories.js.map +0 -1
  234. package/dist/components/form/index.d.ts.map +0 -1
  235. package/dist/components/form/index.js.map +0 -1
  236. package/dist/components/icon/custom/badge.d.ts.map +0 -1
  237. package/dist/components/icon/custom/badge.js.map +0 -1
  238. package/dist/components/icon/custom/check-circle-solid.d.ts.map +0 -1
  239. package/dist/components/icon/custom/check-circle-solid.js.map +0 -1
  240. package/dist/components/icon/custom/circle-dotted-line.d.ts.map +0 -1
  241. package/dist/components/icon/custom/circle-dotted-line.js.map +0 -1
  242. package/dist/components/icon/custom/component-fill.d.ts.map +0 -1
  243. package/dist/components/icon/custom/component-fill.js.map +0 -1
  244. package/dist/components/icon/custom/component-line.d.ts.map +0 -1
  245. package/dist/components/icon/custom/component-line.js.map +0 -1
  246. package/dist/components/icon/custom/ellipse-mini-solid.d.ts.map +0 -1
  247. package/dist/components/icon/custom/ellipse-mini-solid.js.map +0 -1
  248. package/dist/components/icon/custom/index.d.ts.map +0 -1
  249. package/dist/components/icon/custom/index.js.map +0 -1
  250. package/dist/components/icon/custom/info-tooltip-fill.d.ts.map +0 -1
  251. package/dist/components/icon/custom/info-tooltip-fill.js.map +0 -1
  252. package/dist/components/icon/custom/resize.d.ts.map +0 -1
  253. package/dist/components/icon/custom/resize.js.map +0 -1
  254. package/dist/components/icon/custom/shipfox-logo.d.ts.map +0 -1
  255. package/dist/components/icon/custom/shipfox-logo.js.map +0 -1
  256. package/dist/components/icon/custom/slack-logo.d.ts.map +0 -1
  257. package/dist/components/icon/custom/slack-logo.js.map +0 -1
  258. package/dist/components/icon/custom/spinner.d.ts.map +0 -1
  259. package/dist/components/icon/custom/spinner.js.map +0 -1
  260. package/dist/components/icon/custom/stripe-logo.d.ts.map +0 -1
  261. package/dist/components/icon/custom/stripe-logo.js.map +0 -1
  262. package/dist/components/icon/custom/thunder.d.ts.map +0 -1
  263. package/dist/components/icon/custom/thunder.js.map +0 -1
  264. package/dist/components/icon/custom/x-circle-solid.d.ts.map +0 -1
  265. package/dist/components/icon/custom/x-circle-solid.js.map +0 -1
  266. package/dist/components/icon/icon.d.ts.map +0 -1
  267. package/dist/components/icon/icon.js.map +0 -1
  268. package/dist/components/icon/icon.stories.js.map +0 -1
  269. package/dist/components/icon/index.d.ts.map +0 -1
  270. package/dist/components/icon/index.js.map +0 -1
  271. package/dist/components/icon/remixicon-registry.d.ts.map +0 -1
  272. package/dist/components/icon/remixicon-registry.js.map +0 -1
  273. package/dist/components/index.d.ts.map +0 -1
  274. package/dist/components/index.js.map +0 -1
  275. package/dist/components/inline-tips/index.d.ts.map +0 -1
  276. package/dist/components/inline-tips/index.js.map +0 -1
  277. package/dist/components/inline-tips/inline-tips.d.ts.map +0 -1
  278. package/dist/components/inline-tips/inline-tips.js.map +0 -1
  279. package/dist/components/inline-tips/inline-tips.stories.js.map +0 -1
  280. package/dist/components/input/index.d.ts.map +0 -1
  281. package/dist/components/input/index.js.map +0 -1
  282. package/dist/components/input/input.d.ts.map +0 -1
  283. package/dist/components/input/input.js.map +0 -1
  284. package/dist/components/input/input.stories.js.map +0 -1
  285. package/dist/components/item/index.d.ts.map +0 -1
  286. package/dist/components/item/index.js.map +0 -1
  287. package/dist/components/item/item.d.ts.map +0 -1
  288. package/dist/components/item/item.js.map +0 -1
  289. package/dist/components/item/item.stories.js.map +0 -1
  290. package/dist/components/kbd/index.d.ts.map +0 -1
  291. package/dist/components/kbd/index.js.map +0 -1
  292. package/dist/components/kbd/kbd.d.ts.map +0 -1
  293. package/dist/components/kbd/kbd.js.map +0 -1
  294. package/dist/components/kbd/kbd.stories.js.map +0 -1
  295. package/dist/components/label/index.d.ts.map +0 -1
  296. package/dist/components/label/index.js.map +0 -1
  297. package/dist/components/label/label.d.ts.map +0 -1
  298. package/dist/components/label/label.js.map +0 -1
  299. package/dist/components/label/label.stories.js.map +0 -1
  300. package/dist/components/modal/index.d.ts.map +0 -1
  301. package/dist/components/modal/index.js.map +0 -1
  302. package/dist/components/modal/modal.d.ts.map +0 -1
  303. package/dist/components/modal/modal.js.map +0 -1
  304. package/dist/components/modal/modal.stories.js.map +0 -1
  305. package/dist/components/moving-border/index.d.ts.map +0 -1
  306. package/dist/components/moving-border/index.js.map +0 -1
  307. package/dist/components/moving-border/moving-border.d.ts.map +0 -1
  308. package/dist/components/moving-border/moving-border.js.map +0 -1
  309. package/dist/components/popover/index.d.ts.map +0 -1
  310. package/dist/components/popover/index.js.map +0 -1
  311. package/dist/components/popover/popover.d.ts.map +0 -1
  312. package/dist/components/popover/popover.js.map +0 -1
  313. package/dist/components/search/index.d.ts.map +0 -1
  314. package/dist/components/search/index.js.map +0 -1
  315. package/dist/components/search/search-context.d.ts.map +0 -1
  316. package/dist/components/search/search-context.js.map +0 -1
  317. package/dist/components/search/search-inline.d.ts.map +0 -1
  318. package/dist/components/search/search-inline.js.map +0 -1
  319. package/dist/components/search/search-modal.d.ts.map +0 -1
  320. package/dist/components/search/search-modal.js.map +0 -1
  321. package/dist/components/search/search-trigger.d.ts.map +0 -1
  322. package/dist/components/search/search-trigger.js.map +0 -1
  323. package/dist/components/search/search-variants.d.ts.map +0 -1
  324. package/dist/components/search/search-variants.js.map +0 -1
  325. package/dist/components/search/search.d.ts.map +0 -1
  326. package/dist/components/search/search.js.map +0 -1
  327. package/dist/components/search/search.stories.js.map +0 -1
  328. package/dist/components/select/index.d.ts.map +0 -1
  329. package/dist/components/select/index.js.map +0 -1
  330. package/dist/components/select/select.d.ts.map +0 -1
  331. package/dist/components/select/select.js.map +0 -1
  332. package/dist/components/select/select.stories.js.map +0 -1
  333. package/dist/components/shiny-text/index.d.ts.map +0 -1
  334. package/dist/components/shiny-text/index.js.map +0 -1
  335. package/dist/components/shiny-text/shiny-text.d.ts.map +0 -1
  336. package/dist/components/shiny-text/shiny-text.js.map +0 -1
  337. package/dist/components/skeleton/index.d.ts.map +0 -1
  338. package/dist/components/skeleton/index.js.map +0 -1
  339. package/dist/components/skeleton/skeleton.d.ts.map +0 -1
  340. package/dist/components/skeleton/skeleton.js.map +0 -1
  341. package/dist/components/skeleton/skeleton.stories.js.map +0 -1
  342. package/dist/components/table/data-table.d.ts.map +0 -1
  343. package/dist/components/table/data-table.js.map +0 -1
  344. package/dist/components/table/index.d.ts.map +0 -1
  345. package/dist/components/table/index.js.map +0 -1
  346. package/dist/components/table/table-column-header.d.ts.map +0 -1
  347. package/dist/components/table/table-column-header.js.map +0 -1
  348. package/dist/components/table/table-pagination.d.ts.map +0 -1
  349. package/dist/components/table/table-pagination.js.map +0 -1
  350. package/dist/components/table/table.d.ts.map +0 -1
  351. package/dist/components/table/table.js.map +0 -1
  352. package/dist/components/table/table.stories.columns.d.ts.map +0 -1
  353. package/dist/components/table/table.stories.columns.js.map +0 -1
  354. package/dist/components/table/table.stories.components.d.ts.map +0 -1
  355. package/dist/components/table/table.stories.components.js.map +0 -1
  356. package/dist/components/table/table.stories.data.d.ts.map +0 -1
  357. package/dist/components/table/table.stories.data.js.map +0 -1
  358. package/dist/components/table/table.stories.js.map +0 -1
  359. package/dist/components/tabs/index.d.ts.map +0 -1
  360. package/dist/components/tabs/index.js.map +0 -1
  361. package/dist/components/tabs/tabs.d.ts.map +0 -1
  362. package/dist/components/tabs/tabs.js.map +0 -1
  363. package/dist/components/tabs/tabs.stories.js.map +0 -1
  364. package/dist/components/textarea/index.d.ts.map +0 -1
  365. package/dist/components/textarea/index.js.map +0 -1
  366. package/dist/components/textarea/textarea.d.ts.map +0 -1
  367. package/dist/components/textarea/textarea.js.map +0 -1
  368. package/dist/components/textarea/textarea.stories.js.map +0 -1
  369. package/dist/components/theme/index.d.ts.map +0 -1
  370. package/dist/components/theme/index.js.map +0 -1
  371. package/dist/components/theme/theme-provider.d.ts.map +0 -1
  372. package/dist/components/theme/theme-provider.js.map +0 -1
  373. package/dist/components/toast/index.d.ts.map +0 -1
  374. package/dist/components/toast/index.js.map +0 -1
  375. package/dist/components/toast/toast-custom.d.ts.map +0 -1
  376. package/dist/components/toast/toast-custom.js.map +0 -1
  377. package/dist/components/toast/toast.d.ts.map +0 -1
  378. package/dist/components/toast/toast.js.map +0 -1
  379. package/dist/components/toast/toast.stories.js.map +0 -1
  380. package/dist/components/tooltip/index.d.ts.map +0 -1
  381. package/dist/components/tooltip/index.js.map +0 -1
  382. package/dist/components/tooltip/tooltip.d.ts.map +0 -1
  383. package/dist/components/tooltip/tooltip.js.map +0 -1
  384. package/dist/components/tooltip/tooltip.stories.js.map +0 -1
  385. package/dist/components/typography/code.d.ts.map +0 -1
  386. package/dist/components/typography/code.js.map +0 -1
  387. package/dist/components/typography/code.stories.js.map +0 -1
  388. package/dist/components/typography/header.d.ts.map +0 -1
  389. package/dist/components/typography/header.js.map +0 -1
  390. package/dist/components/typography/header.stories.js.map +0 -1
  391. package/dist/components/typography/index.d.ts.map +0 -1
  392. package/dist/components/typography/index.js.map +0 -1
  393. package/dist/components/typography/text.d.ts.map +0 -1
  394. package/dist/components/typography/text.js.map +0 -1
  395. package/dist/components/typography/text.stories.js.map +0 -1
  396. package/dist/hooks/index.d.ts.map +0 -1
  397. package/dist/hooks/index.js.map +0 -1
  398. package/dist/hooks/useCopy.d.ts.map +0 -1
  399. package/dist/hooks/useCopy.js.map +0 -1
  400. package/dist/hooks/useCopyToClipboard.d.ts.map +0 -1
  401. package/dist/hooks/useCopyToClipboard.js.map +0 -1
  402. package/dist/hooks/useMediaQuery.d.ts.map +0 -1
  403. package/dist/hooks/useMediaQuery.js.map +0 -1
  404. package/dist/hooks/useResolvedTheme.d.ts.map +0 -1
  405. package/dist/hooks/useResolvedTheme.js.map +0 -1
  406. package/dist/hooks/useShikiHighlight.d.ts.map +0 -1
  407. package/dist/hooks/useShikiHighlight.js.map +0 -1
  408. package/dist/hooks/useShikiStyleInjection.d.ts.map +0 -1
  409. package/dist/hooks/useShikiStyleInjection.js.map +0 -1
  410. package/dist/hooks/useTheme.d.ts.map +0 -1
  411. package/dist/hooks/useTheme.js.map +0 -1
  412. package/dist/index.d.ts.map +0 -1
  413. package/dist/index.js.map +0 -1
  414. package/dist/onboarding/sign-in.stories.js.map +0 -1
  415. package/dist/state/theme.d.ts.map +0 -1
  416. package/dist/state/theme.js.map +0 -1
  417. package/dist/utils/avatar.d.ts.map +0 -1
  418. package/dist/utils/avatar.js.map +0 -1
  419. package/dist/utils/clipboard.d.ts.map +0 -1
  420. package/dist/utils/clipboard.js.map +0 -1
  421. package/dist/utils/cn.d.ts.map +0 -1
  422. package/dist/utils/cn.js.map +0 -1
  423. package/dist/utils/date.d.ts.map +0 -1
  424. package/dist/utils/date.js.map +0 -1
  425. package/dist/utils/debounce.d.ts.map +0 -1
  426. package/dist/utils/debounce.js.map +0 -1
  427. package/dist/utils/format/chart.d.ts.map +0 -1
  428. package/dist/utils/format/chart.js.map +0 -1
  429. package/dist/utils/format/date.d.ts.map +0 -1
  430. package/dist/utils/format/date.js.map +0 -1
  431. package/dist/utils/format/duration.d.ts.map +0 -1
  432. package/dist/utils/format/duration.js.map +0 -1
  433. package/dist/utils/format/index.d.ts.map +0 -1
  434. package/dist/utils/format/index.js.map +0 -1
  435. package/dist/utils/format/number.d.ts.map +0 -1
  436. package/dist/utils/format/number.js.map +0 -1
  437. package/dist/utils/index.d.ts.map +0 -1
  438. package/dist/utils/index.js.map +0 -1
  439. package/index.css +0 -1018
  440. package/src/assets/illustration-1.svg +0 -92
  441. package/src/assets/illustration-2.svg +0 -14
  442. package/src/assets/illustration-gradient.svg +0 -7049
  443. package/src/build-css-entry.ts +0 -3
  444. package/src/colors.stories.conts.ts +0 -164
  445. package/src/colors.stories.tsx +0 -66
  446. package/src/components/alert/alert.stories.tsx +0 -178
  447. package/src/components/alert/alert.tsx +0 -291
  448. package/src/components/alert/index.ts +0 -1
  449. package/src/components/avatar/avatar-group.tsx +0 -186
  450. package/src/components/avatar/avatar.stories.tsx +0 -179
  451. package/src/components/avatar/avatar.tsx +0 -219
  452. package/src/components/avatar/index.ts +0 -2
  453. package/src/components/badge/badge.stories.tsx +0 -468
  454. package/src/components/badge/badge.tsx +0 -147
  455. package/src/components/badge/icon-badge.tsx +0 -43
  456. package/src/components/badge/index.ts +0 -4
  457. package/src/components/badge/status-badge.tsx +0 -43
  458. package/src/components/badge/user-badge.tsx +0 -34
  459. package/src/components/button/button-link.stories.tsx +0 -86
  460. package/src/components/button/button-link.tsx +0 -76
  461. package/src/components/button/button.stories.tsx +0 -138
  462. package/src/components/button/button.tsx +0 -91
  463. package/src/components/button/icon-button.stories.tsx +0 -228
  464. package/src/components/button/icon-button.tsx +0 -95
  465. package/src/components/button/index.ts +0 -3
  466. package/src/components/button-group/button-group.stories.tsx +0 -361
  467. package/src/components/button-group/button-group.tsx +0 -111
  468. package/src/components/button-group/index.ts +0 -1
  469. package/src/components/calendar/calendar.tsx +0 -90
  470. package/src/components/calendar/index.ts +0 -1
  471. package/src/components/checkbox/checkbox-label.tsx +0 -125
  472. package/src/components/checkbox/checkbox-links.tsx +0 -92
  473. package/src/components/checkbox/checkbox.stories.tsx +0 -391
  474. package/src/components/checkbox/checkbox.tsx +0 -71
  475. package/src/components/checkbox/index.ts +0 -3
  476. package/src/components/code-block/code-block-footer.tsx +0 -197
  477. package/src/components/code-block/code-block.stories.tsx +0 -323
  478. package/src/components/code-block/code-block.tsx +0 -283
  479. package/src/components/code-block/code-content.tsx +0 -63
  480. package/src/components/code-block/code-copy-button.tsx +0 -73
  481. package/src/components/code-block/code-tabs.tsx +0 -170
  482. package/src/components/code-block/index.ts +0 -3
  483. package/src/components/command/command.stories.tsx +0 -133
  484. package/src/components/command/command.tsx +0 -265
  485. package/src/components/command/index.ts +0 -1
  486. package/src/components/confetti/confetti.stories.tsx +0 -38
  487. package/src/components/confetti/confetti.tsx +0 -140
  488. package/src/components/confetti/index.ts +0 -1
  489. package/src/components/dashboard/components/analytics-content.tsx +0 -102
  490. package/src/components/dashboard/components/animated-logo.tsx +0 -25
  491. package/src/components/dashboard/components/complete-setup-button.tsx +0 -30
  492. package/src/components/dashboard/components/jobs-content.tsx +0 -51
  493. package/src/components/dashboard/components/mobile-menu.tsx +0 -50
  494. package/src/components/dashboard/components/organization-selector.tsx +0 -51
  495. package/src/components/dashboard/components/top-menu.tsx +0 -26
  496. package/src/components/dashboard/components/topbar-button.tsx +0 -27
  497. package/src/components/dashboard/components/topbar.tsx +0 -40
  498. package/src/components/dashboard/components/user-profile.tsx +0 -90
  499. package/src/components/dashboard/dashboard.stories.tsx +0 -25
  500. package/src/components/dashboard/dashboard.tsx +0 -61
  501. package/src/components/dashboard/index.ts +0 -1
  502. package/src/components/date-picker/date-picker.stories.tsx +0 -230
  503. package/src/components/date-picker/date-picker.tsx +0 -179
  504. package/src/components/date-picker/index.ts +0 -1
  505. package/src/components/date-time-range-picker/date-time-range-picker.tsx +0 -211
  506. package/src/components/date-time-range-picker/index.ts +0 -1
  507. package/src/components/dot-grid/dot-grid.tsx +0 -325
  508. package/src/components/dot-grid/index.ts +0 -1
  509. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -384
  510. package/src/components/dropdown-menu/dropdown-menu.tsx +0 -416
  511. package/src/components/dropdown-menu/index.ts +0 -1
  512. package/src/components/dynamic-item/dynamic-item.stories.tsx +0 -266
  513. package/src/components/dynamic-item/dynamic-item.tsx +0 -74
  514. package/src/components/dynamic-item/index.ts +0 -1
  515. package/src/components/form/form.stories.tsx +0 -505
  516. package/src/components/form/form.tsx +0 -154
  517. package/src/components/form/index.ts +0 -1
  518. package/src/components/icon/custom/badge.tsx +0 -17
  519. package/src/components/icon/custom/check-circle-solid.tsx +0 -24
  520. package/src/components/icon/custom/circle-dotted-line.tsx +0 -17
  521. package/src/components/icon/custom/component-fill.tsx +0 -17
  522. package/src/components/icon/custom/component-line.tsx +0 -17
  523. package/src/components/icon/custom/ellipse-mini-solid.tsx +0 -17
  524. package/src/components/icon/custom/index.ts +0 -14
  525. package/src/components/icon/custom/info-tooltip-fill.tsx +0 -21
  526. package/src/components/icon/custom/resize.tsx +0 -17
  527. package/src/components/icon/custom/shipfox-logo.tsx +0 -20
  528. package/src/components/icon/custom/slack-logo.tsx +0 -35
  529. package/src/components/icon/custom/spinner.tsx +0 -144
  530. package/src/components/icon/custom/stripe-logo.tsx +0 -27
  531. package/src/components/icon/custom/thunder.tsx +0 -17
  532. package/src/components/icon/custom/x-circle-solid.tsx +0 -24
  533. package/src/components/icon/icon.stories.tsx +0 -31
  534. package/src/components/icon/icon.tsx +0 -90
  535. package/src/components/icon/index.ts +0 -1
  536. package/src/components/icon/remixicon-registry.ts +0 -24
  537. package/src/components/index.ts +0 -36
  538. package/src/components/inline-tips/index.ts +0 -1
  539. package/src/components/inline-tips/inline-tips.stories.tsx +0 -131
  540. package/src/components/inline-tips/inline-tips.tsx +0 -132
  541. package/src/components/input/index.ts +0 -1
  542. package/src/components/input/input.stories.tsx +0 -138
  543. package/src/components/input/input.tsx +0 -43
  544. package/src/components/item/index.ts +0 -1
  545. package/src/components/item/item.stories.tsx +0 -159
  546. package/src/components/item/item.tsx +0 -182
  547. package/src/components/kbd/index.ts +0 -1
  548. package/src/components/kbd/kbd.stories.tsx +0 -64
  549. package/src/components/kbd/kbd.tsx +0 -32
  550. package/src/components/label/index.ts +0 -1
  551. package/src/components/label/label.stories.tsx +0 -67
  552. package/src/components/label/label.tsx +0 -15
  553. package/src/components/modal/index.ts +0 -1
  554. package/src/components/modal/modal.stories.tsx +0 -448
  555. package/src/components/modal/modal.tsx +0 -311
  556. package/src/components/moving-border/index.ts +0 -1
  557. package/src/components/moving-border/moving-border.tsx +0 -67
  558. package/src/components/popover/index.ts +0 -1
  559. package/src/components/popover/popover.tsx +0 -60
  560. package/src/components/renovate.json +0 -23
  561. package/src/components/search/index.ts +0 -28
  562. package/src/components/search/search-context.tsx +0 -78
  563. package/src/components/search/search-inline.tsx +0 -107
  564. package/src/components/search/search-modal.tsx +0 -198
  565. package/src/components/search/search-trigger.tsx +0 -47
  566. package/src/components/search/search-variants.ts +0 -88
  567. package/src/components/search/search.stories.tsx +0 -392
  568. package/src/components/search/search.tsx +0 -47
  569. package/src/components/select/index.ts +0 -1
  570. package/src/components/select/select.stories.tsx +0 -207
  571. package/src/components/select/select.tsx +0 -220
  572. package/src/components/shiny-text/index.ts +0 -1
  573. package/src/components/shiny-text/shiny-text.tsx +0 -21
  574. package/src/components/skeleton/index.ts +0 -1
  575. package/src/components/skeleton/skeleton.stories.tsx +0 -178
  576. package/src/components/skeleton/skeleton.tsx +0 -14
  577. package/src/components/table/data-table.tsx +0 -254
  578. package/src/components/table/index.ts +0 -5
  579. package/src/components/table/table-column-header.tsx +0 -141
  580. package/src/components/table/table-pagination.tsx +0 -161
  581. package/src/components/table/table.stories.columns.tsx +0 -198
  582. package/src/components/table/table.stories.components.tsx +0 -104
  583. package/src/components/table/table.stories.data.ts +0 -117
  584. package/src/components/table/table.stories.tsx +0 -256
  585. package/src/components/table/table.tsx +0 -95
  586. package/src/components/tabs/index.ts +0 -1
  587. package/src/components/tabs/tabs.stories.tsx +0 -100
  588. package/src/components/tabs/tabs.tsx +0 -380
  589. package/src/components/textarea/index.ts +0 -1
  590. package/src/components/textarea/textarea.stories.tsx +0 -196
  591. package/src/components/textarea/textarea.tsx +0 -42
  592. package/src/components/theme/index.ts +0 -1
  593. package/src/components/theme/theme-provider.tsx +0 -50
  594. package/src/components/toast/index.ts +0 -2
  595. package/src/components/toast/toast-custom.tsx +0 -154
  596. package/src/components/toast/toast.stories.tsx +0 -369
  597. package/src/components/toast/toast.tsx +0 -41
  598. package/src/components/tooltip/index.ts +0 -1
  599. package/src/components/tooltip/tooltip.stories.tsx +0 -284
  600. package/src/components/tooltip/tooltip.tsx +0 -121
  601. package/src/components/typography/code.stories.tsx +0 -36
  602. package/src/components/typography/code.tsx +0 -38
  603. package/src/components/typography/header.stories.tsx +0 -27
  604. package/src/components/typography/header.tsx +0 -41
  605. package/src/components/typography/index.ts +0 -3
  606. package/src/components/typography/text.stories.tsx +0 -67
  607. package/src/components/typography/text.tsx +0 -50
  608. package/src/hooks/index.ts +0 -6
  609. package/src/hooks/useCopy.ts +0 -0
  610. package/src/hooks/useCopyToClipboard.ts +0 -20
  611. package/src/hooks/useMediaQuery.ts +0 -87
  612. package/src/hooks/useResolvedTheme.ts +0 -34
  613. package/src/hooks/useShikiHighlight.ts +0 -140
  614. package/src/hooks/useShikiStyleInjection.ts +0 -34
  615. package/src/hooks/useTheme.ts +0 -10
  616. package/src/index.ts +0 -4
  617. package/src/onboarding/sign-in.stories.tsx +0 -85
  618. package/src/state/theme.ts +0 -15
  619. package/src/utils/avatar.ts +0 -27
  620. package/src/utils/clipboard.ts +0 -4
  621. package/src/utils/cn.ts +0 -6
  622. package/src/utils/date.test.ts +0 -119
  623. package/src/utils/date.ts +0 -99
  624. package/src/utils/debounce.ts +0 -15
  625. package/src/utils/format/chart.ts +0 -16
  626. package/src/utils/format/date.test.ts +0 -65
  627. package/src/utils/format/date.ts +0 -75
  628. package/src/utils/format/duration.test.ts +0 -58
  629. package/src/utils/format/duration.ts +0 -82
  630. package/src/utils/format/index.ts +0 -4
  631. package/src/utils/format/number.test.ts +0 -38
  632. package/src/utils/format/number.ts +0 -33
  633. package/src/utils/index.ts +0 -6
  634. package/test/global.ts +0 -3
  635. package/test/setup.ts +0 -9
  636. package/tsconfig.build.json +0 -19
  637. package/tsconfig.json +0 -11
  638. package/tsconfig.test.json +0 -12
  639. package/vercel.json +0 -8
  640. package/vite.css.config.ts +0 -30
  641. package/vitest.config.ts +0 -44
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"sourcesContent":["import {type HTMLMotionProps, motion, type Transition} from 'framer-motion';\nimport {\n Children,\n type ComponentProps,\n createContext,\n forwardRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {cn} from 'utils/cn';\nimport {debounce} from 'utils/debounce';\n\ntype TabsContextType<T extends string = string> = {\n activeValue: T;\n handleValueChange: (value: T) => void;\n registerTrigger: (value: string, node: HTMLElement | null) => void;\n getTriggerElement: (value: string) => HTMLElement | undefined;\n getAllTriggerValues: () => string[];\n};\n\nconst TabsContext = createContext<TabsContextType<string> | undefined>(undefined);\n\nfunction useTabs<T extends string = string>(): TabsContextType<T> {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('useTabs must be used within a Tabs component');\n }\n return context as unknown as TabsContextType<T>;\n}\n\ntype BaseTabsProps = ComponentProps<'div'> & {\n children: ReactNode;\n};\n\ntype UnControlledTabsProps<T extends string = string> = BaseTabsProps & {\n defaultValue?: T;\n value?: never;\n onValueChange?: never;\n};\n\ntype ControlledTabsProps<T extends string = string> = BaseTabsProps & {\n value: T;\n onValueChange?: (value: T) => void;\n defaultValue?: never;\n};\n\ntype TabsProps<T extends string = string> = UnControlledTabsProps<T> | ControlledTabsProps<T>;\n\nfunction Tabs<T extends string = string>({\n defaultValue,\n value,\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps<T>) {\n const [activeValue, setActiveValue] = useState<T | undefined>(defaultValue ?? undefined);\n const triggersRef = useRef(new Map<string, HTMLElement>());\n const initialSet = useRef(false);\n const isControlled = value !== undefined;\n\n useEffect(() => {\n if (\n !isControlled &&\n activeValue === undefined &&\n triggersRef.current.size > 0 &&\n !initialSet.current\n ) {\n const firstTab = Array.from(triggersRef.current.keys())[0];\n setActiveValue(firstTab as T);\n initialSet.current = true;\n }\n }, [activeValue, isControlled]);\n\n const registerTrigger = useCallback(\n (value: string, node: HTMLElement | null) => {\n if (node) {\n triggersRef.current.set(value, node);\n if (!isControlled && activeValue === undefined && !initialSet.current) {\n setActiveValue(value as T);\n initialSet.current = true;\n }\n } else {\n triggersRef.current.delete(value);\n }\n },\n [isControlled, activeValue],\n );\n\n const handleValueChange = useCallback(\n (val: T) => {\n if (!isControlled) setActiveValue(val);\n else onValueChange?.(val);\n },\n [isControlled, onValueChange],\n );\n\n const getTriggerElement = useCallback((val: string) => {\n return triggersRef.current.get(val);\n }, []);\n\n const getAllTriggerValues = useCallback(() => {\n return Array.from(triggersRef.current.keys());\n }, []);\n\n const resolvedActiveValue: T = useMemo(() => {\n if (value !== undefined) return value;\n if (activeValue !== undefined) return activeValue;\n const firstKey = Array.from(triggersRef.current.keys())[0];\n return (firstKey ?? '') as T;\n }, [value, activeValue]);\n\n return (\n <TabsContext.Provider\n value={{\n activeValue: resolvedActiveValue as string,\n handleValueChange: handleValueChange as (value: string) => void,\n registerTrigger,\n getTriggerElement,\n getAllTriggerValues,\n }}\n >\n <div\n data-slot=\"tabs\"\n className={cn('flex flex-col gap-2', className)}\n {...(props as ComponentProps<'div'>)}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype TabsListProps = ComponentProps<'div'> & {\n children: ReactNode;\n activeClassName?: string;\n transition?: Transition;\n};\n\nfunction TabsList({\n children,\n className,\n activeClassName,\n transition = {\n type: 'spring',\n stiffness: 400,\n damping: 30,\n },\n ...props\n}: TabsListProps) {\n const {activeValue, getTriggerElement} = useTabs();\n const [indicatorStyle, setIndicatorStyle] = useState<{\n left: number;\n width: number;\n } | null>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const updateIndicator = useCallback(() => {\n const activeTrigger = getTriggerElement(activeValue);\n\n if (activeTrigger && listRef.current) {\n const listRect = listRef.current.getBoundingClientRect();\n const triggerRect = activeTrigger.getBoundingClientRect();\n setIndicatorStyle({\n left: triggerRect.left - listRect.left,\n width: triggerRect.width,\n });\n }\n }, [activeValue, getTriggerElement]);\n\n useEffect(() => {\n const debouncedUpdate = debounce(updateIndicator, 100);\n window.addEventListener('resize', debouncedUpdate);\n requestAnimationFrame(updateIndicator);\n\n return () => {\n window.removeEventListener('resize', debouncedUpdate);\n };\n }, [updateIndicator]);\n\n return (\n <div\n ref={listRef}\n role=\"tablist\"\n data-slot=\"tabs-list\"\n className={cn('relative inline-flex items-center gap-8', className)}\n {...(props as ComponentProps<'div'>)}\n >\n {children}\n {indicatorStyle && (\n <motion.div\n className={cn(\n 'absolute bottom-0 h-2 bg-foreground-highlight-interactive',\n activeClassName,\n )}\n initial={false}\n animate={{\n left: indicatorStyle.left,\n width: indicatorStyle.width,\n }}\n transition={transition}\n />\n )}\n </div>\n );\n}\n\ntype TabsTriggerProps = Omit<HTMLMotionProps<'button'>, 'ref'> & {\n value: string;\n children: ReactNode;\n};\n\nconst TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({value, children, className, onKeyDown, ...props}, ref) => {\n const {\n activeValue,\n handleValueChange,\n registerTrigger,\n getAllTriggerValues,\n getTriggerElement,\n } = useTabs();\n\n const localRef = useRef<HTMLButtonElement | null>(null);\n useImperativeHandle(ref, () => localRef.current as HTMLButtonElement);\n\n useEffect(() => {\n registerTrigger(value, localRef.current);\n return () => registerTrigger(value, null);\n }, [value, registerTrigger]);\n\n const isActive = activeValue === value;\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n\n const allValues = getAllTriggerValues();\n const currentIndex = allValues.indexOf(value);\n\n if (currentIndex === -1) return;\n\n let targetIndex = currentIndex;\n let shouldPreventDefault = true;\n\n switch (event.key) {\n case 'ArrowLeft': {\n targetIndex = currentIndex > 0 ? currentIndex - 1 : allValues.length - 1;\n break;\n }\n case 'ArrowRight': {\n targetIndex = currentIndex < allValues.length - 1 ? currentIndex + 1 : 0;\n break;\n }\n case 'Home': {\n targetIndex = 0;\n break;\n }\n case 'End': {\n targetIndex = allValues.length - 1;\n break;\n }\n default: {\n shouldPreventDefault = false;\n return;\n }\n }\n\n if (shouldPreventDefault) {\n event.preventDefault();\n const targetValue = allValues[targetIndex];\n if (targetValue) {\n handleValueChange(targetValue);\n const targetElement = getTriggerElement(targetValue);\n targetElement?.focus();\n }\n }\n },\n [value, getAllTriggerValues, getTriggerElement, handleValueChange, onKeyDown],\n );\n\n return (\n <motion.button\n ref={localRef}\n data-slot=\"tabs-trigger\"\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n whileTap={{scale: 0.95}}\n onClick={() => handleValueChange(value)}\n onKeyDown={handleKeyDown}\n data-state={isActive ? 'active' : 'inactive'}\n aria-selected={isActive}\n aria-controls={`tabpanel-${value}`}\n id={`tab-${value}`}\n className={cn(\n 'relative inline-flex cursor-pointer items-center justify-center whitespace-nowrap px-0 py-10 text-sm font-medium transition-colors outline-none focus-visible:shadow-border-interactive-with-active focus-visible:rounded-2 disabled:pointer-events-none disabled:opacity-50',\n isActive ? 'text-foreground-neutral-base' : 'text-foreground-neutral-muted',\n className,\n )}\n {...props}\n >\n {children}\n </motion.button>\n );\n },\n);\n\nTabsTrigger.displayName = 'TabsTrigger';\n\ntype TabsContentsProps = ComponentProps<'div'> & {\n children: ReactNode;\n};\n\nfunction TabsContents({children, className, ...props}: TabsContentsProps) {\n const {activeValue} = useTabs();\n const childrenArray = Children.toArray(children);\n\n const activeChild = childrenArray.find(\n (child): child is ReactElement<{value: string}> =>\n isValidElement(child) &&\n typeof child.props === 'object' &&\n child.props !== null &&\n 'value' in child.props &&\n child.props.value === activeValue,\n );\n\n return (\n <div data-slot=\"tabs-contents\" className={cn(className)} {...(props as ComponentProps<'div'>)}>\n {activeChild}\n </div>\n );\n}\n\ntype TabsContentProps = ComponentProps<'div'> & {\n value: string;\n children: ReactNode;\n};\n\nfunction TabsContent({children, value, className, ...props}: TabsContentProps) {\n const {activeValue} = useTabs();\n const isActive = activeValue === value;\n\n if (!isActive) {\n return null;\n }\n\n return (\n <div\n role=\"tabpanel\"\n data-slot=\"tabs-content\"\n aria-labelledby={`tab-${value}`}\n className={cn(className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContents,\n TabsContent,\n useTabs,\n type TabsContextType,\n type TabsProps,\n type TabsListProps,\n type TabsTriggerProps,\n type TabsContentsProps,\n type TabsContentProps,\n};\n"],"names":["motion","Children","createContext","forwardRef","isValidElement","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","cn","debounce","TabsContext","undefined","useTabs","context","Error","Tabs","defaultValue","value","onValueChange","children","className","props","activeValue","setActiveValue","triggersRef","Map","initialSet","isControlled","current","size","firstTab","Array","from","keys","registerTrigger","node","set","delete","handleValueChange","val","getTriggerElement","get","getAllTriggerValues","resolvedActiveValue","firstKey","Provider","div","data-slot","TabsList","activeClassName","transition","type","stiffness","damping","indicatorStyle","setIndicatorStyle","listRef","updateIndicator","activeTrigger","listRect","getBoundingClientRect","triggerRect","left","width","debouncedUpdate","window","addEventListener","requestAnimationFrame","removeEventListener","ref","role","initial","animate","TabsTrigger","onKeyDown","localRef","isActive","handleKeyDown","event","allValues","currentIndex","indexOf","targetIndex","shouldPreventDefault","key","length","preventDefault","targetValue","targetElement","focus","button","tabIndex","whileTap","scale","onClick","data-state","aria-selected","aria-controls","id","displayName","TabsContents","childrenArray","toArray","activeChild","find","child","TabsContent","aria-labelledby"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/tabs/tabs.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {useState} from 'react';\nimport {Tabs, TabsContent, TabsContents, TabsList, TabsTrigger} from '.';\n\nconst meta = {\n title: 'Components/Tabs',\n component: Tabs,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n} satisfies Meta<typeof Tabs>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n args: {defaultValue: 'analytics'} as never,\n render: () => (\n <div className=\"bg-background-neutral-background p-24 w-[80vw]\">\n <Tabs defaultValue=\"analytics\">\n <TabsList className=\"gap-12 border-b border-neutral-strong\">\n <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n <TabsTrigger value=\"jobs\">Jobs</TabsTrigger>\n </TabsList>\n </Tabs>\n </div>\n ),\n};\n\nexport const Controlled: Story = {\n args: {value: 'analytics', onValueChange: () => undefined} as never,\n render: () => {\n const [value, setValue] = useState('analytics');\n return (\n <div className=\"bg-background-neutral-background p-24 w-[80vw]\">\n <Tabs value={value} onValueChange={setValue}>\n <TabsList className=\"gap-12 border-b border-neutral-strong\">\n <TabsTrigger value=\"analytics\">Analytics</TabsTrigger>\n <TabsTrigger value=\"jobs\">Jobs</TabsTrigger>\n </TabsList>\n <TabsContents>\n <TabsContent value=\"analytics\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">\n Analytics content - Current value: {value}\n </p>\n </div>\n </TabsContent>\n <TabsContent value=\"jobs\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">\n Jobs content - Current value: {value}\n </p>\n </div>\n </TabsContent>\n </TabsContents>\n </Tabs>\n </div>\n );\n },\n};\n\nexport const MultipleTabs: Story = {\n args: {defaultValue: 'tab1'} as never,\n render: () => (\n <div className=\"bg-background-neutral-background p-24 w-[80vw]\">\n <Tabs defaultValue=\"tab1\">\n <TabsList className=\"gap-12 border-b border-neutral-strong\">\n <TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n <TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n <TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n <TabsTrigger value=\"tab4\">Tab 4</TabsTrigger>\n </TabsList>\n <TabsContents>\n <TabsContent value=\"tab1\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 1</p>\n </div>\n </TabsContent>\n <TabsContent value=\"tab2\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 2</p>\n </div>\n </TabsContent>\n <TabsContent value=\"tab3\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 3</p>\n </div>\n </TabsContent>\n <TabsContent value=\"tab4\">\n <div className=\"py-16\">\n <p className=\"text-foreground-neutral-base\">Content for Tab 4</p>\n </div>\n </TabsContent>\n </TabsContents>\n </Tabs>\n </div>\n ),\n};\n"],"names":["useState","Tabs","TabsContent","TabsContents","TabsList","TabsTrigger","meta","title","component","parameters","layout","tags","Default","args","defaultValue","render","div","className","value","Controlled","onValueChange","undefined","setValue","p","MultipleTabs"],"mappings":";AACA,SAAQA,QAAQ,QAAO,QAAQ;AAC/B,SAAQC,IAAI,EAAEC,WAAW,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,WAAW,QAAO,IAAI;AAEzE,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWP;IACXQ,YAAY;QACVC,QAAQ;IACV;IACAC,MAAM;QAAC;KAAW;AACpB;AAEA,eAAeL,KAAK;AAGpB,OAAO,MAAMM,UAAiB;IAC5BC,MAAM;QAACC,cAAc;IAAW;IAChCC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,KAAChB;gBAAKa,cAAa;0BACjB,cAAA,MAACV;oBAASa,WAAU;;sCAClB,KAACZ;4BAAYa,OAAM;sCAAY;;sCAC/B,KAACb;4BAAYa,OAAM;sCAAO;;;;;;AAKpC,EAAE;AAEF,OAAO,MAAMC,aAAoB;IAC/BN,MAAM;QAACK,OAAO;QAAaE,eAAe,IAAMC;IAAS;IACzDN,QAAQ;QACN,MAAM,CAACG,OAAOI,SAAS,GAAGtB,SAAS;QACnC,qBACE,KAACgB;YAAIC,WAAU;sBACb,cAAA,MAAChB;gBAAKiB,OAAOA;gBAAOE,eAAeE;;kCACjC,MAAClB;wBAASa,WAAU;;0CAClB,KAACZ;gCAAYa,OAAM;0CAAY;;0CAC/B,KAACb;gCAAYa,OAAM;0CAAO;;;;kCAE5B,MAACf;;0CACC,KAACD;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,MAACM;wCAAEN,WAAU;;4CAA+B;4CACNC;;;;;0CAI1C,KAAChB;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,MAACM;wCAAEN,WAAU;;4CAA+B;4CACXC;;;;;;;;;;IAQ/C;AACF,EAAE;AAEF,OAAO,MAAMM,eAAsB;IACjCX,MAAM;QAACC,cAAc;IAAM;IAC3BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,MAAChB;gBAAKa,cAAa;;kCACjB,MAACV;wBAASa,WAAU;;0CAClB,KAACZ;gCAAYa,OAAM;0CAAO;;0CAC1B,KAACb;gCAAYa,OAAM;0CAAO;;0CAC1B,KAACb;gCAAYa,OAAM;0CAAO;;0CAC1B,KAACb;gCAAYa,OAAM;0CAAO;;;;kCAE5B,MAACf;;0CACC,KAACD;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;0CAGhD,KAACf;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;0CAGhD,KAACf;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;0CAGhD,KAACf;gCAAYgB,OAAM;0CACjB,cAAA,KAACF;oCAAIC,WAAU;8CACb,cAAA,KAACM;wCAAEN,WAAU;kDAA+B;;;;;;;;;AAO1D,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/textarea/index.ts"],"sourcesContent":["export * from './textarea';\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,eAAO,MAAM,gBAAgB;;;8EAe3B,CAAC;AAEH,KAAK,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,GAC3D,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAExC,wBAAgB,QAAQ,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,2CAiB3E"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/textarea/textarea.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const textareaVariants = cva('', {\n variants: {\n variant: {\n base: 'bg-background-field-base',\n component: 'bg-background-field-component',\n },\n size: {\n base: 'py-6',\n small: 'py-4',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'base',\n },\n});\n\ntype TextareaProps = Omit<ComponentProps<'textarea'>, 'size'> &\n VariantProps<typeof textareaVariants>;\n\nexport function Textarea({className, variant, size, ...props}: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'textarea-resize-custom placeholder:text-foreground-neutral-muted w-full min-w-0 rounded-6 px-8 pr-24 text-sm leading-20 text-foreground-neutral-base shadow-button-neutral transition-[color,box-shadow] outline-none',\n 'hover:bg-background-field-hover',\n 'selection:bg-background-accent-neutral-soft selection:text-foreground-neutral-on-inverted',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled',\n 'focus-visible:shadow-border-interactive-with-active',\n 'aria-invalid:shadow-border-error',\n textareaVariants({variant, size}),\n className,\n )}\n {...props}\n />\n );\n}\n"],"names":["cva","cn","textareaVariants","variants","variant","base","component","size","small","defaultVariants","Textarea","className","props","textarea","data-slot"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,mBAAmBF,IAAI,IAAI;IACtCG,UAAU;QACRC,SAAS;YACPC,MAAM;YACNC,WAAW;QACb;QACAC,MAAM;YACJF,MAAM;YACNG,OAAO;QACT;IACF;IACAC,iBAAiB;QACfL,SAAS;QACTG,MAAM;IACR;AACF,GAAG;AAKH,OAAO,SAASG,SAAS,EAACC,SAAS,EAAEP,OAAO,EAAEG,IAAI,EAAE,GAAGK,OAAqB;IAC1E,qBACE,KAACC;QACCC,aAAU;QACVH,WAAWV,GACT,yNACA,mCACA,6FACA,mKACA,uDACA,oCACAC,iBAAiB;YAACE;YAASG;QAAI,IAC/BI;QAED,GAAGC,KAAK;;AAGf"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/textarea/textarea.stories.tsx"],"sourcesContent":["import {argosScreenshot} from '@argos-ci/storybook/vitest';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Code, Header} from 'components/typography';\nimport {Textarea} from './textarea';\n\nconst meta = {\n title: 'Components/Textarea',\n component: Textarea,\n tags: ['autodocs'],\n argTypes: {\n placeholder: {control: 'text'},\n disabled: {control: 'boolean'},\n 'aria-invalid': {control: 'boolean'},\n rows: {control: 'number'},\n cols: {control: 'number'},\n },\n args: {\n placeholder: 'Type something…',\n disabled: false,\n 'aria-invalid': false,\n rows: 4,\n },\n} satisfies Meta<typeof Textarea>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n play: async (ctx) => {\n await new Promise((resolve) => setTimeout(resolve, 100));\n await argosScreenshot(ctx, 'Textarea Default');\n },\n};\n\nconst variants = ['base', 'component'] as const;\nconst sizes = ['base', 'small'] as const;\n\nexport const States: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n {variants.map((variant) =>\n sizes.map((size) => (\n <div key={variant + size} className=\"flex flex-col gap-16\">\n <Header variant=\"h3\">\n {variant} {size}\n </Header>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Default\n </Code>\n\n <Textarea {...args} variant={variant} size={size} />\n </div>\n\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Hover\n </Code>\n\n <Textarea {...args} className=\"hover\" variant={variant} size={size} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Active\n </Code>\n\n <Textarea\n {...args}\n className=\"active\"\n defaultValue=\"The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.\"\n variant={variant}\n size={size}\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Focus\n </Code>\n\n <Textarea {...args} className=\"focus\" variant={variant} size={size} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Disabled\n </Code>\n\n <Textarea {...args} disabled variant={variant} size={size} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Invalid\n </Code>\n\n <Textarea {...args} aria-invalid variant={variant} size={size} />\n </div>\n </div>\n )),\n )}\n </div>\n ),\n};\n\nStates.parameters = {\n pseudo: {\n hover: '.hover',\n active: '.active',\n focusVisible: '.focus',\n },\n};\n\nexport const Sizes: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Rows: 2\n </Code>\n <Textarea {...args} rows={2} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Rows: 4 (default)\n </Code>\n <Textarea {...args} rows={4} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Rows: 6\n </Code>\n <Textarea {...args} rows={6} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Rows: 10\n </Code>\n <Textarea {...args} rows={10} />\n </div>\n </div>\n ),\n};\n\nexport const DesignMock: Story = {\n render: () => {\n const variants = [\n {key: 'base', label: 'Primary'},\n {key: 'component', label: 'Secondary'},\n ] as const;\n const states = [\n {name: 'Default', props: {}},\n {name: 'Hover', props: {className: 'hover'}},\n {name: 'Focus', props: {className: 'focus'}},\n {name: 'Filled', props: {defaultValue: 'Placeholder'}},\n {name: 'Filled Hover', props: {defaultValue: 'Placeholder', className: 'hover'}},\n {name: 'Disabled', props: {disabled: true}},\n {name: 'Error', props: {'aria-invalid': true}},\n ] as const;\n\n return (\n <div className=\"flex flex-col gap-32 pb-64 pt-32 px-32\">\n <Header variant=\"h3\" className=\"text-foreground-neutral-subtle\">\n TEXT AREA\n </Header>\n <div className=\"flex flex-row gap-32\">\n {variants.map((variant) => (\n <div key={variant.key} className=\"flex flex-col gap-32\">\n {states.map((state) => (\n <div key={state.name} className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Size=Base (32), State={state.name}, Color={variant.label}\n </Code>\n <div className=\"w-280\">\n <Textarea\n placeholder=\"Placeholder\"\n variant={variant.key}\n size=\"base\"\n rows={2}\n {...state.props}\n />\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n },\n};\n\nDesignMock.parameters = {\n pseudo: {\n hover: '.hover',\n focusVisible: '.focus',\n },\n};\n"],"names":["argosScreenshot","Code","Header","Textarea","meta","title","component","tags","argTypes","placeholder","control","disabled","rows","cols","args","Default","play","ctx","Promise","resolve","setTimeout","variants","sizes","States","render","div","className","map","variant","size","defaultValue","aria-invalid","parameters","pseudo","hover","active","focusVisible","Sizes","DesignMock","key","label","states","name","props","state"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/theme/index.ts"],"sourcesContent":["export * from './theme-provider';\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../../src/components/theme/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAC,KAAK,KAAK,EAAuB,MAAM,aAAa,CAAC;AAE7D,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAuB,EACvB,UAA4B,EAC5B,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAmCpB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/theme/theme-provider.tsx"],"sourcesContent":["import {type ReactNode, useEffect, useState} from 'react';\nimport {type Theme, ThemeProviderContext} from 'state/theme';\n\ntype ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'shipfox-theme',\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme,\n );\n\n useEffect(() => {\n const root = window.document.documentElement;\n\n root.classList.remove('light', 'dark');\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n\n root.classList.add(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n }, [theme]);\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n localStorage.setItem(storageKey, theme);\n setTheme(theme);\n },\n };\n\n return (\n <ThemeProviderContext.Provider {...props} value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n}\n"],"names":["useEffect","useState","ThemeProviderContext","ThemeProvider","children","defaultTheme","storageKey","props","theme","setTheme","localStorage","getItem","root","window","document","documentElement","classList","remove","systemTheme","matchMedia","matches","add","value","setItem","Provider"],"mappings":";AAAA,SAAwBA,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAC1D,SAAoBC,oBAAoB,QAAO,cAAc;AAQ7D,OAAO,SAASC,cAAc,EAC5BC,QAAQ,EACRC,eAAe,QAAQ,EACvBC,aAAa,eAAe,EAC5B,GAAGC,OACgB;IACnB,MAAM,CAACC,OAAOC,SAAS,GAAGR,SACxB,IAAM,AAACS,aAAaC,OAAO,CAACL,eAAyBD;IAGvDL,UAAU;QACR,MAAMY,OAAOC,OAAOC,QAAQ,CAACC,eAAe;QAE5CH,KAAKI,SAAS,CAACC,MAAM,CAAC,SAAS;QAE/B,IAAIT,UAAU,UAAU;YACtB,MAAMU,cAAcL,OAAOM,UAAU,CAAC,gCAAgCC,OAAO,GACzE,SACA;YAEJR,KAAKI,SAAS,CAACK,GAAG,CAACH;YACnB;QACF;QAEAN,KAAKI,SAAS,CAACK,GAAG,CAACb;IACrB,GAAG;QAACA;KAAM;IAEV,MAAMc,QAAQ;QACZd;QACAC,UAAU,CAACD;YACTE,aAAaa,OAAO,CAACjB,YAAYE;YACjCC,SAASD;QACX;IACF;IAEA,qBACE,KAACN,qBAAqBsB,QAAQ;QAAE,GAAGjB,KAAK;QAAEe,OAAOA;kBAC9ClB;;AAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toast/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export * from './toast';\nexport * from './toast-custom';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,iBAAiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast-custom.d.ts","sourceRoot":"","sources":["../../../src/components/toast/toast-custom.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAKhE,QAAA,MAAM,mBAAmB;;8EAavB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAiBF,wBAAgB,WAAW,CAAC,EAC1B,OAAmB,EACnB,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,2CAgGlB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/toast/toast-custom.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon} from 'components/icon/icon';\nimport type {ReactNode} from 'react';\nimport {cn} from 'utils/cn';\n\nconst toastCustomVariants = cva('group relative flex items-start gap-8', {\n variants: {\n variant: {\n default: 'text-tag-neutral-icon',\n info: 'text-tag-neutral-icon',\n success: 'text-tag-success-icon',\n warning: 'text-tag-warning-icon',\n error: 'text-tag-error-icon',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type ToastAction = {\n label: string;\n onClick: () => void;\n};\n\nexport type ToastCustomProps = VariantProps<typeof toastCustomVariants> & {\n title?: string;\n description?: string;\n content?: string;\n actions?: ToastAction[];\n onClose?: () => void;\n className?: string;\n};\n\nfunction getDefaultIcon(variant: ToastCustomProps['variant'] = 'default'): ReactNode {\n switch (variant) {\n case 'info':\n return <Icon name=\"info\" size={20} />;\n case 'success':\n return <Icon name=\"checkCircleSolid\" size={20} />;\n case 'warning':\n return <Icon name=\"info\" size={20} />;\n case 'error':\n return <Icon name=\"xCircleSolid\" size={20} />;\n default:\n return <Icon name=\"info\" size={20} />;\n }\n}\n\nexport function ToastCustom({\n variant = 'default',\n title,\n description,\n content,\n actions,\n onClose,\n className,\n}: ToastCustomProps) {\n const hasTitle = Boolean(title);\n const hasDescription = Boolean(description);\n const hasContent = Boolean(content);\n const hasActions = Boolean(actions && actions.length > 0);\n const isSimple = hasContent && !hasTitle && !hasDescription;\n\n return (\n <div data-slot=\"toast-custom\" className={cn(toastCustomVariants({variant}), className)}>\n <div className=\"w-20 h-20 rounded-full flex items-start justify-center shrink-0 pt-1\">\n {getDefaultIcon(variant)}\n </div>\n\n <div className=\"flex-1 min-w-0\">\n {hasTitle && (\n <div\n data-slot=\"toast-custom-title\"\n className=\"font-medium text-sm leading-20 text-foreground-neutral-base mb-4\"\n >\n {title}\n </div>\n )}\n {hasDescription && (\n <div\n data-slot=\"toast-custom-description\"\n className=\"text-xs leading-20 text-foreground-neutral-muted mb-8\"\n >\n {description}\n </div>\n )}\n {isSimple ? (\n <div className=\"flex items-center justify-between gap-16 min-w-400 mr-30\">\n <div\n data-slot=\"toast-custom-content\"\n className=\"text-sm leading-20 text-foreground-neutral-base\"\n >\n {content}\n </div>\n {hasActions && (\n <div data-slot=\"toast-custom-actions\" className=\"flex items-center gap-16\">\n {actions?.map((action) => (\n <button\n key={action.label}\n data-slot=\"toast-custom-action\"\n type=\"button\"\n onClick={action.onClick}\n className=\"bg-transparent border-none p-0 cursor-pointer text-xs font-medium leading-20 text-foreground-neutral-base hover:text-foreground-neutral-subtle transition-colors duration-150 outline-none focus-visible:ring-2 focus-visible:ring-background-accent-blue-base focus-visible:ring-offset-2\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n ) : (\n <>\n {hasContent && !hasTitle && (\n <div\n data-slot=\"toast-custom-content\"\n className=\"text-sm leading-20 text-foreground-neutral-base mb-8\"\n >\n {content}\n </div>\n )}\n {hasActions && (\n <div data-slot=\"toast-custom-actions\" className=\"flex items-center gap-16 mt-8\">\n {actions?.map((action) => (\n <button\n key={action.label}\n data-slot=\"toast-custom-action\"\n type=\"button\"\n onClick={action.onClick}\n className=\"bg-transparent border-none p-0 cursor-pointer text-xs font-medium leading-20 text-foreground-neutral-base hover:text-foreground-neutral-subtle transition-colors duration-150 outline-none focus-visible:ring-2 focus-visible:ring-background-accent-blue-base focus-visible:ring-offset-2\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n\n {onClose && (\n <button\n data-slot=\"toast-custom-close\"\n type=\"button\"\n onClick={onClose}\n className=\"absolute cursor-pointer -top-2 -right-2 rounded-4 p-4 bg-transparent border-none text-foreground-neutral-muted hover:text-foreground-neutral-base hover:bg-background-components-hover transition-colors duration-150 outline-none focus-visible:ring-2 focus-visible:ring-background-accent-blue-base focus-visible:ring-offset-2 shrink-0\"\n aria-label=\"Close\"\n >\n <Icon name=\"close\" className=\"w-16 h-16\" />\n </button>\n )}\n </div>\n );\n}\n"],"names":["cva","Icon","cn","toastCustomVariants","variants","variant","default","info","success","warning","error","defaultVariants","getDefaultIcon","name","size","ToastCustom","title","description","content","actions","onClose","className","hasTitle","Boolean","hasDescription","hasContent","hasActions","length","isSimple","div","data-slot","map","action","button","type","onClick","label","aria-label"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAO,uBAAuB;AAE1C,SAAQC,EAAE,QAAO,WAAW;AAE5B,MAAMC,sBAAsBH,IAAI,yCAAyC;IACvEI,UAAU;QACRC,SAAS;YACPC,SAAS;YACTC,MAAM;YACNC,SAAS;YACTC,SAAS;YACTC,OAAO;QACT;IACF;IACAC,iBAAiB;QACfN,SAAS;IACX;AACF;AAgBA,SAASO,eAAeP,UAAuC,SAAS;IACtE,OAAQA;QACN,KAAK;YACH,qBAAO,KAACJ;gBAAKY,MAAK;gBAAOC,MAAM;;QACjC,KAAK;YACH,qBAAO,KAACb;gBAAKY,MAAK;gBAAmBC,MAAM;;QAC7C,KAAK;YACH,qBAAO,KAACb;gBAAKY,MAAK;gBAAOC,MAAM;;QACjC,KAAK;YACH,qBAAO,KAACb;gBAAKY,MAAK;gBAAeC,MAAM;;QACzC;YACE,qBAAO,KAACb;gBAAKY,MAAK;gBAAOC,MAAM;;IACnC;AACF;AAEA,OAAO,SAASC,YAAY,EAC1BV,UAAU,SAAS,EACnBW,KAAK,EACLC,WAAW,EACXC,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,SAAS,EACQ;IACjB,MAAMC,WAAWC,QAAQP;IACzB,MAAMQ,iBAAiBD,QAAQN;IAC/B,MAAMQ,aAAaF,QAAQL;IAC3B,MAAMQ,aAAaH,QAAQJ,WAAWA,QAAQQ,MAAM,GAAG;IACvD,MAAMC,WAAWH,cAAc,CAACH,YAAY,CAACE;IAE7C,qBACE,MAACK;QAAIC,aAAU;QAAeT,WAAWnB,GAAGC,oBAAoB;YAACE;QAAO,IAAIgB;;0BAC1E,KAACQ;gBAAIR,WAAU;0BACZT,eAAeP;;0BAGlB,MAACwB;gBAAIR,WAAU;;oBACZC,0BACC,KAACO;wBACCC,aAAU;wBACVT,WAAU;kCAETL;;oBAGJQ,gCACC,KAACK;wBACCC,aAAU;wBACVT,WAAU;kCAETJ;;oBAGJW,yBACC,MAACC;wBAAIR,WAAU;;0CACb,KAACQ;gCACCC,aAAU;gCACVT,WAAU;0CAETH;;4BAEFQ,4BACC,KAACG;gCAAIC,aAAU;gCAAuBT,WAAU;0CAC7CF,SAASY,IAAI,CAACC,uBACb,KAACC;wCAECH,aAAU;wCACVI,MAAK;wCACLC,SAASH,OAAOG,OAAO;wCACvBd,WAAU;kDAETW,OAAOI,KAAK;uCANRJ,OAAOI,KAAK;;;uCAa3B;;4BACGX,cAAc,CAACH,0BACd,KAACO;gCACCC,aAAU;gCACVT,WAAU;0CAETH;;4BAGJQ,4BACC,KAACG;gCAAIC,aAAU;gCAAuBT,WAAU;0CAC7CF,SAASY,IAAI,CAACC,uBACb,KAACC;wCAECH,aAAU;wCACVI,MAAK;wCACLC,SAASH,OAAOG,OAAO;wCACvBd,WAAU;kDAETW,OAAOI,KAAK;uCANRJ,OAAOI,KAAK;;;;;;YAe9BhB,yBACC,KAACa;gBACCH,aAAU;gBACVI,MAAK;gBACLC,SAASf;gBACTC,WAAU;gBACVgB,cAAW;0BAEX,cAAA,KAACpC;oBAAKY,MAAK;oBAAQQ,WAAU;;;;;AAKvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/components/toast/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,IAAI,WAAW,EACrB,MAAM,QAAQ,CAAC;AAEhB,KAAK,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AAEtD,iBAAS,OAAO,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,YAAY,2CA4BxC;AAED,OAAO,EAAC,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,KAAK,YAAY,EAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/toast/toast.tsx"],"sourcesContent":["import {useTheme} from 'hooks/useTheme';\nimport {AlertTriangle, CheckCircle2, Info, Loader2, XCircle} from 'lucide-react';\nimport {\n Toaster as SonnerToaster,\n type ToasterProps as SonnerToasterProps,\n toast as sonnerToast,\n} from 'sonner';\n\ntype ToasterProps = Omit<SonnerToasterProps, 'theme'>;\n\nfunction Toaster({...props}: ToasterProps) {\n const {theme} = useTheme();\n\n return (\n <SonnerToaster\n theme={theme as SonnerToasterProps['theme']}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background-components-base group-[.toaster]:text-foreground-neutral-base group-[.toaster]:border group-[.toaster]:border-border-neutral-base group-[.toaster]:shadow-tooltip rounded-8 p-8',\n description: 'group-[.toast]:text-foreground-neutral-muted text-xs leading-20 mt-4',\n actionButton:\n 'group-[.toast]:bg-background-button-neutral-default group-[.toast]:text-foreground-neutral-base group-[.toast]:hover:bg-background-button-neutral-hover rounded-6 px-8 py-4 text-xs font-medium',\n cancelButton:\n 'group-[.toast]:bg-background-button-transparent-default group-[.toast]:text-foreground-neutral-base group-[.toast]:hover:bg-background-button-transparent-hover rounded-6 px-8 py-4 text-xs font-medium',\n },\n }}\n icons={{\n success: <CheckCircle2 className=\"size-20 text-tag-success-icon\" />,\n info: <Info className=\"size-20 text-tag-blue-icon\" />,\n warning: <AlertTriangle className=\"size-20 text-tag-warning-icon\" />,\n error: <XCircle className=\"size-20 text-tag-error-icon\" />,\n loading: <Loader2 className=\"size-20 text-tag-neutral-icon animate-spin\" />,\n }}\n {...props}\n />\n );\n}\n\nexport {Toaster, sonnerToast as toast, type ToasterProps};\n"],"names":["useTheme","AlertTriangle","CheckCircle2","Info","Loader2","XCircle","Toaster","SonnerToaster","toast","sonnerToast","props","theme","className","toastOptions","classNames","description","actionButton","cancelButton","icons","success","info","warning","error","loading"],"mappings":";AAAA,SAAQA,QAAQ,QAAO,iBAAiB;AACxC,SAAQC,aAAa,EAAEC,YAAY,EAAEC,IAAI,EAAEC,OAAO,EAAEC,OAAO,QAAO,eAAe;AACjF,SACEC,WAAWC,aAAa,EAExBC,SAASC,WAAW,QACf,SAAS;AAIhB,SAASH,QAAQ,EAAC,GAAGI,OAAoB;IACvC,MAAM,EAACC,KAAK,EAAC,GAAGX;IAEhB,qBACE,KAACO;QACCI,OAAOA;QACPC,WAAU;QACVC,cAAc;YACZC,YAAY;gBACVN,OACE;gBACFO,aAAa;gBACbC,cACE;gBACFC,cACE;YACJ;QACF;QACAC,OAAO;YACLC,uBAAS,KAACjB;gBAAaU,WAAU;;YACjCQ,oBAAM,KAACjB;gBAAKS,WAAU;;YACtBS,uBAAS,KAACpB;gBAAcW,WAAU;;YAClCU,qBAAO,KAACjB;gBAAQO,WAAU;;YAC1BW,uBAAS,KAACnB;gBAAQQ,WAAU;;QAC9B;QACC,GAAGF,KAAK;;AAGf;AAEA,SAAQJ,OAAO,EAAEG,eAAeD,KAAK,GAAqB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/toast/toast.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Button} from 'components/button/button';\nimport {Code} from 'components/typography';\nimport {Toaster, toast} from './toast';\nimport {ToastCustom} from './toast-custom';\n\nconst meta = {\n title: 'Components/Toast',\n component: Toaster,\n tags: ['autodocs'],\n parameters: {\n layout: 'centered',\n },\n decorators: [\n (Story) => (\n <>\n <Story />\n <div className=\"flex flex-wrap justify-center items-center gap-32\">\n {/* Regular Toasts */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-center\">\n REGULAR TOASTS\n </Code>\n <Button\n onClick={() => {\n toast('Event has been created');\n }}\n >\n Default Toast\n </Button>\n <Button\n onClick={() => {\n toast.success('Success! Your changes have been saved.');\n }}\n >\n Success Toast\n </Button>\n <Button\n onClick={() => {\n toast.error('Error! Something went wrong.');\n }}\n >\n Error Toast\n </Button>\n <Button\n onClick={() => {\n toast.warning('Warning! Please review your input.');\n }}\n >\n Warning Toast\n </Button>\n <Button\n onClick={() => {\n toast.info('Info: This is an informational message.');\n }}\n >\n Info Toast\n </Button>\n <Button\n onClick={() => {\n toast('Event has been created', {\n description: 'Sunday, December 03, 2023 at 9:00 AM',\n });\n }}\n >\n Toast with Description\n </Button>\n <Button\n onClick={() => {\n toast('Event has been created', {\n description: 'Sunday, December 03, 2023 at 9:00 AM',\n action: {\n label: 'Undo',\n onClick: () => {\n toast('Undo clicked');\n },\n },\n });\n }}\n >\n Toast with Action\n </Button>\n <Button\n onClick={() => {\n const promise = new Promise((resolve) => {\n setTimeout(() => {\n resolve({name: 'Sonner'});\n }, 2000);\n });\n\n toast.promise(promise, {\n loading: 'Loading...',\n success: (data) => {\n return `${(data as {name: string}).name} toast has been added`;\n },\n error: 'Error',\n });\n }}\n >\n Promise Toast\n </Button>\n </div>\n {/* Custom Toasts */}\n <div className=\"flex flex-col gap-8 text-center\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n CUSTOM TOASTS\n </Code>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"success\"\n title=\"Insert your alert title here\"\n description=\"Insert the alert description here. It would look better as two lines of text.\"\n actions={[\n {\n label: 'Upgrade',\n onClick: () => {\n toast('Upgrade clicked');\n toast.dismiss(t);\n },\n },\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Success - Full)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"info\"\n title=\"Insert your alert title here\"\n description=\"Insert the alert description here. It would look better as two lines of text.\"\n actions={[\n {\n label: 'Upgrade',\n onClick: () => {\n toast('Upgrade clicked');\n toast.dismiss(t);\n },\n },\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Info - Full)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"warning\"\n title=\"Insert your alert title here\"\n description=\"Insert the alert description here. It would look better as two lines of text.\"\n actions={[\n {\n label: 'Upgrade',\n onClick: () => {\n toast('Upgrade clicked');\n toast.dismiss(t);\n },\n },\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Warning - Full)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"error\"\n title=\"Insert your alert title here\"\n description=\"Insert the alert description here. It would look better as two lines of text.\"\n actions={[\n {\n label: 'Upgrade',\n onClick: () => {\n toast('Upgrade clicked');\n toast.dismiss(t);\n },\n },\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Error - Full)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"success\"\n content=\"Insert your alert content here\"\n actions={[\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Success - Simple)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"info\"\n content=\"Insert your alert content here\"\n actions={[\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Info - Simple)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"warning\"\n content=\"Insert your alert content here\"\n actions={[\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Warning - Simple)\n </Button>\n <Button\n onClick={() => {\n toast.custom(\n (t) => (\n <ToastCustom\n variant=\"error\"\n content=\"Insert your alert content here\"\n actions={[\n {\n label: 'Learn more',\n onClick: () => {\n toast('Learn more clicked');\n toast.dismiss(t);\n },\n },\n ]}\n onClose={() => toast.dismiss(t)}\n />\n ),\n {\n duration: Infinity,\n },\n );\n }}\n >\n Custom Toast (Error - Simple)\n </Button>\n </div>\n </div>\n </>\n ),\n ],\n} satisfies Meta<typeof Toaster>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => <Toaster position=\"top-center\" />,\n};\n"],"names":["Button","Code","Toaster","toast","ToastCustom","meta","title","component","tags","parameters","layout","decorators","Story","div","className","variant","onClick","success","error","warning","info","description","action","label","promise","Promise","resolve","setTimeout","name","loading","data","custom","t","actions","dismiss","onClose","duration","Infinity","content","Default","render","position"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/tooltip/index.ts"],"sourcesContent":["export * from './tooltip';\n"],"names":[],"mappings":"AAAA,cAAc,YAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAS,KAAK,UAAU,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,QAAA,MAAM,sBAAsB;;;8EAoB3B,CAAC;AAEF,iBAAS,eAAe,CAAC,EACvB,aAAiB,EACjB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,2CAQlD;AAED,iBAAS,OAAO,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAMxE;AAED,iBAAS,cAAc,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAElF;AAED,QAAA,MAAM,iBAAiB,EAAE,UAIxB,CAAC;AAEF,KAAK,mBAAmB,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GACxE,YAAY,CAAC,OAAO,sBAAsB,CAAC,GAAG;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEJ,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAc,EACd,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,QAAe,EACf,UAA8B,EAC9B,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAoCrB;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,iBAAiB,GAClB,CAAC;AACF,YAAY,EAAC,mBAAmB,EAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {motion, type Transition} from 'framer-motion';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nconst tooltipContentVariants = cva(\n 'rounded-8 px-8 py-4 text-xs font-medium leading-20 z-50 w-fit text-balance shadow-tooltip',\n {\n variants: {\n variant: {\n default: 'bg-background-components-base text-foreground-neutral-base',\n inverted: 'bg-background-button-inverted-default text-foreground-contrast-primary',\n muted: 'bg-background-neutral-subtle text-foreground-neutral-muted',\n },\n size: {\n sm: 'px-6 py-2 text-xs',\n md: 'px-8 py-4 text-xs',\n lg: 'px-10 py-6 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({...props}: ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({...props}: ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nconst defaultTransition: Transition = {\n type: 'spring',\n stiffness: 300,\n damping: 17,\n};\n\ntype TooltipContentProps = ComponentProps<typeof TooltipPrimitive.Content> &\n VariantProps<typeof tooltipContentVariants> & {\n animated?: boolean;\n transition?: Transition;\n };\n\nfunction TooltipContent({\n className,\n sideOffset = 8,\n children,\n variant,\n size,\n animated = true,\n transition = defaultTransition,\n ...props\n}: TooltipContentProps) {\n if (animated) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n asChild\n {...props}\n >\n <motion.div\n className={cn(tooltipContentVariants({variant, size, className}))}\n initial={{opacity: 0, scale: 0.95}}\n animate={{opacity: 1, scale: 1}}\n exit={{opacity: 0, scale: 0.95}}\n transition={transition}\n >\n {children}\n </motion.div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n }\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(tooltipContentVariants({variant, size, className}))}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n tooltipContentVariants,\n defaultTransition,\n};\nexport type {TooltipContentProps};\n"],"names":["TooltipPrimitive","cva","motion","cn","tooltipContentVariants","variants","variant","default","inverted","muted","size","sm","md","lg","defaultVariants","TooltipProvider","delayDuration","props","Provider","data-slot","Tooltip","Root","TooltipTrigger","Trigger","defaultTransition","type","stiffness","damping","TooltipContent","className","sideOffset","children","animated","transition","Portal","Content","asChild","div","initial","opacity","scale","animate","exit"],"mappings":";AAAA,YAAYA,sBAAsB,0BAA0B;AAC5D,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,MAAM,QAAwB,gBAAgB;AAEtD,SAAQC,EAAE,QAAO,WAAW;AAE5B,MAAMC,yBAAyBH,IAC7B,6FACA;IACEI,UAAU;QACRC,SAAS;YACPC,SAAS;YACTC,UAAU;YACVC,OAAO;QACT;QACAC,MAAM;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfR,SAAS;QACTI,MAAM;IACR;AACF;AAGF,SAASK,gBAAgB,EACvBC,gBAAgB,CAAC,EACjB,GAAGC,OAC8C;IACjD,qBACE,KAACjB,iBAAiBkB,QAAQ;QACxBC,aAAU;QACVH,eAAeA;QACd,GAAGC,KAAK;;AAGf;AAEA,SAASG,QAAQ,EAAC,GAAGH,OAAoD;IACvE,qBACE,KAACF;kBACC,cAAA,KAACf,iBAAiBqB,IAAI;YAACF,aAAU;YAAW,GAAGF,KAAK;;;AAG1D;AAEA,SAASK,eAAe,EAAC,GAAGL,OAAuD;IACjF,qBAAO,KAACjB,iBAAiBuB,OAAO;QAACJ,aAAU;QAAmB,GAAGF,KAAK;;AACxE;AAEA,MAAMO,oBAAgC;IACpCC,MAAM;IACNC,WAAW;IACXC,SAAS;AACX;AAQA,SAASC,eAAe,EACtBC,SAAS,EACTC,aAAa,CAAC,EACdC,QAAQ,EACRzB,OAAO,EACPI,IAAI,EACJsB,WAAW,IAAI,EACfC,aAAaT,iBAAiB,EAC9B,GAAGP,OACiB;IACpB,IAAIe,UAAU;QACZ,qBACE,KAAChC,iBAAiBkC,MAAM;sBACtB,cAAA,KAAClC,iBAAiBmC,OAAO;gBACvBhB,aAAU;gBACVW,YAAYA;gBACZM,OAAO;gBACN,GAAGnB,KAAK;0BAET,cAAA,KAACf,OAAOmC,GAAG;oBACTR,WAAW1B,GAAGC,uBAAuB;wBAACE;wBAASI;wBAAMmB;oBAAS;oBAC9DS,SAAS;wBAACC,SAAS;wBAAGC,OAAO;oBAAI;oBACjCC,SAAS;wBAACF,SAAS;wBAAGC,OAAO;oBAAC;oBAC9BE,MAAM;wBAACH,SAAS;wBAAGC,OAAO;oBAAI;oBAC9BP,YAAYA;8BAEXF;;;;IAKX;IAEA,qBACE,KAAC/B,iBAAiBkC,MAAM;kBACtB,cAAA,KAAClC,iBAAiBmC,OAAO;YACvBhB,aAAU;YACVW,YAAYA;YACZD,WAAW1B,GAAGC,uBAAuB;gBAACE;gBAASI;gBAAMmB;YAAS;YAC7D,GAAGZ,KAAK;sBAERc;;;AAIT;AAEA,SACEX,OAAO,EACPE,cAAc,EACdM,cAAc,EACdb,eAAe,EACfX,sBAAsB,EACtBoB,iBAAiB,GACjB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/tooltip/tooltip.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code} from 'components/typography';\nimport {Button} from '../button';\nimport {Tooltip, TooltipContent, type TooltipContentProps, TooltipTrigger} from './tooltip';\n\ntype TooltipStoryArgs = {\n defaultOpen?: boolean;\n delayDuration?: number;\n variant?: TooltipContentProps['variant'];\n size?: TooltipContentProps['size'];\n side?: TooltipContentProps['side'];\n align?: TooltipContentProps['align'];\n sideOffset?: TooltipContentProps['sideOffset'];\n animated?: TooltipContentProps['animated'];\n};\n\nconst meta = {\n title: 'Components/Tooltip',\n component: Tooltip,\n tags: ['autodocs'],\n argTypes: {\n defaultOpen: {control: 'boolean'},\n delayDuration: {control: 'number'},\n variant: {\n control: 'select',\n options: ['default', 'inverted', 'muted'],\n },\n size: {\n control: 'select',\n options: ['sm', 'md', 'lg'],\n },\n side: {\n control: 'select',\n options: ['top', 'bottom', 'left', 'right'],\n },\n align: {\n control: 'select',\n options: ['start', 'center', 'end'],\n },\n sideOffset: {control: 'number'},\n animated: {control: 'boolean'},\n },\n args: {\n defaultOpen: false,\n delayDuration: 0,\n variant: 'default',\n size: 'md',\n side: 'top',\n align: 'center',\n sideOffset: 8,\n animated: true,\n },\n} satisfies Meta<TooltipStoryArgs>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n args: {\n defaultOpen: false,\n },\n\n render: (args: TooltipStoryArgs) => {\n const {defaultOpen, delayDuration, variant, size, side, align, sideOffset, animated} = args;\n return (\n <div className=\"flex items-center justify-center p-64\">\n <Tooltip defaultOpen={defaultOpen} delayDuration={delayDuration}>\n <TooltipTrigger asChild>\n <Button>Hover me</Button>\n </TooltipTrigger>\n <TooltipContent\n variant={variant}\n size={size}\n side={side}\n align={align}\n sideOffset={sideOffset}\n animated={animated}\n >\n Tooltip Text\n </TooltipContent>\n </Tooltip>\n </div>\n );\n },\n};\n\nexport const Types: Story = {\n render: () => (\n <div className=\"flex flex-col gap-64 p-64\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n TYPES\n </Code>\n <div className=\"flex flex-col gap-32\">\n {/* Text Type */}\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Type=Text\n </Code>\n <div className=\"flex gap-16\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"primary\">Tooltip Text</Button>\n </TooltipTrigger>\n <TooltipContent variant=\"inverted\">Tooltip Text</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"secondary\">Tooltip Text</Button>\n </TooltipTrigger>\n <TooltipContent>Tooltip Text</TooltipContent>\n </Tooltip>\n </div>\n </div>\n\n {/* Shortcut Type */}\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Type=Shortcut\n </Code>\n <div className=\"flex gap-16\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"primary\">Tooltip Text</Button>\n </TooltipTrigger>\n <TooltipContent variant=\"inverted\">\n <div className=\"flex items-center gap-6\">\n <span>Tooltip Text</span>\n <div className=\"flex items-center gap-4\">\n <kbd className=\"flex h-16 w-16 items-center justify-center rounded-4 border border-border-neutral-base bg-background-field-base text-sm text-foreground-neutral-subtle\">\n ⌘\n </kbd>\n <kbd className=\"flex h-16 w-16 items-center justify-center rounded-4 border border-border-neutral-base bg-background-field-base text-sm text-foreground-neutral-subtle\">\n /\n </kbd>\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"secondary\">Tooltip Text</Button>\n </TooltipTrigger>\n <TooltipContent>\n <div className=\"flex items-center gap-6\">\n <span>Tooltip Text</span>\n <div className=\"flex items-center gap-4\">\n <kbd className=\"flex h-16 w-16 items-center justify-center rounded-4 border border-border-neutral-base bg-background-field-base text-xs text-foreground-neutral-subtle\">\n ⌘\n </kbd>\n <kbd className=\"flex h-16 w-16 items-center justify-center rounded-4 border border-border-neutral-base bg-background-field-base text-xs text-foreground-neutral-subtle\">\n /\n </kbd>\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n\n {/* Graph Type */}\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Type=Graph\n </Code>\n <div className=\"flex gap-16\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"primary\">Hover for graph data</Button>\n </TooltipTrigger>\n <TooltipContent variant=\"inverted\" className=\"w-160\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"text-xs text-foreground-neutral-subtle\">Jul 22, 2025</div>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-purple-500\" />\n <span className=\"text-xs\">Data A</span>\n </div>\n <span className=\"text-xs\">$6.14</span>\n </div>\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-green-500\" />\n <span className=\"text-xs\">Data B</span>\n </div>\n <span className=\"text-xs\">$4.37</span>\n </div>\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-orange-500\" />\n <span className=\"text-xs\">Data C</span>\n </div>\n <span className=\"text-xs\">$12.88</span>\n </div>\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-blue-500\" />\n <span className=\"text-xs\">Data D</span>\n </div>\n <span className=\"text-xs\">$2.91</span>\n </div>\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"secondary\">Hover for graph data</Button>\n </TooltipTrigger>\n <TooltipContent className=\"w-160\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"text-xs text-foreground-neutral-subtle\">Jul 22, 2025</div>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-purple-500\" />\n <span className=\"text-xs\">Data A</span>\n </div>\n <span className=\"text-xs\">$6.14</span>\n </div>\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-green-500\" />\n <span className=\"text-xs\">Data B</span>\n </div>\n <span className=\"text-xs\">$4.37</span>\n </div>\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-orange-500\" />\n <span className=\"text-xs\">Data C</span>\n </div>\n <span className=\"text-xs\">$12.88</span>\n </div>\n <div className=\"flex items-center justify-between gap-12\">\n <div className=\"flex flex-1 items-center gap-4\">\n <div className=\"size-6 rounded-full bg-blue-500\" />\n <span className=\"text-xs\">Data D</span>\n </div>\n <span className=\"text-xs\">$2.91</span>\n </div>\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n\n {/* Breadcrumbs Type */}\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Type=Breadcrumbs\n </Code>\n <div className=\"flex gap-16\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"primary\">Breadcrumb</Button>\n </TooltipTrigger>\n <TooltipContent variant=\"inverted\">\n <div className=\"flex items-center gap-6\">\n <span>Breadcrumb</span>\n <span className=\"text-foreground-neutral-muted\">/</span>\n <span>Breadcrumb</span>\n </div>\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"secondary\">Breadcrumb</Button>\n </TooltipTrigger>\n <TooltipContent>\n <div className=\"flex items-center gap-6\">\n <span>Breadcrumb</span>\n <span className=\"text-foreground-neutral-muted\">/</span>\n <span>Breadcrumb</span>\n </div>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n </div>\n </div>\n ),\n};\n"],"names":["Code","Button","Tooltip","TooltipContent","TooltipTrigger","meta","title","component","tags","argTypes","defaultOpen","control","delayDuration","variant","options","size","side","align","sideOffset","animated","args","Default","render","div","className","asChild","Types","span","kbd"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/components/typography/code.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAG1E,eAAO,MAAM,YAAY;;8EAUvB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,GAC7E,YAAY,CAAC,OAAO,YAAY,CAAC,GAAG;IAClC,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEJ,wBAAgB,IAAI,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,SAAS,2CAejF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/code.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport type {ElementType, HTMLAttributes, PropsWithChildren} from 'react';\nimport {cn} from 'utils';\n\nexport const codeVariants = cva('', {\n variants: {\n variant: {\n label: 'text-xs',\n paragraph: 'text-sm',\n },\n },\n defaultVariants: {\n variant: 'paragraph',\n },\n});\n\nexport type CodeProps = PropsWithChildren<HTMLAttributes<HTMLParagraphElement>> &\n VariantProps<typeof codeVariants> & {\n as?: ElementType;\n bold?: boolean;\n };\n\nexport function Code({children, className, variant, as, bold, ...props}: CodeProps) {\n const Component = as ?? 'p';\n return (\n <Component\n className={cn(\n codeVariants({variant}),\n 'leading-20 font-code',\n {'font-bold': bold},\n className,\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n"],"names":["cva","cn","codeVariants","variants","variant","label","paragraph","defaultVariants","Code","children","className","as","bold","props","Component"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,QAAQ;AAEzB,OAAO,MAAMC,eAAeF,IAAI,IAAI;IAClCG,UAAU;QACRC,SAAS;YACPC,OAAO;YACPC,WAAW;QACb;IACF;IACAC,iBAAiB;QACfH,SAAS;IACX;AACF,GAAG;AAQH,OAAO,SAASI,KAAK,EAACC,QAAQ,EAAEC,SAAS,EAAEN,OAAO,EAAEO,EAAE,EAAEC,IAAI,EAAE,GAAGC,OAAiB;IAChF,MAAMC,YAAYH,MAAM;IACxB,qBACE,KAACG;QACCJ,WAAWT,GACTC,aAAa;YAACE;QAAO,IACrB,wBACA;YAAC,aAAaQ;QAAI,GAClBF;QAED,GAAGG,KAAK;kBAERJ;;AAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/code.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code} from './code';\n\nconst meta: Meta = {\n title: 'Typography/Code',\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst variants = ['label', 'paragraph'] as const;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-col gap-16\">\n {variants.map((variant) => (\n <div key={variant} className=\"grid grid-cols-2 gap-8\">\n <div className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {variant}\n </Code>\n <Code variant={variant}>The quick brown fox jumps over the lazy dog</Code>\n </div>\n <div className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {variant} - Bold\n </Code>\n <Code variant={variant} bold>\n The quick brown fox jumps over the lazy dog\n </Code>\n </div>\n </div>\n ))}\n </div>\n ),\n};\n"],"names":["Code","meta","title","variants","Default","render","div","className","map","variant","bold"],"mappings":";AACA,SAAQA,IAAI,QAAO,SAAS;AAE5B,MAAMC,OAAa;IACjBC,OAAO;AACT;AACA,eAAeD,KAAK;AAIpB,MAAME,WAAW;IAAC;IAAS;CAAY;AAEvC,OAAO,MAAMC,UAAiB;IAC5BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACZJ,SAASK,GAAG,CAAC,CAACC,wBACb,MAACH;oBAAkBC,WAAU;;sCAC3B,MAACD;4BAAIC,WAAU;;8CACb,KAACP;oCAAKS,SAAQ;oCAAQF,WAAU;8CAC7BE;;8CAEH,KAACT;oCAAKS,SAASA;8CAAS;;;;sCAE1B,MAACH;4BAAIC,WAAU;;8CACb,MAACP;oCAAKS,SAAQ;oCAAQF,WAAU;;wCAC7BE;wCAAQ;;;8CAEX,KAACT;oCAAKS,SAASA;oCAASC,IAAI;8CAAC;;;;;mBAXvBD;;AAmBlB,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/components/typography/header.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAG1E,eAAO,MAAM,cAAc;;8EAYzB,CAAC;AASH,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,GAC/E,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB,CAAC;AAEJ,wBAAgB,MAAM,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,KAAK,EAAC,EAAE,WAAW,2CAU/E"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/header.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport type {ElementType, HTMLAttributes, PropsWithChildren} from 'react';\nimport {cn} from 'utils';\n\nexport const headerVariants = cva('', {\n variants: {\n variant: {\n h1: 'text-3xl',\n h2: 'text-xl',\n h3: 'text-lg',\n h4: 'text-md',\n },\n },\n defaultVariants: {\n variant: 'h1',\n },\n});\n\nconst components = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n} as const;\n\nexport type HeaderProps = PropsWithChildren<HTMLAttributes<HTMLParagraphElement>> &\n VariantProps<typeof headerVariants> & {\n as?: ElementType;\n };\n\nexport function Header({children, className, variant, as, ...props}: HeaderProps) {\n const Component = as ?? (variant ? components[variant] : 'h1');\n return (\n <Component\n className={cn(headerVariants({variant}), 'font-display font-medium', className)}\n {...props}\n >\n {children}\n </Component>\n );\n}\n"],"names":["cva","cn","headerVariants","variants","variant","h1","h2","h3","h4","defaultVariants","components","Header","children","className","as","props","Component"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,QAAQ;AAEzB,OAAO,MAAMC,iBAAiBF,IAAI,IAAI;IACpCG,UAAU;QACRC,SAAS;YACPC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfL,SAAS;IACX;AACF,GAAG;AAEH,MAAMM,aAAa;IACjBL,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;AACN;AAOA,OAAO,SAASG,OAAO,EAACC,QAAQ,EAAEC,SAAS,EAAET,OAAO,EAAEU,EAAE,EAAE,GAAGC,OAAmB;IAC9E,MAAMC,YAAYF,MAAOV,CAAAA,UAAUM,UAAU,CAACN,QAAQ,GAAG,IAAG;IAC5D,qBACE,KAACY;QACCH,WAAWZ,GAAGC,eAAe;YAACE;QAAO,IAAI,4BAA4BS;QACpE,GAAGE,KAAK;kBAERH;;AAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/header.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code} from './code';\nimport {Header} from './header';\n\nconst meta: Meta = {\n title: 'Typography/Header',\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst variants = ['h1', 'h2', 'h3', 'h4'] as const;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-col gap-16\">\n {variants.map((variant) => (\n <div key={variant} className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {variant}\n </Code>\n <Header variant={variant}>The quick brown fox jumps over the lazy dog</Header>\n </div>\n ))}\n </div>\n ),\n};\n"],"names":["Code","Header","meta","title","variants","Default","render","div","className","map","variant"],"mappings":";AACA,SAAQA,IAAI,QAAO,SAAS;AAC5B,SAAQC,MAAM,QAAO,WAAW;AAEhC,MAAMC,OAAa;IACjBC,OAAO;AACT;AACA,eAAeD,KAAK;AAIpB,MAAME,WAAW;IAAC;IAAM;IAAM;IAAM;CAAK;AAEzC,OAAO,MAAMC,UAAiB;IAC5BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACZJ,SAASK,GAAG,CAAC,CAACC,wBACb,MAACH;oBAAkBC,WAAU;;sCAC3B,KAACR;4BAAKU,SAAQ;4BAAQF,WAAU;sCAC7BE;;sCAEH,KAACT;4BAAOS,SAASA;sCAAS;;;mBAJlBA;;AASlB,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/typography/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/index.ts"],"sourcesContent":["export * from './code';\nexport * from './header';\nexport * from './text';\n"],"names":[],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,SAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/components/typography/text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAG1E,eAAO,MAAM,YAAY;;8EAavB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,iBAAiB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,GAC7E,YAAY,CAAC,OAAO,YAAY,CAAC,GAAG;IAClC,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEJ,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,EAAE,EACF,OAAc,EACd,IAAY,EACZ,GAAG,KAAK,EACT,EAAE,SAAS,2CAeX"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/text.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport type {ElementType, HTMLAttributes, PropsWithChildren} from 'react';\nimport {cn} from 'utils';\n\nexport const textVariants = cva('', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-md',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport type TextProps = PropsWithChildren<HTMLAttributes<HTMLParagraphElement>> &\n VariantProps<typeof textVariants> & {\n as?: ElementType;\n compact?: boolean;\n bold?: boolean;\n };\n\nexport function Text({\n children,\n className,\n size,\n as,\n compact = true,\n bold = false,\n ...props\n}: TextProps) {\n const Component = as ?? 'p';\n return (\n <Component\n className={cn(\n textVariants({size}),\n 'font-display',\n {'leading-20': compact, 'font-medium': bold},\n className,\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n"],"names":["cva","cn","textVariants","variants","size","xs","sm","md","lg","xl","defaultVariants","Text","children","className","as","compact","bold","props","Component"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,QAAQ;AAEzB,OAAO,MAAMC,eAAeF,IAAI,IAAI;IAClCG,UAAU;QACRC,MAAM;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfN,MAAM;IACR;AACF,GAAG;AASH,OAAO,SAASO,KAAK,EACnBC,QAAQ,EACRC,SAAS,EACTT,IAAI,EACJU,EAAE,EACFC,UAAU,IAAI,EACdC,OAAO,KAAK,EACZ,GAAGC,OACO;IACV,MAAMC,YAAYJ,MAAM;IACxB,qBACE,KAACI;QACCL,WAAWZ,GACTC,aAAa;YAACE;QAAI,IAClB,gBACA;YAAC,cAAcW;YAAS,eAAeC;QAAI,GAC3CH;QAED,GAAGI,KAAK;kBAERL;;AAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/typography/text.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code} from './code';\nimport {Text} from './text';\n\nconst meta: Meta = {\n title: 'Typography/Text',\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-col gap-16\">\n {sizes.map((size) => (\n <div key={size} className=\"grid grid-cols-2 gap-8\">\n <div className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {size}\n </Code>\n <Text size={size}>The quick brown fox jumps over the lazy dog</Text>\n </div>\n <div className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {size} - Bold\n </Code>\n <Text size={size} bold>\n The quick brown fox jumps over the lazy dog\n </Text>\n </div>\n </div>\n ))}\n </div>\n ),\n};\n\nconst textParagraph =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';\n\nexport const Paragraph: Story = {\n render: () => (\n <div className=\"flex flex-col gap-16\">\n {sizes.map((size) => (\n <div key={size} className=\"grid grid-cols-2 gap-8\">\n <div className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {size} - Regular\n </Code>\n <Text size={size} compact={false}>\n {textParagraph}\n </Text>\n </div>\n <div className=\"flex flex-col gap-4\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {size} - Compact\n </Code>\n <Text size={size} compact={true}>\n {textParagraph}\n </Text>\n </div>\n </div>\n ))}\n </div>\n ),\n};\n"],"names":["Code","Text","meta","title","sizes","Default","render","div","className","map","size","variant","bold","textParagraph","Paragraph","compact"],"mappings":";AACA,SAAQA,IAAI,QAAO,SAAS;AAC5B,SAAQC,IAAI,QAAO,SAAS;AAE5B,MAAMC,OAAa;IACjBC,OAAO;AACT;AACA,eAAeD,KAAK;AAIpB,MAAME,QAAQ;IAAC;IAAM;IAAM;IAAM;IAAM;CAAK;AAE5C,OAAO,MAAMC,UAAiB;IAC5BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACZJ,MAAMK,GAAG,CAAC,CAACC,qBACV,MAACH;oBAAeC,WAAU;;sCACxB,MAACD;4BAAIC,WAAU;;8CACb,KAACR;oCAAKW,SAAQ;oCAAQH,WAAU;8CAC7BE;;8CAEH,KAACT;oCAAKS,MAAMA;8CAAM;;;;sCAEpB,MAACH;4BAAIC,WAAU;;8CACb,MAACR;oCAAKW,SAAQ;oCAAQH,WAAU;;wCAC7BE;wCAAK;;;8CAER,KAACT;oCAAKS,MAAMA;oCAAME,IAAI;8CAAC;;;;;mBAXjBF;;AAmBlB,EAAE;AAEF,MAAMG,gBACJ;AAEF,OAAO,MAAMC,YAAmB;IAC9BR,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACZJ,MAAMK,GAAG,CAAC,CAACC,qBACV,MAACH;oBAAeC,WAAU;;sCACxB,MAACD;4BAAIC,WAAU;;8CACb,MAACR;oCAAKW,SAAQ;oCAAQH,WAAU;;wCAC7BE;wCAAK;;;8CAER,KAACT;oCAAKS,MAAMA;oCAAMK,SAAS;8CACxBF;;;;sCAGL,MAACN;4BAAIC,WAAU;;8CACb,MAACR;oCAAKW,SAAQ;oCAAQH,WAAU;;wCAC7BE;wCAAK;;;8CAER,KAACT;oCAAKS,MAAMA;oCAAMK,SAAS;8CACxBF;;;;;mBAdGH;;AAqBlB,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/index.ts"],"sourcesContent":["export * from './useCopyToClipboard';\nexport * from './useMediaQuery';\nexport * from './useResolvedTheme';\nexport * from './useShikiHighlight';\nexport * from './useShikiStyleInjection';\nexport * from './useTheme';\n"],"names":[],"mappings":"AAAA,cAAc,uBAAuB;AACrC,cAAc,kBAAkB;AAChC,cAAc,qBAAqB;AACnC,cAAc,sBAAsB;AACpC,cAAc,2BAA2B;AACzC,cAAc,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCopy.d.ts","sourceRoot":"","sources":["../../src/hooks/useCopy.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useCopy.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../src/hooks/useCopyToClipboard.ts"],"names":[],"mappings":"AAGA,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,EAAE,wBAAwB;;;EAW1E"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useCopyToClipboard.ts"],"sourcesContent":["import {useState} from 'react';\nimport {copyTextToClipboard} from 'utils';\n\ninterface UseCopyToClipboardParams {\n text: string;\n onCopy?: (text: string) => void;\n}\n\nexport function useCopyToClipboard({text, onCopy}: UseCopyToClipboardParams) {\n const [copied, setCopied] = useState(false);\n\n const copy = async () => {\n await copyTextToClipboard(text);\n\n if (onCopy) onCopy(text);\n setCopied(true);\n };\n\n return {copy, copied};\n}\n"],"names":["useState","copyTextToClipboard","useCopyToClipboard","text","onCopy","copied","setCopied","copy"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,QAAQ;AAC/B,SAAQC,mBAAmB,QAAO,QAAQ;AAO1C,OAAO,SAASC,mBAAmB,EAACC,IAAI,EAAEC,MAAM,EAA2B;IACzE,MAAM,CAACC,QAAQC,UAAU,GAAGN,SAAS;IAErC,MAAMO,OAAO;QACX,MAAMN,oBAAoBE;QAE1B,IAAIC,QAAQA,OAAOD;QACnBG,UAAU;IACZ;IAEA,OAAO;QAACC;QAAMF;IAAM;AACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMediaQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useMediaQuery.ts"],"names":[],"mappings":"AAsEA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAgBpD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useMediaQuery.ts"],"sourcesContent":["import {useEffect, useState} from 'react';\n\nclass MediaQueryManager {\n private queries = new Map<string, MediaQueryList>();\n private listeners = new Map<string, Set<() => void>>();\n private changeHandlers = new Map<string, () => void>();\n\n getMatches(query: string): boolean {\n if (typeof window === 'undefined') return false;\n\n if (!this.queries.has(query)) {\n this.queries.set(query, window.matchMedia(query));\n this.listeners.set(query, new Set());\n }\n\n const mediaQuery = this.queries.get(query);\n return mediaQuery ? mediaQuery.matches : false;\n }\n\n subscribe(query: string, callback: () => void): () => void {\n if (typeof window === 'undefined') {\n return () => {\n // Cleanup function for SSR - no-op\n };\n }\n\n if (!this.queries.has(query)) {\n this.queries.set(query, window.matchMedia(query));\n this.listeners.set(query, new Set());\n }\n\n const mediaQuery = this.queries.get(query);\n const listeners = this.listeners.get(query);\n\n if (!mediaQuery || !listeners) {\n return () => {\n // Cleanup function - no-op if query wasn't found\n };\n }\n\n listeners.add(callback);\n\n if (listeners.size === 1) {\n const changeHandler = () => {\n for (const cb of listeners) {\n cb();\n }\n };\n this.changeHandlers.set(query, changeHandler);\n mediaQuery.addEventListener('change', changeHandler);\n }\n\n return () => {\n listeners.delete(callback);\n\n if (listeners.size === 0) {\n const changeHandler = this.changeHandlers.get(query);\n if (changeHandler) {\n mediaQuery.removeEventListener('change', changeHandler);\n this.changeHandlers.delete(query);\n }\n this.queries.delete(query);\n this.listeners.delete(query);\n }\n };\n }\n}\n\nconst mediaQueryManager = new MediaQueryManager();\n\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState(() => mediaQueryManager.getMatches(query));\n\n useEffect(() => {\n const updateMatches = () => {\n setMatches(mediaQueryManager.getMatches(query));\n };\n\n const unsubscribe = mediaQueryManager.subscribe(query, updateMatches);\n\n updateMatches();\n\n return unsubscribe;\n }, [query]);\n\n return matches;\n}\n"],"names":["useEffect","useState","MediaQueryManager","getMatches","query","window","queries","has","set","matchMedia","listeners","Set","mediaQuery","get","matches","subscribe","callback","add","size","changeHandler","cb","changeHandlers","addEventListener","delete","removeEventListener","Map","mediaQueryManager","useMediaQuery","setMatches","updateMatches","unsubscribe"],"mappings":"AAAA,SAAQA,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAE1C,IAAA,AAAMC,oBAAN,MAAMA;IAKJC,WAAWC,KAAa,EAAW;QACjC,IAAI,OAAOC,WAAW,aAAa,OAAO;QAE1C,IAAI,CAAC,IAAI,CAACC,OAAO,CAACC,GAAG,CAACH,QAAQ;YAC5B,IAAI,CAACE,OAAO,CAACE,GAAG,CAACJ,OAAOC,OAAOI,UAAU,CAACL;YAC1C,IAAI,CAACM,SAAS,CAACF,GAAG,CAACJ,OAAO,IAAIO;QAChC;QAEA,MAAMC,aAAa,IAAI,CAACN,OAAO,CAACO,GAAG,CAACT;QACpC,OAAOQ,aAAaA,WAAWE,OAAO,GAAG;IAC3C;IAEAC,UAAUX,KAAa,EAAEY,QAAoB,EAAc;QACzD,IAAI,OAAOX,WAAW,aAAa;YACjC,OAAO;YACL,mCAAmC;YACrC;QACF;QAEA,IAAI,CAAC,IAAI,CAACC,OAAO,CAACC,GAAG,CAACH,QAAQ;YAC5B,IAAI,CAACE,OAAO,CAACE,GAAG,CAACJ,OAAOC,OAAOI,UAAU,CAACL;YAC1C,IAAI,CAACM,SAAS,CAACF,GAAG,CAACJ,OAAO,IAAIO;QAChC;QAEA,MAAMC,aAAa,IAAI,CAACN,OAAO,CAACO,GAAG,CAACT;QACpC,MAAMM,YAAY,IAAI,CAACA,SAAS,CAACG,GAAG,CAACT;QAErC,IAAI,CAACQ,cAAc,CAACF,WAAW;YAC7B,OAAO;YACL,iDAAiD;YACnD;QACF;QAEAA,UAAUO,GAAG,CAACD;QAEd,IAAIN,UAAUQ,IAAI,KAAK,GAAG;YACxB,MAAMC,gBAAgB;gBACpB,KAAK,MAAMC,MAAMV,UAAW;oBAC1BU;gBACF;YACF;YACA,IAAI,CAACC,cAAc,CAACb,GAAG,CAACJ,OAAOe;YAC/BP,WAAWU,gBAAgB,CAAC,UAAUH;QACxC;QAEA,OAAO;YACLT,UAAUa,MAAM,CAACP;YAEjB,IAAIN,UAAUQ,IAAI,KAAK,GAAG;gBACxB,MAAMC,gBAAgB,IAAI,CAACE,cAAc,CAACR,GAAG,CAACT;gBAC9C,IAAIe,eAAe;oBACjBP,WAAWY,mBAAmB,CAAC,UAAUL;oBACzC,IAAI,CAACE,cAAc,CAACE,MAAM,CAACnB;gBAC7B;gBACA,IAAI,CAACE,OAAO,CAACiB,MAAM,CAACnB;gBACpB,IAAI,CAACM,SAAS,CAACa,MAAM,CAACnB;YACxB;QACF;IACF;;aA9DQE,UAAU,IAAImB;aACdf,YAAY,IAAIe;aAChBJ,iBAAiB,IAAII;;AA6D/B;AAEA,MAAMC,oBAAoB,IAAIxB;AAE9B,OAAO,SAASyB,cAAcvB,KAAa;IACzC,MAAM,CAACU,SAASc,WAAW,GAAG3B,SAAS,IAAMyB,kBAAkBvB,UAAU,CAACC;IAE1EJ,UAAU;QACR,MAAM6B,gBAAgB;YACpBD,WAAWF,kBAAkBvB,UAAU,CAACC;QAC1C;QAEA,MAAM0B,cAAcJ,kBAAkBX,SAAS,CAACX,OAAOyB;QAEvDA;QAEA,OAAOC;IACT,GAAG;QAAC1B;KAAM;IAEV,OAAOU;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useResolvedTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useResolvedTheme.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,MAAM,CA8BnD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useResolvedTheme.ts"],"sourcesContent":["import {useSyncExternalStore} from 'react';\nimport {useTheme} from './useTheme';\n\nexport function useResolvedTheme(): 'light' | 'dark' {\n const {theme} = useTheme();\n\n const systemTheme = useSyncExternalStore<'light' | 'dark'>(\n (callback) => {\n if (typeof window === 'undefined' || theme !== 'system') {\n return () => {\n // No-op unsubscribe\n };\n }\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n mql.addEventListener('change', callback);\n return () => {\n mql.removeEventListener('change', callback);\n };\n },\n (): 'light' | 'dark' =>\n typeof window !== 'undefined' && theme === 'system'\n ? window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n : 'light',\n (): 'light' | 'dark' => 'light', // Server snapshot\n );\n\n if (theme === 'system') {\n return systemTheme;\n }\n // TypeScript should narrow theme to 'light' | 'dark' here\n return theme as 'light' | 'dark';\n}\n"],"names":["useSyncExternalStore","useTheme","useResolvedTheme","theme","systemTheme","callback","window","mql","matchMedia","addEventListener","removeEventListener","matches"],"mappings":"AAAA,SAAQA,oBAAoB,QAAO,QAAQ;AAC3C,SAAQC,QAAQ,QAAO,aAAa;AAEpC,OAAO,SAASC;IACd,MAAM,EAACC,KAAK,EAAC,GAAGF;IAEhB,MAAMG,cAAcJ,qBAClB,CAACK;QACC,IAAI,OAAOC,WAAW,eAAeH,UAAU,UAAU;YACvD,OAAO;YACL,oBAAoB;YACtB;QACF;QACA,MAAMI,MAAMD,OAAOE,UAAU,CAAC;QAC9BD,IAAIE,gBAAgB,CAAC,UAAUJ;QAC/B,OAAO;YACLE,IAAIG,mBAAmB,CAAC,UAAUL;QACpC;IACF,GACA,IACE,OAAOC,WAAW,eAAeH,UAAU,WACvCG,OAAOE,UAAU,CAAC,gCAAgCG,OAAO,GACvD,SACA,UACF,SACN,IAAwB;IAG1B,IAAIR,UAAU,UAAU;QACtB,OAAOC;IACT;IACA,0DAA0D;IAC1D,OAAOD;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useShikiHighlight.d.ts","sourceRoot":"","sources":["../../src/hooks/useShikiHighlight.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,aAAa,EACb,kBAAkB,GACnB,EAAE,wBAAwB,GAAG;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,CA6C1E;AAED,KAAK,gCAAgC,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,IAAI,EACJ,MAAM,EACN,aAAa,EACb,kBAAkB,GACnB,EAAE,gCAAgC,GAAG;IACpC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB,CAsDA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useShikiHighlight.ts"],"sourcesContent":["import {useEffect, useState} from 'react';\n\ntype ShikiThemes = {\n light: string;\n dark: string;\n};\n\ntype UseShikiHighlightOptions = {\n code: string;\n lang: string;\n themes: ShikiThemes;\n resolvedTheme: 'light' | 'dark';\n syntaxHighlighting: boolean;\n};\n\nexport function useShikiHighlight({\n code,\n lang,\n themes,\n resolvedTheme,\n syntaxHighlighting,\n}: UseShikiHighlightOptions): {highlightedCode: string; isLoading: boolean} {\n const [highlightedCode, setHighlightedCode] = useState<string>('');\n const [isLoading, setIsLoading] = useState(syntaxHighlighting);\n\n useEffect(() => {\n if (!syntaxHighlighting) {\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n let cancelled = false;\n\n const loadHighlightedCode = async () => {\n try {\n const {codeToHtml} = await import('shiki');\n\n const html = await codeToHtml(code, {\n lang,\n themes: {\n light: themes.light,\n dark: themes.dark,\n },\n defaultColor: resolvedTheme === 'dark' ? 'dark' : 'light',\n });\n\n if (!cancelled) {\n setHighlightedCode(html);\n setIsLoading(false);\n }\n } catch {\n if (!cancelled) {\n setIsLoading(false);\n }\n }\n };\n\n loadHighlightedCode();\n\n return () => {\n cancelled = true;\n };\n }, [code, lang, themes.light, themes.dark, resolvedTheme, syntaxHighlighting]);\n\n return {highlightedCode, isLoading};\n}\n\ntype UseShikiHighlightMultipleOptions = {\n codes: Record<string, string>;\n lang: string;\n themes: ShikiThemes;\n resolvedTheme: 'light' | 'dark';\n syntaxHighlighting: boolean;\n};\n\nexport function useShikiHighlightMultiple({\n codes,\n lang,\n themes,\n resolvedTheme,\n syntaxHighlighting,\n}: UseShikiHighlightMultipleOptions): {\n highlightedCodes: Record<string, string>;\n isLoading: boolean;\n} {\n const [highlightedCodes, setHighlightedCodes] = useState<Record<string, string>>({});\n const [isLoading, setIsLoading] = useState(syntaxHighlighting);\n\n useEffect(() => {\n if (!syntaxHighlighting) {\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n let cancelled = false;\n\n const loadHighlightedCode = async () => {\n try {\n const {codeToHtml} = await import('shiki');\n const newHighlightedCodes: Record<string, string> = {};\n\n for (const [command, val] of Object.entries(codes)) {\n if (cancelled) {\n return;\n }\n\n const highlighted = await codeToHtml(val, {\n lang,\n themes: {\n light: themes.light,\n dark: themes.dark,\n },\n defaultColor: resolvedTheme === 'dark' ? 'dark' : 'light',\n });\n\n newHighlightedCodes[command] = highlighted;\n }\n\n if (!cancelled) {\n setHighlightedCodes(newHighlightedCodes);\n setIsLoading(false);\n }\n } catch {\n if (!cancelled) {\n setIsLoading(false);\n }\n }\n };\n\n loadHighlightedCode();\n\n return () => {\n cancelled = true;\n };\n }, [resolvedTheme, lang, themes.light, themes.dark, codes, syntaxHighlighting]);\n\n return {highlightedCodes, isLoading};\n}\n"],"names":["useEffect","useState","useShikiHighlight","code","lang","themes","resolvedTheme","syntaxHighlighting","highlightedCode","setHighlightedCode","isLoading","setIsLoading","cancelled","loadHighlightedCode","codeToHtml","html","light","dark","defaultColor","useShikiHighlightMultiple","codes","highlightedCodes","setHighlightedCodes","newHighlightedCodes","command","val","Object","entries","highlighted"],"mappings":"AAAA,SAAQA,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAe1C,OAAO,SAASC,kBAAkB,EAChCC,IAAI,EACJC,IAAI,EACJC,MAAM,EACNC,aAAa,EACbC,kBAAkB,EACO;IACzB,MAAM,CAACC,iBAAiBC,mBAAmB,GAAGR,SAAiB;IAC/D,MAAM,CAACS,WAAWC,aAAa,GAAGV,SAASM;IAE3CP,UAAU;QACR,IAAI,CAACO,oBAAoB;YACvBI,aAAa;YACb;QACF;QAEAA,aAAa;QACb,IAAIC,YAAY;QAEhB,MAAMC,sBAAsB;YAC1B,IAAI;gBACF,MAAM,EAACC,UAAU,EAAC,GAAG,MAAM,MAAM,CAAC;gBAElC,MAAMC,OAAO,MAAMD,WAAWX,MAAM;oBAClCC;oBACAC,QAAQ;wBACNW,OAAOX,OAAOW,KAAK;wBACnBC,MAAMZ,OAAOY,IAAI;oBACnB;oBACAC,cAAcZ,kBAAkB,SAAS,SAAS;gBACpD;gBAEA,IAAI,CAACM,WAAW;oBACdH,mBAAmBM;oBACnBJ,aAAa;gBACf;YACF,EAAE,OAAM;gBACN,IAAI,CAACC,WAAW;oBACdD,aAAa;gBACf;YACF;QACF;QAEAE;QAEA,OAAO;YACLD,YAAY;QACd;IACF,GAAG;QAACT;QAAMC;QAAMC,OAAOW,KAAK;QAAEX,OAAOY,IAAI;QAAEX;QAAeC;KAAmB;IAE7E,OAAO;QAACC;QAAiBE;IAAS;AACpC;AAUA,OAAO,SAASS,0BAA0B,EACxCC,KAAK,EACLhB,IAAI,EACJC,MAAM,EACNC,aAAa,EACbC,kBAAkB,EACe;IAIjC,MAAM,CAACc,kBAAkBC,oBAAoB,GAAGrB,SAAiC,CAAC;IAClF,MAAM,CAACS,WAAWC,aAAa,GAAGV,SAASM;IAE3CP,UAAU;QACR,IAAI,CAACO,oBAAoB;YACvBI,aAAa;YACb;QACF;QAEAA,aAAa;QACb,IAAIC,YAAY;QAEhB,MAAMC,sBAAsB;YAC1B,IAAI;gBACF,MAAM,EAACC,UAAU,EAAC,GAAG,MAAM,MAAM,CAAC;gBAClC,MAAMS,sBAA8C,CAAC;gBAErD,KAAK,MAAM,CAACC,SAASC,IAAI,IAAIC,OAAOC,OAAO,CAACP,OAAQ;oBAClD,IAAIR,WAAW;wBACb;oBACF;oBAEA,MAAMgB,cAAc,MAAMd,WAAWW,KAAK;wBACxCrB;wBACAC,QAAQ;4BACNW,OAAOX,OAAOW,KAAK;4BACnBC,MAAMZ,OAAOY,IAAI;wBACnB;wBACAC,cAAcZ,kBAAkB,SAAS,SAAS;oBACpD;oBAEAiB,mBAAmB,CAACC,QAAQ,GAAGI;gBACjC;gBAEA,IAAI,CAAChB,WAAW;oBACdU,oBAAoBC;oBACpBZ,aAAa;gBACf;YACF,EAAE,OAAM;gBACN,IAAI,CAACC,WAAW;oBACdD,aAAa;gBACf;YACF;QACF;QAEAE;QAEA,OAAO;YACLD,YAAY;QACd;IACF,GAAG;QAACN;QAAeF;QAAMC,OAAOW,KAAK;QAAEX,OAAOY,IAAI;QAAEG;QAAOb;KAAmB;IAE9E,OAAO;QAACc;QAAkBX;IAAS;AACrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useShikiStyleInjection.d.ts","sourceRoot":"","sources":["../../src/hooks/useShikiStyleInjection.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,OAAO,GAAG,IAAI,CA+BxE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useShikiStyleInjection.ts"],"sourcesContent":["import {useEffect} from 'react';\n\nexport function useShikiStyleInjection(syntaxHighlighting: boolean): void {\n useEffect(() => {\n if (!syntaxHighlighting) {\n return;\n }\n\n const styleId = 'shiki-override-styles';\n if (document.getElementById(styleId)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .shiki-override pre,\n .shiki-override code,\n .shiki-override pre *,\n .shiki-override code * {\n background: transparent !important;\n font-family: \"Commit Mono\", monospace !important;\n }\n `;\n document.head.appendChild(style);\n\n return () => {\n const existingStyle = document.getElementById(styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n };\n }, [syntaxHighlighting]);\n}\n"],"names":["useEffect","useShikiStyleInjection","syntaxHighlighting","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove"],"mappings":"AAAA,SAAQA,SAAS,QAAO,QAAQ;AAEhC,OAAO,SAASC,uBAAuBC,kBAA2B;IAChEF,UAAU;QACR,IAAI,CAACE,oBAAoB;YACvB;QACF;QAEA,MAAMC,UAAU;QAChB,IAAIC,SAASC,cAAc,CAACF,UAAU;YACpC;QACF;QAEA,MAAMG,QAAQF,SAASG,aAAa,CAAC;QACrCD,MAAME,EAAE,GAAGL;QACXG,MAAMG,WAAW,GAAG,CAAC;;;;;;;;IAQrB,CAAC;QACDL,SAASM,IAAI,CAACC,WAAW,CAACL;QAE1B,OAAO;YACL,MAAMM,gBAAgBR,SAASC,cAAc,CAACF;YAC9C,IAAIS,eAAe;gBACjBA,cAAcC,MAAM;YACtB;QACF;IACF,GAAG;QAACX;KAAmB;AACzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,gDAMpB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useTheme.ts"],"sourcesContent":["import {useContext} from 'react';\nimport {ThemeProviderContext} from 'state/theme';\n\nexport const useTheme = () => {\n const context = useContext(ThemeProviderContext);\n\n if (context === undefined) throw new Error('useTheme must be used within a ThemeProvider');\n\n return context;\n};\n"],"names":["useContext","ThemeProviderContext","useTheme","context","undefined","Error"],"mappings":"AAAA,SAAQA,UAAU,QAAO,QAAQ;AACjC,SAAQC,oBAAoB,QAAO,cAAc;AAEjD,OAAO,MAAMC,WAAW;IACtB,MAAMC,UAAUH,WAAWC;IAE3B,IAAIE,YAAYC,WAAW,MAAM,IAAIC,MAAM;IAE3C,OAAOF;AACT,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {ShipfoxLoader} from 'shipfox-loader-react';\nexport * from './components';\nexport * from './hooks';\nexport * from './utils';\n"],"names":["ShipfoxLoader"],"mappings":"AAAA,SAAQA,aAAa,QAAO,uBAAuB;AACnD,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,UAAU"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/onboarding/sign-in.stories.tsx"],"sourcesContent":["import {argosScreenshot} from '@argos-ci/storybook/vitest';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Avatar} from 'components/avatar';\nimport {Button} from 'components/button';\nimport {DotGrid} from 'components/dot-grid';\nimport {Header, Text} from 'components/typography';\n\nconst meta = {\n title: 'Onboarding/Signin',\n parameters: {\n layout: 'fullscreen',\n },\n} satisfies Meta;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n play: async (ctx) => {\n await argosScreenshot(ctx, 'example-screenshot');\n },\n render: () => {\n return (\n <div className=\"flex min-h-screen items-center justify-center bg-background-subtle-base\">\n {/* Background illustration - simplified decorative element */}\n <div\n className=\"absolute w-[800px] max-w-[800px] h-[400px] top-0 left-1/2 -translate-x-1/2 translate-y-[-145px]\"\n style={{\n maskImage:\n 'radial-gradient(ellipse 100% 125% at 50% 0%, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 30%, rgba(0, 0, 0, 0.5) 60%, rgba(0, 0, 0, 0) 100%)',\n WebkitMaskImage:\n 'radial-gradient(ellipse 100% 125% at 50% 0%, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 30%, rgba(0, 0, 0, 0.5) 60%, rgba(0, 0, 0, 0) 100%)',\n }}\n >\n <DotGrid\n dotSize={2}\n gap={20}\n baseColor=\"#e63e00\"\n activeColor=\"#FF0076\"\n proximity={100}\n shockRadius={8}\n shockStrength={100}\n resistance={500}\n returnDuration={1.5}\n />\n </div>\n\n {/* Main content */}\n <div className=\"relative flex w-full max-w-[384px] flex-col items-center gap-32 px-24 pb-80 pt-24\">\n {/* Logo and title section */}\n <div className=\"flex flex-col items-center gap-16\">\n <Avatar content=\"logo\" size=\"xl\" radius=\"rounded\" logoName=\"shipfox\" />\n <div className=\"flex min-w-[128px] flex-col items-center gap-4 text-center\">\n <Header\n variant=\"h1\"\n className=\"text-[28px] font-medium leading-[44px] text-foreground-neutral-base\"\n >\n Connect to Shipfox\n </Header>\n <Text\n size=\"sm\"\n className=\"text-sm font-normal leading-[24px] text-foreground-neutral-subtle\"\n >\n Log in to access Shipfox.\n </Text>\n </div>\n </div>\n\n {/* Action buttons */}\n <div className=\"flex w-full flex-col gap-20\">\n <Button variant=\"primary\" size=\"md\" iconLeft=\"google\" className=\"w-full\">\n Continue with Google\n </Button>\n <Button variant=\"primary\" size=\"md\" iconLeft=\"microsoft\" className=\"w-full\">\n Continue with Microsoft\n </Button>\n <Button variant=\"transparent\" size=\"md\" className=\"w-full\">\n Connect with Enterprise SSO\n </Button>\n </div>\n </div>\n </div>\n );\n },\n};\n"],"names":["argosScreenshot","Avatar","Button","DotGrid","Header","Text","meta","title","parameters","layout","Default","play","ctx","render","div","className","style","maskImage","WebkitMaskImage","dotSize","gap","baseColor","activeColor","proximity","shockRadius","shockStrength","resistance","returnDuration","content","size","radius","logoName","variant","iconLeft"],"mappings":";AAAA,SAAQA,eAAe,QAAO,6BAA6B;AAE3D,SAAQC,MAAM,QAAO,oBAAoB;AACzC,SAAQC,MAAM,QAAO,oBAAoB;AACzC,SAAQC,OAAO,QAAO,sBAAsB;AAC5C,SAAQC,MAAM,EAAEC,IAAI,QAAO,wBAAwB;AAEnD,MAAMC,OAAO;IACXC,OAAO;IACPC,YAAY;QACVC,QAAQ;IACV;AACF;AAEA,eAAeH,KAAK;AAGpB,OAAO,MAAMI,UAAiB;IAC5BC,MAAM,OAAOC;QACX,MAAMZ,gBAAgBY,KAAK;IAC7B;IACAC,QAAQ;QACN,qBACE,MAACC;YAAIC,WAAU;;8BAEb,KAACD;oBACCC,WAAU;oBACVC,OAAO;wBACLC,WACE;wBACFC,iBACE;oBACJ;8BAEA,cAAA,KAACf;wBACCgB,SAAS;wBACTC,KAAK;wBACLC,WAAU;wBACVC,aAAY;wBACZC,WAAW;wBACXC,aAAa;wBACbC,eAAe;wBACfC,YAAY;wBACZC,gBAAgB;;;8BAKpB,MAACb;oBAAIC,WAAU;;sCAEb,MAACD;4BAAIC,WAAU;;8CACb,KAACd;oCAAO2B,SAAQ;oCAAOC,MAAK;oCAAKC,QAAO;oCAAUC,UAAS;;8CAC3D,MAACjB;oCAAIC,WAAU;;sDACb,KAACX;4CACC4B,SAAQ;4CACRjB,WAAU;sDACX;;sDAGD,KAACV;4CACCwB,MAAK;4CACLd,WAAU;sDACX;;;;;;sCAOL,MAACD;4BAAIC,WAAU;;8CACb,KAACb;oCAAO8B,SAAQ;oCAAUH,MAAK;oCAAKI,UAAS;oCAASlB,WAAU;8CAAS;;8CAGzE,KAACb;oCAAO8B,SAAQ;oCAAUH,MAAK;oCAAKI,UAAS;oCAAYlB,WAAU;8CAAS;;8CAG5E,KAACb;oCAAO8B,SAAQ;oCAAcH,MAAK;oCAAKd,WAAU;8CAAS;;;;;;;;IAOrE;AACF,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/state/theme.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAOF,eAAO,MAAM,oBAAoB,6CAAkD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/state/theme.ts"],"sourcesContent":["import {createContext} from 'react';\n\nexport type Theme = 'dark' | 'light' | 'system';\n\nexport type ThemeProviderState = {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n};\n\nconst initialState: ThemeProviderState = {\n theme: 'system',\n setTheme: () => null,\n};\n\nexport const ThemeProviderContext = createContext<ThemeProviderState>(initialState);\n"],"names":["createContext","initialState","theme","setTheme","ThemeProviderContext"],"mappings":"AAAA,SAAQA,aAAa,QAAO,QAAQ;AASpC,MAAMC,eAAmC;IACvCC,OAAO;IACPC,UAAU,IAAM;AAClB;AAEA,OAAO,MAAMC,uBAAuBJ,cAAkCC,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/utils/avatar.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAStD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAK1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/avatar.ts"],"sourcesContent":["const hashString = (str: string): number => {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return Math.abs(hash);\n};\n\nexport const getPlaceholderImageUrl = (name?: string): string => {\n const backgroundColors = ['BFDFFF', 'BFEAFF', 'CFBFFF', 'FFBFC3', 'FFEABF', 'E3E6EA', 'EAEAEA'];\n\n const seed = name?.trim() || 'avatar';\n\n const colorIndex = hashString(seed) % backgroundColors.length;\n const backgroundColor = backgroundColors[colorIndex];\n\n return `https://api.dicebear.com/9.x/micah/svg?backgroundColor=${backgroundColor}&seed=${encodeURIComponent(seed)}`;\n};\n\nexport const getInitial = (name?: string): string => {\n if (name) {\n return name.trim()[0]?.toUpperCase() ?? 'L';\n }\n return 'L';\n};\n"],"names":["hashString","str","hash","i","length","char","charCodeAt","Math","abs","getPlaceholderImageUrl","name","backgroundColors","seed","trim","colorIndex","backgroundColor","encodeURIComponent","getInitial","toUpperCase"],"mappings":"AAAA,MAAMA,aAAa,CAACC;IAClB,IAAIC,OAAO;IACX,IAAK,IAAIC,IAAI,GAAGA,IAAIF,IAAIG,MAAM,EAAED,IAAK;QACnC,MAAME,OAAOJ,IAAIK,UAAU,CAACH;QAC5BD,OAAO,AAACA,CAAAA,QAAQ,CAAA,IAAKA,OAAOG;QAC5BH,OAAOA,OAAOA;IAChB;IACA,OAAOK,KAAKC,GAAG,CAACN;AAClB;AAEA,OAAO,MAAMO,yBAAyB,CAACC;IACrC,MAAMC,mBAAmB;QAAC;QAAU;QAAU;QAAU;QAAU;QAAU;QAAU;KAAS;IAE/F,MAAMC,OAAOF,MAAMG,UAAU;IAE7B,MAAMC,aAAad,WAAWY,QAAQD,iBAAiBP,MAAM;IAC7D,MAAMW,kBAAkBJ,gBAAgB,CAACG,WAAW;IAEpD,OAAO,CAAC,uDAAuD,EAAEC,gBAAgB,MAAM,EAAEC,mBAAmBJ,OAAO;AACrH,EAAE;AAEF,OAAO,MAAMK,aAAa,CAACP;IACzB,IAAIA,MAAM;QACR,OAAOA,KAAKG,IAAI,EAAE,CAAC,EAAE,EAAEK,iBAAiB;IAC1C;IACA,OAAO;AACT,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,2BAGrD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/clipboard.ts"],"sourcesContent":["export async function copyTextToClipboard(text: string) {\n if ('clipboard' in navigator) return await navigator.clipboard.writeText(text);\n return document.execCommand('copy', true, text);\n}\n"],"names":["copyTextToClipboard","text","navigator","clipboard","writeText","document","execCommand"],"mappings":"AAAA,OAAO,eAAeA,oBAAoBC,IAAY;IACpD,IAAI,eAAeC,WAAW,OAAO,MAAMA,UAAUC,SAAS,CAACC,SAAS,CAACH;IACzE,OAAOI,SAASC,WAAW,CAAC,QAAQ,MAAML;AAC5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/utils/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,UAAU,EAAO,MAAM,MAAM,CAAC;AAG3C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/cn.ts"],"sourcesContent":["import {type ClassValue, clsx} from 'clsx';\nimport {twMerge} from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"names":["clsx","twMerge","cn","inputs"],"mappings":"AAAA,SAAyBA,IAAI,QAAO,OAAO;AAC3C,SAAQC,OAAO,QAAO,iBAAiB;AAEvC,OAAO,SAASC,GAAG,GAAGC,MAAoB;IACxC,OAAOF,QAAQD,KAAKG;AACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAGb,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAElB,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEhD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE9C;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEhE;AAED,MAAM,WAAW,gCAAgC;IAC/C;;iDAE6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,gCAAgC,GACzC,kBAAkB,CAcpB;AAoBD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAMnE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAM5E;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAU9E"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/date.ts"],"sourcesContent":["import {\n type Duration,\n endOfDay,\n formatDuration,\n type NormalizedInterval,\n startOfDay,\n startOfMonth,\n sub,\n} from 'date-fns';\n\nexport function isStartOfDay(date: Date): boolean {\n return date.getTime() === startOfDay(date).getTime();\n}\n\nexport function isStartOfMonth(date: Date): boolean {\n return date.getTime() === startOfMonth(date).getTime();\n}\n\nexport function isEndOfDay(date: Date): boolean {\n return date.getTime() === endOfDay(date).getTime();\n}\n\nexport function humanizeDurationToNow(duration: Duration): string {\n return `Past ${formatDuration(duration)}`;\n}\n\nexport interface IntervalToNowFromDurationOptions {\n /** When set, if an interval is given in a precise unit, it will be rounded to full days\n * (ex: 1 day, will generate intervals from midnight (d-1) to midnight (d))\n * Does not apply to units lower than day */\n attemptRounding?: boolean;\n}\n\nexport function intervalToNowFromDuration(\n duration: Duration,\n options?: IntervalToNowFromDurationOptions,\n): NormalizedInterval {\n const now = new Date();\n const interval = {\n start: sub(now, duration),\n end: now,\n };\n if (!options?.attemptRounding) return interval;\n const units = Object.keys(duration);\n if (units.length !== 1) return interval;\n if (['hours', 'minutes', 'seconds'].includes(units[0])) return interval;\n return {\n start: startOfDay(interval.start),\n end: endOfDay(interval.end),\n };\n}\n\nconst DURATION_SHORTCUTS: Record<keyof Duration, string> = {\n years: 'y',\n months: 'mo',\n weeks: 'w',\n days: 'd',\n hours: 'h',\n minutes: 'm',\n seconds: 's',\n};\n\nconst DURATION_SHORTCUTS_REVERSED: Record<string, keyof Duration> = Object.fromEntries(\n Object.entries(DURATION_SHORTCUTS).map(([key, value]) => [value, key as keyof Duration]),\n);\n\nconst DURATION_SHORTCUT_REGEX = new RegExp(\n `^(\\\\d+)(${Object.keys(DURATION_SHORTCUTS_REVERSED).join('|')})$`,\n);\n\nexport function generateDurationShortcut(duration: Duration): string {\n const keys = Object.keys(duration) as (keyof Duration)[];\n if (keys.length !== 1) return '';\n const key = keys[0];\n const value = duration[key];\n return `${value}${DURATION_SHORTCUTS[key]}`;\n}\n\nexport function parseTextDurationShortcut(text: string): Duration | undefined {\n const match = text.match(DURATION_SHORTCUT_REGEX);\n if (!match) return;\n const [_, value, shortcut] = match;\n const unit = DURATION_SHORTCUTS_REVERSED[shortcut];\n return {[unit]: Number.parseInt(value, 10)};\n}\n\nconst dateSplitterRefex = /[-\\u2013]/;\n\nexport function parseTextInterval(text: string): NormalizedInterval | undefined {\n const durationShortcut = parseTextDurationShortcut(text);\n if (durationShortcut) return intervalToNowFromDuration(durationShortcut);\n const textDates = text.split(dateSplitterRefex).map((token) => token.trim());\n if (textDates.length !== 2) return;\n const start = new Date(textDates[0]);\n const end = new Date(textDates[1]);\n if (Number.isNaN(start.getTime())) return;\n if (Number.isNaN(end.getTime())) return;\n return {start, end};\n}\n"],"names":["endOfDay","formatDuration","startOfDay","startOfMonth","sub","isStartOfDay","date","getTime","isStartOfMonth","isEndOfDay","humanizeDurationToNow","duration","intervalToNowFromDuration","options","now","Date","interval","start","end","attemptRounding","units","Object","keys","length","includes","DURATION_SHORTCUTS","years","months","weeks","days","hours","minutes","seconds","DURATION_SHORTCUTS_REVERSED","fromEntries","entries","map","key","value","DURATION_SHORTCUT_REGEX","RegExp","join","generateDurationShortcut","parseTextDurationShortcut","text","match","_","shortcut","unit","Number","parseInt","dateSplitterRefex","parseTextInterval","durationShortcut","textDates","split","token","trim","isNaN"],"mappings":"AAAA,SAEEA,QAAQ,EACRC,cAAc,EAEdC,UAAU,EACVC,YAAY,EACZC,GAAG,QACE,WAAW;AAElB,OAAO,SAASC,aAAaC,IAAU;IACrC,OAAOA,KAAKC,OAAO,OAAOL,WAAWI,MAAMC,OAAO;AACpD;AAEA,OAAO,SAASC,eAAeF,IAAU;IACvC,OAAOA,KAAKC,OAAO,OAAOJ,aAAaG,MAAMC,OAAO;AACtD;AAEA,OAAO,SAASE,WAAWH,IAAU;IACnC,OAAOA,KAAKC,OAAO,OAAOP,SAASM,MAAMC,OAAO;AAClD;AAEA,OAAO,SAASG,sBAAsBC,QAAkB;IACtD,OAAO,CAAC,KAAK,EAAEV,eAAeU,WAAW;AAC3C;AASA,OAAO,SAASC,0BACdD,QAAkB,EAClBE,OAA0C;IAE1C,MAAMC,MAAM,IAAIC;IAChB,MAAMC,WAAW;QACfC,OAAOb,IAAIU,KAAKH;QAChBO,KAAKJ;IACP;IACA,IAAI,CAACD,SAASM,iBAAiB,OAAOH;IACtC,MAAMI,QAAQC,OAAOC,IAAI,CAACX;IAC1B,IAAIS,MAAMG,MAAM,KAAK,GAAG,OAAOP;IAC/B,IAAI;QAAC;QAAS;QAAW;KAAU,CAACQ,QAAQ,CAACJ,KAAK,CAAC,EAAE,GAAG,OAAOJ;IAC/D,OAAO;QACLC,OAAOf,WAAWc,SAASC,KAAK;QAChCC,KAAKlB,SAASgB,SAASE,GAAG;IAC5B;AACF;AAEA,MAAMO,qBAAqD;IACzDC,OAAO;IACPC,QAAQ;IACRC,OAAO;IACPC,MAAM;IACNC,OAAO;IACPC,SAAS;IACTC,SAAS;AACX;AAEA,MAAMC,8BAA8DZ,OAAOa,WAAW,CACpFb,OAAOc,OAAO,CAACV,oBAAoBW,GAAG,CAAC,CAAC,CAACC,KAAKC,MAAM,GAAK;QAACA;QAAOD;KAAsB;AAGzF,MAAME,0BAA0B,IAAIC,OAClC,CAAC,QAAQ,EAAEnB,OAAOC,IAAI,CAACW,6BAA6BQ,IAAI,CAAC,KAAK,EAAE,CAAC;AAGnE,OAAO,SAASC,yBAAyB/B,QAAkB;IACzD,MAAMW,OAAOD,OAAOC,IAAI,CAACX;IACzB,IAAIW,KAAKC,MAAM,KAAK,GAAG,OAAO;IAC9B,MAAMc,MAAMf,IAAI,CAAC,EAAE;IACnB,MAAMgB,QAAQ3B,QAAQ,CAAC0B,IAAI;IAC3B,OAAO,GAAGC,QAAQb,kBAAkB,CAACY,IAAI,EAAE;AAC7C;AAEA,OAAO,SAASM,0BAA0BC,IAAY;IACpD,MAAMC,QAAQD,KAAKC,KAAK,CAACN;IACzB,IAAI,CAACM,OAAO;IACZ,MAAM,CAACC,GAAGR,OAAOS,SAAS,GAAGF;IAC7B,MAAMG,OAAOf,2BAA2B,CAACc,SAAS;IAClD,OAAO;QAAC,CAACC,KAAK,EAAEC,OAAOC,QAAQ,CAACZ,OAAO;IAAG;AAC5C;AAEA,MAAMa,oBAAoB;AAE1B,OAAO,SAASC,kBAAkBR,IAAY;IAC5C,MAAMS,mBAAmBV,0BAA0BC;IACnD,IAAIS,kBAAkB,OAAOzC,0BAA0ByC;IACvD,MAAMC,YAAYV,KAAKW,KAAK,CAACJ,mBAAmBf,GAAG,CAAC,CAACoB,QAAUA,MAAMC,IAAI;IACzE,IAAIH,UAAU/B,MAAM,KAAK,GAAG;IAC5B,MAAMN,QAAQ,IAAIF,KAAKuC,SAAS,CAAC,EAAE;IACnC,MAAMpC,MAAM,IAAIH,KAAKuC,SAAS,CAAC,EAAE;IACjC,IAAIL,OAAOS,KAAK,CAACzC,MAAMV,OAAO,KAAK;IACnC,IAAI0C,OAAOS,KAAK,CAACxC,IAAIX,OAAO,KAAK;IACjC,OAAO;QAACU;QAAOC;IAAG;AACpB"}