@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.
- package/dist/components/button-group/button-group.stories.js +4 -4
- package/dist/components/dashboard/components/charts/bar-chart.d.ts +39 -0
- package/dist/components/dashboard/components/charts/bar-chart.js +104 -0
- package/dist/components/dashboard/components/charts/chart-tooltip.d.ts +14 -0
- package/dist/components/dashboard/components/charts/chart-tooltip.js +45 -0
- package/dist/components/dashboard/components/charts/colors.d.ts +11 -0
- package/dist/components/dashboard/components/charts/colors.js +17 -0
- package/dist/components/dashboard/components/charts/index.d.ts +5 -0
- package/dist/components/dashboard/components/charts/index.js +6 -0
- package/dist/components/dashboard/components/charts/line-chart.d.ts +37 -0
- package/dist/components/dashboard/components/charts/line-chart.js +128 -0
- package/dist/components/dashboard/components/dashboard-alert.d.ts +8 -0
- package/dist/components/dashboard/components/dashboard-alert.js +24 -0
- package/dist/components/dashboard/components/kpi-card.d.ts +15 -0
- package/dist/components/dashboard/components/kpi-card.js +77 -0
- package/dist/components/dashboard/components/mobile-sidebar.d.ts +19 -0
- package/dist/components/dashboard/components/mobile-sidebar.js +50 -0
- package/dist/components/dashboard/components/organization-selector.d.ts +24 -1
- package/dist/components/dashboard/components/organization-selector.js +93 -70
- package/dist/components/dashboard/components/sidebar.d.ts +24 -0
- package/dist/components/dashboard/components/sidebar.js +218 -0
- package/dist/components/dashboard/context/dashboard-context.d.ts +70 -0
- package/dist/components/dashboard/context/dashboard-context.js +175 -0
- package/dist/components/dashboard/context/index.d.ts +8 -0
- package/dist/components/dashboard/context/index.js +6 -0
- package/dist/components/dashboard/context/types.d.ts +50 -0
- package/dist/components/dashboard/context/types.js +7 -0
- package/dist/components/dashboard/context/utils.d.ts +28 -0
- package/dist/components/dashboard/context/utils.js +53 -0
- package/dist/components/dashboard/dashboard.d.ts +27 -1
- package/dist/components/dashboard/dashboard.js +76 -36
- package/dist/components/dashboard/filters/expression-filter-bar.d.ts +42 -0
- package/dist/components/dashboard/filters/expression-filter-bar.js +80 -0
- package/dist/components/dashboard/filters/index.d.ts +6 -0
- package/dist/components/dashboard/filters/index.js +5 -0
- package/dist/components/dashboard/index.d.ts +25 -1
- package/dist/components/dashboard/index.js +22 -1
- package/dist/components/dashboard/pages/analytics-page.d.ts +20 -0
- package/dist/components/dashboard/pages/analytics-page.js +258 -0
- package/dist/components/dashboard/pages/index.d.ts +6 -0
- package/dist/components/dashboard/pages/index.js +6 -0
- package/dist/components/dashboard/pages/jobs-page.d.ts +20 -0
- package/dist/components/dashboard/pages/jobs-page.js +56 -0
- package/dist/components/dashboard/table/index.d.ts +6 -0
- package/dist/components/dashboard/table/index.js +5 -0
- package/dist/components/dashboard/table/table-wrapper.d.ts +104 -0
- package/dist/components/dashboard/table/table-wrapper.js +93 -0
- package/dist/components/dashboard/toolbar/filter-button.d.ts +12 -0
- package/dist/components/dashboard/toolbar/filter-button.js +124 -0
- package/dist/components/dashboard/toolbar/index.d.ts +13 -0
- package/dist/components/dashboard/toolbar/index.js +10 -0
- package/dist/components/dashboard/toolbar/page-toolbar.d.ts +75 -0
- package/dist/components/dashboard/toolbar/page-toolbar.js +208 -0
- package/dist/components/dashboard/toolbar/toolbar-actions.d.ts +52 -0
- package/dist/components/dashboard/toolbar/toolbar-actions.js +51 -0
- package/dist/components/dashboard/toolbar/toolbar-search.d.ts +21 -0
- package/dist/components/dashboard/toolbar/toolbar-search.js +123 -0
- package/dist/components/dashboard/toolbar/view-dropdown.d.ts +11 -0
- package/dist/components/dashboard/toolbar/view-dropdown.js +113 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/modal/modal.js +3 -3
- package/dist/components/search/search-inline.js +1 -1
- package/dist/components/search/search-modal.js +13 -7
- package/dist/components/select/select.d.ts +3 -1
- package/dist/components/select/select.js +2 -1
- package/dist/components/sheet/index.d.ts +2 -0
- package/dist/components/sheet/index.js +3 -0
- package/dist/components/sheet/sheet.d.ts +33 -0
- package/dist/components/sheet/sheet.js +163 -0
- package/dist/components/sheet/sheet.stories.js +368 -0
- package/dist/components/table/data-table.d.ts +15 -2
- package/dist/components/table/data-table.js +7 -2
- package/dist/styles.css +1 -1
- package/package.json +12 -4
- package/.storybook/main.ts +0 -35
- package/.storybook/preview.tsx +0 -66
- package/.storybook/vitest.setup.ts +0 -4
- package/.turbo/turbo-build.log +0 -19
- package/.turbo/turbo-check.log +0 -6
- package/.turbo/turbo-type.log +0 -5
- package/CHANGELOG.md +0 -114
- package/argos.config.ts +0 -33
- package/dist/build-css-entry.js.map +0 -1
- package/dist/colors.stories.conts.d.ts.map +0 -1
- package/dist/colors.stories.conts.js.map +0 -1
- package/dist/colors.stories.js.map +0 -1
- package/dist/components/alert/alert.d.ts.map +0 -1
- package/dist/components/alert/alert.js.map +0 -1
- package/dist/components/alert/alert.stories.js.map +0 -1
- package/dist/components/alert/index.d.ts.map +0 -1
- package/dist/components/alert/index.js.map +0 -1
- package/dist/components/avatar/avatar-group.d.ts.map +0 -1
- package/dist/components/avatar/avatar-group.js.map +0 -1
- package/dist/components/avatar/avatar.d.ts.map +0 -1
- package/dist/components/avatar/avatar.js.map +0 -1
- package/dist/components/avatar/avatar.stories.js.map +0 -1
- package/dist/components/avatar/index.d.ts.map +0 -1
- package/dist/components/avatar/index.js.map +0 -1
- package/dist/components/badge/badge.d.ts.map +0 -1
- package/dist/components/badge/badge.js.map +0 -1
- package/dist/components/badge/badge.stories.js.map +0 -1
- package/dist/components/badge/icon-badge.d.ts.map +0 -1
- package/dist/components/badge/icon-badge.js.map +0 -1
- package/dist/components/badge/index.d.ts.map +0 -1
- package/dist/components/badge/index.js.map +0 -1
- package/dist/components/badge/status-badge.d.ts.map +0 -1
- package/dist/components/badge/status-badge.js.map +0 -1
- package/dist/components/badge/user-badge.d.ts.map +0 -1
- package/dist/components/badge/user-badge.js.map +0 -1
- package/dist/components/button/button-link.d.ts.map +0 -1
- package/dist/components/button/button-link.js.map +0 -1
- package/dist/components/button/button-link.stories.js.map +0 -1
- package/dist/components/button/button.d.ts.map +0 -1
- package/dist/components/button/button.js.map +0 -1
- package/dist/components/button/button.stories.js.map +0 -1
- package/dist/components/button/icon-button.d.ts.map +0 -1
- package/dist/components/button/icon-button.js.map +0 -1
- package/dist/components/button/icon-button.stories.js.map +0 -1
- package/dist/components/button/index.d.ts.map +0 -1
- package/dist/components/button/index.js.map +0 -1
- package/dist/components/button-group/button-group.d.ts.map +0 -1
- package/dist/components/button-group/button-group.js.map +0 -1
- package/dist/components/button-group/button-group.stories.js.map +0 -1
- package/dist/components/button-group/index.d.ts.map +0 -1
- package/dist/components/button-group/index.js.map +0 -1
- package/dist/components/calendar/calendar.d.ts.map +0 -1
- package/dist/components/calendar/calendar.js.map +0 -1
- package/dist/components/calendar/index.d.ts.map +0 -1
- package/dist/components/calendar/index.js.map +0 -1
- package/dist/components/checkbox/checkbox-label.d.ts.map +0 -1
- package/dist/components/checkbox/checkbox-label.js.map +0 -1
- package/dist/components/checkbox/checkbox-links.d.ts.map +0 -1
- package/dist/components/checkbox/checkbox-links.js.map +0 -1
- package/dist/components/checkbox/checkbox.d.ts.map +0 -1
- package/dist/components/checkbox/checkbox.js.map +0 -1
- package/dist/components/checkbox/checkbox.stories.js.map +0 -1
- package/dist/components/checkbox/index.d.ts.map +0 -1
- package/dist/components/checkbox/index.js.map +0 -1
- package/dist/components/code-block/code-block-footer.d.ts.map +0 -1
- package/dist/components/code-block/code-block-footer.js.map +0 -1
- package/dist/components/code-block/code-block.d.ts.map +0 -1
- package/dist/components/code-block/code-block.js.map +0 -1
- package/dist/components/code-block/code-block.stories.js.map +0 -1
- package/dist/components/code-block/code-content.d.ts.map +0 -1
- package/dist/components/code-block/code-content.js.map +0 -1
- package/dist/components/code-block/code-copy-button.d.ts.map +0 -1
- package/dist/components/code-block/code-copy-button.js.map +0 -1
- package/dist/components/code-block/code-tabs.d.ts.map +0 -1
- package/dist/components/code-block/code-tabs.js.map +0 -1
- package/dist/components/code-block/index.d.ts.map +0 -1
- package/dist/components/code-block/index.js.map +0 -1
- package/dist/components/command/command.d.ts.map +0 -1
- package/dist/components/command/command.js.map +0 -1
- package/dist/components/command/command.stories.js.map +0 -1
- package/dist/components/command/index.d.ts.map +0 -1
- package/dist/components/command/index.js.map +0 -1
- package/dist/components/confetti/confetti.d.ts.map +0 -1
- package/dist/components/confetti/confetti.js.map +0 -1
- package/dist/components/confetti/confetti.stories.js.map +0 -1
- package/dist/components/confetti/index.d.ts.map +0 -1
- package/dist/components/confetti/index.js.map +0 -1
- package/dist/components/dashboard/components/analytics-content.d.ts +0 -2
- package/dist/components/dashboard/components/analytics-content.d.ts.map +0 -1
- package/dist/components/dashboard/components/analytics-content.js +0 -180
- package/dist/components/dashboard/components/analytics-content.js.map +0 -1
- package/dist/components/dashboard/components/animated-logo.d.ts.map +0 -1
- package/dist/components/dashboard/components/animated-logo.js.map +0 -1
- package/dist/components/dashboard/components/complete-setup-button.d.ts.map +0 -1
- package/dist/components/dashboard/components/complete-setup-button.js.map +0 -1
- package/dist/components/dashboard/components/jobs-content.d.ts +0 -2
- package/dist/components/dashboard/components/jobs-content.d.ts.map +0 -1
- package/dist/components/dashboard/components/jobs-content.js +0 -69
- package/dist/components/dashboard/components/jobs-content.js.map +0 -1
- package/dist/components/dashboard/components/mobile-menu.d.ts.map +0 -1
- package/dist/components/dashboard/components/mobile-menu.js.map +0 -1
- package/dist/components/dashboard/components/organization-selector.d.ts.map +0 -1
- package/dist/components/dashboard/components/organization-selector.js.map +0 -1
- package/dist/components/dashboard/components/top-menu.d.ts.map +0 -1
- package/dist/components/dashboard/components/top-menu.js.map +0 -1
- package/dist/components/dashboard/components/topbar-button.d.ts.map +0 -1
- package/dist/components/dashboard/components/topbar-button.js.map +0 -1
- package/dist/components/dashboard/components/topbar.d.ts.map +0 -1
- package/dist/components/dashboard/components/topbar.js.map +0 -1
- package/dist/components/dashboard/components/user-profile.d.ts.map +0 -1
- package/dist/components/dashboard/components/user-profile.js.map +0 -1
- package/dist/components/dashboard/dashboard.d.ts.map +0 -1
- package/dist/components/dashboard/dashboard.js.map +0 -1
- package/dist/components/dashboard/dashboard.stories.js.map +0 -1
- package/dist/components/dashboard/index.d.ts.map +0 -1
- package/dist/components/dashboard/index.js.map +0 -1
- package/dist/components/date-picker/date-picker.d.ts.map +0 -1
- package/dist/components/date-picker/date-picker.js.map +0 -1
- package/dist/components/date-picker/date-picker.stories.js.map +0 -1
- package/dist/components/date-picker/index.d.ts.map +0 -1
- package/dist/components/date-picker/index.js.map +0 -1
- package/dist/components/date-time-range-picker/date-time-range-picker.d.ts.map +0 -1
- package/dist/components/date-time-range-picker/date-time-range-picker.js.map +0 -1
- package/dist/components/date-time-range-picker/index.d.ts.map +0 -1
- package/dist/components/date-time-range-picker/index.js.map +0 -1
- package/dist/components/dot-grid/dot-grid.d.ts.map +0 -1
- package/dist/components/dot-grid/dot-grid.js.map +0 -1
- package/dist/components/dot-grid/index.d.ts.map +0 -1
- package/dist/components/dot-grid/index.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.js.map +0 -1
- package/dist/components/dropdown-menu/dropdown-menu.stories.js.map +0 -1
- package/dist/components/dropdown-menu/index.d.ts.map +0 -1
- package/dist/components/dropdown-menu/index.js.map +0 -1
- package/dist/components/dynamic-item/dynamic-item.d.ts.map +0 -1
- package/dist/components/dynamic-item/dynamic-item.js.map +0 -1
- package/dist/components/dynamic-item/dynamic-item.stories.js.map +0 -1
- package/dist/components/dynamic-item/index.d.ts.map +0 -1
- package/dist/components/dynamic-item/index.js.map +0 -1
- package/dist/components/form/form.d.ts.map +0 -1
- package/dist/components/form/form.js.map +0 -1
- package/dist/components/form/form.stories.js.map +0 -1
- package/dist/components/form/index.d.ts.map +0 -1
- package/dist/components/form/index.js.map +0 -1
- package/dist/components/icon/custom/badge.d.ts.map +0 -1
- package/dist/components/icon/custom/badge.js.map +0 -1
- package/dist/components/icon/custom/check-circle-solid.d.ts.map +0 -1
- package/dist/components/icon/custom/check-circle-solid.js.map +0 -1
- package/dist/components/icon/custom/circle-dotted-line.d.ts.map +0 -1
- package/dist/components/icon/custom/circle-dotted-line.js.map +0 -1
- package/dist/components/icon/custom/component-fill.d.ts.map +0 -1
- package/dist/components/icon/custom/component-fill.js.map +0 -1
- package/dist/components/icon/custom/component-line.d.ts.map +0 -1
- package/dist/components/icon/custom/component-line.js.map +0 -1
- package/dist/components/icon/custom/ellipse-mini-solid.d.ts.map +0 -1
- package/dist/components/icon/custom/ellipse-mini-solid.js.map +0 -1
- package/dist/components/icon/custom/index.d.ts.map +0 -1
- package/dist/components/icon/custom/index.js.map +0 -1
- package/dist/components/icon/custom/info-tooltip-fill.d.ts.map +0 -1
- package/dist/components/icon/custom/info-tooltip-fill.js.map +0 -1
- package/dist/components/icon/custom/resize.d.ts.map +0 -1
- package/dist/components/icon/custom/resize.js.map +0 -1
- package/dist/components/icon/custom/shipfox-logo.d.ts.map +0 -1
- package/dist/components/icon/custom/shipfox-logo.js.map +0 -1
- package/dist/components/icon/custom/slack-logo.d.ts.map +0 -1
- package/dist/components/icon/custom/slack-logo.js.map +0 -1
- package/dist/components/icon/custom/spinner.d.ts.map +0 -1
- package/dist/components/icon/custom/spinner.js.map +0 -1
- package/dist/components/icon/custom/stripe-logo.d.ts.map +0 -1
- package/dist/components/icon/custom/stripe-logo.js.map +0 -1
- package/dist/components/icon/custom/thunder.d.ts.map +0 -1
- package/dist/components/icon/custom/thunder.js.map +0 -1
- package/dist/components/icon/custom/x-circle-solid.d.ts.map +0 -1
- package/dist/components/icon/custom/x-circle-solid.js.map +0 -1
- package/dist/components/icon/icon.d.ts.map +0 -1
- package/dist/components/icon/icon.js.map +0 -1
- package/dist/components/icon/icon.stories.js.map +0 -1
- package/dist/components/icon/index.d.ts.map +0 -1
- package/dist/components/icon/index.js.map +0 -1
- package/dist/components/icon/remixicon-registry.d.ts.map +0 -1
- package/dist/components/icon/remixicon-registry.js.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/inline-tips/index.d.ts.map +0 -1
- package/dist/components/inline-tips/index.js.map +0 -1
- package/dist/components/inline-tips/inline-tips.d.ts.map +0 -1
- package/dist/components/inline-tips/inline-tips.js.map +0 -1
- package/dist/components/inline-tips/inline-tips.stories.js.map +0 -1
- package/dist/components/input/index.d.ts.map +0 -1
- package/dist/components/input/index.js.map +0 -1
- package/dist/components/input/input.d.ts.map +0 -1
- package/dist/components/input/input.js.map +0 -1
- package/dist/components/input/input.stories.js.map +0 -1
- package/dist/components/item/index.d.ts.map +0 -1
- package/dist/components/item/index.js.map +0 -1
- package/dist/components/item/item.d.ts.map +0 -1
- package/dist/components/item/item.js.map +0 -1
- package/dist/components/item/item.stories.js.map +0 -1
- package/dist/components/kbd/index.d.ts.map +0 -1
- package/dist/components/kbd/index.js.map +0 -1
- package/dist/components/kbd/kbd.d.ts.map +0 -1
- package/dist/components/kbd/kbd.js.map +0 -1
- package/dist/components/kbd/kbd.stories.js.map +0 -1
- package/dist/components/label/index.d.ts.map +0 -1
- package/dist/components/label/index.js.map +0 -1
- package/dist/components/label/label.d.ts.map +0 -1
- package/dist/components/label/label.js.map +0 -1
- package/dist/components/label/label.stories.js.map +0 -1
- package/dist/components/modal/index.d.ts.map +0 -1
- package/dist/components/modal/index.js.map +0 -1
- package/dist/components/modal/modal.d.ts.map +0 -1
- package/dist/components/modal/modal.js.map +0 -1
- package/dist/components/modal/modal.stories.js.map +0 -1
- package/dist/components/moving-border/index.d.ts.map +0 -1
- package/dist/components/moving-border/index.js.map +0 -1
- package/dist/components/moving-border/moving-border.d.ts.map +0 -1
- package/dist/components/moving-border/moving-border.js.map +0 -1
- package/dist/components/popover/index.d.ts.map +0 -1
- package/dist/components/popover/index.js.map +0 -1
- package/dist/components/popover/popover.d.ts.map +0 -1
- package/dist/components/popover/popover.js.map +0 -1
- package/dist/components/search/index.d.ts.map +0 -1
- package/dist/components/search/index.js.map +0 -1
- package/dist/components/search/search-context.d.ts.map +0 -1
- package/dist/components/search/search-context.js.map +0 -1
- package/dist/components/search/search-inline.d.ts.map +0 -1
- package/dist/components/search/search-inline.js.map +0 -1
- package/dist/components/search/search-modal.d.ts.map +0 -1
- package/dist/components/search/search-modal.js.map +0 -1
- package/dist/components/search/search-trigger.d.ts.map +0 -1
- package/dist/components/search/search-trigger.js.map +0 -1
- package/dist/components/search/search-variants.d.ts.map +0 -1
- package/dist/components/search/search-variants.js.map +0 -1
- package/dist/components/search/search.d.ts.map +0 -1
- package/dist/components/search/search.js.map +0 -1
- package/dist/components/search/search.stories.js.map +0 -1
- package/dist/components/select/index.d.ts.map +0 -1
- package/dist/components/select/index.js.map +0 -1
- package/dist/components/select/select.d.ts.map +0 -1
- package/dist/components/select/select.js.map +0 -1
- package/dist/components/select/select.stories.js.map +0 -1
- package/dist/components/shiny-text/index.d.ts.map +0 -1
- package/dist/components/shiny-text/index.js.map +0 -1
- package/dist/components/shiny-text/shiny-text.d.ts.map +0 -1
- package/dist/components/shiny-text/shiny-text.js.map +0 -1
- package/dist/components/skeleton/index.d.ts.map +0 -1
- package/dist/components/skeleton/index.js.map +0 -1
- package/dist/components/skeleton/skeleton.d.ts.map +0 -1
- package/dist/components/skeleton/skeleton.js.map +0 -1
- package/dist/components/skeleton/skeleton.stories.js.map +0 -1
- package/dist/components/table/data-table.d.ts.map +0 -1
- package/dist/components/table/data-table.js.map +0 -1
- package/dist/components/table/index.d.ts.map +0 -1
- package/dist/components/table/index.js.map +0 -1
- package/dist/components/table/table-column-header.d.ts.map +0 -1
- package/dist/components/table/table-column-header.js.map +0 -1
- package/dist/components/table/table-pagination.d.ts.map +0 -1
- package/dist/components/table/table-pagination.js.map +0 -1
- package/dist/components/table/table.d.ts.map +0 -1
- package/dist/components/table/table.js.map +0 -1
- package/dist/components/table/table.stories.columns.d.ts.map +0 -1
- package/dist/components/table/table.stories.columns.js.map +0 -1
- package/dist/components/table/table.stories.components.d.ts.map +0 -1
- package/dist/components/table/table.stories.components.js.map +0 -1
- package/dist/components/table/table.stories.data.d.ts.map +0 -1
- package/dist/components/table/table.stories.data.js.map +0 -1
- package/dist/components/table/table.stories.js.map +0 -1
- package/dist/components/tabs/index.d.ts.map +0 -1
- package/dist/components/tabs/index.js.map +0 -1
- package/dist/components/tabs/tabs.d.ts.map +0 -1
- package/dist/components/tabs/tabs.js.map +0 -1
- package/dist/components/tabs/tabs.stories.js.map +0 -1
- package/dist/components/textarea/index.d.ts.map +0 -1
- package/dist/components/textarea/index.js.map +0 -1
- package/dist/components/textarea/textarea.d.ts.map +0 -1
- package/dist/components/textarea/textarea.js.map +0 -1
- package/dist/components/textarea/textarea.stories.js.map +0 -1
- package/dist/components/theme/index.d.ts.map +0 -1
- package/dist/components/theme/index.js.map +0 -1
- package/dist/components/theme/theme-provider.d.ts.map +0 -1
- package/dist/components/theme/theme-provider.js.map +0 -1
- package/dist/components/toast/index.d.ts.map +0 -1
- package/dist/components/toast/index.js.map +0 -1
- package/dist/components/toast/toast-custom.d.ts.map +0 -1
- package/dist/components/toast/toast-custom.js.map +0 -1
- package/dist/components/toast/toast.d.ts.map +0 -1
- package/dist/components/toast/toast.js.map +0 -1
- package/dist/components/toast/toast.stories.js.map +0 -1
- package/dist/components/tooltip/index.d.ts.map +0 -1
- package/dist/components/tooltip/index.js.map +0 -1
- package/dist/components/tooltip/tooltip.d.ts.map +0 -1
- package/dist/components/tooltip/tooltip.js.map +0 -1
- package/dist/components/tooltip/tooltip.stories.js.map +0 -1
- package/dist/components/typography/code.d.ts.map +0 -1
- package/dist/components/typography/code.js.map +0 -1
- package/dist/components/typography/code.stories.js.map +0 -1
- package/dist/components/typography/header.d.ts.map +0 -1
- package/dist/components/typography/header.js.map +0 -1
- package/dist/components/typography/header.stories.js.map +0 -1
- package/dist/components/typography/index.d.ts.map +0 -1
- package/dist/components/typography/index.js.map +0 -1
- package/dist/components/typography/text.d.ts.map +0 -1
- package/dist/components/typography/text.js.map +0 -1
- package/dist/components/typography/text.stories.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useCopy.d.ts.map +0 -1
- package/dist/hooks/useCopy.js.map +0 -1
- package/dist/hooks/useCopyToClipboard.d.ts.map +0 -1
- package/dist/hooks/useCopyToClipboard.js.map +0 -1
- package/dist/hooks/useMediaQuery.d.ts.map +0 -1
- package/dist/hooks/useMediaQuery.js.map +0 -1
- package/dist/hooks/useResolvedTheme.d.ts.map +0 -1
- package/dist/hooks/useResolvedTheme.js.map +0 -1
- package/dist/hooks/useShikiHighlight.d.ts.map +0 -1
- package/dist/hooks/useShikiHighlight.js.map +0 -1
- package/dist/hooks/useShikiStyleInjection.d.ts.map +0 -1
- package/dist/hooks/useShikiStyleInjection.js.map +0 -1
- package/dist/hooks/useTheme.d.ts.map +0 -1
- package/dist/hooks/useTheme.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/onboarding/sign-in.stories.js.map +0 -1
- package/dist/state/theme.d.ts.map +0 -1
- package/dist/state/theme.js.map +0 -1
- package/dist/utils/avatar.d.ts.map +0 -1
- package/dist/utils/avatar.js.map +0 -1
- package/dist/utils/clipboard.d.ts.map +0 -1
- package/dist/utils/clipboard.js.map +0 -1
- package/dist/utils/cn.d.ts.map +0 -1
- package/dist/utils/cn.js.map +0 -1
- package/dist/utils/date.d.ts.map +0 -1
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/debounce.d.ts.map +0 -1
- package/dist/utils/debounce.js.map +0 -1
- package/dist/utils/format/chart.d.ts.map +0 -1
- package/dist/utils/format/chart.js.map +0 -1
- package/dist/utils/format/date.d.ts.map +0 -1
- package/dist/utils/format/date.js.map +0 -1
- package/dist/utils/format/duration.d.ts.map +0 -1
- package/dist/utils/format/duration.js.map +0 -1
- package/dist/utils/format/index.d.ts.map +0 -1
- package/dist/utils/format/index.js.map +0 -1
- package/dist/utils/format/number.d.ts.map +0 -1
- package/dist/utils/format/number.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/index.css +0 -1018
- package/src/assets/illustration-1.svg +0 -92
- package/src/assets/illustration-2.svg +0 -14
- package/src/assets/illustration-gradient.svg +0 -7049
- package/src/build-css-entry.ts +0 -3
- package/src/colors.stories.conts.ts +0 -164
- package/src/colors.stories.tsx +0 -66
- package/src/components/alert/alert.stories.tsx +0 -178
- package/src/components/alert/alert.tsx +0 -291
- package/src/components/alert/index.ts +0 -1
- package/src/components/avatar/avatar-group.tsx +0 -186
- package/src/components/avatar/avatar.stories.tsx +0 -179
- package/src/components/avatar/avatar.tsx +0 -219
- package/src/components/avatar/index.ts +0 -2
- package/src/components/badge/badge.stories.tsx +0 -468
- package/src/components/badge/badge.tsx +0 -147
- package/src/components/badge/icon-badge.tsx +0 -43
- package/src/components/badge/index.ts +0 -4
- package/src/components/badge/status-badge.tsx +0 -43
- package/src/components/badge/user-badge.tsx +0 -34
- package/src/components/button/button-link.stories.tsx +0 -86
- package/src/components/button/button-link.tsx +0 -76
- package/src/components/button/button.stories.tsx +0 -138
- package/src/components/button/button.tsx +0 -91
- package/src/components/button/icon-button.stories.tsx +0 -228
- package/src/components/button/icon-button.tsx +0 -95
- package/src/components/button/index.ts +0 -3
- package/src/components/button-group/button-group.stories.tsx +0 -361
- package/src/components/button-group/button-group.tsx +0 -111
- package/src/components/button-group/index.ts +0 -1
- package/src/components/calendar/calendar.tsx +0 -90
- package/src/components/calendar/index.ts +0 -1
- package/src/components/checkbox/checkbox-label.tsx +0 -125
- package/src/components/checkbox/checkbox-links.tsx +0 -92
- package/src/components/checkbox/checkbox.stories.tsx +0 -391
- package/src/components/checkbox/checkbox.tsx +0 -71
- package/src/components/checkbox/index.ts +0 -3
- package/src/components/code-block/code-block-footer.tsx +0 -197
- package/src/components/code-block/code-block.stories.tsx +0 -323
- package/src/components/code-block/code-block.tsx +0 -283
- package/src/components/code-block/code-content.tsx +0 -63
- package/src/components/code-block/code-copy-button.tsx +0 -73
- package/src/components/code-block/code-tabs.tsx +0 -170
- package/src/components/code-block/index.ts +0 -3
- package/src/components/command/command.stories.tsx +0 -133
- package/src/components/command/command.tsx +0 -265
- package/src/components/command/index.ts +0 -1
- package/src/components/confetti/confetti.stories.tsx +0 -38
- package/src/components/confetti/confetti.tsx +0 -140
- package/src/components/confetti/index.ts +0 -1
- package/src/components/dashboard/components/analytics-content.tsx +0 -102
- package/src/components/dashboard/components/animated-logo.tsx +0 -25
- package/src/components/dashboard/components/complete-setup-button.tsx +0 -30
- package/src/components/dashboard/components/jobs-content.tsx +0 -51
- package/src/components/dashboard/components/mobile-menu.tsx +0 -50
- package/src/components/dashboard/components/organization-selector.tsx +0 -51
- package/src/components/dashboard/components/top-menu.tsx +0 -26
- package/src/components/dashboard/components/topbar-button.tsx +0 -27
- package/src/components/dashboard/components/topbar.tsx +0 -40
- package/src/components/dashboard/components/user-profile.tsx +0 -90
- package/src/components/dashboard/dashboard.stories.tsx +0 -25
- package/src/components/dashboard/dashboard.tsx +0 -61
- package/src/components/dashboard/index.ts +0 -1
- package/src/components/date-picker/date-picker.stories.tsx +0 -230
- package/src/components/date-picker/date-picker.tsx +0 -179
- package/src/components/date-picker/index.ts +0 -1
- package/src/components/date-time-range-picker/date-time-range-picker.tsx +0 -211
- package/src/components/date-time-range-picker/index.ts +0 -1
- package/src/components/dot-grid/dot-grid.tsx +0 -325
- package/src/components/dot-grid/index.ts +0 -1
- package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -384
- package/src/components/dropdown-menu/dropdown-menu.tsx +0 -416
- package/src/components/dropdown-menu/index.ts +0 -1
- package/src/components/dynamic-item/dynamic-item.stories.tsx +0 -266
- package/src/components/dynamic-item/dynamic-item.tsx +0 -74
- package/src/components/dynamic-item/index.ts +0 -1
- package/src/components/form/form.stories.tsx +0 -505
- package/src/components/form/form.tsx +0 -154
- package/src/components/form/index.ts +0 -1
- package/src/components/icon/custom/badge.tsx +0 -17
- package/src/components/icon/custom/check-circle-solid.tsx +0 -24
- package/src/components/icon/custom/circle-dotted-line.tsx +0 -17
- package/src/components/icon/custom/component-fill.tsx +0 -17
- package/src/components/icon/custom/component-line.tsx +0 -17
- package/src/components/icon/custom/ellipse-mini-solid.tsx +0 -17
- package/src/components/icon/custom/index.ts +0 -14
- package/src/components/icon/custom/info-tooltip-fill.tsx +0 -21
- package/src/components/icon/custom/resize.tsx +0 -17
- package/src/components/icon/custom/shipfox-logo.tsx +0 -20
- package/src/components/icon/custom/slack-logo.tsx +0 -35
- package/src/components/icon/custom/spinner.tsx +0 -144
- package/src/components/icon/custom/stripe-logo.tsx +0 -27
- package/src/components/icon/custom/thunder.tsx +0 -17
- package/src/components/icon/custom/x-circle-solid.tsx +0 -24
- package/src/components/icon/icon.stories.tsx +0 -31
- package/src/components/icon/icon.tsx +0 -90
- package/src/components/icon/index.ts +0 -1
- package/src/components/icon/remixicon-registry.ts +0 -24
- package/src/components/index.ts +0 -36
- package/src/components/inline-tips/index.ts +0 -1
- package/src/components/inline-tips/inline-tips.stories.tsx +0 -131
- package/src/components/inline-tips/inline-tips.tsx +0 -132
- package/src/components/input/index.ts +0 -1
- package/src/components/input/input.stories.tsx +0 -138
- package/src/components/input/input.tsx +0 -43
- package/src/components/item/index.ts +0 -1
- package/src/components/item/item.stories.tsx +0 -159
- package/src/components/item/item.tsx +0 -182
- package/src/components/kbd/index.ts +0 -1
- package/src/components/kbd/kbd.stories.tsx +0 -64
- package/src/components/kbd/kbd.tsx +0 -32
- package/src/components/label/index.ts +0 -1
- package/src/components/label/label.stories.tsx +0 -67
- package/src/components/label/label.tsx +0 -15
- package/src/components/modal/index.ts +0 -1
- package/src/components/modal/modal.stories.tsx +0 -448
- package/src/components/modal/modal.tsx +0 -311
- package/src/components/moving-border/index.ts +0 -1
- package/src/components/moving-border/moving-border.tsx +0 -67
- package/src/components/popover/index.ts +0 -1
- package/src/components/popover/popover.tsx +0 -60
- package/src/components/renovate.json +0 -23
- package/src/components/search/index.ts +0 -28
- package/src/components/search/search-context.tsx +0 -78
- package/src/components/search/search-inline.tsx +0 -107
- package/src/components/search/search-modal.tsx +0 -198
- package/src/components/search/search-trigger.tsx +0 -47
- package/src/components/search/search-variants.ts +0 -88
- package/src/components/search/search.stories.tsx +0 -392
- package/src/components/search/search.tsx +0 -47
- package/src/components/select/index.ts +0 -1
- package/src/components/select/select.stories.tsx +0 -207
- package/src/components/select/select.tsx +0 -220
- package/src/components/shiny-text/index.ts +0 -1
- package/src/components/shiny-text/shiny-text.tsx +0 -21
- package/src/components/skeleton/index.ts +0 -1
- package/src/components/skeleton/skeleton.stories.tsx +0 -178
- package/src/components/skeleton/skeleton.tsx +0 -14
- package/src/components/table/data-table.tsx +0 -254
- package/src/components/table/index.ts +0 -5
- package/src/components/table/table-column-header.tsx +0 -141
- package/src/components/table/table-pagination.tsx +0 -161
- package/src/components/table/table.stories.columns.tsx +0 -198
- package/src/components/table/table.stories.components.tsx +0 -104
- package/src/components/table/table.stories.data.ts +0 -117
- package/src/components/table/table.stories.tsx +0 -256
- package/src/components/table/table.tsx +0 -95
- package/src/components/tabs/index.ts +0 -1
- package/src/components/tabs/tabs.stories.tsx +0 -100
- package/src/components/tabs/tabs.tsx +0 -380
- package/src/components/textarea/index.ts +0 -1
- package/src/components/textarea/textarea.stories.tsx +0 -196
- package/src/components/textarea/textarea.tsx +0 -42
- package/src/components/theme/index.ts +0 -1
- package/src/components/theme/theme-provider.tsx +0 -50
- package/src/components/toast/index.ts +0 -2
- package/src/components/toast/toast-custom.tsx +0 -154
- package/src/components/toast/toast.stories.tsx +0 -369
- package/src/components/toast/toast.tsx +0 -41
- package/src/components/tooltip/index.ts +0 -1
- package/src/components/tooltip/tooltip.stories.tsx +0 -284
- package/src/components/tooltip/tooltip.tsx +0 -121
- package/src/components/typography/code.stories.tsx +0 -36
- package/src/components/typography/code.tsx +0 -38
- package/src/components/typography/header.stories.tsx +0 -27
- package/src/components/typography/header.tsx +0 -41
- package/src/components/typography/index.ts +0 -3
- package/src/components/typography/text.stories.tsx +0 -67
- package/src/components/typography/text.tsx +0 -50
- package/src/hooks/index.ts +0 -6
- package/src/hooks/useCopy.ts +0 -0
- package/src/hooks/useCopyToClipboard.ts +0 -20
- package/src/hooks/useMediaQuery.ts +0 -87
- package/src/hooks/useResolvedTheme.ts +0 -34
- package/src/hooks/useShikiHighlight.ts +0 -140
- package/src/hooks/useShikiStyleInjection.ts +0 -34
- package/src/hooks/useTheme.ts +0 -10
- package/src/index.ts +0 -4
- package/src/onboarding/sign-in.stories.tsx +0 -85
- package/src/state/theme.ts +0 -15
- package/src/utils/avatar.ts +0 -27
- package/src/utils/clipboard.ts +0 -4
- package/src/utils/cn.ts +0 -6
- package/src/utils/date.test.ts +0 -119
- package/src/utils/date.ts +0 -99
- package/src/utils/debounce.ts +0 -15
- package/src/utils/format/chart.ts +0 -16
- package/src/utils/format/date.test.ts +0 -65
- package/src/utils/format/date.ts +0 -75
- package/src/utils/format/duration.test.ts +0 -58
- package/src/utils/format/duration.ts +0 -82
- package/src/utils/format/index.ts +0 -4
- package/src/utils/format/number.test.ts +0 -38
- package/src/utils/format/number.ts +0 -33
- package/src/utils/index.ts +0 -6
- package/test/global.ts +0 -3
- package/test/setup.ts +0 -9
- package/tsconfig.build.json +0 -19
- package/tsconfig.json +0 -11
- package/tsconfig.test.json +0 -12
- package/vercel.json +0 -8
- package/vite.css.config.ts +0 -30
- 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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|