@lerianstudio/sindarian-ui 2.0.0-beta.24 → 2.0.0-beta.26
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/charts/chart.js +4 -231
- package/dist/charts/index.js +1 -11
- package/dist/components/breadcrumb/get-breadcrumb-paths.js +1 -18
- package/dist/components/breadcrumb/index.js +1 -37
- package/dist/components/card/account-card/index.js +1 -69
- package/dist/components/card/basic-card/index.js +1 -20
- package/dist/components/card/dashboard-card/index.js +1 -20
- package/dist/components/card/entity-card/index.js +1 -68
- package/dist/components/card/index.js +1 -20
- package/dist/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
- package/dist/components/dialog/confirmation-dialog/index.js +1 -96
- package/dist/components/dialog/confirmation-dialog/use-confirm-dialog.js +1 -55
- package/dist/components/dialog/index.js +1 -19
- package/dist/components/dialog/large-dialog/index.d.ts +2 -2
- package/dist/components/dialog/large-dialog/index.d.ts.map +1 -1
- package/dist/components/dialog/large-dialog/index.js +1 -21
- package/dist/components/entity-box/index.js +1 -67
- package/dist/components/entity-data-table/index.js +1 -20
- package/dist/components/form/combo-box-field/index.js +1 -35
- package/dist/components/form/country-field/index.js +1 -11
- package/dist/components/form/date-picker-field/index.js +1 -83
- package/dist/components/form/date-range-field/index.js +1 -58
- package/dist/components/form/date-time-picker-field/index.js +1 -114
- package/dist/components/form/file-upload-field/index.js +1 -69
- package/dist/components/form/index.js +1 -31
- package/dist/components/form/input-field/index.js +1 -96
- package/dist/components/form/otp-field/index.js +1 -19
- package/dist/components/form/pagination-limit-field/index.js +1 -10
- package/dist/components/form/password-field/index.d.ts.map +1 -1
- package/dist/components/form/password-field/index.js +1 -16
- package/dist/components/form/radio-group-field/index.js +1 -36
- package/dist/components/form/renderable-label.js +1 -57
- package/dist/components/form/select-field/index.js +1 -68
- package/dist/components/form/state-field/index.js +1 -42
- package/dist/components/form/switch-field/index.js +1 -16
- package/dist/components/form/textarea-field/index.js +1 -23
- package/dist/components/page/index.js +1 -20
- package/dist/components/page-header/index.js +1 -80
- package/dist/components/pagination/index.js +1 -10
- package/dist/components/table/id-table-cell.js +1 -109
- package/dist/components/table/index.js +1 -19
- package/dist/components/table/locked-table-actions.js +1 -41
- package/dist/components/table/name-table-cell.js +1 -58
- package/dist/components/ui/accordion/index.js +1 -62
- package/dist/components/ui/alert/index.js +1 -45
- package/dist/components/ui/alert-dialog/index.js +1 -84
- package/dist/components/ui/autocomplete/index.js +1 -440
- package/dist/components/ui/autosize-textarea/index.js +1 -89
- package/dist/components/ui/avatar/index.js +1 -51
- package/dist/components/ui/badge/index.js +1 -83
- package/dist/components/ui/breadcrumb/index.js +1 -35
- package/dist/components/ui/button/index.js +1 -65
- package/dist/components/ui/button/styles.css +2 -1
- package/dist/components/ui/calendar/index.js +1 -118
- package/dist/components/ui/card/index.js +1 -32
- package/dist/components/ui/checkbox/index.js +1 -44
- package/dist/components/ui/collapsible/index.js +1 -50
- package/dist/components/ui/command/index.js +1 -95
- package/dist/components/ui/copy-field/index.js +1 -163
- package/dist/components/ui/dialog/index.d.ts +4 -1
- package/dist/components/ui/dialog/index.d.ts.map +1 -1
- package/dist/components/ui/dialog/index.js +1 -80
- package/dist/components/ui/dialog/styles.css +2 -1
- package/dist/components/ui/dropdown-menu/index.js +1 -110
- package/dist/components/ui/field/index.js +1 -82
- package/dist/components/ui/file-upload/index.js +1 -574
- package/dist/components/ui/form.js +1 -162
- package/dist/components/ui/hover-card/index.js +1 -51
- package/dist/components/ui/icon-button/index.js +1 -35
- package/dist/components/ui/input/adornment.js +1 -21
- package/dist/components/ui/input/index.js +1 -99
- package/dist/components/ui/input/styles.css +29 -12
- package/dist/components/ui/label/index.js +1 -45
- package/dist/components/ui/lerian-wordmark/index.js +1 -7
- package/dist/components/ui/loading-button/index.js +1 -9
- package/dist/components/ui/multiple-select/index.js +1 -235
- package/dist/components/ui/otp-input/index.js +1 -62
- package/dist/components/ui/paper/index.js +1 -8
- package/dist/components/ui/paper-collapsible/index.js +1 -24
- package/dist/components/ui/popover/index.js +1 -55
- package/dist/components/ui/progress/index.js +1 -66
- package/dist/components/ui/qr-code/index.js +1 -27
- package/dist/components/ui/radio-group/index.js +1 -48
- package/dist/components/ui/scroll-area/index.js +1 -49
- package/dist/components/ui/select/index.js +1 -119
- package/dist/components/ui/select/styles.css +6 -3
- package/dist/components/ui/separator/index.js +1 -43
- package/dist/components/ui/sheet/index.d.ts +7 -2
- package/dist/components/ui/sheet/index.d.ts.map +1 -1
- package/dist/components/ui/sheet/index.js +1 -136
- package/dist/components/ui/sidebar/index.js +1 -27
- package/dist/components/ui/sidebar/next-router.cjs +1 -119
- package/dist/components/ui/sidebar/sidebar-back-button.js +1 -8
- package/dist/components/ui/sidebar/sidebar-components.js +1 -23
- package/dist/components/ui/sidebar/sidebar-expand-button.js +1 -49
- package/dist/components/ui/sidebar/sidebar-item-button.js +1 -21
- package/dist/components/ui/sidebar/sidebar-item-collapsible.js +1 -52
- package/dist/components/ui/sidebar/sidebar-item-icon-button.js +1 -18
- package/dist/components/ui/sidebar/sidebar-item.js +1 -44
- package/dist/components/ui/sidebar/sidebar-provider.js +1 -201
- package/dist/components/ui/sidebar/sidebar-root.d.ts +3 -1
- package/dist/components/ui/sidebar/sidebar-root.d.ts.map +1 -1
- package/dist/components/ui/sidebar/sidebar-root.js +1 -130
- package/dist/components/ui/sidebar/sidebar-router.js +1 -126
- package/dist/components/ui/sidebar/sidebar-trigger.js +1 -57
- package/dist/components/ui/skeleton/index.js +1 -8
- package/dist/components/ui/stepper/index.js +1 -29
- package/dist/components/ui/switch/index.js +1 -43
- package/dist/components/ui/table/index.js +1 -56
- package/dist/components/ui/tabs/index.js +1 -55
- package/dist/components/ui/textarea/index.js +1 -8
- package/dist/components/ui/time-picker/index.js +1 -85
- package/dist/components/ui/toast/index.js +1 -3
- package/dist/components/ui/toast/toaster.js +1 -16
- package/dist/components/ui/toggle-group/index.js +1 -156
- package/dist/components/ui/tooltip/index.js +1 -81
- package/dist/domain/blotter/index.js +1 -20
- package/dist/domain/delinquency-aging/aging-buckets.js +1 -120
- package/dist/domain/delinquency-aging/index.js +1 -222
- package/dist/domain/figure/index.js +1 -19
- package/dist/domain/format.js +1 -137
- package/dist/domain/index.js +1 -43
- package/dist/domain/key-id/index.js +1 -174
- package/dist/domain/ledger-sheet/index.js +1 -28
- package/dist/domain/money-diff.js +1 -48
- package/dist/domain/money-math.js +1 -104
- package/dist/domain/money-text/index.js +1 -123
- package/dist/domain/section-label/index.js +1 -17
- package/dist/domain/status-rail/index.js +1 -76
- package/dist/domain/threshold-gauge/index.js +1 -161
- package/dist/enterprise/alert-banner/index.js +1 -24
- package/dist/enterprise/app-shell/index.js +1 -87
- package/dist/enterprise/cursor-pager/index.js +1 -26
- package/dist/enterprise/data-table/column-size.js +1 -103
- package/dist/enterprise/data-table/index.d.ts.map +1 -1
- package/dist/enterprise/data-table/index.js +1 -345
- package/dist/enterprise/date-range-picker/index.js +1 -115
- package/dist/enterprise/detail-panel/index.js +1 -20
- package/dist/enterprise/empty-state/index.d.ts +6 -1
- package/dist/enterprise/empty-state/index.d.ts.map +1 -1
- package/dist/enterprise/empty-state/index.js +1 -13
- package/dist/enterprise/index.js +1 -39
- package/dist/enterprise/number-input/index.js +1 -252
- package/dist/enterprise/search-input/index.js +1 -121
- package/dist/enterprise/stat-card/index.js +1 -75
- package/dist/enterprise/status-badge/index.js +1 -120
- package/dist/enterprise/use-is-mobile.js +1 -68
- package/dist/enterprise/virtualized-table/index.js +1 -141
- package/dist/esm/charts/chart.js +4 -190
- package/dist/esm/charts/index.js +1 -3
- package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +1 -12
- package/dist/esm/components/breadcrumb/index.js +1 -30
- package/dist/esm/components/card/account-card/index.js +1 -53
- package/dist/esm/components/card/basic-card/index.js +1 -14
- package/dist/esm/components/card/dashboard-card/index.js +1 -14
- package/dist/esm/components/card/entity-card/index.js +1 -52
- package/dist/esm/components/card/index.js +1 -4
- package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/dialog/confirmation-dialog/index.js +1 -60
- package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +1 -49
- package/dist/esm/components/dialog/index.js +1 -3
- package/dist/esm/components/dialog/large-dialog/index.d.ts +2 -2
- package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/dialog/large-dialog/index.js +1 -16
- package/dist/esm/components/entity-box/index.js +1 -56
- package/dist/esm/components/entity-data-table/index.js +1 -17
- package/dist/esm/components/form/combo-box-field/index.js +1 -28
- package/dist/esm/components/form/country-field/index.js +1 -7
- package/dist/esm/components/form/date-picker-field/index.js +1 -43
- package/dist/esm/components/form/date-range-field/index.js +1 -18
- package/dist/esm/components/form/date-time-picker-field/index.js +1 -74
- package/dist/esm/components/form/file-upload-field/index.js +1 -65
- package/dist/esm/components/form/index.js +1 -15
- package/dist/esm/components/form/input-field/index.js +1 -92
- package/dist/esm/components/form/otp-field/index.js +1 -15
- package/dist/esm/components/form/pagination-limit-field/index.js +1 -6
- package/dist/esm/components/form/password-field/index.d.ts.map +1 -1
- package/dist/esm/components/form/password-field/index.js +1 -10
- package/dist/esm/components/form/radio-group-field/index.js +1 -32
- package/dist/esm/components/form/renderable-label.js +1 -54
- package/dist/esm/components/form/select-field/index.js +1 -64
- package/dist/esm/components/form/state-field/index.js +1 -35
- package/dist/esm/components/form/switch-field/index.js +1 -12
- package/dist/esm/components/form/textarea-field/index.js +1 -19
- package/dist/esm/components/page/index.js +1 -15
- package/dist/esm/components/page-header/index.js +1 -71
- package/dist/esm/components/pagination/index.js +1 -6
- package/dist/esm/components/table/id-table-cell.js +1 -105
- package/dist/esm/components/table/index.js +1 -3
- package/dist/esm/components/table/locked-table-actions.js +1 -37
- package/dist/esm/components/table/name-table-cell.js +1 -54
- package/dist/esm/components/ui/accordion/index.js +1 -24
- package/dist/esm/components/ui/alert/index.js +1 -38
- package/dist/esm/components/ui/alert-dialog/index.js +1 -39
- package/dist/esm/components/ui/autocomplete/index.js +1 -392
- package/dist/esm/components/ui/autosize-textarea/index.js +1 -51
- package/dist/esm/components/ui/avatar/index.js +1 -14
- package/dist/esm/components/ui/badge/index.js +1 -79
- package/dist/esm/components/ui/breadcrumb/index.js +1 -27
- package/dist/esm/components/ui/button/index.js +1 -60
- package/dist/esm/components/ui/calendar/index.js +1 -82
- package/dist/esm/components/ui/card/index.js +1 -24
- package/dist/esm/components/ui/checkbox/index.js +1 -9
- package/dist/esm/components/ui/collapsible/index.js +1 -13
- package/dist/esm/components/ui/command/index.js +1 -51
- package/dist/esm/components/ui/copy-field/index.js +1 -127
- package/dist/esm/components/ui/dialog/index.d.ts +4 -1
- package/dist/esm/components/ui/dialog/index.d.ts.map +1 -1
- package/dist/esm/components/ui/dialog/index.js +1 -36
- package/dist/esm/components/ui/dropdown-menu/index.js +1 -60
- package/dist/esm/components/ui/field/index.js +1 -71
- package/dist/esm/components/ui/file-upload/index.js +1 -536
- package/dist/esm/components/ui/form.js +1 -118
- package/dist/esm/components/ui/hover-card/index.js +1 -14
- package/dist/esm/components/ui/icon-button/index.js +1 -31
- package/dist/esm/components/ui/input/adornment.js +1 -17
- package/dist/esm/components/ui/input/index.js +1 -60
- package/dist/esm/components/ui/label/index.js +1 -10
- package/dist/esm/components/ui/lerian-wordmark/index.js +1 -4
- package/dist/esm/components/ui/loading-button/index.js +1 -7
- package/dist/esm/components/ui/multiple-select/index.js +1 -196
- package/dist/esm/components/ui/otp-input/index.js +1 -21
- package/dist/esm/components/ui/paper/index.js +1 -5
- package/dist/esm/components/ui/paper-collapsible/index.js +1 -19
- package/dist/esm/components/ui/popover/index.js +1 -17
- package/dist/esm/components/ui/progress/index.js +1 -31
- package/dist/esm/components/ui/qr-code/index.js +1 -24
- package/dist/esm/components/ui/radio-group/index.js +1 -12
- package/dist/esm/components/ui/scroll-area/index.js +1 -13
- package/dist/esm/components/ui/select/index.js +1 -74
- package/dist/esm/components/ui/separator/index.js +1 -8
- package/dist/esm/components/ui/sheet/index.d.ts +7 -2
- package/dist/esm/components/ui/sheet/index.d.ts.map +1 -1
- package/dist/esm/components/ui/sheet/index.js +1 -92
- package/dist/esm/components/ui/sidebar/index.js +1 -11
- package/dist/esm/components/ui/sidebar/next-router.cjs +1 -119
- package/dist/esm/components/ui/sidebar/sidebar-back-button.js +1 -5
- package/dist/esm/components/ui/sidebar/sidebar-components.js +1 -15
- package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +1 -42
- package/dist/esm/components/ui/sidebar/sidebar-item-button.js +1 -18
- package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +1 -44
- package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +1 -14
- package/dist/esm/components/ui/sidebar/sidebar-item.js +1 -40
- package/dist/esm/components/ui/sidebar/sidebar-provider.js +1 -193
- package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -1
- package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -1
- package/dist/esm/components/ui/sidebar/sidebar-root.js +1 -126
- package/dist/esm/components/ui/sidebar/sidebar-router.js +1 -89
- package/dist/esm/components/ui/sidebar/sidebar-trigger.js +1 -53
- package/dist/esm/components/ui/skeleton/index.js +1 -6
- package/dist/esm/components/ui/stepper/index.js +1 -20
- package/dist/esm/components/ui/switch/index.js +1 -8
- package/dist/esm/components/ui/table/index.js +1 -44
- package/dist/esm/components/ui/tabs/index.js +1 -17
- package/dist/esm/components/ui/textarea/index.js +1 -6
- package/dist/esm/components/ui/time-picker/index.js +1 -49
- package/dist/esm/components/ui/toast/index.js +1 -2
- package/dist/esm/components/ui/toast/toaster.js +1 -13
- package/dist/esm/components/ui/toggle-group/index.js +1 -120
- package/dist/esm/components/ui/tooltip/index.js +1 -43
- package/dist/esm/domain/blotter/index.js +1 -16
- package/dist/esm/domain/delinquency-aging/aging-buckets.js +1 -115
- package/dist/esm/domain/delinquency-aging/index.js +1 -218
- package/dist/esm/domain/figure/index.js +1 -15
- package/dist/esm/domain/format.js +1 -128
- package/dist/esm/domain/index.js +1 -19
- package/dist/esm/domain/key-id/index.js +1 -169
- package/dist/esm/domain/ledger-sheet/index.js +1 -24
- package/dist/esm/domain/money-diff.js +1 -45
- package/dist/esm/domain/money-math.js +1 -98
- package/dist/esm/domain/money-text/index.js +1 -118
- package/dist/esm/domain/section-label/index.js +1 -14
- package/dist/esm/domain/status-rail/index.js +1 -71
- package/dist/esm/domain/threshold-gauge/index.js +1 -157
- package/dist/esm/enterprise/alert-banner/index.js +1 -21
- package/dist/esm/enterprise/app-shell/index.js +1 -51
- package/dist/esm/enterprise/cursor-pager/index.js +1 -23
- package/dist/esm/enterprise/data-table/column-size.js +1 -97
- package/dist/esm/enterprise/data-table/index.d.ts.map +1 -1
- package/dist/esm/enterprise/data-table/index.js +1 -342
- package/dist/esm/enterprise/date-range-picker/index.js +1 -112
- package/dist/esm/enterprise/detail-panel/index.js +1 -17
- package/dist/esm/enterprise/empty-state/index.d.ts +6 -1
- package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -1
- package/dist/esm/enterprise/empty-state/index.js +1 -10
- package/dist/esm/enterprise/index.js +1 -22
- package/dist/esm/enterprise/number-input/index.js +1 -214
- package/dist/esm/enterprise/search-input/index.js +1 -85
- package/dist/esm/enterprise/stat-card/index.js +1 -72
- package/dist/esm/enterprise/status-badge/index.js +1 -116
- package/dist/esm/enterprise/use-is-mobile.js +1 -31
- package/dist/esm/enterprise/virtualized-table/index.js +1 -138
- package/dist/esm/hooks/use-click-away.js +1 -22
- package/dist/esm/hooks/use-pagination.js +1 -38
- package/dist/esm/hooks/use-stepper.js +1 -22
- package/dist/esm/hooks/use-time.js +1 -13
- package/dist/esm/hooks/use-toast.js +1 -107
- package/dist/esm/index.js +1 -77
- package/dist/esm/lib/storage/get-storage-object.js +1 -17
- package/dist/esm/lib/storage/get-storage.js +1 -14
- package/dist/esm/lib/storage/index.js +1 -2
- package/dist/esm/lib/typography.js +1 -31
- package/dist/esm/lib/utils.js +1 -41
- package/dist/esm/theme/get-theme-script.js +1 -41
- package/dist/esm/theme/index.js +1 -4
- package/dist/esm/theme/mode-toggle.js +1 -45
- package/dist/esm/theme/theme-provider.js +1 -122
- package/dist/esm/toast/helpers.js +1 -36
- package/dist/esm/toast/index.js +1 -4
- package/dist/esm/types/metadata-type.js +1 -1
- package/dist/esm/utils/countries.cjs +1 -17
- package/dist/esm/utils/country-utils.js +1 -18
- package/dist/esm/utils/currency-codes.js +1 -181
- package/dist/globals.css +1 -0
- package/dist/hooks/use-click-away.js +1 -29
- package/dist/hooks/use-pagination.js +1 -41
- package/dist/hooks/use-stepper.js +1 -26
- package/dist/hooks/use-time.js +1 -20
- package/dist/hooks/use-toast.js +1 -111
- package/dist/index.js +1 -96
- package/dist/lib/storage/get-storage-object.js +1 -23
- package/dist/lib/storage/get-storage.js +1 -17
- package/dist/lib/storage/index.js +1 -18
- package/dist/lib/typography.js +1 -34
- package/dist/lib/utils.js +1 -45
- package/dist/theme/get-theme-script.js +1 -44
- package/dist/theme/index.js +1 -11
- package/dist/theme/mode-toggle.js +1 -48
- package/dist/theme/theme-provider.js +1 -160
- package/dist/toast/helpers.js +1 -41
- package/dist/toast/index.js +1 -10
- package/dist/tokens.css +7 -4
- package/dist/types/metadata-type.js +1 -2
- package/dist/utils/countries.cjs +1 -17
- package/dist/utils/country-utils.js +1 -25
- package/dist/utils/currency-codes.js +1 -184
- package/package.json +4 -3
package/dist/hooks/use-toast.js
CHANGED
|
@@ -1,111 +1 @@
|
|
|
1
|
-
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.DEFAULT_DURATION = void 0;
|
|
5
|
-
exports.useToast = useToast;
|
|
6
|
-
exports.toast = toast;
|
|
7
|
-
const sonner_1 = require("sonner");
|
|
8
|
-
/**
|
|
9
|
-
* Lifetime of every non-destructive toast, and the `<Toaster />` fallback for
|
|
10
|
-
* anything raised without one. The two must not drift apart, so the Toaster
|
|
11
|
-
* imports this rather than repeating the literal.
|
|
12
|
-
*/
|
|
13
|
-
exports.DEFAULT_DURATION = 10000;
|
|
14
|
-
/**
|
|
15
|
-
* A destructive toast reports something the operator has to read -- a refused
|
|
16
|
-
* money operation, a failed copy of a show-once secret, a language switch that
|
|
17
|
-
* did not take. It stays up until dismissed instead of auto-closing.
|
|
18
|
-
*
|
|
19
|
-
* `Infinity` is how sonner disables the auto-close timer (it short-circuits the
|
|
20
|
-
* timer effect rather than calling `setTimeout(fn, Infinity)`, which would fire
|
|
21
|
-
* immediately). `<Toaster />` already passes `closeButton`, and sonner gates the
|
|
22
|
-
* close button on that flag alone, never on the duration -- so a persistent
|
|
23
|
-
* toast still renders its dismiss affordance.
|
|
24
|
-
*/
|
|
25
|
-
const PERSIST_UNTIL_DISMISSED = Infinity;
|
|
26
|
-
const isPlainText = (value) => value === undefined || typeof value === 'string';
|
|
27
|
-
/**
|
|
28
|
-
* Two identical errors share one toast instead of stacking: same variant, same
|
|
29
|
-
* text -- same id, and sonner updates the one already on screen.
|
|
30
|
-
*
|
|
31
|
-
* Unbounded stacking is worse for a persistent toast than for a transient one.
|
|
32
|
-
* `<Toaster />` shows three at a time and renders the rest `opacity: 0;
|
|
33
|
-
* pointer-events: none`, so a fourth error nobody can read is also a fourth
|
|
34
|
-
* error nobody can close -- and without an auto-dismiss, nothing ahead of it
|
|
35
|
-
* clears on its own.
|
|
36
|
-
*
|
|
37
|
-
* Only plain-text toasts collapse. A `ReactNode` has no stable key and
|
|
38
|
-
* `String(node)` would fold unrelated errors onto one id.
|
|
39
|
-
*
|
|
40
|
-
* ponytail: the ceiling is still three. Distinct persistent errors past the
|
|
41
|
-
* third queue behind the front three until one is dismissed; lifting that means
|
|
42
|
-
* raising `visibleToasts`, not more work here.
|
|
43
|
-
*/
|
|
44
|
-
function collapseKey(title, description) {
|
|
45
|
-
if (!isPlainText(title) || !isPlainText(description)) {
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
return `destructive:${JSON.stringify([title ?? null, description ?? null])}`;
|
|
49
|
-
}
|
|
50
|
-
function toast({ title, description, variant, duration, id, ...rest }) {
|
|
51
|
-
const message = title ?? '';
|
|
52
|
-
const toastId = variant === 'destructive' && id === undefined
|
|
53
|
-
? collapseKey(title, description)
|
|
54
|
-
: id;
|
|
55
|
-
const options = {
|
|
56
|
-
description,
|
|
57
|
-
...rest,
|
|
58
|
-
...(toastId !== undefined && { id: toastId }),
|
|
59
|
-
duration: duration ??
|
|
60
|
-
(variant === 'destructive' ? PERSIST_UNTIL_DISMISSED : exports.DEFAULT_DURATION)
|
|
61
|
-
};
|
|
62
|
-
let raisedId;
|
|
63
|
-
switch (variant) {
|
|
64
|
-
case 'success':
|
|
65
|
-
raisedId = sonner_1.toast.success(message, options);
|
|
66
|
-
break;
|
|
67
|
-
case 'warning':
|
|
68
|
-
raisedId = sonner_1.toast.warning(message, options);
|
|
69
|
-
break;
|
|
70
|
-
case 'destructive':
|
|
71
|
-
raisedId = sonner_1.toast.error(message, options);
|
|
72
|
-
break;
|
|
73
|
-
default:
|
|
74
|
-
raisedId = (0, sonner_1.toast)(message, options);
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
return {
|
|
78
|
-
id: raisedId,
|
|
79
|
-
dismiss: () => sonner_1.toast.dismiss(raisedId),
|
|
80
|
-
update: (props) => {
|
|
81
|
-
(0, sonner_1.toast)(props.title ?? message, {
|
|
82
|
-
...rest,
|
|
83
|
-
id: raisedId,
|
|
84
|
-
description: props.description ?? description,
|
|
85
|
-
duration: props.duration ?? options.duration
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Backward-compatible hook that wraps Sonner's toast API.
|
|
92
|
-
*
|
|
93
|
-
* Returns the same shape as the original Radix-based useToast:
|
|
94
|
-
* - `toast()` to create a toast
|
|
95
|
-
* - `dismiss()` to dismiss a toast by id (or all if no id)
|
|
96
|
-
* - `toasts` array (always empty -- Sonner manages its own state internally)
|
|
97
|
-
*/
|
|
98
|
-
function useToast() {
|
|
99
|
-
return {
|
|
100
|
-
toast,
|
|
101
|
-
dismiss: (toastId) => {
|
|
102
|
-
if (toastId !== undefined) {
|
|
103
|
-
sonner_1.toast.dismiss(toastId);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
sonner_1.toast.dismiss();
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
toasts: []
|
|
110
|
-
};
|
|
111
|
-
}
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.DEFAULT_DURATION=void 0;exports.useToast=useToast;exports.toast=toast;const sonner_1=require("sonner");exports.DEFAULT_DURATION=1e4;const PERSIST_UNTIL_DISMISSED=Infinity;const isPlainText=s=>s===void 0||typeof s==="string";function collapseKey(s,e){if(!isPlainText(s)||!isPlainText(e)){return void 0}return`destructive:${JSON.stringify([s??null,e??null])}`}function toast({title:s,description:e,variant:o,duration:c,id:u,...d}){const n=s??"";const a=o==="destructive"&&u===void 0?collapseKey(s,e):u;const i={description:e,...d,...a!==void 0&&{id:a},duration:c??(o==="destructive"?PERSIST_UNTIL_DISMISSED:exports.DEFAULT_DURATION)};let t;switch(o){case"success":t=sonner_1.toast.success(n,i);break;case"warning":t=sonner_1.toast.warning(n,i);break;case"destructive":t=sonner_1.toast.error(n,i);break;default:t=(0,sonner_1.toast)(n,i);break}return{id:t,dismiss:()=>sonner_1.toast.dismiss(t),update:r=>{(0,sonner_1.toast)(r.title??n,{...d,id:t,description:r.description??e,duration:r.duration??i.duration})}}}function useToast(){return{toast,dismiss:s=>{if(s!==void 0){sonner_1.toast.dismiss(s)}else{sonner_1.toast.dismiss()}},toasts:[]}}
|
package/dist/index.js
CHANGED
|
@@ -1,96 +1 @@
|
|
|
1
|
-
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.cn = exports.ApplicationBreadcrumb = void 0;
|
|
19
|
-
// Primitives
|
|
20
|
-
__exportStar(require("./components/ui/alert"), exports);
|
|
21
|
-
__exportStar(require("./components/ui/autocomplete"), exports);
|
|
22
|
-
__exportStar(require("./hooks/use-click-away"), exports);
|
|
23
|
-
__exportStar(require("./components/ui/autosize-textarea"), exports);
|
|
24
|
-
__exportStar(require("./components/ui/avatar"), exports);
|
|
25
|
-
__exportStar(require("./components/ui/badge"), exports);
|
|
26
|
-
__exportStar(require("./components/ui/breadcrumb"), exports);
|
|
27
|
-
__exportStar(require("./components/ui/button"), exports);
|
|
28
|
-
__exportStar(require("./components/ui/icon-button"), exports);
|
|
29
|
-
__exportStar(require("./components/ui/calendar"), exports);
|
|
30
|
-
__exportStar(require("./components/ui/card"), exports);
|
|
31
|
-
__exportStar(require("./components/ui/checkbox"), exports);
|
|
32
|
-
__exportStar(require("./components/ui/collapsible"), exports);
|
|
33
|
-
__exportStar(require("./components/ui/command"), exports);
|
|
34
|
-
__exportStar(require("./components/ui/copy-field"), exports);
|
|
35
|
-
__exportStar(require("./components/ui/dialog"), exports);
|
|
36
|
-
__exportStar(require("./components/ui/dropdown-menu"), exports);
|
|
37
|
-
__exportStar(require("./components/ui/input"), exports);
|
|
38
|
-
__exportStar(require("./components/ui/otp-input"), exports);
|
|
39
|
-
__exportStar(require("./components/ui/label"), exports);
|
|
40
|
-
__exportStar(require("./components/ui/lerian-wordmark"), exports);
|
|
41
|
-
__exportStar(require("./components/ui/loading-button"), exports);
|
|
42
|
-
__exportStar(require("./components/ui/multiple-select"), exports);
|
|
43
|
-
__exportStar(require("./components/ui/paper"), exports);
|
|
44
|
-
__exportStar(require("./components/ui/paper-collapsible"), exports);
|
|
45
|
-
__exportStar(require("./components/ui/popover"), exports);
|
|
46
|
-
__exportStar(require("./components/ui/progress"), exports);
|
|
47
|
-
__exportStar(require("./components/ui/qr-code"), exports);
|
|
48
|
-
__exportStar(require("./components/ui/select"), exports);
|
|
49
|
-
__exportStar(require("./components/ui/separator"), exports);
|
|
50
|
-
__exportStar(require("./components/ui/sheet"), exports);
|
|
51
|
-
__exportStar(require("./components/ui/sidebar"), exports);
|
|
52
|
-
__exportStar(require("./components/ui/skeleton"), exports);
|
|
53
|
-
__exportStar(require("./components/ui/stepper"), exports);
|
|
54
|
-
__exportStar(require("./hooks/use-stepper"), exports);
|
|
55
|
-
__exportStar(require("./components/ui/switch"), exports);
|
|
56
|
-
__exportStar(require("./components/ui/table"), exports);
|
|
57
|
-
__exportStar(require("./components/ui/tabs"), exports);
|
|
58
|
-
__exportStar(require("./components/ui/textarea"), exports);
|
|
59
|
-
__exportStar(require("./components/ui/toast"), exports);
|
|
60
|
-
__exportStar(require("./components/ui/toast/toaster"), exports);
|
|
61
|
-
__exportStar(require("./hooks/use-toast"), exports);
|
|
62
|
-
__exportStar(require("./components/ui/time-picker"), exports);
|
|
63
|
-
__exportStar(require("./hooks/use-time"), exports);
|
|
64
|
-
__exportStar(require("./components/ui/tooltip"), exports);
|
|
65
|
-
__exportStar(require("./components/ui/form"), exports);
|
|
66
|
-
// Components
|
|
67
|
-
var breadcrumb_1 = require("./components/breadcrumb");
|
|
68
|
-
Object.defineProperty(exports, "ApplicationBreadcrumb", { enumerable: true, get: function () { return breadcrumb_1.Breadcrumb; } });
|
|
69
|
-
__exportStar(require("./components/breadcrumb/get-breadcrumb-paths"), exports);
|
|
70
|
-
__exportStar(require("./components/card"), exports);
|
|
71
|
-
__exportStar(require("./components/dialog"), exports);
|
|
72
|
-
__exportStar(require("./components/entity-box"), exports);
|
|
73
|
-
__exportStar(require("./components/entity-data-table"), exports);
|
|
74
|
-
__exportStar(require("./components/form"), exports);
|
|
75
|
-
__exportStar(require("./components/page"), exports);
|
|
76
|
-
__exportStar(require("./components/page-header"), exports);
|
|
77
|
-
__exportStar(require("./components/pagination"), exports);
|
|
78
|
-
__exportStar(require("./components/table"), exports);
|
|
79
|
-
// Enterprise surface (sindarian-x absorption — see docs/plans/2026-08-26-sindarian-x-retirement/)
|
|
80
|
-
__exportStar(require("./enterprise"), exports);
|
|
81
|
-
__exportStar(require("./theme"), exports);
|
|
82
|
-
__exportStar(require("./toast"), exports);
|
|
83
|
-
__exportStar(require("./charts"), exports);
|
|
84
|
-
__exportStar(require("./domain"), exports);
|
|
85
|
-
// Primitives absorbed from sindarian-x (see docs/plans/2026-08-26-sindarian-x-retirement/)
|
|
86
|
-
__exportStar(require("./components/ui/accordion"), exports);
|
|
87
|
-
__exportStar(require("./components/ui/alert-dialog"), exports);
|
|
88
|
-
__exportStar(require("./components/ui/file-upload"), exports);
|
|
89
|
-
__exportStar(require("./components/ui/hover-card"), exports);
|
|
90
|
-
__exportStar(require("./components/ui/radio-group"), exports);
|
|
91
|
-
__exportStar(require("./components/ui/scroll-area"), exports);
|
|
92
|
-
__exportStar(require("./components/ui/toggle-group"), exports);
|
|
93
|
-
// Utilities
|
|
94
|
-
var utils_1 = require("./lib/utils");
|
|
95
|
-
Object.defineProperty(exports, "cn", { enumerable: true, get: function () { return utils_1.cn; } });
|
|
96
|
-
__exportStar(require("./lib/typography"), exports);
|
|
1
|
+
"use client";"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,r,e,o){if(o===void 0)o=e;var i=Object.getOwnPropertyDescriptor(r,e);if(!i||("get"in i?!r.__esModule:i.writable||i.configurable)){i={enumerable:true,get:function(){return r[e]}}}Object.defineProperty(t,o,i)}):(function(t,r,e,o){if(o===void 0)o=e;t[o]=r[e]}));var __exportStar=this&&this.__exportStar||function(t,r){for(var e in t)if(e!=="default"&&!Object.prototype.hasOwnProperty.call(r,e))__createBinding(r,t,e)};Object.defineProperty(exports,"__esModule",{value:true});exports.cn=exports.ApplicationBreadcrumb=void 0;__exportStar(require("./components/ui/alert"),exports);__exportStar(require("./components/ui/autocomplete"),exports);__exportStar(require("./hooks/use-click-away"),exports);__exportStar(require("./components/ui/autosize-textarea"),exports);__exportStar(require("./components/ui/avatar"),exports);__exportStar(require("./components/ui/badge"),exports);__exportStar(require("./components/ui/breadcrumb"),exports);__exportStar(require("./components/ui/button"),exports);__exportStar(require("./components/ui/icon-button"),exports);__exportStar(require("./components/ui/calendar"),exports);__exportStar(require("./components/ui/card"),exports);__exportStar(require("./components/ui/checkbox"),exports);__exportStar(require("./components/ui/collapsible"),exports);__exportStar(require("./components/ui/command"),exports);__exportStar(require("./components/ui/copy-field"),exports);__exportStar(require("./components/ui/dialog"),exports);__exportStar(require("./components/ui/dropdown-menu"),exports);__exportStar(require("./components/ui/input"),exports);__exportStar(require("./components/ui/otp-input"),exports);__exportStar(require("./components/ui/label"),exports);__exportStar(require("./components/ui/lerian-wordmark"),exports);__exportStar(require("./components/ui/loading-button"),exports);__exportStar(require("./components/ui/multiple-select"),exports);__exportStar(require("./components/ui/paper"),exports);__exportStar(require("./components/ui/paper-collapsible"),exports);__exportStar(require("./components/ui/popover"),exports);__exportStar(require("./components/ui/progress"),exports);__exportStar(require("./components/ui/qr-code"),exports);__exportStar(require("./components/ui/select"),exports);__exportStar(require("./components/ui/separator"),exports);__exportStar(require("./components/ui/sheet"),exports);__exportStar(require("./components/ui/sidebar"),exports);__exportStar(require("./components/ui/skeleton"),exports);__exportStar(require("./components/ui/stepper"),exports);__exportStar(require("./hooks/use-stepper"),exports);__exportStar(require("./components/ui/switch"),exports);__exportStar(require("./components/ui/table"),exports);__exportStar(require("./components/ui/tabs"),exports);__exportStar(require("./components/ui/textarea"),exports);__exportStar(require("./components/ui/toast"),exports);__exportStar(require("./components/ui/toast/toaster"),exports);__exportStar(require("./hooks/use-toast"),exports);__exportStar(require("./components/ui/time-picker"),exports);__exportStar(require("./hooks/use-time"),exports);__exportStar(require("./components/ui/tooltip"),exports);__exportStar(require("./components/ui/form"),exports);var breadcrumb_1=require("./components/breadcrumb");Object.defineProperty(exports,"ApplicationBreadcrumb",{enumerable:true,get:function(){return breadcrumb_1.Breadcrumb}});__exportStar(require("./components/breadcrumb/get-breadcrumb-paths"),exports);__exportStar(require("./components/card"),exports);__exportStar(require("./components/dialog"),exports);__exportStar(require("./components/entity-box"),exports);__exportStar(require("./components/entity-data-table"),exports);__exportStar(require("./components/form"),exports);__exportStar(require("./components/page"),exports);__exportStar(require("./components/page-header"),exports);__exportStar(require("./components/pagination"),exports);__exportStar(require("./components/table"),exports);__exportStar(require("./enterprise"),exports);__exportStar(require("./theme"),exports);__exportStar(require("./toast"),exports);__exportStar(require("./charts"),exports);__exportStar(require("./domain"),exports);__exportStar(require("./components/ui/accordion"),exports);__exportStar(require("./components/ui/alert-dialog"),exports);__exportStar(require("./components/ui/file-upload"),exports);__exportStar(require("./components/ui/hover-card"),exports);__exportStar(require("./components/ui/radio-group"),exports);__exportStar(require("./components/ui/scroll-area"),exports);__exportStar(require("./components/ui/toggle-group"),exports);var utils_1=require("./lib/utils");Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return utils_1.cn}});__exportStar(require("./lib/typography"),exports);
|
|
@@ -1,23 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getStorageObject = getStorageObject;
|
|
7
|
-
const get_storage_1 = require("./get-storage");
|
|
8
|
-
const isEmpty_js_1 = __importDefault(require("lodash/isEmpty.js"));
|
|
9
|
-
const isNil_js_1 = __importDefault(require("lodash/isNil.js"));
|
|
10
|
-
function getStorageObject(key, defaultValue) {
|
|
11
|
-
try {
|
|
12
|
-
const dataString = (0, get_storage_1.getStorage)(key, defaultValue);
|
|
13
|
-
const isNilOrEmpty = (0, isNil_js_1.default)(dataString) || (0, isEmpty_js_1.default)(dataString);
|
|
14
|
-
return isNilOrEmpty ? {} : JSON.parse(dataString);
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
// Only log errors when not in test environment
|
|
18
|
-
if (process.env.NODE_ENV !== 'test') {
|
|
19
|
-
console.error(error);
|
|
20
|
-
}
|
|
21
|
-
return defaultValue;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{"default":t}};Object.defineProperty(exports,"__esModule",{value:true});exports.getStorageObject=getStorageObject;const get_storage_1=require("./get-storage");const isEmpty_js_1=__importDefault(require("lodash/isEmpty.js"));const isNil_js_1=__importDefault(require("lodash/isNil.js"));function getStorageObject(t,r){try{const e=(0,get_storage_1.getStorage)(t,r);const s=(0,isNil_js_1.default)(e)||(0,isEmpty_js_1.default)(e);return s?{}:JSON.parse(e)}catch(e){if(process.env.NODE_ENV!=="test"){console.error(e)}return r}}
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getStorage = getStorage;
|
|
4
|
-
const isServer = typeof window === 'undefined';
|
|
5
|
-
function getStorage(key, defaultValue) {
|
|
6
|
-
if (isServer) {
|
|
7
|
-
return defaultValue;
|
|
8
|
-
}
|
|
9
|
-
let value;
|
|
10
|
-
try {
|
|
11
|
-
value = localStorage.getItem(key) || undefined;
|
|
12
|
-
}
|
|
13
|
-
catch (_e) {
|
|
14
|
-
// Unsupported
|
|
15
|
-
}
|
|
16
|
-
return value || defaultValue;
|
|
17
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getStorage=getStorage;const isServer=typeof window==="undefined";function getStorage(r,e){if(isServer){return e}let t;try{t=localStorage.getItem(r)||void 0}catch(o){}return t||e}
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./get-storage"), exports);
|
|
18
|
-
__exportStar(require("./get-storage-object"), exports);
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,t,e,r){if(r===void 0)r=e;var n=Object.getOwnPropertyDescriptor(t,e);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[e]}}}Object.defineProperty(i,r,n)}):(function(i,t,e,r){if(r===void 0)r=e;i[r]=t[e]}));var __exportStar=this&&this.__exportStar||function(i,t){for(var e in i)if(e!=="default"&&!Object.prototype.hasOwnProperty.call(t,e))__createBinding(t,i,e)};Object.defineProperty(exports,"__esModule",{value:true});__exportStar(require("./get-storage"),exports);__exportStar(require("./get-storage-object"),exports);
|
package/dist/lib/typography.js
CHANGED
|
@@ -1,34 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SECTION_LABEL_CLASS = exports.LABEL_VOICE_CLASS = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* THE canonical quiet-label voice: sentence-case, one step down in size,
|
|
6
|
-
* medium weight, muted ink. Used by column heads, panel headings, key/value
|
|
7
|
-
* labels, captions — anywhere the console needs a quiet label.
|
|
8
|
-
*
|
|
9
|
-
* This is product-console's table-head voice, copied rather than invented. The
|
|
10
|
-
* kit's own `TableHead` paints `text-muted-foreground … font-medium` inside a
|
|
11
|
-
* `text-sm` `Table` (`components/ui/table/index.tsx:20,90`), and
|
|
12
|
-
* product-console renders every data table through that primitive
|
|
13
|
-
* (`src/components/table/data-table.tsx:14`). It replaced the retired "Ledger"
|
|
14
|
-
* voice — `text-[11px] uppercase tracking-[0.08em]` — which shouted a register
|
|
15
|
-
* no sibling console speaks.
|
|
16
|
-
*
|
|
17
|
-
* Do NOT re-state the cluster by hand; compose extra classes via
|
|
18
|
-
* `cn(LABEL_VOICE_CLASS, ...)`.
|
|
19
|
-
*/
|
|
20
|
-
exports.LABEL_VOICE_CLASS = 'text-sm font-medium text-muted-foreground';
|
|
21
|
-
/**
|
|
22
|
-
* Alias of {@link LABEL_VOICE_CLASS} for section headings. Kept as a distinct
|
|
23
|
-
* name so section-level headings can diverge later without touching every
|
|
24
|
-
* quiet-label call site.
|
|
25
|
-
*
|
|
26
|
-
* It stays an alias on purpose. product-console's panel/section TITLE voice is
|
|
27
|
-
* `text-muted-foreground text-lg font-medium` (`EntityBoxHeaderTitle`,
|
|
28
|
-
* `components/entity-box/index.tsx:108`) — but that voice already ships as a
|
|
29
|
-
* component, and every live `SectionLabel` call site is a caption or a small
|
|
30
|
-
* heading (a stat-card label, an inline rate label), not an EntityBox-scale
|
|
31
|
-
* panel title. Promoting this constant to `text-lg` would duplicate a voice the
|
|
32
|
-
* kit already owns and inflate those captions.
|
|
33
|
-
*/
|
|
34
|
-
exports.SECTION_LABEL_CLASS = exports.LABEL_VOICE_CLASS;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SECTION_LABEL_CLASS=exports.LABEL_VOICE_CLASS=void 0;exports.LABEL_VOICE_CLASS="text-sm font-medium text-muted-foreground";exports.SECTION_LABEL_CLASS=exports.LABEL_VOICE_CLASS;
|
package/dist/lib/utils.js
CHANGED
|
@@ -1,45 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cn = cn;
|
|
4
|
-
exports.keepOpenOnToast = keepOpenOnToast;
|
|
5
|
-
const clsx_1 = require("clsx");
|
|
6
|
-
const tailwind_merge_1 = require("tailwind-merge");
|
|
7
|
-
/**
|
|
8
|
-
* The kit's button variants are component classes in `@layer components`, not
|
|
9
|
-
* Tailwind utilities, so stock tailwind-merge has no group for them: it kept
|
|
10
|
-
* `button-primary button-destructive` together and let stylesheet source order
|
|
11
|
-
* pick the winner. Declaring the group makes the last one win, like every other
|
|
12
|
-
* conflict `cn` resolves.
|
|
13
|
-
*
|
|
14
|
-
* Variant classes only. `button-base`, `button-disabled`, `button-read-only`
|
|
15
|
-
* and `button-small` compose with a variant instead of conflicting with it, so
|
|
16
|
-
* they stay out of the group and are never merged away.
|
|
17
|
-
*/
|
|
18
|
-
const twMerge = (0, tailwind_merge_1.extendTailwindMerge)({
|
|
19
|
-
extend: {
|
|
20
|
-
classGroups: {
|
|
21
|
-
'sindarian-button-variant': [
|
|
22
|
-
'button-plain',
|
|
23
|
-
'button-primary',
|
|
24
|
-
'button-secondary',
|
|
25
|
-
'button-tertiary',
|
|
26
|
-
'button-outline',
|
|
27
|
-
'button-link',
|
|
28
|
-
'button-destructive'
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
function cn(...inputs) {
|
|
34
|
-
return twMerge((0, clsx_1.clsx)(inputs));
|
|
35
|
-
}
|
|
36
|
-
/** Wraps a Radix `onInteractOutside` so a press on a toast never dismisses the layer under it. */
|
|
37
|
-
function keepOpenOnToast(onInteractOutside) {
|
|
38
|
-
return (event) => {
|
|
39
|
-
if (event.target?.closest('[data-sonner-toaster]')) {
|
|
40
|
-
event.preventDefault();
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
onInteractOutside?.(event);
|
|
44
|
-
};
|
|
45
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.cn=cn;exports.keepOpenOnToast=keepOpenOnToast;const clsx_1=require("clsx");const tailwind_merge_1=require("tailwind-merge");const twMerge=(0,tailwind_merge_1.extendTailwindMerge)({extend:{classGroups:{"sindarian-button-variant":["button-plain","button-primary","button-secondary","button-tertiary","button-outline","button-link","button-destructive"]}}});function cn(...t){return twMerge((0,clsx_1.clsx)(t))}function keepOpenOnToast(t){return e=>{if(e.target?.closest("[data-sonner-toaster]")){e.preventDefault();return}t?.(e)}}
|
|
@@ -1,44 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getThemeScript = getThemeScript;
|
|
4
|
-
/**
|
|
5
|
-
* Pre-paint theme script (FOUC guard). Returns a minified IIFE string that
|
|
6
|
-
* reads the persisted preference from localStorage, resolves it the way
|
|
7
|
-
* ThemeProvider does, and toggles the `.dark` class on the page root element
|
|
8
|
-
* before first paint — so the page never flashes the wrong theme while React
|
|
9
|
-
* hydrates. ThemeProvider owns the class from mount onward.
|
|
10
|
-
*
|
|
11
|
-
* The resolution mirrors ThemeProvider's exactly: an exact "dark"/"light"/
|
|
12
|
-
* "system" stored value wins; anything else — absent or corrupted — falls back
|
|
13
|
-
* to `defaultTheme`, which is then resolved ("dark" → dark, "light" → light,
|
|
14
|
-
* "system" → the media query). Pass the SAME `defaultTheme` you give
|
|
15
|
-
* ThemeProvider, or the two disagree on a first visit.
|
|
16
|
-
* `get-theme-script.test.tsx` pins that agreement case by case.
|
|
17
|
-
*
|
|
18
|
-
* Server-safe: this module references no browser globals at module scope; the
|
|
19
|
-
* returned string runs in the browser only, inside a try/catch.
|
|
20
|
-
*
|
|
21
|
-
* Consumer usage — inject in the page <head>, ideally as the first script:
|
|
22
|
-
*
|
|
23
|
-
* <script dangerouslySetInnerHTML={{ __html: getThemeScript() }} />
|
|
24
|
-
*
|
|
25
|
-
* A dark-by-default app passes both arguments:
|
|
26
|
-
*
|
|
27
|
-
* <script dangerouslySetInnerHTML={{ __html: getThemeScript('app.theme', 'dark') }} />
|
|
28
|
-
*/
|
|
29
|
-
/**
|
|
30
|
-
* JSON string literal with `<` escaped, so no embedded value can close the
|
|
31
|
-
* inline <script> element it is written into. `<` is `<` to the JS parser,
|
|
32
|
-
* so the emitted script still compares against the original text.
|
|
33
|
-
*/
|
|
34
|
-
function jsString(value) {
|
|
35
|
-
return JSON.stringify(value).replace(/</g, '\\u003C');
|
|
36
|
-
}
|
|
37
|
-
function getThemeScript(storageKey = 'sindarian.theme', defaultTheme = 'system') {
|
|
38
|
-
// The storage read gets its OWN try/catch, mirroring ThemeProvider, which
|
|
39
|
-
// isolates the same read. A browser with site data blocked throws on
|
|
40
|
-
// getItem; if that escaped to the outer catch the class would never be
|
|
41
|
-
// applied at all and a dark user would flash light before hydration.
|
|
42
|
-
// Resolution starts from defaultTheme and storage only narrows it.
|
|
43
|
-
return `(function(){try{var r=${jsString(defaultTheme)};try{var t=localStorage.getItem(${jsString(storageKey)});if(t==="dark"||t==="light"||t==="system")r=t}catch(e){}var d=r==="dark"||(r==="system"&&matchMedia("(prefers-color-scheme: dark)").matches);document.documentElement.classList.toggle("dark",d)}catch(e){}})()`;
|
|
44
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getThemeScript=getThemeScript;function jsString(e){return JSON.stringify(e).replace(/</g,"\\u003C")}function getThemeScript(e="sindarian.theme",t="system"){return`(function(){try{var r=${jsString(t)};try{var t=localStorage.getItem(${jsString(e)});if(t==="dark"||t==="light"||t==="system")r=t}catch(e){}var d=r==="dark"||(r==="system"&&matchMedia("(prefers-color-scheme: dark)").matches);document.documentElement.classList.toggle("dark",d)}catch(e){}})()`}
|
package/dist/theme/index.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModeToggle = exports.getThemeScript = exports.useTheme = exports.ThemeProvider = void 0;
|
|
4
|
-
// Owned by lane theme-toasts-charts — see docs/plans/2026-08-26-sindarian-x-retirement/
|
|
5
|
-
var theme_provider_1 = require("./theme-provider");
|
|
6
|
-
Object.defineProperty(exports, "ThemeProvider", { enumerable: true, get: function () { return theme_provider_1.ThemeProvider; } });
|
|
7
|
-
Object.defineProperty(exports, "useTheme", { enumerable: true, get: function () { return theme_provider_1.useTheme; } });
|
|
8
|
-
var get_theme_script_1 = require("./get-theme-script");
|
|
9
|
-
Object.defineProperty(exports, "getThemeScript", { enumerable: true, get: function () { return get_theme_script_1.getThemeScript; } });
|
|
10
|
-
var mode_toggle_1 = require("./mode-toggle");
|
|
11
|
-
Object.defineProperty(exports, "ModeToggle", { enumerable: true, get: function () { return mode_toggle_1.ModeToggle; } });
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ModeToggle=exports.getThemeScript=exports.useTheme=exports.ThemeProvider=void 0;var theme_provider_1=require("./theme-provider");Object.defineProperty(exports,"ThemeProvider",{enumerable:true,get:function(){return theme_provider_1.ThemeProvider}});Object.defineProperty(exports,"useTheme",{enumerable:true,get:function(){return theme_provider_1.useTheme}});var get_theme_script_1=require("./get-theme-script");Object.defineProperty(exports,"getThemeScript",{enumerable:true,get:function(){return get_theme_script_1.getThemeScript}});var mode_toggle_1=require("./mode-toggle");Object.defineProperty(exports,"ModeToggle",{enumerable:true,get:function(){return mode_toggle_1.ModeToggle}});
|
|
@@ -1,48 +1 @@
|
|
|
1
|
-
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ModeToggle = ModeToggle;
|
|
5
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
const lucide_react_1 = require("lucide-react");
|
|
7
|
-
const utils_1 = require("../lib/utils");
|
|
8
|
-
const theme_provider_1 = require("./theme-provider");
|
|
9
|
-
const SEGMENTS = [
|
|
10
|
-
{ value: 'light', icon: lucide_react_1.Sun },
|
|
11
|
-
{ value: 'system', icon: lucide_react_1.Monitor },
|
|
12
|
-
{ value: 'dark', icon: lucide_react_1.Moon }
|
|
13
|
-
];
|
|
14
|
-
const DEFAULT_LABELS = {
|
|
15
|
-
light: 'Light',
|
|
16
|
-
system: 'System',
|
|
17
|
-
dark: 'Dark',
|
|
18
|
-
group: 'Theme'
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Merge overrides over the defaults, IGNORING blank ones. A plain spread lets
|
|
22
|
-
* `labels={{ light: '' }}` win, and every segment here is icon-only — so a blank
|
|
23
|
-
* override leaves a button (or the whole group) with `aria-label=""`, which names
|
|
24
|
-
* it "" AND suppresses the element's other naming routes. That is strictly worse
|
|
25
|
-
* than the missing translation it came from: an untranslated English label is
|
|
26
|
-
* usable, a nameless button is not. A blank string is a missing value, not a
|
|
27
|
-
* chosen one.
|
|
28
|
-
*/
|
|
29
|
-
function resolveLabels(labels) {
|
|
30
|
-
const resolved = { ...DEFAULT_LABELS };
|
|
31
|
-
for (const key of Object.keys(DEFAULT_LABELS)) {
|
|
32
|
-
const override = labels?.[key];
|
|
33
|
-
if (override?.trim())
|
|
34
|
-
resolved[key] = override;
|
|
35
|
-
}
|
|
36
|
-
return resolved;
|
|
37
|
-
}
|
|
38
|
-
function ModeToggle({ labels, className }) {
|
|
39
|
-
const { theme, setTheme } = (0, theme_provider_1.useTheme)();
|
|
40
|
-
const resolved = resolveLabels(labels);
|
|
41
|
-
return ((0, jsx_runtime_1.jsx)("div", { role: "group", "aria-label": resolved.group, className: (0, utils_1.cn)('border-input bg-card grid w-fit grid-cols-3 rounded-md border p-0.5 shadow-[var(--shadow-card)]', className), children: SEGMENTS.map(({ value, icon: Icon }) => {
|
|
42
|
-
const active = value === theme;
|
|
43
|
-
const label = resolved[value];
|
|
44
|
-
return ((0, jsx_runtime_1.jsx)("button", { type: "button", "aria-pressed": active, "aria-label": label, title: label, onClick: () => setTheme(value), className: (0, utils_1.cn)('focus-visible:ring-ring flex items-center justify-center rounded-sm px-2 py-1.5 transition-colors duration-150 ease-out focus-visible:ring-2 focus-visible:outline-none', active
|
|
45
|
-
? 'bg-secondary text-secondary-foreground'
|
|
46
|
-
: 'text-muted-foreground hover:text-foreground'), children: (0, jsx_runtime_1.jsx)(Icon, { className: "size-4", "aria-hidden": true }) }, value));
|
|
47
|
-
}) }));
|
|
48
|
-
}
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ModeToggle=ModeToggle;const jsx_runtime_1=require("react/jsx-runtime");const lucide_react_1=require("lucide-react");const utils_1=require("../lib/utils");const theme_provider_1=require("./theme-provider");const SEGMENTS=[{value:"light",icon:lucide_react_1.Sun},{value:"system",icon:lucide_react_1.Monitor},{value:"dark",icon:lucide_react_1.Moon}];const DEFAULT_LABELS={light:"Light",system:"System",dark:"Dark",group:"Theme"};function resolveLabels(s){const e={...DEFAULT_LABELS};for(const r of Object.keys(DEFAULT_LABELS)){const t=s?.[r];if(t?.trim())e[r]=t}return e}function ModeToggle({labels:s,className:e}){const{theme:r,setTheme:t}=(0,theme_provider_1.useTheme)();const i=resolveLabels(s);return(0,jsx_runtime_1.jsx)("div",{role:"group","aria-label":i.group,className:(0,utils_1.cn)("border-input bg-card grid w-fit grid-cols-3 rounded-md border p-0.5 shadow-[var(--shadow-card)]",e),children:SEGMENTS.map(({value:o,icon:u})=>{const n=o===r;const c=i[o];return(0,jsx_runtime_1.jsx)("button",{type:"button","aria-pressed":n,"aria-label":c,title:c,onClick:()=>t(o),className:(0,utils_1.cn)("focus-visible:ring-ring flex items-center justify-center rounded-sm px-2 py-1.5 transition-colors duration-150 ease-out focus-visible:ring-2 focus-visible:outline-none",n?"bg-secondary text-secondary-foreground":"text-muted-foreground hover:text-foreground"),children:(0,jsx_runtime_1.jsx)(u,{className:"size-4","aria-hidden":true})},o)})})}
|