@desbug/ultra-ui 0.1.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/README.md +203 -0
- package/dist/components/blocks/activity-feed-card.d.ts +25 -0
- package/dist/components/blocks/activity-feed-card.d.ts.map +1 -0
- package/dist/components/blocks/activity-feed-card.js +13 -0
- package/dist/components/blocks/activity-feed-card.js.map +1 -0
- package/dist/components/blocks/bar-breakdown-card.d.ts +34 -0
- package/dist/components/blocks/bar-breakdown-card.d.ts.map +1 -0
- package/dist/components/blocks/bar-breakdown-card.js +24 -0
- package/dist/components/blocks/bar-breakdown-card.js.map +1 -0
- package/dist/components/blocks/block-card.d.ts +39 -0
- package/dist/components/blocks/block-card.d.ts.map +1 -0
- package/dist/components/blocks/block-card.js +14 -0
- package/dist/components/blocks/block-card.js.map +1 -0
- package/dist/components/blocks/callout-card.d.ts +20 -0
- package/dist/components/blocks/callout-card.d.ts.map +1 -0
- package/dist/components/blocks/callout-card.js +12 -0
- package/dist/components/blocks/callout-card.js.map +1 -0
- package/dist/components/blocks/donut-card.d.ts +28 -0
- package/dist/components/blocks/donut-card.d.ts.map +1 -0
- package/dist/components/blocks/donut-card.js +24 -0
- package/dist/components/blocks/donut-card.js.map +1 -0
- package/dist/components/blocks/file-list-card.d.ts +21 -0
- package/dist/components/blocks/file-list-card.d.ts.map +1 -0
- package/dist/components/blocks/file-list-card.js +12 -0
- package/dist/components/blocks/file-list-card.js.map +1 -0
- package/dist/components/blocks/funnel-card.d.ts +19 -0
- package/dist/components/blocks/funnel-card.d.ts.map +1 -0
- package/dist/components/blocks/funnel-card.js +18 -0
- package/dist/components/blocks/funnel-card.js.map +1 -0
- package/dist/components/blocks/gauge-card.d.ts +20 -0
- package/dist/components/blocks/gauge-card.d.ts.map +1 -0
- package/dist/components/blocks/gauge-card.js +12 -0
- package/dist/components/blocks/gauge-card.js.map +1 -0
- package/dist/components/blocks/index.d.ts +21 -0
- package/dist/components/blocks/index.d.ts.map +1 -0
- package/dist/components/blocks/index.js +24 -0
- package/dist/components/blocks/index.js.map +1 -0
- package/dist/components/blocks/kpi-card.d.ts +18 -0
- package/dist/components/blocks/kpi-card.d.ts.map +1 -0
- package/dist/components/blocks/kpi-card.js +11 -0
- package/dist/components/blocks/kpi-card.js.map +1 -0
- package/dist/components/blocks/palette.d.ts +9 -0
- package/dist/components/blocks/palette.d.ts.map +1 -0
- package/dist/components/blocks/palette.js +20 -0
- package/dist/components/blocks/palette.js.map +1 -0
- package/dist/components/blocks/progress-list-card.d.ts +29 -0
- package/dist/components/blocks/progress-list-card.d.ts.map +1 -0
- package/dist/components/blocks/progress-list-card.js +19 -0
- package/dist/components/blocks/progress-list-card.js.map +1 -0
- package/dist/components/blocks/radar-stats-card.d.ts +18 -0
- package/dist/components/blocks/radar-stats-card.d.ts.map +1 -0
- package/dist/components/blocks/radar-stats-card.js +10 -0
- package/dist/components/blocks/radar-stats-card.js.map +1 -0
- package/dist/components/blocks/ranking-list-card.d.ts +25 -0
- package/dist/components/blocks/ranking-list-card.d.ts.map +1 -0
- package/dist/components/blocks/ranking-list-card.js +10 -0
- package/dist/components/blocks/ranking-list-card.js.map +1 -0
- package/dist/components/blocks/spark-stat-card.d.ts +22 -0
- package/dist/components/blocks/spark-stat-card.d.ts.map +1 -0
- package/dist/components/blocks/spark-stat-card.js +10 -0
- package/dist/components/blocks/spark-stat-card.js.map +1 -0
- package/dist/components/blocks/steps-card.d.ts +17 -0
- package/dist/components/blocks/steps-card.d.ts.map +1 -0
- package/dist/components/blocks/steps-card.js +16 -0
- package/dist/components/blocks/steps-card.js.map +1 -0
- package/dist/components/blocks/team-list-card.d.ts +21 -0
- package/dist/components/blocks/team-list-card.d.ts.map +1 -0
- package/dist/components/blocks/team-list-card.js +9 -0
- package/dist/components/blocks/team-list-card.js.map +1 -0
- package/dist/components/blocks/timeline-card.d.ts +19 -0
- package/dist/components/blocks/timeline-card.d.ts.map +1 -0
- package/dist/components/blocks/timeline-card.js +13 -0
- package/dist/components/blocks/timeline-card.js.map +1 -0
- package/dist/components/blocks/todo-list-card.d.ts +21 -0
- package/dist/components/blocks/todo-list-card.d.ts.map +1 -0
- package/dist/components/blocks/todo-list-card.js +11 -0
- package/dist/components/blocks/todo-list-card.js.map +1 -0
- package/dist/components/blocks/trend-chart-card.d.ts +33 -0
- package/dist/components/blocks/trend-chart-card.d.ts.map +1 -0
- package/dist/components/blocks/trend-chart-card.js +13 -0
- package/dist/components/blocks/trend-chart-card.js.map +1 -0
- package/dist/components/shared/avatar-stack.d.ts +17 -0
- package/dist/components/shared/avatar-stack.d.ts.map +1 -0
- package/dist/components/shared/avatar-stack.js +10 -0
- package/dist/components/shared/avatar-stack.js.map +1 -0
- package/dist/components/shared/avatar-with-name.d.ts +15 -0
- package/dist/components/shared/avatar-with-name.d.ts.map +1 -0
- package/dist/components/shared/avatar-with-name.js +8 -0
- package/dist/components/shared/avatar-with-name.js.map +1 -0
- package/dist/components/shared/chart-card.d.ts +20 -0
- package/dist/components/shared/chart-card.d.ts.map +1 -0
- package/dist/components/shared/chart-card.js +8 -0
- package/dist/components/shared/chart-card.js.map +1 -0
- package/dist/components/shared/data-table-cells.d.ts +35 -0
- package/dist/components/shared/data-table-cells.d.ts.map +1 -0
- package/dist/components/shared/data-table-cells.js +37 -0
- package/dist/components/shared/data-table-cells.js.map +1 -0
- package/dist/components/shared/data-table-column-manager.d.ts +25 -0
- package/dist/components/shared/data-table-column-manager.d.ts.map +1 -0
- package/dist/components/shared/data-table-column-manager.js +88 -0
- package/dist/components/shared/data-table-column-manager.js.map +1 -0
- package/dist/components/shared/data-table-pagination.d.ts +11 -0
- package/dist/components/shared/data-table-pagination.d.ts.map +1 -0
- package/dist/components/shared/data-table-pagination.js +24 -0
- package/dist/components/shared/data-table-pagination.js.map +1 -0
- package/dist/components/shared/data-table-toolbar.d.ts +15 -0
- package/dist/components/shared/data-table-toolbar.d.ts.map +1 -0
- package/dist/components/shared/data-table-toolbar.js +14 -0
- package/dist/components/shared/data-table-toolbar.js.map +1 -0
- package/dist/components/shared/data-table.d.ts +49 -0
- package/dist/components/shared/data-table.d.ts.map +1 -0
- package/dist/components/shared/data-table.js +56 -0
- package/dist/components/shared/data-table.js.map +1 -0
- package/dist/components/shared/empty-state.d.ts +14 -0
- package/dist/components/shared/empty-state.d.ts.map +1 -0
- package/dist/components/shared/empty-state.js +7 -0
- package/dist/components/shared/empty-state.js.map +1 -0
- package/dist/components/shared/github-link.d.ts +16 -0
- package/dist/components/shared/github-link.d.ts.map +1 -0
- package/dist/components/shared/github-link.js +15 -0
- package/dist/components/shared/github-link.js.map +1 -0
- package/dist/components/shared/gradient-def.d.ts +23 -0
- package/dist/components/shared/gradient-def.d.ts.map +1 -0
- package/dist/components/shared/gradient-def.js +13 -0
- package/dist/components/shared/gradient-def.js.map +1 -0
- package/dist/components/shared/header-actions-menu.d.ts +12 -0
- package/dist/components/shared/header-actions-menu.d.ts.map +1 -0
- package/dist/components/shared/header-actions-menu.js +11 -0
- package/dist/components/shared/header-actions-menu.js.map +1 -0
- package/dist/components/shared/header-search.d.ts +12 -0
- package/dist/components/shared/header-search.d.ts.map +1 -0
- package/dist/components/shared/header-search.js +10 -0
- package/dist/components/shared/header-search.js.map +1 -0
- package/dist/components/shared/index.d.ts +23 -0
- package/dist/components/shared/index.d.ts.map +1 -0
- package/dist/components/shared/index.js +27 -0
- package/dist/components/shared/index.js.map +1 -0
- package/dist/components/shared/messages-menu.d.ts +16 -0
- package/dist/components/shared/messages-menu.d.ts.map +1 -0
- package/dist/components/shared/messages-menu.js +12 -0
- package/dist/components/shared/messages-menu.js.map +1 -0
- package/dist/components/shared/notifications-menu.d.ts +18 -0
- package/dist/components/shared/notifications-menu.d.ts.map +1 -0
- package/dist/components/shared/notifications-menu.js +12 -0
- package/dist/components/shared/notifications-menu.js.map +1 -0
- package/dist/components/shared/page-header.d.ts +25 -0
- package/dist/components/shared/page-header.d.ts.map +1 -0
- package/dist/components/shared/page-header.js +13 -0
- package/dist/components/shared/page-header.js.map +1 -0
- package/dist/components/shared/progress-bar.d.ts +16 -0
- package/dist/components/shared/progress-bar.d.ts.map +1 -0
- package/dist/components/shared/progress-bar.js +8 -0
- package/dist/components/shared/progress-bar.js.map +1 -0
- package/dist/components/shared/section-card.d.ts +18 -0
- package/dist/components/shared/section-card.d.ts.map +1 -0
- package/dist/components/shared/section-card.js +8 -0
- package/dist/components/shared/section-card.js.map +1 -0
- package/dist/components/shared/series-chart.d.ts +49 -0
- package/dist/components/shared/series-chart.d.ts.map +1 -0
- package/dist/components/shared/series-chart.js +29 -0
- package/dist/components/shared/series-chart.js.map +1 -0
- package/dist/components/shared/stat-card.d.ts +32 -0
- package/dist/components/shared/stat-card.d.ts.map +1 -0
- package/dist/components/shared/stat-card.js +18 -0
- package/dist/components/shared/stat-card.js.map +1 -0
- package/dist/components/shared/stats-grid.d.ts +21 -0
- package/dist/components/shared/stats-grid.d.ts.map +1 -0
- package/dist/components/shared/stats-grid.js +19 -0
- package/dist/components/shared/stats-grid.js.map +1 -0
- package/dist/components/shared/status-badge.d.ts +26 -0
- package/dist/components/shared/status-badge.d.ts.map +1 -0
- package/dist/components/shared/status-badge.js +95 -0
- package/dist/components/shared/status-badge.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +8 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +19 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +43 -0
- package/dist/components/ui/alert-dialog.js.map +1 -0
- package/dist/components/ui/alert.d.ts +11 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +28 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/aspect-ratio.d.ts +4 -0
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio.js +8 -0
- package/dist/components/ui/aspect-ratio.js.map +1 -0
- package/dist/components/ui/avatar.d.ts +12 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar.js +24 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +25 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/breadcrumb.d.ts +12 -0
- package/dist/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.js +28 -0
- package/dist/components/ui/breadcrumb.js.map +1 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +36 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/calendar.d.ts +11 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar.js +77 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/components/ui/card.d.ts +12 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +25 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/carousel.d.ts +29 -0
- package/dist/components/ui/carousel.d.ts.map +1 -0
- package/dist/components/ui/carousel.js +92 -0
- package/dist/components/ui/carousel.js.map +1 -0
- package/dist/components/ui/chart.d.ts +45 -0
- package/dist/components/ui/chart.d.ts.map +1 -0
- package/dist/components/ui/chart.js +133 -0
- package/dist/components/ui/chart.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +10 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/collapsible.d.ts +6 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +14 -0
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/command.d.ts +19 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/command.js +36 -0
- package/dist/components/ui/command.js.map +1 -0
- package/dist/components/ui/context-menu.d.ts +32 -0
- package/dist/components/ui/context-menu.d.ts.map +1 -0
- package/dist/components/ui/context-menu.js +52 -0
- package/dist/components/ui/context-menu.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +38 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/drawer.d.ts +14 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer.js +36 -0
- package/dist/components/ui/drawer.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +30 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +52 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/form.d.ts +25 -0
- package/dist/components/ui/form.d.ts.map +1 -0
- package/dist/components/ui/form.js +60 -0
- package/dist/components/ui/form.js.map +1 -0
- package/dist/components/ui/hover-card.d.ts +7 -0
- package/dist/components/ui/hover-card.d.ts.map +1 -0
- package/dist/components/ui/hover-card.js +15 -0
- package/dist/components/ui/hover-card.js.map +1 -0
- package/dist/components/ui/input-group.d.ts +17 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/input-group.js +58 -0
- package/dist/components/ui/input-group.js.map +1 -0
- package/dist/components/ui/input-otp.d.ts +12 -0
- package/dist/components/ui/input-otp.d.ts.map +1 -0
- package/dist/components/ui/input-otp.js +22 -0
- package/dist/components/ui/input-otp.js.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +7 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/kbd.d.ts +4 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +10 -0
- package/dist/components/ui/kbd.js.map +1 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +9 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/menubar.d.ts +31 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/menubar.js +55 -0
- package/dist/components/ui/menubar.js.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +15 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.js +32 -0
- package/dist/components/ui/navigation-menu.js.map +1 -0
- package/dist/components/ui/pagination.d.ts +18 -0
- package/dist/components/ui/pagination.d.ts.map +1 -0
- package/dist/components/ui/pagination.js +27 -0
- package/dist/components/ui/pagination.js.map +1 -0
- package/dist/components/ui/popover.d.ts +11 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +27 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/progress.d.ts +5 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/progress.js +9 -0
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/radio-group.d.ts +6 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group.js +12 -0
- package/dist/components/ui/radio-group.js.map +1 -0
- package/dist/components/ui/resizable.d.ts +8 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/components/ui/resizable.js +15 -0
- package/dist/components/ui/resizable.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +12 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +37 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.d.ts +5 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +9 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.d.ts +15 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet.js +38 -0
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/sidebar.d.ts +70 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -0
- package/dist/components/ui/sidebar.js +207 -0
- package/dist/components/ui/sidebar.js.map +1 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +7 -0
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/slider.d.ts +5 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +15 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/sonner.d.ts +4 -0
- package/dist/components/ui/sonner.d.ts.map +1 -0
- package/dist/components/ui/sonner.js +26 -0
- package/dist/components/ui/sonner.js.map +1 -0
- package/dist/components/ui/switch.d.ts +7 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +9 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/table.d.ts +11 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +29 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +12 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +30 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +4 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +7 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toggle-group.d.ts +11 -0
- package/dist/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.js +24 -0
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/toggle.d.ts +10 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle.js +27 -0
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +18 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/styles.css +240 -0
- package/package.json +67 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type ChartSeries, type SeriesChartType } from "../../components/shared/index.js";
|
|
3
|
+
export interface TrendChartCardProps {
|
|
4
|
+
title?: React.ReactNode;
|
|
5
|
+
icon?: React.ElementType;
|
|
6
|
+
actions?: React.ReactNode;
|
|
7
|
+
/** Chart rows. */
|
|
8
|
+
data: Array<Record<string, unknown>>;
|
|
9
|
+
/** One or more series to plot. */
|
|
10
|
+
series: ChartSeries[];
|
|
11
|
+
/** Category (x) key in `data`. */
|
|
12
|
+
xKey: string;
|
|
13
|
+
type?: SeriesChartType;
|
|
14
|
+
/** Optional headline value above the chart. */
|
|
15
|
+
total?: React.ReactNode;
|
|
16
|
+
change?: string;
|
|
17
|
+
trend?: "up" | "down";
|
|
18
|
+
caption?: string;
|
|
19
|
+
showGrid?: boolean;
|
|
20
|
+
smooth?: boolean;
|
|
21
|
+
showYAxis?: boolean;
|
|
22
|
+
/** Chart box height utility (default `h-[240px]`). */
|
|
23
|
+
height?: string;
|
|
24
|
+
xTickFormatter?: (value: unknown, index: number) => string;
|
|
25
|
+
yTickFormatter?: (value: unknown, index: number) => string;
|
|
26
|
+
className?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A titled chart card (area / bar / line) with an optional total + change
|
|
30
|
+
* headline. Wraps {@link SeriesChart}; colors come from each series.
|
|
31
|
+
*/
|
|
32
|
+
export declare function TrendChartCard({ title, icon, actions, data, series, xKey, type, total, change, trend, caption, showGrid, smooth, showYAxis, height, xTickFormatter, yTickFormatter, className, }: TrendChartCardProps): React.JSX.Element;
|
|
33
|
+
//# sourceMappingURL=trend-chart-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trend-chart-card.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/trend-chart-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG1F,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB;IAClB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,kCAAkC;IAClC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAa,EACb,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAe,EACf,MAAa,EACb,SAAiB,EACjB,MAAoB,EACpB,cAAc,EACd,cAAc,EACd,SAAS,GACV,EAAE,mBAAmB,qBA+BrB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import { SeriesChart } from "../../components/shared/index.js";
|
|
5
|
+
import { BlockCard, MetricHeadline } from "./block-card.js";
|
|
6
|
+
/**
|
|
7
|
+
* A titled chart card (area / bar / line) with an optional total + change
|
|
8
|
+
* headline. Wraps {@link SeriesChart}; colors come from each series.
|
|
9
|
+
*/
|
|
10
|
+
export function TrendChartCard({ title, icon, actions, data, series, xKey, type = "area", total, change, trend, caption, showGrid = true, smooth = true, showYAxis = false, height = "h-[240px]", xTickFormatter, yTickFormatter, className, }) {
|
|
11
|
+
return (_jsxs(BlockCard, { title: title, icon: icon, actions: actions, className: className, bodyClassName: total != null ? "space-y-6" : undefined, children: [total != null && (_jsx(MetricHeadline, { value: total, change: change, trend: trend, caption: caption })), _jsx(SeriesChart, { type: type, data: data, series: series, xKey: xKey, showGrid: showGrid, smooth: smooth, showYAxis: showYAxis, xTickFormatter: xTickFormatter, yTickFormatter: yTickFormatter, className: cn(height) })] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=trend-chart-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trend-chart-card.js","sourceRoot":"","sources":["../../../src/components/blocks/trend-chart-card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,WAAW,EAA0C,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4BzD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAI,GAAG,MAAM,EACb,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,IAAI,EACb,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,WAAW,EACpB,cAAc,EACd,cAAc,EACd,SAAS,GACW;IACpB,OAAO,CACL,MAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,aAErD,KAAK,IAAI,IAAI,IAAI,CAChB,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAChB,CACH,EACD,KAAC,WAAW,IACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GACrB,IACQ,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface AvatarStackItem {
|
|
2
|
+
name?: string;
|
|
3
|
+
src?: string;
|
|
4
|
+
fallback?: string;
|
|
5
|
+
}
|
|
6
|
+
interface AvatarStackProps {
|
|
7
|
+
avatars: AvatarStackItem[];
|
|
8
|
+
/** Show at most N avatars, collapsing the rest into a +N chip. */
|
|
9
|
+
max?: number;
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Per-avatar class (size + border style). */
|
|
12
|
+
avatarClassName?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Overlapping avatar group (the `-space-x-2` stacks used in headers/panels). */
|
|
15
|
+
export declare function AvatarStack({ avatars, max, className, avatarClassName, }: AvatarStackProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=avatar-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.d.ts","sourceRoot":"","sources":["../../../src/components/shared/avatar-stack.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,SAAS,EACT,eAA+C,GAChD,EAAE,gBAAgB,+BA0BlB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar.js";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
/** Overlapping avatar group (the `-space-x-2` stacks used in headers/panels). */
|
|
5
|
+
export function AvatarStack({ avatars, max, className, avatarClassName = "size-7 border-2 border-card", }) {
|
|
6
|
+
const visible = max ? avatars.slice(0, max) : avatars;
|
|
7
|
+
const overflow = max ? avatars.length - visible.length : 0;
|
|
8
|
+
return (_jsxs("div", { className: cn("flex -space-x-2", className), children: [visible.map((a, i) => (_jsxs(Avatar, { className: avatarClassName, children: [a.src && _jsx(AvatarImage, { src: a.src, alt: a.name ?? "" }), _jsx(AvatarFallback, { children: a.fallback ?? a.name?.charAt(0) ?? "?" })] }, a.name ?? i))), overflow > 0 && (_jsxs("div", { className: cn("flex items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground", avatarClassName), children: ["+", overflow] }))] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=avatar-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.js","sourceRoot":"","sources":["../../../src/components/shared/avatar-stack.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAiBjC,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,SAAS,EACT,eAAe,GAAG,6BAA6B,GAC9B;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,aAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,MAAM,IAAmB,SAAS,EAAE,eAAe,aACjD,CAAC,CAAC,GAAG,IAAI,KAAC,WAAW,IAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,GAAI,EACxD,KAAC,cAAc,cACZ,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,GACxB,KAJN,CAAC,CAAC,IAAI,IAAI,CAAC,CAKf,CACV,CAAC,EACD,QAAQ,GAAG,CAAC,IAAI,CACf,eACE,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,eAAe,CAChB,kBAEC,QAAQ,IACN,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface AvatarWithNameProps {
|
|
3
|
+
name: string;
|
|
4
|
+
avatar?: string;
|
|
5
|
+
/** Optional second line (email, role, …). */
|
|
6
|
+
subtitle?: React.ReactNode;
|
|
7
|
+
fallback?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
avatarClassName?: string;
|
|
10
|
+
nameClassName?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Inline avatar + name (+ optional subtitle) cell used across tables and lists. */
|
|
13
|
+
export declare function AvatarWithName({ name, avatar, subtitle, fallback, className, avatarClassName, nameClassName, }: AvatarWithNameProps): React.JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=avatar-with-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-with-name.d.ts","sourceRoot":"","sources":["../../../src/components/shared/avatar-with-name.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAA0B,EAC1B,aAAa,GACd,EAAE,mBAAmB,qBAuBrB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar.js";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
/** Inline avatar + name (+ optional subtitle) cell used across tables and lists. */
|
|
5
|
+
export function AvatarWithName({ name, avatar, subtitle, fallback, className, avatarClassName = "size-6", nameClassName, }) {
|
|
6
|
+
return (_jsxs("div", { className: cn("flex items-center gap-2.5", className), children: [_jsxs(Avatar, { className: avatarClassName, children: [avatar && _jsx(AvatarImage, { src: avatar, alt: name }), _jsx(AvatarFallback, { className: "bg-muted text-xs", children: fallback ?? name.charAt(0) })] }), _jsxs("div", { className: "min-w-0", children: [_jsx("span", { className: cn("block truncate text-sm font-medium", nameClassName), children: name }), subtitle && (_jsx("span", { className: "block truncate text-xs text-muted-foreground", children: subtitle }))] })] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=avatar-with-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-with-name.js","sourceRoot":"","sources":["../../../src/components/shared/avatar-with-name.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAajC,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,GAAG,QAAQ,EAC1B,aAAa,GACO;IACpB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,aACxD,MAAC,MAAM,IAAC,SAAS,EAAE,eAAe,aAC/B,MAAM,IAAI,KAAC,WAAW,IAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAI,EAClD,KAAC,cAAc,IAAC,SAAS,EAAC,kBAAkB,YACzC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GACZ,IACV,EACT,eAAK,SAAS,EAAC,SAAS,aACtB,eACE,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,aAAa,CAAC,YAEjE,IAAI,GACA,EACN,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,8CAA8C,YAC3D,QAAQ,GACJ,CACR,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface ChartCardProps {
|
|
3
|
+
title?: React.ReactNode;
|
|
4
|
+
/** Leading icon component, or any custom node (icon button, etc.). */
|
|
5
|
+
icon?: React.ElementType;
|
|
6
|
+
iconNode?: React.ReactNode;
|
|
7
|
+
/** Right-side header content (more menu, period selector, legend…). */
|
|
8
|
+
actions?: React.ReactNode;
|
|
9
|
+
/** Optional secondary header content under the title (legend dots, totals). */
|
|
10
|
+
subheader?: React.ReactNode;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
headerClassName?: string;
|
|
14
|
+
bodyClassName?: string;
|
|
15
|
+
divided?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Card shell for charts: rounded card + header (icon + title + actions) + body. */
|
|
18
|
+
export declare function ChartCard({ title, icon: Icon, iconNode, actions, subheader, children, className, headerClassName, bodyClassName, divided, }: ChartCardProps): React.JSX.Element;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=chart-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-card.d.ts","sourceRoot":"","sources":["../../../src/components/shared/chart-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sEAAsE;IACtE,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uEAAuE;IACvE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,OAAe,GAChB,EAAE,cAAc,qBAiChB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
/** Card shell for charts: rounded card + header (icon + title + actions) + body. */
|
|
4
|
+
export function ChartCard({ title, icon: Icon, iconNode, actions, subheader, children, className, headerClassName, bodyClassName, divided = false, }) {
|
|
5
|
+
const hasHeader = title || actions || iconNode || Icon || subheader;
|
|
6
|
+
return (_jsxs("div", { className: cn("flex flex-col rounded-xl border border-border bg-card", className), children: [hasHeader && (_jsxs("div", { className: cn("flex items-center justify-between gap-4 p-4 sm:p-6", divided && "border-b border-border", headerClassName), children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [iconNode, Icon && _jsx(Icon, { className: "size-4 shrink-0 text-muted-foreground" }), title && (_jsx("span", { className: "truncate font-medium", children: title })), subheader] }), actions] })), _jsx("div", { className: cn("p-4 pt-0 sm:p-6 sm:pt-0", bodyClassName), children: children })] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=chart-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-card.js","sourceRoot":"","sources":["../../../src/components/shared/chart-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAkBjC,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,OAAO,GAAG,KAAK,GACA;IACf,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC;IACpE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,SAAS,CACV,aAEA,SAAS,IAAI,CACZ,eACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,OAAO,IAAI,wBAAwB,EACnC,eAAe,CAChB,aAED,eAAK,SAAS,EAAC,iCAAiC,aAC7C,QAAQ,EACR,IAAI,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,GAAG,EAClE,KAAK,IAAI,CACR,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAQ,CACtD,EACA,SAAS,IACN,EACL,OAAO,IACJ,CACP,EACD,cAAK,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,aAAa,CAAC,YACzD,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type ColumnDef } from "@tanstack/react-table";
|
|
3
|
+
/** Row-selection column (checkbox header + per-row checkbox). */
|
|
4
|
+
export declare function selectColumn<T>(): ColumnDef<T>;
|
|
5
|
+
export interface RowAction {
|
|
6
|
+
label: React.ReactNode;
|
|
7
|
+
onSelect?: () => void;
|
|
8
|
+
/** Insert a separator before this item. */
|
|
9
|
+
separatorBefore?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** The "⋯" row-actions dropdown used at the end of table rows. */
|
|
12
|
+
export declare function RowActions({ actions, label, }: {
|
|
13
|
+
actions: RowAction[];
|
|
14
|
+
label?: React.ReactNode;
|
|
15
|
+
}): React.JSX.Element;
|
|
16
|
+
/** Currency value, right-aligned tabular numerals. */
|
|
17
|
+
export declare function CurrencyCell({ value, currency, className, }: {
|
|
18
|
+
value: number;
|
|
19
|
+
currency?: string;
|
|
20
|
+
className?: string;
|
|
21
|
+
}): React.JSX.Element;
|
|
22
|
+
/** Muted text cell (dates, ids, secondary values). */
|
|
23
|
+
export declare function MutedCell({ children, className, }: {
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
}): React.JSX.Element;
|
|
27
|
+
/** Progress bar + percentage label. */
|
|
28
|
+
export declare function ProgressCell({ value, color, label, className, barClassName, }: {
|
|
29
|
+
value: number;
|
|
30
|
+
color?: string;
|
|
31
|
+
label?: React.ReactNode;
|
|
32
|
+
className?: string;
|
|
33
|
+
barClassName?: string;
|
|
34
|
+
}): React.JSX.Element;
|
|
35
|
+
//# sourceMappingURL=data-table-cells.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-cells.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-cells.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAevD,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAuB9C;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAiB,GAClB,EAAE;IACD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,qBAoBA;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAc,EACd,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBAOA;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBAMA;AAED,uCAAuC;AACvC,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,EACT,YAAqB,GACtB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,qBASA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { MoreHorizontal } from "lucide-react";
|
|
5
|
+
import { Button } from "../../components/ui/button.js";
|
|
6
|
+
import { Checkbox } from "../../components/ui/checkbox.js";
|
|
7
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
|
|
8
|
+
import { cn } from "../../lib/utils.js";
|
|
9
|
+
import { ProgressBar } from "./progress-bar.js";
|
|
10
|
+
/** Row-selection column (checkbox header + per-row checkbox). */
|
|
11
|
+
export function selectColumn() {
|
|
12
|
+
return {
|
|
13
|
+
id: "select",
|
|
14
|
+
header: ({ table }) => (_jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() ||
|
|
15
|
+
(table.getIsSomePageRowsSelected() && "indeterminate"), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value), "aria-label": "Select all" })),
|
|
16
|
+
cell: ({ row }) => (_jsx(Checkbox, { checked: row.getIsSelected(), onCheckedChange: (value) => row.toggleSelected(!!value), "aria-label": "Select row" })),
|
|
17
|
+
enableSorting: false,
|
|
18
|
+
enableHiding: false,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** The "⋯" row-actions dropdown used at the end of table rows. */
|
|
22
|
+
export function RowActions({ actions, label = "Actions", }) {
|
|
23
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", className: "h-8 w-8 p-0", children: [_jsx("span", { className: "sr-only", children: "Open menu" }), _jsx(MoreHorizontal, { className: "h-4 w-4" })] }) }), _jsxs(DropdownMenuContent, { align: "end", children: [label && _jsx(DropdownMenuLabel, { children: label }), actions.map((a, i) => (_jsxs(React.Fragment, { children: [a.separatorBefore && _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { onClick: a.onSelect, children: a.label })] }, i)))] })] }));
|
|
24
|
+
}
|
|
25
|
+
/** Currency value, right-aligned tabular numerals. */
|
|
26
|
+
export function CurrencyCell({ value, currency = "$", className, }) {
|
|
27
|
+
return (_jsxs("span", { className: cn("text-sm tabular-nums", className), children: [currency, value.toLocaleString()] }));
|
|
28
|
+
}
|
|
29
|
+
/** Muted text cell (dates, ids, secondary values). */
|
|
30
|
+
export function MutedCell({ children, className, }) {
|
|
31
|
+
return (_jsx("span", { className: cn("text-sm text-muted-foreground", className), children: children }));
|
|
32
|
+
}
|
|
33
|
+
/** Progress bar + percentage label. */
|
|
34
|
+
export function ProgressCell({ value, color, label, className, barClassName = "w-20", }) {
|
|
35
|
+
return (_jsxs("div", { className: cn("flex items-center gap-2", className), children: [_jsx(ProgressBar, { value: value, color: color, className: barClassName }), _jsx("span", { className: "text-sm tabular-nums text-muted-foreground", children: label ?? `${Math.round(value)}%` })] }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data-table-cells.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-cells.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-cells.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,iEAAiE;AACjE,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,QAAQ,IACP,OAAO,EACL,KAAK,CAAC,wBAAwB,EAAE;gBAChC,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,eAAe,CAAC,EAExD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,gBACzD,YAAY,GACvB,CACH;QACD,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACjB,KAAC,QAAQ,IACP,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,EAC5B,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,gBAC5C,YAAY,GACvB,CACH;QACD,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AASD,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,KAAK,GAAG,SAAS,GAIlB;IACC,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,aAAa,aAC7C,eAAM,SAAS,EAAC,SAAS,0BAAiB,EAC1C,KAAC,cAAc,IAAC,SAAS,EAAC,SAAS,GAAG,IAC/B,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,aAC7B,KAAK,IAAI,KAAC,iBAAiB,cAAE,KAAK,GAAqB,EACvD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,KAAK,CAAC,QAAQ,eACZ,CAAC,CAAC,eAAe,IAAI,KAAC,qBAAqB,KAAG,EAC/C,KAAC,gBAAgB,IAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,YAAG,CAAC,CAAC,KAAK,GAAoB,KAFhD,CAAC,CAGL,CAClB,CAAC,IACkB,IACT,CAChB,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,GAAG,EACd,SAAS,GAKV;IACC,OAAO,CACL,gBAAM,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,aACnD,QAAQ,EACR,KAAK,CAAC,cAAc,EAAE,IAClB,CACR,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,GAIV;IACC,OAAO,CACL,eAAM,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,YAC5D,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,EACT,YAAY,GAAG,MAAM,GAOtB;IACC,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,aACtD,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,GAAI,EACpE,eAAM,SAAS,EAAC,4CAA4C,YACzD,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAC5B,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { Table as TanstackTable } from "@tanstack/react-table";
|
|
3
|
+
interface DataTableColumnManagerProps<TData> {
|
|
4
|
+
table: TanstackTable<TData>;
|
|
5
|
+
/** Friendly labels per column id (falls back to the column id). */
|
|
6
|
+
labels?: Record<string, string>;
|
|
7
|
+
triggerLabel?: React.ReactNode;
|
|
8
|
+
title?: React.ReactNode;
|
|
9
|
+
description?: React.ReactNode;
|
|
10
|
+
resetLabel?: React.ReactNode;
|
|
11
|
+
cancelLabel?: React.ReactNode;
|
|
12
|
+
applyLabel?: React.ReactNode;
|
|
13
|
+
/** Renders the "N of M visible" line. */
|
|
14
|
+
countLabel?: (visible: number, total: number) => React.ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* "Manage columns" dialog: drag to reorder + toggle to show/hide, with
|
|
19
|
+
* Reset / Cancel / Apply. Changes are staged and only committed on Apply.
|
|
20
|
+
* Non-hideable columns (e.g. a selection checkbox or a sticky actions column)
|
|
21
|
+
* stay pinned to their positions and are not listed.
|
|
22
|
+
*/
|
|
23
|
+
export declare function DataTableColumnManager<TData>({ table, labels, triggerLabel, title, description, resetLabel, cancelLabel, applyLabel, countLabel, className, }: DataTableColumnManagerProps<TData>): React.JSX.Element;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=data-table-column-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-column-manager.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-column-manager.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAepE,UAAU,2BAA2B,CAAC,KAAK;IACzC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,EAC5C,KAAK,EACL,MAAW,EACX,YAAwB,EACxB,KAA2B,EAC3B,WAA+E,EAC/E,UAAwB,EACxB,WAAwB,EACxB,UAAsB,EACtB,UAAkE,EAClE,SAAS,GACV,EAAE,2BAA2B,CAAC,KAAK,CAAC,qBAuJpC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Columns3, GripVertical, RotateCcw } from "lucide-react";
|
|
5
|
+
import { Button } from "../../components/ui/button.js";
|
|
6
|
+
import { Switch } from "../../components/ui/switch.js";
|
|
7
|
+
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "../../components/ui/dialog.js";
|
|
8
|
+
import { cn } from "../../lib/utils.js";
|
|
9
|
+
/**
|
|
10
|
+
* "Manage columns" dialog: drag to reorder + toggle to show/hide, with
|
|
11
|
+
* Reset / Cancel / Apply. Changes are staged and only committed on Apply.
|
|
12
|
+
* Non-hideable columns (e.g. a selection checkbox or a sticky actions column)
|
|
13
|
+
* stay pinned to their positions and are not listed.
|
|
14
|
+
*/
|
|
15
|
+
export function DataTableColumnManager({ table, labels = {}, triggerLabel = "Colunas", title = "Gerenciar colunas", description = "Arraste para reordenar, ative/desative para mostrar ou ocultar.", resetLabel = "Redefinir", cancelLabel = "Cancelar", applyLabel = "Aplicar", countLabel = (visible, total) => `${visible} de ${total} visíveis`, className, }) {
|
|
16
|
+
const [open, setOpen] = React.useState(false);
|
|
17
|
+
const [order, setOrder] = React.useState([]);
|
|
18
|
+
const [visible, setVisible] = React.useState({});
|
|
19
|
+
const [dragId, setDragId] = React.useState(null);
|
|
20
|
+
// Manageable (hideable) columns in their definition order; the pinned
|
|
21
|
+
// (non-hideable) columns keep their slots and are excluded from the list.
|
|
22
|
+
const managedDefault = React.useMemo(() => table
|
|
23
|
+
.getAllLeafColumns()
|
|
24
|
+
.filter((c) => c.getCanHide())
|
|
25
|
+
.map((c) => c.id), [table]);
|
|
26
|
+
const pinnedCount = table.getAllLeafColumns().length - managedDefault.length;
|
|
27
|
+
const totalCount = table.getAllLeafColumns().length;
|
|
28
|
+
function currentFullOrder() {
|
|
29
|
+
const stateOrder = table.getState().columnOrder;
|
|
30
|
+
return stateOrder.length
|
|
31
|
+
? stateOrder
|
|
32
|
+
: table.getAllLeafColumns().map((c) => c.id);
|
|
33
|
+
}
|
|
34
|
+
function initDraft() {
|
|
35
|
+
const managed = currentFullOrder().filter((id) => managedDefault.includes(id));
|
|
36
|
+
for (const id of managedDefault)
|
|
37
|
+
if (!managed.includes(id))
|
|
38
|
+
managed.push(id);
|
|
39
|
+
setOrder(managed);
|
|
40
|
+
setVisible(Object.fromEntries(managed.map((id) => [id, table.getColumn(id)?.getIsVisible() ?? true])));
|
|
41
|
+
}
|
|
42
|
+
function onOpenChange(next) {
|
|
43
|
+
if (next)
|
|
44
|
+
initDraft();
|
|
45
|
+
setOpen(next);
|
|
46
|
+
}
|
|
47
|
+
function reorder(overId) {
|
|
48
|
+
if (!dragId || dragId === overId)
|
|
49
|
+
return;
|
|
50
|
+
setOrder((prev) => {
|
|
51
|
+
const from = prev.indexOf(dragId);
|
|
52
|
+
const to = prev.indexOf(overId);
|
|
53
|
+
if (from === -1 || to === -1)
|
|
54
|
+
return prev;
|
|
55
|
+
const next = [...prev];
|
|
56
|
+
next.splice(from, 1);
|
|
57
|
+
next.splice(to, 0, dragId);
|
|
58
|
+
return next;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function reset() {
|
|
62
|
+
setOrder(managedDefault);
|
|
63
|
+
setVisible(Object.fromEntries(managedDefault.map((id) => [id, true])));
|
|
64
|
+
}
|
|
65
|
+
function apply() {
|
|
66
|
+
// Preserve pinned columns in their existing slots; fill the rest with the
|
|
67
|
+
// staged order.
|
|
68
|
+
let mi = 0;
|
|
69
|
+
const next = currentFullOrder().map((id) => managedDefault.includes(id) ? order[mi++] : id);
|
|
70
|
+
table.setColumnOrder(next);
|
|
71
|
+
table.setColumnVisibility(visible);
|
|
72
|
+
setOpen(false);
|
|
73
|
+
}
|
|
74
|
+
const visibleCount = pinnedCount + order.filter((id) => visible[id]).length;
|
|
75
|
+
return (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [_jsx(DialogTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "sm", className: className, children: [_jsx(Columns3, { className: "mr-1 size-4" }), triggerLabel] }) }), _jsxs(DialogContent, { className: "sm:max-w-md", children: [_jsxs(DialogHeader, { children: [_jsxs(DialogTitle, { className: "flex items-center gap-2", children: [_jsx(Columns3, { className: "size-5" }), title] }), description && _jsx(DialogDescription, { children: description })] }), _jsx("div", { className: "-mx-1 max-h-[55vh] space-y-2 overflow-y-auto px-1 py-1", children: order.map((id) => {
|
|
76
|
+
const col = table.getColumn(id);
|
|
77
|
+
if (!col)
|
|
78
|
+
return null;
|
|
79
|
+
const isDragging = dragId === id;
|
|
80
|
+
return (_jsxs("div", { draggable: true, onDragStart: () => setDragId(id), onDragOver: (e) => {
|
|
81
|
+
e.preventDefault();
|
|
82
|
+
reorder(id);
|
|
83
|
+
}, onDragEnd: () => setDragId(null), className: cn("flex items-center gap-3 rounded-lg border bg-card px-3 py-2.5 transition-colors", isDragging
|
|
84
|
+
? "border-primary/50 opacity-60"
|
|
85
|
+
: "hover:bg-muted/40"), children: [_jsx(GripVertical, { className: "size-4 shrink-0 cursor-grab text-muted-foreground active:cursor-grabbing" }), _jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium", children: labels[id] ?? id }), _jsx(Switch, { checked: visible[id] ?? true, onCheckedChange: (v) => setVisible((p) => ({ ...p, [id]: v })) })] }, id));
|
|
86
|
+
}) }), _jsxs(DialogFooter, { className: "flex-row items-center justify-between gap-2 sm:justify-between", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: reset, children: [_jsx(RotateCcw, { className: "mr-1 size-3.5" }), resetLabel] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: countLabel(visibleCount, totalCount) }), _jsx(Button, { variant: "ghost", size: "sm", onClick: () => setOpen(false), children: cancelLabel }), _jsx(Button, { size: "sm", onClick: apply, children: applyLabel })] })] })] })] }));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data-table-column-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-column-manager.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-column-manager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Table } from "@tanstack/react-table";
|
|
2
|
+
interface DataTablePaginationProps<TData> {
|
|
3
|
+
table: Table<TData>;
|
|
4
|
+
variant?: "full" | "simple";
|
|
5
|
+
pageSizeOptions?: number[];
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Table footer: page navigation + "Showing X to Y of Z" + page-size picker. */
|
|
9
|
+
export declare function DataTablePagination<TData>({ table, variant, pageSizeOptions, className, }: DataTablePaginationProps<TData>): import("react").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=data-table-pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-pagination.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-pagination.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAiBnD,UAAU,wBAAwB,CAAC,KAAK;IACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,KAAK,EACL,OAAgB,EAChB,eAAoC,EACpC,SAAS,GACV,EAAE,wBAAwB,CAAC,KAAK,CAAC,+BA6IjC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown, ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, } from "lucide-react";
|
|
4
|
+
import { Button } from "../../components/ui/button.js";
|
|
5
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
|
|
6
|
+
import { cn } from "../../lib/utils.js";
|
|
7
|
+
/** Table footer: page navigation + "Showing X to Y of Z" + page-size picker. */
|
|
8
|
+
export function DataTablePagination({ table, variant = "full", pageSizeOptions = [5, 8, 10, 20, 50], className, }) {
|
|
9
|
+
const { pageIndex, pageSize } = table.getState().pagination;
|
|
10
|
+
const totalRows = table.getFilteredRowModel().rows.length;
|
|
11
|
+
const pageCount = table.getPageCount();
|
|
12
|
+
const from = totalRows === 0 ? 0 : pageIndex * pageSize + 1;
|
|
13
|
+
const to = Math.min((pageIndex + 1) * pageSize, totalRows);
|
|
14
|
+
if (variant === "simple") {
|
|
15
|
+
return (_jsxs("div", { className: cn("flex items-center justify-between gap-4 border-t border-border p-4", className), children: [_jsxs("span", { className: "text-sm text-muted-foreground", children: [from, "\u2013", to, " of ", totalRows] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: "Previous" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: "Next" })] })] }));
|
|
16
|
+
}
|
|
17
|
+
return (_jsxs("div", { className: cn("flex flex-col items-center justify-between gap-4 border-t border-border p-4 sm:flex-row", className), children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronsLeft, { className: "size-4" }) }), _jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronLeft, { className: "size-4" }) }), _jsxs("div", { className: "flex items-center gap-1", children: [Array.from({ length: Math.min(5, pageCount) }, (_, i) => {
|
|
18
|
+
const isActive = pageIndex === i;
|
|
19
|
+
return (_jsx("button", { onClick: () => table.setPageIndex(i), className: cn("size-8 rounded-lg text-sm font-semibold", isActive
|
|
20
|
+
? "bg-muted text-foreground"
|
|
21
|
+
: "text-foreground hover:bg-muted"), children: i + 1 }, i));
|
|
22
|
+
}), pageCount > 5 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "px-2 text-muted-foreground", children: "..." }), _jsx("button", { onClick: () => table.setPageIndex(pageCount - 1), className: "size-8 rounded-lg text-sm font-semibold text-foreground hover:bg-muted", children: pageCount })] }))] }), _jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: _jsx(ChevronRight, { className: "size-4" }) }), _jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.setPageIndex(pageCount - 1), disabled: !table.getCanNextPage(), children: _jsx(ChevronsRight, { className: "size-4" }) })] }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("span", { className: "text-sm text-muted-foreground", children: ["Showing ", from, " to ", to, " of ", totalRows, " entries"] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "sm", className: "h-8 gap-2", children: ["Show ", pageSize, _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownMenuContent, { align: "end", children: pageSizeOptions.map((size) => (_jsxs(DropdownMenuItem, { onClick: () => table.setPageSize(size), children: ["Show ", size] }, size))) })] })] })] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data-table-pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-pagination.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-pagination.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/** Bordered toolbar band above a table (filters left, actions right). */
|
|
3
|
+
export declare function TableToolbar({ children, className, }: {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}): React.JSX.Element;
|
|
7
|
+
/** Compact search input (icon + field) used inside table toolbars. */
|
|
8
|
+
export declare function TableSearch({ value, onChange, placeholder, className, inputClassName, }: {
|
|
9
|
+
value?: string;
|
|
10
|
+
onChange?: (value: string) => void;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
inputClassName?: string;
|
|
14
|
+
}): React.JSX.Element;
|
|
15
|
+
//# sourceMappingURL=data-table-toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBAWA;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAyB,EACzB,SAAS,EACT,cAAc,GACf,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,qBAYA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Search } from "lucide-react";
|
|
4
|
+
import { Input } from "../../components/ui/input.js";
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
/** Bordered toolbar band above a table (filters left, actions right). */
|
|
7
|
+
export function TableToolbar({ children, className, }) {
|
|
8
|
+
return (_jsx("div", { className: cn("flex flex-col items-stretch justify-between gap-3 border-b border-border p-4 md:flex-row md:items-center", className), children: children }));
|
|
9
|
+
}
|
|
10
|
+
/** Compact search input (icon + field) used inside table toolbars. */
|
|
11
|
+
export function TableSearch({ value, onChange, placeholder = "Search...", className, inputClassName, }) {
|
|
12
|
+
return (_jsxs("div", { className: cn("relative w-full md:w-auto", className), children: [_jsx(Search, { className: "absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { value: value, onChange: onChange ? (e) => onChange(e.target.value) : undefined, placeholder: placeholder, className: cn("h-9 w-full pl-8 md:w-[200px]", inputClassName) })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data-table-toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table-toolbar.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-toolbar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,GAIV;IACC,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,SAAS,CACV,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAW,GAAG,WAAW,EACzB,SAAS,EACT,cAAc,GAOf;IACC,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,aACxD,KAAC,MAAM,IAAC,SAAS,EAAC,yEAAyE,GAAG,EAC9F,KAAC,KAAK,IACJ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAChE,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,cAAc,CAAC,GAC7D,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type ColumnDef, type RowSelectionState, type RowData, type Table as TanstackTable, type VisibilityState } from "@tanstack/react-table";
|
|
3
|
+
declare module "@tanstack/react-table" {
|
|
4
|
+
interface ColumnMeta<TData extends RowData, TValue> {
|
|
5
|
+
headerClassName?: string;
|
|
6
|
+
cellClassName?: string;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
interface DataTableProps<TData, TValue> {
|
|
10
|
+
columns: ColumnDef<TData, TValue>[];
|
|
11
|
+
data: TData[];
|
|
12
|
+
/** Toolbar rendered above the table; receives the table instance. */
|
|
13
|
+
toolbar?: (table: TanstackTable<TData>) => React.ReactNode;
|
|
14
|
+
/** Custom footer (replaces the built-in pagination); receives the table. */
|
|
15
|
+
footer?: (table: TanstackTable<TData>) => React.ReactNode;
|
|
16
|
+
enablePagination?: boolean;
|
|
17
|
+
paginationVariant?: "full" | "simple";
|
|
18
|
+
pageSize?: number;
|
|
19
|
+
pageSizeOptions?: number[];
|
|
20
|
+
initialColumnVisibility?: VisibilityState;
|
|
21
|
+
emptyMessage?: React.ReactNode;
|
|
22
|
+
getRowId?: (row: TData, index: number) => string;
|
|
23
|
+
/** Outer card wrapper class. */
|
|
24
|
+
className?: string;
|
|
25
|
+
tableClassName?: string;
|
|
26
|
+
/** Class for the header <TableRow> (defaults to a muted band). */
|
|
27
|
+
headerRowClassName?: string;
|
|
28
|
+
/** Class for each header <TableHead>. */
|
|
29
|
+
headerCellClassName?: string;
|
|
30
|
+
/** Notified when the row-selection set changes. */
|
|
31
|
+
onRowSelectionChange?: (selection: RowSelectionState) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Clique na linha inteira (restaura o comportamento do DataTable legado).
|
|
34
|
+
* Não dispara quando o alvo do clique é um elemento interativo (botão, link,
|
|
35
|
+
* input, checkbox, item de menu) nem quando tem `[data-no-row-click]`.
|
|
36
|
+
*/
|
|
37
|
+
onRowClick?: (row: TData) => void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Generic TanStack-powered table: owns sorting / filtering / visibility /
|
|
41
|
+
* selection / pagination internally and renders the shadcn table shell +
|
|
42
|
+
* pagination. Pass pre-filtered `data` (e.g. from a store) and `columns`
|
|
43
|
+
* built with the shared cell helpers. Per-column `meta.headerClassName` /
|
|
44
|
+
* `meta.cellClassName` preserve widths and responsive hiding. Provide
|
|
45
|
+
* `footer` to swap the built-in pagination for a bespoke one.
|
|
46
|
+
*/
|
|
47
|
+
export declare function DataTable<TData, TValue>({ columns, data, toolbar, footer, enablePagination, paginationVariant, pageSize, pageSizeOptions, initialColumnVisibility, emptyMessage, getRowId, className, tableClassName, headerRowClassName, headerCellClassName, onRowSelectionChange, onRowClick, }: DataTableProps<TData, TValue>): React.JSX.Element;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=data-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,iBAAiB,EAEtB,KAAK,OAAO,EACZ,KAAK,KAAK,IAAI,aAAa,EAC3B,KAAK,eAAe,EAOrB,MAAM,uBAAuB,CAAC;AAc/B,OAAO,QAAQ,uBAAuB,CAAC;IAErC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAChD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CACF;AAED,UAAU,cAAc,CAAC,KAAK,EAAE,MAAM;IACpC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3D,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,CAAC,EAAE,eAAe,CAAC;IAC1C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mDAAmD;IACnD,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9D;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EACvC,OAAO,EACP,IAAI,EACJ,OAAO,EACP,MAAM,EACN,gBAAuB,EACvB,iBAA0B,EAC1B,QAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAA4B,EAC5B,QAAQ,EACR,SAAS,EACT,cAAc,EACd,kBAAkC,EAClC,mBAAyD,EACzD,oBAAoB,EACpB,UAAU,GACX,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,qBA2H/B"}
|