tembro 2.0.6 → 2.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/dist/components/calendar/calendar.cjs +1 -1
- package/dist/components/calendar/calendar.d.ts +2 -1
- package/dist/components/calendar/calendar.js +126 -122
- package/dist/components/calendar/date-range-picker.cjs +1 -1
- package/dist/components/calendar/date-range-picker.d.ts +2 -1
- package/dist/components/calendar/date-range-picker.js +39 -39
- package/dist/components/charts/charts.cjs +1 -1
- package/dist/components/charts/charts.d.ts +13 -4
- package/dist/components/charts/charts.js +76 -46
- package/dist/components/charts/progress-ring.cjs +1 -1
- package/dist/components/charts/progress-ring.d.ts +3 -1
- package/dist/components/charts/progress-ring.js +11 -10
- package/dist/components/data-table/data-table-column-visibility-menu.cjs +1 -1
- package/dist/components/data-table/data-table-column-visibility-menu.d.ts +4 -1
- package/dist/components/data-table/data-table-column-visibility-menu.js +36 -8
- package/dist/components/data-table/data-table-toolbar.cjs +1 -1
- package/dist/components/data-table/data-table-toolbar.js +12 -13
- package/dist/components/display/carousel.cjs +1 -1
- package/dist/components/display/carousel.d.ts +9 -1
- package/dist/components/display/carousel.js +123 -81
- package/dist/components/display/code-block.cjs +2 -2
- package/dist/components/display/code-block.d.ts +2 -1
- package/dist/components/display/code-block.js +17 -12
- package/dist/components/display/delta-badge.cjs +1 -1
- package/dist/components/display/delta-badge.d.ts +2 -1
- package/dist/components/display/delta-badge.js +11 -7
- package/dist/components/display/kanban.cjs +1 -1
- package/dist/components/display/kanban.d.ts +4 -1
- package/dist/components/display/kanban.js +60 -33
- package/dist/components/display/metric-grid.cjs +1 -1
- package/dist/components/display/metric-grid.d.ts +1 -0
- package/dist/components/display/metric-grid.js +1 -1
- package/dist/components/display/qr-code.cjs +1 -1
- package/dist/components/display/qr-code.d.ts +2 -1
- package/dist/components/display/qr-code.js +19 -16
- package/dist/components/display/tag.cjs +1 -1
- package/dist/components/display/tag.d.ts +2 -1
- package/dist/components/display/tag.js +28 -22
- package/dist/components/display/tree-view.cjs +1 -1
- package/dist/components/display/tree-view.d.ts +9 -1
- package/dist/components/display/tree-view.js +104 -40
- package/dist/components/display/trend-card.cjs +1 -1
- package/dist/components/display/trend-card.js +27 -41
- package/dist/components/feedback/alert.cjs +1 -1
- package/dist/components/feedback/alert.d.ts +2 -1
- package/dist/components/feedback/alert.js +6 -6
- package/dist/components/feedback/loading-state.cjs +1 -1
- package/dist/components/feedback/loading-state.d.ts +3 -1
- package/dist/components/feedback/loading-state.js +23 -10
- package/dist/components/feedback/page-state.cjs +1 -1
- package/dist/components/feedback/page-state.d.ts +2 -1
- package/dist/components/feedback/page-state.js +7 -4
- package/dist/components/form/form-field-shell.cjs +1 -1
- package/dist/components/form/form-field-shell.d.ts +4 -2
- package/dist/components/form/form-field-shell.js +57 -41
- package/dist/components/form/form-input.cjs +1 -1
- package/dist/components/form/form-input.js +2 -0
- package/dist/components/form/form-select.cjs +1 -1
- package/dist/components/form/form-select.js +2 -0
- package/dist/components/form/form-switch.cjs +1 -1
- package/dist/components/form/form-switch.d.ts +1 -1
- package/dist/components/form/form-switch.js +58 -54
- package/dist/components/form/form-textarea.cjs +1 -1
- package/dist/components/form/form-textarea.d.ts +1 -1
- package/dist/components/form/form-textarea.js +29 -27
- package/dist/components/layout/app-sidebar.cjs +1 -1
- package/dist/components/layout/app-sidebar.d.ts +1 -0
- package/dist/components/layout/app-sidebar.js +36 -36
- package/dist/components/layout/breadcrumbs.cjs +1 -1
- package/dist/components/layout/breadcrumbs.d.ts +2 -1
- package/dist/components/layout/breadcrumbs.js +7 -7
- package/dist/components/modern/calendar-scheduler.cjs +1 -1
- package/dist/components/modern/calendar-scheduler.d.ts +5 -1
- package/dist/components/modern/calendar-scheduler.js +47 -28
- package/dist/components/modern/dual-list-picker.cjs +1 -1
- package/dist/components/modern/dual-list-picker.d.ts +5 -1
- package/dist/components/modern/dual-list-picker.js +81 -23
- package/dist/components/modern/rich-text-editor.cjs +1 -1
- package/dist/components/modern/rich-text-editor.d.ts +3 -1
- package/dist/components/modern/rich-text-editor.js +12 -9
- package/dist/components/modern/tour.cjs +1 -1
- package/dist/components/modern/tour.d.ts +5 -1
- package/dist/components/modern/tour.js +57 -35
- package/dist/components/navigation/command-bar.cjs +1 -1
- package/dist/components/navigation/command-bar.d.ts +3 -1
- package/dist/components/navigation/command-bar.js +10 -7
- package/dist/components/navigation/demo.cjs +1 -1
- package/dist/components/navigation/demo.js +0 -1
- package/dist/components/navigation/nav-tabs.cjs +1 -1
- package/dist/components/navigation/nav-tabs.js +39 -27
- package/dist/components/navigation/page-tabs.cjs +1 -1
- package/dist/components/navigation/page-tabs.js +41 -30
- package/dist/components/navigation/pagination.cjs +1 -1
- package/dist/components/navigation/pagination.d.ts +7 -1
- package/dist/components/navigation/pagination.js +48 -25
- package/dist/components/notifications/notification-center.cjs +1 -1
- package/dist/components/notifications/notification-center.d.ts +3 -1
- package/dist/components/notifications/notification-center.js +56 -38
- package/dist/components/notifications/toast.cjs +1 -1
- package/dist/components/notifications/toast.d.ts +1 -0
- package/dist/components/notifications/toast.js +4 -0
- package/dist/components/overlay/alert-dialog.cjs +1 -1
- package/dist/components/overlay/alert-dialog.js +1 -1
- package/dist/components/overlay/confirm-dialog.cjs +1 -1
- package/dist/components/overlay/confirm-dialog.d.ts +4 -2
- package/dist/components/overlay/confirm-dialog.js +31 -22
- package/dist/components/overlay/drawer.cjs +1 -1
- package/dist/components/overlay/drawer.d.ts +3 -1
- package/dist/components/overlay/drawer.js +24 -16
- package/dist/components/ui/accordion/index.d.ts +4 -0
- package/dist/components/ui/badge/index.cjs +1 -1
- package/dist/components/ui/badge/index.d.ts +1 -1
- package/dist/components/ui/badge/index.js +2 -1
- package/dist/components/ui/button/index.cjs +1 -1
- package/dist/components/ui/button/index.d.ts +2 -1
- package/dist/components/ui/button/index.js +13 -10
- package/dist/components/ui/dialog/index.cjs +1 -1
- package/dist/components/ui/dialog/index.js +2 -1
- package/dist/components/ui/hover-card.cjs +1 -1
- package/dist/components/ui/hover-card.d.ts +11 -3
- package/dist/components/ui/hover-card.js +29 -24
- package/dist/components/ui/input/index.d.ts +1 -1
- package/dist/components/ui/popover/index.cjs +1 -1
- package/dist/components/ui/popover/index.d.ts +2 -2
- package/dist/components/ui/popover/index.js +6 -5
- package/dist/components/ui/radio-group/index.cjs +1 -1
- package/dist/components/ui/radio-group/index.d.ts +5 -1
- package/dist/components/ui/radio-group/index.js +50 -16
- package/dist/components/ui/right-click-menu/index.cjs +1 -1
- package/dist/components/ui/right-click-menu/index.d.ts +5 -1
- package/dist/components/ui/right-click-menu/index.js +77 -23
- package/dist/components/ui/segmented-control/index.cjs +1 -1
- package/dist/components/ui/segmented-control/index.d.ts +2 -1
- package/dist/components/ui/segmented-control/index.js +23 -11
- package/dist/components/ui/select/index.cjs +1 -1
- package/dist/components/ui/select/index.d.ts +8 -1
- package/dist/components/ui/select/index.js +40 -35
- package/dist/components/ui/switch/index.cjs +1 -1
- package/dist/components/ui/switch/index.d.ts +18 -0
- package/dist/components/ui/switch/index.js +47 -17
- package/dist/components/ui/tabs/index.cjs +1 -1
- package/dist/components/ui/tabs/index.d.ts +14 -4
- package/dist/components/ui/tabs/index.js +11 -8
- package/dist/components/ui/textarea/index.cjs +1 -1
- package/dist/components/ui/textarea/index.d.ts +10 -2
- package/dist/components/ui/textarea/index.js +37 -8
- package/dist/components/ui/textarea.cjs +1 -0
- package/dist/components/ui/textarea.d.ts +1 -0
- package/dist/components/ui/textarea.js +2 -0
- package/dist/components/ui/tooltip/index.cjs +1 -1
- package/dist/components/ui/tooltip/index.d.ts +11 -3
- package/dist/components/ui/tooltip/index.js +41 -20
- package/dist/components/upload/file-upload.cjs +1 -1
- package/dist/components/upload/file-upload.d.ts +8 -1
- package/dist/components/upload/file-upload.js +132 -100
- package/dist/components/upload/image-upload.cjs +1 -1
- package/dist/components/upload/image-upload.d.ts +5 -1
- package/dist/components/upload/image-upload.js +34 -9
- package/dist/index.cjs +1 -1
- package/dist/index.js +31 -31
- package/dist/public-component-surface.cjs +1 -1
- package/dist/public-component-surface.js +15 -0
- package/dist/showcase/component-api-schema.cjs +1 -1
- package/dist/showcase/component-api-schema.js +187 -10
- package/dist/showcase/fallback.cjs +3 -3
- package/dist/showcase/fallback.js +221 -243
- package/dist/showcase/premium/alert/showcase.cjs +1 -1
- package/dist/showcase/premium/alert/showcase.js +1 -0
- package/dist/showcase/premium/app-sidebar/showcase.cjs +1 -1
- package/dist/showcase/premium/app-sidebar/showcase.js +1 -0
- package/dist/showcase/premium/badge/showcase.cjs +1 -1
- package/dist/showcase/premium/badge/showcase.js +7 -0
- package/dist/showcase/premium/badge/types.d.ts +1 -1
- package/dist/showcase/premium/breadcrumbs/showcase.cjs +1 -1
- package/dist/showcase/premium/breadcrumbs/showcase.js +12 -1
- package/dist/showcase/premium/button/mock.cjs +1 -4
- package/dist/showcase/premium/button/mock.js +1 -1
- package/dist/showcase/premium/button/showcase.cjs +1 -1
- package/dist/showcase/premium/button/showcase.js +2 -2
- package/dist/showcase/premium/card/showcase.cjs +1 -1
- package/dist/showcase/premium/card/showcase.js +96 -47
- package/dist/showcase/premium/carousel/showcase.cjs +1 -1
- package/dist/showcase/premium/carousel/showcase.js +76 -49
- package/dist/showcase/premium/command-bar/showcase.cjs +1 -1
- package/dist/showcase/premium/command-bar/showcase.js +2 -0
- package/dist/showcase/premium/data-table/mock.cjs +12 -11
- package/dist/showcase/premium/data-table/mock.js +1 -1
- package/dist/showcase/premium/file-upload/showcase.cjs +1 -1
- package/dist/showcase/premium/file-upload/showcase.js +25 -4
- package/dist/showcase/premium/image-upload/showcase.cjs +1 -1
- package/dist/showcase/premium/image-upload/showcase.js +4 -1
- package/dist/showcase/premium/index.cjs +1 -1
- package/dist/showcase/premium/index.js +396 -402
- package/dist/showcase/premium/loading-state/showcase.cjs +1 -1
- package/dist/showcase/premium/loading-state/showcase.js +3 -1
- package/dist/showcase/premium/metric-grid/showcase.cjs +1 -1
- package/dist/showcase/premium/metric-grid/showcase.js +96 -28
- package/dist/showcase/premium/notification-center/showcase.cjs +1 -1
- package/dist/showcase/premium/notification-center/showcase.js +7 -3
- package/dist/showcase/premium/page-state/showcase.cjs +1 -1
- package/dist/showcase/premium/page-state/showcase.js +5 -1
- package/dist/showcase/premium/pagination/showcase.cjs +1 -1
- package/dist/showcase/premium/pagination/showcase.js +15 -2
- package/dist/showcase/premium/popover/showcase.cjs +1 -1
- package/dist/showcase/premium/popover/showcase.js +85 -50
- package/dist/showcase/premium/radio-group/showcase.cjs +1 -1
- package/dist/showcase/premium/radio-group/showcase.js +27 -4
- package/dist/showcase/premium/right-click-menu/showcase.cjs +1 -1
- package/dist/showcase/premium/right-click-menu/showcase.js +56 -43
- package/dist/showcase/premium/segmented-control/showcase.cjs +1 -1
- package/dist/showcase/premium/segmented-control/showcase.js +1 -0
- package/dist/showcase/premium/select/data.cjs +1 -1
- package/dist/showcase/premium/select/data.js +69 -34
- package/dist/showcase/premium/select/mock.cjs +19 -6
- package/dist/showcase/premium/select/mock.js +3 -2
- package/dist/showcase/premium/select/showcase.cjs +1 -1
- package/dist/showcase/premium/select/showcase.js +43 -18
- package/dist/showcase/premium/select/types.d.ts +3 -0
- package/dist/showcase/premium/statistic/showcase.cjs +1 -1
- package/dist/showcase/premium/statistic/showcase.js +57 -25
- package/dist/showcase/premium/switch/showcase.cjs +1 -1
- package/dist/showcase/premium/switch/showcase.js +25 -14
- package/dist/showcase/premium/tabs/showcase.cjs +1 -1
- package/dist/showcase/premium/tabs/showcase.js +171 -48
- package/dist/showcase/premium/textarea/mock.cjs +12 -4
- package/dist/showcase/premium/textarea/mock.js +1 -1
- package/dist/showcase/premium/textarea/showcase.cjs +1 -1
- package/dist/showcase/premium/textarea/showcase.js +8 -3
- package/dist/showcase/premium/toast/showcase.cjs +1 -1
- package/dist/showcase/premium/toast/showcase.js +32 -6
- package/dist/showcase/premium/types.d.ts +1 -1
- package/dist/showcase/registry-quality.cjs +1 -1
- package/dist/showcase/registry-quality.js +1 -0
- package/dist/showcase/render-registry-preview.cjs +1 -1
- package/dist/showcase/render-registry-preview.js +57 -79
- package/dist/showcase/site-data.cjs +1 -1
- package/dist/showcase/site-data.js +60 -21
- package/dist/showcase/tembro-registry.json.cjs +1 -1
- package/dist/showcase/tembro-registry.json.js +34 -20
- package/dist/showcase/types.d.ts +1 -1
- package/package.json +1 -1
- package/packages/cli/dist/index.cjs +31 -31
- package/packages/cli/vendor/src/components/calendar/calendar.tsx +59 -50
- package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +7 -4
- package/packages/cli/vendor/src/components/charts/charts.tsx +109 -66
- package/packages/cli/vendor/src/components/charts/progress-ring.tsx +37 -26
- package/packages/cli/vendor/src/components/data-table/data-table-column-visibility-menu.tsx +41 -22
- package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +8 -6
- package/packages/cli/vendor/src/components/display/carousel.tsx +84 -3
- package/packages/cli/vendor/src/components/display/code-block.tsx +22 -2
- package/packages/cli/vendor/src/components/display/delta-badge.tsx +11 -11
- package/packages/cli/vendor/src/components/display/kanban.tsx +103 -57
- package/packages/cli/vendor/src/components/display/metric-grid.tsx +16 -13
- package/packages/cli/vendor/src/components/display/qr-code.tsx +17 -15
- package/packages/cli/vendor/src/components/display/tag.tsx +39 -21
- package/packages/cli/vendor/src/components/display/tree-view.tsx +221 -84
- package/packages/cli/vendor/src/components/display/trend-card.tsx +6 -40
- package/packages/cli/vendor/src/components/feedback/alert.tsx +3 -1
- package/packages/cli/vendor/src/components/feedback/loading-state.tsx +33 -17
- package/packages/cli/vendor/src/components/feedback/page-state.tsx +8 -7
- package/packages/cli/vendor/src/components/form/form-field-shell.tsx +37 -8
- package/packages/cli/vendor/src/components/form/form-input.tsx +2 -0
- package/packages/cli/vendor/src/components/form/form-select.tsx +2 -0
- package/packages/cli/vendor/src/components/form/form-switch.tsx +9 -3
- package/packages/cli/vendor/src/components/form/form-textarea.tsx +6 -2
- package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +3 -1
- package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +3 -1
- package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +28 -13
- package/packages/cli/vendor/src/components/modern/dual-list-picker.tsx +103 -35
- package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +25 -22
- package/packages/cli/vendor/src/components/modern/tour.tsx +47 -29
- package/packages/cli/vendor/src/components/navigation/command-bar.tsx +6 -0
- package/packages/cli/vendor/src/components/navigation/demo.tsx +0 -1
- package/packages/cli/vendor/src/components/navigation/nav-tabs.tsx +38 -29
- package/packages/cli/vendor/src/components/navigation/page-tabs.tsx +35 -23
- package/packages/cli/vendor/src/components/navigation/pagination.tsx +65 -31
- package/packages/cli/vendor/src/components/notifications/notification-center.tsx +64 -39
- package/packages/cli/vendor/src/components/notifications/toast.tsx +23 -21
- package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +1 -1
- package/packages/cli/vendor/src/components/overlay/confirm-dialog.tsx +45 -22
- package/packages/cli/vendor/src/components/overlay/drawer.tsx +18 -5
- package/packages/cli/vendor/src/components/ui/accordion/index.tsx +4 -0
- package/packages/cli/vendor/src/components/ui/badge/index.tsx +2 -1
- package/packages/cli/vendor/src/components/ui/button/index.tsx +11 -5
- package/packages/cli/vendor/src/components/ui/dialog/index.tsx +2 -1
- package/packages/cli/vendor/src/components/ui/hover-card.tsx +54 -28
- package/packages/cli/vendor/src/components/ui/popover/index.tsx +10 -8
- package/packages/cli/vendor/src/components/ui/radio-group/index.tsx +55 -6
- package/packages/cli/vendor/src/components/ui/right-click-menu/index.tsx +120 -9
- package/packages/cli/vendor/src/components/ui/segmented-control/index.tsx +29 -3
- package/packages/cli/vendor/src/components/ui/select/index.tsx +64 -31
- package/packages/cli/vendor/src/components/ui/switch/index.tsx +71 -6
- package/packages/cli/vendor/src/components/ui/tabs/index.tsx +22 -6
- package/packages/cli/vendor/src/components/ui/textarea/index.tsx +105 -15
- package/packages/cli/vendor/src/components/ui/textarea.tsx +2 -0
- package/packages/cli/vendor/src/components/ui/tooltip/index.tsx +67 -22
- package/packages/cli/vendor/src/components/upload/file-upload.tsx +120 -57
- package/packages/cli/vendor/src/components/upload/image-upload.tsx +71 -24
- package/packages/cli/vendor/src/public-component-surface.ts +3 -0
- package/packages/cli/vendor/src/showcase/component-api-schema.ts +79 -41
- package/packages/cli/vendor/src/showcase/fallback.tsx +4 -19
- package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/app-sidebar/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/badge/showcase.tsx +4 -2
- package/packages/cli/vendor/src/showcase/premium/badge/types.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/breadcrumbs/showcase.tsx +3 -1
- package/packages/cli/vendor/src/showcase/premium/button/mock.ts +2 -5
- package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +2 -2
- package/packages/cli/vendor/src/showcase/premium/card/showcase.tsx +26 -1
- package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +19 -3
- package/packages/cli/vendor/src/showcase/premium/command-bar/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/data-table/mock.ts +26 -25
- package/packages/cli/vendor/src/showcase/premium/file-upload/showcase.tsx +21 -1
- package/packages/cli/vendor/src/showcase/premium/image-upload/showcase.tsx +4 -1
- package/packages/cli/vendor/src/showcase/premium/index.ts +0 -2
- package/packages/cli/vendor/src/showcase/premium/loading-state/showcase.tsx +1 -1
- package/packages/cli/vendor/src/showcase/premium/metric-grid/showcase.tsx +36 -4
- package/packages/cli/vendor/src/showcase/premium/notification-center/showcase.tsx +4 -3
- package/packages/cli/vendor/src/showcase/premium/page-state/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/pagination/showcase.tsx +13 -1
- package/packages/cli/vendor/src/showcase/premium/popover/showcase.tsx +27 -11
- package/packages/cli/vendor/src/showcase/premium/radio-group/showcase.tsx +13 -1
- package/packages/cli/vendor/src/showcase/premium/right-click-menu/showcase.tsx +8 -5
- package/packages/cli/vendor/src/showcase/premium/segmented-control/showcase.tsx +1 -0
- package/packages/cli/vendor/src/showcase/premium/select/data.ts +12 -3
- package/packages/cli/vendor/src/showcase/premium/select/mock.ts +4 -4
- package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +22 -1
- package/packages/cli/vendor/src/showcase/premium/select/types.ts +3 -0
- package/packages/cli/vendor/src/showcase/premium/statistic/showcase.tsx +10 -1
- package/packages/cli/vendor/src/showcase/premium/switch/showcase.tsx +15 -6
- package/packages/cli/vendor/src/showcase/premium/tabs/showcase.tsx +48 -1
- package/packages/cli/vendor/src/showcase/premium/textarea/mock.ts +12 -4
- package/packages/cli/vendor/src/showcase/premium/textarea/showcase.tsx +5 -0
- package/packages/cli/vendor/src/showcase/premium/toast/showcase.tsx +17 -1
- package/packages/cli/vendor/src/showcase/premium/types.ts +1 -1
- package/packages/cli/vendor/src/showcase/registry-quality.ts +3 -2
- package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +0 -15
- package/packages/cli/vendor/src/showcase/site-data.tsx +21 -15
- package/packages/cli/vendor/src/showcase/tembro-registry.json +42 -20
- package/packages/cli/vendor/src/showcase/types.ts +1 -1
- package/registry.json +18 -6
|
@@ -1,39 +1,50 @@
|
|
|
1
1
|
import { cn as e } from "../../lib/utils.js";
|
|
2
2
|
import { Badge as t } from "../ui/badge/index.js";
|
|
3
|
+
import { Tabs as n, TabsList as r, TabsTrigger as i } from "../ui/tabs/index.js";
|
|
3
4
|
import "react";
|
|
4
|
-
import { jsx as
|
|
5
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
6
|
//#region src/components/navigation/page-tabs.tsx
|
|
6
|
-
function
|
|
7
|
-
let
|
|
8
|
-
return /* @__PURE__ */ n
|
|
7
|
+
function s({ value: s, items: c, onValueChange: l, variant: u = "underline", size: d = "default", className: f, ...p }) {
|
|
8
|
+
let m = c.filter((e) => !e.hidden);
|
|
9
|
+
return /* @__PURE__ */ a(n, {
|
|
10
|
+
value: s,
|
|
11
|
+
onValueChange: (e) => {
|
|
12
|
+
let t = m.find((t) => t.value === e);
|
|
13
|
+
t && l?.(t.value, t);
|
|
14
|
+
},
|
|
9
15
|
"data-slot": "page-tabs",
|
|
10
|
-
"data-variant":
|
|
11
|
-
className: e("
|
|
12
|
-
...
|
|
13
|
-
children:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
16
|
+
"data-variant": u,
|
|
17
|
+
className: e("min-w-0", f),
|
|
18
|
+
...p,
|
|
19
|
+
children: /* @__PURE__ */ a(r, {
|
|
20
|
+
"data-slot": "page-tabs-list",
|
|
21
|
+
variant: u === "underline" ? "underline" : "pills",
|
|
22
|
+
overflow: "scroll",
|
|
23
|
+
className: e("w-full", u === "cards" && "gap-2 border-0 bg-transparent p-0 shadow-none"),
|
|
24
|
+
children: m.map((n) => {
|
|
25
|
+
let r = n.value === s;
|
|
26
|
+
return /* @__PURE__ */ o(i, {
|
|
27
|
+
disabled: n.disabled,
|
|
28
|
+
value: n.value,
|
|
29
|
+
"data-slot": "page-tab",
|
|
30
|
+
"data-active": r || void 0,
|
|
31
|
+
className: e("min-w-0 px-3 disabled:pointer-events-none disabled:opacity-50", d === "sm" ? "h-8" : "h-10", u === "underline" && "px-1", u === "cards" && "rounded-[var(--radius-2xl)] border border-border/75 bg-card/96 text-muted-foreground shadow-sm ring-1 ring-foreground/4 hover:border-primary/28 hover:text-foreground", u === "cards" && r && "border-primary/50 bg-primary/7 text-foreground"),
|
|
32
|
+
children: [
|
|
33
|
+
n.icon,
|
|
34
|
+
/* @__PURE__ */ a("span", {
|
|
35
|
+
className: "truncate",
|
|
36
|
+
children: n.label
|
|
37
|
+
}),
|
|
38
|
+
n.badge !== void 0 && /* @__PURE__ */ a(t, {
|
|
39
|
+
variant: r && u === "pills" ? "secondary" : "outline",
|
|
40
|
+
className: "rounded-full",
|
|
41
|
+
children: n.badge
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
}, n.value);
|
|
45
|
+
})
|
|
35
46
|
})
|
|
36
47
|
});
|
|
37
48
|
}
|
|
38
49
|
//#endregion
|
|
39
|
-
export {
|
|
50
|
+
export { s as PageTabs };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");function o(e,t){let n=Math.max(t-e+1,0);return Array.from({length:n},(t,n)=>n+e)}function s(e,t,n=1){if(t<=n*2+5)return o(1,t);let r=Math.max(e-n,1),i=Math.min(e+n,t),a=r>2,s=i<t-1;return!a&&s?[...o(1,n*2+3),`ellipsis`,t]:a&&!s?[1,`ellipsis`,...o(t-(n*2+3)+1,t)]:[1,`ellipsis`,...o(r,i),`ellipsis`,t]}function c({className:e,page:r,pageCount:o,onPageChange:c,siblingCount:l=1,showEdges:u=!0,disabled:d=!1,labels:f,...
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");function o(e,t){let n=Math.max(t-e+1,0);return Array.from({length:n},(t,n)=>n+e)}function s(e,t,n=1){if(t<=n*2+5)return o(1,t);let r=Math.max(e-n,1),i=Math.min(e+n,t),a=r>2,s=i<t-1;return!a&&s?[...o(1,n*2+3),`ellipsis`,t]:a&&!s?[1,`ellipsis`,...o(t-(n*2+3)+1,t)]:[1,`ellipsis`,...o(r,i),`ellipsis`,t]}function c({className:e,page:r,pageCount:o,onPageChange:c,siblingCount:l=1,showEdges:u=!0,disabled:d=!1,labels:f,compact:p=!1,totalCount:m,pageSize:h,pageSizeOptions:g,onPageSizeChange:_,showSummary:v=!1,...y}){let b=Math.max(o,1),x=Math.min(Math.max(r,1),b),S=s(x,b,l),C=e=>{let t=Math.min(Math.max(e,1),b);t!==x&&c(t)};return(0,a.jsxs)(`nav`,{"data-slot":`pagination`,"aria-label":`Pagination`,className:t.cn(`flex flex-wrap items-center justify-center gap-1 rounded-full border border-border/70 bg-background/76 p-1 shadow-none backdrop-blur`,e),...y,children:[v&&m!==void 0&&h?(0,a.jsxs)(`div`,{className:`px-2 text-xs text-muted-foreground`,children:[Math.min((x-1)*h+1,m),`-`,Math.min(x*h,m),` of `,m]}):null,u&&(0,a.jsx)(n.Button,{type:`button`,variant:`outline`,size:p?`icon-xs`:`icon-sm`,disabled:d||x<=1,"aria-label":f?.first??`First page`,onClick:()=>C(1),children:(0,a.jsx)(i.ChevronFirstIcon,{})}),(0,a.jsx)(n.Button,{type:`button`,variant:`outline`,size:p?`icon-xs`:`icon-sm`,disabled:d||x<=1,"aria-label":f?.previous??`Previous page`,onClick:()=>C(x-1),children:(0,a.jsx)(i.ChevronLeftIcon,{})}),S.map((e,r)=>e===`ellipsis`?(0,a.jsxs)(`span`,{"data-slot":`pagination-ellipsis`,className:`flex size-8 items-center justify-center text-muted-foreground`,children:[(0,a.jsx)(i.MoreHorizontalIcon,{className:`size-4`}),(0,a.jsx)(`span`,{className:`sr-only`,children:`More pages`})]},`ellipsis-${r}`):(0,a.jsx)(n.Button,{type:`button`,variant:e===x?`default`:`outline`,size:p?`icon-xs`:`icon-sm`,disabled:d,"aria-current":e===x?`page`:void 0,"aria-label":f?.page?.(e)??`Page ${e}`,onClick:()=>C(e),className:t.cn(e!==x&&`border-border/70 bg-background/80 shadow-none`),children:e},e)),(0,a.jsx)(n.Button,{type:`button`,variant:`outline`,size:p?`icon-xs`:`icon-sm`,disabled:d||x>=b,"aria-label":f?.next??`Next page`,onClick:()=>C(x+1),children:(0,a.jsx)(i.ChevronRightIcon,{})}),u&&(0,a.jsx)(n.Button,{type:`button`,variant:`outline`,size:p?`icon-xs`:`icon-sm`,disabled:d||x>=b,"aria-label":f?.last??`Last page`,onClick:()=>C(b),children:(0,a.jsx)(i.ChevronLastIcon,{})}),g&&h&&_?(0,a.jsxs)(`label`,{className:`ml-1 inline-flex items-center gap-2 rounded-full border border-border/70 bg-background/90 px-3 py-1 text-xs text-muted-foreground`,children:[(0,a.jsx)(`span`,{children:`Rows`}),(0,a.jsx)(`select`,{className:`bg-transparent text-foreground outline-none`,value:h,onChange:e=>_(Number(e.target.value)),disabled:d,children:g.map(e=>(0,a.jsx)(`option`,{value:e,children:e},e))})]}):null]})}exports.Pagination=c,exports.getPaginationItems=s;
|
|
@@ -15,7 +15,13 @@ export type PaginationProps = Omit<React.ComponentProps<"nav">, "onChange"> & {
|
|
|
15
15
|
showEdges?: boolean;
|
|
16
16
|
disabled?: boolean;
|
|
17
17
|
labels?: PaginationLabels;
|
|
18
|
+
compact?: boolean;
|
|
19
|
+
totalCount?: number;
|
|
20
|
+
pageSize?: number;
|
|
21
|
+
pageSizeOptions?: number[];
|
|
22
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
23
|
+
showSummary?: boolean;
|
|
18
24
|
};
|
|
19
25
|
declare function getPaginationItems(page: number, pageCount: number, siblingCount?: number): PaginationItem[];
|
|
20
|
-
declare function Pagination({ className, page, pageCount, onPageChange, siblingCount, showEdges, disabled, labels, ...props }: PaginationProps): React.JSX.Element;
|
|
26
|
+
declare function Pagination({ className, page, pageCount, onPageChange, siblingCount, showEdges, disabled, labels, compact, totalCount, pageSize, pageSizeOptions, onPageSizeChange, showSummary, ...props }: PaginationProps): React.JSX.Element;
|
|
21
27
|
export { Pagination, getPaginationItems };
|
|
@@ -27,36 +27,46 @@ function u(e, t, n = 1) {
|
|
|
27
27
|
t
|
|
28
28
|
];
|
|
29
29
|
}
|
|
30
|
-
function d({ className: l, page: d, pageCount: f, onPageChange: p, siblingCount: m = 1, showEdges: h = !0, disabled: g = !1, labels: _,
|
|
31
|
-
let
|
|
32
|
-
let t = Math.min(Math.max(e, 1),
|
|
33
|
-
t !==
|
|
30
|
+
function d({ className: l, page: d, pageCount: f, onPageChange: p, siblingCount: m = 1, showEdges: h = !0, disabled: g = !1, labels: _, compact: v = !1, totalCount: y, pageSize: b, pageSizeOptions: x, onPageSizeChange: S, showSummary: C = !1, ...w }) {
|
|
31
|
+
let T = Math.max(f, 1), E = Math.min(Math.max(d, 1), T), D = u(E, T, m), O = (e) => {
|
|
32
|
+
let t = Math.min(Math.max(e, 1), T);
|
|
33
|
+
t !== E && p(t);
|
|
34
34
|
};
|
|
35
35
|
return /* @__PURE__ */ c("nav", {
|
|
36
36
|
"data-slot": "pagination",
|
|
37
37
|
"aria-label": "Pagination",
|
|
38
|
-
className: e("flex items-center justify-center gap-1 rounded-full border border-border/70 bg-background/76 p-1 shadow-none backdrop-blur", l),
|
|
39
|
-
...
|
|
38
|
+
className: e("flex flex-wrap items-center justify-center gap-1 rounded-full border border-border/70 bg-background/76 p-1 shadow-none backdrop-blur", l),
|
|
39
|
+
...w,
|
|
40
40
|
children: [
|
|
41
|
+
C && y !== void 0 && b ? /* @__PURE__ */ c("div", {
|
|
42
|
+
className: "px-2 text-xs text-muted-foreground",
|
|
43
|
+
children: [
|
|
44
|
+
Math.min((E - 1) * b + 1, y),
|
|
45
|
+
"-",
|
|
46
|
+
Math.min(E * b, y),
|
|
47
|
+
" of ",
|
|
48
|
+
y
|
|
49
|
+
]
|
|
50
|
+
}) : null,
|
|
41
51
|
h && /* @__PURE__ */ s(t, {
|
|
42
52
|
type: "button",
|
|
43
53
|
variant: "outline",
|
|
44
|
-
size: "icon-sm",
|
|
45
|
-
disabled: g ||
|
|
54
|
+
size: v ? "icon-xs" : "icon-sm",
|
|
55
|
+
disabled: g || E <= 1,
|
|
46
56
|
"aria-label": _?.first ?? "First page",
|
|
47
|
-
onClick: () =>
|
|
57
|
+
onClick: () => O(1),
|
|
48
58
|
children: /* @__PURE__ */ s(n, {})
|
|
49
59
|
}),
|
|
50
60
|
/* @__PURE__ */ s(t, {
|
|
51
61
|
type: "button",
|
|
52
62
|
variant: "outline",
|
|
53
|
-
size: "icon-sm",
|
|
54
|
-
disabled: g ||
|
|
63
|
+
size: v ? "icon-xs" : "icon-sm",
|
|
64
|
+
disabled: g || E <= 1,
|
|
55
65
|
"aria-label": _?.previous ?? "Previous page",
|
|
56
|
-
onClick: () =>
|
|
66
|
+
onClick: () => O(E - 1),
|
|
57
67
|
children: /* @__PURE__ */ s(i, {})
|
|
58
68
|
}),
|
|
59
|
-
|
|
69
|
+
D.map((n, r) => n === "ellipsis" ? /* @__PURE__ */ c("span", {
|
|
60
70
|
"data-slot": "pagination-ellipsis",
|
|
61
71
|
className: "flex size-8 items-center justify-center text-muted-foreground",
|
|
62
72
|
children: [/* @__PURE__ */ s(o, { className: "size-4" }), /* @__PURE__ */ s("span", {
|
|
@@ -65,33 +75,46 @@ function d({ className: l, page: d, pageCount: f, onPageChange: p, siblingCount:
|
|
|
65
75
|
})]
|
|
66
76
|
}, `ellipsis-${r}`) : /* @__PURE__ */ s(t, {
|
|
67
77
|
type: "button",
|
|
68
|
-
variant: n ===
|
|
69
|
-
size: "icon-sm",
|
|
78
|
+
variant: n === E ? "default" : "outline",
|
|
79
|
+
size: v ? "icon-xs" : "icon-sm",
|
|
70
80
|
disabled: g,
|
|
71
|
-
"aria-current": n ===
|
|
81
|
+
"aria-current": n === E ? "page" : void 0,
|
|
72
82
|
"aria-label": _?.page?.(n) ?? `Page ${n}`,
|
|
73
|
-
onClick: () =>
|
|
74
|
-
className: e(n !==
|
|
83
|
+
onClick: () => O(n),
|
|
84
|
+
className: e(n !== E && "border-border/70 bg-background/80 shadow-none"),
|
|
75
85
|
children: n
|
|
76
86
|
}, n)),
|
|
77
87
|
/* @__PURE__ */ s(t, {
|
|
78
88
|
type: "button",
|
|
79
89
|
variant: "outline",
|
|
80
|
-
size: "icon-sm",
|
|
81
|
-
disabled: g ||
|
|
90
|
+
size: v ? "icon-xs" : "icon-sm",
|
|
91
|
+
disabled: g || E >= T,
|
|
82
92
|
"aria-label": _?.next ?? "Next page",
|
|
83
|
-
onClick: () =>
|
|
93
|
+
onClick: () => O(E + 1),
|
|
84
94
|
children: /* @__PURE__ */ s(a, {})
|
|
85
95
|
}),
|
|
86
96
|
h && /* @__PURE__ */ s(t, {
|
|
87
97
|
type: "button",
|
|
88
98
|
variant: "outline",
|
|
89
|
-
size: "icon-sm",
|
|
90
|
-
disabled: g ||
|
|
99
|
+
size: v ? "icon-xs" : "icon-sm",
|
|
100
|
+
disabled: g || E >= T,
|
|
91
101
|
"aria-label": _?.last ?? "Last page",
|
|
92
|
-
onClick: () =>
|
|
102
|
+
onClick: () => O(T),
|
|
93
103
|
children: /* @__PURE__ */ s(r, {})
|
|
94
|
-
})
|
|
104
|
+
}),
|
|
105
|
+
x && b && S ? /* @__PURE__ */ c("label", {
|
|
106
|
+
className: "ml-1 inline-flex items-center gap-2 rounded-full border border-border/70 bg-background/90 px-3 py-1 text-xs text-muted-foreground",
|
|
107
|
+
children: [/* @__PURE__ */ s("span", { children: "Rows" }), /* @__PURE__ */ s("select", {
|
|
108
|
+
className: "bg-transparent text-foreground outline-none",
|
|
109
|
+
value: b,
|
|
110
|
+
onChange: (e) => S(Number(e.target.value)),
|
|
111
|
+
disabled: g,
|
|
112
|
+
children: x.map((e) => /* @__PURE__ */ s("option", {
|
|
113
|
+
value: e,
|
|
114
|
+
children: e
|
|
115
|
+
}, e))
|
|
116
|
+
})]
|
|
117
|
+
}) : null
|
|
95
118
|
]
|
|
96
119
|
});
|
|
97
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/popover/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({notifications:e,onMarkAllRead:i,
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/popover/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({notifications:e,onMarkAllRead:i,onClearAll:s,onNotificationClick:c,emptyLabel:l=`No new notifications`,title:u=`Notifications`,className:d,...f}){let p=e.filter(e=>!e.read).length,m=e.reduce((e,t)=>{let n=String(t.group??`Recent`);return e[n]=[...e[n]??[],t],e},{});return(0,o.jsx)(`div`,{"data-slot":`notification-center`,className:d,...f,children:(0,o.jsxs)(r.Popover,{children:[(0,o.jsxs)(n.Button,{render:(0,o.jsx)(r.PopoverTrigger,{}),variant:`ghost`,size:`icon`,className:`relative rounded-full border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-control-bg)] text-foreground shadow-sm hover:bg-[color:color-mix(in_srgb,var(--aui-control-bg)_82%,white_18%)]`,children:[(0,o.jsx)(a.BellIcon,{className:`size-5`}),p>0&&(0,o.jsxs)(`span`,{className:`absolute -right-1 -top-1 inline-flex min-w-5 items-center justify-center rounded-full bg-[color:var(--aui-brand-strong)] px-1.5 py-0.5 text-[10px] font-bold leading-none text-white shadow-[0_8px_20px_rgba(16,185,129,0.35)]`,children:[p,(0,o.jsxs)(`span`,{className:`sr-only`,children:[p,` unread notifications`]})]})]}),(0,o.jsxs)(r.PopoverContent,{className:`w-[24rem] overflow-hidden rounded-3xl border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-page-bg)] p-0 shadow-[0_24px_60px_rgba(15,23,42,0.18)]`,align:`end`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between border-b border-[color:var(--aui-surface-border)] bg-[color:var(--aui-control-bg)] px-5 py-4`,children:[(0,o.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,o.jsx)(`h4`,{className:`font-semibold tracking-tight text-foreground`,children:u}),(0,o.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:p>0?`${p} unread update${p>1?`s`:``}`:`You're all caught up`})]}),(0,o.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p>0&&i?(0,o.jsx)(n.Button,{variant:`ghost`,size:`sm`,className:`h-8 rounded-full border border-[color:var(--aui-surface-border)] px-3 text-xs font-semibold text-muted-foreground hover:bg-[color:var(--aui-page-bg)] hover:text-foreground`,onClick:i,children:`Mark all read`}):null,e.length>0&&s?(0,o.jsx)(n.Button,{variant:`ghost`,size:`sm`,className:`h-8 rounded-full border border-[color:var(--aui-surface-border)] px-3 text-xs font-semibold text-muted-foreground hover:bg-[color:var(--aui-page-bg)] hover:text-foreground`,onClick:s,children:`Clear all`}):null]})]}),(0,o.jsx)(`div`,{className:`max-h-[400px] overflow-y-auto bg-[color:var(--aui-page-bg)] p-2`,children:e.length===0?(0,o.jsx)(`div`,{className:`rounded-2xl border border-dashed border-[color:var(--aui-surface-border)] px-6 py-10 text-center text-sm text-muted-foreground`,children:l}):(0,o.jsx)(`div`,{className:`flex flex-col gap-3`,children:Object.entries(m).map(([e,n])=>(0,o.jsxs)(`div`,{className:`grid gap-2`,children:[(0,o.jsx)(`div`,{className:`px-2 pt-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e}),n.map(e=>(0,o.jsxs)(`button`,{className:t.cn(`flex flex-col gap-1 rounded-2xl border border-transparent px-4 py-3 text-left transition hover:border-[color:var(--aui-surface-border)] hover:bg-[color:var(--aui-control-bg)]`,!e.read&&`border-[color:color-mix(in_srgb,var(--aui-brand-strong)_16%,var(--aui-surface-border))] bg-[color:color-mix(in_srgb,var(--aui-brand-strong)_8%,var(--aui-control-bg))]`),onClick:()=>c?.(e),children:[(0,o.jsxs)(`div`,{className:`flex w-full items-start justify-between gap-2`,children:[(0,o.jsx)(`span`,{className:`text-sm font-semibold leading-tight text-foreground`,children:e.title}),!e.read&&(0,o.jsx)(`span`,{className:`mt-1 flex size-2 shrink-0 rounded-full bg-[color:var(--aui-brand-strong)] shadow-[0_0_0_4px_color-mix(in_srgb,var(--aui-brand-strong)_14%,transparent)]`})]}),e.description&&(0,o.jsx)(`span`,{className:`line-clamp-2 text-xs leading-5 text-muted-foreground`,children:e.description}),e.time&&(0,o.jsx)(`span`,{className:`mt-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-muted-foreground/80`,children:e.time})]},e.id))]},e))})})]})]})})}exports.NotificationCenter=s;
|
|
@@ -5,13 +5,15 @@ export type NotificationItem = {
|
|
|
5
5
|
description?: React.ReactNode;
|
|
6
6
|
time?: React.ReactNode;
|
|
7
7
|
read?: boolean;
|
|
8
|
+
group?: React.ReactNode;
|
|
8
9
|
};
|
|
9
10
|
export type NotificationCenterProps = React.ComponentProps<"div"> & {
|
|
10
11
|
notifications: NotificationItem[];
|
|
11
12
|
onMarkAllRead?: () => void;
|
|
13
|
+
onClearAll?: () => void;
|
|
12
14
|
onNotificationClick?: (notification: NotificationItem) => void;
|
|
13
15
|
emptyLabel?: React.ReactNode;
|
|
14
16
|
title?: React.ReactNode;
|
|
15
17
|
};
|
|
16
|
-
declare function NotificationCenter({ notifications, onMarkAllRead, onNotificationClick, emptyLabel, title, className, ...props }: NotificationCenterProps): React.JSX.Element;
|
|
18
|
+
declare function NotificationCenter({ notifications, onMarkAllRead, onClearAll, onNotificationClick, emptyLabel, title, className, ...props }: NotificationCenterProps): React.JSX.Element;
|
|
17
19
|
export { NotificationCenter };
|
|
@@ -5,22 +5,25 @@ import "react";
|
|
|
5
5
|
import { BellIcon as a } from "lucide-react";
|
|
6
6
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/notifications/notification-center.tsx
|
|
8
|
-
function c({ notifications: c, onMarkAllRead: l,
|
|
9
|
-
let
|
|
8
|
+
function c({ notifications: c, onMarkAllRead: l, onClearAll: u, onNotificationClick: d, emptyLabel: f = "No new notifications", title: p = "Notifications", className: m, ...h }) {
|
|
9
|
+
let g = c.filter((e) => !e.read).length, _ = c.reduce((e, t) => {
|
|
10
|
+
let n = String(t.group ?? "Recent");
|
|
11
|
+
return e[n] = [...e[n] ?? [], t], e;
|
|
12
|
+
}, {});
|
|
10
13
|
return /* @__PURE__ */ o("div", {
|
|
11
14
|
"data-slot": "notification-center",
|
|
12
|
-
className:
|
|
13
|
-
...
|
|
15
|
+
className: m,
|
|
16
|
+
...h,
|
|
14
17
|
children: /* @__PURE__ */ s(n, { children: [/* @__PURE__ */ s(t, {
|
|
15
18
|
render: /* @__PURE__ */ o(i, {}),
|
|
16
19
|
variant: "ghost",
|
|
17
20
|
size: "icon",
|
|
18
21
|
className: "relative rounded-full border border-[color:var(--aui-surface-border)] bg-[color:var(--aui-control-bg)] text-foreground shadow-sm hover:bg-[color:color-mix(in_srgb,var(--aui-control-bg)_82%,white_18%)]",
|
|
19
|
-
children: [/* @__PURE__ */ o(a, { className: "size-5" }),
|
|
22
|
+
children: [/* @__PURE__ */ o(a, { className: "size-5" }), g > 0 && /* @__PURE__ */ s("span", {
|
|
20
23
|
className: "absolute -right-1 -top-1 inline-flex min-w-5 items-center justify-center rounded-full bg-[color:var(--aui-brand-strong)] px-1.5 py-0.5 text-[10px] font-bold leading-none text-white shadow-[0_8px_20px_rgba(16,185,129,0.35)]",
|
|
21
|
-
children: [
|
|
24
|
+
children: [g, /* @__PURE__ */ s("span", {
|
|
22
25
|
className: "sr-only",
|
|
23
|
-
children: [
|
|
26
|
+
children: [g, " unread notifications"]
|
|
24
27
|
})]
|
|
25
28
|
})]
|
|
26
29
|
}), /* @__PURE__ */ s(r, {
|
|
@@ -32,46 +35,61 @@ function c({ notifications: c, onMarkAllRead: l, onNotificationClick: u, emptyLa
|
|
|
32
35
|
className: "grid gap-0.5",
|
|
33
36
|
children: [/* @__PURE__ */ o("h4", {
|
|
34
37
|
className: "font-semibold tracking-tight text-foreground",
|
|
35
|
-
children:
|
|
38
|
+
children: p
|
|
36
39
|
}), /* @__PURE__ */ o("span", {
|
|
37
40
|
className: "text-xs text-muted-foreground",
|
|
38
|
-
children:
|
|
41
|
+
children: g > 0 ? `${g} unread update${g > 1 ? "s" : ""}` : "You're all caught up"
|
|
39
42
|
})]
|
|
40
|
-
}),
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
}), /* @__PURE__ */ s("div", {
|
|
44
|
+
className: "flex items-center gap-2",
|
|
45
|
+
children: [g > 0 && l ? /* @__PURE__ */ o(t, {
|
|
46
|
+
variant: "ghost",
|
|
47
|
+
size: "sm",
|
|
48
|
+
className: "h-8 rounded-full border border-[color:var(--aui-surface-border)] px-3 text-xs font-semibold text-muted-foreground hover:bg-[color:var(--aui-page-bg)] hover:text-foreground",
|
|
49
|
+
onClick: l,
|
|
50
|
+
children: "Mark all read"
|
|
51
|
+
}) : null, c.length > 0 && u ? /* @__PURE__ */ o(t, {
|
|
52
|
+
variant: "ghost",
|
|
53
|
+
size: "sm",
|
|
54
|
+
className: "h-8 rounded-full border border-[color:var(--aui-surface-border)] px-3 text-xs font-semibold text-muted-foreground hover:bg-[color:var(--aui-page-bg)] hover:text-foreground",
|
|
55
|
+
onClick: u,
|
|
56
|
+
children: "Clear all"
|
|
57
|
+
}) : null]
|
|
46
58
|
})]
|
|
47
59
|
}), /* @__PURE__ */ o("div", {
|
|
48
60
|
className: "max-h-[400px] overflow-y-auto bg-[color:var(--aui-page-bg)] p-2",
|
|
49
61
|
children: c.length === 0 ? /* @__PURE__ */ o("div", {
|
|
50
62
|
className: "rounded-2xl border border-dashed border-[color:var(--aui-surface-border)] px-6 py-10 text-center text-sm text-muted-foreground",
|
|
51
|
-
children:
|
|
63
|
+
children: f
|
|
52
64
|
}) : /* @__PURE__ */ o("div", {
|
|
53
|
-
className: "flex flex-col",
|
|
54
|
-
children:
|
|
55
|
-
className:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
className: "flex flex-col gap-3",
|
|
66
|
+
children: Object.entries(_).map(([t, n]) => /* @__PURE__ */ s("div", {
|
|
67
|
+
className: "grid gap-2",
|
|
68
|
+
children: [/* @__PURE__ */ o("div", {
|
|
69
|
+
className: "px-2 pt-1 text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground",
|
|
70
|
+
children: t
|
|
71
|
+
}), n.map((t) => /* @__PURE__ */ s("button", {
|
|
72
|
+
className: e("flex flex-col gap-1 rounded-2xl border border-transparent px-4 py-3 text-left transition hover:border-[color:var(--aui-surface-border)] hover:bg-[color:var(--aui-control-bg)]", !t.read && "border-[color:color-mix(in_srgb,var(--aui-brand-strong)_16%,var(--aui-surface-border))] bg-[color:color-mix(in_srgb,var(--aui-brand-strong)_8%,var(--aui-control-bg))]"),
|
|
73
|
+
onClick: () => d?.(t),
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ s("div", {
|
|
76
|
+
className: "flex w-full items-start justify-between gap-2",
|
|
77
|
+
children: [/* @__PURE__ */ o("span", {
|
|
78
|
+
className: "text-sm font-semibold leading-tight text-foreground",
|
|
79
|
+
children: t.title
|
|
80
|
+
}), !t.read && /* @__PURE__ */ o("span", { className: "mt-1 flex size-2 shrink-0 rounded-full bg-[color:var(--aui-brand-strong)] shadow-[0_0_0_4px_color-mix(in_srgb,var(--aui-brand-strong)_14%,transparent)]" })]
|
|
81
|
+
}),
|
|
82
|
+
t.description && /* @__PURE__ */ o("span", {
|
|
83
|
+
className: "line-clamp-2 text-xs leading-5 text-muted-foreground",
|
|
84
|
+
children: t.description
|
|
85
|
+
}),
|
|
86
|
+
t.time && /* @__PURE__ */ o("span", {
|
|
87
|
+
className: "mt-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-muted-foreground/80",
|
|
88
|
+
children: t.time
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
}, t.id))]
|
|
92
|
+
}, t))
|
|
75
93
|
})
|
|
76
94
|
})]
|
|
77
95
|
})] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");var o=r.createContext(null),s={default:`border-border bg-popover text-popover-foreground`,success:`border-emerald-500/20 bg-emerald-500/10 text-emerald-950 dark:text-emerald-100`,info:`border-blue-500/20 bg-blue-500/10 text-blue-950 dark:text-blue-100`,warning:`border-amber-500/20 bg-amber-500/10 text-amber-950 dark:text-amber-100`,danger:`border-destructive/20 bg-destructive/10 text-destructive`,loading:`border-border bg-popover text-popover-foreground`},c={default:(0,a.jsx)(i.InfoIcon,{className:`size-4`}),success:(0,a.jsx)(i.CheckCircle2Icon,{className:`size-4`}),info:(0,a.jsx)(i.InfoIcon,{className:`size-4`}),warning:(0,a.jsx)(i.TriangleAlertIcon,{className:`size-4`}),danger:(0,a.jsx)(i.AlertCircleIcon,{className:`size-4`}),loading:(0,a.jsx)(i.Loader2Icon,{className:`size-4 animate-spin`})};function l(){return`toast-${Date.now()}-${Math.random().toString(16).slice(2)}`}function u(e){return typeof e==`object`&&!!e&&!r.isValidElement(e)&&!Array.isArray(e)}function d(e,t){return u(e)?{...e,tone:e.tone??t}:{title:e,tone:t}}function f(e,t){return typeof e==`function`?e(t):e}var p={"top-right":`right-4 top-4`,"top-left":`left-4 top-4`,"bottom-right":`bottom-4 right-4`,"bottom-left":`bottom-4 left-4`,"top-center":`left-1/2 top-4 -translate-x-1/2`,"bottom-center":`bottom-4 left-1/2 -translate-x-1/2`};function m({children:e,defaultDuration:n=4e3,maxToasts:i=5,pauseOnHover:s=!0,position:c=`top-right`}){let[u,m]=r.useState([]),g=r.useCallback(e=>{m(t=>t.filter(t=>t.id!==e))},[]),_=r.useCallback(e=>{let t=e.id??l(),r={tone:`default`,duration:n,dismissible:!0,...e,id:t};return m(e=>[r,...e.filter(e=>e.id!==t)].slice(0,i)),t},[n,i]),v=r.useCallback((e,t)=>{m(n=>n.map(n=>n.id===e?{...n,...t}:n))},[]),y=r.useCallback(()=>{m([])},[]),b=r.useCallback(e=>_(d(e,`success`)),[_]),x=r.useCallback(e=>_(d(e,`info`)),[_]),S=r.useCallback(e=>_(d(e,`warning`)),[_]),C=r.useCallback(e=>_(d(e,`danger`)),[_]),w=r.useCallback(e=>_({duration:0,...d(e,`loading`)}),[_]),T=r.useCallback(async(e,t)=>{let r=_({duration:0,dismissible:!1,...d(t.loading,`loading`)});try{let i=await e;return v(r,{duration:n,dismissible:!0,...d(f(t.success,i),`success`)}),i}catch(e){throw v(r,{duration:n,dismissible:!0,...d(f(t.error,e),`danger`)}),e}},[_,n,v]),E=r.useMemo(()=>({toasts:u,addToast:_,updateToast:v,dismissToast:g,clearToasts:y,success:b,info:x,warning:S,error:C,loading:w,promise:T}),[_,y,g,C,x,w,T,b,u,v,S]);return(0,a.jsxs)(o.Provider,{value:E,children:[e,(0,a.jsx)(`div`,{"data-slot":`toast-viewport`,className:t.cn(`fixed z-[100] flex w-[min(100%-2rem,24rem)] flex-col gap-2`,p[c]),children:u.map(e=>(0,a.jsx)(h,{toast:e,pauseOnHover:s,onDismiss:g},e.id))})]})}function h({toast:e,pauseOnHover:o,onDismiss:l}){let u=e.tone??`default`,[d,f]=r.useState(!1);return r.useEffect(()=>{if(e.duration===1/0||e.duration===0||o&&d)return;let t=window.setTimeout(()=>l(e.id),e.duration??4e3);return()=>window.clearTimeout(t)},[d,l,o,e.duration,e.id]),(0,a.jsxs)(`div`,{"data-slot":`toast`,"data-tone":u,className:t.cn(`flex gap-3 rounded-lg border p-3 shadow-lg backdrop-blur`,s[u]),role:`status`,"aria-live":`polite`,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),children:[(0,a.jsx)(`div`,{className:`mt-0.5 shrink-0`,children:c[u]}),(0,a.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[e.title&&(0,a.jsx)(`div`,{className:`text-sm font-medium leading-none`,children:e.title}),e.description&&(0,a.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e.description}),e.action&&(0,a.jsx)(`div`,{className:`pt-1`,children:e.action})]}),e.dismissible!==!1&&(0,a.jsxs)(n.Button,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:()=>l(e.id),children:[(0,a.jsx)(i.XIcon,{}),(0,a.jsx)(`span`,{className:`sr-only`,children:`Dismiss`})]})]})}function g(){let e=r.useContext(o);if(!e)throw Error(`useToast must be used inside ToastProvider`);return e}exports.ToastProvider=m,exports.useToast=g;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");var o=r.createContext(null),s={default:`border-border bg-popover text-popover-foreground`,success:`border-emerald-500/20 bg-emerald-500/10 text-emerald-950 dark:text-emerald-100`,info:`border-blue-500/20 bg-blue-500/10 text-blue-950 dark:text-blue-100`,warning:`border-amber-500/20 bg-amber-500/10 text-amber-950 dark:text-amber-100`,danger:`border-destructive/20 bg-destructive/10 text-destructive`,loading:`border-border bg-popover text-popover-foreground`},c={default:(0,a.jsx)(i.InfoIcon,{className:`size-4`}),success:(0,a.jsx)(i.CheckCircle2Icon,{className:`size-4`}),info:(0,a.jsx)(i.InfoIcon,{className:`size-4`}),warning:(0,a.jsx)(i.TriangleAlertIcon,{className:`size-4`}),danger:(0,a.jsx)(i.AlertCircleIcon,{className:`size-4`}),loading:(0,a.jsx)(i.Loader2Icon,{className:`size-4 animate-spin`})};function l(){return`toast-${Date.now()}-${Math.random().toString(16).slice(2)}`}function u(e){return typeof e==`object`&&!!e&&!r.isValidElement(e)&&!Array.isArray(e)}function d(e,t){return u(e)?{...e,tone:e.tone??t}:{title:e,tone:t}}function f(e,t){return typeof e==`function`?e(t):e}var p={"top-right":`right-4 top-4`,"top-left":`left-4 top-4`,"bottom-right":`bottom-4 right-4`,"bottom-left":`bottom-4 left-4`,"top-center":`left-1/2 top-4 -translate-x-1/2`,"bottom-center":`bottom-4 left-1/2 -translate-x-1/2`};function m({children:e,defaultDuration:n=4e3,maxToasts:i=5,pauseOnHover:s=!0,position:c=`top-right`}){let[u,m]=r.useState([]),g=r.useCallback(e=>{m(t=>t.filter(t=>t.id!==e))},[]),_=r.useCallback(e=>{let t=e.id??l(),r={tone:`default`,duration:n,dismissible:!0,...e,id:t};return m(e=>[r,...e.filter(e=>e.id!==t)].slice(0,i)),t},[n,i]),v=r.useCallback((e,t)=>{m(n=>n.map(n=>n.id===e?{...n,...t}:n))},[]),y=r.useCallback(()=>{m([])},[]),b=r.useCallback(e=>_(d(e,`success`)),[_]),x=r.useCallback(e=>_(d(e,`info`)),[_]),S=r.useCallback(e=>_(d(e,`warning`)),[_]),C=r.useCallback(e=>_(d(e,`danger`)),[_]),w=r.useCallback(e=>_({duration:0,...d(e,`loading`)}),[_]),T=r.useCallback(async(e,t)=>{let r=_({duration:0,dismissible:!1,...d(t.loading,`loading`)});try{let i=await e;return v(r,{duration:n,dismissible:!0,...d(f(t.success,i),`success`)}),i}catch(e){throw v(r,{duration:n,dismissible:!0,...d(f(t.error,e),`danger`)}),e}},[_,n,v]),E=r.useMemo(()=>({toasts:u,addToast:_,updateToast:v,dismissToast:g,clearToasts:y,success:b,info:x,warning:S,error:C,loading:w,promise:T}),[_,y,g,C,x,w,T,b,u,v,S]);return(0,a.jsxs)(o.Provider,{value:E,children:[e,(0,a.jsx)(`div`,{"data-slot":`toast-viewport`,className:t.cn(`fixed z-[100] flex w-[min(100%-2rem,24rem)] flex-col gap-2`,p[c]),children:u.map(e=>(0,a.jsx)(h,{toast:e,pauseOnHover:s,onDismiss:g},e.id))})]})}function h({toast:e,pauseOnHover:o,onDismiss:l}){let u=e.tone??`default`,[d,f]=r.useState(!1);return r.useEffect(()=>{if(e.duration===1/0||e.duration===0||o&&d)return;let t=window.setTimeout(()=>l(e.id),e.duration??4e3);return()=>window.clearTimeout(t)},[d,l,o,e.duration,e.id]),(0,a.jsxs)(`div`,{"data-slot":`toast`,"data-tone":u,className:t.cn(`flex gap-3 rounded-lg border p-3 shadow-lg backdrop-blur`,s[u]),role:`status`,"aria-live":`polite`,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),children:[(0,a.jsx)(`div`,{className:`mt-0.5 shrink-0`,children:c[u]}),(0,a.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[e.group?(0,a.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.group}):null,e.title&&(0,a.jsx)(`div`,{className:`text-sm font-medium leading-none`,children:e.title}),e.description&&(0,a.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e.description}),e.action&&(0,a.jsx)(`div`,{className:`pt-1`,children:e.action})]}),e.dismissible!==!1&&(0,a.jsxs)(n.Button,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:()=>l(e.id),children:[(0,a.jsx)(i.XIcon,{}),(0,a.jsx)(`span`,{className:`sr-only`,children:`Dismiss`})]})]})}function g(){let e=r.useContext(o);if(!e)throw Error(`useToast must be used inside ToastProvider`);return e}exports.ToastProvider=m,exports.useToast=g;
|
|
@@ -157,6 +157,10 @@ function b({ toast: r, pauseOnHover: i, onDismiss: a }) {
|
|
|
157
157
|
/* @__PURE__ */ u("div", {
|
|
158
158
|
className: "min-w-0 flex-1 space-y-1",
|
|
159
159
|
children: [
|
|
160
|
+
r.group ? /* @__PURE__ */ l("div", {
|
|
161
|
+
className: "text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground",
|
|
162
|
+
children: r.group
|
|
163
|
+
}) : null,
|
|
160
164
|
r.title && /* @__PURE__ */ l("div", {
|
|
161
165
|
className: "text-sm font-medium leading-none",
|
|
162
166
|
children: r.title
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../ui/button/index.cjs"),n=require("../ui/input/index.cjs"),r=require("../ui/dialog/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({title:e=`Are you sure?`,description:s,icon:c=(0,o.jsx)(a.AlertTriangleIcon,{}),cancelLabel:l=`Cancel`,actionLabel:u=`Continue`,actionTone:d=`destructive`,cancelVariant:f=`outline`,loading:p=!1,closeOnAction:m=!0,confirmValue:h,confirmLabel:g=`Type to confirm`,confirmPlaceholder:_,confirmDescription:v,confirmCaseSensitive:y=!0,severityNote:b,errorMessage:x=`Action could not be completed. Try again.`,onActionError:S,onAction:C,children:w,preventCloseWhileLoading:T=!0,actionButtonProps:E,cancelButtonProps:D,onOpenChange:O,...k}){let[A,j]=i.useState(!1),[M,N]=i.useState(``),[P,F]=i.useState(null),I=p||A,L=!!h?.trim(),R=y?h?.trim():h?.trim().toLowerCase(),z=y?M.trim():M.trim().toLowerCase(),B=!L||z===R;i.useEffect(()=>{k.open||(N(``),F(null))},[k.open]);let V=i.useCallback((e,t)=>{!e&&T&&I||O?.(e,t)},[O,T,I]),H=()=>{V(!1,void 0)},U=async()=>{if(!(!B||I)){if(F(null),!C){m&&H();return}try{j(!0),await C(),m&&H()}catch(e){F(x),S?.(e)}finally{j(!1)}}};return(0,o.jsxs)(r.Dialog,{onOpenChange:V,...k,children:[w,(0,o.jsxs)(r.DialogContent,{children:[(0,o.jsxs)(r.DialogHeader,{children:[(0,o.jsx)(`div`,{className:`mb-3 inline-flex size-11 items-center justify-center rounded-2xl border border-destructive/20 bg-destructive/10 text-destructive [&_svg]:size-5`,children:c}),(0,o.jsx)(r.DialogTitle,{children:e}),s?(0,o.jsx)(r.DialogDescription,{children:s}):null]}),L?(0,o.jsxs)(`div`,{className:`grid gap-2.5`,children:[(0,o.jsxs)(`div`,{className:`space-y-1`,children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:g}),(0,o.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:v??(0,o.jsxs)(o.Fragment,{children:[`Type `,(0,o.jsx)(`span`,{className:`font-semibold text-foreground`,children:h}),` to continue.`]})})]}),(0,o.jsx)(n.Input,{value:M,onValueChange:N,placeholder:_??h,autoComplete:`off`,autoCapitalize:`off`,spellCheck:!1,"aria-invalid":P?!0:void 0,"aria-describedby":P?`alert-dialog-error`:void 0})]}):null,b?(0,o.jsx)(`div`,{className:`rounded-2xl border border-border/70 bg-muted/35 px-3.5 py-3 text-sm leading-6 text-muted-foreground`,children:b}):null,P?(0,o.jsx)(`div`,{id:`alert-dialog-error`,role:`alert`,"aria-live":`polite`,className:`rounded-2xl border border-destructive/20 bg-destructive/8 px-3.5 py-3 text-sm leading-6 text-destructive`,children:P}):null,(0,o.jsxs)(r.DialogFooter,{children:[(0,o.jsx)(r.DialogClose,{render:()=>(0,o.jsx)(t.Button,{type:`button`,variant:f,disabled:I,...D,children:l})}),(0,o.jsx)(t.Button,{type:`button`,variant:d===`destructive`?`destructive`:`default`,loading:I,disabled:!B
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../ui/button/index.cjs"),n=require("../ui/input/index.cjs"),r=require("../ui/dialog/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({title:e=`Are you sure?`,description:s,icon:c=(0,o.jsx)(a.AlertTriangleIcon,{}),cancelLabel:l=`Cancel`,actionLabel:u=`Continue`,actionTone:d=`destructive`,cancelVariant:f=`outline`,loading:p=!1,closeOnAction:m=!0,confirmValue:h,confirmLabel:g=`Type to confirm`,confirmPlaceholder:_,confirmDescription:v,confirmCaseSensitive:y=!0,severityNote:b,errorMessage:x=`Action could not be completed. Try again.`,onActionError:S,onAction:C,children:w,preventCloseWhileLoading:T=!0,actionButtonProps:E,cancelButtonProps:D,onOpenChange:O,...k}){let[A,j]=i.useState(!1),[M,N]=i.useState(``),[P,F]=i.useState(null),I=p||A,L=!!h?.trim(),R=y?h?.trim():h?.trim().toLowerCase(),z=y?M.trim():M.trim().toLowerCase(),B=!L||z===R;i.useEffect(()=>{k.open||(N(``),F(null))},[k.open]);let V=i.useCallback((e,t)=>{!e&&T&&I||O?.(e,t)},[O,T,I]),H=()=>{V(!1,void 0)},U=async()=>{if(!(!B||I)){if(F(null),!C){m&&H();return}try{j(!0),await C(),m&&H()}catch(e){F(x),S?.(e)}finally{j(!1)}}};return(0,o.jsxs)(r.Dialog,{onOpenChange:V,...k,children:[w,(0,o.jsxs)(r.DialogContent,{children:[(0,o.jsxs)(r.DialogHeader,{children:[(0,o.jsx)(`div`,{className:`mb-3 inline-flex size-11 items-center justify-center rounded-2xl border border-destructive/20 bg-destructive/10 text-destructive [&_svg]:size-5`,children:c}),(0,o.jsx)(r.DialogTitle,{children:e}),s?(0,o.jsx)(r.DialogDescription,{children:s}):null]}),L?(0,o.jsxs)(`div`,{className:`grid gap-2.5`,children:[(0,o.jsxs)(`div`,{className:`space-y-1`,children:[(0,o.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:g}),(0,o.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:v??(0,o.jsxs)(o.Fragment,{children:[`Type `,(0,o.jsx)(`span`,{className:`font-semibold text-foreground`,children:h}),` to continue.`]})})]}),(0,o.jsx)(n.Input,{value:M,onValueChange:N,placeholder:_??h,autoComplete:`off`,autoCapitalize:`off`,spellCheck:!1,"aria-invalid":P?!0:void 0,"aria-describedby":P?`alert-dialog-error`:void 0})]}):null,b?(0,o.jsx)(`div`,{className:`rounded-2xl border border-border/70 bg-muted/35 px-3.5 py-3 text-sm leading-6 text-muted-foreground`,children:b}):null,P?(0,o.jsx)(`div`,{id:`alert-dialog-error`,role:`alert`,"aria-live":`polite`,className:`rounded-2xl border border-destructive/20 bg-destructive/8 px-3.5 py-3 text-sm leading-6 text-destructive`,children:P}):null,(0,o.jsxs)(r.DialogFooter,{children:[(0,o.jsx)(r.DialogClose,{render:()=>(0,o.jsx)(t.Button,{type:`button`,variant:f,disabled:I,...D,children:l})}),(0,o.jsx)(t.Button,{type:`button`,variant:d===`destructive`?`destructive`:`default`,loading:I,disabled:!B||I,onClick:()=>void U(),...E,children:u})]})]})]})}exports.AlertDialog=s;
|
|
@@ -95,7 +95,7 @@ function m({ title: m = "Are you sure?", description: h, icon: g = /* @__PURE__
|
|
|
95
95
|
type: "button",
|
|
96
96
|
variant: y === "destructive" ? "destructive" : "default",
|
|
97
97
|
loading: W,
|
|
98
|
-
disabled: !J
|
|
98
|
+
disabled: !J || W,
|
|
99
99
|
onClick: () => void Z(),
|
|
100
100
|
...P,
|
|
101
101
|
children: v
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("./dialog-actions.cjs"),n=require("./modal-shell.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");function a({cancelText:e=`Cancel`,confirmText:
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("./dialog-actions.cjs"),n=require("./modal-shell.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("react/jsx-runtime");function a({cancelText:e=`Cancel`,confirmText:a=`Confirm`,confirmVariant:o=`default`,confirmDisabled:s=!1,cancelDisabled:c=!1,isLoading:l=!1,closeOnConfirm:u=!0,onConfirmError:d,onCancel:f,onConfirm:p,onOpenChange:m,...h}){let[g,_]=r.useState(!1),v=l||g,y=e=>{v&&e===!1||m?.(e)},b=()=>{f?.(),v||m?.(!1)},x=async()=>{if(!(s||v))try{_(!0),await p?.(),u&&m?.(!1)}catch(e){d?.(e)}finally{_(!1)}};return(0,i.jsx)(n.ModalShell,{showCloseButton:!v,onOpenChange:y,footer:(0,i.jsxs)(t.DialogActions,{children:[(0,i.jsx)(t.DialogActionButton,{type:`button`,variant:`outline`,disabled:c||v,onClick:b,children:e}),(0,i.jsx)(t.DialogActionButton,{type:`button`,variant:o,disabled:s||v,isLoading:v,onClick:()=>void x(),children:a})]}),...h})}exports.ConfirmDialog=a;
|
|
@@ -9,9 +9,11 @@ type ConfirmDialogProps = Omit<ModalShellProps, "footer"> & {
|
|
|
9
9
|
confirmDisabled?: boolean;
|
|
10
10
|
cancelDisabled?: boolean;
|
|
11
11
|
isLoading?: boolean;
|
|
12
|
+
closeOnConfirm?: boolean;
|
|
13
|
+
onConfirmError?: (error: unknown) => void;
|
|
12
14
|
onCancel?: () => void;
|
|
13
|
-
onConfirm?: () => void
|
|
15
|
+
onConfirm?: () => void | Promise<void>;
|
|
14
16
|
};
|
|
15
|
-
declare function ConfirmDialog({ cancelText, confirmText, confirmVariant, confirmDisabled, cancelDisabled, isLoading, onCancel, onConfirm, onOpenChange, ...props }: ConfirmDialogProps): React.JSX.Element;
|
|
17
|
+
declare function ConfirmDialog({ cancelText, confirmText, confirmVariant, confirmDisabled, cancelDisabled, isLoading, closeOnConfirm, onConfirmError, onCancel, onConfirm, onOpenChange, ...props }: ConfirmDialogProps): React.JSX.Element;
|
|
16
18
|
export { ConfirmDialog };
|
|
17
19
|
export type { ConfirmDialogProps };
|
|
@@ -1,32 +1,41 @@
|
|
|
1
1
|
import { DialogActionButton as e, DialogActions as t } from "./dialog-actions.js";
|
|
2
2
|
import { ModalShell as n } from "./modal-shell.js";
|
|
3
|
-
import "react";
|
|
4
|
-
import { jsx as
|
|
3
|
+
import * as r from "react";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/overlay/confirm-dialog.tsx
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
function o({ cancelText: o = "Cancel", confirmText: s = "Confirm", confirmVariant: c = "default", confirmDisabled: l = !1, cancelDisabled: u = !1, isLoading: d = !1, closeOnConfirm: f = !0, onConfirmError: p, onCancel: m, onConfirm: h, onOpenChange: g, ..._ }) {
|
|
7
|
+
let [v, y] = r.useState(!1), b = d || v, x = (e) => {
|
|
8
|
+
b && e === !1 || g?.(e);
|
|
9
|
+
}, S = () => {
|
|
10
|
+
m?.(), b || g?.(!1);
|
|
11
|
+
}, C = async () => {
|
|
12
|
+
if (!(l || b)) try {
|
|
13
|
+
y(!0), await h?.(), f && g?.(!1);
|
|
14
|
+
} catch (e) {
|
|
15
|
+
p?.(e);
|
|
16
|
+
} finally {
|
|
17
|
+
y(!1);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return /* @__PURE__ */ i(n, {
|
|
21
|
+
showCloseButton: !b,
|
|
22
|
+
onOpenChange: x,
|
|
23
|
+
footer: /* @__PURE__ */ a(t, { children: [/* @__PURE__ */ i(e, {
|
|
13
24
|
type: "button",
|
|
14
25
|
variant: "outline",
|
|
15
|
-
disabled:
|
|
16
|
-
onClick:
|
|
17
|
-
d?.(), u || p?.(!1);
|
|
18
|
-
},
|
|
19
|
-
children: a
|
|
20
|
-
}), /* @__PURE__ */ r(e, {
|
|
21
|
-
type: "button",
|
|
22
|
-
variant: s,
|
|
23
|
-
disabled: c || u,
|
|
24
|
-
isLoading: u,
|
|
25
|
-
onClick: f,
|
|
26
|
+
disabled: u || b,
|
|
27
|
+
onClick: S,
|
|
26
28
|
children: o
|
|
29
|
+
}), /* @__PURE__ */ i(e, {
|
|
30
|
+
type: "button",
|
|
31
|
+
variant: c,
|
|
32
|
+
disabled: l || b,
|
|
33
|
+
isLoading: b,
|
|
34
|
+
onClick: () => void C(),
|
|
35
|
+
children: s
|
|
27
36
|
})] }),
|
|
28
|
-
...
|
|
37
|
+
..._
|
|
29
38
|
});
|
|
30
39
|
}
|
|
31
40
|
//#endregion
|
|
32
|
-
export {
|
|
41
|
+
export { o as ConfirmDialog };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/dialog/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o={right:`left-auto right-0 top-0 h-dvh max-h-dvh w-full
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/dialog/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");var o={right:`left-auto right-0 top-0 h-dvh max-h-dvh w-full translate-x-0 translate-y-0 rounded-none rounded-l-[var(--radius-3xl)] data-open:slide-in-from-right data-closed:slide-out-to-right`,left:`left-0 top-0 h-dvh max-h-dvh w-full translate-x-0 translate-y-0 rounded-none rounded-r-[var(--radius-3xl)] data-open:slide-in-from-left data-closed:slide-out-to-left`,top:`left-0 top-0 h-auto max-h-[85dvh] w-full max-w-none translate-x-0 translate-y-0 rounded-none rounded-b-[var(--radius-3xl)] data-open:slide-in-from-top data-closed:slide-out-to-top`,bottom:`bottom-0 left-0 top-auto h-auto max-h-[85dvh] w-full max-w-none translate-x-0 translate-y-0 rounded-none rounded-t-[var(--radius-3xl)] data-open:slide-in-from-bottom data-closed:slide-out-to-bottom`},s={sm:`sm:max-w-sm`,md:`sm:max-w-md`,lg:`sm:max-w-lg`,xl:`sm:max-w-2xl`,full:`max-w-none sm:max-w-[min(100vw,72rem)]`};function c({trigger:e,title:n,description:i,side:c=`right`,width:l=`lg`,footer:u,headerClassName:d,bodyClassName:f,footerClassName:p,contentClassName:m,showCloseButton:h=!0,children:g,..._}){return(0,a.jsxs)(r.Dialog,{..._,children:[e?(0,a.jsx)(r.DialogTrigger,{render:e}):null,(0,a.jsxs)(r.DialogContent,{size:`full`,showCloseButton:h,"data-side":c,"data-width":l,className:t.cn(`fixed grid grid-rows-[auto_minmax(0,1fr)_auto] gap-0 overscroll-contain p-0`,o[c],(c===`left`||c===`right`)&&s[l],m),children:[(n||i)&&(0,a.jsxs)(r.DialogHeader,{className:t.cn(`border-b border-border/70 p-6`,d),children:[n?(0,a.jsx)(r.DialogTitle,{children:n}):null,i?(0,a.jsx)(r.DialogDescription,{children:i}):null]}),(0,a.jsx)(`div`,{"data-slot":`drawer-body`,className:t.cn(`min-h-0 flex-1 overflow-y-auto p-6`,f),children:g}),u?(0,a.jsx)(`div`,{"data-slot":`drawer-footer`,className:t.cn(`border-t border-border/70 p-5`,p),children:u}):null]})]})}function l({children:e=`Close`,...t}){return(0,a.jsx)(r.DialogClose,{render:(0,a.jsx)(n.Button,{type:`button`,variant:`outline`,...t}),children:e})}exports.Drawer=c,exports.DrawerCloseButton=l;
|
|
@@ -2,11 +2,13 @@ import * as React from "react";
|
|
|
2
2
|
import { Button } from "@/components/ui/button";
|
|
3
3
|
import { Dialog } from "@/components/ui/dialog";
|
|
4
4
|
export type DrawerSide = "left" | "right" | "top" | "bottom";
|
|
5
|
+
export type DrawerWidth = "sm" | "md" | "lg" | "xl" | "full";
|
|
5
6
|
export type DrawerProps = Omit<React.ComponentProps<typeof Dialog>, "children"> & {
|
|
6
7
|
trigger?: React.ReactNode;
|
|
7
8
|
title?: React.ReactNode;
|
|
8
9
|
description?: React.ReactNode;
|
|
9
10
|
side?: DrawerSide;
|
|
11
|
+
width?: DrawerWidth;
|
|
10
12
|
footer?: React.ReactNode;
|
|
11
13
|
headerClassName?: string;
|
|
12
14
|
bodyClassName?: string;
|
|
@@ -15,6 +17,6 @@ export type DrawerProps = Omit<React.ComponentProps<typeof Dialog>, "children">
|
|
|
15
17
|
showCloseButton?: boolean;
|
|
16
18
|
children?: React.ReactNode;
|
|
17
19
|
};
|
|
18
|
-
declare function Drawer({ trigger, title, description, side, footer, headerClassName, bodyClassName, footerClassName, contentClassName, showCloseButton, children, ...props }: DrawerProps): React.JSX.Element;
|
|
20
|
+
declare function Drawer({ trigger, title, description, side, width, footer, headerClassName, bodyClassName, footerClassName, contentClassName, showCloseButton, children, ...props }: DrawerProps): React.JSX.Element;
|
|
19
21
|
declare function DrawerCloseButton({ children, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
20
22
|
export { Drawer, DrawerCloseButton };
|