@shipfox/react-ui 0.14.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/avatar/avatar.js +1 -1
- package/dist/components/button-group/button-group.d.ts +17 -0
- package/dist/components/button-group/button-group.js +74 -0
- package/dist/components/button-group/button-group.stories.js +644 -0
- package/dist/components/button-group/index.d.ts +2 -0
- package/dist/components/button-group/index.js +3 -0
- package/dist/components/code-block/code-block-footer.js +4 -2
- package/dist/components/command/command.d.ts +28 -0
- package/dist/components/command/command.js +190 -0
- package/dist/components/command/command.stories.js +228 -0
- package/dist/components/command/index.d.ts +2 -0
- package/dist/components/command/index.js +3 -0
- package/dist/components/dashboard/components/animated-logo.d.ts +4 -0
- package/dist/components/dashboard/components/animated-logo.js +23 -0
- 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/complete-setup-button.d.ts +4 -0
- package/dist/components/dashboard/components/complete-setup-button.js +28 -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-menu.d.ts +2 -0
- package/dist/components/dashboard/components/mobile-menu.js +65 -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 +25 -0
- package/dist/components/dashboard/components/organization-selector.js +115 -0
- package/dist/components/dashboard/components/sidebar.d.ts +24 -0
- package/dist/components/dashboard/components/sidebar.js +218 -0
- package/dist/components/dashboard/components/top-menu.d.ts +5 -0
- package/dist/components/dashboard/components/top-menu.js +31 -0
- package/dist/components/dashboard/components/topbar-button.d.ts +7 -0
- package/dist/components/dashboard/components/topbar-button.js +18 -0
- package/dist/components/dashboard/components/topbar.d.ts +4 -0
- package/dist/components/dashboard/components/topbar.js +62 -0
- package/dist/components/dashboard/components/user-profile.d.ts +2 -0
- package/dist/components/dashboard/components/user-profile.js +146 -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 +28 -0
- package/dist/components/dashboard/dashboard.js +110 -0
- package/dist/components/dashboard/dashboard.stories.js +23 -0
- 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 +26 -0
- package/dist/components/dashboard/index.js +24 -0
- 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/form/form.stories.js +6 -1
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.js +8 -0
- package/dist/components/kbd/index.d.ts +2 -0
- package/dist/components/kbd/index.js +3 -0
- package/dist/components/kbd/kbd.d.ts +7 -0
- package/dist/components/kbd/kbd.js +18 -0
- package/dist/components/kbd/kbd.stories.js +119 -0
- package/dist/components/modal/modal.js +3 -3
- package/dist/components/search/index.d.ts +7 -0
- package/dist/components/search/index.js +8 -0
- package/dist/components/search/search-context.d.ts +11 -0
- package/dist/components/search/search-context.js +56 -0
- package/dist/components/search/search-inline.d.ts +9 -0
- package/dist/components/search/search-inline.js +85 -0
- package/dist/components/search/search-modal.d.ts +25 -0
- package/dist/components/search/search-modal.js +168 -0
- package/dist/components/search/search-trigger.d.ts +9 -0
- package/dist/components/search/search-trigger.js +37 -0
- package/dist/components/search/search-variants.d.ts +14 -0
- package/dist/components/search/search-variants.js +90 -0
- package/dist/components/search/search.d.ts +11 -0
- package/dist/components/search/search.js +35 -0
- package/dist/components/search/search.stories.js +630 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.js +3 -0
- package/dist/components/select/select.d.ts +27 -0
- package/dist/components/select/select.js +154 -0
- package/dist/components/select/select.stories.js +393 -0
- 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/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +3 -0
- package/dist/components/skeleton/skeleton.d.ts +5 -0
- package/dist/components/skeleton/skeleton.js +11 -0
- package/dist/components/skeleton/skeleton.stories.js +345 -0
- package/dist/components/table/data-table.d.ts +83 -0
- package/dist/components/table/data-table.js +164 -0
- package/dist/components/table/index.d.ts +6 -0
- package/dist/components/table/index.js +6 -0
- package/dist/components/table/table-column-header.d.ts +79 -0
- package/dist/components/table/table-column-header.js +99 -0
- package/dist/components/table/table-pagination.d.ts +53 -0
- package/dist/components/table/table-pagination.js +139 -0
- package/dist/components/table/table.d.ts +11 -0
- package/dist/components/table/table.js +64 -0
- package/dist/components/table/table.stories.columns.d.ts +24 -0
- package/dist/components/table/table.stories.columns.js +310 -0
- package/dist/components/table/table.stories.components.d.ts +14 -0
- package/dist/components/table/table.stories.components.js +107 -0
- package/dist/components/table/table.stories.data.d.ts +54 -0
- package/dist/components/table/table.stories.data.js +122 -0
- package/dist/components/table/table.stories.js +302 -0
- package/dist/styles.css +1 -1
- package/package.json +14 -5
- package/.storybook/main.ts +0 -35
- package/.storybook/preview.tsx +0 -59
- 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 -104
- 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/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/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/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/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/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/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 -970
- 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/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 -190
- 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/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/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 -500
- 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 -29
- 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/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/shiny-text/index.ts +0 -1
- package/src/components/shiny-text/shiny-text.tsx +0 -21
- 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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Context Provider
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized state management for dashboard components including
|
|
5
|
+
* search, filters, column visibility, time period, and sidebar navigation.
|
|
6
|
+
*/
|
|
7
|
+
import { type ReactNode } from 'react';
|
|
8
|
+
import type { DashboardState, FilterOption, ResourceType, TimePeriod, ViewColumn } from './types';
|
|
9
|
+
export interface DashboardProviderProps {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Initial columns configuration
|
|
13
|
+
* @default DEFAULT_COLUMNS
|
|
14
|
+
*/
|
|
15
|
+
initialColumns?: ViewColumn[];
|
|
16
|
+
/**
|
|
17
|
+
* Initial filters configuration
|
|
18
|
+
* @default DEFAULT_FILTERS
|
|
19
|
+
*/
|
|
20
|
+
initialFilters?: FilterOption[];
|
|
21
|
+
/**
|
|
22
|
+
* Initial time period
|
|
23
|
+
* @default '2days'
|
|
24
|
+
*/
|
|
25
|
+
initialTimePeriod?: TimePeriod;
|
|
26
|
+
/**
|
|
27
|
+
* Initial active sidebar item
|
|
28
|
+
* @default 'reliability'
|
|
29
|
+
*/
|
|
30
|
+
initialActiveSidebarItem?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Initial resource type
|
|
33
|
+
* @default 'ci-pipeline'
|
|
34
|
+
*/
|
|
35
|
+
initialResourceType?: ResourceType;
|
|
36
|
+
/**
|
|
37
|
+
* Custom column ID to accessor key mapping
|
|
38
|
+
* @default DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY from utils
|
|
39
|
+
*/
|
|
40
|
+
columnMapping?: Record<string, string>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Dashboard Provider Component
|
|
44
|
+
*
|
|
45
|
+
* Wraps dashboard components to provide shared state management.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <DashboardProvider initialTimePeriod="7days">
|
|
50
|
+
* <AnalyticsContent />
|
|
51
|
+
* </DashboardProvider>
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function DashboardProvider({ children, initialColumns, initialFilters, initialTimePeriod, initialActiveSidebarItem, initialResourceType, columnMapping, }: DashboardProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
/**
|
|
56
|
+
* Hook to access dashboard context
|
|
57
|
+
*
|
|
58
|
+
* @throws Error if used outside of DashboardProvider
|
|
59
|
+
* @returns Dashboard state and setters
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* function MyComponent() {
|
|
64
|
+
* const { searchQuery, setSearchQuery } = useDashboardContext();
|
|
65
|
+
* return <input value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} />;
|
|
66
|
+
* }
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function useDashboardContext(): DashboardState;
|
|
70
|
+
//# sourceMappingURL=dashboard-context.d.ts.map
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Context Provider
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized state management for dashboard components including
|
|
5
|
+
* search, filters, column visibility, time period, and sidebar navigation.
|
|
6
|
+
*/ import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
import { createContext, useCallback, useContext, useMemo, useState } from 'react';
|
|
8
|
+
import { updateViewColumnsFromVisibility, viewColumnsToVisibilityState } from './utils.js';
|
|
9
|
+
const DashboardContext = /*#__PURE__*/ createContext(undefined);
|
|
10
|
+
/**
|
|
11
|
+
* Default columns configuration
|
|
12
|
+
*/ const DEFAULT_COLUMNS = [
|
|
13
|
+
{
|
|
14
|
+
id: 'total',
|
|
15
|
+
label: 'Total',
|
|
16
|
+
visible: true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'success',
|
|
20
|
+
label: 'Success',
|
|
21
|
+
visible: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'failed',
|
|
25
|
+
label: 'Failed',
|
|
26
|
+
visible: true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'neutral',
|
|
30
|
+
label: 'Neutral',
|
|
31
|
+
visible: true
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'flaked',
|
|
35
|
+
label: 'Flaked',
|
|
36
|
+
visible: true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'failure-rate',
|
|
40
|
+
label: 'Failure rate',
|
|
41
|
+
visible: true
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'flake-rate',
|
|
45
|
+
label: 'Flake rate',
|
|
46
|
+
visible: true
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'repository',
|
|
50
|
+
label: 'Repository',
|
|
51
|
+
visible: false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 'branch',
|
|
55
|
+
label: 'Branch',
|
|
56
|
+
visible: false
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
/**
|
|
60
|
+
* Default filters configuration
|
|
61
|
+
*/ const DEFAULT_FILTERS = [
|
|
62
|
+
{
|
|
63
|
+
id: 'success',
|
|
64
|
+
label: 'Success',
|
|
65
|
+
checked: false
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'failed',
|
|
69
|
+
label: 'Failed',
|
|
70
|
+
checked: false
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'neutral',
|
|
74
|
+
label: 'Neutral',
|
|
75
|
+
checked: false
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'flaked',
|
|
79
|
+
label: 'Flaked',
|
|
80
|
+
checked: false
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: 'running',
|
|
84
|
+
label: 'Running',
|
|
85
|
+
checked: false
|
|
86
|
+
}
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* Dashboard Provider Component
|
|
90
|
+
*
|
|
91
|
+
* Wraps dashboard components to provide shared state management.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```tsx
|
|
95
|
+
* <DashboardProvider initialTimePeriod="7days">
|
|
96
|
+
* <AnalyticsContent />
|
|
97
|
+
* </DashboardProvider>
|
|
98
|
+
* ```
|
|
99
|
+
*/ export function DashboardProvider({ children, initialColumns = DEFAULT_COLUMNS, initialFilters = DEFAULT_FILTERS, initialTimePeriod = '2days', initialActiveSidebarItem = 'reliability', initialResourceType = 'ci-pipeline', columnMapping }) {
|
|
100
|
+
// State management
|
|
101
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
102
|
+
const [timePeriod, setTimePeriod] = useState(initialTimePeriod);
|
|
103
|
+
const [lastUpdated, setLastUpdated] = useState('13s ago');
|
|
104
|
+
const [columns, setColumns] = useState(initialColumns);
|
|
105
|
+
const [filters, setFilters] = useState(initialFilters);
|
|
106
|
+
const [activeSidebarItem, setActiveSidebarItem] = useState(initialActiveSidebarItem);
|
|
107
|
+
const [resourceType, setResourceType] = useState(initialResourceType);
|
|
108
|
+
// Compute column visibility state
|
|
109
|
+
const columnVisibility = useMemo(()=>viewColumnsToVisibilityState(columns, columnMapping), [
|
|
110
|
+
columns,
|
|
111
|
+
columnMapping
|
|
112
|
+
]);
|
|
113
|
+
// Handle column visibility updates from table
|
|
114
|
+
const updateColumnVisibility = useCallback((visibility)=>{
|
|
115
|
+
const updatedColumns = updateViewColumnsFromVisibility(columns, visibility, columnMapping);
|
|
116
|
+
setColumns(updatedColumns);
|
|
117
|
+
}, [
|
|
118
|
+
columns,
|
|
119
|
+
columnMapping
|
|
120
|
+
]);
|
|
121
|
+
const value = useMemo(()=>({
|
|
122
|
+
searchQuery,
|
|
123
|
+
setSearchQuery,
|
|
124
|
+
timePeriod,
|
|
125
|
+
setTimePeriod,
|
|
126
|
+
lastUpdated,
|
|
127
|
+
setLastUpdated,
|
|
128
|
+
columns,
|
|
129
|
+
setColumns,
|
|
130
|
+
columnVisibility,
|
|
131
|
+
updateColumnVisibility,
|
|
132
|
+
filters,
|
|
133
|
+
setFilters,
|
|
134
|
+
activeSidebarItem,
|
|
135
|
+
setActiveSidebarItem,
|
|
136
|
+
resourceType,
|
|
137
|
+
setResourceType
|
|
138
|
+
}), [
|
|
139
|
+
searchQuery,
|
|
140
|
+
timePeriod,
|
|
141
|
+
lastUpdated,
|
|
142
|
+
columns,
|
|
143
|
+
columnVisibility,
|
|
144
|
+
updateColumnVisibility,
|
|
145
|
+
filters,
|
|
146
|
+
activeSidebarItem,
|
|
147
|
+
resourceType
|
|
148
|
+
]);
|
|
149
|
+
return /*#__PURE__*/ _jsx(DashboardContext.Provider, {
|
|
150
|
+
value: value,
|
|
151
|
+
children: children
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Hook to access dashboard context
|
|
156
|
+
*
|
|
157
|
+
* @throws Error if used outside of DashboardProvider
|
|
158
|
+
* @returns Dashboard state and setters
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```tsx
|
|
162
|
+
* function MyComponent() {
|
|
163
|
+
* const { searchQuery, setSearchQuery } = useDashboardContext();
|
|
164
|
+
* return <input value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} />;
|
|
165
|
+
* }
|
|
166
|
+
* ```
|
|
167
|
+
*/ export function useDashboardContext() {
|
|
168
|
+
const context = useContext(DashboardContext);
|
|
169
|
+
if (!context) {
|
|
170
|
+
throw new Error('useDashboardContext must be used within a DashboardProvider');
|
|
171
|
+
}
|
|
172
|
+
return context;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
//# sourceMappingURL=dashboard-context.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Context exports
|
|
3
|
+
*/
|
|
4
|
+
export type { DashboardProviderProps } from './dashboard-context';
|
|
5
|
+
export { DashboardProvider, useDashboardContext } from './dashboard-context';
|
|
6
|
+
export type { DashboardState, FilterOption, ResourceType, TimePeriod, ViewColumn } from './types';
|
|
7
|
+
export { DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY, updateViewColumnsFromVisibility, viewColumnsToVisibilityState, } from './utils';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Context exports
|
|
3
|
+
*/ export { DashboardProvider, useDashboardContext } from './dashboard-context.js';
|
|
4
|
+
export { DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY, updateViewColumnsFromVisibility, viewColumnsToVisibilityState } from './utils.js';
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for dashboard components
|
|
3
|
+
*/
|
|
4
|
+
import type { VisibilityState } from '@tanstack/react-table';
|
|
5
|
+
/**
|
|
6
|
+
* View column configuration for table visibility control
|
|
7
|
+
*/
|
|
8
|
+
export interface ViewColumn {
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
visible: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Filter option configuration
|
|
15
|
+
*/
|
|
16
|
+
export interface FilterOption {
|
|
17
|
+
id: string;
|
|
18
|
+
label: string;
|
|
19
|
+
checked: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Time period option
|
|
23
|
+
*/
|
|
24
|
+
export type TimePeriod = '1hour' | '1day' | '2days' | '7days' | '30days';
|
|
25
|
+
/**
|
|
26
|
+
* Resource type option
|
|
27
|
+
*/
|
|
28
|
+
export type ResourceType = 'ci-pipeline' | 'ci-jobs' | 'ci-steps' | 'runners' | 'suite' | 'cases';
|
|
29
|
+
/**
|
|
30
|
+
* Dashboard context state
|
|
31
|
+
*/
|
|
32
|
+
export interface DashboardState {
|
|
33
|
+
searchQuery: string;
|
|
34
|
+
setSearchQuery: (query: string) => void;
|
|
35
|
+
timePeriod: TimePeriod;
|
|
36
|
+
setTimePeriod: (period: TimePeriod) => void;
|
|
37
|
+
lastUpdated: string;
|
|
38
|
+
setLastUpdated: (timestamp: string) => void;
|
|
39
|
+
columns: ViewColumn[];
|
|
40
|
+
setColumns: (columns: ViewColumn[]) => void;
|
|
41
|
+
columnVisibility: VisibilityState;
|
|
42
|
+
updateColumnVisibility: (visibility: VisibilityState) => void;
|
|
43
|
+
filters: FilterOption[];
|
|
44
|
+
setFilters: (filters: FilterOption[]) => void;
|
|
45
|
+
activeSidebarItem: string;
|
|
46
|
+
setActiveSidebarItem: (itemId: string) => void;
|
|
47
|
+
resourceType: ResourceType;
|
|
48
|
+
setResourceType: (type: ResourceType) => void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for dashboard state management
|
|
3
|
+
*/
|
|
4
|
+
import type { VisibilityState } from '@tanstack/react-table';
|
|
5
|
+
import type { ViewColumn } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Default column ID to accessor key mapping
|
|
8
|
+
* Maps ViewColumn IDs (kebab-case) to table column accessorKeys (camelCase)
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY: Record<string, string>;
|
|
11
|
+
/**
|
|
12
|
+
* Converts ViewColumn[] to VisibilityState format for DataTable
|
|
13
|
+
*
|
|
14
|
+
* @param columns - Array of ViewColumn configurations
|
|
15
|
+
* @param columnMapping - Optional custom column ID to accessor key mapping
|
|
16
|
+
* @returns VisibilityState object for TanStack Table
|
|
17
|
+
*/
|
|
18
|
+
export declare function viewColumnsToVisibilityState(columns: ViewColumn[], columnMapping?: Record<string, string>): VisibilityState;
|
|
19
|
+
/**
|
|
20
|
+
* Updates ViewColumn[] based on VisibilityState changes
|
|
21
|
+
*
|
|
22
|
+
* @param columns - Current ViewColumn array
|
|
23
|
+
* @param visibility - New VisibilityState from table
|
|
24
|
+
* @param columnMapping - Optional custom column ID to accessor key mapping
|
|
25
|
+
* @returns Updated ViewColumn array
|
|
26
|
+
*/
|
|
27
|
+
export declare function updateViewColumnsFromVisibility(columns: ViewColumn[], visibility: VisibilityState, columnMapping?: Record<string, string>): ViewColumn[];
|
|
28
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for dashboard state management
|
|
3
|
+
*/ /**
|
|
4
|
+
* Default column ID to accessor key mapping
|
|
5
|
+
* Maps ViewColumn IDs (kebab-case) to table column accessorKeys (camelCase)
|
|
6
|
+
*/ export const DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY = {
|
|
7
|
+
total: 'total',
|
|
8
|
+
success: 'success',
|
|
9
|
+
failed: 'failed',
|
|
10
|
+
neutral: 'neutral',
|
|
11
|
+
flaked: 'flaked',
|
|
12
|
+
'failure-rate': 'failureRate',
|
|
13
|
+
'flake-rate': 'flakeRate',
|
|
14
|
+
repository: 'repository',
|
|
15
|
+
branch: 'branch'
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Converts ViewColumn[] to VisibilityState format for DataTable
|
|
19
|
+
*
|
|
20
|
+
* @param columns - Array of ViewColumn configurations
|
|
21
|
+
* @param columnMapping - Optional custom column ID to accessor key mapping
|
|
22
|
+
* @returns VisibilityState object for TanStack Table
|
|
23
|
+
*/ export function viewColumnsToVisibilityState(columns, columnMapping = DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY) {
|
|
24
|
+
const visibility = {};
|
|
25
|
+
for (const column of columns){
|
|
26
|
+
const accessorKey = columnMapping[column.id];
|
|
27
|
+
if (accessorKey) {
|
|
28
|
+
visibility[accessorKey] = column.visible;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return visibility;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Updates ViewColumn[] based on VisibilityState changes
|
|
35
|
+
*
|
|
36
|
+
* @param columns - Current ViewColumn array
|
|
37
|
+
* @param visibility - New VisibilityState from table
|
|
38
|
+
* @param columnMapping - Optional custom column ID to accessor key mapping
|
|
39
|
+
* @returns Updated ViewColumn array
|
|
40
|
+
*/ export function updateViewColumnsFromVisibility(columns, visibility, columnMapping = DEFAULT_COLUMN_ID_TO_ACCESSOR_KEY) {
|
|
41
|
+
return columns.map((col)=>{
|
|
42
|
+
const accessorKey = columnMapping[col.id];
|
|
43
|
+
if (accessorKey && visibility[accessorKey] !== undefined) {
|
|
44
|
+
return {
|
|
45
|
+
...col,
|
|
46
|
+
visible: visibility[accessorKey]
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return col;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Component
|
|
3
|
+
*
|
|
4
|
+
* Main dashboard with context provider and page routing.
|
|
5
|
+
*/
|
|
6
|
+
export interface DashboardProps {
|
|
7
|
+
/**
|
|
8
|
+
* Default active tab
|
|
9
|
+
* @default 'analytics'
|
|
10
|
+
*/
|
|
11
|
+
defaultActiveTab?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Dashboard
|
|
15
|
+
*
|
|
16
|
+
* Main dashboard component with improved architecture:
|
|
17
|
+
* - Uses DashboardProvider for centralized state management
|
|
18
|
+
* - Generic reusable components (PageToolbar, TableWrapper)
|
|
19
|
+
* - Better separation of concerns
|
|
20
|
+
* - Cleaner, more maintainable code
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <Dashboard defaultActiveTab="analytics" />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function Dashboard({ defaultActiveTab }: DashboardProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Dashboard Component
|
|
4
|
+
*
|
|
5
|
+
* Main dashboard with context provider and page routing.
|
|
6
|
+
*/ import { Tabs, TabsContent, TabsContents } from '../../components/tabs/index.js';
|
|
7
|
+
import { useMotionValueEvent, useScroll } from 'framer-motion';
|
|
8
|
+
import { useCallback, useRef, useState } from 'react';
|
|
9
|
+
import { AnimatedLogo } from './components/animated-logo.js';
|
|
10
|
+
import { TopMenu } from './components/top-menu.js';
|
|
11
|
+
import { Topbar } from './components/topbar.js';
|
|
12
|
+
import { DashboardProvider } from './context/index.js';
|
|
13
|
+
import { AnalyticsPage } from './pages/analytics-page.js';
|
|
14
|
+
import { JobsPage } from './pages/jobs-page.js';
|
|
15
|
+
const LOGO_HEIGHT = 48;
|
|
16
|
+
const TOPBAR_HEIGHT = 41;
|
|
17
|
+
/**
|
|
18
|
+
* Dashboard
|
|
19
|
+
*
|
|
20
|
+
* Main dashboard component with improved architecture:
|
|
21
|
+
* - Uses DashboardProvider for centralized state management
|
|
22
|
+
* - Generic reusable components (PageToolbar, TableWrapper)
|
|
23
|
+
* - Better separation of concerns
|
|
24
|
+
* - Cleaner, more maintainable code
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <Dashboard defaultActiveTab="analytics" />
|
|
29
|
+
* ```
|
|
30
|
+
*/ export function Dashboard({ defaultActiveTab = 'analytics' }) {
|
|
31
|
+
const containerRef = useRef(null);
|
|
32
|
+
const topbarRef = useRef(null);
|
|
33
|
+
const [scrollProgress, setScrollProgress] = useState(0);
|
|
34
|
+
const [activeTab, setActiveTab] = useState(defaultActiveTab);
|
|
35
|
+
const { scrollY } = useScroll({
|
|
36
|
+
container: containerRef
|
|
37
|
+
});
|
|
38
|
+
useMotionValueEvent(scrollY, 'change', (latest)=>{
|
|
39
|
+
const progress = Math.min(latest / TOPBAR_HEIGHT, 1);
|
|
40
|
+
setScrollProgress(progress);
|
|
41
|
+
});
|
|
42
|
+
const handleTabChange = useCallback((tab)=>{
|
|
43
|
+
setActiveTab(tab);
|
|
44
|
+
if (containerRef.current) {
|
|
45
|
+
containerRef.current.scrollTo({
|
|
46
|
+
top: 0,
|
|
47
|
+
behavior: 'instant'
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
setScrollProgress(0);
|
|
51
|
+
}, []);
|
|
52
|
+
const isTopbarHidden = scrollProgress >= 1;
|
|
53
|
+
return /*#__PURE__*/ _jsx(DashboardProvider, {
|
|
54
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
55
|
+
className: "flex flex-col w-full h-full",
|
|
56
|
+
children: [
|
|
57
|
+
/*#__PURE__*/ _jsx(AnimatedLogo, {
|
|
58
|
+
scrollProgress: scrollProgress
|
|
59
|
+
}),
|
|
60
|
+
/*#__PURE__*/ _jsx("div", {
|
|
61
|
+
className: "flex flex-1 w-full h-full overflow-hidden",
|
|
62
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
63
|
+
ref: containerRef,
|
|
64
|
+
className: "flex flex-col flex-1 w-full h-full overflow-auto",
|
|
65
|
+
children: [
|
|
66
|
+
/*#__PURE__*/ _jsx("div", {
|
|
67
|
+
ref: topbarRef,
|
|
68
|
+
children: /*#__PURE__*/ _jsx(Topbar, {
|
|
69
|
+
hideLogo: isTopbarHidden
|
|
70
|
+
})
|
|
71
|
+
}),
|
|
72
|
+
/*#__PURE__*/ _jsxs(Tabs, {
|
|
73
|
+
value: activeTab,
|
|
74
|
+
onValueChange: handleTabChange,
|
|
75
|
+
children: [
|
|
76
|
+
/*#__PURE__*/ _jsx("div", {
|
|
77
|
+
className: "sticky top-0 z-40 border-b border-border-neutral-strong bg-background-neutral-base",
|
|
78
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
79
|
+
style: {
|
|
80
|
+
paddingLeft: `${(1 - (1 - scrollProgress) ** 3) * (LOGO_HEIGHT - 8)}px`
|
|
81
|
+
},
|
|
82
|
+
children: /*#__PURE__*/ _jsx(TopMenu, {
|
|
83
|
+
activeTab: activeTab,
|
|
84
|
+
onTabChange: handleTabChange
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ _jsxs(TabsContents, {
|
|
89
|
+
children: [
|
|
90
|
+
/*#__PURE__*/ _jsx(TabsContent, {
|
|
91
|
+
value: "analytics",
|
|
92
|
+
children: /*#__PURE__*/ _jsx(AnalyticsPage, {})
|
|
93
|
+
}),
|
|
94
|
+
/*#__PURE__*/ _jsx(TabsContent, {
|
|
95
|
+
value: "jobs",
|
|
96
|
+
children: /*#__PURE__*/ _jsx(JobsPage, {})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
})
|
|
102
|
+
]
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
})
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Dashboard } from './dashboard.js';
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Dashboard/Example',
|
|
5
|
+
tags: [
|
|
6
|
+
'autodocs'
|
|
7
|
+
],
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'fullscreen',
|
|
10
|
+
viewport: {
|
|
11
|
+
defaultViewport: 'extraLarge'
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
export const Default = {
|
|
17
|
+
render: ()=>/*#__PURE__*/ _jsx("div", {
|
|
18
|
+
className: "h-screen w-full",
|
|
19
|
+
children: /*#__PURE__*/ _jsx(Dashboard, {})
|
|
20
|
+
})
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=dashboard.stories.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Filter Bar Component
|
|
3
|
+
*
|
|
4
|
+
* A horizontal button group for filtering by resource type.
|
|
5
|
+
*/
|
|
6
|
+
import type { ComponentProps } from 'react';
|
|
7
|
+
import type { ResourceType } from '../context';
|
|
8
|
+
export interface ResourceTypeOption {
|
|
9
|
+
id: ResourceType;
|
|
10
|
+
label: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface ExpressionFilterBarProps extends Omit<ComponentProps<'div'>, 'children'> {
|
|
14
|
+
/**
|
|
15
|
+
* Available resource type options
|
|
16
|
+
*/
|
|
17
|
+
options?: ResourceTypeOption[];
|
|
18
|
+
/**
|
|
19
|
+
* Currently selected resource type
|
|
20
|
+
*/
|
|
21
|
+
value?: ResourceType;
|
|
22
|
+
/**
|
|
23
|
+
* Callback when resource type changes
|
|
24
|
+
*/
|
|
25
|
+
onValueChange?: (value: ResourceType) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Expression Filter Bar
|
|
29
|
+
*
|
|
30
|
+
* Displays a horizontal button group for selecting resource types.
|
|
31
|
+
* Integrates with the dashboard context for state management.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <ExpressionFilterBar
|
|
36
|
+
* value="ci-pipeline"
|
|
37
|
+
* onValueChange={setResourceType}
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function ExpressionFilterBar({ options, value, onValueChange, className, ...props }: ExpressionFilterBarProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
//# sourceMappingURL=expression-filter-bar.d.ts.map
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Expression Filter Bar Component
|
|
4
|
+
*
|
|
5
|
+
* A horizontal button group for filtering by resource type.
|
|
6
|
+
*/ import { Button } from '../../../components/button/index.js';
|
|
7
|
+
import { cn } from '../../../utils/cn.js';
|
|
8
|
+
/**
|
|
9
|
+
* Default resource type options
|
|
10
|
+
*/ const DEFAULT_OPTIONS = [
|
|
11
|
+
{
|
|
12
|
+
id: 'ci-pipeline',
|
|
13
|
+
label: 'CI Pipeline'
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: 'ci-jobs',
|
|
17
|
+
label: 'CI Jobs'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: 'ci-steps',
|
|
21
|
+
label: 'CI Steps'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'runners',
|
|
25
|
+
label: 'Runners',
|
|
26
|
+
disabled: true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'suite',
|
|
30
|
+
label: 'Suite',
|
|
31
|
+
disabled: true
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'cases',
|
|
35
|
+
label: 'Cases',
|
|
36
|
+
disabled: true
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* Expression Filter Bar
|
|
41
|
+
*
|
|
42
|
+
* Displays a horizontal button group for selecting resource types.
|
|
43
|
+
* Integrates with the dashboard context for state management.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* <ExpressionFilterBar
|
|
48
|
+
* value="ci-pipeline"
|
|
49
|
+
* onValueChange={setResourceType}
|
|
50
|
+
* />
|
|
51
|
+
* ```
|
|
52
|
+
*/ export function ExpressionFilterBar({ options = DEFAULT_OPTIONS, value = 'ci-pipeline', onValueChange, className, ...props }) {
|
|
53
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
54
|
+
className: cn(// Desktop: Normal flex layout
|
|
55
|
+
'md:flex md:gap-4 md:items-start', // Mobile: Swipeable with scroll-snap
|
|
56
|
+
'overflow-x-auto scrollbar-none', // Scroll snap for smooth swiping
|
|
57
|
+
'snap-x snap-mandatory', // Hide scrollbar but allow scrolling
|
|
58
|
+
'[&::-webkit-scrollbar]:hidden', className),
|
|
59
|
+
...props,
|
|
60
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
61
|
+
className: "flex gap-4 items-start px-0",
|
|
62
|
+
children: options.map((option)=>{
|
|
63
|
+
const isActive = value === option.id;
|
|
64
|
+
return /*#__PURE__*/ _jsx(Button, {
|
|
65
|
+
variant: isActive ? 'secondary' : 'transparent',
|
|
66
|
+
size: "md",
|
|
67
|
+
disabled: option.disabled,
|
|
68
|
+
onClick: ()=>!option.disabled && onValueChange?.(option.id),
|
|
69
|
+
className: cn('flex items-center justify-center gap-8 px-10 py-6 rounded-6', 'text-sm font-medium leading-20 tracking-0', 'transition-colors', // Mobile: Prevent shrinking, snap alignment
|
|
70
|
+
'shrink-0 snap-start', // Active state
|
|
71
|
+
isActive && 'shadow-none bg-background-button-neutral-pressed', // Inactive state
|
|
72
|
+
!isActive && !option.disabled && 'bg-transparent text-foreground-neutral-subtle hover:text-foreground-neutral-base'),
|
|
73
|
+
children: option.label
|
|
74
|
+
}, option.id);
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=expression-filter-bar.js.map
|