@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/button/button-link.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon, type IconName} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const buttonLinkVariants = cva(\n 'inline-flex items-center justify-center gap-4 whitespace-nowrap transition-colors cursor-pointer disabled:pointer-events-none outline-none font-medium',\n {\n variants: {\n variant: {\n base: 'text-foreground-neutral-base hover:text-foreground-neutral-base focus-visible:text-foreground-neutral-base disabled:text-foreground-neutral-disabled',\n interactive:\n 'text-foreground-highlight-interactive hover:text-foreground-highlight-interactive-hover focus-visible:text-foreground-highlight-interactive disabled:text-foreground-neutral-disabled',\n muted:\n 'text-foreground-neutral-muted hover:text-foreground-neutral-base focus-visible:text-foreground-neutral-base disabled:text-foreground-neutral-disabled',\n subtle:\n 'text-foreground-neutral-subtle hover:text-foreground-neutral-base focus-visible:text-foreground-neutral-base disabled:text-foreground-neutral-disabled',\n },\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-md',\n xl: 'text-xl',\n },\n underline: {\n true: 'underline decoration-solid [text-underline-position:from-font]',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'sm',\n underline: false,\n },\n },\n);\n\nconst iconSizeMap = {\n xs: 14,\n sm: 14,\n md: 16,\n xl: 20,\n} as const;\n\nexport function ButtonLink({\n className,\n variant,\n size = 'sm',\n underline,\n asChild = false,\n children,\n iconLeft,\n iconRight,\n ...props\n}: ComponentProps<'a'> &\n VariantProps<typeof buttonLinkVariants> & {\n asChild?: boolean;\n iconLeft?: IconName;\n iconRight?: IconName;\n }) {\n const Comp = asChild ? Slot : 'a';\n const iconSize = iconSizeMap[size as keyof typeof iconSizeMap];\n\n return (\n <Comp\n data-slot=\"button-link\"\n className={cn(buttonLinkVariants({variant, size, underline, className}))}\n {...props}\n >\n {iconLeft && <Icon name={iconLeft} size={iconSize} />}\n {children}\n {iconRight && <Icon name={iconRight} size={iconSize} />}\n </Comp>\n );\n}\n"],"names":["Slot","cva","Icon","cn","buttonLinkVariants","variants","variant","base","interactive","muted","subtle","size","xs","sm","md","xl","underline","true","false","defaultVariants","iconSizeMap","ButtonLink","className","asChild","children","iconLeft","iconRight","props","Comp","iconSize","data-slot","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAsB,kBAAkB;AAEpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,qBAAqBH,IAChC,0JACA;IACEI,UAAU;QACRC,SAAS;YACPC,MAAM;YACNC,aACE;YACFC,OACE;YACFC,QACE;QACJ;QACAC,MAAM;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;QACAC,WAAW;YACTC,MAAM;YACNC,OAAO;QACT;IACF;IACAC,iBAAiB;QACfb,SAAS;QACTK,MAAM;QACNK,WAAW;IACb;AACF,GACA;AAEF,MAAMI,cAAc;IAClBR,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;AACN;AAEA,OAAO,SAASM,WAAW,EACzBC,SAAS,EACThB,OAAO,EACPK,OAAO,IAAI,EACXK,SAAS,EACTO,UAAU,KAAK,EACfC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACT,GAAGC,OAMF;IACD,MAAMC,OAAOL,UAAUvB,OAAO;IAC9B,MAAM6B,WAAWT,WAAW,CAACT,KAAiC;IAE9D,qBACE,MAACiB;QACCE,aAAU;QACVR,WAAWnB,GAAGC,mBAAmB;YAACE;YAASK;YAAMK;YAAWM;QAAS;QACpE,GAAGK,KAAK;;YAERF,0BAAY,KAACvB;gBAAK6B,MAAMN;gBAAUd,MAAMkB;;YACxCL;YACAE,2BAAa,KAACxB;gBAAK6B,MAAML;gBAAWf,MAAMkB;;;;AAGjD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button/button-link.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {ButtonLink} from './button-link';\n\nconst meta = {\n title: 'Components/Button/ButtonLink',\n component: ButtonLink,\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: 'select',\n options: ['base', 'interactive', 'muted', 'subtle'],\n },\n size: {\n control: 'select',\n options: ['xs', 'sm', 'md', 'xl'],\n },\n underline: {control: 'boolean'},\n asChild: {control: 'boolean'},\n },\n args: {\n children: 'Label',\n variant: 'base',\n size: 'sm',\n underline: false,\n href: '#',\n },\n} satisfies Meta<typeof ButtonLink>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {};\n\nexport const Variants: Story = {\n render: (args) => (\n <div className=\"flex gap-16 items-center\">\n <ButtonLink {...args} variant=\"base\">\n Base\n </ButtonLink>\n <ButtonLink {...args} variant=\"interactive\">\n Interactive\n </ButtonLink>\n <ButtonLink {...args} variant=\"muted\">\n Muted\n </ButtonLink>\n <ButtonLink {...args} variant=\"subtle\">\n Subtle\n </ButtonLink>\n </div>\n ),\n};\n\nexport const WithUnderline: Story = {\n render: (args) => (\n <div className=\"flex gap-16 items-center\">\n <ButtonLink {...args} variant=\"base\" underline>\n Base\n </ButtonLink>\n <ButtonLink {...args} variant=\"interactive\" underline>\n Interactive\n </ButtonLink>\n <ButtonLink {...args} variant=\"muted\" underline>\n Muted\n </ButtonLink>\n <ButtonLink {...args} variant=\"subtle\" underline>\n Subtle\n </ButtonLink>\n </div>\n ),\n};\n\nexport const WithIcons: Story = {\n render: (args) => (\n <div className=\"flex gap-16 items-center\">\n <ButtonLink {...args} iconLeft=\"addLine\">\n Icon Left\n </ButtonLink>\n <ButtonLink {...args} iconRight=\"chevronRight\">\n Icon Right\n </ButtonLink>\n <ButtonLink {...args} iconLeft=\"addLine\" iconRight=\"chevronRight\">\n Both Icons\n </ButtonLink>\n </div>\n ),\n};\n"],"names":["ButtonLink","meta","title","component","tags","argTypes","variant","control","options","size","underline","asChild","args","children","href","Default","Variants","render","div","className","WithUnderline","WithIcons","iconLeft","iconRight"],"mappings":";AACA,SAAQA,UAAU,QAAO,gBAAgB;AAEzC,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWH;IACXI,MAAM;QAAC;KAAW;IAClBC,UAAU;QACRC,SAAS;YACPC,SAAS;YACTC,SAAS;gBAAC;gBAAQ;gBAAe;gBAAS;aAAS;QACrD;QACAC,MAAM;YACJF,SAAS;YACTC,SAAS;gBAAC;gBAAM;gBAAM;gBAAM;aAAK;QACnC;QACAE,WAAW;YAACH,SAAS;QAAS;QAC9BI,SAAS;YAACJ,SAAS;QAAS;IAC9B;IACAK,MAAM;QACJC,UAAU;QACVP,SAAS;QACTG,MAAM;QACNC,WAAW;QACXI,MAAM;IACR;AACF;AAEA,eAAeb,KAAK;AAGpB,OAAO,MAAMc,UAAiB,CAAC,EAAE;AAEjC,OAAO,MAAMC,WAAkB;IAC7BC,QAAQ,CAACL,qBACP,MAACM;YAAIC,WAAU;;8BACb,KAACnB;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;8BAAO;;8BAGrC,KAACN;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;8BAAc;;8BAG5C,KAACN;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;8BAAQ;;8BAGtC,KAACN;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;8BAAS;;;;AAK7C,EAAE;AAEF,OAAO,MAAMc,gBAAuB;IAClCH,QAAQ,CAACL,qBACP,MAACM;YAAIC,WAAU;;8BACb,KAACnB;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;oBAAOI,SAAS;8BAAC;;8BAG/C,KAACV;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;oBAAcI,SAAS;8BAAC;;8BAGtD,KAACV;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;oBAAQI,SAAS;8BAAC;;8BAGhD,KAACV;oBAAY,GAAGY,IAAI;oBAAEN,SAAQ;oBAASI,SAAS;8BAAC;;;;AAKvD,EAAE;AAEF,OAAO,MAAMW,YAAmB;IAC9BJ,QAAQ,CAACL,qBACP,MAACM;YAAIC,WAAU;;8BACb,KAACnB;oBAAY,GAAGY,IAAI;oBAAEU,UAAS;8BAAU;;8BAGzC,KAACtB;oBAAY,GAAGY,IAAI;oBAAEW,WAAU;8BAAe;;8BAG/C,KAACvB;oBAAY,GAAGY,IAAI;oBAAEU,UAAS;oBAAUC,WAAU;8BAAe;;;;AAKxE,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/button/button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,eAAO,MAAM,cAAc;;;8EAgC1B,CAAC;AAWF,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAiB,EACjB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GACzB,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CAwBF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button/button.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon, type IconName} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const buttonVariants = cva(\n 'rounded-6 inline-flex items-center justify-center whitespace-nowrap transition-colors cursor-pointer disabled:pointer-events-none shrink-0 outline-none',\n {\n variants: {\n variant: {\n primary:\n 'bg-background-button-inverted-default text-foreground-contrast-primary shadow-button-inverted hover:bg-background-button-inverted-hover active:bg-background-button-inverted-pressed focus-visible:shadow-button-inverted-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n secondary:\n 'bg-background-button-neutral-default text-foreground-neutral-base shadow-button-neutral hover:bg-background-button-neutral-hover active:bg-background-button-neutral-pressed disabled:bg-background-neutral-disabled focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled disabled:shadow-none',\n danger:\n 'bg-background-button-danger-default text-foreground-neutral-on-color shadow-button-danger hover:bg-background-button-danger-hover active:bg-background-button-danger-pressed focus-visible:shadow-button-danger-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n success:\n 'bg-background-button-success-default text-foreground-neutral-on-color shadow-button-success hover:bg-background-button-success-hover active:bg-background-button-success-pressed focus-visible:shadow-button-success-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n transparent:\n 'bg-background-button-transparent-default text-foreground-neutral-base hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n transparentMuted:\n 'bg-background-button-transparent-default text-foreground-neutral-muted hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n },\n size: {\n '2xs': 'h-20 px-6 text-xs gap-4',\n xs: 'h-24 px-6 text-xs gap-4',\n sm: 'h-28 px-8 text-sm gap-6',\n md: 'h-32 px-10 text-md gap-8',\n lg: 'h-36 px-12 text-lg gap-8',\n xl: 'h-40 px-12 text-xl gap-10',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n },\n);\n\nconst iconSizeMap: Record<NonNullable<VariantProps<typeof buttonVariants>['size']>, string> = {\n '2xs': 'size-14',\n xs: 'size-16',\n sm: 'size-20',\n md: 'size-20',\n lg: 'size-20',\n xl: 'size-20',\n};\n\nexport function Button({\n className,\n variant,\n size,\n asChild = false,\n children,\n iconLeft,\n iconRight,\n isLoading = false,\n disabled,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n iconLeft?: IconName;\n iconRight?: IconName;\n isLoading?: boolean;\n }) {\n const Comp = asChild ? Slot : 'button';\n const resolvedSize = (size ?? 'md') as NonNullable<VariantProps<typeof buttonVariants>['size']>;\n const iconSize = iconSizeMap[resolvedSize];\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({variant, size, className}))}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n aria-live={isLoading ? 'polite' : undefined}\n {...(asChild ? {'aria-disabled': disabled || isLoading} : {})}\n {...props}\n >\n {isLoading ? (\n <Icon name=\"spinner\" className={iconSize} />\n ) : (\n iconLeft && <Icon name={iconLeft} className={iconSize} />\n )}\n {children}\n {iconRight && <Icon name={iconRight} className={iconSize} />}\n </Comp>\n );\n}\n"],"names":["Slot","cva","Icon","cn","buttonVariants","variants","variant","primary","secondary","danger","success","transparent","transparentMuted","size","xs","sm","md","lg","xl","defaultVariants","iconSizeMap","Button","className","asChild","children","iconLeft","iconRight","isLoading","disabled","props","Comp","resolvedSize","iconSize","data-slot","aria-busy","aria-live","undefined","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAsB,kBAAkB;AAEpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,iBAAiBH,IAC5B,2JACA;IACEI,UAAU;QACRC,SAAS;YACPC,SACE;YACFC,WACE;YACFC,QACE;YACFC,SACE;YACFC,aACE;YACFC,kBACE;QACJ;QACAC,MAAM;YACJ,OAAO;YACPC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfb,SAAS;QACTO,MAAM;IACR;AACF,GACA;AAEF,MAAMO,cAAwF;IAC5F,OAAO;IACPN,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;AACN;AAEA,OAAO,SAASG,OAAO,EACrBC,SAAS,EACThB,OAAO,EACPO,IAAI,EACJU,UAAU,KAAK,EACfC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,YAAY,KAAK,EACjBC,QAAQ,EACR,GAAGC,OAOF;IACD,MAAMC,OAAOP,UAAUvB,OAAO;IAC9B,MAAM+B,eAAgBlB,QAAQ;IAC9B,MAAMmB,WAAWZ,WAAW,CAACW,aAAa;IAE1C,qBACE,MAACD;QACCG,aAAU;QACVX,WAAWnB,GAAGC,eAAe;YAACE;YAASO;YAAMS;QAAS;QACtDM,UAAUA,YAAYD;QACtBO,aAAWP;QACXQ,aAAWR,YAAY,WAAWS;QACjC,GAAIb,UAAU;YAAC,iBAAiBK,YAAYD;QAAS,IAAI,CAAC,CAAC;QAC3D,GAAGE,KAAK;;YAERF,0BACC,KAACzB;gBAAKmC,MAAK;gBAAUf,WAAWU;iBAEhCP,0BAAY,KAACvB;gBAAKmC,MAAMZ;gBAAUH,WAAWU;;YAE9CR;YACAE,2BAAa,KAACxB;gBAAKmC,MAAMX;gBAAWJ,WAAWU;;;;AAGtD"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button/button.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code} from 'components/typography';\nimport {Button} from './button';\n\nconst variantOptions = [\n 'primary',\n 'secondary',\n 'danger',\n 'success',\n 'transparent',\n 'transparentMuted',\n] as const;\nconst sizeOptions = ['2xs', 'xs', 'sm', 'md', 'lg', 'xl'] as const;\n\nconst meta = {\n title: 'Components/Button',\n component: Button,\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: 'select',\n options: variantOptions,\n },\n size: {\n control: 'select',\n options: sizeOptions,\n },\n asChild: {control: 'boolean'},\n isLoading: {control: 'boolean'},\n },\n args: {\n children: 'Click me',\n variant: 'primary',\n size: 'md',\n },\n} satisfies Meta<typeof Button>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {};\n\nexport const Variants: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n {sizeOptions.map((size) => (\n <table key={size} className=\"w-fit border-separate border-spacing-x-32 border-spacing-y-16\">\n <thead>\n <tr>\n <th>{size}</th>\n <th>Default</th>\n <th>Hover</th>\n <th>Focus</th>\n <th>Disabled</th>\n </tr>\n </thead>\n <tbody>\n {variantOptions.map((variant) => (\n <tr key={variant}>\n <td>\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {variant}\n </Code>\n </td>\n <td>\n <Button {...args} variant={variant} size={size}>\n Click me\n </Button>\n </td>\n <td>\n <Button {...args} variant={variant} className=\"hover\" size={size}>\n Click me\n </Button>\n </td>\n <td>\n <Button {...args} variant={variant} className=\"focus\" size={size}>\n Click me\n </Button>\n </td>\n <td>\n <Button {...args} variant={variant} disabled size={size}>\n Click me\n </Button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n ))}\n </div>\n ),\n};\n\nVariants.parameters = {\n pseudo: {\n hover: '.hover',\n focusVisible: '.focus',\n },\n};\n\nexport const Icons: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-16\">\n <div>\n <Button {...args} iconLeft=\"google\">\n Click me\n </Button>\n </div>\n <div>\n <Button {...args} iconRight=\"microsoft\">\n Click me\n </Button>\n </div>\n <div>\n <Button {...args} iconLeft=\"google\" iconRight=\"microsoft\">\n Click me\n </Button>\n </div>\n </div>\n ),\n};\n\nexport const Loading: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-16\">\n <div>\n <Button {...args} isLoading>\n Loading...\n </Button>\n </div>\n <div>\n <Button {...args} isLoading iconLeft=\"google\">\n Loading with left icon\n </Button>\n </div>\n </div>\n ),\n};\n"],"names":["Code","Button","variantOptions","sizeOptions","meta","title","component","tags","argTypes","variant","control","options","size","asChild","isLoading","args","children","Default","Variants","render","div","className","map","table","thead","tr","th","tbody","td","disabled","parameters","pseudo","hover","focusVisible","Icons","iconLeft","iconRight","Loading"],"mappings":";AACA,SAAQA,IAAI,QAAO,wBAAwB;AAC3C,SAAQC,MAAM,QAAO,WAAW;AAEhC,MAAMC,iBAAiB;IACrB;IACA;IACA;IACA;IACA;IACA;CACD;AACD,MAAMC,cAAc;IAAC;IAAO;IAAM;IAAM;IAAM;IAAM;CAAK;AAEzD,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWL;IACXM,MAAM;QAAC;KAAW;IAClBC,UAAU;QACRC,SAAS;YACPC,SAAS;YACTC,SAAST;QACX;QACAU,MAAM;YACJF,SAAS;YACTC,SAASR;QACX;QACAU,SAAS;YAACH,SAAS;QAAS;QAC5BI,WAAW;YAACJ,SAAS;QAAS;IAChC;IACAK,MAAM;QACJC,UAAU;QACVP,SAAS;QACTG,MAAM;IACR;AACF;AAEA,eAAeR,KAAK;AAGpB,OAAO,MAAMa,UAAiB,CAAC,EAAE;AAEjC,OAAO,MAAMC,WAAkB;IAC7BC,QAAQ,CAACJ,qBACP,KAACK;YAAIC,WAAU;sBACZlB,YAAYmB,GAAG,CAAC,CAACV,qBAChB,MAACW;oBAAiBF,WAAU;;sCAC1B,KAACG;sCACC,cAAA,MAACC;;kDACC,KAACC;kDAAId;;kDACL,KAACc;kDAAG;;kDACJ,KAACA;kDAAG;;kDACJ,KAACA;kDAAG;;kDACJ,KAACA;kDAAG;;;;;sCAGR,KAACC;sCACEzB,eAAeoB,GAAG,CAAC,CAACb,wBACnB,MAACgB;;sDACC,KAACG;sDACC,cAAA,KAAC5B;gDAAKS,SAAQ;gDAAQY,WAAU;0DAC7BZ;;;sDAGL,KAACmB;sDACC,cAAA,KAAC3B;gDAAQ,GAAGc,IAAI;gDAAEN,SAASA;gDAASG,MAAMA;0DAAM;;;sDAIlD,KAACgB;sDACC,cAAA,KAAC3B;gDAAQ,GAAGc,IAAI;gDAAEN,SAASA;gDAASY,WAAU;gDAAQT,MAAMA;0DAAM;;;sDAIpE,KAACgB;sDACC,cAAA,KAAC3B;gDAAQ,GAAGc,IAAI;gDAAEN,SAASA;gDAASY,WAAU;gDAAQT,MAAMA;0DAAM;;;sDAIpE,KAACgB;sDACC,cAAA,KAAC3B;gDAAQ,GAAGc,IAAI;gDAAEN,SAASA;gDAASoB,QAAQ;gDAACjB,MAAMA;0DAAM;;;;mCAtBpDH;;;mBAZHG;;AA6CpB,EAAE;AAEFM,SAASY,UAAU,GAAG;IACpBC,QAAQ;QACNC,OAAO;QACPC,cAAc;IAChB;AACF;AAEA,OAAO,MAAMC,QAAe;IAC1Bf,QAAQ,CAACJ,qBACP,MAACK;YAAIC,WAAU;;8BACb,KAACD;8BACC,cAAA,KAACnB;wBAAQ,GAAGc,IAAI;wBAAEoB,UAAS;kCAAS;;;8BAItC,KAACf;8BACC,cAAA,KAACnB;wBAAQ,GAAGc,IAAI;wBAAEqB,WAAU;kCAAY;;;8BAI1C,KAAChB;8BACC,cAAA,KAACnB;wBAAQ,GAAGc,IAAI;wBAAEoB,UAAS;wBAASC,WAAU;kCAAY;;;;;AAMlE,EAAE;AAEF,OAAO,MAAMC,UAAiB;IAC5BlB,QAAQ,CAACJ,qBACP,MAACK;YAAIC,WAAU;;8BACb,KAACD;8BACC,cAAA,KAACnB;wBAAQ,GAAGc,IAAI;wBAAED,SAAS;kCAAC;;;8BAI9B,KAACM;8BACC,cAAA,KAACnB;wBAAQ,GAAGc,IAAI;wBAAED,SAAS;wBAACqB,UAAS;kCAAS;;;;;AAMtD,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon-button.d.ts","sourceRoot":"","sources":["../../../src/components/button/icon-button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,eAAO,MAAM,kBAAkB;;;;;8EAkC9B,CAAC;AAcF,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,OAAe,EACf,QAAQ,EACR,IAAI,EACJ,SAAiB,EACjB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GACzB,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CAuBF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button/icon-button.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon, type IconName} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const iconButtonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap transition-colors cursor-pointer disabled:pointer-events-none shrink-0 outline-none',\n {\n variants: {\n variant: {\n primary:\n 'bg-background-button-inverted-default text-tag-neutral-icon shadow-button-inverted hover:bg-background-button-inverted-hover active:bg-background-button-inverted-pressed focus-visible:shadow-button-inverted-focus disabled:bg-background-neutral-disabled disabled:text-foreground-neutral-disabled disabled:shadow-none',\n transparent:\n 'bg-background-button-transparent-default text-tag-neutral-icon hover:bg-background-button-transparent-hover active:bg-background-button-transparent-pressed focus-visible:shadow-button-neutral-focus disabled:text-foreground-neutral-disabled',\n },\n size: {\n '2xs': 'w-20 h-20 text-xs',\n xs: 'w-24 h-24 text-xs',\n sm: 'w-28 h-28 text-sm',\n md: 'w-32 h-32 text-md',\n lg: 'w-36 h-36 text-lg',\n xl: 'w-40 h-40 text-xl',\n },\n radius: {\n rounded: 'rounded-6',\n full: 'rounded-full',\n },\n muted: {\n true: 'opacity-60',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n radius: 'rounded',\n muted: false,\n },\n },\n);\n\nconst spinnerSizeMap: Record<\n NonNullable<VariantProps<typeof iconButtonVariants>['size']>,\n string\n> = {\n '2xs': 'size-8',\n xs: 'size-10',\n sm: 'size-12',\n md: 'size-14',\n lg: 'size-16',\n xl: 'size-18',\n};\n\nexport function IconButton({\n className,\n variant,\n size,\n radius,\n muted,\n asChild = false,\n children,\n icon,\n isLoading = false,\n disabled,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof iconButtonVariants> & {\n asChild?: boolean;\n icon?: IconName;\n isLoading?: boolean;\n }) {\n const Comp = asChild ? Slot : 'button';\n const spinnerSize = spinnerSizeMap[size ?? 'md'];\n\n return (\n <Comp\n data-slot=\"icon-button\"\n className={cn(iconButtonVariants({variant, size, radius, muted}), className)}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n aria-live={isLoading ? 'polite' : undefined}\n {...(asChild ? {'aria-disabled': disabled || isLoading} : {})}\n {...props}\n >\n {isLoading ? (\n <Icon name=\"spinner\" className={spinnerSize} />\n ) : icon ? (\n <Icon name={icon} />\n ) : (\n children\n )}\n </Comp>\n );\n}\n"],"names":["Slot","cva","Icon","cn","iconButtonVariants","variants","variant","primary","transparent","size","xs","sm","md","lg","xl","radius","rounded","full","muted","true","false","defaultVariants","spinnerSizeMap","IconButton","className","asChild","children","icon","isLoading","disabled","props","Comp","spinnerSize","data-slot","aria-busy","aria-live","undefined","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAsB,kBAAkB;AAEpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,qBAAqBH,IAChC,iJACA;IACEI,UAAU;QACRC,SAAS;YACPC,SACE;YACFC,aACE;QACJ;QACAC,MAAM;YACJ,OAAO;YACPC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;QACAC,QAAQ;YACNC,SAAS;YACTC,MAAM;QACR;QACAC,OAAO;YACLC,MAAM;YACNC,OAAO;QACT;IACF;IACAC,iBAAiB;QACff,SAAS;QACTG,MAAM;QACNM,QAAQ;QACRG,OAAO;IACT;AACF,GACA;AAEF,MAAMI,iBAGF;IACF,OAAO;IACPZ,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;IACJC,IAAI;AACN;AAEA,OAAO,SAASS,WAAW,EACzBC,SAAS,EACTlB,OAAO,EACPG,IAAI,EACJM,MAAM,EACNG,KAAK,EACLO,UAAU,KAAK,EACfC,QAAQ,EACRC,IAAI,EACJC,YAAY,KAAK,EACjBC,QAAQ,EACR,GAAGC,OAMF;IACD,MAAMC,OAAON,UAAUzB,OAAO;IAC9B,MAAMgC,cAAcV,cAAc,CAACb,QAAQ,KAAK;IAEhD,qBACE,KAACsB;QACCE,aAAU;QACVT,WAAWrB,GAAGC,mBAAmB;YAACE;YAASG;YAAMM;YAAQG;QAAK,IAAIM;QAClEK,UAAUA,YAAYD;QACtBM,aAAWN;QACXO,aAAWP,YAAY,WAAWQ;QACjC,GAAIX,UAAU;YAAC,iBAAiBI,YAAYD;QAAS,IAAI,CAAC,CAAC;QAC3D,GAAGE,KAAK;kBAERF,0BACC,KAAC1B;YAAKmC,MAAK;YAAUb,WAAWQ;aAC9BL,qBACF,KAACzB;YAAKmC,MAAMV;aAEZD;;AAIR"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button/icon-button.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code} from 'components/typography';\nimport {IconButton} from './icon-button';\n\nconst variantOptions = ['primary', 'transparent'] as const;\nconst sizeOptions = ['2xs', 'xs', 'sm', 'md', 'lg', 'xl'] as const;\nconst radiusOptions = ['rounded', 'full'] as const;\n\nconst meta = {\n title: 'Components/Button/IconButton',\n component: IconButton,\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: 'select',\n options: variantOptions,\n },\n size: {\n control: 'select',\n options: sizeOptions,\n },\n radius: {\n control: 'select',\n options: radiusOptions,\n },\n muted: {control: 'boolean'},\n asChild: {control: 'boolean'},\n },\n args: {\n icon: 'addLine',\n variant: 'primary',\n size: 'md',\n radius: 'rounded',\n muted: false,\n },\n} satisfies Meta<typeof IconButton>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {};\n\nexport const Variants: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n {sizeOptions.map((size) => (\n <div key={size} className=\"flex flex-col gap-16\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Size: {size}\n </Code>\n {radiusOptions.map((radius) => (\n <table\n key={radius}\n className=\"w-fit border-separate border-spacing-x-32 border-spacing-y-16\"\n >\n <thead>\n <tr>\n <th>{radius}</th>\n <th>Default</th>\n <th>Hover</th>\n <th>Focus</th>\n <th>Disabled</th>\n </tr>\n </thead>\n <tbody>\n {variantOptions.map((variant) => (\n <tr key={variant}>\n <td>\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n {variant}\n </Code>\n </td>\n <td>\n <IconButton\n {...args}\n icon=\"addLine\"\n aria-label=\"Add\"\n variant={variant}\n size={size}\n radius={radius}\n />\n </td>\n <td>\n <IconButton\n {...args}\n icon=\"addLine\"\n aria-label=\"Add\"\n variant={variant}\n className=\"hover\"\n size={size}\n radius={radius}\n />\n </td>\n <td>\n <IconButton\n {...args}\n icon=\"addLine\"\n aria-label=\"Add\"\n variant={variant}\n className=\"focus\"\n size={size}\n radius={radius}\n />\n </td>\n <td>\n <IconButton\n {...args}\n icon=\"addLine\"\n aria-label=\"Add\"\n variant={variant}\n disabled\n size={size}\n radius={radius}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n ))}\n </div>\n ))}\n </div>\n ),\n};\n\nVariants.parameters = {\n pseudo: {\n hover: '.hover',\n focusVisible: '.focus',\n },\n};\n\nexport const Muted: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-16\">\n <div className=\"flex gap-16 items-center\">\n <Code variant=\"label\">Normal:</Code>\n <IconButton {...args} icon=\"addLine\" aria-label=\"Add\" />\n <IconButton {...args} icon=\"addLine\" aria-label=\"Add\" variant=\"transparent\" />\n </div>\n <div className=\"flex gap-16 items-center\">\n <Code variant=\"label\">Muted:</Code>\n <IconButton {...args} icon=\"addLine\" aria-label=\"Add\" muted />\n <IconButton {...args} icon=\"addLine\" aria-label=\"Add\" variant=\"transparent\" muted />\n </div>\n </div>\n ),\n};\n\nexport const Sizes: Story = {\n render: ({children: _children, ...args}) => (\n <div className=\"flex flex-col gap-16\">\n <div className=\"flex gap-16 items-center\">\n <Code variant=\"label\">Rounded:</Code>\n {sizeOptions.map((size) => (\n <IconButton\n {...args}\n key={size}\n icon=\"addLine\"\n aria-label=\"Add\"\n size={size}\n radius=\"rounded\"\n />\n ))}\n </div>\n <div className=\"flex gap-16 items-center\">\n <Code variant=\"label\">Full:</Code>\n {sizeOptions.map((size) => (\n <IconButton\n {...args}\n key={size}\n icon=\"addLine\"\n aria-label=\"Add\"\n size={size}\n radius=\"full\"\n />\n ))}\n </div>\n </div>\n ),\n};\n\nexport const Loading: Story = {\n render: ({children: _children, ...args}) => (\n <div className=\"flex flex-col gap-32\">\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\">Loading by Size:</Code>\n <div className=\"flex gap-16 items-center\">\n {sizeOptions.map((size) => (\n <div key={size} className=\"flex flex-col gap-8 items-center\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n {size}\n </Code>\n <IconButton {...args} icon=\"addLine\" aria-label=\"Loading\" size={size} isLoading />\n </div>\n ))}\n </div>\n </div>\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\">Loading by Variant:</Code>\n <div className=\"flex gap-16 items-center\">\n {variantOptions.map((variant) => (\n <div key={variant} className=\"flex flex-col gap-8 items-center\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n {variant}\n </Code>\n <IconButton\n {...args}\n icon=\"addLine\"\n aria-label=\"Loading\"\n variant={variant}\n isLoading\n />\n </div>\n ))}\n </div>\n </div>\n <div className=\"flex flex-col gap-16\">\n <Code variant=\"label\">Normal vs Loading:</Code>\n <div className=\"flex gap-16 items-center\">\n <IconButton {...args} icon=\"addLine\" aria-label=\"Add\" />\n <IconButton {...args} icon=\"addLine\" aria-label=\"Loading\" isLoading />\n </div>\n </div>\n </div>\n ),\n};\n"],"names":["Code","IconButton","variantOptions","sizeOptions","radiusOptions","meta","title","component","tags","argTypes","variant","control","options","size","radius","muted","asChild","args","icon","Default","Variants","render","div","className","map","table","thead","tr","th","tbody","td","aria-label","disabled","parameters","pseudo","hover","focusVisible","Muted","Sizes","children","_children","key","Loading","isLoading"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/button/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button/index.ts"],"sourcesContent":["export * from './button';\nexport * from './button-link';\nexport * from './icon-button';\n"],"names":[],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../../../src/components/button-group/button-group.tsx"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,QAAA,MAAM,mBAAmB;;8EAwCxB,CAAC;AAEF,KAAK,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEzF,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,EAAC,EAAE,gBAAgB,2CAWxE;AAED,KAAK,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,iBAAS,eAAe,CAAC,EAAC,SAAS,EAAE,OAAe,EAAE,GAAG,KAAK,EAAC,EAAE,oBAAoB,2CAiBpF;AAED,KAAK,yBAAyB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACvD,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC,CAAC;AAEF,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,WAAwB,EACxB,GAAG,KAAK,EACT,EAAE,yBAAyB,2CAe3B;AAED,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button-group/button-group.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nconst buttonGroupVariants = cva(\n [\n 'flex w-fit items-stretch',\n // Apply shadow to the group container instead of individual children\n 'rounded-6 shadow-button-neutral',\n // Focus management\n '[&>*]:focus-visible:z-10 [&>*]:focus-visible:relative',\n // Select trigger sizing\n \"[&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit\",\n // Input flex\n '[&>input]:flex-1',\n // Nested button groups\n 'has-[>[data-slot=button-group]]:gap-8',\n // Remove shadows from all children to prevent inner shadow artifacts\n '[&>*]:shadow-none',\n ],\n {\n variants: {\n orientation: {\n horizontal: [\n // Remove left border-radius and left border from all but first child\n '[&>*:not(:first-child)]:rounded-l-none',\n '[&>*:not(:first-child)]:border-l-0',\n // Remove right border-radius from all but last child\n '[&>*:not(:last-child)]:rounded-r-none',\n ],\n vertical: [\n 'flex-col',\n // Remove top border-radius and top border from all but first child\n '[&>*:not(:first-child)]:rounded-t-none',\n '[&>*:not(:first-child)]:border-t-0',\n // Remove bottom border-radius from all but last child\n '[&>*:not(:last-child)]:rounded-b-none',\n ],\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n);\n\ntype ButtonGroupProps = ComponentProps<'div'> & VariantProps<typeof buttonGroupVariants>;\n\nfunction ButtonGroup({className, orientation, ...props}: ButtonGroupProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: role=\"group\" is semantically correct for button groups\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({orientation}), className)}\n {...props}\n />\n );\n}\n\ntype ButtonGroupTextProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nfunction ButtonGroupText({className, asChild = false, ...props}: ButtonGroupTextProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"button-group-text\"\n className={cn(\n 'flex items-center gap-8 rounded-6 px-12',\n 'bg-background-field-base text-foreground-neutral-subtle',\n 'text-sm leading-20 font-medium',\n 'shadow-button-neutral',\n \"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-16\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype ButtonGroupSeparatorProps = ComponentProps<'div'> & {\n orientation?: 'horizontal' | 'vertical';\n};\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: ButtonGroupSeparatorProps) {\n return (\n <div\n aria-hidden=\"true\"\n data-slot=\"button-group-separator\"\n data-orientation={orientation}\n className={cn(\n 'shrink-0 self-stretch',\n 'bg-border-neutral-strong',\n orientation === 'vertical' ? 'h-auto w-px' : 'h-px w-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants};\n"],"names":["Slot","cva","cn","buttonGroupVariants","variants","orientation","horizontal","vertical","defaultVariants","ButtonGroup","className","props","div","role","data-slot","data-orientation","ButtonGroupText","asChild","Comp","ButtonGroupSeparator","aria-hidden"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,WAAW;AAE5B,MAAMC,sBAAsBF,IAC1B;IACE;IACA,qEAAqE;IACrE;IACA,mBAAmB;IACnB;IACA,wBAAwB;IACxB;IACA,aAAa;IACb;IACA,uBAAuB;IACvB;IACA,qEAAqE;IACrE;CACD,EACD;IACEG,UAAU;QACRC,aAAa;YACXC,YAAY;gBACV,qEAAqE;gBACrE;gBACA;gBACA,qDAAqD;gBACrD;aACD;YACDC,UAAU;gBACR;gBACA,mEAAmE;gBACnE;gBACA;gBACA,sDAAsD;gBACtD;aACD;QACH;IACF;IACAC,iBAAiB;QACfH,aAAa;IACf;AACF;AAKF,SAASI,YAAY,EAACC,SAAS,EAAEL,WAAW,EAAE,GAAGM,OAAwB;IACvE,OACE,qGAAqG;kBACrG,KAACC;QACCC,MAAK;QACLC,aAAU;QACVC,oBAAkBV;QAClBK,WAAWR,GAAGC,oBAAoB;YAACE;QAAW,IAAIK;QACjD,GAAGC,KAAK;;AAGf;AAMA,SAASK,gBAAgB,EAACN,SAAS,EAAEO,UAAU,KAAK,EAAE,GAAGN,OAA4B;IACnF,MAAMO,OAAOD,UAAUjB,OAAO;IAE9B,qBACE,KAACkB;QACCJ,aAAU;QACVJ,WAAWR,GACT,2CACA,2DACA,kCACA,yBACA,qEACAQ;QAED,GAAGC,KAAK;;AAGf;AAMA,SAASQ,qBAAqB,EAC5BT,SAAS,EACTL,cAAc,UAAU,EACxB,GAAGM,OACuB;IAC1B,qBACE,KAACC;QACCQ,eAAY;QACZN,aAAU;QACVC,oBAAkBV;QAClBK,WAAWR,GACT,yBACA,4BACAG,gBAAgB,aAAa,gBAAgB,eAC7CK;QAED,GAAGC,KAAK;;AAGf;AAEA,SAAQF,WAAW,EAAEU,oBAAoB,EAAEH,eAAe,EAAEb,mBAAmB,GAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button-group/button-group.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {useState} from 'react';\nimport {Button} from '../button';\nimport {Icon} from '../icon';\nimport {Input} from '../input';\nimport {Popover, PopoverContent, PopoverTrigger} from '../popover';\nimport {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from '../select';\nimport {Textarea} from '../textarea';\nimport {Code, Header} from '../typography';\nimport {ButtonGroup, ButtonGroupSeparator, ButtonGroupText} from './button-group';\n\nconst meta = {\n title: 'Components/ButtonGroup',\n component: ButtonGroup,\n tags: ['autodocs'],\n parameters: {\n docs: {\n description: {\n component:\n 'A container that groups related buttons together with consistent styling. Automatically styles Button, Input, Select, and Textarea children without requiring manual className overrides. Separators are recommended for visual hierarchy.',\n },\n },\n },\n argTypes: {\n orientation: {\n control: 'select',\n options: ['horizontal', 'vertical'],\n description: 'The orientation of the button group',\n defaultValue: 'horizontal',\n },\n },\n} satisfies Meta<typeof ButtonGroup>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nfunction SelectExample() {\n const [currency, setCurrency] = useState('$');\n\n return (\n <div className=\"inline-flex gap-8\">\n <ButtonGroup className=\"w-280\" aria-label=\"Currency converter\">\n <Select value={currency} onValueChange={setCurrency}>\n <SelectTrigger\n className=\"w-80 font-mono text-foreground-neutral-subtle\"\n aria-label=\"Select currency\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"start\">\n <SelectItem value=\"$\">$ USD</SelectItem>\n <SelectItem value=\"€\">€ EUR</SelectItem>\n <SelectItem value=\"£\">£ GBP</SelectItem>\n <SelectItem value=\"¥\">¥ JPY</SelectItem>\n </SelectContent>\n </Select>\n <ButtonGroupSeparator />\n <Input placeholder=\"10.00\" pattern=\"[0-9]*\" aria-label=\"Amount\" />\n </ButtonGroup>\n <ButtonGroup aria-label=\"Send action\">\n <Button variant=\"secondary\" aria-label=\"Send\">\n <Icon name=\"arrowRightLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n );\n}\n\nfunction PopoverExample() {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonGroup aria-label=\"Copilot actions\">\n <ButtonGroupText>\n <Icon name=\"sparklingLine\" className=\"size-16\" />\n Copilot\n </ButtonGroupText>\n <ButtonGroupSeparator />\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n className=\"!text-foreground-neutral-subtle\"\n aria-label=\"Open Copilot options\"\n >\n <Icon name=\"arrowDownSLine\" className=\"size-16\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"w-320 p-0 rounded-12\">\n <div className=\"px-16 py-12 border-b border-border-neutral-strong\">\n <Header variant=\"h4\" className=\"text-sm font-medium\">\n Agent Tasks\n </Header>\n </div>\n <div className=\"p-16 flex flex-col gap-12\">\n <Textarea\n placeholder=\"Describe your task in natural language.\"\n className=\"min-h-80 resize-none\"\n aria-label=\"Task description\"\n />\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"font-medium text-foreground-neutral-base\">\n Start a new task with Copilot\n </Code>\n <Code variant=\"paragraph\" className=\"text-foreground-neutral-subtle text-xs\">\n Describe your task in natural language. Copilot will work in the background and open\n a pull request for your review.\n </Code>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </ButtonGroup>\n );\n}\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-col gap-24\">\n {/* Basic Button Group */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Basic Button Group\n </Code>\n <ButtonGroup aria-label=\"Text alignment\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Align left\">\n <Icon name=\"rewindFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Align center\">\n <Icon name=\"playFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Align right\">\n <Icon name=\"speedFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* Sizes */}\n <div className=\"flex flex-col gap-12\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Sizes\n </Code>\n <div className=\"flex flex-col gap-8\">\n <ButtonGroup aria-label=\"Small buttons\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Cut\">\n <Icon name=\"rewindFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Copy\">\n <Icon name=\"playFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Paste\">\n <Icon name=\"speedFill\" className=\"size-14 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n <ButtonGroup aria-label=\"Medium buttons\">\n <Button variant=\"secondary\" size=\"md\" aria-label=\"Cut\">\n <Icon name=\"rewindFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"md\" aria-label=\"Copy\">\n <Icon name=\"playFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"md\" aria-label=\"Paste\">\n <Icon name=\"speedFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n <ButtonGroup aria-label=\"Large buttons\">\n <Button variant=\"secondary\" size=\"lg\" aria-label=\"Cut\">\n <Icon name=\"rewindFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"lg\" aria-label=\"Copy\">\n <Icon name=\"playFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"lg\" aria-label=\"Paste\">\n <Icon name=\"speedFill\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n </div>\n\n {/* Orientation */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Orientation\n </Code>\n <div className=\"flex gap-24 items-start\">\n <ButtonGroup aria-label=\"Horizontal\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Zoom in\">\n <Icon name=\"addLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Zoom out\">\n <Icon name=\"subtractLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n <ButtonGroup orientation=\"vertical\" className=\"h-fit w-fit\" aria-label=\"Vertical\">\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Increase\">\n <Icon name=\"addLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator orientation=\"horizontal\" />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"Decrease\">\n <Icon name=\"subtractLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n </div>\n\n {/* Split Button */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Split Button\n </Code>\n <ButtonGroup aria-label=\"Save actions\">\n <Button variant=\"secondary\" size=\"sm\" className=\" !text-foreground-neutral-subtle\">\n Save\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" aria-label=\"More options\">\n <Icon name=\"arrowDownSLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* With Input */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n With Input\n </Code>\n <ButtonGroup className=\"w-320\" aria-label=\"Search\">\n <Input placeholder=\"Search...\" aria-label=\"Search input\" />\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" aria-label=\"Submit search\">\n <Icon name=\"searchLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* Quantity Input */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Quantity Selector\n </Code>\n <ButtonGroup className=\"w-280\" aria-label=\"Quantity selector\">\n <Button variant=\"secondary\" aria-label=\"Decrease\">\n <Icon name=\"subtractLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Input placeholder=\"1\" className=\"text-center\" aria-label=\"Quantity\" />\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" aria-label=\"Increase\">\n <Icon name=\"addLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n\n {/* With Select */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n With Select\n </Code>\n <SelectExample />\n </div>\n\n {/* With Popover */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n With Popover\n </Code>\n <PopoverExample />\n </div>\n\n {/* Nested Groups */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Nested Groups\n </Code>\n <div className=\"inline-flex gap-8\">\n <ButtonGroup aria-label=\"Page selection\">\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 1\"\n >\n 1\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 2\"\n >\n 2\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 3\"\n >\n 3\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 4\"\n >\n 4\n </Button>\n <ButtonGroupSeparator />\n <Button\n variant=\"transparent\"\n className=\"w-42 !text-foreground-neutral-subtle\"\n aria-label=\"Page 5\"\n >\n 5\n </Button>\n </ButtonGroup>\n <ButtonGroup aria-label=\"Pagination controls\">\n <Button variant=\"transparent\" aria-label=\"Previous page\">\n <Icon name=\"arrowLeftSLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"transparent\" aria-label=\"Next page\">\n <Icon name=\"arrowRightSLine\" className=\"size-16 text-foreground-neutral-subtle\" />\n </Button>\n </ButtonGroup>\n </div>\n </div>\n\n {/* Disabled State */}\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Disabled State\n </Code>\n <ButtonGroup aria-label=\"Button group with disabled state\">\n <Button variant=\"secondary\" size=\"sm\" className=\" !text-foreground-neutral-subtle\">\n Enabled\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" disabled>\n Disabled\n </Button>\n <ButtonGroupSeparator />\n <Button variant=\"secondary\" size=\"sm\" className=\" !text-foreground-neutral-subtle\">\n Enabled\n </Button>\n </ButtonGroup>\n </div>\n </div>\n ),\n};\n"],"names":["useState","Button","Icon","Input","Popover","PopoverContent","PopoverTrigger","Select","SelectContent","SelectItem","SelectTrigger","SelectValue","Textarea","Code","Header","ButtonGroup","ButtonGroupSeparator","ButtonGroupText","meta","title","component","tags","parameters","docs","description","argTypes","orientation","control","options","defaultValue","SelectExample","currency","setCurrency","div","className","aria-label","value","onValueChange","align","placeholder","pattern","variant","name","PopoverExample","open","setOpen","onOpenChange","asChild","size","Default","render","disabled"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/button-group/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/button-group/index.ts"],"sourcesContent":["export * from './button-group';\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/components/calendar/calendar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAG3C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAE7D,wBAAgB,QAAQ,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,eAAsB,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,2CAkFhG"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/calendar/calendar.tsx"],"sourcesContent":["import {Icon} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {DayPicker} from 'react-day-picker';\nimport {cn} from 'utils/cn';\n\nexport type CalendarProps = ComponentProps<typeof DayPicker>;\n\nexport function Calendar({className, classNames, showOutsideDays = true, ...props}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-16 transition-colors', className)}\n classNames={{\n months: 'flex flex-col sm:flex-row gap-24',\n month: 'space-y-16 relative',\n month_caption: 'flex items-center justify-center mb-8 px-4 relative h-32',\n caption_label: 'text-sm font-medium text-foreground-neutral-base',\n nav: 'flex items-center gap-4 fixed left-0 top-16 w-full z-10',\n button_previous: cn(\n 'size-32 bg-transparent p-0 absolute left-16 top-0',\n 'inline-flex items-center justify-center rounded-6',\n 'text-foreground-neutral-base',\n 'hover:bg-background-button-transparent-hover',\n 'active:bg-background-button-transparent-pressed',\n 'transition-colors outline-none',\n 'focus-visible:shadow-border-interactive-with-active',\n 'disabled:pointer-events-none disabled:opacity-50',\n ),\n button_next: cn(\n 'size-32 bg-transparent p-0 absolute right-16 top-0',\n 'inline-flex items-center justify-center rounded-6',\n 'text-foreground-neutral-base',\n 'hover:bg-background-button-transparent-hover',\n 'active:bg-background-button-transparent-pressed',\n 'transition-colors outline-none',\n 'focus-visible:shadow-border-interactive-with-active',\n 'disabled:pointer-events-none disabled:opacity-50',\n ),\n month_grid: 'w-full border-collapse mt-8',\n weekdays: 'flex mb-8',\n weekday:\n 'text-foreground-neutral-subtle text-xs font-medium w-36 h-32 flex items-center justify-center',\n week: 'flex mt-4',\n day: cn(\n 'relative text-center size-36 p-0 text-sm font-normal [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none',\n '[&:last-child[data-selected=true]_button]:rounded-r-6',\n props.showWeekNumber\n ? '[&:nth-child(2)[data-selected=true]_button]:rounded-l-6'\n : '[&:first-child[data-selected=true]_button]:rounded-l-6',\n ),\n day_button: cn(\n 'size-36 p-0 text-sm font-normal rounded-6',\n 'inline-flex items-center justify-center',\n 'hover:bg-background-button-transparent-hover',\n 'focus-visible:shadow-border-interactive-with-active',\n 'transition-colors outline-none',\n 'aria-selected:opacity-100',\n ),\n range_start: 'day-range-start rounded-6',\n range_end: 'day-range-end rounded-6',\n selected: cn(\n 'bg-foreground-highlight-interactive/80 !text-foreground-neutral-base font-medium rounded-6',\n 'hover:bg-foreground-highlight-interactive-hover/80',\n 'focus:bg-foreground-highlight-interactive/80',\n ),\n today: cn(\n 'bg-background-field-base text-foreground-neutral-base font-medium rounded-6',\n 'border border-border-neutral-base',\n ),\n outside: 'day-outside text-foreground-neutral-muted',\n disabled: 'text-foreground-neutral-disabled opacity-30 cursor-not-allowed',\n range_middle: cn(\n 'aria-selected:bg-foreground-highlight-interactive/10 aria-selected:text-foreground-neutral-base',\n 'rounded-none',\n 'first:rounded-l-6 first:rounded-r-none',\n 'last:rounded-r-6 last:rounded-l-none',\n ),\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({orientation}) => {\n const iconName = orientation === 'left' ? 'arrowLeftSLine' : 'arrowRightSLine';\n return <Icon name={iconName} className=\"size-20\" />;\n },\n }}\n {...props}\n />\n );\n}\n"],"names":["Icon","DayPicker","cn","Calendar","className","classNames","showOutsideDays","props","months","month","month_caption","caption_label","nav","button_previous","button_next","month_grid","weekdays","weekday","week","day","showWeekNumber","day_button","range_start","range_end","selected","today","outside","disabled","range_middle","hidden","components","Chevron","orientation","iconName","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,kBAAkB;AAErC,SAAQC,SAAS,QAAO,mBAAmB;AAC3C,SAAQC,EAAE,QAAO,WAAW;AAI5B,OAAO,SAASC,SAAS,EAACC,SAAS,EAAEC,UAAU,EAAEC,kBAAkB,IAAI,EAAE,GAAGC,OAAqB;IAC/F,qBACE,KAACN;QACCK,iBAAiBA;QACjBF,WAAWF,GAAG,0BAA0BE;QACxCC,YAAY;YACVG,QAAQ;YACRC,OAAO;YACPC,eAAe;YACfC,eAAe;YACfC,KAAK;YACLC,iBAAiBX,GACf,qDACA,qDACA,gCACA,gDACA,mDACA,kCACA,uDACA;YAEFY,aAAaZ,GACX,sDACA,qDACA,gCACA,gDACA,mDACA,kCACA,uDACA;YAEFa,YAAY;YACZC,UAAU;YACVC,SACE;YACFC,MAAM;YACNC,KAAKjB,GACH,mJACA,yDACAK,MAAMa,cAAc,GAChB,4DACA;YAENC,YAAYnB,GACV,6CACA,2CACA,gDACA,uDACA,kCACA;YAEFoB,aAAa;YACbC,WAAW;YACXC,UAAUtB,GACR,8FACA,sDACA;YAEFuB,OAAOvB,GACL,+EACA;YAEFwB,SAAS;YACTC,UAAU;YACVC,cAAc1B,GACZ,mGACA,gBACA,0CACA;YAEF2B,QAAQ;YACR,GAAGxB,UAAU;QACf;QACAyB,YAAY;YACVC,SAAS,CAAC,EAACC,WAAW,EAAC;gBACrB,MAAMC,WAAWD,gBAAgB,SAAS,mBAAmB;gBAC7D,qBAAO,KAAChC;oBAAKkC,MAAMD;oBAAU7B,WAAU;;YACzC;QACF;QACC,GAAGG,KAAK;;AAGf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/calendar/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/calendar/index.ts"],"sourcesContent":["export * from './calendar';\n"],"names":[],"mappings":"AAAA,cAAc,aAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkbox-label.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox-label.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAW,KAAK,aAAa,EAAC,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,EAAE,EACF,KAAK,EACL,QAAgB,EAChB,WAAW,EACX,YAAoB,EACpB,MAAc,EACd,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,GAAG,aAAa,EACjB,EAAE,kBAAkB,2CA+FpB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/checkbox/checkbox-label.tsx"],"sourcesContent":["import {useId} from 'react';\nimport {cn} from 'utils/cn';\nimport {Icon} from '../icon/icon';\nimport {Label} from '../label/label';\nimport {Checkbox, type CheckboxProps} from './checkbox';\n\nexport type CheckboxLabelProps = Omit<CheckboxProps, 'id'> & {\n id?: string;\n label: string;\n optional?: boolean;\n description?: string;\n showInfoIcon?: boolean;\n border?: boolean;\n className?: string;\n labelClassName?: string;\n descriptionClassName?: string;\n};\n\nexport function CheckboxLabel({\n id,\n label,\n optional = false,\n description,\n showInfoIcon = false,\n border = false,\n className,\n labelClassName,\n descriptionClassName,\n ...checkboxProps\n}: CheckboxLabelProps) {\n const generateId = useId();\n const checkboxId = id || generateId;\n const isDisabled = checkboxProps.disabled ?? false;\n\n const renderContent = (checkboxId: string) => (\n <div className=\"flex flex-col gap-4 flex-1 min-w-0\">\n <div className=\"flex gap-4 items-center\">\n <Label\n className={cn(\n 'text-sm leading-20 overflow-hidden text-ellipsis whitespace-nowrap',\n isDisabled\n ? 'font-normal text-foreground-neutral-subtle'\n : 'font-medium text-foreground-neutral-base',\n labelClassName,\n )}\n htmlFor={checkboxId}\n >\n {label}\n </Label>\n {optional && (\n <span className=\"text-sm leading-20 font-regular text-foreground-neutral-muted whitespace-nowrap\">\n (Optional)\n </span>\n )}\n {showInfoIcon && (\n <Icon\n name=\"info\"\n className=\"size-16 text-foreground-neutral-muted shrink-0\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n {description && (\n <p\n className={cn(\n 'text-sm leading-20',\n isDisabled ? 'text-foreground-neutral-disabled' : 'text-foreground-neutral-subtle',\n descriptionClassName,\n )}\n >\n {description}\n </p>\n )}\n </div>\n );\n\n if (border) {\n return (\n <Label\n htmlFor={checkboxId}\n className={cn(\n // Base container styles with border\n 'flex items-start gap-10 rounded-8 p-8 transition-all duration-100',\n // Unchecked state - default\n 'bg-checkbox-unchecked-bg shadow-checkbox-unchecked',\n // Unchecked state - hover\n 'hover:bg-checkbox-unchecked-bg-hover',\n // Unchecked state - focus\n 'has-data-[state=unchecked]:focus-visible:shadow-border-interactive-with-active',\n // Checked state - default\n 'has-data-[state=checked]:bg-background-neutral-base has-data-[state=checked]:shadow-checkbox-checked',\n // Checked state - hover\n 'has-data-[state=checked]:hover:bg-background-neutral-hover',\n // Checked state - focus\n 'has-data-[state=checked]:focus-visible:shadow-checkbox-checked-focus',\n // Indeterminate state - default\n 'has-data-[state=indeterminate]:bg-background-neutral-base has-data-[state=indeterminate]:shadow-checkbox-indeterminate',\n // Indeterminate state - hover\n 'has-data-[state=indeterminate]:hover:bg-background-neutral-hover',\n // Indeterminate state - focus\n 'has-data-[state=indeterminate]:focus-visible:shadow-checkbox-indeterminate-focus',\n // Disabled state\n isDisabled && 'opacity-50 cursor-not-allowed',\n !isDisabled && 'cursor-pointer',\n className,\n )}\n >\n <span className=\"p-4\">\n <Checkbox id={checkboxId} {...checkboxProps} />\n </span>\n {renderContent(checkboxId)}\n </Label>\n );\n }\n\n // Without border variant\n return (\n <div className={cn('flex items-start gap-10', className)}>\n <span className=\"p-2\">\n <Checkbox id={checkboxId} {...checkboxProps} />\n </span>\n {renderContent(checkboxId)}\n </div>\n );\n}\n"],"names":["useId","cn","Icon","Label","Checkbox","CheckboxLabel","id","label","optional","description","showInfoIcon","border","className","labelClassName","descriptionClassName","checkboxProps","generateId","checkboxId","isDisabled","disabled","renderContent","div","htmlFor","span","name","aria-hidden","p"],"mappings":";AAAA,SAAQA,KAAK,QAAO,QAAQ;AAC5B,SAAQC,EAAE,QAAO,WAAW;AAC5B,SAAQC,IAAI,QAAO,eAAe;AAClC,SAAQC,KAAK,QAAO,iBAAiB;AACrC,SAAQC,QAAQ,QAA2B,aAAa;AAcxD,OAAO,SAASC,cAAc,EAC5BC,EAAE,EACFC,KAAK,EACLC,WAAW,KAAK,EAChBC,WAAW,EACXC,eAAe,KAAK,EACpBC,SAAS,KAAK,EACdC,SAAS,EACTC,cAAc,EACdC,oBAAoB,EACpB,GAAGC,eACgB;IACnB,MAAMC,aAAahB;IACnB,MAAMiB,aAAaX,MAAMU;IACzB,MAAME,aAAaH,cAAcI,QAAQ,IAAI;IAE7C,MAAMC,gBAAgB,CAACH,2BACrB,MAACI;YAAIT,WAAU;;8BACb,MAACS;oBAAIT,WAAU;;sCACb,KAACT;4BACCS,WAAWX,GACT,sEACAiB,aACI,+CACA,4CACJL;4BAEFS,SAASL;sCAERV;;wBAEFC,0BACC,KAACe;4BAAKX,WAAU;sCAAkF;;wBAInGF,8BACC,KAACR;4BACCsB,MAAK;4BACLZ,WAAU;4BACVa,eAAY;;;;gBAIjBhB,6BACC,KAACiB;oBACCd,WAAWX,GACT,sBACAiB,aAAa,qCAAqC,kCAClDJ;8BAGDL;;;;IAMT,IAAIE,QAAQ;QACV,qBACE,MAACR;YACCmB,SAASL;YACTL,WAAWX,GACT,oCAAoC;YACpC,qEACA,4BAA4B;YAC5B,sDACA,0BAA0B;YAC1B,wCACA,0BAA0B;YAC1B,kFACA,0BAA0B;YAC1B,wGACA,wBAAwB;YACxB,8DACA,wBAAwB;YACxB,wEACA,gCAAgC;YAChC,0HACA,8BAA8B;YAC9B,oEACA,8BAA8B;YAC9B,oFACA,iBAAiB;YACjBiB,cAAc,iCACd,CAACA,cAAc,kBACfN;;8BAGF,KAACW;oBAAKX,WAAU;8BACd,cAAA,KAACR;wBAASE,IAAIW;wBAAa,GAAGF,aAAa;;;gBAE5CK,cAAcH;;;IAGrB;IAEA,yBAAyB;IACzB,qBACE,MAACI;QAAIT,WAAWX,GAAG,2BAA2BW;;0BAC5C,KAACW;gBAAKX,WAAU;0BACd,cAAA,KAACR;oBAASE,IAAIW;oBAAa,GAAGF,aAAa;;;YAE5CK,cAAcH;;;AAGrB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkbox-links.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox-links.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,SAAS,EAAQ,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAW,KAAK,aAAa,EAAC,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,EAAE,EACF,KAAK,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,aAAa,EACb,GAAG,aAAa,EACjB,EAAE,kBAAkB,2CA4DpB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/checkbox/checkbox-links.tsx"],"sourcesContent":["import {buttonLinkVariants} from 'components/button/button-link';\nimport {Label} from 'components/label';\nimport {type ReactNode, useId} from 'react';\nimport {cn} from 'utils/cn';\nimport {Checkbox, type CheckboxProps} from './checkbox';\n\nexport type CheckboxLink = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type CheckboxLinksProps = Omit<CheckboxProps, 'id'> & {\n id?: string;\n label: string;\n links: CheckboxLink[];\n separator?: ReactNode;\n className?: string;\n labelClassName?: string;\n linkClassName?: string;\n};\n\nexport function CheckboxLinks({\n id,\n label,\n links,\n separator,\n className,\n labelClassName,\n linkClassName,\n ...checkboxProps\n}: CheckboxLinksProps) {\n const generateId = useId();\n const checkboxId = id || generateId;\n const isDisabled = checkboxProps.disabled ?? false;\n const defaultSeparator = (\n <span className=\"size-3 rounded-full bg-foreground-neutral-muted\" aria-hidden=\"true\" />\n );\n\n return (\n <div className={cn('flex gap-10 items-start', className)}>\n <span className=\"p-2\">\n <Checkbox id={checkboxId} {...checkboxProps} />\n </span>\n <div className=\"flex flex-col gap-4 items-start flex-1\">\n <Label\n htmlFor={checkboxId}\n className={cn(\n 'text-sm leading-20 font-medium text-foreground-neutral-base',\n isDisabled && 'cursor-not-allowed opacity-50',\n labelClassName,\n )}\n >\n {label}\n </Label>\n <div className=\"flex gap-6 items-center\">\n {links.map((link, index) => (\n <div key={link.label} className=\"flex gap-6 items-center\">\n {link.href ? (\n <a\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={link.onClick}\n className={cn(\n 'text-sm leading-20 font-medium text-foreground-highlight-interactive',\n 'hover:text-foreground-highlight-interactive-hover transition-colors',\n linkClassName,\n )}\n >\n {link.label}\n </a>\n ) : (\n <button\n type=\"button\"\n onClick={link.onClick}\n className={cn(\n buttonLinkVariants({variant: 'interactive', size: 'sm'}),\n linkClassName,\n )}\n >\n {link.label}\n </button>\n )}\n {index < links.length - 1 && (separator ?? defaultSeparator)}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["buttonLinkVariants","Label","useId","cn","Checkbox","CheckboxLinks","id","label","links","separator","className","labelClassName","linkClassName","checkboxProps","generateId","checkboxId","isDisabled","disabled","defaultSeparator","span","aria-hidden","div","htmlFor","map","link","index","href","a","target","rel","onClick","button","type","variant","size","length"],"mappings":";AAAA,SAAQA,kBAAkB,QAAO,gCAAgC;AACjE,SAAQC,KAAK,QAAO,mBAAmB;AACvC,SAAwBC,KAAK,QAAO,QAAQ;AAC5C,SAAQC,EAAE,QAAO,WAAW;AAC5B,SAAQC,QAAQ,QAA2B,aAAa;AAkBxD,OAAO,SAASC,cAAc,EAC5BC,EAAE,EACFC,KAAK,EACLC,KAAK,EACLC,SAAS,EACTC,SAAS,EACTC,cAAc,EACdC,aAAa,EACb,GAAGC,eACgB;IACnB,MAAMC,aAAaZ;IACnB,MAAMa,aAAaT,MAAMQ;IACzB,MAAME,aAAaH,cAAcI,QAAQ,IAAI;IAC7C,MAAMC,iCACJ,KAACC;QAAKT,WAAU;QAAkDU,eAAY;;IAGhF,qBACE,MAACC;QAAIX,WAAWP,GAAG,2BAA2BO;;0BAC5C,KAACS;gBAAKT,WAAU;0BACd,cAAA,KAACN;oBAASE,IAAIS;oBAAa,GAAGF,aAAa;;;0BAE7C,MAACQ;gBAAIX,WAAU;;kCACb,KAACT;wBACCqB,SAASP;wBACTL,WAAWP,GACT,+DACAa,cAAc,iCACdL;kCAGDJ;;kCAEH,KAACc;wBAAIX,WAAU;kCACZF,MAAMe,GAAG,CAAC,CAACC,MAAMC,sBAChB,MAACJ;gCAAqBX,WAAU;;oCAC7Bc,KAAKE,IAAI,iBACR,KAACC;wCACCD,MAAMF,KAAKE,IAAI;wCACfE,QAAO;wCACPC,KAAI;wCACJC,SAASN,KAAKM,OAAO;wCACrBpB,WAAWP,GACT,wEACA,uEACAS;kDAGDY,KAAKjB,KAAK;uDAGb,KAACwB;wCACCC,MAAK;wCACLF,SAASN,KAAKM,OAAO;wCACrBpB,WAAWP,GACTH,mBAAmB;4CAACiC,SAAS;4CAAeC,MAAM;wCAAI,IACtDtB;kDAGDY,KAAKjB,KAAK;;oCAGdkB,QAAQjB,MAAM2B,MAAM,GAAG,KAAM1B,CAAAA,aAAaS,gBAAe;;+BA3BlDM,KAAKjB,KAAK;;;;;;AAkChC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,eAAO,MAAM,gBAAgB;;8EAc5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,GACvE,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAExC,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,IAAI,EACJ,OAAO,EACP,cAAc,EACd,eAAe,EACf,GAAG,KAAK,EACT,EAAE,aAAa,2CAsCf"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/checkbox/checkbox.tsx"],"sourcesContent":["import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport {Icon} from 'components/icon';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const checkboxVariants = cva(\n 'peer shrink-0 border-none transition-all duration-100 outline-none cursor-pointer',\n {\n variants: {\n size: {\n sm: 'size-16',\n md: 'size-20',\n lg: 'size-24',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\nexport type CheckboxProps = ComponentProps<typeof CheckboxPrimitive.Root> &\n VariantProps<typeof checkboxVariants>;\n\nexport function Checkbox({\n className,\n size,\n checked,\n defaultChecked,\n onCheckedChange,\n ...props\n}: CheckboxProps) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n className={cn(\n checkboxVariants({size}),\n // Unchecked state - default\n 'rounded-4 bg-checkbox-unchecked-bg shadow-checkbox-unchecked',\n // Unchecked state - hover\n 'hover:bg-checkbox-unchecked-bg-hover',\n // Unchecked state - focus\n 'focus-visible:shadow-checkbox-unchecked-focus',\n // Checked state\n 'data-[state=checked]:bg-checkbox-checked-bg data-[state=checked]:text-foreground-neutral-on-color data-[state=checked]:shadow-checkbox-checked',\n 'data-[state=checked]:hover:bg-checkbox-checked-bg-hover',\n 'data-[state=checked]:focus-visible:shadow-checkbox-checked-focus',\n // Indeterminate state\n 'data-[state=indeterminate]:bg-checkbox-indeterminate-bg data-[state=indeterminate]:text-foreground-neutral-on-color data-[state=indeterminate]:shadow-checkbox-indeterminate',\n 'data-[state=indeterminate]:hover:bg-checkbox-indeterminate-bg-hover',\n 'data-[state=indeterminate]:focus-visible:shadow-checkbox-indeterminate-focus',\n // Disabled state\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {checked === 'indeterminate' ? (\n <Icon name=\"subtractLine\" className=\"size-16\" aria-hidden=\"true\" />\n ) : (\n <Icon name=\"check\" className=\"size-16\" aria-hidden=\"true\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n"],"names":["CheckboxPrimitive","cva","Icon","cn","checkboxVariants","variants","size","sm","md","lg","defaultVariants","Checkbox","className","checked","defaultChecked","onCheckedChange","props","Root","data-slot","Indicator","name","aria-hidden"],"mappings":";AAAA,YAAYA,uBAAuB,2BAA2B;AAC9D,SAAQC,GAAG,QAA0B,2BAA2B;AAChE,SAAQC,IAAI,QAAO,kBAAkB;AAErC,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,mBAAmBH,IAC9B,qFACA;IACEI,UAAU;QACRC,MAAM;YACJC,IAAI;YACJC,IAAI;YACJC,IAAI;QACN;IACF;IACAC,iBAAiB;QACfJ,MAAM;IACR;AACF,GACA;AAKF,OAAO,SAASK,SAAS,EACvBC,SAAS,EACTN,IAAI,EACJO,OAAO,EACPC,cAAc,EACdC,eAAe,EACf,GAAGC,OACW;IACd,qBACE,KAAChB,kBAAkBiB,IAAI;QACrBC,aAAU;QACVL,SAASA;QACTC,gBAAgBA;QAChBC,iBAAiBA;QACjBH,WAAWT,GACTC,iBAAiB;YAACE;QAAI,IACtB,4BAA4B;QAC5B,gEACA,0BAA0B;QAC1B,wCACA,0BAA0B;QAC1B,iDACA,gBAAgB;QAChB,kJACA,2DACA,oEACA,sBAAsB;QACtB,gLACA,uEACA,gFACA,iBAAiB;QACjB,gFACAM;QAED,GAAGI,KAAK;kBAET,cAAA,KAAChB,kBAAkBmB,SAAS;YAACP,WAAU;sBACpCC,YAAY,gCACX,KAACX;gBAAKkB,MAAK;gBAAeR,WAAU;gBAAUS,eAAY;+BAE1D,KAACnB;gBAAKkB,MAAK;gBAAQR,WAAU;gBAAUS,eAAY;;;;AAK7D"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/checkbox/checkbox.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Code, Header} from 'components/typography';\nimport {Checkbox, CheckboxLabel, CheckboxLinks} from '.';\n\nconst meta = {\n title: 'Components/Checkbox',\n component: Checkbox,\n tags: ['autodocs'],\n argTypes: {\n size: {\n control: 'select',\n options: ['sm', 'md', 'lg'],\n },\n disabled: {control: 'boolean'},\n checked: {control: 'boolean'},\n },\n args: {\n size: 'md',\n disabled: false,\n },\n} satisfies Meta<typeof Checkbox>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: (args) => (\n <div className=\"flex flex-col gap-32\">\n <div className=\"flex flex-col gap-16\">\n <Header variant=\"h4\">Controlled Checkbox</Header>\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Use the controls below to change the checkbox state\n </Code>\n <Checkbox {...args} />\n </div>\n\n <div className=\"flex flex-col gap-32\">\n <Header variant=\"h4\">All States</Header>\n {(['sm', 'md', 'lg'] as const).map((size) => (\n <div key={size} className=\"flex flex-wrap gap-16\">\n <Header variant=\"h4\">Size: {size}</Header>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Unchecked\n </Code>\n <Checkbox size={size} />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Checked\n </Code>\n <Checkbox size={size} checked />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Indeterminate\n </Code>\n <Checkbox size={size} checked=\"indeterminate\" />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Disabled (Unchecked)\n </Code>\n <Checkbox size={size} disabled />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Disabled (Checked)\n </Code>\n <Checkbox size={size} checked disabled />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Focus\n </Code>\n <Checkbox size={size} className=\"focus\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n ),\n parameters: {\n pseudo: {\n focusVisible: '.focus',\n },\n },\n};\n\nexport const CheckboxLabelStory: StoryObj = {\n render: () => (\n <div className=\"flex flex-col gap-32 pb-64 pt-32 px-32 bg-background-neutral-base\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n CHECKBOX LABEL - WITHOUT BORDER\n </Code>\n <div className=\"flex flex-col gap-16\">\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Default - Unchecked\n </Code>\n <CheckboxLabel\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Hover - Unchecked\n </Code>\n <CheckboxLabel\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n className=\"hover\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Default - Checked\n </Code>\n <CheckboxLabel\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Hover - Checked\n </Code>\n <CheckboxLabel\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked\n className=\"hover\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Default - Indeterminate\n </Code>\n <CheckboxLabel\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked=\"indeterminate\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Disabled - Checked\n </Code>\n <CheckboxLabel\n label=\"Label\"\n checked\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n disabled\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Disabled - Unchecked\n </Code>\n <CheckboxLabel\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n disabled\n />\n </div>\n </div>\n\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle mt-32\">\n CHECKBOX LABEL - WITH BORDER\n </Code>\n <div className=\"flex flex-col gap-16\">\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Default - Unchecked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-default-unchecked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n border\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Hover - Unchecked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-hover-unchecked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n border\n className=\"hover\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Focus - Unchecked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-focus-unchecked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n border\n className=\"focus\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Default - Checked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-default-checked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked\n border\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Hover - Checked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-hover-checked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked\n border\n className=\"hover\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Focus - Checked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-focus-checked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked\n border\n className=\"focus\"\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Default - Indeterminate\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-default-indeterminate\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked=\"indeterminate\"\n border\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Disabled - Unchecked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-disabled-unchecked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n disabled\n border\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Disabled - Checked\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-disabled-checked\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked\n disabled\n border\n />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle text-xs\">\n Disabled - Indeterminate\n </Code>\n <CheckboxLabel\n id=\"checkbox-border-disabled-indeterminate\"\n label=\"Label\"\n optional\n showInfoIcon\n description=\"The quick brown fox jumps over a lazy dog.\"\n checked=\"indeterminate\"\n disabled\n border\n />\n </div>\n </div>\n </div>\n ),\n};\n\nCheckboxLabelStory.parameters = {\n pseudo: {\n hover: '.hover',\n focusVisible: '.focus',\n },\n};\n\nexport const CheckboxLinksStory: StoryObj = {\n args: {\n disabled: true,\n },\n\n render: () => (\n <div className=\"flex flex-col gap-32 pb-64 pt-32 px-32 bg-background-neutral-base\">\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n CHECKBOX LINKS\n </Code>\n <div className=\"flex flex-col gap-16\">\n <CheckboxLinks\n id=\"checkbox-links-default\"\n label=\"Accept policies\"\n links={[\n {label: 'Terms of use', href: 'https://www.shipfox.io/legal/terms-of-service'},\n {\n label: 'Privacy Policy',\n onClick: () =>\n window.open(\n 'https://www.shipfox.io/legal/privacy-policy',\n '_blank',\n 'noopener,noreferrer',\n ),\n },\n ]}\n />\n <CheckboxLinks\n id=\"checkbox-links-checked\"\n label=\"Accept policies\"\n links={[\n {label: 'Terms of use', href: 'https://www.shipfox.io/legal/terms-of-service'},\n {\n label: 'Privacy Policy',\n onClick: () =>\n window.open(\n 'https://www.shipfox.io/legal/privacy-policy',\n '_blank',\n 'noopener,noreferrer',\n ),\n },\n ]}\n checked\n />\n </div>\n </div>\n ),\n};\n"],"names":["Code","Header","Checkbox","CheckboxLabel","CheckboxLinks","meta","title","component","tags","argTypes","size","control","options","disabled","checked","args","Default","render","div","className","variant","map","parameters","pseudo","focusVisible","CheckboxLabelStory","label","optional","showInfoIcon","description","id","border","hover","CheckboxLinksStory","links","href","onClick","window","open"],"mappings":";AACA,SAAQA,IAAI,EAAEC,MAAM,QAAO,wBAAwB;AACnD,SAAQC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAO,IAAI;AAEzD,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWL;IACXM,MAAM;QAAC;KAAW;IAClBC,UAAU;QACRC,MAAM;YACJC,SAAS;YACTC,SAAS;gBAAC;gBAAM;gBAAM;aAAK;QAC7B;QACAC,UAAU;YAACF,SAAS;QAAS;QAC7BG,SAAS;YAACH,SAAS;QAAS;IAC9B;IACAI,MAAM;QACJL,MAAM;QACNG,UAAU;IACZ;AACF;AAEA,eAAeR,KAAK;AAIpB,OAAO,MAAMW,UAAiB;IAC5BC,QAAQ,CAACF,qBACP,MAACG;YAAIC,WAAU;;8BACb,MAACD;oBAAIC,WAAU;;sCACb,KAAClB;4BAAOmB,SAAQ;sCAAK;;sCACrB,KAACpB;4BAAKoB,SAAQ;4BAAQD,WAAU;sCAAiC;;sCAGjE,KAACjB;4BAAU,GAAGa,IAAI;;;;8BAGpB,MAACG;oBAAIC,WAAU;;sCACb,KAAClB;4BAAOmB,SAAQ;sCAAK;;wBACnB;4BAAC;4BAAM;4BAAM;yBAAK,CAAWC,GAAG,CAAC,CAACX,qBAClC,MAACQ;gCAAeC,WAAU;;kDACxB,MAAClB;wCAAOmB,SAAQ;;4CAAK;4CAAOV;;;kDAC5B,MAACQ;wCAAIC,WAAU;;0DACb,KAACnB;gDAAKoB,SAAQ;gDAAQD,WAAU;0DAAiC;;0DAGjE,KAACjB;gDAASQ,MAAMA;;;;kDAElB,MAACQ;wCAAIC,WAAU;;0DACb,KAACnB;gDAAKoB,SAAQ;gDAAQD,WAAU;0DAAiC;;0DAGjE,KAACjB;gDAASQ,MAAMA;gDAAMI,OAAO;;;;kDAE/B,MAACI;wCAAIC,WAAU;;0DACb,KAACnB;gDAAKoB,SAAQ;gDAAQD,WAAU;0DAAiC;;0DAGjE,KAACjB;gDAASQ,MAAMA;gDAAMI,SAAQ;;;;kDAEhC,MAACI;wCAAIC,WAAU;;0DACb,KAACnB;gDAAKoB,SAAQ;gDAAQD,WAAU;0DAAiC;;0DAGjE,KAACjB;gDAASQ,MAAMA;gDAAMG,QAAQ;;;;kDAEhC,MAACK;wCAAIC,WAAU;;0DACb,KAACnB;gDAAKoB,SAAQ;gDAAQD,WAAU;0DAAiC;;0DAGjE,KAACjB;gDAASQ,MAAMA;gDAAMI,OAAO;gDAACD,QAAQ;;;;kDAExC,MAACK;wCAAIC,WAAU;;0DACb,KAACnB;gDAAKoB,SAAQ;gDAAQD,WAAU;0DAAiC;;0DAGjE,KAACjB;gDAASQ,MAAMA;gDAAMS,WAAU;;;;;+BApC1BT;;;;;IA2ClBY,YAAY;QACVC,QAAQ;YACNC,cAAc;QAChB;IACF;AACF,EAAE;AAEF,OAAO,MAAMC,qBAA+B;IAC1CR,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACnB;oBAAKoB,SAAQ;oBAAQD,WAAU;8BAAiC;;8BAGjE,MAACD;oBAAIC,WAAU;;sCACb,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;;;;sCAGhB,MAACX;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZV,WAAU;;;;sCAGd,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,OAAO;;;;sCAGX,MAACI;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,OAAO;oCACPK,WAAU;;;;sCAGd,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,SAAQ;;;;sCAGZ,MAACI;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNZ,OAAO;oCACPa,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZhB,QAAQ;;;;sCAGZ,MAACK;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACCuB,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZhB,QAAQ;;;;;;8BAKd,KAACb;oBAAKoB,SAAQ;oBAAQD,WAAU;8BAAuC;;8BAGvE,MAACD;oBAAIC,WAAU;;sCACb,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZE,MAAM;;;;sCAGV,MAACb;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZE,MAAM;oCACNZ,WAAU;;;;sCAGd,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZE,MAAM;oCACNZ,WAAU;;;;sCAGd,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,OAAO;oCACPiB,MAAM;;;;sCAGV,MAACb;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,OAAO;oCACPiB,MAAM;oCACNZ,WAAU;;;;sCAGd,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,OAAO;oCACPiB,MAAM;oCACNZ,WAAU;;;;sCAGd,MAACD;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,SAAQ;oCACRiB,MAAM;;;;sCAGV,MAACb;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZhB,QAAQ;oCACRkB,MAAM;;;;sCAGV,MAACb;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,OAAO;oCACPD,QAAQ;oCACRkB,MAAM;;;;sCAGV,MAACb;4BAAIC,WAAU;;8CACb,KAACnB;oCAAKoB,SAAQ;oCAAQD,WAAU;8CAAyC;;8CAGzE,KAAChB;oCACC2B,IAAG;oCACHJ,OAAM;oCACNC,QAAQ;oCACRC,YAAY;oCACZC,aAAY;oCACZf,SAAQ;oCACRD,QAAQ;oCACRkB,MAAM;;;;;;;;AAMlB,EAAE;AAEFN,mBAAmBH,UAAU,GAAG;IAC9BC,QAAQ;QACNS,OAAO;QACPR,cAAc;IAChB;AACF;AAEA,OAAO,MAAMS,qBAA+B;IAC1ClB,MAAM;QACJF,UAAU;IACZ;IAEAI,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACnB;oBAAKoB,SAAQ;oBAAQD,WAAU;8BAAiC;;8BAGjE,MAACD;oBAAIC,WAAU;;sCACb,KAACf;4BACC0B,IAAG;4BACHJ,OAAM;4BACNQ,OAAO;gCACL;oCAACR,OAAO;oCAAgBS,MAAM;gCAA+C;gCAC7E;oCACET,OAAO;oCACPU,SAAS,IACPC,OAAOC,IAAI,CACT,+CACA,UACA;gCAEN;6BACD;;sCAEH,KAAClC;4BACC0B,IAAG;4BACHJ,OAAM;4BACNQ,OAAO;gCACL;oCAACR,OAAO;oCAAgBS,MAAM;gCAA+C;gCAC7E;oCACET,OAAO;oCACPU,SAAS,IACPC,OAAOC,IAAI,CACT,+CACA,UACA;gCAEN;6BACD;4BACDxB,OAAO;;;;;;AAKjB,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/checkbox/index.ts"],"sourcesContent":["export * from './checkbox';\nexport * from './checkbox-label';\nexport * from './checkbox-links';\n"],"names":[],"mappings":"AAAA,cAAc,aAAa;AAC3B,cAAc,mBAAmB;AACjC,cAAc,mBAAmB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-block-footer.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block-footer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAIrE,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAe,EACf,KAAiB,EACjB,OAAO,EACP,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAwDtB;AAED,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,wBAAwB,2CAY1B;AAED,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAY7B;AAED,MAAM,MAAM,2BAA2B,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAuB7B;AAED,MAAM,MAAM,+BAA+B,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,+BAA+B,2CAuBjC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/code-block-footer.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {Icon} from 'components/icon/icon';\nimport {ShinyText} from 'components/shiny-text';\nimport {Text} from 'components/typography';\nimport {useResolvedTheme} from 'hooks/useResolvedTheme';\nimport type {ComponentProps, HTMLAttributes, ReactNode} from 'react';\nimport {ShipfoxLoader} from 'shipfox-loader-react';\nimport {cn} from 'utils/cn';\n\nexport type CodeBlockFooterProps = HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n state?: 'running' | 'done';\n message?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n};\n\nexport function CodeBlockFooter({\n className,\n asChild = false,\n state = 'running',\n message,\n description,\n icon,\n children,\n ...props\n}: CodeBlockFooterProps) {\n const Comp = asChild ? Slot : 'div';\n const resolvedTheme = useResolvedTheme();\n\n const defaultIcon =\n icon ??\n (state === 'running' ? (\n <ShipfoxLoader\n size={20}\n animation=\"circular\"\n color={resolvedTheme === 'dark' ? 'white' : 'orange'}\n background={resolvedTheme === 'dark' ? 'dark' : 'light'}\n />\n ) : (\n <Icon\n name=\"checkCircleSolid\"\n className=\"size-20 text-foreground-neutral-base\"\n aria-hidden=\"true\"\n />\n ));\n\n if (asChild || children) {\n return (\n <Comp\n data-slot=\"code-block-footer\"\n className={cn('flex w-full items-center justify-start gap-12 px-16 py-12', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp\n data-slot=\"code-block-footer\"\n className={cn('flex w-full items-center justify-start gap-12 px-16 py-12', className)}\n {...props}\n >\n <CodeBlockFooterIcon className=\"text-tag-success-icon\">{defaultIcon}</CodeBlockFooterIcon>\n {(message || description) && (\n <CodeBlockFooterContent>\n {message && (\n <CodeBlockFooterMessage>\n {state === 'running' && typeof message === 'string' ? (\n <ShinyText text={message} speed={3} />\n ) : (\n message\n )}\n </CodeBlockFooterMessage>\n )}\n {description && <CodeBlockFooterDescription>{description}</CodeBlockFooterDescription>}\n </CodeBlockFooterContent>\n )}\n </Comp>\n );\n}\n\nexport type CodeBlockFooterIconProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterIcon({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterIconProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"code-block-footer-icon\"\n className={cn('flex shrink-0 items-center justify-center size-20', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n}\n\nexport type CodeBlockFooterContentProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterContent({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterContentProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-slot=\"code-block-footer-content\"\n className={cn('flex flex-col items-start justify-center gap-0 min-w-0 flex-1', className)}\n {...props}\n >\n {children}\n </Comp>\n );\n}\n\nexport type CodeBlockFooterMessageProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterMessage({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterMessageProps) {\n if (asChild) {\n return (\n <Slot\n data-slot=\"code-block-footer-message\"\n className={cn('overflow-hidden text-ellipsis whitespace-nowrap text-xs', className)}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <Text\n data-slot=\"code-block-footer-message\"\n size=\"xs\"\n className={cn('overflow-hidden text-ellipsis whitespace-nowrap', className)}\n {...props}\n >\n {children}\n </Text>\n );\n}\n\nexport type CodeBlockFooterDescriptionProps = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport function CodeBlockFooterDescription({\n className,\n asChild = false,\n children,\n ...props\n}: CodeBlockFooterDescriptionProps) {\n if (asChild) {\n return (\n <Slot\n data-slot=\"code-block-footer-description\"\n className={cn('text-xs text-foreground-neutral-subtle', className)}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <Text\n data-slot=\"code-block-footer-description\"\n size=\"xs\"\n className={cn('text-foreground-neutral-subtle', className)}\n {...props}\n >\n {children}\n </Text>\n );\n}\n"],"names":["Slot","Icon","ShinyText","Text","useResolvedTheme","ShipfoxLoader","cn","CodeBlockFooter","className","asChild","state","message","description","icon","children","props","Comp","resolvedTheme","defaultIcon","size","animation","color","background","name","aria-hidden","data-slot","CodeBlockFooterIcon","CodeBlockFooterContent","CodeBlockFooterMessage","text","speed","CodeBlockFooterDescription"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,SAAS,QAAO,wBAAwB;AAChD,SAAQC,IAAI,QAAO,wBAAwB;AAC3C,SAAQC,gBAAgB,QAAO,yBAAyB;AAExD,SAAQC,aAAa,QAAO,uBAAuB;AACnD,SAAQC,EAAE,QAAO,WAAW;AAU5B,OAAO,SAASC,gBAAgB,EAC9BC,SAAS,EACTC,UAAU,KAAK,EACfC,QAAQ,SAAS,EACjBC,OAAO,EACPC,WAAW,EACXC,IAAI,EACJC,QAAQ,EACR,GAAGC,OACkB;IACrB,MAAMC,OAAOP,UAAUT,OAAO;IAC9B,MAAMiB,gBAAgBb;IAEtB,MAAMc,cACJL,QACCH,CAAAA,UAAU,0BACT,KAACL;QACCc,MAAM;QACNC,WAAU;QACVC,OAAOJ,kBAAkB,SAAS,UAAU;QAC5CK,YAAYL,kBAAkB,SAAS,SAAS;uBAGlD,KAAChB;QACCsB,MAAK;QACLf,WAAU;QACVgB,eAAY;MAEhB;IAEF,IAAIf,WAAWK,UAAU;QACvB,qBACE,KAACE;YACCS,aAAU;YACVjB,WAAWF,GAAG,6DAA6DE;YAC1E,GAAGO,KAAK;sBAERD;;IAGP;IAEA,qBACE,MAACE;QACCS,aAAU;QACVjB,WAAWF,GAAG,6DAA6DE;QAC1E,GAAGO,KAAK;;0BAET,KAACW;gBAAoBlB,WAAU;0BAAyBU;;YACtDP,CAAAA,WAAWC,WAAU,mBACrB,MAACe;;oBACEhB,yBACC,KAACiB;kCACElB,UAAU,aAAa,OAAOC,YAAY,yBACzC,KAACT;4BAAU2B,MAAMlB;4BAASmB,OAAO;6BAEjCnB;;oBAILC,6BAAe,KAACmB;kCAA4BnB;;;;;;AAKvD;AAMA,OAAO,SAASc,oBAAoB,EAClClB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OACsB;IACzB,MAAMC,OAAOP,UAAUT,OAAO;IAE9B,qBACE,KAACgB;QACCS,aAAU;QACVjB,WAAWF,GAAG,qDAAqDE;QAClE,GAAGO,KAAK;kBAERD;;AAGP;AAMA,OAAO,SAASa,uBAAuB,EACrCnB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OACyB;IAC5B,MAAMC,OAAOP,UAAUT,OAAO;IAE9B,qBACE,KAACgB;QACCS,aAAU;QACVjB,WAAWF,GAAG,iEAAiEE;QAC9E,GAAGO,KAAK;kBAERD;;AAGP;AAMA,OAAO,SAASc,uBAAuB,EACrCpB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OACyB;IAC5B,IAAIN,SAAS;QACX,qBACE,KAACT;YACCyB,aAAU;YACVjB,WAAWF,GAAG,2DAA2DE;YACxE,GAAGO,KAAK;sBAERD;;IAGP;IAEA,qBACE,KAACX;QACCsB,aAAU;QACVN,MAAK;QACLX,WAAWF,GAAG,mDAAmDE;QAChE,GAAGO,KAAK;kBAERD;;AAGP;AAMA,OAAO,SAASiB,2BAA2B,EACzCvB,SAAS,EACTC,UAAU,KAAK,EACfK,QAAQ,EACR,GAAGC,OAC6B;IAChC,IAAIN,SAAS;QACX,qBACE,KAACT;YACCyB,aAAU;YACVjB,WAAWF,GAAG,0CAA0CE;YACvD,GAAGO,KAAK;sBAERD;;IAGP;IAEA,qBACE,KAACX;QACCsB,aAAU;QACVN,MAAK;QACLX,WAAWF,GAAG,kCAAkCE;QAC/C,GAAGO,KAAK;kBAERD;;AAGP"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-block.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/code-block.tsx"],"sourcesContent":["import {useControllableState} from '@radix-ui/react-use-controllable-state';\nimport {CodeContent} from 'components/code-block/code-content';\nimport {CodeCopyButton} from 'components/code-block/code-copy-button';\nimport {useResolvedTheme} from 'hooks/useResolvedTheme';\nimport {useShikiHighlight} from 'hooks/useShikiHighlight';\nimport {useShikiStyleInjection} from 'hooks/useShikiStyleInjection';\nimport type {ComponentProps, HTMLAttributes, ReactNode} from 'react';\nimport {createContext, useContext} from 'react';\nimport {cn} from 'utils/cn';\n\nexport type BundledLanguage = string;\n\nexport type CodeBlockData = {\n language: string;\n filename: string;\n code: string;\n};\n\ntype CodeBlockContextType = {\n value: string | undefined;\n onValueChange: ((value: string) => void) | undefined;\n data: CodeBlockData[];\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n value: undefined,\n onValueChange: undefined,\n data: [],\n});\n\nexport type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n data: CodeBlockData[];\n};\n\nexport function CodeBlock({\n value: controlledValue,\n onValueChange: controlledOnValueChange,\n defaultValue,\n className,\n data,\n ...props\n}: CodeBlockProps) {\n const [value, onValueChange] = useControllableState({\n defaultProp: defaultValue ?? '',\n prop: controlledValue,\n onChange: controlledOnValueChange,\n });\n\n return (\n <CodeBlockContext.Provider value={{value, onValueChange, data}}>\n <div\n className={cn(\n 'size-full overflow-hidden rounded-12 bg-background-components-pressed dark:bg-background-contrast-base shadow-button-neutral',\n className,\n )}\n {...props}\n />\n </CodeBlockContext.Provider>\n );\n}\n\nexport type CodeBlockHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nexport function CodeBlockHeader({className, ...props}: CodeBlockHeaderProps) {\n return (\n <div\n className={cn(\n 'flex w-full flex-row items-center gap-12 overflow-clip bg-background-components-pressed dark:bg-background-contrast-base px-16 py-8',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type CodeBlockFilesProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n children: (item: CodeBlockData) => ReactNode;\n};\n\nexport function CodeBlockFiles({className, children, ...props}: CodeBlockFilesProps) {\n const {data} = useContext(CodeBlockContext);\n\n return (\n <div className={cn('flex grow flex-row items-center gap-12', className)} {...props}>\n {data.map((item, index) => (\n <div key={item.language || index}>{children(item)}</div>\n ))}\n </div>\n );\n}\n\nexport type CodeBlockFilenameProps = HTMLAttributes<HTMLDivElement> & {\n value?: string;\n};\n\nexport function CodeBlockFilename({className, value, children, ...props}: CodeBlockFilenameProps) {\n const {value: activeValue} = useContext(CodeBlockContext);\n\n if (value !== activeValue) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'flex min-h-0 min-w-0 flex-1 items-center overflow-hidden text-ellipsis whitespace-nowrap text-xs leading-20 font-code text-foreground-neutral-muted',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type CodeBlockCopyButtonProps = ComponentProps<'button'> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport function CodeBlockCopyButton({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) {\n const {data, value} = useContext(CodeBlockContext);\n const code = data.find((item) => item.language === value)?.code ?? '';\n\n return (\n <CodeCopyButton\n content={code}\n onCopy={() => onCopy?.()}\n onError={onError}\n timeout={timeout}\n className={className}\n {...props}\n >\n {children}\n </CodeCopyButton>\n );\n}\n\ntype CodeBlockFallbackProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n children: string;\n};\n\nfunction CodeBlockFallback({children, className, ...props}: CodeBlockFallbackProps) {\n const lines = children?.toString().split('\\n') ?? [];\n return (\n <pre\n className={cn('w-full font-code', className)}\n {...(props as HTMLAttributes<HTMLPreElement>)}\n >\n <code>\n {lines.map((line) => {\n const isDiffRemove = line.trim().startsWith('-');\n const isDiffAdd = line.trim().startsWith('+');\n const diffClass = isDiffRemove ? 'diff remove' : isDiffAdd ? 'diff add' : '';\n\n return (\n <span className={cn('line', diffClass)} key={line}>\n {line}\n </span>\n );\n })}\n </code>\n </pre>\n );\n}\n\nexport type CodeBlockBodyProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n children: (item: CodeBlockData) => ReactNode;\n};\n\nexport function CodeBlockBody({children, ...props}: CodeBlockBodyProps) {\n const {data} = useContext(CodeBlockContext);\n\n return (\n <div {...props}>\n {data.map((item, index) => (\n <div key={item.language || index}>{children(item)}</div>\n ))}\n </div>\n );\n}\n\nexport type CodeBlockItemProps = HTMLAttributes<HTMLDivElement> & {\n value: string;\n lineNumbers?: boolean;\n};\n\nexport function CodeBlockItem({\n children,\n lineNumbers = true,\n className,\n value,\n ...props\n}: CodeBlockItemProps) {\n const {value: activeValue} = useContext(CodeBlockContext);\n\n if (value !== activeValue) {\n return null;\n }\n\n return (\n <div\n className={cn('flex w-full shrink-0 items-start overflow-clip px-4 pb-4 pt-0', className)}\n {...props}\n >\n <div\n className={cn(\n 'flex min-h-0 min-w-0 flex-1 shrink-0 rounded-8 border border-border-contrast-bottom bg-background-neutral-base dark:bg-background-contrast-subtle font-code',\n '[&_pre]:py-12 [&_pre]:font-code',\n '[&_code]:w-full [&_code]:grid [&_code]:overflow-x-auto [&_code]:bg-transparent [&_code]:font-code [&_code]:text-xs [&_code]:leading-20 [&_code]:text-foreground-neutral-base',\n '[&_.line]:block [&_.line]:px-12 [&_.line]:w-full [&_.line]:relative [&_.line]:font-code [&_.line]:min-h-[1.25rem]',\n lineNumbers &&\n '[&_code]:[counter-reset:line] [&_code]:[counter-increment:line_0] [&_.line]:before:content-[counter(line)] [&_.line]:before:inline-block [&_.line]:before:[counter-increment:line] [&_.line]:before:w-16 [&_.line]:before:mr-16 [&_.line]:before:text-xs [&_.line]:before:text-right [&_.line]:before:text-foreground-neutral-subtle [&_.line]:before:font-code [&_.line]:before:select-none',\n '[&_.line.diff]:after:absolute [&_.line.diff]:after:left-0 [&_.line.diff]:after:top-0 [&_.line.diff]:after:bottom-0 [&_.line.diff]:after:w-1',\n '[&_.line.diff.add]:bg-emerald-50 [&_.line.diff.add]:text-green-700 [&_.line.diff.add]:after:bg-emerald-500',\n '[&_.line.diff.remove]:bg-rose-50 [&_.line.diff.remove]:text-red-700 [&_.line.diff.remove]:after:bg-rose-500',\n 'dark:[&_.line.diff.add]:bg-emerald-500/10 dark:[&_.line.diff.add]:text-emerald-400',\n 'dark:[&_.line.diff.remove]:bg-rose-500/10 dark:[&_.line.diff.remove]:text-rose-400',\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport type CodeBlockContentProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {\n themes?: {\n light: string;\n dark: string;\n };\n language?: BundledLanguage;\n syntaxHighlighting?: boolean;\n children: string;\n};\n\nexport function CodeBlockContent({\n children,\n themes = {\n light: 'vitesse-light',\n dark: 'vitesse-dark',\n },\n language = 'typescript',\n syntaxHighlighting = false,\n ...props\n}: CodeBlockContentProps) {\n const resolvedTheme = useResolvedTheme();\n\n useShikiStyleInjection(syntaxHighlighting);\n\n const {highlightedCode, isLoading} = useShikiHighlight({\n code: children,\n lang: language,\n themes,\n resolvedTheme,\n syntaxHighlighting,\n });\n\n if (!syntaxHighlighting || isLoading) {\n return <CodeBlockFallback {...props}>{children}</CodeBlockFallback>;\n }\n\n return (\n <CodeContent\n code={children}\n highlightedCode={highlightedCode}\n isLoading={isLoading}\n syntaxHighlighting={syntaxHighlighting}\n {...props}\n />\n );\n}\n"],"names":["useControllableState","CodeContent","CodeCopyButton","useResolvedTheme","useShikiHighlight","useShikiStyleInjection","createContext","useContext","cn","CodeBlockContext","value","undefined","onValueChange","data","CodeBlock","controlledValue","controlledOnValueChange","defaultValue","className","props","defaultProp","prop","onChange","Provider","div","CodeBlockHeader","CodeBlockFiles","children","map","item","index","language","CodeBlockFilename","activeValue","CodeBlockCopyButton","onCopy","onError","timeout","code","find","content","CodeBlockFallback","lines","toString","split","pre","line","isDiffRemove","trim","startsWith","isDiffAdd","diffClass","span","CodeBlockBody","CodeBlockItem","lineNumbers","CodeBlockContent","themes","light","dark","syntaxHighlighting","resolvedTheme","highlightedCode","isLoading","lang"],"mappings":";AAAA,SAAQA,oBAAoB,QAAO,yCAAyC;AAC5E,SAAQC,WAAW,QAAO,qCAAqC;AAC/D,SAAQC,cAAc,QAAO,yCAAyC;AACtE,SAAQC,gBAAgB,QAAO,yBAAyB;AACxD,SAAQC,iBAAiB,QAAO,0BAA0B;AAC1D,SAAQC,sBAAsB,QAAO,+BAA+B;AAEpE,SAAQC,aAAa,EAAEC,UAAU,QAAO,QAAQ;AAChD,SAAQC,EAAE,QAAO,WAAW;AAgB5B,MAAMC,iCAAmBH,cAAoC;IAC3DI,OAAOC;IACPC,eAAeD;IACfE,MAAM,EAAE;AACV;AASA,OAAO,SAASC,UAAU,EACxBJ,OAAOK,eAAe,EACtBH,eAAeI,uBAAuB,EACtCC,YAAY,EACZC,SAAS,EACTL,IAAI,EACJ,GAAGM,OACY;IACf,MAAM,CAACT,OAAOE,cAAc,GAAGZ,qBAAqB;QAClDoB,aAAaH,gBAAgB;QAC7BI,MAAMN;QACNO,UAAUN;IACZ;IAEA,qBACE,KAACP,iBAAiBc,QAAQ;QAACb,OAAO;YAACA;YAAOE;YAAeC;QAAI;kBAC3D,cAAA,KAACW;YACCN,WAAWV,GACT,gIACAU;YAED,GAAGC,KAAK;;;AAIjB;AAIA,OAAO,SAASM,gBAAgB,EAACP,SAAS,EAAE,GAAGC,OAA4B;IACzE,qBACE,KAACK;QACCN,WAAWV,GACT,uIACAU;QAED,GAAGC,KAAK;;AAGf;AAMA,OAAO,SAASO,eAAe,EAACR,SAAS,EAAES,QAAQ,EAAE,GAAGR,OAA2B;IACjF,MAAM,EAACN,IAAI,EAAC,GAAGN,WAAWE;IAE1B,qBACE,KAACe;QAAIN,WAAWV,GAAG,0CAA0CU;QAAa,GAAGC,KAAK;kBAC/EN,KAAKe,GAAG,CAAC,CAACC,MAAMC,sBACf,KAACN;0BAAkCG,SAASE;eAAlCA,KAAKE,QAAQ,IAAID;;AAInC;AAMA,OAAO,SAASE,kBAAkB,EAACd,SAAS,EAAER,KAAK,EAAEiB,QAAQ,EAAE,GAAGR,OAA8B;IAC9F,MAAM,EAACT,OAAOuB,WAAW,EAAC,GAAG1B,WAAWE;IAExC,IAAIC,UAAUuB,aAAa;QACzB,OAAO;IACT;IAEA,qBACE,KAACT;QACCN,WAAWV,GACT,uJACAU;QAED,GAAGC,KAAK;kBAERQ;;AAGP;AAQA,OAAO,SAASO,oBAAoB,EAClCC,MAAM,EACNC,OAAO,EACPC,UAAU,IAAI,EACdV,QAAQ,EACRT,SAAS,EACT,GAAGC,OACsB;IACzB,MAAM,EAACN,IAAI,EAAEH,KAAK,EAAC,GAAGH,WAAWE;IACjC,MAAM6B,OAAOzB,KAAK0B,IAAI,CAAC,CAACV,OAASA,KAAKE,QAAQ,KAAKrB,QAAQ4B,QAAQ;IAEnE,qBACE,KAACpC;QACCsC,SAASF;QACTH,QAAQ,IAAMA;QACdC,SAASA;QACTC,SAASA;QACTnB,WAAWA;QACV,GAAGC,KAAK;kBAERQ;;AAGP;AAMA,SAASc,kBAAkB,EAACd,QAAQ,EAAET,SAAS,EAAE,GAAGC,OAA8B;IAChF,MAAMuB,QAAQf,UAAUgB,WAAWC,MAAM,SAAS,EAAE;IACpD,qBACE,KAACC;QACC3B,WAAWV,GAAG,oBAAoBU;QACjC,GAAIC,KAAK;kBAEV,cAAA,KAACmB;sBACEI,MAAMd,GAAG,CAAC,CAACkB;gBACV,MAAMC,eAAeD,KAAKE,IAAI,GAAGC,UAAU,CAAC;gBAC5C,MAAMC,YAAYJ,KAAKE,IAAI,GAAGC,UAAU,CAAC;gBACzC,MAAME,YAAYJ,eAAe,gBAAgBG,YAAY,aAAa;gBAE1E,qBACE,KAACE;oBAAKlC,WAAWV,GAAG,QAAQ2C;8BACzBL;mBAD0CA;YAIjD;;;AAIR;AAMA,OAAO,SAASO,cAAc,EAAC1B,QAAQ,EAAE,GAAGR,OAA0B;IACpE,MAAM,EAACN,IAAI,EAAC,GAAGN,WAAWE;IAE1B,qBACE,KAACe;QAAK,GAAGL,KAAK;kBACXN,KAAKe,GAAG,CAAC,CAACC,MAAMC,sBACf,KAACN;0BAAkCG,SAASE;eAAlCA,KAAKE,QAAQ,IAAID;;AAInC;AAOA,OAAO,SAASwB,cAAc,EAC5B3B,QAAQ,EACR4B,cAAc,IAAI,EAClBrC,SAAS,EACTR,KAAK,EACL,GAAGS,OACgB;IACnB,MAAM,EAACT,OAAOuB,WAAW,EAAC,GAAG1B,WAAWE;IAExC,IAAIC,UAAUuB,aAAa;QACzB,OAAO;IACT;IAEA,qBACE,KAACT;QACCN,WAAWV,GAAG,iEAAiEU;QAC9E,GAAGC,KAAK;kBAET,cAAA,KAACK;YACCN,WAAWV,GACT,+JACA,mCACA,gLACA,qHACA+C,eACE,gYACF,+IACA,8GACA,+GACA,sFACA;sBAGD5B;;;AAIT;AAYA,OAAO,SAAS6B,iBAAiB,EAC/B7B,QAAQ,EACR8B,SAAS;IACPC,OAAO;IACPC,MAAM;AACR,CAAC,EACD5B,WAAW,YAAY,EACvB6B,qBAAqB,KAAK,EAC1B,GAAGzC,OACmB;IACtB,MAAM0C,gBAAgB1D;IAEtBE,uBAAuBuD;IAEvB,MAAM,EAACE,eAAe,EAAEC,SAAS,EAAC,GAAG3D,kBAAkB;QACrDkC,MAAMX;QACNqC,MAAMjC;QACN0B;QACAI;QACAD;IACF;IAEA,IAAI,CAACA,sBAAsBG,WAAW;QACpC,qBAAO,KAACtB;YAAmB,GAAGtB,KAAK;sBAAGQ;;IACxC;IAEA,qBACE,KAAC1B;QACCqC,MAAMX;QACNmC,iBAAiBA;QACjBC,WAAWA;QACXH,oBAAoBA;QACnB,GAAGzC,KAAK;;AAGf"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/code-block.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {\n CodeBlock,\n CodeBlockBody,\n CodeBlockContent,\n CodeBlockCopyButton,\n CodeBlockFilename,\n CodeBlockFiles,\n CodeBlockFooter,\n CodeBlockHeader,\n CodeBlockItem,\n} from 'components/code-block';\nimport {CodeTabs} from 'components/code-block/code-tabs';\n\nconst meta = {\n title: 'Components/CodeBlock',\n component: CodeBlock,\n parameters: {\n layout: 'padded',\n },\n} satisfies Meta<typeof CodeBlock>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst exampleCode = `jobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n - name: Build\n run: npm run build`;\n\nconst diffCode = `jobs:\n build:\n - runs-on: ubuntu-latest\n + runs-on: shipfox-2vcpu-ubuntu-2404`;\n\nexport const Default: Story = {\n args: {\n data: [\n {\n language: 'yaml',\n filename: '.github/workflows/<workflow-name>.yml',\n code: exampleCode,\n },\n ],\n defaultValue: 'yaml',\n },\n render: (args) => (\n <CodeBlock {...args}>\n <CodeBlockHeader>\n <CodeBlockFiles>\n {(item) => <CodeBlockFilename value={item.language}>{item.filename}</CodeBlockFilename>}\n </CodeBlockFiles>\n <CodeBlockCopyButton />\n </CodeBlockHeader>\n <CodeBlockBody>\n {(item) => (\n <CodeBlockItem value={item.language}>\n <CodeBlockContent language={item.language}>{item.code}</CodeBlockContent>\n </CodeBlockItem>\n )}\n </CodeBlockBody>\n </CodeBlock>\n ),\n};\n\nexport const WithDiff: Story = {\n args: {\n data: [\n {\n language: 'yaml',\n filename: '.github/workflows/<workflow-name>.yml',\n code: diffCode,\n },\n ],\n defaultValue: 'yaml',\n },\n render: (args) => (\n <CodeBlock {...args}>\n <CodeBlockHeader>\n <CodeBlockFiles>\n {(item) => <CodeBlockFilename value={item.language}>{item.filename}</CodeBlockFilename>}\n </CodeBlockFiles>\n <CodeBlockCopyButton />\n </CodeBlockHeader>\n <CodeBlockBody>\n {(item) => (\n <CodeBlockItem value={item.language}>\n <CodeBlockContent language={item.language}>{item.code}</CodeBlockContent>\n </CodeBlockItem>\n )}\n </CodeBlockBody>\n </CodeBlock>\n ),\n};\n\nexport const WithFooterRunning: Story = {\n args: {\n data: [\n {\n language: 'yaml',\n filename: '.github/workflows/<workflow-name>.yml',\n code: diffCode,\n },\n ],\n defaultValue: 'yaml',\n },\n render: (args) => (\n <CodeBlock {...args}>\n <CodeBlockHeader>\n <CodeBlockFiles>\n {(item) => <CodeBlockFilename value={item.language}>{item.filename}</CodeBlockFilename>}\n </CodeBlockFiles>\n <CodeBlockCopyButton />\n </CodeBlockHeader>\n <CodeBlockBody>\n {(item) => (\n <CodeBlockItem value={item.language}>\n <CodeBlockContent language={item.language}>{item.code}</CodeBlockContent>\n </CodeBlockItem>\n )}\n </CodeBlockBody>\n <CodeBlockFooter\n state=\"running\"\n message=\"Waiting for Shipfox runner event…\"\n description=\"This usually takes 30-60 seconds after you commit the workflow file.\"\n />\n </CodeBlock>\n ),\n};\n\nexport const WithFooterDone: Story = {\n args: {\n data: [\n {\n language: 'yaml',\n filename: '.github/workflows/<workflow-name>.yml',\n code: diffCode,\n },\n ],\n defaultValue: 'yaml',\n },\n render: (args) => (\n <CodeBlock {...args}>\n <CodeBlockHeader>\n <CodeBlockFiles>\n {(item) => <CodeBlockFilename value={item.language}>{item.filename}</CodeBlockFilename>}\n </CodeBlockFiles>\n <CodeBlockCopyButton />\n </CodeBlockHeader>\n <CodeBlockBody>\n {(item) => (\n <CodeBlockItem value={item.language}>\n <CodeBlockContent language={item.language}>{item.code}</CodeBlockContent>\n </CodeBlockItem>\n )}\n </CodeBlockBody>\n <CodeBlockFooter state=\"done\" message=\"Runner connected!\" />\n </CodeBlock>\n ),\n};\n\nconst multipleFilesCode = {\n 'src/utils/format.ts': `export function formatDate(date: Date): string {\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n}\n\nexport function formatCurrency(amount: number): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n }).format(amount);\n}`,\n 'src/api/client.ts': `import type {User} from './types';\n\nexport class ApiClient {\n private baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n async getUser(id: string): Promise<User> {\n const response = await fetch(\\`\\${this.baseUrl}/users/\\${id}\\`);\n if (!response.ok) {\n throw new Error('Failed to fetch user');\n }\n return response.json();\n }\n}`,\n 'src/components/Button.tsx': `import type {ComponentProps} from 'react';\n\nexport function Button({\n children,\n variant = 'primary',\n ...props\n}: ComponentProps<'button'> & {\n variant?: 'primary' | 'secondary';\n}) {\n return (\n <button\n className={\\`btn btn-\\${variant}\\`}\n {...props}\n >\n {children}\n </button>\n );\n}`,\n};\n\nexport const MultipleFiles: Story = {\n args: {\n data: [],\n defaultValue: '',\n },\n render: () => (\n <CodeTabs\n codes={multipleFilesCode}\n defaultValue=\"src/api/client.ts\"\n syntaxHighlighting={true}\n lang=\"typescript\"\n lineNumbers={true}\n />\n ),\n};\n\nexport const WithoutLineNumbers: Story = {\n args: {\n data: [\n {\n language: 'yaml',\n filename: '.github/workflows/<workflow-name>.yml',\n code: exampleCode,\n },\n ],\n defaultValue: 'yaml',\n },\n render: (args) => (\n <CodeBlock {...args}>\n <CodeBlockHeader>\n <CodeBlockFiles>\n {(item) => <CodeBlockFilename value={item.language}>{item.filename}</CodeBlockFilename>}\n </CodeBlockFiles>\n <CodeBlockCopyButton />\n </CodeBlockHeader>\n <CodeBlockBody>\n {(item) => (\n <CodeBlockItem value={item.language} lineNumbers={false}>\n <CodeBlockContent language={item.language}>{item.code}</CodeBlockContent>\n </CodeBlockItem>\n )}\n </CodeBlockBody>\n </CodeBlock>\n ),\n};\n\nconst npmCode = `npm install @shipfox/tooling`;\nconst yarnCode = `yarn add @shipfox/tooling`;\nconst pnpmCode = `pnpm add @shipfox/tooling`;\n\nexport const Snippet: Story = {\n args: {\n data: [],\n defaultValue: '',\n },\n render: () => (\n <CodeTabs\n codes={{\n npm: npmCode,\n yarn: yarnCode,\n pnpm: pnpmCode,\n }}\n defaultValue=\"npm\"\n />\n ),\n};\n\nconst syntaxHighlightingCode = {\n 'index.ts': `export function hello(name: string = 'World'): void {\n // Say hello to the provided name\n console.log(\\`Hello, \\${name}!\\`);\n}\n\nexport function greetEveryone(names: string[]): void {\n for (const name of names) {\n hello(name);\n }\n}\n\nexport type Greeting = {\n language: string;\n message: string;\n};\n\nexport const greetings: Greeting[] = [\n { language: 'en', message: 'Hello' },\n { language: 'fr', message: 'Bonjour' },\n { language: 'es', message: 'Hola' },\n { language: 'de', message: 'Hallo' },\n];\n\nexport function printGreetings(): void {\n for (const { language, message } of greetings) {\n console.log(\\`\\${message}, \\${language}!\\`);\n }\n}`,\n};\n\nexport const SyntaxHighlighting: StoryObj<typeof CodeTabs> = {\n args: {\n codes: syntaxHighlightingCode,\n defaultValue: 'index.ts',\n syntaxHighlighting: true,\n lang: 'typescript',\n },\n render: (args) => <CodeTabs {...args} />,\n};\n"],"names":["CodeBlock","CodeBlockBody","CodeBlockContent","CodeBlockCopyButton","CodeBlockFilename","CodeBlockFiles","CodeBlockFooter","CodeBlockHeader","CodeBlockItem","CodeTabs","meta","title","component","parameters","layout","exampleCode","diffCode","Default","args","data","language","filename","code","defaultValue","render","item","value","WithDiff","WithFooterRunning","state","message","description","WithFooterDone","multipleFilesCode","MultipleFiles","codes","syntaxHighlighting","lang","lineNumbers","WithoutLineNumbers","npmCode","yarnCode","pnpmCode","Snippet","npm","yarn","pnpm","syntaxHighlightingCode","SyntaxHighlighting"],"mappings":";AACA,SACEA,SAAS,EACTC,aAAa,EACbC,gBAAgB,EAChBC,mBAAmB,EACnBC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,aAAa,QACR,wBAAwB;AAC/B,SAAQC,QAAQ,QAAO,kCAAkC;AAEzD,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWZ;IACXa,YAAY;QACVC,QAAQ;IACV;AACF;AAEA,eAAeJ,KAAK;AAGpB,MAAMK,cAAc,CAAC;;;;;;0BAMK,CAAC;AAE3B,MAAMC,WAAW,CAAC;;;4CAG0B,CAAC;AAE7C,OAAO,MAAMC,UAAiB;IAC5BC,MAAM;QACJC,MAAM;YACJ;gBACEC,UAAU;gBACVC,UAAU;gBACVC,MAAMP;YACR;SACD;QACDQ,cAAc;IAChB;IACAC,QAAQ,CAACN,qBACP,MAAClB;YAAW,GAAGkB,IAAI;;8BACjB,MAACX;;sCACC,KAACF;sCACE,CAACoB,qBAAS,KAACrB;oCAAkBsB,OAAOD,KAAKL,QAAQ;8CAAGK,KAAKJ,QAAQ;;;sCAEpE,KAAClB;;;8BAEH,KAACF;8BACE,CAACwB,qBACA,KAACjB;4BAAckB,OAAOD,KAAKL,QAAQ;sCACjC,cAAA,KAAClB;gCAAiBkB,UAAUK,KAAKL,QAAQ;0CAAGK,KAAKH,IAAI;;;;;;AAMjE,EAAE;AAEF,OAAO,MAAMK,WAAkB;IAC7BT,MAAM;QACJC,MAAM;YACJ;gBACEC,UAAU;gBACVC,UAAU;gBACVC,MAAMN;YACR;SACD;QACDO,cAAc;IAChB;IACAC,QAAQ,CAACN,qBACP,MAAClB;YAAW,GAAGkB,IAAI;;8BACjB,MAACX;;sCACC,KAACF;sCACE,CAACoB,qBAAS,KAACrB;oCAAkBsB,OAAOD,KAAKL,QAAQ;8CAAGK,KAAKJ,QAAQ;;;sCAEpE,KAAClB;;;8BAEH,KAACF;8BACE,CAACwB,qBACA,KAACjB;4BAAckB,OAAOD,KAAKL,QAAQ;sCACjC,cAAA,KAAClB;gCAAiBkB,UAAUK,KAAKL,QAAQ;0CAAGK,KAAKH,IAAI;;;;;;AAMjE,EAAE;AAEF,OAAO,MAAMM,oBAA2B;IACtCV,MAAM;QACJC,MAAM;YACJ;gBACEC,UAAU;gBACVC,UAAU;gBACVC,MAAMN;YACR;SACD;QACDO,cAAc;IAChB;IACAC,QAAQ,CAACN,qBACP,MAAClB;YAAW,GAAGkB,IAAI;;8BACjB,MAACX;;sCACC,KAACF;sCACE,CAACoB,qBAAS,KAACrB;oCAAkBsB,OAAOD,KAAKL,QAAQ;8CAAGK,KAAKJ,QAAQ;;;sCAEpE,KAAClB;;;8BAEH,KAACF;8BACE,CAACwB,qBACA,KAACjB;4BAAckB,OAAOD,KAAKL,QAAQ;sCACjC,cAAA,KAAClB;gCAAiBkB,UAAUK,KAAKL,QAAQ;0CAAGK,KAAKH,IAAI;;;;8BAI3D,KAAChB;oBACCuB,OAAM;oBACNC,SAAQ;oBACRC,aAAY;;;;AAIpB,EAAE;AAEF,OAAO,MAAMC,iBAAwB;IACnCd,MAAM;QACJC,MAAM;YACJ;gBACEC,UAAU;gBACVC,UAAU;gBACVC,MAAMN;YACR;SACD;QACDO,cAAc;IAChB;IACAC,QAAQ,CAACN,qBACP,MAAClB;YAAW,GAAGkB,IAAI;;8BACjB,MAACX;;sCACC,KAACF;sCACE,CAACoB,qBAAS,KAACrB;oCAAkBsB,OAAOD,KAAKL,QAAQ;8CAAGK,KAAKJ,QAAQ;;;sCAEpE,KAAClB;;;8BAEH,KAACF;8BACE,CAACwB,qBACA,KAACjB;4BAAckB,OAAOD,KAAKL,QAAQ;sCACjC,cAAA,KAAClB;gCAAiBkB,UAAUK,KAAKL,QAAQ;0CAAGK,KAAKH,IAAI;;;;8BAI3D,KAAChB;oBAAgBuB,OAAM;oBAAOC,SAAQ;;;;AAG5C,EAAE;AAEF,MAAMG,oBAAoB;IACxB,uBAAuB,CAAC;;;;;;;;;;;;;CAazB,CAAC;IACA,qBAAqB,CAAC;;;;;;;;;;;;;;;;CAgBvB,CAAC;IACA,6BAA6B,CAAC;;;;;;;;;;;;;;;;;CAiB/B,CAAC;AACF;AAEA,OAAO,MAAMC,gBAAuB;IAClChB,MAAM;QACJC,MAAM,EAAE;QACRI,cAAc;IAChB;IACAC,QAAQ,kBACN,KAACf;YACC0B,OAAOF;YACPV,cAAa;YACba,oBAAoB;YACpBC,MAAK;YACLC,aAAa;;AAGnB,EAAE;AAEF,OAAO,MAAMC,qBAA4B;IACvCrB,MAAM;QACJC,MAAM;YACJ;gBACEC,UAAU;gBACVC,UAAU;gBACVC,MAAMP;YACR;SACD;QACDQ,cAAc;IAChB;IACAC,QAAQ,CAACN,qBACP,MAAClB;YAAW,GAAGkB,IAAI;;8BACjB,MAACX;;sCACC,KAACF;sCACE,CAACoB,qBAAS,KAACrB;oCAAkBsB,OAAOD,KAAKL,QAAQ;8CAAGK,KAAKJ,QAAQ;;;sCAEpE,KAAClB;;;8BAEH,KAACF;8BACE,CAACwB,qBACA,KAACjB;4BAAckB,OAAOD,KAAKL,QAAQ;4BAAEkB,aAAa;sCAChD,cAAA,KAACpC;gCAAiBkB,UAAUK,KAAKL,QAAQ;0CAAGK,KAAKH,IAAI;;;;;;AAMjE,EAAE;AAEF,MAAMkB,UAAU,CAAC,4BAA4B,CAAC;AAC9C,MAAMC,WAAW,CAAC,yBAAyB,CAAC;AAC5C,MAAMC,WAAW,CAAC,yBAAyB,CAAC;AAE5C,OAAO,MAAMC,UAAiB;IAC5BzB,MAAM;QACJC,MAAM,EAAE;QACRI,cAAc;IAChB;IACAC,QAAQ,kBACN,KAACf;YACC0B,OAAO;gBACLS,KAAKJ;gBACLK,MAAMJ;gBACNK,MAAMJ;YACR;YACAnB,cAAa;;AAGnB,EAAE;AAEF,MAAMwB,yBAAyB;IAC7B,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Bd,CAAC;AACF;AAEA,OAAO,MAAMC,qBAAgD;IAC3D9B,MAAM;QACJiB,OAAOY;QACPxB,cAAc;QACda,oBAAoB;QACpBC,MAAM;IACR;IACAb,QAAQ,CAACN,qBAAS,KAACT;YAAU,GAAGS,IAAI;;AACtC,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-content.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-content.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,KAAK,gBAAgB,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,WAAmB,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CA2ClB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/code-content.tsx"],"sourcesContent":["import type {HTMLAttributes} from 'react';\nimport {cn} from 'utils/cn';\n\ntype CodeContentProps = HTMLAttributes<HTMLElement> & {\n code: string;\n highlightedCode?: string;\n isLoading: boolean;\n syntaxHighlighting: boolean;\n lineNumbers?: boolean;\n};\n\nexport function CodeContent({\n code,\n highlightedCode,\n isLoading,\n syntaxHighlighting,\n lineNumbers = false,\n className,\n ...props\n}: CodeContentProps) {\n const shouldShowHighlighted = syntaxHighlighting && !isLoading && highlightedCode;\n\n if (shouldShowHighlighted) {\n return (\n <div\n className={cn(\n 'shiki-override w-full overflow-x-auto font-code [&_pre]:m-0 [&_pre]:p-0 [&_pre]:bg-transparent [&_pre]:font-code [&_code]:font-code [&_code]:bg-transparent [&_code]:text-xs [&_code]:leading-20 [&_code]:text-foreground-neutral-base [&_code]:grid',\n lineNumbers &&\n '[&_code]:[counter-reset:line] [&_code]:[counter-increment:line_0] [&_.line]:before:content-[counter(line)] [&_.line]:before:inline-block [&_.line]:before:[counter-increment:line] [&_.line]:before:w-16 [&_.line]:before:mr-16 [&_.line]:before:text-xs [&_.line]:before:text-right [&_.line]:before:text-foreground-neutral-subtle [&_.line]:before:font-code [&_.line]:before:select-none',\n '[&_.line]:block [&_.line]:px-12 [&_.line]:w-full [&_.line]:relative [&_.line]:font-code [&_.line]:text-xs [&_.line]:leading-20 [&_.line]:min-h-[1.25rem]',\n className,\n )}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Shiki outputs HTML for syntax highlighting\n dangerouslySetInnerHTML={{__html: highlightedCode}}\n {...props}\n />\n );\n }\n\n const lines = code.split('\\n');\n\n return (\n <pre className={cn('m-0 p-0 bg-transparent font-code', className)} {...props}>\n <code\n className={cn(\n 'w-full overflow-x-auto bg-transparent font-code text-xs leading-20 text-foreground-neutral-base',\n 'grid',\n lineNumbers &&\n '[counter-reset:line] [counter-increment:line_0] [&_.line]:before:content-[counter(line)] [&_.line]:before:inline-block [&_.line]:before:[counter-increment:line] [&_.line]:before:w-16 [&_.line]:before:mr-16 [&_.line]:before:text-xs [&_.line]:before:text-right [&_.line]:before:text-foreground-neutral-subtle [&_.line]:before:font-code [&_.line]:before:select-none',\n )}\n >\n {lines.map((line, index) => (\n <span\n className=\"line px-12 w-full relative font-code text-xs leading-20\"\n key={`${index}-${line}`}\n >\n {line}\n </span>\n ))}\n </code>\n </pre>\n );\n}\n"],"names":["cn","CodeContent","code","highlightedCode","isLoading","syntaxHighlighting","lineNumbers","className","props","shouldShowHighlighted","div","dangerouslySetInnerHTML","__html","lines","split","pre","map","line","index","span"],"mappings":";AACA,SAAQA,EAAE,QAAO,WAAW;AAU5B,OAAO,SAASC,YAAY,EAC1BC,IAAI,EACJC,eAAe,EACfC,SAAS,EACTC,kBAAkB,EAClBC,cAAc,KAAK,EACnBC,SAAS,EACT,GAAGC,OACc;IACjB,MAAMC,wBAAwBJ,sBAAsB,CAACD,aAAaD;IAElE,IAAIM,uBAAuB;QACzB,qBACE,KAACC;YACCH,WAAWP,GACT,wPACAM,eACE,gYACF,4JACAC;YAEF,mGAAmG;YACnGI,yBAAyB;gBAACC,QAAQT;YAAe;YAChD,GAAGK,KAAK;;IAGf;IAEA,MAAMK,QAAQX,KAAKY,KAAK,CAAC;IAEzB,qBACE,KAACC;QAAIR,WAAWP,GAAG,oCAAoCO;QAAa,GAAGC,KAAK;kBAC1E,cAAA,KAACN;YACCK,WAAWP,GACT,mGACA,QACAM,eACE;sBAGHO,MAAMG,GAAG,CAAC,CAACC,MAAMC,sBAChB,KAACC;oBACCZ,WAAU;8BAGTU;mBAFI,GAAGC,MAAM,CAAC,EAAED,MAAM;;;AAQnC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-copy-button.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-copy-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAI1C,KAAK,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAkDrB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/code-copy-button.tsx"],"sourcesContent":["import {Icon} from 'components/icon';\nimport {useCopyToClipboard} from 'hooks/useCopyToClipboard';\nimport type {ComponentProps} from 'react';\nimport {useEffect, useRef, useState} from 'react';\nimport {cn} from 'utils/cn';\n\ntype CodeCopyButtonProps = Omit<ComponentProps<'button'>, 'onCopy'> & {\n content: string;\n onCopy?: (content: string) => void;\n onError?: (error: Error) => void;\n timeout?: number;\n children?: React.ReactNode;\n};\n\nexport function CodeCopyButton({\n content,\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeCopyButtonProps) {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const {copy} = useCopyToClipboard({\n text: content,\n onCopy: () => {\n setIsCopied(true);\n onCopy?.(content);\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsCopied(false);\n }, timeout);\n },\n });\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const handleClick = async () => {\n try {\n await copy();\n } catch (error) {\n onError?.(error instanceof Error ? error : new Error('Failed to copy'));\n }\n };\n\n return (\n <button\n type=\"button\"\n aria-label={isCopied ? 'Copied' : 'Copy to clipboard'}\n className={cn(\n 'flex shrink-0 cursor-pointer items-center justify-center rounded-6 bg-transparent text-foreground-neutral-muted transition-colors hover:bg-background-components-hover active:bg-background-components-pressed p-4',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n {children ?? <Icon name={isCopied ? 'check' : 'copy'} className=\"size-16\" />}\n </button>\n );\n}\n"],"names":["Icon","useCopyToClipboard","useEffect","useRef","useState","cn","CodeCopyButton","content","onCopy","onError","timeout","children","className","props","isCopied","setIsCopied","timeoutRef","undefined","copy","text","current","clearTimeout","setTimeout","handleClick","error","Error","button","type","aria-label","onClick","name"],"mappings":";AAAA,SAAQA,IAAI,QAAO,kBAAkB;AACrC,SAAQC,kBAAkB,QAAO,2BAA2B;AAE5D,SAAQC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAO,QAAQ;AAClD,SAAQC,EAAE,QAAO,WAAW;AAU5B,OAAO,SAASC,eAAe,EAC7BC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,UAAU,IAAI,EACdC,QAAQ,EACRC,SAAS,EACT,GAAGC,OACiB;IACpB,MAAM,CAACC,UAAUC,YAAY,GAAGX,SAAS;IACzC,MAAMY,aAAab,OAAkDc;IAErE,MAAM,EAACC,IAAI,EAAC,GAAGjB,mBAAmB;QAChCkB,MAAMZ;QACNC,QAAQ;YACNO,YAAY;YACZP,SAASD;YAET,IAAIS,WAAWI,OAAO,EAAE;gBACtBC,aAAaL,WAAWI,OAAO;YACjC;YAEAJ,WAAWI,OAAO,GAAGE,WAAW;gBAC9BP,YAAY;YACd,GAAGL;QACL;IACF;IAEAR,UAAU;QACR,OAAO;YACL,IAAIc,WAAWI,OAAO,EAAE;gBACtBC,aAAaL,WAAWI,OAAO;YACjC;QACF;IACF,GAAG,EAAE;IAEL,MAAMG,cAAc;QAClB,IAAI;YACF,MAAML;QACR,EAAE,OAAOM,OAAO;YACdf,UAAUe,iBAAiBC,QAAQD,QAAQ,IAAIC,MAAM;QACvD;IACF;IAEA,qBACE,KAACC;QACCC,MAAK;QACLC,cAAYd,WAAW,WAAW;QAClCF,WAAWP,GACT,sNACAO;QAEFiB,SAASN;QACR,GAAGV,KAAK;kBAERF,0BAAY,KAACX;YAAK8B,MAAMhB,WAAW,UAAU;YAAQF,WAAU;;;AAGtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAO7C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAI1C,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAqGF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,IAAa,EACb,MAGC,EACD,SAAS,EACT,YAAY,EACZ,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,uBAAuB,EACtC,UAAiB,EACjB,MAAM,EACN,kBAA0B,EAC1B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,aAAa,2CA8Bf"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/code-tabs.tsx"],"sourcesContent":["import * as Tabs from '@radix-ui/react-tabs';\nimport {useControllableState} from '@radix-ui/react-use-controllable-state';\nimport {CodeContent} from 'components/code-block/code-content';\nimport {CodeCopyButton} from 'components/code-block/code-copy-button';\nimport {useResolvedTheme} from 'hooks/useResolvedTheme';\nimport {useShikiHighlightMultiple} from 'hooks/useShikiHighlight';\nimport {useShikiStyleInjection} from 'hooks/useShikiStyleInjection';\nimport type {ComponentProps} from 'react';\nimport {useMemo} from 'react';\nimport {cn} from 'utils/cn';\n\nexport type CodeTabsProps = Omit<ComponentProps<typeof Tabs.Root>, 'children'> & {\n codes: Record<string, string>;\n lang?: string;\n themes?: {\n light: string;\n dark: string;\n };\n copyButton?: boolean;\n onCopy?: (content: string) => void;\n syntaxHighlighting?: boolean;\n lineNumbers?: boolean;\n};\n\nfunction CodeTabsContent({\n codes,\n lang = 'bash',\n themes = {\n light: 'vitesse-light',\n dark: 'vitesse-dark',\n },\n copyButton = true,\n onCopy,\n syntaxHighlighting = false,\n lineNumbers = false,\n activeValue,\n}: {\n codes: Record<string, string>;\n lang?: string;\n themes?: {light: string; dark: string};\n copyButton?: boolean;\n onCopy?: (content: string) => void;\n syntaxHighlighting?: boolean;\n lineNumbers?: boolean;\n activeValue: string;\n}) {\n const resolvedTheme = useResolvedTheme();\n const codesKeys = useMemo(() => Object.keys(codes), [codes]);\n\n useShikiStyleInjection(syntaxHighlighting);\n\n const {highlightedCodes, isLoading} = useShikiHighlightMultiple({\n codes,\n lang,\n themes,\n resolvedTheme,\n syntaxHighlighting,\n });\n\n const activeCode = codes[activeValue] ?? '';\n\n return (\n <>\n <Tabs.List\n className={cn(\n 'relative flex w-full flex-row items-center justify-between gap-12 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden bg-background-components-pressed dark:bg-background-contrast-base px-16 py-8',\n 'border-b border-border-contrast-bottom',\n 'after:absolute after:bottom-0 after:left-0 after:right-0 after:h-px',\n 'after:bg-border-neutral-base',\n 'dark:after:bg-border-contrast-top',\n 'after:shadow-separator-inset',\n )}\n >\n <div className=\"flex flex-row gap-12\">\n {codesKeys.map((code) => (\n <Tabs.Trigger\n key={code}\n value={code}\n className={cn(\n 'relative px-8 py-4 text-xs leading-20 font-medium text-foreground-neutral-muted transition-colors',\n 'data-[state=active]:text-foreground-neutral-base',\n 'hover:text-foreground-neutral-base',\n 'data-[state=active]:z-10',\n 'data-[state=active]:after:absolute data-[state=active]:after:-bottom-9 data-[state=active]:after:left-0 data-[state=active]:after:right-0',\n 'data-[state=active]:after:h-2 data-[state=active]:after:bg-foreground-neutral-base',\n )}\n >\n {code}\n </Tabs.Trigger>\n ))}\n </div>\n\n {copyButton && <CodeCopyButton content={activeCode} onCopy={onCopy} className=\"shrink-0\" />}\n </Tabs.List>\n <div className=\"w-full px-4 pb-4 pt-8\">\n {Object.entries(codes).map(([code, rawCode]) => (\n <Tabs.Content key={code} value={code} className=\"w-full\">\n <div\n className={cn(\n 'flex min-h-0 min-w-0 w-full shrink-0 rounded-8 border border-border-contrast-bottom bg-background-neutral-base dark:bg-background-contrast-subtle font-code',\n '[&_pre]:py-12 [&_pre]:font-code',\n '[&_pre]:m-0 [&_pre]:px-0 [&_pre]:bg-transparent',\n '[&_code]:w-full [&_code]:overflow-x-auto [&_code]:bg-transparent [&_code]:font-code [&_code]:text-xs [&_code]:leading-20 [&_code]:text-foreground-neutral-base',\n lineNumbers &&\n '[&_code]:grid [&_code]:[counter-reset:line] [&_code]:[counter-increment:line_0] [&_.line]:before:content-[counter(line)] [&_.line]:before:inline-block [&_.line]:before:[counter-increment:line] [&_.line]:before:w-16 [&_.line]:before:mr-16 [&_.line]:before:text-xs [&_.line]:before:text-right [&_.line]:before:text-foreground-neutral-subtle [&_.line]:before:font-code [&_.line]:before:select-none',\n '[&_.line]:block [&_.line]:px-12 [&_.line]:w-full [&_.line]:relative [&_.line]:font-code [&_.line]:min-h-[1.25rem]',\n )}\n >\n <CodeContent\n code={rawCode}\n highlightedCode={highlightedCodes[code]}\n isLoading={isLoading}\n syntaxHighlighting={syntaxHighlighting}\n lineNumbers={lineNumbers}\n />\n </div>\n </Tabs.Content>\n ))}\n </div>\n </>\n );\n}\n\nexport function CodeTabs({\n codes,\n lang = 'bash',\n themes = {\n light: 'vitesse-light',\n dark: 'vitesse-dark',\n },\n className,\n defaultValue,\n value: controlledValue,\n onValueChange: controlledOnValueChange,\n copyButton = true,\n onCopy,\n syntaxHighlighting = false,\n lineNumbers = false,\n ...props\n}: CodeTabsProps) {\n const firstKey = useMemo(() => Object.keys(codes)[0] ?? '', [codes]);\n const [value, onValueChange] = useControllableState({\n defaultProp: defaultValue ?? firstKey,\n prop: controlledValue,\n onChange: controlledOnValueChange,\n });\n\n return (\n <Tabs.Root\n className={cn(\n 'w-full overflow-hidden rounded-12 bg-background-components-pressed dark:bg-background-contrast-base shadow-button-neutral',\n className,\n )}\n value={value}\n onValueChange={onValueChange}\n {...props}\n >\n <CodeTabsContent\n codes={codes}\n lang={lang}\n themes={themes}\n copyButton={copyButton}\n onCopy={onCopy}\n syntaxHighlighting={syntaxHighlighting}\n lineNumbers={lineNumbers}\n activeValue={value ?? firstKey}\n />\n </Tabs.Root>\n );\n}\n"],"names":["Tabs","useControllableState","CodeContent","CodeCopyButton","useResolvedTheme","useShikiHighlightMultiple","useShikiStyleInjection","useMemo","cn","CodeTabsContent","codes","lang","themes","light","dark","copyButton","onCopy","syntaxHighlighting","lineNumbers","activeValue","resolvedTheme","codesKeys","Object","keys","highlightedCodes","isLoading","activeCode","List","className","div","map","code","Trigger","value","content","entries","rawCode","Content","highlightedCode","CodeTabs","defaultValue","controlledValue","onValueChange","controlledOnValueChange","props","firstKey","defaultProp","prop","onChange","Root"],"mappings":";AAAA,YAAYA,UAAU,uBAAuB;AAC7C,SAAQC,oBAAoB,QAAO,yCAAyC;AAC5E,SAAQC,WAAW,QAAO,qCAAqC;AAC/D,SAAQC,cAAc,QAAO,yCAAyC;AACtE,SAAQC,gBAAgB,QAAO,yBAAyB;AACxD,SAAQC,yBAAyB,QAAO,0BAA0B;AAClE,SAAQC,sBAAsB,QAAO,+BAA+B;AAEpE,SAAQC,OAAO,QAAO,QAAQ;AAC9B,SAAQC,EAAE,QAAO,WAAW;AAe5B,SAASC,gBAAgB,EACvBC,KAAK,EACLC,OAAO,MAAM,EACbC,SAAS;IACPC,OAAO;IACPC,MAAM;AACR,CAAC,EACDC,aAAa,IAAI,EACjBC,MAAM,EACNC,qBAAqB,KAAK,EAC1BC,cAAc,KAAK,EACnBC,WAAW,EAUZ;IACC,MAAMC,gBAAgBhB;IACtB,MAAMiB,YAAYd,QAAQ,IAAMe,OAAOC,IAAI,CAACb,QAAQ;QAACA;KAAM;IAE3DJ,uBAAuBW;IAEvB,MAAM,EAACO,gBAAgB,EAAEC,SAAS,EAAC,GAAGpB,0BAA0B;QAC9DK;QACAC;QACAC;QACAQ;QACAH;IACF;IAEA,MAAMS,aAAahB,KAAK,CAACS,YAAY,IAAI;IAEzC,qBACE;;0BACE,MAACnB,KAAK2B,IAAI;gBACRC,WAAWpB,GACT,uNACA,0CACA,uEACA,gCACA,qCACA;;kCAGF,KAACqB;wBAAID,WAAU;kCACZP,UAAUS,GAAG,CAAC,CAACC,qBACd,KAAC/B,KAAKgC,OAAO;gCAEXC,OAAOF;gCACPH,WAAWpB,GACT,qGACA,oDACA,sCACA,4BACA,6IACA;0CAGDuB;+BAXIA;;oBAgBVhB,4BAAc,KAACZ;wBAAe+B,SAASR;wBAAYV,QAAQA;wBAAQY,WAAU;;;;0BAEhF,KAACC;gBAAID,WAAU;0BACZN,OAAOa,OAAO,CAACzB,OAAOoB,GAAG,CAAC,CAAC,CAACC,MAAMK,QAAQ,iBACzC,KAACpC,KAAKqC,OAAO;wBAAYJ,OAAOF;wBAAMH,WAAU;kCAC9C,cAAA,KAACC;4BACCD,WAAWpB,GACT,+JACA,mCACA,mDACA,kKACAU,eACE,8YACF;sCAGF,cAAA,KAAChB;gCACC6B,MAAMK;gCACNE,iBAAiBd,gBAAgB,CAACO,KAAK;gCACvCN,WAAWA;gCACXR,oBAAoBA;gCACpBC,aAAaA;;;uBAjBAa;;;;AAyB7B;AAEA,OAAO,SAASQ,SAAS,EACvB7B,KAAK,EACLC,OAAO,MAAM,EACbC,SAAS;IACPC,OAAO;IACPC,MAAM;AACR,CAAC,EACDc,SAAS,EACTY,YAAY,EACZP,OAAOQ,eAAe,EACtBC,eAAeC,uBAAuB,EACtC5B,aAAa,IAAI,EACjBC,MAAM,EACNC,qBAAqB,KAAK,EAC1BC,cAAc,KAAK,EACnB,GAAG0B,OACW;IACd,MAAMC,WAAWtC,QAAQ,IAAMe,OAAOC,IAAI,CAACb,MAAM,CAAC,EAAE,IAAI,IAAI;QAACA;KAAM;IACnE,MAAM,CAACuB,OAAOS,cAAc,GAAGzC,qBAAqB;QAClD6C,aAAaN,gBAAgBK;QAC7BE,MAAMN;QACNO,UAAUL;IACZ;IAEA,qBACE,KAAC3C,KAAKiD,IAAI;QACRrB,WAAWpB,GACT,6HACAoB;QAEFK,OAAOA;QACPS,eAAeA;QACd,GAAGE,KAAK;kBAET,cAAA,KAACnC;YACCC,OAAOA;YACPC,MAAMA;YACNC,QAAQA;YACRG,YAAYA;YACZC,QAAQA;YACRC,oBAAoBA;YACpBC,aAAaA;YACbC,aAAac,SAASY;;;AAI9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/code-block/index.ts"],"sourcesContent":["export * from './code-block';\nexport * from './code-block-footer';\nexport * from './code-tabs';\n"],"names":[],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,sBAAsB;AACpC,cAAc,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/components/command/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,MAAM,CAAC;AACjD,OAAO,EAAC,KAAK,cAAc,EAAoC,MAAM,OAAO,CAAC;AAG7E,OAAO,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAE3B,QAAA,MAAM,sBAAsB;;;8EA0B3B,CAAC;AAEF,KAAK,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,GACjD,YAAY,CAAC,OAAO,sBAAsB,CAAC,GAAG;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEJ,QAAA,MAAM,cAAc,gIAsBnB,CAAC;AAGF,iBAAS,OAAO,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAY9E;AAED,iBAAS,aAAa,CAAC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,2CAS1F;AAED,KAAK,iBAAiB,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,KAAK,EACL,aAAa,EACb,OAAO,EACP,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAkEnB;AAED,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAQvF;AAED,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQzF;AAED,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAezF;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,2CAcnD;AAED,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAcvF;AAED,iBAAS,eAAe,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,GAAG,CAAC,2CAMnF;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,sBAAsB,GACvB,CAAC;AAEF,YAAY,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,CAAC"}