@shipfox/react-ui 0.15.0 → 0.16.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 (625) hide show
  1. package/dist/components/button-group/button-group.stories.js +4 -4
  2. package/dist/components/dashboard/components/charts/bar-chart.d.ts +39 -0
  3. package/dist/components/dashboard/components/charts/bar-chart.js +104 -0
  4. package/dist/components/dashboard/components/charts/chart-tooltip.d.ts +14 -0
  5. package/dist/components/dashboard/components/charts/chart-tooltip.js +45 -0
  6. package/dist/components/dashboard/components/charts/colors.d.ts +11 -0
  7. package/dist/components/dashboard/components/charts/colors.js +17 -0
  8. package/dist/components/dashboard/components/charts/index.d.ts +5 -0
  9. package/dist/components/dashboard/components/charts/index.js +6 -0
  10. package/dist/components/dashboard/components/charts/line-chart.d.ts +37 -0
  11. package/dist/components/dashboard/components/charts/line-chart.js +128 -0
  12. package/dist/components/dashboard/components/dashboard-alert.d.ts +8 -0
  13. package/dist/components/dashboard/components/dashboard-alert.js +24 -0
  14. package/dist/components/dashboard/components/kpi-card.d.ts +15 -0
  15. package/dist/components/dashboard/components/kpi-card.js +77 -0
  16. package/dist/components/dashboard/components/mobile-sidebar.d.ts +19 -0
  17. package/dist/components/dashboard/components/mobile-sidebar.js +50 -0
  18. package/dist/components/dashboard/components/organization-selector.d.ts +24 -1
  19. package/dist/components/dashboard/components/organization-selector.js +93 -70
  20. package/dist/components/dashboard/components/sidebar.d.ts +24 -0
  21. package/dist/components/dashboard/components/sidebar.js +218 -0
  22. package/dist/components/dashboard/context/dashboard-context.d.ts +70 -0
  23. package/dist/components/dashboard/context/dashboard-context.js +175 -0
  24. package/dist/components/dashboard/context/index.d.ts +8 -0
  25. package/dist/components/dashboard/context/index.js +6 -0
  26. package/dist/components/dashboard/context/types.d.ts +50 -0
  27. package/dist/components/dashboard/context/types.js +7 -0
  28. package/dist/components/dashboard/context/utils.d.ts +28 -0
  29. package/dist/components/dashboard/context/utils.js +53 -0
  30. package/dist/components/dashboard/dashboard.d.ts +27 -1
  31. package/dist/components/dashboard/dashboard.js +76 -36
  32. package/dist/components/dashboard/filters/expression-filter-bar.d.ts +42 -0
  33. package/dist/components/dashboard/filters/expression-filter-bar.js +80 -0
  34. package/dist/components/dashboard/filters/index.d.ts +6 -0
  35. package/dist/components/dashboard/filters/index.js +5 -0
  36. package/dist/components/dashboard/index.d.ts +25 -1
  37. package/dist/components/dashboard/index.js +22 -1
  38. package/dist/components/dashboard/pages/analytics-page.d.ts +20 -0
  39. package/dist/components/dashboard/pages/analytics-page.js +258 -0
  40. package/dist/components/dashboard/pages/index.d.ts +6 -0
  41. package/dist/components/dashboard/pages/index.js +6 -0
  42. package/dist/components/dashboard/pages/jobs-page.d.ts +20 -0
  43. package/dist/components/dashboard/pages/jobs-page.js +56 -0
  44. package/dist/components/dashboard/table/index.d.ts +6 -0
  45. package/dist/components/dashboard/table/index.js +5 -0
  46. package/dist/components/dashboard/table/table-wrapper.d.ts +104 -0
  47. package/dist/components/dashboard/table/table-wrapper.js +93 -0
  48. package/dist/components/dashboard/toolbar/filter-button.d.ts +12 -0
  49. package/dist/components/dashboard/toolbar/filter-button.js +124 -0
  50. package/dist/components/dashboard/toolbar/index.d.ts +13 -0
  51. package/dist/components/dashboard/toolbar/index.js +10 -0
  52. package/dist/components/dashboard/toolbar/page-toolbar.d.ts +75 -0
  53. package/dist/components/dashboard/toolbar/page-toolbar.js +208 -0
  54. package/dist/components/dashboard/toolbar/toolbar-actions.d.ts +52 -0
  55. package/dist/components/dashboard/toolbar/toolbar-actions.js +51 -0
  56. package/dist/components/dashboard/toolbar/toolbar-search.d.ts +21 -0
  57. package/dist/components/dashboard/toolbar/toolbar-search.js +123 -0
  58. package/dist/components/dashboard/toolbar/view-dropdown.d.ts +11 -0
  59. package/dist/components/dashboard/toolbar/view-dropdown.js +113 -0
  60. package/dist/components/index.d.ts +1 -0
  61. package/dist/components/index.js +1 -0
  62. package/dist/components/modal/modal.js +3 -3
  63. package/dist/components/search/search-inline.js +1 -1
  64. package/dist/components/search/search-modal.js +13 -7
  65. package/dist/components/select/select.d.ts +3 -1
  66. package/dist/components/select/select.js +2 -1
  67. package/dist/components/sheet/index.d.ts +2 -0
  68. package/dist/components/sheet/index.js +3 -0
  69. package/dist/components/sheet/sheet.d.ts +33 -0
  70. package/dist/components/sheet/sheet.js +163 -0
  71. package/dist/components/sheet/sheet.stories.js +368 -0
  72. package/dist/components/table/data-table.d.ts +15 -2
  73. package/dist/components/table/data-table.js +7 -2
  74. package/dist/styles.css +1 -1
  75. package/package.json +12 -4
  76. package/.storybook/main.ts +0 -35
  77. package/.storybook/preview.tsx +0 -66
  78. package/.storybook/vitest.setup.ts +0 -4
  79. package/.turbo/turbo-build.log +0 -19
  80. package/.turbo/turbo-check.log +0 -6
  81. package/.turbo/turbo-type.log +0 -5
  82. package/CHANGELOG.md +0 -114
  83. package/argos.config.ts +0 -33
  84. package/dist/build-css-entry.js.map +0 -1
  85. package/dist/colors.stories.conts.d.ts.map +0 -1
  86. package/dist/colors.stories.conts.js.map +0 -1
  87. package/dist/colors.stories.js.map +0 -1
  88. package/dist/components/alert/alert.d.ts.map +0 -1
  89. package/dist/components/alert/alert.js.map +0 -1
  90. package/dist/components/alert/alert.stories.js.map +0 -1
  91. package/dist/components/alert/index.d.ts.map +0 -1
  92. package/dist/components/alert/index.js.map +0 -1
  93. package/dist/components/avatar/avatar-group.d.ts.map +0 -1
  94. package/dist/components/avatar/avatar-group.js.map +0 -1
  95. package/dist/components/avatar/avatar.d.ts.map +0 -1
  96. package/dist/components/avatar/avatar.js.map +0 -1
  97. package/dist/components/avatar/avatar.stories.js.map +0 -1
  98. package/dist/components/avatar/index.d.ts.map +0 -1
  99. package/dist/components/avatar/index.js.map +0 -1
  100. package/dist/components/badge/badge.d.ts.map +0 -1
  101. package/dist/components/badge/badge.js.map +0 -1
  102. package/dist/components/badge/badge.stories.js.map +0 -1
  103. package/dist/components/badge/icon-badge.d.ts.map +0 -1
  104. package/dist/components/badge/icon-badge.js.map +0 -1
  105. package/dist/components/badge/index.d.ts.map +0 -1
  106. package/dist/components/badge/index.js.map +0 -1
  107. package/dist/components/badge/status-badge.d.ts.map +0 -1
  108. package/dist/components/badge/status-badge.js.map +0 -1
  109. package/dist/components/badge/user-badge.d.ts.map +0 -1
  110. package/dist/components/badge/user-badge.js.map +0 -1
  111. package/dist/components/button/button-link.d.ts.map +0 -1
  112. package/dist/components/button/button-link.js.map +0 -1
  113. package/dist/components/button/button-link.stories.js.map +0 -1
  114. package/dist/components/button/button.d.ts.map +0 -1
  115. package/dist/components/button/button.js.map +0 -1
  116. package/dist/components/button/button.stories.js.map +0 -1
  117. package/dist/components/button/icon-button.d.ts.map +0 -1
  118. package/dist/components/button/icon-button.js.map +0 -1
  119. package/dist/components/button/icon-button.stories.js.map +0 -1
  120. package/dist/components/button/index.d.ts.map +0 -1
  121. package/dist/components/button/index.js.map +0 -1
  122. package/dist/components/button-group/button-group.d.ts.map +0 -1
  123. package/dist/components/button-group/button-group.js.map +0 -1
  124. package/dist/components/button-group/button-group.stories.js.map +0 -1
  125. package/dist/components/button-group/index.d.ts.map +0 -1
  126. package/dist/components/button-group/index.js.map +0 -1
  127. package/dist/components/calendar/calendar.d.ts.map +0 -1
  128. package/dist/components/calendar/calendar.js.map +0 -1
  129. package/dist/components/calendar/index.d.ts.map +0 -1
  130. package/dist/components/calendar/index.js.map +0 -1
  131. package/dist/components/checkbox/checkbox-label.d.ts.map +0 -1
  132. package/dist/components/checkbox/checkbox-label.js.map +0 -1
  133. package/dist/components/checkbox/checkbox-links.d.ts.map +0 -1
  134. package/dist/components/checkbox/checkbox-links.js.map +0 -1
  135. package/dist/components/checkbox/checkbox.d.ts.map +0 -1
  136. package/dist/components/checkbox/checkbox.js.map +0 -1
  137. package/dist/components/checkbox/checkbox.stories.js.map +0 -1
  138. package/dist/components/checkbox/index.d.ts.map +0 -1
  139. package/dist/components/checkbox/index.js.map +0 -1
  140. package/dist/components/code-block/code-block-footer.d.ts.map +0 -1
  141. package/dist/components/code-block/code-block-footer.js.map +0 -1
  142. package/dist/components/code-block/code-block.d.ts.map +0 -1
  143. package/dist/components/code-block/code-block.js.map +0 -1
  144. package/dist/components/code-block/code-block.stories.js.map +0 -1
  145. package/dist/components/code-block/code-content.d.ts.map +0 -1
  146. package/dist/components/code-block/code-content.js.map +0 -1
  147. package/dist/components/code-block/code-copy-button.d.ts.map +0 -1
  148. package/dist/components/code-block/code-copy-button.js.map +0 -1
  149. package/dist/components/code-block/code-tabs.d.ts.map +0 -1
  150. package/dist/components/code-block/code-tabs.js.map +0 -1
  151. package/dist/components/code-block/index.d.ts.map +0 -1
  152. package/dist/components/code-block/index.js.map +0 -1
  153. package/dist/components/command/command.d.ts.map +0 -1
  154. package/dist/components/command/command.js.map +0 -1
  155. package/dist/components/command/command.stories.js.map +0 -1
  156. package/dist/components/command/index.d.ts.map +0 -1
  157. package/dist/components/command/index.js.map +0 -1
  158. package/dist/components/confetti/confetti.d.ts.map +0 -1
  159. package/dist/components/confetti/confetti.js.map +0 -1
  160. package/dist/components/confetti/confetti.stories.js.map +0 -1
  161. package/dist/components/confetti/index.d.ts.map +0 -1
  162. package/dist/components/confetti/index.js.map +0 -1
  163. package/dist/components/dashboard/components/analytics-content.d.ts +0 -2
  164. package/dist/components/dashboard/components/analytics-content.d.ts.map +0 -1
  165. package/dist/components/dashboard/components/analytics-content.js +0 -180
  166. package/dist/components/dashboard/components/analytics-content.js.map +0 -1
  167. package/dist/components/dashboard/components/animated-logo.d.ts.map +0 -1
  168. package/dist/components/dashboard/components/animated-logo.js.map +0 -1
  169. package/dist/components/dashboard/components/complete-setup-button.d.ts.map +0 -1
  170. package/dist/components/dashboard/components/complete-setup-button.js.map +0 -1
  171. package/dist/components/dashboard/components/jobs-content.d.ts +0 -2
  172. package/dist/components/dashboard/components/jobs-content.d.ts.map +0 -1
  173. package/dist/components/dashboard/components/jobs-content.js +0 -69
  174. package/dist/components/dashboard/components/jobs-content.js.map +0 -1
  175. package/dist/components/dashboard/components/mobile-menu.d.ts.map +0 -1
  176. package/dist/components/dashboard/components/mobile-menu.js.map +0 -1
  177. package/dist/components/dashboard/components/organization-selector.d.ts.map +0 -1
  178. package/dist/components/dashboard/components/organization-selector.js.map +0 -1
  179. package/dist/components/dashboard/components/top-menu.d.ts.map +0 -1
  180. package/dist/components/dashboard/components/top-menu.js.map +0 -1
  181. package/dist/components/dashboard/components/topbar-button.d.ts.map +0 -1
  182. package/dist/components/dashboard/components/topbar-button.js.map +0 -1
  183. package/dist/components/dashboard/components/topbar.d.ts.map +0 -1
  184. package/dist/components/dashboard/components/topbar.js.map +0 -1
  185. package/dist/components/dashboard/components/user-profile.d.ts.map +0 -1
  186. package/dist/components/dashboard/components/user-profile.js.map +0 -1
  187. package/dist/components/dashboard/dashboard.d.ts.map +0 -1
  188. package/dist/components/dashboard/dashboard.js.map +0 -1
  189. package/dist/components/dashboard/dashboard.stories.js.map +0 -1
  190. package/dist/components/dashboard/index.d.ts.map +0 -1
  191. package/dist/components/dashboard/index.js.map +0 -1
  192. package/dist/components/date-picker/date-picker.d.ts.map +0 -1
  193. package/dist/components/date-picker/date-picker.js.map +0 -1
  194. package/dist/components/date-picker/date-picker.stories.js.map +0 -1
  195. package/dist/components/date-picker/index.d.ts.map +0 -1
  196. package/dist/components/date-picker/index.js.map +0 -1
  197. package/dist/components/date-time-range-picker/date-time-range-picker.d.ts.map +0 -1
  198. package/dist/components/date-time-range-picker/date-time-range-picker.js.map +0 -1
  199. package/dist/components/date-time-range-picker/index.d.ts.map +0 -1
  200. package/dist/components/date-time-range-picker/index.js.map +0 -1
  201. package/dist/components/dot-grid/dot-grid.d.ts.map +0 -1
  202. package/dist/components/dot-grid/dot-grid.js.map +0 -1
  203. package/dist/components/dot-grid/index.d.ts.map +0 -1
  204. package/dist/components/dot-grid/index.js.map +0 -1
  205. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +0 -1
  206. package/dist/components/dropdown-menu/dropdown-menu.js.map +0 -1
  207. package/dist/components/dropdown-menu/dropdown-menu.stories.js.map +0 -1
  208. package/dist/components/dropdown-menu/index.d.ts.map +0 -1
  209. package/dist/components/dropdown-menu/index.js.map +0 -1
  210. package/dist/components/dynamic-item/dynamic-item.d.ts.map +0 -1
  211. package/dist/components/dynamic-item/dynamic-item.js.map +0 -1
  212. package/dist/components/dynamic-item/dynamic-item.stories.js.map +0 -1
  213. package/dist/components/dynamic-item/index.d.ts.map +0 -1
  214. package/dist/components/dynamic-item/index.js.map +0 -1
  215. package/dist/components/form/form.d.ts.map +0 -1
  216. package/dist/components/form/form.js.map +0 -1
  217. package/dist/components/form/form.stories.js.map +0 -1
  218. package/dist/components/form/index.d.ts.map +0 -1
  219. package/dist/components/form/index.js.map +0 -1
  220. package/dist/components/icon/custom/badge.d.ts.map +0 -1
  221. package/dist/components/icon/custom/badge.js.map +0 -1
  222. package/dist/components/icon/custom/check-circle-solid.d.ts.map +0 -1
  223. package/dist/components/icon/custom/check-circle-solid.js.map +0 -1
  224. package/dist/components/icon/custom/circle-dotted-line.d.ts.map +0 -1
  225. package/dist/components/icon/custom/circle-dotted-line.js.map +0 -1
  226. package/dist/components/icon/custom/component-fill.d.ts.map +0 -1
  227. package/dist/components/icon/custom/component-fill.js.map +0 -1
  228. package/dist/components/icon/custom/component-line.d.ts.map +0 -1
  229. package/dist/components/icon/custom/component-line.js.map +0 -1
  230. package/dist/components/icon/custom/ellipse-mini-solid.d.ts.map +0 -1
  231. package/dist/components/icon/custom/ellipse-mini-solid.js.map +0 -1
  232. package/dist/components/icon/custom/index.d.ts.map +0 -1
  233. package/dist/components/icon/custom/index.js.map +0 -1
  234. package/dist/components/icon/custom/info-tooltip-fill.d.ts.map +0 -1
  235. package/dist/components/icon/custom/info-tooltip-fill.js.map +0 -1
  236. package/dist/components/icon/custom/resize.d.ts.map +0 -1
  237. package/dist/components/icon/custom/resize.js.map +0 -1
  238. package/dist/components/icon/custom/shipfox-logo.d.ts.map +0 -1
  239. package/dist/components/icon/custom/shipfox-logo.js.map +0 -1
  240. package/dist/components/icon/custom/slack-logo.d.ts.map +0 -1
  241. package/dist/components/icon/custom/slack-logo.js.map +0 -1
  242. package/dist/components/icon/custom/spinner.d.ts.map +0 -1
  243. package/dist/components/icon/custom/spinner.js.map +0 -1
  244. package/dist/components/icon/custom/stripe-logo.d.ts.map +0 -1
  245. package/dist/components/icon/custom/stripe-logo.js.map +0 -1
  246. package/dist/components/icon/custom/thunder.d.ts.map +0 -1
  247. package/dist/components/icon/custom/thunder.js.map +0 -1
  248. package/dist/components/icon/custom/x-circle-solid.d.ts.map +0 -1
  249. package/dist/components/icon/custom/x-circle-solid.js.map +0 -1
  250. package/dist/components/icon/icon.d.ts.map +0 -1
  251. package/dist/components/icon/icon.js.map +0 -1
  252. package/dist/components/icon/icon.stories.js.map +0 -1
  253. package/dist/components/icon/index.d.ts.map +0 -1
  254. package/dist/components/icon/index.js.map +0 -1
  255. package/dist/components/icon/remixicon-registry.d.ts.map +0 -1
  256. package/dist/components/icon/remixicon-registry.js.map +0 -1
  257. package/dist/components/index.d.ts.map +0 -1
  258. package/dist/components/index.js.map +0 -1
  259. package/dist/components/inline-tips/index.d.ts.map +0 -1
  260. package/dist/components/inline-tips/index.js.map +0 -1
  261. package/dist/components/inline-tips/inline-tips.d.ts.map +0 -1
  262. package/dist/components/inline-tips/inline-tips.js.map +0 -1
  263. package/dist/components/inline-tips/inline-tips.stories.js.map +0 -1
  264. package/dist/components/input/index.d.ts.map +0 -1
  265. package/dist/components/input/index.js.map +0 -1
  266. package/dist/components/input/input.d.ts.map +0 -1
  267. package/dist/components/input/input.js.map +0 -1
  268. package/dist/components/input/input.stories.js.map +0 -1
  269. package/dist/components/item/index.d.ts.map +0 -1
  270. package/dist/components/item/index.js.map +0 -1
  271. package/dist/components/item/item.d.ts.map +0 -1
  272. package/dist/components/item/item.js.map +0 -1
  273. package/dist/components/item/item.stories.js.map +0 -1
  274. package/dist/components/kbd/index.d.ts.map +0 -1
  275. package/dist/components/kbd/index.js.map +0 -1
  276. package/dist/components/kbd/kbd.d.ts.map +0 -1
  277. package/dist/components/kbd/kbd.js.map +0 -1
  278. package/dist/components/kbd/kbd.stories.js.map +0 -1
  279. package/dist/components/label/index.d.ts.map +0 -1
  280. package/dist/components/label/index.js.map +0 -1
  281. package/dist/components/label/label.d.ts.map +0 -1
  282. package/dist/components/label/label.js.map +0 -1
  283. package/dist/components/label/label.stories.js.map +0 -1
  284. package/dist/components/modal/index.d.ts.map +0 -1
  285. package/dist/components/modal/index.js.map +0 -1
  286. package/dist/components/modal/modal.d.ts.map +0 -1
  287. package/dist/components/modal/modal.js.map +0 -1
  288. package/dist/components/modal/modal.stories.js.map +0 -1
  289. package/dist/components/moving-border/index.d.ts.map +0 -1
  290. package/dist/components/moving-border/index.js.map +0 -1
  291. package/dist/components/moving-border/moving-border.d.ts.map +0 -1
  292. package/dist/components/moving-border/moving-border.js.map +0 -1
  293. package/dist/components/popover/index.d.ts.map +0 -1
  294. package/dist/components/popover/index.js.map +0 -1
  295. package/dist/components/popover/popover.d.ts.map +0 -1
  296. package/dist/components/popover/popover.js.map +0 -1
  297. package/dist/components/search/index.d.ts.map +0 -1
  298. package/dist/components/search/index.js.map +0 -1
  299. package/dist/components/search/search-context.d.ts.map +0 -1
  300. package/dist/components/search/search-context.js.map +0 -1
  301. package/dist/components/search/search-inline.d.ts.map +0 -1
  302. package/dist/components/search/search-inline.js.map +0 -1
  303. package/dist/components/search/search-modal.d.ts.map +0 -1
  304. package/dist/components/search/search-modal.js.map +0 -1
  305. package/dist/components/search/search-trigger.d.ts.map +0 -1
  306. package/dist/components/search/search-trigger.js.map +0 -1
  307. package/dist/components/search/search-variants.d.ts.map +0 -1
  308. package/dist/components/search/search-variants.js.map +0 -1
  309. package/dist/components/search/search.d.ts.map +0 -1
  310. package/dist/components/search/search.js.map +0 -1
  311. package/dist/components/search/search.stories.js.map +0 -1
  312. package/dist/components/select/index.d.ts.map +0 -1
  313. package/dist/components/select/index.js.map +0 -1
  314. package/dist/components/select/select.d.ts.map +0 -1
  315. package/dist/components/select/select.js.map +0 -1
  316. package/dist/components/select/select.stories.js.map +0 -1
  317. package/dist/components/shiny-text/index.d.ts.map +0 -1
  318. package/dist/components/shiny-text/index.js.map +0 -1
  319. package/dist/components/shiny-text/shiny-text.d.ts.map +0 -1
  320. package/dist/components/shiny-text/shiny-text.js.map +0 -1
  321. package/dist/components/skeleton/index.d.ts.map +0 -1
  322. package/dist/components/skeleton/index.js.map +0 -1
  323. package/dist/components/skeleton/skeleton.d.ts.map +0 -1
  324. package/dist/components/skeleton/skeleton.js.map +0 -1
  325. package/dist/components/skeleton/skeleton.stories.js.map +0 -1
  326. package/dist/components/table/data-table.d.ts.map +0 -1
  327. package/dist/components/table/data-table.js.map +0 -1
  328. package/dist/components/table/index.d.ts.map +0 -1
  329. package/dist/components/table/index.js.map +0 -1
  330. package/dist/components/table/table-column-header.d.ts.map +0 -1
  331. package/dist/components/table/table-column-header.js.map +0 -1
  332. package/dist/components/table/table-pagination.d.ts.map +0 -1
  333. package/dist/components/table/table-pagination.js.map +0 -1
  334. package/dist/components/table/table.d.ts.map +0 -1
  335. package/dist/components/table/table.js.map +0 -1
  336. package/dist/components/table/table.stories.columns.d.ts.map +0 -1
  337. package/dist/components/table/table.stories.columns.js.map +0 -1
  338. package/dist/components/table/table.stories.components.d.ts.map +0 -1
  339. package/dist/components/table/table.stories.components.js.map +0 -1
  340. package/dist/components/table/table.stories.data.d.ts.map +0 -1
  341. package/dist/components/table/table.stories.data.js.map +0 -1
  342. package/dist/components/table/table.stories.js.map +0 -1
  343. package/dist/components/tabs/index.d.ts.map +0 -1
  344. package/dist/components/tabs/index.js.map +0 -1
  345. package/dist/components/tabs/tabs.d.ts.map +0 -1
  346. package/dist/components/tabs/tabs.js.map +0 -1
  347. package/dist/components/tabs/tabs.stories.js.map +0 -1
  348. package/dist/components/textarea/index.d.ts.map +0 -1
  349. package/dist/components/textarea/index.js.map +0 -1
  350. package/dist/components/textarea/textarea.d.ts.map +0 -1
  351. package/dist/components/textarea/textarea.js.map +0 -1
  352. package/dist/components/textarea/textarea.stories.js.map +0 -1
  353. package/dist/components/theme/index.d.ts.map +0 -1
  354. package/dist/components/theme/index.js.map +0 -1
  355. package/dist/components/theme/theme-provider.d.ts.map +0 -1
  356. package/dist/components/theme/theme-provider.js.map +0 -1
  357. package/dist/components/toast/index.d.ts.map +0 -1
  358. package/dist/components/toast/index.js.map +0 -1
  359. package/dist/components/toast/toast-custom.d.ts.map +0 -1
  360. package/dist/components/toast/toast-custom.js.map +0 -1
  361. package/dist/components/toast/toast.d.ts.map +0 -1
  362. package/dist/components/toast/toast.js.map +0 -1
  363. package/dist/components/toast/toast.stories.js.map +0 -1
  364. package/dist/components/tooltip/index.d.ts.map +0 -1
  365. package/dist/components/tooltip/index.js.map +0 -1
  366. package/dist/components/tooltip/tooltip.d.ts.map +0 -1
  367. package/dist/components/tooltip/tooltip.js.map +0 -1
  368. package/dist/components/tooltip/tooltip.stories.js.map +0 -1
  369. package/dist/components/typography/code.d.ts.map +0 -1
  370. package/dist/components/typography/code.js.map +0 -1
  371. package/dist/components/typography/code.stories.js.map +0 -1
  372. package/dist/components/typography/header.d.ts.map +0 -1
  373. package/dist/components/typography/header.js.map +0 -1
  374. package/dist/components/typography/header.stories.js.map +0 -1
  375. package/dist/components/typography/index.d.ts.map +0 -1
  376. package/dist/components/typography/index.js.map +0 -1
  377. package/dist/components/typography/text.d.ts.map +0 -1
  378. package/dist/components/typography/text.js.map +0 -1
  379. package/dist/components/typography/text.stories.js.map +0 -1
  380. package/dist/hooks/index.d.ts.map +0 -1
  381. package/dist/hooks/index.js.map +0 -1
  382. package/dist/hooks/useCopy.d.ts.map +0 -1
  383. package/dist/hooks/useCopy.js.map +0 -1
  384. package/dist/hooks/useCopyToClipboard.d.ts.map +0 -1
  385. package/dist/hooks/useCopyToClipboard.js.map +0 -1
  386. package/dist/hooks/useMediaQuery.d.ts.map +0 -1
  387. package/dist/hooks/useMediaQuery.js.map +0 -1
  388. package/dist/hooks/useResolvedTheme.d.ts.map +0 -1
  389. package/dist/hooks/useResolvedTheme.js.map +0 -1
  390. package/dist/hooks/useShikiHighlight.d.ts.map +0 -1
  391. package/dist/hooks/useShikiHighlight.js.map +0 -1
  392. package/dist/hooks/useShikiStyleInjection.d.ts.map +0 -1
  393. package/dist/hooks/useShikiStyleInjection.js.map +0 -1
  394. package/dist/hooks/useTheme.d.ts.map +0 -1
  395. package/dist/hooks/useTheme.js.map +0 -1
  396. package/dist/index.d.ts.map +0 -1
  397. package/dist/index.js.map +0 -1
  398. package/dist/onboarding/sign-in.stories.js.map +0 -1
  399. package/dist/state/theme.d.ts.map +0 -1
  400. package/dist/state/theme.js.map +0 -1
  401. package/dist/utils/avatar.d.ts.map +0 -1
  402. package/dist/utils/avatar.js.map +0 -1
  403. package/dist/utils/clipboard.d.ts.map +0 -1
  404. package/dist/utils/clipboard.js.map +0 -1
  405. package/dist/utils/cn.d.ts.map +0 -1
  406. package/dist/utils/cn.js.map +0 -1
  407. package/dist/utils/date.d.ts.map +0 -1
  408. package/dist/utils/date.js.map +0 -1
  409. package/dist/utils/debounce.d.ts.map +0 -1
  410. package/dist/utils/debounce.js.map +0 -1
  411. package/dist/utils/format/chart.d.ts.map +0 -1
  412. package/dist/utils/format/chart.js.map +0 -1
  413. package/dist/utils/format/date.d.ts.map +0 -1
  414. package/dist/utils/format/date.js.map +0 -1
  415. package/dist/utils/format/duration.d.ts.map +0 -1
  416. package/dist/utils/format/duration.js.map +0 -1
  417. package/dist/utils/format/index.d.ts.map +0 -1
  418. package/dist/utils/format/index.js.map +0 -1
  419. package/dist/utils/format/number.d.ts.map +0 -1
  420. package/dist/utils/format/number.js.map +0 -1
  421. package/dist/utils/index.d.ts.map +0 -1
  422. package/dist/utils/index.js.map +0 -1
  423. package/index.css +0 -1018
  424. package/src/assets/illustration-1.svg +0 -92
  425. package/src/assets/illustration-2.svg +0 -14
  426. package/src/assets/illustration-gradient.svg +0 -7049
  427. package/src/build-css-entry.ts +0 -3
  428. package/src/colors.stories.conts.ts +0 -164
  429. package/src/colors.stories.tsx +0 -66
  430. package/src/components/alert/alert.stories.tsx +0 -178
  431. package/src/components/alert/alert.tsx +0 -291
  432. package/src/components/alert/index.ts +0 -1
  433. package/src/components/avatar/avatar-group.tsx +0 -186
  434. package/src/components/avatar/avatar.stories.tsx +0 -179
  435. package/src/components/avatar/avatar.tsx +0 -219
  436. package/src/components/avatar/index.ts +0 -2
  437. package/src/components/badge/badge.stories.tsx +0 -468
  438. package/src/components/badge/badge.tsx +0 -147
  439. package/src/components/badge/icon-badge.tsx +0 -43
  440. package/src/components/badge/index.ts +0 -4
  441. package/src/components/badge/status-badge.tsx +0 -43
  442. package/src/components/badge/user-badge.tsx +0 -34
  443. package/src/components/button/button-link.stories.tsx +0 -86
  444. package/src/components/button/button-link.tsx +0 -76
  445. package/src/components/button/button.stories.tsx +0 -138
  446. package/src/components/button/button.tsx +0 -91
  447. package/src/components/button/icon-button.stories.tsx +0 -228
  448. package/src/components/button/icon-button.tsx +0 -95
  449. package/src/components/button/index.ts +0 -3
  450. package/src/components/button-group/button-group.stories.tsx +0 -361
  451. package/src/components/button-group/button-group.tsx +0 -111
  452. package/src/components/button-group/index.ts +0 -1
  453. package/src/components/calendar/calendar.tsx +0 -90
  454. package/src/components/calendar/index.ts +0 -1
  455. package/src/components/checkbox/checkbox-label.tsx +0 -125
  456. package/src/components/checkbox/checkbox-links.tsx +0 -92
  457. package/src/components/checkbox/checkbox.stories.tsx +0 -391
  458. package/src/components/checkbox/checkbox.tsx +0 -71
  459. package/src/components/checkbox/index.ts +0 -3
  460. package/src/components/code-block/code-block-footer.tsx +0 -197
  461. package/src/components/code-block/code-block.stories.tsx +0 -323
  462. package/src/components/code-block/code-block.tsx +0 -283
  463. package/src/components/code-block/code-content.tsx +0 -63
  464. package/src/components/code-block/code-copy-button.tsx +0 -73
  465. package/src/components/code-block/code-tabs.tsx +0 -170
  466. package/src/components/code-block/index.ts +0 -3
  467. package/src/components/command/command.stories.tsx +0 -133
  468. package/src/components/command/command.tsx +0 -265
  469. package/src/components/command/index.ts +0 -1
  470. package/src/components/confetti/confetti.stories.tsx +0 -38
  471. package/src/components/confetti/confetti.tsx +0 -140
  472. package/src/components/confetti/index.ts +0 -1
  473. package/src/components/dashboard/components/analytics-content.tsx +0 -102
  474. package/src/components/dashboard/components/animated-logo.tsx +0 -25
  475. package/src/components/dashboard/components/complete-setup-button.tsx +0 -30
  476. package/src/components/dashboard/components/jobs-content.tsx +0 -51
  477. package/src/components/dashboard/components/mobile-menu.tsx +0 -50
  478. package/src/components/dashboard/components/organization-selector.tsx +0 -51
  479. package/src/components/dashboard/components/top-menu.tsx +0 -26
  480. package/src/components/dashboard/components/topbar-button.tsx +0 -27
  481. package/src/components/dashboard/components/topbar.tsx +0 -40
  482. package/src/components/dashboard/components/user-profile.tsx +0 -90
  483. package/src/components/dashboard/dashboard.stories.tsx +0 -25
  484. package/src/components/dashboard/dashboard.tsx +0 -61
  485. package/src/components/dashboard/index.ts +0 -1
  486. package/src/components/date-picker/date-picker.stories.tsx +0 -230
  487. package/src/components/date-picker/date-picker.tsx +0 -179
  488. package/src/components/date-picker/index.ts +0 -1
  489. package/src/components/date-time-range-picker/date-time-range-picker.tsx +0 -211
  490. package/src/components/date-time-range-picker/index.ts +0 -1
  491. package/src/components/dot-grid/dot-grid.tsx +0 -325
  492. package/src/components/dot-grid/index.ts +0 -1
  493. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -384
  494. package/src/components/dropdown-menu/dropdown-menu.tsx +0 -416
  495. package/src/components/dropdown-menu/index.ts +0 -1
  496. package/src/components/dynamic-item/dynamic-item.stories.tsx +0 -266
  497. package/src/components/dynamic-item/dynamic-item.tsx +0 -74
  498. package/src/components/dynamic-item/index.ts +0 -1
  499. package/src/components/form/form.stories.tsx +0 -505
  500. package/src/components/form/form.tsx +0 -154
  501. package/src/components/form/index.ts +0 -1
  502. package/src/components/icon/custom/badge.tsx +0 -17
  503. package/src/components/icon/custom/check-circle-solid.tsx +0 -24
  504. package/src/components/icon/custom/circle-dotted-line.tsx +0 -17
  505. package/src/components/icon/custom/component-fill.tsx +0 -17
  506. package/src/components/icon/custom/component-line.tsx +0 -17
  507. package/src/components/icon/custom/ellipse-mini-solid.tsx +0 -17
  508. package/src/components/icon/custom/index.ts +0 -14
  509. package/src/components/icon/custom/info-tooltip-fill.tsx +0 -21
  510. package/src/components/icon/custom/resize.tsx +0 -17
  511. package/src/components/icon/custom/shipfox-logo.tsx +0 -20
  512. package/src/components/icon/custom/slack-logo.tsx +0 -35
  513. package/src/components/icon/custom/spinner.tsx +0 -144
  514. package/src/components/icon/custom/stripe-logo.tsx +0 -27
  515. package/src/components/icon/custom/thunder.tsx +0 -17
  516. package/src/components/icon/custom/x-circle-solid.tsx +0 -24
  517. package/src/components/icon/icon.stories.tsx +0 -31
  518. package/src/components/icon/icon.tsx +0 -90
  519. package/src/components/icon/index.ts +0 -1
  520. package/src/components/icon/remixicon-registry.ts +0 -24
  521. package/src/components/index.ts +0 -36
  522. package/src/components/inline-tips/index.ts +0 -1
  523. package/src/components/inline-tips/inline-tips.stories.tsx +0 -131
  524. package/src/components/inline-tips/inline-tips.tsx +0 -132
  525. package/src/components/input/index.ts +0 -1
  526. package/src/components/input/input.stories.tsx +0 -138
  527. package/src/components/input/input.tsx +0 -43
  528. package/src/components/item/index.ts +0 -1
  529. package/src/components/item/item.stories.tsx +0 -159
  530. package/src/components/item/item.tsx +0 -182
  531. package/src/components/kbd/index.ts +0 -1
  532. package/src/components/kbd/kbd.stories.tsx +0 -64
  533. package/src/components/kbd/kbd.tsx +0 -32
  534. package/src/components/label/index.ts +0 -1
  535. package/src/components/label/label.stories.tsx +0 -67
  536. package/src/components/label/label.tsx +0 -15
  537. package/src/components/modal/index.ts +0 -1
  538. package/src/components/modal/modal.stories.tsx +0 -448
  539. package/src/components/modal/modal.tsx +0 -311
  540. package/src/components/moving-border/index.ts +0 -1
  541. package/src/components/moving-border/moving-border.tsx +0 -67
  542. package/src/components/popover/index.ts +0 -1
  543. package/src/components/popover/popover.tsx +0 -60
  544. package/src/components/renovate.json +0 -23
  545. package/src/components/search/index.ts +0 -28
  546. package/src/components/search/search-context.tsx +0 -78
  547. package/src/components/search/search-inline.tsx +0 -107
  548. package/src/components/search/search-modal.tsx +0 -198
  549. package/src/components/search/search-trigger.tsx +0 -47
  550. package/src/components/search/search-variants.ts +0 -88
  551. package/src/components/search/search.stories.tsx +0 -392
  552. package/src/components/search/search.tsx +0 -47
  553. package/src/components/select/index.ts +0 -1
  554. package/src/components/select/select.stories.tsx +0 -207
  555. package/src/components/select/select.tsx +0 -220
  556. package/src/components/shiny-text/index.ts +0 -1
  557. package/src/components/shiny-text/shiny-text.tsx +0 -21
  558. package/src/components/skeleton/index.ts +0 -1
  559. package/src/components/skeleton/skeleton.stories.tsx +0 -178
  560. package/src/components/skeleton/skeleton.tsx +0 -14
  561. package/src/components/table/data-table.tsx +0 -254
  562. package/src/components/table/index.ts +0 -5
  563. package/src/components/table/table-column-header.tsx +0 -141
  564. package/src/components/table/table-pagination.tsx +0 -161
  565. package/src/components/table/table.stories.columns.tsx +0 -198
  566. package/src/components/table/table.stories.components.tsx +0 -104
  567. package/src/components/table/table.stories.data.ts +0 -117
  568. package/src/components/table/table.stories.tsx +0 -256
  569. package/src/components/table/table.tsx +0 -95
  570. package/src/components/tabs/index.ts +0 -1
  571. package/src/components/tabs/tabs.stories.tsx +0 -100
  572. package/src/components/tabs/tabs.tsx +0 -380
  573. package/src/components/textarea/index.ts +0 -1
  574. package/src/components/textarea/textarea.stories.tsx +0 -196
  575. package/src/components/textarea/textarea.tsx +0 -42
  576. package/src/components/theme/index.ts +0 -1
  577. package/src/components/theme/theme-provider.tsx +0 -50
  578. package/src/components/toast/index.ts +0 -2
  579. package/src/components/toast/toast-custom.tsx +0 -154
  580. package/src/components/toast/toast.stories.tsx +0 -369
  581. package/src/components/toast/toast.tsx +0 -41
  582. package/src/components/tooltip/index.ts +0 -1
  583. package/src/components/tooltip/tooltip.stories.tsx +0 -284
  584. package/src/components/tooltip/tooltip.tsx +0 -121
  585. package/src/components/typography/code.stories.tsx +0 -36
  586. package/src/components/typography/code.tsx +0 -38
  587. package/src/components/typography/header.stories.tsx +0 -27
  588. package/src/components/typography/header.tsx +0 -41
  589. package/src/components/typography/index.ts +0 -3
  590. package/src/components/typography/text.stories.tsx +0 -67
  591. package/src/components/typography/text.tsx +0 -50
  592. package/src/hooks/index.ts +0 -6
  593. package/src/hooks/useCopy.ts +0 -0
  594. package/src/hooks/useCopyToClipboard.ts +0 -20
  595. package/src/hooks/useMediaQuery.ts +0 -87
  596. package/src/hooks/useResolvedTheme.ts +0 -34
  597. package/src/hooks/useShikiHighlight.ts +0 -140
  598. package/src/hooks/useShikiStyleInjection.ts +0 -34
  599. package/src/hooks/useTheme.ts +0 -10
  600. package/src/index.ts +0 -4
  601. package/src/onboarding/sign-in.stories.tsx +0 -85
  602. package/src/state/theme.ts +0 -15
  603. package/src/utils/avatar.ts +0 -27
  604. package/src/utils/clipboard.ts +0 -4
  605. package/src/utils/cn.ts +0 -6
  606. package/src/utils/date.test.ts +0 -119
  607. package/src/utils/date.ts +0 -99
  608. package/src/utils/debounce.ts +0 -15
  609. package/src/utils/format/chart.ts +0 -16
  610. package/src/utils/format/date.test.ts +0 -65
  611. package/src/utils/format/date.ts +0 -75
  612. package/src/utils/format/duration.test.ts +0 -58
  613. package/src/utils/format/duration.ts +0 -82
  614. package/src/utils/format/index.ts +0 -4
  615. package/src/utils/format/number.test.ts +0 -38
  616. package/src/utils/format/number.ts +0 -33
  617. package/src/utils/index.ts +0 -6
  618. package/test/global.ts +0 -3
  619. package/test/setup.ts +0 -9
  620. package/tsconfig.build.json +0 -19
  621. package/tsconfig.json +0 -11
  622. package/tsconfig.test.json +0 -12
  623. package/vercel.json +0 -8
  624. package/vite.css.config.ts +0 -30
  625. package/vitest.config.ts +0 -44
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/command/command.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport {Command as CommandPrimitive} from 'cmdk';\nimport {type ComponentProps, forwardRef, useCallback, useState} from 'react';\nimport {cn} from 'utils/cn';\nimport {Icon} from '../icon';\nimport {Kbd} from '../kbd';\n\nconst commandTriggerVariants = cva(\n [\n 'flex items-center justify-between gap-8',\n 'w-full rounded-6 px-8 text-sm leading-20',\n 'bg-background-field-base text-foreground-neutral-base',\n 'shadow-button-neutral transition-[color,box-shadow] outline-none',\n 'hover:bg-background-field-hover cursor-pointer',\n 'focus-visible:shadow-border-interactive-with-active',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled',\n ],\n {\n variants: {\n variant: {\n base: 'bg-background-field-base',\n component: 'bg-background-field-component',\n },\n size: {\n small: 'h-28 py-4',\n base: 'h-32 py-6',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'base',\n },\n },\n);\n\ntype CommandTriggerProps = ComponentProps<'button'> &\n VariantProps<typeof commandTriggerVariants> & {\n placeholder?: string;\n };\n\nconst CommandTrigger = forwardRef<HTMLButtonElement, CommandTriggerProps>(\n ({className, variant, size, placeholder, children, ...props}, ref) => {\n const hasValue = Boolean(children);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"command-trigger\"\n data-placeholder={!hasValue || undefined}\n className={cn(\n commandTriggerVariants({variant, size}),\n 'data-placeholder:text-foreground-neutral-muted',\n className,\n )}\n {...props}\n >\n <span className=\"flex-1 text-left truncate\">{hasValue ? children : placeholder}</span>\n <Icon name=\"arrowDownSLine\" className=\"size-16 text-foreground-neutral-muted shrink-0\" />\n </button>\n );\n },\n);\nCommandTrigger.displayName = 'CommandTrigger';\n\nfunction Command({className, ...props}: ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-10',\n 'bg-background-neutral-overlay text-foreground-neutral-base',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({children, ...props}: ComponentProps<typeof CommandPrimitive.Dialog>) {\n return (\n <CommandPrimitive.Dialog data-slot=\"command-dialog\" {...props}>\n <div className=\"fixed inset-0 z-50 bg-background-neutral-overlay/80 backdrop-blur-sm\" />\n <div className=\"fixed left-1/2 top-1/2 z-50 w-full max-w-600 -translate-x-1/2 -translate-y-1/2 p-16\">\n <Command className=\"shadow-tooltip\">{children}</Command>\n </div>\n </CommandPrimitive.Dialog>\n );\n}\n\ntype CommandInputProps = ComponentProps<typeof CommandPrimitive.Input> & {\n showClearButton?: boolean;\n onClear?: () => void;\n};\n\nfunction CommandInput({\n className,\n value,\n onValueChange,\n onClear,\n showClearButton = true,\n ...props\n}: CommandInputProps) {\n const [internalValue, setInternalValue] = useState('');\n const isControlled = value !== undefined;\n const inputValue = isControlled ? value : internalValue;\n const hasValue = Boolean(inputValue);\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n },\n [isControlled, onValueChange],\n );\n\n const handleClear = useCallback(() => {\n if (!isControlled) {\n setInternalValue('');\n }\n onValueChange?.('');\n onClear?.();\n }, [isControlled, onValueChange, onClear]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape' && hasValue) {\n e.preventDefault();\n e.stopPropagation();\n handleClear();\n }\n },\n [hasValue, handleClear],\n );\n\n return (\n <div className=\"flex items-center gap-8 border-b border-border-neutral-strong p-8\">\n <Icon name=\"searchLine\" className=\"size-16 shrink-0 text-foreground-neutral-muted\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n value={inputValue}\n onValueChange={handleValueChange}\n onKeyDown={handleKeyDown}\n className={cn(\n 'flex-1 bg-transparent text-sm leading-20 outline-none',\n 'placeholder:text-foreground-neutral-muted',\n 'disabled:cursor-not-allowed disabled:text-foreground-neutral-disabled',\n className,\n )}\n {...props}\n />\n {showClearButton && hasValue && (\n <button\n type=\"button\"\n onClick={handleClear}\n className={cn(\n 'shrink-0 cursor-pointer rounded-4 p-2',\n 'text-foreground-neutral-muted hover:text-foreground-neutral-subtle transition-colors',\n )}\n aria-label=\"Clear search\"\n >\n <Icon name=\"closeLine\" className=\"size-16\" />\n </button>\n )}\n </div>\n );\n}\n\nfunction CommandList({className, ...props}: ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('max-h-300 overflow-y-auto overflow-x-hidden p-4 scrollbar', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({className, ...props}: ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-24 text-center text-sm text-foreground-neutral-muted', className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({className, ...props}: ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'overflow-hidden',\n '[&_[cmdk-group-heading]]:px-8 [&_[cmdk-group-heading]]:py-4',\n '[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:leading-20',\n '[&_[cmdk-group-heading]]:text-foreground-neutral-subtle',\n '[&_[cmdk-group-heading]]:select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\n 'relative -mx-4 my-4 h-px',\n 'bg-border-neutral-menu-top',\n 'after:absolute after:inset-x-0 after:top-px after:h-px',\n 'after:bg-border-neutral-menu-bottom',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandItem({className, ...props}: ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-8 rounded-6 px-8 py-6',\n 'text-sm leading-20 text-foreground-neutral-subtle outline-none transition-colors',\n 'aria-selected:bg-background-components-hover aria-selected:text-foreground-neutral-base',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:text-foreground-neutral-disabled',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({className, children, ...props}: ComponentProps<typeof Kbd>) {\n return (\n <Kbd data-slot=\"command-shortcut\" className={cn('ml-auto', className)} {...props}>\n {children}\n </Kbd>\n );\n}\n\nexport {\n Command,\n CommandTrigger,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n commandTriggerVariants,\n};\n\nexport type {CommandTriggerProps, CommandInputProps};\n"],"names":["cva","Command","CommandPrimitive","forwardRef","useCallback","useState","cn","Icon","Kbd","commandTriggerVariants","variants","variant","base","component","size","small","defaultVariants","CommandTrigger","className","placeholder","children","props","ref","hasValue","Boolean","button","type","data-slot","data-placeholder","undefined","span","name","displayName","CommandDialog","Dialog","div","CommandInput","value","onValueChange","onClear","showClearButton","internalValue","setInternalValue","isControlled","inputValue","handleValueChange","newValue","handleClear","handleKeyDown","e","key","preventDefault","stopPropagation","Input","onKeyDown","onClick","aria-label","CommandList","List","CommandEmpty","Empty","CommandGroup","Group","CommandSeparator","Separator","CommandItem","Item","CommandShortcut"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/command/command.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {useState} from 'react';\nimport {Icon} from '../icon';\nimport {Popover, PopoverContent, PopoverTrigger} from '../popover';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n CommandTrigger,\n} from './command';\n\nconst meta = {\n title: 'Components/Command',\n component: Command,\n tags: ['autodocs'],\n} satisfies Meta<typeof Command>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => (\n <Command className=\"rounded-10 shadow-tooltip max-w-400\">\n <CommandInput placeholder=\"Type a command or search...\" />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup heading=\"Suggestions\">\n <CommandItem>\n <Icon name=\"calendar2Line\" className=\"size-16 mr-8\" />\n <span>Calendar</span>\n </CommandItem>\n <CommandItem>\n <Icon name=\"emotion2Line\" className=\"size-16 mr-8\" />\n <span>Search Emoji</span>\n </CommandItem>\n <CommandItem>\n <Icon name=\"calculatorLine\" className=\"size-16 mr-8\" />\n <span>Calculator</span>\n </CommandItem>\n </CommandGroup>\n <CommandSeparator />\n <CommandGroup heading=\"Settings\">\n <CommandItem>\n <Icon name=\"user3Line\" className=\"size-16 mr-8\" />\n <span>Profile</span>\n <CommandShortcut>⌘P</CommandShortcut>\n </CommandItem>\n <CommandItem>\n <Icon name=\"mailLine\" className=\"size-16 mr-8\" />\n <span>Mail</span>\n <CommandShortcut>⌘M</CommandShortcut>\n </CommandItem>\n <CommandItem>\n <Icon name=\"settings3Line\" className=\"size-16 mr-8\" />\n <span>Settings</span>\n <CommandShortcut>⌘S</CommandShortcut>\n </CommandItem>\n </CommandGroup>\n </CommandList>\n </Command>\n ),\n};\n\nexport const Combobox: Story = {\n render: () => {\n const frameworks = [\n {value: 'next.js', label: 'Next.js', icon: 'reactjsLine' as const},\n {value: 'sveltekit', label: 'SvelteKit', icon: 'svelteLine' as const},\n {value: 'nuxt.js', label: 'Nuxt.js', icon: 'vuejsLine' as const},\n {value: 'remix', label: 'Remix', icon: 'reactjsLine' as const},\n {value: 'astro', label: 'Astro', icon: 'rocketLine' as const},\n {value: 'vue', label: 'Vue', icon: 'vuejsLine' as const},\n {value: 'react', label: 'React', icon: 'reactjsLine' as const},\n ];\n\n function ComboboxDemo() {\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState('');\n\n return (\n <div className=\"flex flex-col gap-16\">\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <CommandTrigger className=\"w-280\" placeholder=\"Select framework...\">\n {value ? frameworks.find((framework) => framework.value === value)?.label : null}\n </CommandTrigger>\n </PopoverTrigger>\n <PopoverContent className=\"w-280 p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder=\"Search framework...\" />\n <CommandList>\n <CommandEmpty>No framework found.</CommandEmpty>\n <CommandGroup>\n {frameworks.map((framework) => (\n <CommandItem\n key={framework.value}\n value={framework.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? '' : currentValue);\n setOpen(false);\n }}\n >\n <Icon\n name=\"check\"\n className={`size-16 mr-8 ${value === framework.value ? 'opacity-100' : 'opacity-0'}`}\n />\n <Icon name={framework.icon} className=\"size-16 mr-8\" />\n {framework.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {value && (\n <p className=\"text-sm text-foreground-neutral-muted\">\n Selected: {frameworks.find((f) => f.value === value)?.label}\n </p>\n )}\n </div>\n );\n }\n\n return <ComboboxDemo />;\n },\n};\n"],"names":["useState","Icon","Popover","PopoverContent","PopoverTrigger","Command","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","CommandSeparator","CommandShortcut","CommandTrigger","meta","title","component","tags","Default","render","className","placeholder","heading","name","span","Combobox","frameworks","value","label","icon","ComboboxDemo","open","setOpen","setValue","div","onOpenChange","asChild","find","framework","align","map","onSelect","currentValue","p","f"],"mappings":";AACA,SAAQA,QAAQ,QAAO,QAAQ;AAC/B,SAAQC,IAAI,QAAO,UAAU;AAC7B,SAAQC,OAAO,EAAEC,cAAc,EAAEC,cAAc,QAAO,aAAa;AACnE,SACEC,OAAO,EACPC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,YAAY;AAEnB,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWX;IACXY,MAAM;QAAC;KAAW;AACpB;AAEA,eAAeH,KAAK;AAIpB,OAAO,MAAMI,UAAiB;IAC5BC,QAAQ,kBACN,MAACd;YAAQe,WAAU;;8BACjB,KAACZ;oBAAaa,aAAY;;8BAC1B,MAACX;;sCACC,KAACJ;sCAAa;;sCACd,MAACC;4BAAae,SAAQ;;8CACpB,MAACb;;sDACC,KAACR;4CAAKsB,MAAK;4CAAgBH,WAAU;;sDACrC,KAACI;sDAAK;;;;8CAER,MAACf;;sDACC,KAACR;4CAAKsB,MAAK;4CAAeH,WAAU;;sDACpC,KAACI;sDAAK;;;;8CAER,MAACf;;sDACC,KAACR;4CAAKsB,MAAK;4CAAiBH,WAAU;;sDACtC,KAACI;sDAAK;;;;;;sCAGV,KAACb;sCACD,MAACJ;4BAAae,SAAQ;;8CACpB,MAACb;;sDACC,KAACR;4CAAKsB,MAAK;4CAAYH,WAAU;;sDACjC,KAACI;sDAAK;;sDACN,KAACZ;sDAAgB;;;;8CAEnB,MAACH;;sDACC,KAACR;4CAAKsB,MAAK;4CAAWH,WAAU;;sDAChC,KAACI;sDAAK;;sDACN,KAACZ;sDAAgB;;;;8CAEnB,MAACH;;sDACC,KAACR;4CAAKsB,MAAK;4CAAgBH,WAAU;;sDACrC,KAACI;sDAAK;;sDACN,KAACZ;sDAAgB;;;;;;;;;;AAM7B,EAAE;AAEF,OAAO,MAAMa,WAAkB;IAC7BN,QAAQ;QACN,MAAMO,aAAa;YACjB;gBAACC,OAAO;gBAAWC,OAAO;gBAAWC,MAAM;YAAsB;YACjE;gBAACF,OAAO;gBAAaC,OAAO;gBAAaC,MAAM;YAAqB;YACpE;gBAACF,OAAO;gBAAWC,OAAO;gBAAWC,MAAM;YAAoB;YAC/D;gBAACF,OAAO;gBAASC,OAAO;gBAASC,MAAM;YAAsB;YAC7D;gBAACF,OAAO;gBAASC,OAAO;gBAASC,MAAM;YAAqB;YAC5D;gBAACF,OAAO;gBAAOC,OAAO;gBAAOC,MAAM;YAAoB;YACvD;gBAACF,OAAO;gBAASC,OAAO;gBAASC,MAAM;YAAsB;SAC9D;QAED,SAASC;YACP,MAAM,CAACC,MAAMC,QAAQ,GAAGhC,SAAS;YACjC,MAAM,CAAC2B,OAAOM,SAAS,GAAGjC,SAAS;YAEnC,qBACE,MAACkC;gBAAId,WAAU;;kCACb,MAAClB;wBAAQ6B,MAAMA;wBAAMI,cAAcH;;0CACjC,KAAC5B;gCAAegC,OAAO;0CACrB,cAAA,KAACvB;oCAAeO,WAAU;oCAAQC,aAAY;8CAC3CM,QAAQD,WAAWW,IAAI,CAAC,CAACC,YAAcA,UAAUX,KAAK,KAAKA,QAAQC,QAAQ;;;0CAGhF,KAACzB;gCAAeiB,WAAU;gCAAYmB,OAAM;0CAC1C,cAAA,MAAClC;;sDACC,KAACG;4CAAaa,aAAY;;sDAC1B,MAACX;;8DACC,KAACJ;8DAAa;;8DACd,KAACC;8DACEmB,WAAWc,GAAG,CAAC,CAACF,0BACf,MAAC7B;4DAECkB,OAAOW,UAAUX,KAAK;4DACtBc,UAAU,CAACC;gEACTT,SAASS,iBAAiBf,QAAQ,KAAKe;gEACvCV,QAAQ;4DACV;;8EAEA,KAAC/B;oEACCsB,MAAK;oEACLH,WAAW,CAAC,aAAa,EAAEO,UAAUW,UAAUX,KAAK,GAAG,gBAAgB,aAAa;;8EAEtF,KAAC1B;oEAAKsB,MAAMe,UAAUT,IAAI;oEAAET,WAAU;;gEACrCkB,UAAUV,KAAK;;2DAZXU,UAAUX,KAAK;;;;;;;;;oBAoBjCA,uBACC,MAACgB;wBAAEvB,WAAU;;4BAAwC;4BACxCM,WAAWW,IAAI,CAAC,CAACO,IAAMA,EAAEjB,KAAK,KAAKA,QAAQC;;;;;QAKhE;QAEA,qBAAO,KAACE;IACV;AACF,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/command/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/command/index.ts"],"sourcesContent":["export * from './command';\n"],"names":[],"mappings":"AAAA,cAAc,YAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"confetti.d.ts","sourceRoot":"","sources":["../../../src/components/confetti/confetti.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,qBAAqB,EAEtC,OAAO,IAAI,eAAe,EAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrD,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AAIF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG;IACrD,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AA4EF,eAAO,MAAM,QAAQ,oHAAoB,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG;IAC3D,OAAO,CAAC,EAAE,eAAe,GAAG,qBAAqB,GAAG;QAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAC,CAAC;CAClF,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,mBAAmB,2CA0BzF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/confetti/confetti.tsx"],"sourcesContent":["import type {\n GlobalOptions as ConfettiGlobalOptions,\n CreateTypes as ConfettiInstance,\n Options as ConfettiOptions,\n} from 'canvas-confetti';\nimport confetti from 'canvas-confetti';\nimport {Button} from 'components/button';\nimport type {ComponentProps, ReactNode} from 'react';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\n\ntype ConfettiApi = {\n fire: (options?: ConfettiOptions) => Promise<void>;\n};\n\nconst ConfettiContext = createContext<ConfettiApi | null>(null);\n\nexport type ConfettiRef = ConfettiApi | null;\n\nexport type ConfettiProps = ComponentProps<'canvas'> & {\n options?: ConfettiOptions;\n globalOptions?: ConfettiGlobalOptions;\n manualstart?: boolean;\n children?: ReactNode;\n};\n\nconst ConfettiComponent = forwardRef<ConfettiRef, ConfettiProps>(\n (\n {\n options,\n globalOptions = {resize: true, useWorker: true},\n manualstart = false,\n children,\n ...props\n },\n ref,\n ) => {\n const instanceRef = useRef<ConfettiInstance | null>(null);\n const hasAutoFiredRef = useRef<boolean>(false);\n const optionsRef = useRef<ConfettiOptions | undefined>(options);\n\n useEffect(() => {\n optionsRef.current = options;\n }, [options]);\n\n const canvasRef = useCallback(\n (node: HTMLCanvasElement | null) => {\n if (node !== null) {\n if (instanceRef.current) {\n instanceRef.current.reset();\n }\n instanceRef.current = confetti.create(node, {\n ...globalOptions,\n });\n } else {\n if (instanceRef.current) {\n instanceRef.current.reset();\n instanceRef.current = null;\n }\n }\n },\n [globalOptions],\n );\n\n const fire = useCallback(async (opts: ConfettiOptions = {}) => {\n try {\n await instanceRef.current?.({...optionsRef.current, ...opts});\n } catch (error) {\n // biome-ignore lint/suspicious/noConsole: we need to log the error\n console.error('Confetti error:', error);\n }\n }, []);\n\n const api = useMemo<ConfettiApi>(\n () => ({\n fire,\n }),\n [fire],\n );\n\n useImperativeHandle(ref, () => api, [api]);\n\n useEffect(() => {\n if (!manualstart && !hasAutoFiredRef.current && instanceRef.current) {\n hasAutoFiredRef.current = true;\n void instanceRef.current(optionsRef.current);\n }\n }, [manualstart]);\n\n return (\n <ConfettiContext.Provider value={api}>\n <canvas ref={canvasRef} {...props} />\n {children}\n </ConfettiContext.Provider>\n );\n },\n);\n\nConfettiComponent.displayName = 'Confetti';\n\nexport const Confetti = ConfettiComponent;\n\nexport type ConfettiButtonProps = ComponentProps<'button'> & {\n options?: ConfettiOptions & ConfettiGlobalOptions & {canvas?: HTMLCanvasElement};\n};\n\nexport function ConfettiButton({options, onClick, children, ...props}: ConfettiButtonProps) {\n const handleClick: ComponentProps<'button'>['onClick'] = async (event) => {\n try {\n const rect = event.currentTarget.getBoundingClientRect();\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n await confetti({\n ...options,\n origin: {\n x: x / window.innerWidth,\n y: y / window.innerHeight,\n },\n });\n } catch (error) {\n // biome-ignore lint/suspicious/noConsole: we need to log the error\n console.error('Confetti button error:', error);\n }\n\n onClick?.(event);\n };\n\n return (\n <Button onClick={handleClick} {...props}>\n {children}\n </Button>\n );\n}\n"],"names":["confetti","Button","createContext","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","ConfettiContext","ConfettiComponent","options","globalOptions","resize","useWorker","manualstart","children","props","ref","instanceRef","hasAutoFiredRef","optionsRef","current","canvasRef","node","reset","create","fire","opts","error","console","api","Provider","value","canvas","displayName","Confetti","ConfettiButton","onClick","handleClick","event","rect","currentTarget","getBoundingClientRect","x","left","width","y","top","height","origin","window","innerWidth","innerHeight"],"mappings":";AAKA,OAAOA,cAAc,kBAAkB;AACvC,SAAQC,MAAM,QAAO,oBAAoB;AAEzC,SACEC,aAAa,EACbC,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,QACD,QAAQ;AAMf,MAAMC,gCAAkBP,cAAkC;AAW1D,MAAMQ,kCAAoBP,WACxB,CACE,EACEQ,OAAO,EACPC,gBAAgB;IAACC,QAAQ;IAAMC,WAAW;AAAI,CAAC,EAC/CC,cAAc,KAAK,EACnBC,QAAQ,EACR,GAAGC,OACJ,EACDC;IAEA,MAAMC,cAAcX,OAAgC;IACpD,MAAMY,kBAAkBZ,OAAgB;IACxC,MAAMa,aAAab,OAAoCG;IAEvDN,UAAU;QACRgB,WAAWC,OAAO,GAAGX;IACvB,GAAG;QAACA;KAAQ;IAEZ,MAAMY,YAAYnB,YAChB,CAACoB;QACC,IAAIA,SAAS,MAAM;YACjB,IAAIL,YAAYG,OAAO,EAAE;gBACvBH,YAAYG,OAAO,CAACG,KAAK;YAC3B;YACAN,YAAYG,OAAO,GAAGtB,SAAS0B,MAAM,CAACF,MAAM;gBAC1C,GAAGZ,aAAa;YAClB;QACF,OAAO;YACL,IAAIO,YAAYG,OAAO,EAAE;gBACvBH,YAAYG,OAAO,CAACG,KAAK;gBACzBN,YAAYG,OAAO,GAAG;YACxB;QACF;IACF,GACA;QAACV;KAAc;IAGjB,MAAMe,OAAOvB,YAAY,OAAOwB,OAAwB,CAAC,CAAC;QACxD,IAAI;YACF,MAAMT,YAAYG,OAAO,GAAG;gBAAC,GAAGD,WAAWC,OAAO;gBAAE,GAAGM,IAAI;YAAA;QAC7D,EAAE,OAAOC,OAAO;YACd,mEAAmE;YACnEC,QAAQD,KAAK,CAAC,mBAAmBA;QACnC;IACF,GAAG,EAAE;IAEL,MAAME,MAAMxB,QACV,IAAO,CAAA;YACLoB;QACF,CAAA,GACA;QAACA;KAAK;IAGRrB,oBAAoBY,KAAK,IAAMa,KAAK;QAACA;KAAI;IAEzC1B,UAAU;QACR,IAAI,CAACU,eAAe,CAACK,gBAAgBE,OAAO,IAAIH,YAAYG,OAAO,EAAE;YACnEF,gBAAgBE,OAAO,GAAG;YAC1B,KAAKH,YAAYG,OAAO,CAACD,WAAWC,OAAO;QAC7C;IACF,GAAG;QAACP;KAAY;IAEhB,qBACE,MAACN,gBAAgBuB,QAAQ;QAACC,OAAOF;;0BAC/B,KAACG;gBAAOhB,KAAKK;gBAAY,GAAGN,KAAK;;YAChCD;;;AAGP;AAGFN,kBAAkByB,WAAW,GAAG;AAEhC,OAAO,MAAMC,WAAW1B,kBAAkB;AAM1C,OAAO,SAAS2B,eAAe,EAAC1B,OAAO,EAAE2B,OAAO,EAAEtB,QAAQ,EAAE,GAAGC,OAA2B;IACxF,MAAMsB,cAAmD,OAAOC;QAC9D,IAAI;YACF,MAAMC,OAAOD,MAAME,aAAa,CAACC,qBAAqB;YACtD,MAAMC,IAAIH,KAAKI,IAAI,GAAGJ,KAAKK,KAAK,GAAG;YACnC,MAAMC,IAAIN,KAAKO,GAAG,GAAGP,KAAKQ,MAAM,GAAG;YACnC,MAAMjD,SAAS;gBACb,GAAGW,OAAO;gBACVuC,QAAQ;oBACNN,GAAGA,IAAIO,OAAOC,UAAU;oBACxBL,GAAGA,IAAII,OAAOE,WAAW;gBAC3B;YACF;QACF,EAAE,OAAOxB,OAAO;YACd,mEAAmE;YACnEC,QAAQD,KAAK,CAAC,0BAA0BA;QAC1C;QAEAS,UAAUE;IACZ;IAEA,qBACE,KAACvC;QAAOqC,SAASC;QAAc,GAAGtB,KAAK;kBACpCD;;AAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/confetti/confetti.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Confetti, ConfettiButton} from './confetti';\n\nconst meta = {\n title: 'Components/Confetti',\n component: Confetti,\n tags: ['autodocs'],\n parameters: {\n layout: 'centered',\n },\n} satisfies Meta<typeof Confetti>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex h-400 w-600 items-center justify-center rounded-16 bg-background-subtle-base\">\n <ConfettiButton>Click for Confetti!</ConfettiButton>\n </div>\n ),\n};\n\nexport const WithOptions: Story = {\n render: () => (\n <div className=\"flex h-400 w-600 items-center justify-center rounded-16 bg-background-subtle-base\">\n <ConfettiButton\n options={{\n particleCount: 150,\n spread: 60,\n colors: ['#ff6b6b', '#4ecdc4', '#ffe66d', '#95e1d3'],\n }}\n >\n Custom Confetti Button\n </ConfettiButton>\n </div>\n ),\n};\n"],"names":["Confetti","ConfettiButton","meta","title","component","tags","parameters","layout","Default","render","div","className","WithOptions","options","particleCount","spread","colors"],"mappings":";AACA,SAAQA,QAAQ,EAAEC,cAAc,QAAO,aAAa;AAEpD,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWJ;IACXK,MAAM;QAAC;KAAW;IAClBC,YAAY;QACVC,QAAQ;IACV;AACF;AAEA,eAAeL,KAAK;AAGpB,OAAO,MAAMM,UAAiB;IAC5BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACV;0BAAe;;;AAGtB,EAAE;AAEF,OAAO,MAAMW,cAAqB;IAChCH,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACV;gBACCY,SAAS;oBACPC,eAAe;oBACfC,QAAQ;oBACRC,QAAQ;wBAAC;wBAAW;wBAAW;wBAAW;qBAAU;gBACtD;0BACD;;;AAKP,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/confetti/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/confetti/index.ts"],"sourcesContent":["export * from './confetti';\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
@@ -1,2 +0,0 @@
1
- export declare function AnalyticsContent(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=analytics-content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics-content.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/analytics-content.tsx"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,4CAiG/B"}
@@ -1,180 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Icon } from '../../../components/icon/index.js';
3
- import { Skeleton } from '../../../components/skeleton/index.js';
4
- import { Text } from '../../../components/typography/index.js';
5
- export function AnalyticsContent() {
6
- return /*#__PURE__*/ _jsxs("div", {
7
- className: "min-h-[calc(100vh-48px)] p-12 md:p-24 space-y-16 md:space-y-20 bg-background-neutral-base",
8
- children: [
9
- /*#__PURE__*/ _jsxs("div", {
10
- className: "flex flex-col md:flex-row items-start md:items-center justify-between gap-12 md:gap-0",
11
- children: [
12
- /*#__PURE__*/ _jsx(Skeleton, {
13
- className: "h-28 md:h-32 w-120 md:w-160"
14
- }),
15
- /*#__PURE__*/ _jsxs("div", {
16
- className: "flex items-center gap-8 md:gap-16",
17
- children: [
18
- /*#__PURE__*/ _jsx(Skeleton, {
19
- className: "h-28 md:h-32 w-80 md:w-100"
20
- }),
21
- /*#__PURE__*/ _jsx(Skeleton, {
22
- className: "h-28 md:h-32 w-100 md:w-160"
23
- })
24
- ]
25
- })
26
- ]
27
- }),
28
- /*#__PURE__*/ _jsx("div", {
29
- className: "flex gap-12 md:gap-16 overflow-x-auto scrollbar pb-4 md:pb-0 -mx-12 px-12 md:mx-0 md:px-0",
30
- children: [
31
- 'Total',
32
- 'Success',
33
- 'Failed',
34
- 'Neutral',
35
- 'Failure rate'
36
- ].map((label)=>/*#__PURE__*/ _jsxs("div", {
37
- className: "shrink-0 w-100 md:w-auto md:flex-1 p-12 rounded-8 bg-background-neutral-base border border-border-neutral-base",
38
- children: [
39
- /*#__PURE__*/ _jsx("p", {
40
- className: "text-xs text-foreground-neutral-subtle mb-4",
41
- children: label
42
- }),
43
- /*#__PURE__*/ _jsx(Skeleton, {
44
- className: "h-20 w-40"
45
- })
46
- ]
47
- }, label))
48
- }),
49
- /*#__PURE__*/ _jsxs("div", {
50
- className: "flex flex-col md:flex-row gap-16 md:gap-20",
51
- children: [
52
- /*#__PURE__*/ _jsxs("div", {
53
- className: "flex-1 p-12 rounded-8 bg-background-neutral-base border border-border-neutral-base",
54
- children: [
55
- /*#__PURE__*/ _jsx("p", {
56
- className: "text-sm font-medium text-foreground-neutral-base mb-12",
57
- children: "Performance over time"
58
- }),
59
- /*#__PURE__*/ _jsx("div", {
60
- className: "h-120 md:h-160 flex items-center justify-center",
61
- children: /*#__PURE__*/ _jsxs("div", {
62
- className: "text-center",
63
- children: [
64
- /*#__PURE__*/ _jsx(Icon, {
65
- name: "fileChartLine",
66
- className: "size-24 text-foreground-neutral-muted mx-auto mb-8"
67
- }),
68
- /*#__PURE__*/ _jsx("p", {
69
- className: "text-sm text-foreground-neutral-subtle",
70
- children: "Nothing here yet."
71
- })
72
- ]
73
- })
74
- })
75
- ]
76
- }),
77
- /*#__PURE__*/ _jsxs("div", {
78
- className: "flex-1 p-12 rounded-8 bg-background-neutral-base border border-border-neutral-base",
79
- children: [
80
- /*#__PURE__*/ _jsx("p", {
81
- className: "text-sm font-medium text-foreground-neutral-base mb-12",
82
- children: "Duration distribution"
83
- }),
84
- /*#__PURE__*/ _jsx("div", {
85
- className: "h-120 md:h-160 flex items-center justify-center",
86
- children: /*#__PURE__*/ _jsxs("div", {
87
- className: "text-center",
88
- children: [
89
- /*#__PURE__*/ _jsx(Icon, {
90
- name: "barChartBoxLine",
91
- className: "size-24 text-foreground-neutral-muted mx-auto mb-8"
92
- }),
93
- /*#__PURE__*/ _jsx("p", {
94
- className: "text-sm text-foreground-neutral-subtle",
95
- children: "Nothing here yet."
96
- })
97
- ]
98
- })
99
- })
100
- ]
101
- })
102
- ]
103
- }),
104
- /*#__PURE__*/ _jsxs("div", {
105
- className: "rounded-8 bg-background-neutral-base border border-border-neutral-base overflow-hidden",
106
- children: [
107
- /*#__PURE__*/ _jsxs("div", {
108
- className: "flex flex-col md:flex-row items-start md:items-center justify-between p-12 gap-12 md:gap-0 border-b border-border-neutral-strong",
109
- children: [
110
- /*#__PURE__*/ _jsx("p", {
111
- className: "text-sm font-medium text-foreground-neutral-base",
112
- children: "Jobs breakdown"
113
- }),
114
- /*#__PURE__*/ _jsxs("div", {
115
- className: "flex items-center gap-8 md:gap-16 w-full md:w-auto",
116
- children: [
117
- /*#__PURE__*/ _jsx(Skeleton, {
118
- className: "h-28 flex-1 md:flex-none md:w-200"
119
- }),
120
- /*#__PURE__*/ _jsx(Skeleton, {
121
- className: "h-28 w-28 shrink-0"
122
- })
123
- ]
124
- })
125
- ]
126
- }),
127
- /*#__PURE__*/ _jsxs("div", {
128
- className: "py-48 md:py-64 flex flex-col items-center justify-center gap-12",
129
- children: [
130
- /*#__PURE__*/ _jsx("div", {
131
- className: "size-32 rounded-6 bg-transparent border border-border-neutral-strong flex items-center justify-center",
132
- children: /*#__PURE__*/ _jsx(Icon, {
133
- name: "shipfox",
134
- className: "size-16 text-foreground-neutral-subtle",
135
- color: "var(--foreground-neutral-subtle, #a1a1aa)"
136
- })
137
- }),
138
- /*#__PURE__*/ _jsxs("div", {
139
- className: "text-center space-y-4 px-16",
140
- children: [
141
- /*#__PURE__*/ _jsx(Text, {
142
- size: "sm",
143
- className: "text-foreground-neutral-base",
144
- children: "No jobs yet"
145
- }),
146
- /*#__PURE__*/ _jsx(Text, {
147
- size: "xs",
148
- className: "text-foreground-neutral-muted",
149
- children: "Import past runs or start a runner."
150
- })
151
- ]
152
- })
153
- ]
154
- })
155
- ]
156
- }),
157
- /*#__PURE__*/ _jsx("div", {
158
- className: "space-y-16",
159
- children: Array.from({
160
- length: 3
161
- }).map((_, i)=>{
162
- const blockId = `analytics-extra-block-${i}`;
163
- return /*#__PURE__*/ _jsxs("div", {
164
- className: "p-12 md:p-16 rounded-8 bg-background-subtle-base border border-border-neutral-strong",
165
- children: [
166
- /*#__PURE__*/ _jsx(Skeleton, {
167
- className: "h-16 w-full max-w-400 mb-8"
168
- }),
169
- /*#__PURE__*/ _jsx(Skeleton, {
170
- className: "h-12 w-full max-w-600"
171
- })
172
- ]
173
- }, blockId);
174
- })
175
- })
176
- ]
177
- });
178
- }
179
-
180
- //# sourceMappingURL=analytics-content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/analytics-content.tsx"],"sourcesContent":["import {Icon} from 'components/icon';\nimport {Skeleton} from 'components/skeleton';\nimport {Text} from 'components/typography';\n\nexport function AnalyticsContent() {\n return (\n <div className=\"min-h-[calc(100vh-48px)] p-12 md:p-24 space-y-16 md:space-y-20 bg-background-neutral-base\">\n <div className=\"flex flex-col md:flex-row items-start md:items-center justify-between gap-12 md:gap-0\">\n <Skeleton className=\"h-28 md:h-32 w-120 md:w-160\" />\n <div className=\"flex items-center gap-8 md:gap-16\">\n <Skeleton className=\"h-28 md:h-32 w-80 md:w-100\" />\n <Skeleton className=\"h-28 md:h-32 w-100 md:w-160\" />\n </div>\n </div>\n\n <div className=\"flex gap-12 md:gap-16 overflow-x-auto scrollbar pb-4 md:pb-0 -mx-12 px-12 md:mx-0 md:px-0\">\n {['Total', 'Success', 'Failed', 'Neutral', 'Failure rate'].map((label) => (\n <div\n key={label}\n className=\"shrink-0 w-100 md:w-auto md:flex-1 p-12 rounded-8 bg-background-neutral-base border border-border-neutral-base\"\n >\n <p className=\"text-xs text-foreground-neutral-subtle mb-4\">{label}</p>\n <Skeleton className=\"h-20 w-40\" />\n </div>\n ))}\n </div>\n\n <div className=\"flex flex-col md:flex-row gap-16 md:gap-20\">\n <div className=\"flex-1 p-12 rounded-8 bg-background-neutral-base border border-border-neutral-base\">\n <p className=\"text-sm font-medium text-foreground-neutral-base mb-12\">\n Performance over time\n </p>\n <div className=\"h-120 md:h-160 flex items-center justify-center\">\n <div className=\"text-center\">\n <Icon\n name=\"fileChartLine\"\n className=\"size-24 text-foreground-neutral-muted mx-auto mb-8\"\n />\n <p className=\"text-sm text-foreground-neutral-subtle\">Nothing here yet.</p>\n </div>\n </div>\n </div>\n <div className=\"flex-1 p-12 rounded-8 bg-background-neutral-base border border-border-neutral-base\">\n <p className=\"text-sm font-medium text-foreground-neutral-base mb-12\">\n Duration distribution\n </p>\n <div className=\"h-120 md:h-160 flex items-center justify-center\">\n <div className=\"text-center\">\n <Icon\n name=\"barChartBoxLine\"\n className=\"size-24 text-foreground-neutral-muted mx-auto mb-8\"\n />\n <p className=\"text-sm text-foreground-neutral-subtle\">Nothing here yet.</p>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"rounded-8 bg-background-neutral-base border border-border-neutral-base overflow-hidden\">\n <div className=\"flex flex-col md:flex-row items-start md:items-center justify-between p-12 gap-12 md:gap-0 border-b border-border-neutral-strong\">\n <p className=\"text-sm font-medium text-foreground-neutral-base\">Jobs breakdown</p>\n <div className=\"flex items-center gap-8 md:gap-16 w-full md:w-auto\">\n <Skeleton className=\"h-28 flex-1 md:flex-none md:w-200\" />\n <Skeleton className=\"h-28 w-28 shrink-0\" />\n </div>\n </div>\n <div className=\"py-48 md:py-64 flex flex-col items-center justify-center gap-12\">\n <div className=\"size-32 rounded-6 bg-transparent border border-border-neutral-strong flex items-center justify-center\">\n <Icon\n name=\"shipfox\"\n className=\"size-16 text-foreground-neutral-subtle\"\n color=\"var(--foreground-neutral-subtle, #a1a1aa)\"\n />\n </div>\n <div className=\"text-center space-y-4 px-16\">\n <Text size=\"sm\" className=\"text-foreground-neutral-base\">\n No jobs yet\n </Text>\n <Text size=\"xs\" className=\"text-foreground-neutral-muted\">\n Import past runs or start a runner.\n </Text>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-16\">\n {Array.from({length: 3}).map((_, i) => {\n const blockId = `analytics-extra-block-${i}`;\n return (\n <div\n key={blockId}\n className=\"p-12 md:p-16 rounded-8 bg-background-subtle-base border border-border-neutral-strong\"\n >\n <Skeleton className=\"h-16 w-full max-w-400 mb-8\" />\n <Skeleton className=\"h-12 w-full max-w-600\" />\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"names":["Icon","Skeleton","Text","AnalyticsContent","div","className","map","label","p","name","color","size","Array","from","length","_","i","blockId"],"mappings":";AAAA,SAAQA,IAAI,QAAO,kBAAkB;AACrC,SAAQC,QAAQ,QAAO,sBAAsB;AAC7C,SAAQC,IAAI,QAAO,wBAAwB;AAE3C,OAAO,SAASC;IACd,qBACE,MAACC;QAAIC,WAAU;;0BACb,MAACD;gBAAIC,WAAU;;kCACb,KAACJ;wBAASI,WAAU;;kCACpB,MAACD;wBAAIC,WAAU;;0CACb,KAACJ;gCAASI,WAAU;;0CACpB,KAACJ;gCAASI,WAAU;;;;;;0BAIxB,KAACD;gBAAIC,WAAU;0BACZ;oBAAC;oBAAS;oBAAW;oBAAU;oBAAW;iBAAe,CAACC,GAAG,CAAC,CAACC,sBAC9D,MAACH;wBAECC,WAAU;;0CAEV,KAACG;gCAAEH,WAAU;0CAA+CE;;0CAC5D,KAACN;gCAASI,WAAU;;;uBAJfE;;0BASX,MAACH;gBAAIC,WAAU;;kCACb,MAACD;wBAAIC,WAAU;;0CACb,KAACG;gCAAEH,WAAU;0CAAyD;;0CAGtE,KAACD;gCAAIC,WAAU;0CACb,cAAA,MAACD;oCAAIC,WAAU;;sDACb,KAACL;4CACCS,MAAK;4CACLJ,WAAU;;sDAEZ,KAACG;4CAAEH,WAAU;sDAAyC;;;;;;;kCAI5D,MAACD;wBAAIC,WAAU;;0CACb,KAACG;gCAAEH,WAAU;0CAAyD;;0CAGtE,KAACD;gCAAIC,WAAU;0CACb,cAAA,MAACD;oCAAIC,WAAU;;sDACb,KAACL;4CACCS,MAAK;4CACLJ,WAAU;;sDAEZ,KAACG;4CAAEH,WAAU;sDAAyC;;;;;;;;;0BAM9D,MAACD;gBAAIC,WAAU;;kCACb,MAACD;wBAAIC,WAAU;;0CACb,KAACG;gCAAEH,WAAU;0CAAmD;;0CAChE,MAACD;gCAAIC,WAAU;;kDACb,KAACJ;wCAASI,WAAU;;kDACpB,KAACJ;wCAASI,WAAU;;;;;;kCAGxB,MAACD;wBAAIC,WAAU;;0CACb,KAACD;gCAAIC,WAAU;0CACb,cAAA,KAACL;oCACCS,MAAK;oCACLJ,WAAU;oCACVK,OAAM;;;0CAGV,MAACN;gCAAIC,WAAU;;kDACb,KAACH;wCAAKS,MAAK;wCAAKN,WAAU;kDAA+B;;kDAGzD,KAACH;wCAAKS,MAAK;wCAAKN,WAAU;kDAAgC;;;;;;;;0BAOhE,KAACD;gBAAIC,WAAU;0BACZO,MAAMC,IAAI,CAAC;oBAACC,QAAQ;gBAAC,GAAGR,GAAG,CAAC,CAACS,GAAGC;oBAC/B,MAAMC,UAAU,CAAC,sBAAsB,EAAED,GAAG;oBAC5C,qBACE,MAACZ;wBAECC,WAAU;;0CAEV,KAACJ;gCAASI,WAAU;;0CACpB,KAACJ;gCAASI,WAAU;;;uBAJfY;gBAOX;;;;AAIR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"animated-logo.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/animated-logo.tsx"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,EAAC,cAAc,EAAC,EAAE;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,kDAmBtE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/animated-logo.tsx"],"sourcesContent":["import {Icon} from 'components/icon';\nimport {motion} from 'framer-motion';\n\nconst LOGO_HEIGHT = 48;\n\nexport function AnimatedLogo({scrollProgress}: {scrollProgress: number}) {\n const isVisible = scrollProgress > 0;\n\n if (!isVisible) return null;\n\n const easedProgress = 1 - (1 - scrollProgress) ** 3;\n\n return (\n <motion.div\n className=\"fixed top-0 left-0 z-50 flex items-center justify-center shrink-0 w-48 h-48 bg-background-neutral-base\"\n style={{\n opacity: easedProgress,\n transform: `translateY(${-LOGO_HEIGHT + easedProgress * LOGO_HEIGHT}px)`,\n }}\n initial={false}\n >\n <Icon name=\"shipfox\" className=\"size-20 text-foreground-neutral-subtle\" />\n </motion.div>\n );\n}\n"],"names":["Icon","motion","LOGO_HEIGHT","AnimatedLogo","scrollProgress","isVisible","easedProgress","div","className","style","opacity","transform","initial","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,kBAAkB;AACrC,SAAQC,MAAM,QAAO,gBAAgB;AAErC,MAAMC,cAAc;AAEpB,OAAO,SAASC,aAAa,EAACC,cAAc,EAA2B;IACrE,MAAMC,YAAYD,iBAAiB;IAEnC,IAAI,CAACC,WAAW,OAAO;IAEvB,MAAMC,gBAAgB,IAAI,AAAC,CAAA,IAAIF,cAAa,KAAM;IAElD,qBACE,KAACH,OAAOM,GAAG;QACTC,WAAU;QACVC,OAAO;YACLC,SAASJ;YACTK,WAAW,CAAC,WAAW,EAAE,CAACT,cAAcI,gBAAgBJ,YAAY,GAAG,CAAC;QAC1E;QACAU,SAAS;kBAET,cAAA,KAACZ;YAAKa,MAAK;YAAUL,WAAU;;;AAGrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"complete-setup-button.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/complete-setup-button.tsx"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,CAAC,EAAC,SAAS,EAAC,EAAE;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,2CAuBpE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/complete-setup-button.tsx"],"sourcesContent":["import {Button} from 'components/button';\nimport {ShinyText} from 'components/shiny-text';\nimport {useResolvedTheme} from 'hooks/useResolvedTheme';\nimport {ShipfoxLoader} from 'shipfox-loader-react';\nimport {cn} from 'utils/cn';\n\nexport function CompleteSetupButton({className}: {className?: string}) {\n const resolvedTheme = useResolvedTheme();\n return (\n <Button\n type=\"button\"\n variant=\"transparent\"\n className={cn(\n 'flex items-center gap-8 min-w-124 max-w-280 overflow-hidden px-12 py-10 transition-colors rounded-none h-40 border-l border-border-neutral-strong',\n className,\n )}\n >\n <ShipfoxLoader\n size={13}\n animation=\"circular\"\n color={resolvedTheme === 'dark' ? 'white' : 'orange'}\n background={resolvedTheme === 'dark' ? 'dark' : 'light'}\n />\n <ShinyText\n text=\"Complete setup\"\n className=\"flex-1 text-sm font-medium leading-20 text-foreground-neutral-base truncate text-left\"\n />\n </Button>\n );\n}\n"],"names":["Button","ShinyText","useResolvedTheme","ShipfoxLoader","cn","CompleteSetupButton","className","resolvedTheme","type","variant","size","animation","color","background","text"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,SAAS,QAAO,wBAAwB;AAChD,SAAQC,gBAAgB,QAAO,yBAAyB;AACxD,SAAQC,aAAa,QAAO,uBAAuB;AACnD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,SAASC,oBAAoB,EAACC,SAAS,EAAuB;IACnE,MAAMC,gBAAgBL;IACtB,qBACE,MAACF;QACCQ,MAAK;QACLC,SAAQ;QACRH,WAAWF,GACT,qJACAE;;0BAGF,KAACH;gBACCO,MAAM;gBACNC,WAAU;gBACVC,OAAOL,kBAAkB,SAAS,UAAU;gBAC5CM,YAAYN,kBAAkB,SAAS,SAAS;;0BAElD,KAACN;gBACCa,MAAK;gBACLR,WAAU;;;;AAIlB"}
@@ -1,2 +0,0 @@
1
- export declare function JobsContent(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=jobs-content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jobs-content.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/jobs-content.tsx"],"names":[],"mappings":"AASA,wBAAgB,WAAW,4CAyC1B"}
@@ -1,69 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button } from '../../../components/button/index.js';
3
- import { Icon } from '../../../components/icon/index.js';
4
- import { SearchInline } from '../../../components/search/search-inline.js';
5
- import { DataTable } from '../../../components/table/data-table.js';
6
- import { jobColumns } from '../../../components/table/table.stories.columns.js';
7
- import { jobsData } from '../../../components/table/table.stories.data.js';
8
- import { Header as TypographyHeader } from '../../../components/typography/index.js';
9
- import { useMemo, useState } from 'react';
10
- export function JobsContent() {
11
- const [searchQuery, setSearchQuery] = useState('');
12
- const filteredData = useMemo(()=>jobsData.filter((job)=>job.name.toLowerCase().includes(searchQuery.toLowerCase())), [
13
- searchQuery
14
- ]);
15
- return /*#__PURE__*/ _jsx("div", {
16
- className: "min-h-[calc(100vh-48px)] p-12 md:p-24 bg-background-neutral-base",
17
- children: /*#__PURE__*/ _jsxs("div", {
18
- className: "rounded-t-8 overflow-hidden",
19
- children: [
20
- /*#__PURE__*/ _jsxs("div", {
21
- className: "flex flex-col md:flex-row md:items-center md:justify-between gap-12 md:gap-0 p-12 border-t border-x border-border-neutral-base rounded-t-8 bg-background-neutral-base",
22
- children: [
23
- /*#__PURE__*/ _jsx(TypographyHeader, {
24
- variant: "h3",
25
- className: "text-foreground-neutral-base",
26
- children: "Jobs breakdown"
27
- }),
28
- /*#__PURE__*/ _jsxs("div", {
29
- className: "flex items-center gap-8 md:gap-16 w-full md:w-auto",
30
- children: [
31
- /*#__PURE__*/ _jsx(SearchInline, {
32
- placeholder: "Search...",
33
- value: searchQuery,
34
- onChange: (e)=>setSearchQuery(e.target.value),
35
- onClear: ()=>setSearchQuery(''),
36
- className: "flex-1 md:w-240"
37
- }),
38
- /*#__PURE__*/ _jsx(Button, {
39
- variant: "secondary",
40
- "aria-label": "Insert column left",
41
- className: "shrink-0",
42
- children: /*#__PURE__*/ _jsx(Icon, {
43
- name: "insertColumnLeft",
44
- className: "size-16 text-foreground-neutral-subtle"
45
- })
46
- })
47
- ]
48
- })
49
- ]
50
- }),
51
- /*#__PURE__*/ _jsx(DataTable, {
52
- columns: jobColumns,
53
- data: filteredData,
54
- pagination: true,
55
- pageSize: 10,
56
- pageSizeOptions: [
57
- 10,
58
- 20,
59
- 50,
60
- 100
61
- ],
62
- className: "rounded-t-none"
63
- })
64
- ]
65
- })
66
- });
67
- }
68
-
69
- //# sourceMappingURL=jobs-content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/jobs-content.tsx"],"sourcesContent":["import {Button} from 'components/button';\nimport {Icon} from 'components/icon';\nimport {SearchInline} from 'components/search/search-inline';\nimport {DataTable} from 'components/table/data-table';\nimport {jobColumns} from 'components/table/table.stories.columns';\nimport {jobsData} from 'components/table/table.stories.data';\nimport {Header as TypographyHeader} from 'components/typography';\nimport {useMemo, useState} from 'react';\n\nexport function JobsContent() {\n const [searchQuery, setSearchQuery] = useState('');\n\n const filteredData = useMemo(\n () => jobsData.filter((job) => job.name.toLowerCase().includes(searchQuery.toLowerCase())),\n [searchQuery],\n );\n\n return (\n <div className=\"min-h-[calc(100vh-48px)] p-12 md:p-24 bg-background-neutral-base\">\n <div className=\"rounded-t-8 overflow-hidden\">\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between gap-12 md:gap-0 p-12 border-t border-x border-border-neutral-base rounded-t-8 bg-background-neutral-base\">\n <TypographyHeader variant=\"h3\" className=\"text-foreground-neutral-base\">\n Jobs breakdown\n </TypographyHeader>\n\n <div className=\"flex items-center gap-8 md:gap-16 w-full md:w-auto\">\n <SearchInline\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onClear={() => setSearchQuery('')}\n className=\"flex-1 md:w-240\"\n />\n <Button variant=\"secondary\" aria-label=\"Insert column left\" className=\"shrink-0\">\n <Icon name=\"insertColumnLeft\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </div>\n </div>\n\n <DataTable\n columns={jobColumns}\n data={filteredData}\n pagination={true}\n pageSize={10}\n pageSizeOptions={[10, 20, 50, 100]}\n className=\"rounded-t-none\"\n />\n </div>\n </div>\n );\n}\n"],"names":["Button","Icon","SearchInline","DataTable","jobColumns","jobsData","Header","TypographyHeader","useMemo","useState","JobsContent","searchQuery","setSearchQuery","filteredData","filter","job","name","toLowerCase","includes","div","className","variant","placeholder","value","onChange","e","target","onClear","aria-label","columns","data","pagination","pageSize","pageSizeOptions"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,IAAI,QAAO,kBAAkB;AACrC,SAAQC,YAAY,QAAO,kCAAkC;AAC7D,SAAQC,SAAS,QAAO,8BAA8B;AACtD,SAAQC,UAAU,QAAO,yCAAyC;AAClE,SAAQC,QAAQ,QAAO,sCAAsC;AAC7D,SAAQC,UAAUC,gBAAgB,QAAO,wBAAwB;AACjE,SAAQC,OAAO,EAAEC,QAAQ,QAAO,QAAQ;AAExC,OAAO,SAASC;IACd,MAAM,CAACC,aAAaC,eAAe,GAAGH,SAAS;IAE/C,MAAMI,eAAeL,QACnB,IAAMH,SAASS,MAAM,CAAC,CAACC,MAAQA,IAAIC,IAAI,CAACC,WAAW,GAAGC,QAAQ,CAACP,YAAYM,WAAW,MACtF;QAACN;KAAY;IAGf,qBACE,KAACQ;QAAIC,WAAU;kBACb,cAAA,MAACD;YAAIC,WAAU;;8BACb,MAACD;oBAAIC,WAAU;;sCACb,KAACb;4BAAiBc,SAAQ;4BAAKD,WAAU;sCAA+B;;sCAIxE,MAACD;4BAAIC,WAAU;;8CACb,KAAClB;oCACCoB,aAAY;oCACZC,OAAOZ;oCACPa,UAAU,CAACC,IAAMb,eAAea,EAAEC,MAAM,CAACH,KAAK;oCAC9CI,SAAS,IAAMf,eAAe;oCAC9BQ,WAAU;;8CAEZ,KAACpB;oCAAOqB,SAAQ;oCAAYO,cAAW;oCAAqBR,WAAU;8CACpE,cAAA,KAACnB;wCAAKe,MAAK;wCAAmBI,WAAU;;;;;;;8BAK9C,KAACjB;oBACC0B,SAASzB;oBACT0B,MAAMjB;oBACNkB,YAAY;oBACZC,UAAU;oBACVC,iBAAiB;wBAAC;wBAAI;wBAAI;wBAAI;qBAAI;oBAClCb,WAAU;;;;;AAKpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mobile-menu.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/mobile-menu.tsx"],"names":[],"mappings":"AAaA,wBAAgB,UAAU,4CAoCzB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/mobile-menu.tsx"],"sourcesContent":["import {Button} from 'components/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'components/dropdown-menu';\nimport {Icon} from 'components/icon';\nimport {ShinyText} from 'components/shiny-text';\nimport {useResolvedTheme} from 'hooks/useResolvedTheme';\nimport {ShipfoxLoader} from 'shipfox-loader-react';\n\nexport function MobileMenu() {\n const resolvedTheme = useResolvedTheme();\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"transparent\"\n className=\"flex md:hidden items-center justify-center shrink-0 w-40 h-40 bg-background-subtle-base hover:bg-background-neutral-hover transition-colors rounded-none border-l border-border-neutral-strong\"\n aria-label=\"Menu\"\n >\n <Icon name=\"menuLine\" className=\"size-18 text-foreground-neutral-subtle\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-200\">\n <DropdownMenuItem>\n <div className=\"flex items-center gap-8\">\n <ShipfoxLoader\n size={13}\n animation=\"circular\"\n color={resolvedTheme === 'dark' ? 'white' : 'orange'}\n background={resolvedTheme === 'dark' ? 'dark' : 'light'}\n />\n <ShinyText\n text=\"Complete setup\"\n className=\"flex-1 text-sm font-medium leading-20 text-foreground-neutral-base truncate text-left\"\n />\n </div>\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem icon=\"searchLine\">Search</DropdownMenuItem>\n <DropdownMenuItem icon=\"questionLine\">Help</DropdownMenuItem>\n <DropdownMenuItem icon=\"notification3Line\">Notifications</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["Button","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","Icon","ShinyText","useResolvedTheme","ShipfoxLoader","MobileMenu","resolvedTheme","asChild","type","variant","className","aria-label","name","align","div","size","animation","color","background","text","icon"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SACEC,YAAY,EACZC,mBAAmB,EACnBC,gBAAgB,EAChBC,qBAAqB,EACrBC,mBAAmB,QACd,2BAA2B;AAClC,SAAQC,IAAI,QAAO,kBAAkB;AACrC,SAAQC,SAAS,QAAO,wBAAwB;AAChD,SAAQC,gBAAgB,QAAO,yBAAyB;AACxD,SAAQC,aAAa,QAAO,uBAAuB;AAEnD,OAAO,SAASC;IACd,MAAMC,gBAAgBH;IACtB,qBACE,MAACP;;0BACC,KAACI;gBAAoBO,OAAO;0BAC1B,cAAA,KAACZ;oBACCa,MAAK;oBACLC,SAAQ;oBACRC,WAAU;oBACVC,cAAW;8BAEX,cAAA,KAACV;wBAAKW,MAAK;wBAAWF,WAAU;;;;0BAGpC,MAACb;gBAAoBgB,OAAM;gBAAMH,WAAU;;kCACzC,KAACZ;kCACC,cAAA,MAACgB;4BAAIJ,WAAU;;8CACb,KAACN;oCACCW,MAAM;oCACNC,WAAU;oCACVC,OAAOX,kBAAkB,SAAS,UAAU;oCAC5CY,YAAYZ,kBAAkB,SAAS,SAAS;;8CAElD,KAACJ;oCACCiB,MAAK;oCACLT,WAAU;;;;;kCAIhB,KAACX;kCACD,KAACD;wBAAiBsB,MAAK;kCAAa;;kCACpC,KAACtB;wBAAiBsB,MAAK;kCAAe;;kCACtC,KAACtB;wBAAiBsB,MAAK;kCAAoB;;;;;;AAInD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"organization-selector.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/organization-selector.tsx"],"names":[],"mappings":"AAYA,wBAAgB,oBAAoB,4CAsCnC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/organization-selector.tsx"],"sourcesContent":["import {Avatar} from 'components/avatar';\nimport {Button} from 'components/button';\nimport {Icon} from 'components/icon';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from 'components/select';\n\nexport function OrganizationSelector() {\n return (\n <Select defaultValue=\"stripe\">\n <SelectTrigger className=\"w-200 h-40 shadow-none bg-background-neutral-base hover:bg-background-neutral-hover rounded-none gap-8 pl-12 border-l min-[321px]:border-r border-border-neutral-strong\">\n <div className=\"flex items-center gap-8 flex-1 min-w-0\">\n <SelectValue placeholder=\"Select organization\" />\n </div>\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"stripe\">\n <div className=\"flex items-center gap-8\">\n <Avatar size=\"3xs\" content=\"logo\" logoName=\"stripe\" radius=\"rounded\" />\n <span>Stripe</span>\n </div>\n </SelectItem>\n <SelectItem value=\"shipfox\">\n <div className=\"flex items-center gap-8\">\n <Avatar size=\"3xs\" content=\"logo\" logoName=\"shipfox\" radius=\"rounded\" />\n <span>Shipfox</span>\n </div>\n </SelectItem>\n <SelectItem value=\"github\">\n <div className=\"flex items-center gap-8\">\n <Avatar size=\"3xs\" content=\"logo\" logoName=\"github\" radius=\"rounded\" />\n <span>GitHub</span>\n </div>\n </SelectItem>\n <SelectSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-full justify-start text-foreground-neutral-subtle\"\n >\n <Icon name=\"addLine\" className=\"size-16 shrink-0\" />\n <span>New organization</span>\n </Button>\n </SelectContent>\n </Select>\n );\n}\n"],"names":["Avatar","Button","Icon","Select","SelectContent","SelectItem","SelectSeparator","SelectTrigger","SelectValue","OrganizationSelector","defaultValue","className","div","placeholder","value","size","content","logoName","radius","span","variant","name"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,MAAM,QAAO,oBAAoB;AACzC,SAAQC,IAAI,QAAO,kBAAkB;AACrC,SACEC,MAAM,EACNC,aAAa,EACbC,UAAU,EACVC,eAAe,EACfC,aAAa,EACbC,WAAW,QACN,oBAAoB;AAE3B,OAAO,SAASC;IACd,qBACE,MAACN;QAAOO,cAAa;;0BACnB,KAACH;gBAAcI,WAAU;0BACvB,cAAA,KAACC;oBAAID,WAAU;8BACb,cAAA,KAACH;wBAAYK,aAAY;;;;0BAG7B,MAACT;;kCACC,KAACC;wBAAWS,OAAM;kCAChB,cAAA,MAACF;4BAAID,WAAU;;8CACb,KAACX;oCAAOe,MAAK;oCAAMC,SAAQ;oCAAOC,UAAS;oCAASC,QAAO;;8CAC3D,KAACC;8CAAK;;;;;kCAGV,KAACd;wBAAWS,OAAM;kCAChB,cAAA,MAACF;4BAAID,WAAU;;8CACb,KAACX;oCAAOe,MAAK;oCAAMC,SAAQ;oCAAOC,UAAS;oCAAUC,QAAO;;8CAC5D,KAACC;8CAAK;;;;;kCAGV,KAACd;wBAAWS,OAAM;kCAChB,cAAA,MAACF;4BAAID,WAAU;;8CACb,KAACX;oCAAOe,MAAK;oCAAMC,SAAQ;oCAAOC,UAAS;oCAASC,QAAO;;8CAC3D,KAACC;8CAAK;;;;;kCAGV,KAACb;kCACD,MAACL;wBACCmB,SAAQ;wBACRT,WAAU;;0CAEV,KAACT;gCAAKmB,MAAK;gCAAUV,WAAU;;0CAC/B,KAACQ;0CAAK;;;;;;;;AAKhB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"top-menu.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/top-menu.tsx"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,WAAW,GACZ,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,2CAiBA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/top-menu.tsx"],"sourcesContent":["import {Tabs, TabsList, TabsTrigger} from 'components/tabs';\n\nexport function TopMenu({\n activeTab,\n onTabChange,\n}: {\n activeTab: string;\n onTabChange: (tab: string) => void;\n}) {\n return (\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center flex-1 min-w-0 pl-12 md:pl-20 pr-8\">\n <Tabs value={activeTab} onValueChange={onTabChange}>\n <TabsList className=\"h-48 gap-8 md:gap-12\">\n <TabsTrigger value=\"analytics\" className=\"text-sm font-medium\">\n Analytics\n </TabsTrigger>\n <TabsTrigger value=\"jobs\" className=\"text-sm font-medium\">\n Jobs\n </TabsTrigger>\n </TabsList>\n </Tabs>\n </div>\n </div>\n );\n}\n"],"names":["Tabs","TabsList","TabsTrigger","TopMenu","activeTab","onTabChange","div","className","value","onValueChange"],"mappings":";AAAA,SAAQA,IAAI,EAAEC,QAAQ,EAAEC,WAAW,QAAO,kBAAkB;AAE5D,OAAO,SAASC,QAAQ,EACtBC,SAAS,EACTC,WAAW,EAIZ;IACC,qBACE,KAACC;QAAIC,WAAU;kBACb,cAAA,KAACD;YAAIC,WAAU;sBACb,cAAA,KAACP;gBAAKQ,OAAOJ;gBAAWK,eAAeJ;0BACrC,cAAA,MAACJ;oBAASM,WAAU;;sCAClB,KAACL;4BAAYM,OAAM;4BAAYD,WAAU;sCAAsB;;sCAG/D,KAACL;4BAAYM,OAAM;4BAAOD,WAAU;sCAAsB;;;;;;;AAQtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topbar-button.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/topbar-button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAGpD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,IAAI,EACJ,KAAK,GACN,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CAcA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/topbar-button.tsx"],"sourcesContent":["import {Button} from 'components/button';\nimport {Icon, type IconName} from 'components/icon';\nimport {cn} from 'utils/cn';\n\nexport function TopbarButton({\n className,\n icon,\n label,\n}: {\n className?: string;\n icon: IconName;\n label?: string;\n}) {\n return (\n <Button\n type=\"button\"\n variant=\"transparent\"\n className={cn(\n 'flex items-center justify-center overflow-hidden shrink-0 w-40 h-40 bg-background-subtle-base hover:bg-background-neutral-hover transition-colors rounded-none border-l border-border-neutral-strong',\n className,\n )}\n aria-label={label ?? undefined}\n >\n <Icon name={icon} className=\"size-18 text-foreground-neutral-subtle\" />\n </Button>\n );\n}\n"],"names":["Button","Icon","cn","TopbarButton","className","icon","label","type","variant","aria-label","undefined","name"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,IAAI,QAAsB,kBAAkB;AACpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,SAASC,aAAa,EAC3BC,SAAS,EACTC,IAAI,EACJC,KAAK,EAKN;IACC,qBACE,KAACN;QACCO,MAAK;QACLC,SAAQ;QACRJ,WAAWF,GACT,wMACAE;QAEFK,cAAYH,SAASI;kBAErB,cAAA,KAACT;YAAKU,MAAMN;YAAMD,WAAU;;;AAGlC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topbar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/topbar.tsx"],"names":[],"mappings":"AAOA,wBAAgB,MAAM,CAAC,EAAC,QAAgB,EAAC,EAAE;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAC,2CAgC9D"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/topbar.tsx"],"sourcesContent":["import {cn} from 'utils/cn';\nimport {CompleteSetupButton} from './complete-setup-button';\nimport {MobileMenu} from './mobile-menu';\nimport {OrganizationSelector} from './organization-selector';\nimport {TopbarButton} from './topbar-button';\nimport {UserProfile} from './user-profile';\n\nexport function Topbar({hideLogo = false}: {hideLogo?: boolean}) {\n return (\n <div className=\"flex flex-col items-start w-full bg-background-subtle-base\">\n <div className=\"flex items-center justify-between w-full shrink-0 border-b border-border-neutral-strong\">\n <div className=\"flex items-center flex-1 min-w-0\">\n <div className={cn('shrink-0', hideLogo ? 'opacity-0' : 'opacity-100')}>\n <TopbarButton icon=\"shipfox\" label=\"Shipfox\" className=\"border-none\" />\n </div>\n <OrganizationSelector />\n <div className=\"hidden md:block flex-1 h-40 bg-background-subtle-base\" />\n </div>\n\n <CompleteSetupButton className=\"hidden md:flex\" />\n\n <div className=\"hidden md:block\">\n <TopbarButton icon=\"searchLine\" label=\"Search\" />\n </div>\n\n <div className=\"hidden md:block\">\n <TopbarButton icon=\"questionLine\" label=\"Help\" />\n </div>\n\n <div className=\"hidden md:block\">\n <TopbarButton icon=\"notification3Line\" label=\"Notifications\" />\n </div>\n\n <MobileMenu />\n\n <UserProfile />\n </div>\n </div>\n );\n}\n"],"names":["cn","CompleteSetupButton","MobileMenu","OrganizationSelector","TopbarButton","UserProfile","Topbar","hideLogo","div","className","icon","label"],"mappings":";AAAA,SAAQA,EAAE,QAAO,WAAW;AAC5B,SAAQC,mBAAmB,QAAO,0BAA0B;AAC5D,SAAQC,UAAU,QAAO,gBAAgB;AACzC,SAAQC,oBAAoB,QAAO,0BAA0B;AAC7D,SAAQC,YAAY,QAAO,kBAAkB;AAC7C,SAAQC,WAAW,QAAO,iBAAiB;AAE3C,OAAO,SAASC,OAAO,EAACC,WAAW,KAAK,EAAuB;IAC7D,qBACE,KAACC;QAAIC,WAAU;kBACb,cAAA,MAACD;YAAIC,WAAU;;8BACb,MAACD;oBAAIC,WAAU;;sCACb,KAACD;4BAAIC,WAAWT,GAAG,YAAYO,WAAW,cAAc;sCACtD,cAAA,KAACH;gCAAaM,MAAK;gCAAUC,OAAM;gCAAUF,WAAU;;;sCAEzD,KAACN;sCACD,KAACK;4BAAIC,WAAU;;;;8BAGjB,KAACR;oBAAoBQ,WAAU;;8BAE/B,KAACD;oBAAIC,WAAU;8BACb,cAAA,KAACL;wBAAaM,MAAK;wBAAaC,OAAM;;;8BAGxC,KAACH;oBAAIC,WAAU;8BACb,cAAA,KAACL;wBAAaM,MAAK;wBAAeC,OAAM;;;8BAG1C,KAACH;oBAAIC,WAAU;8BACb,cAAA,KAACL;wBAAaM,MAAK;wBAAoBC,OAAM;;;8BAG/C,KAACT;8BAED,KAACG;;;;AAIT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/user-profile.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,WAAW,4CAmE1B"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/dashboard/components/user-profile.tsx"],"sourcesContent":["import {Avatar} from 'components/avatar';\nimport {UserBadge} from 'components/badge';\nimport {Button} from 'components/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'components/dropdown-menu';\nimport {ShinyText} from 'components/shiny-text';\n\nfunction UsageGauge({used, total}: {used: number; total: number}) {\n const percentage = total <= 0 ? 0 : Math.min((used / total) * 100, 100);\n\n return (\n <div className=\"flex h-8 w-full rounded-full bg-tag-neutral-bg overflow-hidden\">\n <div className=\"h-full bg-tag-success-icon rounded-l-2\" style={{width: `${percentage}%`}} />\n </div>\n );\n}\n\nexport function UserProfile() {\n const userName = 'Thierry Abalea';\n const userEmail = 'thierryabalea@acme.com';\n const creditsUsed = 3213;\n const creditsTotal = 6000;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <div className=\"flex items-center justify-center h-40 px-8 cursor-pointer border-l border-border-neutral-strong\">\n <Avatar className=\"size-24 md:hidden\" content=\"image\" fallback=\"TA\" />\n <UserBadge name={userName} className=\"hidden md:inline-flex\" />\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-220\">\n <div className=\"flex items-center gap-12 px-8 py-4\">\n <Avatar className=\"size-28 shrink-0\" content=\"image\" fallback=\"TA\" />\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm font-medium leading-20 text-foreground-neutral-base truncate\">\n {userName}\n </span>\n <span className=\"text-xs leading-20 text-foreground-neutral-subtle truncate\">\n {userEmail}\n </span>\n </div>\n </div>\n\n <DropdownMenuSeparator />\n\n <DropdownMenuItem icon=\"sparkling2Fill\">Getting started</DropdownMenuItem>\n <DropdownMenuItem icon=\"userLine\">Profile settings</DropdownMenuItem>\n\n <DropdownMenuSeparator />\n\n <div className=\"flex flex-col gap-8 px-8 py-4\">\n <div className=\"flex items-center justify-between gap-8\">\n <div className=\"flex items-center gap-8\">\n <Avatar className=\"size-12\" content=\"logo\" logoName=\"stripe\" radius=\"rounded\" />\n <span className=\"text-sm font-medium leading-20 text-foreground-neutral-subtle\">\n Usage\n </span>\n </div>\n <span className=\"text-sm font-medium leading-20 text-foreground-neutral-subtle\">\n {creditsUsed} / {creditsTotal}\n </span>\n </div>\n <UsageGauge used={creditsUsed} total={creditsTotal} />\n <span className=\"text-xs leading-20 text-foreground-neutral-subtle\">\n {creditsTotal} free credits every month.\n </span>\n </div>\n\n <div className=\"px-8 pb-12\">\n <Button type=\"button\" className=\"w-full\">\n <ShinyText\n text=\"Upgrade Plan\"\n className=\"flex-1 text-sm font-medium leading-20 text-foreground-neutral-base truncate text-center\"\n />\n </Button>\n </div>\n\n <DropdownMenuSeparator />\n\n <DropdownMenuItem icon=\"logoutCircleLine\">Log out</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["Avatar","UserBadge","Button","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","ShinyText","UsageGauge","used","total","percentage","Math","min","div","className","style","width","UserProfile","userName","userEmail","creditsUsed","creditsTotal","asChild","content","fallback","name","align","span","icon","logoName","radius","type","text"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,SAAS,QAAO,mBAAmB;AAC3C,SAAQC,MAAM,QAAO,oBAAoB;AACzC,SACEC,YAAY,EACZC,mBAAmB,EACnBC,gBAAgB,EAChBC,qBAAqB,EACrBC,mBAAmB,QACd,2BAA2B;AAClC,SAAQC,SAAS,QAAO,wBAAwB;AAEhD,SAASC,WAAW,EAACC,IAAI,EAAEC,KAAK,EAAgC;IAC9D,MAAMC,aAAaD,SAAS,IAAI,IAAIE,KAAKC,GAAG,CAAC,AAACJ,OAAOC,QAAS,KAAK;IAEnE,qBACE,KAACI;QAAIC,WAAU;kBACb,cAAA,KAACD;YAAIC,WAAU;YAAyCC,OAAO;gBAACC,OAAO,GAAGN,WAAW,CAAC,CAAC;YAAA;;;AAG7F;AAEA,OAAO,SAASO;IACd,MAAMC,WAAW;IACjB,MAAMC,YAAY;IAClB,MAAMC,cAAc;IACpB,MAAMC,eAAe;IAErB,qBACE,MAACpB;;0BACC,KAACI;gBAAoBiB,OAAO;0BAC1B,cAAA,MAACT;oBAAIC,WAAU;;sCACb,KAAChB;4BAAOgB,WAAU;4BAAoBS,SAAQ;4BAAQC,UAAS;;sCAC/D,KAACzB;4BAAU0B,MAAMP;4BAAUJ,WAAU;;;;;0BAGzC,MAACZ;gBAAoBwB,OAAM;gBAAMZ,WAAU;;kCACzC,MAACD;wBAAIC,WAAU;;0CACb,KAAChB;gCAAOgB,WAAU;gCAAmBS,SAAQ;gCAAQC,UAAS;;0CAC9D,MAACX;gCAAIC,WAAU;;kDACb,KAACa;wCAAKb,WAAU;kDACbI;;kDAEH,KAACS;wCAAKb,WAAU;kDACbK;;;;;;kCAKP,KAACf;kCAED,KAACD;wBAAiByB,MAAK;kCAAiB;;kCACxC,KAACzB;wBAAiByB,MAAK;kCAAW;;kCAElC,KAACxB;kCAED,MAACS;wBAAIC,WAAU;;0CACb,MAACD;gCAAIC,WAAU;;kDACb,MAACD;wCAAIC,WAAU;;0DACb,KAAChB;gDAAOgB,WAAU;gDAAUS,SAAQ;gDAAOM,UAAS;gDAASC,QAAO;;0DACpE,KAACH;gDAAKb,WAAU;0DAAgE;;;;kDAIlF,MAACa;wCAAKb,WAAU;;4CACbM;4CAAY;4CAAIC;;;;;0CAGrB,KAACd;gCAAWC,MAAMY;gCAAaX,OAAOY;;0CACtC,MAACM;gCAAKb,WAAU;;oCACbO;oCAAa;;;;;kCAIlB,KAACR;wBAAIC,WAAU;kCACb,cAAA,KAACd;4BAAO+B,MAAK;4BAASjB,WAAU;sCAC9B,cAAA,KAACR;gCACC0B,MAAK;gCACLlB,WAAU;;;;kCAKhB,KAACV;kCAED,KAACD;wBAAiByB,MAAK;kCAAmB;;;;;;AAIlD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/dashboard.tsx"],"names":[],"mappings":"AAWA,wBAAgB,SAAS,4CAiDxB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/dashboard/dashboard.tsx"],"sourcesContent":["import {useMotionValueEvent, useScroll} from 'framer-motion';\nimport {useCallback, useRef, useState} from 'react';\nimport {AnalyticsContent} from './components/analytics-content';\nimport {AnimatedLogo} from './components/animated-logo';\nimport {JobsContent} from './components/jobs-content';\nimport {TopMenu} from './components/top-menu';\nimport {Topbar} from './components/topbar';\n\nconst LOGO_HEIGHT = 48;\nconst TOPBAR_HEIGHT = 41;\n\nexport function Dashboard() {\n const containerRef = useRef<HTMLDivElement>(null);\n const topbarRef = useRef<HTMLDivElement>(null);\n const [scrollProgress, setScrollProgress] = useState(0);\n const [activeTab, setActiveTab] = useState('analytics');\n\n const {scrollY} = useScroll({\n container: containerRef,\n });\n\n useMotionValueEvent(scrollY, 'change', (latest) => {\n const progress = Math.min(latest / TOPBAR_HEIGHT, 1);\n setScrollProgress(progress);\n });\n\n const handleTabChange = useCallback((tab: string) => {\n setActiveTab(tab);\n if (containerRef.current) {\n containerRef.current.scrollTo({top: 0, behavior: 'instant'});\n }\n setScrollProgress(0);\n }, []);\n\n const isTopbarHidden = scrollProgress >= 1;\n\n return (\n <div className=\"flex flex-col w-full h-full\">\n <AnimatedLogo scrollProgress={scrollProgress} />\n\n <div ref={containerRef} className=\"flex flex-col w-full h-full overflow-auto\">\n <div ref={topbarRef}>\n <Topbar hideLogo={isTopbarHidden} />\n </div>\n\n <div className=\"sticky top-0 z-40 border-b border-border-neutral-strong bg-background-neutral-base\">\n <div\n style={{\n paddingLeft: `${(1 - (1 - scrollProgress) ** 3) * (LOGO_HEIGHT - 8)}px`,\n }}\n >\n <TopMenu activeTab={activeTab} onTabChange={handleTabChange} />\n </div>\n </div>\n\n {activeTab === 'analytics' && <AnalyticsContent />}\n {activeTab === 'jobs' && <JobsContent />}\n </div>\n </div>\n );\n}\n"],"names":["useMotionValueEvent","useScroll","useCallback","useRef","useState","AnalyticsContent","AnimatedLogo","JobsContent","TopMenu","Topbar","LOGO_HEIGHT","TOPBAR_HEIGHT","Dashboard","containerRef","topbarRef","scrollProgress","setScrollProgress","activeTab","setActiveTab","scrollY","container","latest","progress","Math","min","handleTabChange","tab","current","scrollTo","top","behavior","isTopbarHidden","div","className","ref","hideLogo","style","paddingLeft","onTabChange"],"mappings":";AAAA,SAAQA,mBAAmB,EAAEC,SAAS,QAAO,gBAAgB;AAC7D,SAAQC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAO,QAAQ;AACpD,SAAQC,gBAAgB,QAAO,iCAAiC;AAChE,SAAQC,YAAY,QAAO,6BAA6B;AACxD,SAAQC,WAAW,QAAO,4BAA4B;AACtD,SAAQC,OAAO,QAAO,wBAAwB;AAC9C,SAAQC,MAAM,QAAO,sBAAsB;AAE3C,MAAMC,cAAc;AACpB,MAAMC,gBAAgB;AAEtB,OAAO,SAASC;IACd,MAAMC,eAAeV,OAAuB;IAC5C,MAAMW,YAAYX,OAAuB;IACzC,MAAM,CAACY,gBAAgBC,kBAAkB,GAAGZ,SAAS;IACrD,MAAM,CAACa,WAAWC,aAAa,GAAGd,SAAS;IAE3C,MAAM,EAACe,OAAO,EAAC,GAAGlB,UAAU;QAC1BmB,WAAWP;IACb;IAEAb,oBAAoBmB,SAAS,UAAU,CAACE;QACtC,MAAMC,WAAWC,KAAKC,GAAG,CAACH,SAASV,eAAe;QAClDK,kBAAkBM;IACpB;IAEA,MAAMG,kBAAkBvB,YAAY,CAACwB;QACnCR,aAAaQ;QACb,IAAIb,aAAac,OAAO,EAAE;YACxBd,aAAac,OAAO,CAACC,QAAQ,CAAC;gBAACC,KAAK;gBAAGC,UAAU;YAAS;QAC5D;QACAd,kBAAkB;IACpB,GAAG,EAAE;IAEL,MAAMe,iBAAiBhB,kBAAkB;IAEzC,qBACE,MAACiB;QAAIC,WAAU;;0BACb,KAAC3B;gBAAaS,gBAAgBA;;0BAE9B,MAACiB;gBAAIE,KAAKrB;gBAAcoB,WAAU;;kCAChC,KAACD;wBAAIE,KAAKpB;kCACR,cAAA,KAACL;4BAAO0B,UAAUJ;;;kCAGpB,KAACC;wBAAIC,WAAU;kCACb,cAAA,KAACD;4BACCI,OAAO;gCACLC,aAAa,GAAG,AAAC,CAAA,IAAI,AAAC,CAAA,IAAItB,cAAa,KAAM,CAAA,IAAML,CAAAA,cAAc,CAAA,EAAG,EAAE,CAAC;4BACzE;sCAEA,cAAA,KAACF;gCAAQS,WAAWA;gCAAWqB,aAAab;;;;oBAI/CR,cAAc,6BAAe,KAACZ;oBAC9BY,cAAc,wBAAU,KAACV;;;;;AAIlC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/dashboard/dashboard.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Dashboard} from './dashboard';\n\nconst meta = {\n title: 'Dashboard/Example',\n tags: ['autodocs'],\n parameters: {\n layout: 'fullscreen',\n viewport: {\n defaultViewport: 'extraLarge',\n },\n },\n} satisfies Meta;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"h-screen w-full\">\n <Dashboard />\n </div>\n ),\n};\n"],"names":["Dashboard","meta","title","tags","parameters","layout","viewport","defaultViewport","Default","render","div","className"],"mappings":";AACA,SAAQA,SAAS,QAAO,cAAc;AAEtC,MAAMC,OAAO;IACXC,OAAO;IACPC,MAAM;QAAC;KAAW;IAClBC,YAAY;QACVC,QAAQ;QACRC,UAAU;YACRC,iBAAiB;QACnB;IACF;AACF;AAEA,eAAeN,KAAK;AAIpB,OAAO,MAAMO,UAAiB;IAC5BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACX;;AAGP,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/dashboard/index.ts"],"sourcesContent":["export * from './dashboard';\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAKhE,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAIrD,eAAO,MAAM,kBAAkB;;;;8EAyB9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAC1E,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACxC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEJ,eAAO,MAAM,UAAU,2HAgItB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/date-picker/date-picker.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport {Calendar} from 'components/calendar';\nimport {Icon} from 'components/icon';\nimport {Popover, PopoverContent, PopoverTrigger} from 'components/popover';\nimport {format} from 'date-fns';\nimport type {ComponentProps, ReactNode} from 'react';\nimport {forwardRef, useState} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const datePickerVariants = cva(\n 'relative flex items-center rounded-6 shadow-button-neutral transition-[background-color,box-shadow] outline-none',\n {\n variants: {\n variant: {\n base: 'bg-background-field-base hover:bg-background-field-hover',\n component: 'bg-background-field-component hover:bg-background-field-component-hover',\n },\n size: {\n base: 'h-32',\n small: 'h-28',\n },\n state: {\n default: '',\n error: 'shadow-border-error',\n disabled:\n 'bg-background-neutral-disabled shadow-none pointer-events-none cursor-not-allowed',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'base',\n state: 'default',\n },\n },\n);\n\nexport type DatePickerProps = Omit<ComponentProps<'input'>, 'size' | 'type'> &\n VariantProps<typeof datePickerVariants> & {\n date?: Date;\n onDateSelect?: (date: Date | undefined) => void;\n placeholder?: string;\n dateFormat?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n onClear?: () => void;\n closeOnSelect?: boolean;\n };\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n className,\n variant,\n size,\n state,\n date,\n onDateSelect,\n placeholder = 'DD/MM/YYYY',\n dateFormat = 'dd/MM/yyyy',\n leftIcon,\n rightIcon,\n onClear,\n disabled,\n closeOnSelect = false,\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = useState(false);\n const isDisabled = disabled || state === 'disabled';\n const displayValue = date ? format(date, dateFormat) : '';\n\n const handleSelect = (selectedDate: Date | undefined) => {\n onDateSelect?.(selectedDate);\n if (closeOnSelect) {\n setOpen(false);\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onClear?.();\n setOpen(false);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <div\n className={cn(\n open && 'shadow-border-interactive-with-active',\n datePickerVariants({variant, size, state: isDisabled ? 'disabled' : state}),\n className,\n )}\n >\n {/* Calendar Icon Button */}\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={isDisabled}\n className={cn(\n 'flex items-center justify-center shrink-0 transition-colors',\n size === 'small' ? 'size-28' : 'size-32',\n isDisabled && 'text-foreground-neutral-disabled',\n )}\n aria-label=\"Open calendar\"\n >\n {leftIcon || (\n <Icon\n name=\"calendar2Line\"\n className={cn(\n 'size-16 text-foreground-neutral-muted',\n isDisabled && 'text-foreground-neutral-disabled',\n )}\n />\n )}\n </button>\n </PopoverTrigger>\n\n {/* Divider */}\n <div className=\"h-full w-px bg-border-neutral-base shrink-0\" />\n\n {/* Input Field */}\n <input\n ref={ref}\n type=\"text\"\n disabled={isDisabled}\n placeholder={placeholder}\n value={displayValue}\n readOnly\n className={cn(\n 'flex-1 min-w-0 px-8 text-sm leading-20 bg-transparent outline-none border-none cursor-pointer',\n 'placeholder:text-foreground-neutral-muted',\n 'text-foreground-neutral-base',\n 'disabled:text-foreground-neutral-disabled disabled:cursor-not-allowed',\n size === 'small' ? 'py-4' : 'py-6',\n )}\n onClick={() => !isDisabled && setOpen(true)}\n {...props}\n />\n\n {/* Clear Button (shown when date is selected) */}\n <button\n type=\"button\"\n onClick={handleClear}\n className={cn(\n 'flex items-center justify-center shrink-0 cursor-pointer',\n size === 'small' ? 'size-28' : 'size-32',\n date && onClear && !isDisabled ? 'visible' : 'invisible',\n )}\n aria-label=\"Clear date\"\n >\n <Icon\n name=\"closeLine\"\n className=\"size-16 text-foreground-neutral-muted hover:text-foreground-neutral-subtle transition-colors\"\n />\n </button>\n\n {/* Custom Right Icon */}\n {rightIcon && !date && (\n <div\n className={cn(\n 'flex items-center justify-center shrink-0',\n size === 'small' ? 'size-28' : 'size-32',\n )}\n >\n {rightIcon}\n </div>\n )}\n </div>\n\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar mode=\"single\" selected={date} onSelect={handleSelect} />\n </PopoverContent>\n </Popover>\n );\n },\n);\n\nDatePicker.displayName = 'DatePicker';\n"],"names":["cva","Calendar","Icon","Popover","PopoverContent","PopoverTrigger","format","forwardRef","useState","cn","datePickerVariants","variants","variant","base","component","size","small","state","default","error","disabled","defaultVariants","DatePicker","className","date","onDateSelect","placeholder","dateFormat","leftIcon","rightIcon","onClear","closeOnSelect","props","ref","open","setOpen","isDisabled","displayValue","handleSelect","selectedDate","handleClear","e","stopPropagation","onOpenChange","div","asChild","button","type","aria-label","name","input","value","readOnly","onClick","align","mode","selected","onSelect","displayName"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,QAAQ,QAAO,sBAAsB;AAC7C,SAAQC,IAAI,QAAO,kBAAkB;AACrC,SAAQC,OAAO,EAAEC,cAAc,EAAEC,cAAc,QAAO,qBAAqB;AAC3E,SAAQC,MAAM,QAAO,WAAW;AAEhC,SAAQC,UAAU,EAAEC,QAAQ,QAAO,QAAQ;AAC3C,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,qBAAqBV,IAChC,oHACA;IACEW,UAAU;QACRC,SAAS;YACPC,MAAM;YACNC,WAAW;QACb;QACAC,MAAM;YACJF,MAAM;YACNG,OAAO;QACT;QACAC,OAAO;YACLC,SAAS;YACTC,OAAO;YACPC,UACE;QACJ;IACF;IACAC,iBAAiB;QACfT,SAAS;QACTG,MAAM;QACNE,OAAO;IACT;AACF,GACA;AAcF,OAAO,MAAMK,2BAAaf,WACxB,CACE,EACEgB,SAAS,EACTX,OAAO,EACPG,IAAI,EACJE,KAAK,EACLO,IAAI,EACJC,YAAY,EACZC,cAAc,YAAY,EAC1BC,aAAa,YAAY,EACzBC,QAAQ,EACRC,SAAS,EACTC,OAAO,EACPV,QAAQ,EACRW,gBAAgB,KAAK,EACrB,GAAGC,OACJ,EACDC;IAEA,MAAM,CAACC,MAAMC,QAAQ,GAAG3B,SAAS;IACjC,MAAM4B,aAAahB,YAAYH,UAAU;IACzC,MAAMoB,eAAeb,OAAOlB,OAAOkB,MAAMG,cAAc;IAEvD,MAAMW,eAAe,CAACC;QACpBd,eAAec;QACf,IAAIR,eAAe;YACjBI,QAAQ;QACV;IACF;IAEA,MAAMK,cAAc,CAACC;QACnBA,EAAEC,eAAe;QACjBZ;QACAK,QAAQ;IACV;IAEA,qBACE,MAAChC;QAAQ+B,MAAMA;QAAMS,cAAcR;;0BACjC,MAACS;gBACCrB,WAAWd,GACTyB,QAAQ,yCACRxB,mBAAmB;oBAACE;oBAASG;oBAAME,OAAOmB,aAAa,aAAanB;gBAAK,IACzEM;;kCAIF,KAAClB;wBAAewC,OAAO;kCACrB,cAAA,KAACC;4BACCC,MAAK;4BACL3B,UAAUgB;4BACVb,WAAWd,GACT,+DACAM,SAAS,UAAU,YAAY,WAC/BqB,cAAc;4BAEhBY,cAAW;sCAEVpB,0BACC,KAAC1B;gCACC+C,MAAK;gCACL1B,WAAWd,GACT,yCACA2B,cAAc;;;;kCAQxB,KAACQ;wBAAIrB,WAAU;;kCAGf,KAAC2B;wBACCjB,KAAKA;wBACLc,MAAK;wBACL3B,UAAUgB;wBACVV,aAAaA;wBACbyB,OAAOd;wBACPe,QAAQ;wBACR7B,WAAWd,GACT,iGACA,6CACA,gCACA,yEACAM,SAAS,UAAU,SAAS;wBAE9BsC,SAAS,IAAM,CAACjB,cAAcD,QAAQ;wBACrC,GAAGH,KAAK;;kCAIX,KAACc;wBACCC,MAAK;wBACLM,SAASb;wBACTjB,WAAWd,GACT,4DACAM,SAAS,UAAU,YAAY,WAC/BS,QAAQM,WAAW,CAACM,aAAa,YAAY;wBAE/CY,cAAW;kCAEX,cAAA,KAAC9C;4BACC+C,MAAK;4BACL1B,WAAU;;;oBAKbM,aAAa,CAACL,sBACb,KAACoB;wBACCrB,WAAWd,GACT,6CACAM,SAAS,UAAU,YAAY;kCAGhCc;;;;0BAKP,KAACzB;gBAAemB,WAAU;gBAAa+B,OAAM;0BAC3C,cAAA,KAACrD;oBAASsD,MAAK;oBAASC,UAAUhC;oBAAMiC,UAAUnB;;;;;AAI1D,GACA;AAEFhB,WAAWoC,WAAW,GAAG"}