@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,49 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ChartConfig } from "../../components/ui/chart.js";
|
|
3
|
+
export type SeriesChartType = "area" | "bar" | "line";
|
|
4
|
+
export interface ChartSeries {
|
|
5
|
+
/** Data key for this series. */
|
|
6
|
+
key: string;
|
|
7
|
+
label?: string;
|
|
8
|
+
/** Resolved color (hex / oklch / css var). */
|
|
9
|
+
color: string;
|
|
10
|
+
visible?: boolean;
|
|
11
|
+
/** Optional stack id for stacked bars/areas. */
|
|
12
|
+
stackId?: string;
|
|
13
|
+
}
|
|
14
|
+
interface SeriesChartProps {
|
|
15
|
+
type?: SeriesChartType;
|
|
16
|
+
data: Array<Record<string, unknown>>;
|
|
17
|
+
series: ChartSeries[];
|
|
18
|
+
xKey: string;
|
|
19
|
+
showGrid?: boolean;
|
|
20
|
+
/** Smooth (monotone) vs straight (linear) curves for line/area. */
|
|
21
|
+
smooth?: boolean;
|
|
22
|
+
showXAxis?: boolean;
|
|
23
|
+
showYAxis?: boolean;
|
|
24
|
+
showLegend?: boolean;
|
|
25
|
+
showTooltip?: boolean;
|
|
26
|
+
barSize?: number;
|
|
27
|
+
barRadius?: number | [number, number, number, number];
|
|
28
|
+
xTickFormatter?: (value: unknown, index: number) => string;
|
|
29
|
+
yTickFormatter?: (value: unknown, index: number) => string;
|
|
30
|
+
margin?: {
|
|
31
|
+
top?: number;
|
|
32
|
+
right?: number;
|
|
33
|
+
bottom?: number;
|
|
34
|
+
left?: number;
|
|
35
|
+
};
|
|
36
|
+
/** Sets chart height; defaults to a 240px responsive box. */
|
|
37
|
+
className?: string;
|
|
38
|
+
/** Provide a ChartConfig to override the auto one built from `series`. */
|
|
39
|
+
config?: ChartConfig;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Unified Area / Bar / Line chart on top of the shadcn chart primitives.
|
|
43
|
+
* Colors come from `series` (exposed as `--color-<key>`), so theming and
|
|
44
|
+
* tooltips work out of the box. Bespoke charts (pie, radial, custom bars)
|
|
45
|
+
* keep their own bodies but can still live inside {@link ChartCard}.
|
|
46
|
+
*/
|
|
47
|
+
export declare function SeriesChart({ type, data, series, xKey, showGrid, smooth, showXAxis, showYAxis, showLegend, showTooltip, barSize, barRadius, xTickFormatter, yTickFormatter, margin, className, config, }: SeriesChartProps): React.JSX.Element;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=series-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"series-chart.d.ts","sourceRoot":"","sources":["../../../src/components/shared/series-chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,EACL,WAAW,EAMZ,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,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,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAa,EACb,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,QAAe,EACf,MAAa,EACb,SAAgB,EAChB,SAAiB,EACjB,UAAkB,EAClB,WAAkB,EAClB,OAAO,EACP,SAAa,EACb,cAAc,EACd,cAAc,EACd,MAAuB,EACvB,SAAS,EACT,MAAM,GACP,EAAE,gBAAgB,qBA2HlB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Area, AreaChart, Bar, BarChart, CartesianGrid, Line, LineChart, XAxis, YAxis, } from "recharts";
|
|
4
|
+
import { ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, } from "../../components/ui/chart.js";
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
const DEFAULT_MARGIN = { top: 8, right: 8, bottom: 0, left: 0 };
|
|
7
|
+
/**
|
|
8
|
+
* Unified Area / Bar / Line chart on top of the shadcn chart primitives.
|
|
9
|
+
* Colors come from `series` (exposed as `--color-<key>`), so theming and
|
|
10
|
+
* tooltips work out of the box. Bespoke charts (pie, radial, custom bars)
|
|
11
|
+
* keep their own bodies but can still live inside {@link ChartCard}.
|
|
12
|
+
*/
|
|
13
|
+
export function SeriesChart({ type = "area", data, series, xKey, showGrid = true, smooth = true, showXAxis = true, showYAxis = false, showLegend = false, showTooltip = true, barSize, barRadius = 4, xTickFormatter, yTickFormatter, margin = DEFAULT_MARGIN, className, config, }) {
|
|
14
|
+
const visible = series.filter((s) => s.visible !== false);
|
|
15
|
+
const chartConfig = config ??
|
|
16
|
+
Object.fromEntries(series.map((s) => [s.key, { label: s.label ?? s.key, color: s.color }]));
|
|
17
|
+
const curve = smooth ? "monotone" : "linear";
|
|
18
|
+
const axes = (_jsxs(_Fragment, { children: [showGrid && _jsx(CartesianGrid, { vertical: false, strokeDasharray: "3 3" }), showXAxis && (_jsx(XAxis, { dataKey: xKey, tickLine: false, axisLine: false, tickMargin: 8, tickFormatter: xTickFormatter })), showYAxis && (_jsx(YAxis, { tickLine: false, axisLine: false, tickMargin: 8, width: 40, tickFormatter: yTickFormatter })), showTooltip && (_jsx(ChartTooltip, { cursor: false, content: _jsx(ChartTooltipContent, {}) })), showLegend && _jsx(ChartLegend, { content: _jsx(ChartLegendContent, {}) })] }));
|
|
19
|
+
const merged = { ...DEFAULT_MARGIN, ...margin };
|
|
20
|
+
const containerClass = cn("aspect-auto h-[240px] w-full", className);
|
|
21
|
+
if (type === "bar") {
|
|
22
|
+
return (_jsx(ChartContainer, { config: chartConfig, className: containerClass, children: _jsxs(BarChart, { data: data, margin: merged, children: [axes, visible.map((s) => (_jsx(Bar, { dataKey: s.key, fill: `var(--color-${s.key})`, radius: barRadius, barSize: barSize, stackId: s.stackId }, s.key)))] }) }));
|
|
23
|
+
}
|
|
24
|
+
if (type === "line") {
|
|
25
|
+
return (_jsx(ChartContainer, { config: chartConfig, className: containerClass, children: _jsxs(LineChart, { data: data, margin: merged, children: [axes, visible.map((s) => (_jsx(Line, { dataKey: s.key, type: curve, stroke: `var(--color-${s.key})`, strokeWidth: 2, dot: false }, s.key)))] }) }));
|
|
26
|
+
}
|
|
27
|
+
return (_jsx(ChartContainer, { config: chartConfig, className: containerClass, children: _jsxs(AreaChart, { data: data, margin: merged, children: [_jsx("defs", { children: visible.map((s) => (_jsxs("linearGradient", { id: `fill-${s.key}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "5%", stopColor: `var(--color-${s.key})`, stopOpacity: 0.8 }), _jsx("stop", { offset: "95%", stopColor: `var(--color-${s.key})`, stopOpacity: 0.1 })] }, s.key))) }), axes, visible.map((s) => (_jsx(Area, { dataKey: s.key, type: curve, stroke: `var(--color-${s.key})`, strokeWidth: 2, fill: `url(#fill-${s.key})`, stackId: s.stackId }, s.key)))] }) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=series-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"series-chart.js","sourceRoot":"","sources":["../../../src/components/shared/series-chart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface StatTrend {
|
|
3
|
+
/** e.g. "+20%" */
|
|
4
|
+
change?: string;
|
|
5
|
+
/** e.g. "($2,423)" — secondary, often hidden on small screens. */
|
|
6
|
+
changeValue?: string;
|
|
7
|
+
trend?: "up" | "down";
|
|
8
|
+
/** e.g. "vs Last Months" */
|
|
9
|
+
caption?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface StatData extends StatTrend {
|
|
12
|
+
title: string;
|
|
13
|
+
value: React.ReactNode;
|
|
14
|
+
icon?: React.ElementType;
|
|
15
|
+
}
|
|
16
|
+
interface StatCardProps extends StatData {
|
|
17
|
+
/**
|
|
18
|
+
* - `inline` → small leading icon, value, change row (grid tiles, default)
|
|
19
|
+
* - `panel` → title+value left, large icon box on the right (dashboard-1 / employees)
|
|
20
|
+
*/
|
|
21
|
+
variant?: "inline" | "panel";
|
|
22
|
+
className?: string;
|
|
23
|
+
iconClassName?: string;
|
|
24
|
+
/** (panel) the rounded icon box. */
|
|
25
|
+
iconBoxClassName?: string;
|
|
26
|
+
titleClassName?: string;
|
|
27
|
+
valueClassName?: string;
|
|
28
|
+
}
|
|
29
|
+
/** A single statistic card. Use {@link StatsGrid} for the divided grid layout. */
|
|
30
|
+
export declare function StatCard({ title, value, icon: Icon, change, changeValue, trend, caption, variant, className, iconClassName, iconBoxClassName, titleClassName, valueClassName, }: StatCardProps): React.JSX.Element;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=stat-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-card.d.ts","sourceRoot":"","sources":["../../../src/components/shared/stat-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CAC1B;AAED,UAAU,aAAc,SAAQ,QAAQ;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiCD,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,IAAI,EAAE,IAAI,EACV,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,EAAE,aAAa,qBAyEf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
function ChangeRow({ change, changeValue, trend, caption }) {
|
|
4
|
+
if (!change && !caption)
|
|
5
|
+
return null;
|
|
6
|
+
const positive = trend ? trend === "up" : !change?.trim().startsWith("-");
|
|
7
|
+
return (_jsxs("div", { className: "flex flex-wrap items-center gap-2 text-xs font-medium sm:text-sm", children: [change && (_jsxs("span", { className: positive
|
|
8
|
+
? "text-emerald-600 dark:text-emerald-400"
|
|
9
|
+
: "text-red-600 dark:text-red-400", children: [change, changeValue && (_jsxs("span", { className: "hidden sm:inline", children: [" ", changeValue] }))] })), caption && (_jsxs(_Fragment, { children: [_jsx("span", { className: "size-1 rounded-full bg-muted-foreground" }), _jsx("span", { className: "hidden text-muted-foreground sm:inline", children: caption })] }))] }));
|
|
10
|
+
}
|
|
11
|
+
/** A single statistic card. Use {@link StatsGrid} for the divided grid layout. */
|
|
12
|
+
export function StatCard({ title, value, icon: Icon, change, changeValue, trend, caption, variant = "inline", className, iconClassName, iconBoxClassName, titleClassName, valueClassName, }) {
|
|
13
|
+
if (variant === "panel") {
|
|
14
|
+
return (_jsxs("div", { className: cn("flex items-center justify-between rounded-xl border border-border bg-card p-5", className), children: [_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: cn("text-sm text-muted-foreground", titleClassName), children: title }), _jsx("p", { className: cn("text-2xl font-semibold text-foreground", valueClassName), children: value }), _jsx(ChangeRow, { change: change, changeValue: changeValue, trend: trend, caption: caption })] }), Icon && (_jsx("div", { className: cn("flex size-10 items-center justify-center rounded-lg border border-border bg-background", iconBoxClassName), children: _jsx(Icon, { className: cn("size-5 text-foreground", iconClassName) }) }))] }));
|
|
15
|
+
}
|
|
16
|
+
return (_jsxs("div", { className: cn("space-y-4 rounded-xl border border-border bg-card p-4 sm:p-6", className), children: [_jsxs("div", { className: "flex items-center gap-1.5 text-muted-foreground", children: [Icon && (_jsx(Icon, { className: cn("size-4 sm:size-[18px]", iconClassName) })), _jsx("span", { className: cn("text-xs font-medium sm:text-sm", titleClassName), children: title })] }), _jsx("p", { className: cn("text-2xl font-semibold tracking-tight sm:text-[28px]", valueClassName), children: value }), _jsx(ChangeRow, { change: change, changeValue: changeValue, trend: trend, caption: caption })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=stat-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-card.js","sourceRoot":"","sources":["../../../src/components/shared/stat-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAgCjC,SAAS,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAa;IACnE,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1E,OAAO,CACL,eAAK,SAAS,EAAC,kEAAkE,aAC9E,MAAM,IAAI,CACT,gBACE,SAAS,EACP,QAAQ;oBACN,CAAC,CAAC,wCAAwC;oBAC1C,CAAC,CAAC,gCAAgC,aAGrC,MAAM,EACN,WAAW,IAAI,CACd,gBAAM,SAAS,EAAC,kBAAkB,kBAAG,WAAW,IAAQ,CACzD,IACI,CACR,EACA,OAAO,IAAI,CACV,8BACE,eAAM,SAAS,EAAC,yCAAyC,GAAG,EAC5D,eAAM,SAAS,EAAC,wCAAwC,YACrD,OAAO,GACH,IACN,CACJ,IACG,CACP,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,IAAI,EAAE,IAAI,EACV,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,OAAO,GAAG,QAAQ,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,GACA;IACd,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+EAA+E,EAC/E,SAAS,CACV,aAED,eAAK,SAAS,EAAC,WAAW,aACxB,YAAG,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,cAAc,CAAC,YAC9D,KAAK,GACJ,EACJ,YACE,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,cAAc,CACf,YAEA,KAAK,GACJ,EACJ,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAChB,IACE,EACL,IAAI,IAAI,CACP,cACE,SAAS,EAAE,EAAE,CACX,wFAAwF,EACxF,gBAAgB,CACjB,YAED,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,aAAa,CAAC,GAAI,GAC5D,CACP,IACG,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,SAAS,CACV,aAED,eAAK,SAAS,EAAC,iDAAiD,aAC7D,IAAI,IAAI,CACP,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,aAAa,CAAC,GAAI,CAChE,EACD,eAAM,SAAS,EAAE,EAAE,CAAC,gCAAgC,EAAE,cAAc,CAAC,YAClE,KAAK,GACD,IACH,EACN,YACE,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,cAAc,CACf,YAEA,KAAK,GACJ,EACJ,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAChB,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { StatData } from "./stat-card.js";
|
|
3
|
+
interface StatsGridProps {
|
|
4
|
+
stats: StatData[];
|
|
5
|
+
/** Shared caption appended to every tile's change row (e.g. "vs Last Months"). */
|
|
6
|
+
caption?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Override the inner grid (columns + dividers). */
|
|
9
|
+
gridClassName?: string;
|
|
10
|
+
/** Per-tile class (padding / spacing). */
|
|
11
|
+
tileClassName?: string;
|
|
12
|
+
/** Render the small dot before the caption (default true). */
|
|
13
|
+
showCaptionDot?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The bordered, divided stats panel used by most dashboards: one rounded card
|
|
17
|
+
* containing N tiles separated by hairlines (stacked on mobile, divided on lg).
|
|
18
|
+
*/
|
|
19
|
+
export declare function StatsGrid({ stats, caption, className, gridClassName, tileClassName, showCaptionDot, }: StatsGridProps): React.JSX.Element;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=stats-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-grid.d.ts","sourceRoot":"","sources":["../../../src/components/shared/stats-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,cAAc;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAqB,GACtB,EAAE,cAAc,qBAoEhB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* The bordered, divided stats panel used by most dashboards: one rounded card
|
|
5
|
+
* containing N tiles separated by hairlines (stacked on mobile, divided on lg).
|
|
6
|
+
*/
|
|
7
|
+
export function StatsGrid({ stats, caption, className, gridClassName, tileClassName, showCaptionDot = true, }) {
|
|
8
|
+
return (_jsx("div", { className: cn("rounded-xl border bg-card text-card-foreground", className), children: _jsx("div", { className: cn("grid grid-cols-1 divide-x-0 divide-y divide-border sm:grid-cols-2 sm:divide-y-0 lg:grid-cols-4 lg:divide-x", gridClassName), children: stats.map((stat, i) => {
|
|
9
|
+
const Icon = stat.icon;
|
|
10
|
+
const positive = stat.trend
|
|
11
|
+
? stat.trend === "up"
|
|
12
|
+
: !stat.change?.trim().startsWith("-");
|
|
13
|
+
const tileCaption = stat.caption ?? caption;
|
|
14
|
+
return (_jsxs("div", { className: cn("space-y-4 p-4 sm:p-6", tileClassName), children: [_jsxs("div", { className: "flex items-center gap-1.5 text-muted-foreground", children: [Icon && _jsx(Icon, { className: "size-4 sm:size-[18px]" }), _jsx("span", { className: "text-xs font-medium sm:text-sm", children: stat.title })] }), _jsx("p", { className: "text-2xl font-semibold tracking-tight sm:text-[28px]", children: stat.value }), (stat.change || tileCaption) && (_jsxs("div", { className: "flex flex-wrap items-center gap-2 text-xs font-medium sm:text-sm", children: [stat.change && (_jsxs("span", { className: positive
|
|
15
|
+
? "text-emerald-600 dark:text-emerald-400"
|
|
16
|
+
: "text-red-600 dark:text-red-400", children: [stat.change, stat.changeValue && (_jsxs("span", { className: "hidden sm:inline", children: [" ", stat.changeValue] }))] })), tileCaption && (_jsxs(_Fragment, { children: [showCaptionDot && (_jsx("span", { className: "size-1 rounded-full bg-muted-foreground" })), _jsx("span", { className: "hidden text-muted-foreground sm:inline", children: tileCaption })] }))] }))] }, i));
|
|
17
|
+
}) }) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=stats-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-grid.js","sourceRoot":"","sources":["../../../src/components/shared/stats-grid.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAgBjC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,GAAG,IAAI,GACN;IACf,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,gDAAgD,EAChD,SAAS,CACV,YAED,cACE,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,aAAa,CACd,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;oBACzB,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI;oBACrB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;gBAC5C,OAAO,CACL,eAAa,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC,aAC/D,eAAK,SAAS,EAAC,iDAAiD,aAC7D,IAAI,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,uBAAuB,GAAG,EACnD,eAAM,SAAS,EAAC,gCAAgC,YAC7C,IAAI,CAAC,KAAK,GACN,IACH,EACN,YAAG,SAAS,EAAC,sDAAsD,YAChE,IAAI,CAAC,KAAK,GACT,EACH,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAC/B,eAAK,SAAS,EAAC,kEAAkE,aAC9E,IAAI,CAAC,MAAM,IAAI,CACd,gBACE,SAAS,EACP,QAAQ;wCACN,CAAC,CAAC,wCAAwC;wCAC1C,CAAC,CAAC,gCAAgC,aAGrC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,IAAI,CACnB,gBAAM,SAAS,EAAC,kBAAkB,aAC/B,GAAG,EACH,IAAI,CAAC,WAAW,IACZ,CACR,IACI,CACR,EACA,WAAW,IAAI,CACd,8BACG,cAAc,IAAI,CACjB,eAAM,SAAS,EAAC,yCAAyC,GAAG,CAC7D,EACD,eAAM,SAAS,EAAC,wCAAwC,YACrD,WAAW,GACP,IACN,CACJ,IACG,CACP,KAxCO,CAAC,CAyCL,CACP,CAAC;YACJ,CAAC,CAAC,GACE,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type StatusTone = "emerald" | "green" | "blue" | "sky" | "cyan" | "teal" | "indigo" | "violet" | "purple" | "pink" | "rose" | "red" | "orange" | "amber" | "gray";
|
|
3
|
+
/** Soft fill + colored text (used for department / job-title / tag pills). */
|
|
4
|
+
export declare const toneSoft: Record<StatusTone, string>;
|
|
5
|
+
/** Tinted fill + border + saturated text (used for status pills with icons). */
|
|
6
|
+
export declare const toneBordered: Record<StatusTone, {
|
|
7
|
+
bg: string;
|
|
8
|
+
text: string;
|
|
9
|
+
}>;
|
|
10
|
+
interface StatusBadgeProps {
|
|
11
|
+
label: React.ReactNode;
|
|
12
|
+
icon?: React.ElementType;
|
|
13
|
+
tone?: StatusTone;
|
|
14
|
+
/**
|
|
15
|
+
* - `bordered` → tinted bg + border + icon (status pills, default)
|
|
16
|
+
* - `soft` → soft fill, no border (department / tag pills)
|
|
17
|
+
* - `plain` → no colors; supply `className` yourself
|
|
18
|
+
*/
|
|
19
|
+
variant?: "bordered" | "soft" | "plain";
|
|
20
|
+
className?: string;
|
|
21
|
+
iconClassName?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Colored status / category pill with an optional leading icon. */
|
|
24
|
+
export declare function StatusBadge({ label, icon: Icon, tone, variant, className, iconClassName, }: StatusBadgeProps): React.JSX.Element;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=status-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../../src/components/shared/status-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,KAAK,GACL,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEX,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAqB/C,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA6DzE,CAAC;AAEF,UAAU,gBAAgB;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,IAAI,EAAE,IAAI,EACV,IAAa,EACb,OAAoB,EACpB,SAAS,EACT,aAAa,GACd,EAAE,gBAAgB,qBA2ClB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
/** Soft fill + colored text (used for department / job-title / tag pills). */
|
|
4
|
+
export const toneSoft = {
|
|
5
|
+
emerald: "bg-emerald-100 text-emerald-700 dark:bg-emerald-950/30 dark:text-emerald-300",
|
|
6
|
+
green: "bg-green-100 text-green-700 dark:bg-green-950/30 dark:text-green-300",
|
|
7
|
+
blue: "bg-blue-100 text-blue-700 dark:bg-blue-950/30 dark:text-blue-300",
|
|
8
|
+
sky: "bg-sky-100 text-sky-700 dark:bg-sky-950/30 dark:text-sky-300",
|
|
9
|
+
cyan: "bg-cyan-100 text-cyan-700 dark:bg-cyan-950/30 dark:text-cyan-300",
|
|
10
|
+
teal: "bg-teal-100 text-teal-700 dark:bg-teal-950/30 dark:text-teal-300",
|
|
11
|
+
indigo: "bg-indigo-100 text-indigo-700 dark:bg-indigo-950/30 dark:text-indigo-300",
|
|
12
|
+
violet: "bg-violet-100 text-violet-700 dark:bg-violet-950/30 dark:text-violet-300",
|
|
13
|
+
purple: "bg-purple-100 text-purple-700 dark:bg-purple-950/30 dark:text-purple-300",
|
|
14
|
+
pink: "bg-pink-100 text-pink-700 dark:bg-pink-950/30 dark:text-pink-300",
|
|
15
|
+
rose: "bg-rose-100 text-rose-700 dark:bg-rose-950/30 dark:text-rose-300",
|
|
16
|
+
red: "bg-red-100 text-red-700 dark:bg-red-950/30 dark:text-red-300",
|
|
17
|
+
orange: "bg-orange-100 text-orange-700 dark:bg-orange-950/30 dark:text-orange-300",
|
|
18
|
+
amber: "bg-amber-100 text-amber-700 dark:bg-amber-950/30 dark:text-amber-300",
|
|
19
|
+
gray: "bg-muted text-muted-foreground",
|
|
20
|
+
};
|
|
21
|
+
/** Tinted fill + border + saturated text (used for status pills with icons). */
|
|
22
|
+
export const toneBordered = {
|
|
23
|
+
emerald: {
|
|
24
|
+
bg: "bg-emerald-50 border-emerald-200 dark:bg-emerald-950/30 dark:border-emerald-800",
|
|
25
|
+
text: "text-emerald-600 dark:text-emerald-400",
|
|
26
|
+
},
|
|
27
|
+
green: {
|
|
28
|
+
bg: "bg-green-50 border-green-200 dark:bg-green-950/30 dark:border-green-800",
|
|
29
|
+
text: "text-green-600 dark:text-green-400",
|
|
30
|
+
},
|
|
31
|
+
blue: {
|
|
32
|
+
bg: "bg-blue-50 border-blue-200 dark:bg-blue-950/30 dark:border-blue-800",
|
|
33
|
+
text: "text-blue-600 dark:text-blue-400",
|
|
34
|
+
},
|
|
35
|
+
sky: {
|
|
36
|
+
bg: "bg-sky-50 border-sky-200 dark:bg-sky-950/30 dark:border-sky-800",
|
|
37
|
+
text: "text-sky-600 dark:text-sky-400",
|
|
38
|
+
},
|
|
39
|
+
cyan: {
|
|
40
|
+
bg: "bg-cyan-50 border-cyan-200 dark:bg-cyan-950/30 dark:border-cyan-800",
|
|
41
|
+
text: "text-cyan-600 dark:text-cyan-400",
|
|
42
|
+
},
|
|
43
|
+
teal: {
|
|
44
|
+
bg: "bg-teal-50 border-teal-200 dark:bg-teal-950/30 dark:border-teal-800",
|
|
45
|
+
text: "text-teal-600 dark:text-teal-400",
|
|
46
|
+
},
|
|
47
|
+
indigo: {
|
|
48
|
+
bg: "bg-indigo-50 border-indigo-200 dark:bg-indigo-950/30 dark:border-indigo-800",
|
|
49
|
+
text: "text-indigo-600 dark:text-indigo-400",
|
|
50
|
+
},
|
|
51
|
+
violet: {
|
|
52
|
+
bg: "bg-violet-50 border-violet-200 dark:bg-violet-950/30 dark:border-violet-800",
|
|
53
|
+
text: "text-violet-600 dark:text-violet-400",
|
|
54
|
+
},
|
|
55
|
+
purple: {
|
|
56
|
+
bg: "bg-purple-50 border-purple-200 dark:bg-purple-950/30 dark:border-purple-800",
|
|
57
|
+
text: "text-purple-600 dark:text-purple-400",
|
|
58
|
+
},
|
|
59
|
+
pink: {
|
|
60
|
+
bg: "bg-pink-50 border-pink-200 dark:bg-pink-950/30 dark:border-pink-800",
|
|
61
|
+
text: "text-pink-600 dark:text-pink-400",
|
|
62
|
+
},
|
|
63
|
+
rose: {
|
|
64
|
+
bg: "bg-rose-50 border-rose-200 dark:bg-rose-950/30 dark:border-rose-800",
|
|
65
|
+
text: "text-rose-600 dark:text-rose-400",
|
|
66
|
+
},
|
|
67
|
+
red: {
|
|
68
|
+
bg: "bg-red-50 border-red-200 dark:bg-red-950/30 dark:border-red-800",
|
|
69
|
+
text: "text-red-600 dark:text-red-400",
|
|
70
|
+
},
|
|
71
|
+
orange: {
|
|
72
|
+
bg: "bg-orange-50 border-orange-200 dark:bg-orange-950/30 dark:border-orange-800",
|
|
73
|
+
text: "text-orange-600 dark:text-orange-400",
|
|
74
|
+
},
|
|
75
|
+
amber: {
|
|
76
|
+
bg: "bg-amber-50 border-amber-200 dark:bg-amber-950/30 dark:border-amber-800",
|
|
77
|
+
text: "text-amber-600 dark:text-amber-400",
|
|
78
|
+
},
|
|
79
|
+
gray: {
|
|
80
|
+
bg: "bg-muted border-border",
|
|
81
|
+
text: "text-muted-foreground",
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
/** Colored status / category pill with an optional leading icon. */
|
|
85
|
+
export function StatusBadge({ label, icon: Icon, tone = "gray", variant = "bordered", className, iconClassName, }) {
|
|
86
|
+
if (variant === "soft") {
|
|
87
|
+
return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded px-2 py-0.5 text-xs font-medium", toneSoft[tone], className), children: [Icon && _jsx(Icon, { className: cn("size-3.5", iconClassName) }), label] }));
|
|
88
|
+
}
|
|
89
|
+
if (variant === "plain") {
|
|
90
|
+
return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded px-2 py-0.5 text-xs font-medium", className), children: [Icon && _jsx(Icon, { className: cn("size-3.5", iconClassName) }), label] }));
|
|
91
|
+
}
|
|
92
|
+
const t = toneBordered[tone];
|
|
93
|
+
return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-xs font-medium", t.bg, className), children: [Icon && _jsx(Icon, { className: cn("size-3.5", t.text, iconClassName) }), _jsx("span", { className: t.text, children: label })] }));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=status-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.js","sourceRoot":"","sources":["../../../src/components/shared/status-badge.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
3
|
+
declare function Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
|
|
4
|
+
declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
|
|
5
|
+
declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
|
|
7
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
8
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAK1D,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAiBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAiBzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
6
|
+
function Accordion({ className, ...props }) {
|
|
7
|
+
return (_jsx(AccordionPrimitive.Root, { "data-slot": "accordion", className: cn("flex w-full flex-col", className), ...props }));
|
|
8
|
+
}
|
|
9
|
+
function AccordionItem({ className, ...props }) {
|
|
10
|
+
return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("not-last:border-b", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function AccordionTrigger({ className, children, ...props }) {
|
|
13
|
+
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className), ...props, children: [children, _jsx(ChevronDownIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }), _jsx(ChevronUpIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })] }) }));
|
|
14
|
+
}
|
|
15
|
+
function AccordionContent({ className, children, ...props }) {
|
|
16
|
+
return (_jsx(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up", ...props, children: _jsx("div", { className: cn("h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), children: children }) }));
|
|
17
|
+
}
|
|
18
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
19
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE7D,SAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EAC6C;IACrD,OAAO,CACL,KAAC,kBAAkB,CAAC,IAAI,iBACZ,WAAW,EACrB,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAC5C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EAC6C;IACrD,OAAO,CACL,KAAC,kBAAkB,CAAC,IAAI,iBACZ,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,KACzC,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACgD;IACxD,OAAO,CACL,KAAC,kBAAkB,CAAC,MAAM,IAAC,SAAS,EAAC,MAAM,YACzC,MAAC,kBAAkB,CAAC,OAAO,iBACf,mBAAmB,EAC7B,SAAS,EAAE,EAAE,CACX,kfAAkf,EAClf,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,eAAe,iBAAW,wBAAwB,EAAC,SAAS,EAAC,2EAA2E,GAAG,EAC5I,KAAC,aAAa,iBAAW,wBAAwB,EAAC,SAAS,EAAC,kFAAkF,GAAG,IACtH,GACH,CAC7B,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACgD;IACxD,OAAO,CACL,KAAC,kBAAkB,CAAC,OAAO,iBACf,mBAAmB,EAC7B,SAAS,EAAC,2FAA2F,KACjG,KAAK,YAET,cACE,SAAS,EAAE,EAAE,CACX,mJAAmJ,EACnJ,SAAS,CACV,YAEA,QAAQ,GACL,GACqB,CAC9B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
|
|
3
|
+
import { Button } from "../../components/ui/button.js";
|
|
4
|
+
declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): React.JSX.Element;
|
|
5
|
+
declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): React.JSX.Element;
|
|
7
|
+
declare function AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>): React.JSX.Element;
|
|
8
|
+
declare function AlertDialogContent({ className, size, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {
|
|
9
|
+
size?: "default" | "sm";
|
|
10
|
+
}): React.JSX.Element;
|
|
11
|
+
declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
+
declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
13
|
+
declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
14
|
+
declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): React.JSX.Element;
|
|
15
|
+
declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): React.JSX.Element;
|
|
16
|
+
declare function AlertDialogAction({ className, variant, size, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Action> & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): React.JSX.Element;
|
|
17
|
+
declare function AlertDialogCancel({ className, variant, size, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): React.JSX.Element;
|
|
18
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
|
|
19
|
+
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAG9D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,qBAExD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAI3D;AAED,iBAAS,iBAAiB,CAAC,EACzB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,qBAI1D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAAG;IAC7D,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CACxB,qBAeA;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,qBAWzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,qBAW/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,GACzD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAU9D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,GACzD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAU9D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import { Button } from "../../components/ui/button.js";
|
|
6
|
+
function AlertDialog({ ...props }) {
|
|
7
|
+
return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
8
|
+
}
|
|
9
|
+
function AlertDialogTrigger({ ...props }) {
|
|
10
|
+
return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
|
|
11
|
+
}
|
|
12
|
+
function AlertDialogPortal({ ...props }) {
|
|
13
|
+
return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
|
|
14
|
+
}
|
|
15
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
16
|
+
return (_jsx(AlertDialogPrimitive.Overlay, { "data-slot": "alert-dialog-overlay", className: cn("fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
19
|
+
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props })] }));
|
|
20
|
+
}
|
|
21
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function AlertDialogMedia({ className, ...props }) {
|
|
28
|
+
return (_jsx("div", { "data-slot": "alert-dialog-media", className: cn("mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 [&>svg:not([class*='size-'])]:size-6", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
31
|
+
return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
34
|
+
return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props }));
|
|
35
|
+
}
|
|
36
|
+
function AlertDialogAction({ className, variant = "default", size = "default", ...props }) {
|
|
37
|
+
return (_jsx(Button, { variant: variant, size: size, asChild: true, children: _jsx(AlertDialogPrimitive.Action, { "data-slot": "alert-dialog-action", className: cn(className), ...props }) }));
|
|
38
|
+
}
|
|
39
|
+
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
40
|
+
return (_jsx(Button, { variant: variant, size: size, asChild: true, children: _jsx(AlertDialogPrimitive.Cancel, { "data-slot": "alert-dialog-cancel", className: cn(className), ...props }) }));
|
|
41
|
+
}
|
|
42
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
|
|
43
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../../../src/components/ui/alert-dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const alertVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): React.JSX.Element;
|
|
7
|
+
declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
8
|
+
declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
9
|
+
declare function AlertAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
export { Alert, AlertTitle, AlertDescription, AlertAction };
|
|
11
|
+
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,aAAa;;8EAclB,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,qBASlE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current [&>svg:not([class*='size-'])]:size-4", {
|
|
5
|
+
variants: {
|
|
6
|
+
variant: {
|
|
7
|
+
default: "bg-card text-card-foreground",
|
|
8
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
defaultVariants: {
|
|
12
|
+
variant: "default",
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
function Alert({ className, variant, ...props }) {
|
|
16
|
+
return (_jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function AlertTitle({ className, ...props }) {
|
|
19
|
+
return (_jsx("div", { "data-slot": "alert-title", className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function AlertDescription({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "alert-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function AlertAction({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "alert-action", className: cn("absolute top-2 right-2", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
export { Alert, AlertTitle, AlertDescription, AlertAction };
|
|
28
|
+
//# sourceMappingURL=alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/components/ui/alert.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,MAAM,aAAa,GAAG,GAAG,CACvB,2TAA2T,EAC3T;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,8BAA8B;YACvC,WAAW,EACT,mGAAmG;SACtG;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAA;AAED,SAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACyD;IACjE,OAAO,CACL,2BACY,OAAO,EACjB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAChD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,qHAAqH,EACrH,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACoB;IAC5B,OAAO,CACL,2BACY,mBAAmB,EAC7B,SAAS,EAAE,EAAE,CACX,4JAA4J,EAC5J,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,2BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,KAC9C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../../src/components/ui/aspect-ratio.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE9D,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,+BAExD;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { AspectRatio as AspectRatioPrimitive } from "radix-ui";
|
|
4
|
+
function AspectRatio({ ...props }) {
|
|
5
|
+
return _jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
|
|
6
|
+
}
|
|
7
|
+
export { AspectRatio };
|
|
8
|
+
//# sourceMappingURL=aspect-ratio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../../src/components/ui/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE9D,SAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EAC+C;IACvD,OAAO,KAAC,oBAAoB,CAAC,IAAI,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAA;AAC1E,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Avatar as AvatarPrimitive } from "radix-ui";
|
|
3
|
+
declare function Avatar({ className, size, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root> & {
|
|
4
|
+
size?: "default" | "sm" | "lg";
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): React.JSX.Element;
|
|
7
|
+
declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): React.JSX.Element;
|
|
8
|
+
declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
9
|
+
declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
+
export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
|
|
12
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAIpD,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;CAC/B,qBAYA;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,qBAWpD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,qBAWvD;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAczE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWxE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,CAAA"}
|