@lerianstudio/sindarian-ui 1.2.0 → 1.3.0-beta.1
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.d.ts +64 -0
- package/dist/charts/chart.d.ts.map +1 -0
- package/dist/charts/chart.js +232 -0
- package/dist/charts/index.d.ts +3 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +11 -0
- package/dist/components/breadcrumb/get-breadcrumb-paths.js +5 -2
- package/dist/components/form/date-time-picker-field/index.js +1 -1
- package/dist/components/form/file-upload-field/index.d.ts +52 -0
- package/dist/components/form/file-upload-field/index.d.ts.map +1 -0
- package/dist/components/form/file-upload-field/index.js +64 -0
- package/dist/components/form/index.d.ts +3 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +3 -0
- package/dist/components/form/radio-group-field/index.d.ts +32 -0
- package/dist/components/form/radio-group-field/index.d.ts.map +1 -0
- package/dist/components/form/radio-group-field/index.js +36 -0
- package/dist/components/form/renderable-label.d.ts +35 -0
- package/dist/components/form/renderable-label.d.ts.map +1 -0
- package/dist/components/form/renderable-label.js +57 -0
- package/dist/components/form/textarea-field/index.d.ts +31 -0
- package/dist/components/form/textarea-field/index.d.ts.map +1 -0
- package/dist/components/form/textarea-field/index.js +23 -0
- package/dist/components/table/id-table-cell.js +5 -2
- package/dist/components/ui/accordion/index.d.ts +14 -0
- package/dist/components/ui/accordion/index.d.ts.map +1 -0
- package/dist/components/ui/accordion/index.js +62 -0
- package/dist/components/ui/alert-dialog/index.d.ts +15 -0
- package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog/index.js +84 -0
- package/dist/components/ui/autocomplete/index.js +4 -4
- package/dist/components/ui/badge/index.d.ts.map +1 -1
- package/dist/components/ui/badge/index.js +2 -2
- package/dist/components/ui/button/index.d.ts.map +1 -1
- package/dist/components/ui/button/index.js +1 -1
- package/dist/components/ui/copy-field/index.d.ts +56 -0
- package/dist/components/ui/copy-field/index.d.ts.map +1 -0
- package/dist/components/ui/copy-field/index.js +155 -0
- package/dist/components/ui/dialog/styles.css +3 -3
- package/dist/components/ui/file-upload/index.d.ts +94 -0
- package/dist/components/ui/file-upload/index.d.ts.map +1 -0
- package/dist/components/ui/file-upload/index.js +237 -0
- package/dist/components/ui/hover-card/index.d.ts +7 -0
- package/dist/components/ui/hover-card/index.d.ts.map +1 -0
- package/dist/components/ui/hover-card/index.js +51 -0
- package/dist/components/ui/icon-button/styles.css +24 -24
- package/dist/components/ui/input/index.d.ts.map +1 -1
- package/dist/components/ui/input/index.js +6 -5
- package/dist/components/ui/input/styles.css +6 -2
- package/dist/components/ui/otp-input/index.d.ts.map +1 -1
- package/dist/components/ui/otp-input/index.js +1 -1
- package/dist/components/ui/qr-code/index.d.ts +26 -0
- package/dist/components/ui/qr-code/index.d.ts.map +1 -0
- package/dist/components/ui/qr-code/index.js +27 -0
- package/dist/components/ui/radio-group/index.d.ts +6 -0
- package/dist/components/ui/radio-group/index.d.ts.map +1 -0
- package/dist/components/ui/radio-group/index.js +48 -0
- package/dist/components/ui/scroll-area/index.d.ts +6 -0
- package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
- package/dist/components/ui/scroll-area/index.js +49 -0
- package/dist/components/ui/sidebar/index.d.ts +1 -0
- package/dist/components/ui/sidebar/index.d.ts.map +1 -1
- package/dist/components/ui/sidebar/index.js +1 -0
- package/dist/components/ui/sidebar/next-router.cjs +119 -0
- package/dist/components/ui/sidebar/next-router.d.cts +7 -0
- package/dist/components/ui/sidebar/sidebar-item-button.d.ts +2 -2
- package/dist/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -1
- package/dist/components/ui/sidebar/sidebar-item-button.js +3 -5
- package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts +3 -3
- package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -1
- package/dist/components/ui/sidebar/sidebar-item-icon-button.js +5 -7
- package/dist/components/ui/sidebar/sidebar-item.d.ts.map +1 -1
- package/dist/components/ui/sidebar/sidebar-item.js +3 -2
- package/dist/components/ui/sidebar/sidebar-router.d.ts +82 -0
- package/dist/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
- package/dist/components/ui/sidebar/sidebar-router.js +126 -0
- package/dist/components/ui/toast/index.d.ts +1 -1
- package/dist/components/ui/toast/index.d.ts.map +1 -1
- package/dist/components/ui/toggle-group/index.d.ts +18 -0
- package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
- package/dist/components/ui/toggle-group/index.js +87 -0
- package/dist/domain/blotter/index.d.ts +40 -0
- package/dist/domain/blotter/index.d.ts.map +1 -0
- package/dist/domain/blotter/index.js +16 -0
- package/dist/domain/delinquency-aging/aging-buckets.d.ts +57 -0
- package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
- package/dist/domain/delinquency-aging/aging-buckets.js +110 -0
- package/dist/domain/delinquency-aging/index.d.ts +71 -0
- package/dist/domain/delinquency-aging/index.d.ts.map +1 -0
- package/dist/domain/delinquency-aging/index.js +213 -0
- package/dist/domain/figure/index.d.ts +30 -0
- package/dist/domain/figure/index.d.ts.map +1 -0
- package/dist/domain/figure/index.js +18 -0
- package/dist/domain/format.d.ts +79 -0
- package/dist/domain/format.d.ts.map +1 -0
- package/dist/domain/format.js +137 -0
- package/dist/domain/index.d.ts +23 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +43 -0
- package/dist/domain/key-id/index.d.ts +31 -0
- package/dist/domain/key-id/index.d.ts.map +1 -0
- package/dist/domain/key-id/index.js +174 -0
- package/dist/domain/ledger-sheet/index.d.ts +45 -0
- package/dist/domain/ledger-sheet/index.d.ts.map +1 -0
- package/dist/domain/ledger-sheet/index.js +28 -0
- package/dist/domain/money-diff.d.ts +28 -0
- package/dist/domain/money-diff.d.ts.map +1 -0
- package/dist/domain/money-diff.js +48 -0
- package/dist/domain/money-math.d.ts +32 -0
- package/dist/domain/money-math.d.ts.map +1 -0
- package/dist/domain/money-math.js +104 -0
- package/dist/domain/money-text/index.d.ts +37 -0
- package/dist/domain/money-text/index.d.ts.map +1 -0
- package/dist/domain/money-text/index.js +115 -0
- package/dist/domain/section-label/index.d.ts +21 -0
- package/dist/domain/section-label/index.d.ts.map +1 -0
- package/dist/domain/section-label/index.js +13 -0
- package/dist/domain/status-rail/index.d.ts +40 -0
- package/dist/domain/status-rail/index.d.ts.map +1 -0
- package/dist/domain/status-rail/index.js +72 -0
- package/dist/domain/threshold-gauge/index.d.ts +84 -0
- package/dist/domain/threshold-gauge/index.d.ts.map +1 -0
- package/dist/domain/threshold-gauge/index.js +157 -0
- package/dist/enterprise/alert-banner/index.d.ts +30 -0
- package/dist/enterprise/alert-banner/index.d.ts.map +1 -0
- package/dist/enterprise/alert-banner/index.js +24 -0
- package/dist/enterprise/app-shell/index.d.ts +61 -0
- package/dist/enterprise/app-shell/index.d.ts.map +1 -0
- package/dist/enterprise/app-shell/index.js +87 -0
- package/dist/enterprise/cursor-pager/index.d.ts +21 -0
- package/dist/enterprise/cursor-pager/index.d.ts.map +1 -0
- package/dist/enterprise/cursor-pager/index.js +26 -0
- package/dist/enterprise/data-table/index.d.ts +88 -0
- package/dist/enterprise/data-table/index.d.ts.map +1 -0
- package/dist/enterprise/data-table/index.js +245 -0
- package/dist/enterprise/date-range-picker/index.d.ts +37 -0
- package/dist/enterprise/date-range-picker/index.d.ts.map +1 -0
- package/dist/enterprise/date-range-picker/index.js +92 -0
- package/dist/enterprise/detail-panel/index.d.ts +54 -0
- package/dist/enterprise/detail-panel/index.d.ts.map +1 -0
- package/dist/enterprise/detail-panel/index.js +20 -0
- package/dist/enterprise/empty-state/index.d.ts +32 -0
- package/dist/enterprise/empty-state/index.d.ts.map +1 -0
- package/dist/enterprise/empty-state/index.js +13 -0
- package/dist/enterprise/index.d.ts +26 -0
- package/dist/enterprise/index.d.ts.map +1 -0
- package/dist/enterprise/index.js +39 -0
- package/dist/enterprise/number-input/index.d.ts +55 -0
- package/dist/enterprise/number-input/index.d.ts.map +1 -0
- package/dist/enterprise/number-input/index.js +252 -0
- package/dist/enterprise/search-input/index.d.ts +32 -0
- package/dist/enterprise/search-input/index.d.ts.map +1 -0
- package/dist/enterprise/search-input/index.js +121 -0
- package/dist/enterprise/stat-card/index.d.ts +43 -0
- package/dist/enterprise/stat-card/index.d.ts.map +1 -0
- package/dist/enterprise/stat-card/index.js +67 -0
- package/dist/enterprise/status-badge/index.d.ts +31 -0
- package/dist/enterprise/status-badge/index.d.ts.map +1 -0
- package/dist/enterprise/status-badge/index.js +120 -0
- package/dist/enterprise/use-is-mobile.d.ts +20 -0
- package/dist/enterprise/use-is-mobile.d.ts.map +1 -0
- package/dist/enterprise/use-is-mobile.js +68 -0
- package/dist/enterprise/virtualized-table/index.d.ts +26 -0
- package/dist/enterprise/virtualized-table/index.d.ts.map +1 -0
- package/dist/enterprise/virtualized-table/index.js +114 -0
- package/dist/esm/charts/chart.d.ts +64 -0
- package/dist/esm/charts/chart.d.ts.map +1 -0
- package/dist/esm/charts/chart.js +191 -0
- package/dist/esm/charts/index.d.ts +3 -0
- package/dist/esm/charts/index.d.ts.map +1 -0
- package/dist/esm/charts/index.js +3 -0
- package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts +10 -0
- package/dist/esm/components/breadcrumb/get-breadcrumb-paths.d.ts.map +1 -0
- package/dist/esm/components/breadcrumb/get-breadcrumb-paths.js +12 -0
- package/dist/esm/components/breadcrumb/index.d.ts +11 -0
- package/dist/esm/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/esm/components/breadcrumb/index.js +6 -0
- package/dist/esm/components/card/account-card/index.d.ts +32 -0
- package/dist/esm/components/card/account-card/index.d.ts.map +1 -0
- package/dist/esm/components/card/account-card/index.js +53 -0
- package/dist/esm/components/card/basic-card/index.d.ts +6 -0
- package/dist/esm/components/card/basic-card/index.d.ts.map +1 -0
- package/dist/esm/components/card/basic-card/index.js +14 -0
- package/dist/esm/components/card/dashboard-card/index.d.ts +5 -0
- package/dist/esm/components/card/dashboard-card/index.d.ts.map +1 -0
- package/dist/esm/components/card/dashboard-card/index.js +14 -0
- package/dist/esm/components/card/entity-card/index.d.ts +22 -0
- package/dist/esm/components/card/entity-card/index.d.ts.map +1 -0
- package/dist/esm/components/card/entity-card/index.js +48 -0
- package/dist/esm/components/card/index.d.ts +5 -0
- package/dist/esm/components/card/index.d.ts.map +1 -0
- package/dist/esm/components/card/index.js +4 -0
- package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +16 -0
- package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/dialog/confirmation-dialog/index.js +25 -0
- package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts +31 -0
- package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialog/confirmation-dialog/use-confirm-dialog.js +49 -0
- package/dist/esm/components/dialog/index.d.ts +4 -0
- package/dist/esm/components/dialog/index.d.ts.map +1 -0
- package/dist/esm/components/dialog/index.js +3 -0
- package/dist/esm/components/dialog/large-dialog/index.d.ts +11 -0
- package/dist/esm/components/dialog/large-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/dialog/large-dialog/index.js +16 -0
- package/dist/esm/components/entity-box/index.d.ts +17 -0
- package/dist/esm/components/entity-box/index.d.ts.map +1 -0
- package/dist/esm/components/entity-box/index.js +31 -0
- package/dist/esm/components/entity-data-table/index.d.ts +17 -0
- package/dist/esm/components/entity-data-table/index.d.ts.map +1 -0
- package/dist/esm/components/entity-data-table/index.js +17 -0
- package/dist/esm/components/form/combo-box-field/index.d.ts +14 -0
- package/dist/esm/components/form/combo-box-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/combo-box-field/index.js +28 -0
- package/dist/esm/components/form/country-field/index.d.ts +5 -0
- package/dist/esm/components/form/country-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/country-field/index.js +7 -0
- package/dist/esm/components/form/date-picker-field/index.d.ts +21 -0
- package/dist/esm/components/form/date-picker-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/date-picker-field/index.js +38 -0
- package/dist/esm/components/form/date-range-field/index.d.ts +21 -0
- package/dist/esm/components/form/date-range-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/date-range-field/index.js +17 -0
- package/dist/esm/components/form/date-time-picker-field/index.d.ts +23 -0
- package/dist/esm/components/form/date-time-picker-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/date-time-picker-field/index.js +73 -0
- package/dist/esm/components/form/file-upload-field/index.d.ts +52 -0
- package/dist/esm/components/form/file-upload-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/file-upload-field/index.js +60 -0
- package/dist/esm/components/form/index.d.ts +16 -0
- package/dist/esm/components/form/index.d.ts.map +1 -0
- package/dist/esm/components/form/index.js +15 -0
- package/dist/esm/components/form/input-field/index.d.ts +26 -0
- package/dist/esm/components/form/input-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/input-field/index.js +10 -0
- package/dist/esm/components/form/otp-field/index.d.ts +18 -0
- package/dist/esm/components/form/otp-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/otp-field/index.js +15 -0
- package/dist/esm/components/form/pagination-limit-field/index.d.ts +9 -0
- package/dist/esm/components/form/pagination-limit-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/pagination-limit-field/index.js +6 -0
- package/dist/esm/components/form/password-field/index.d.ts +14 -0
- package/dist/esm/components/form/password-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/password-field/index.js +10 -0
- package/dist/esm/components/form/radio-group-field/index.d.ts +32 -0
- package/dist/esm/components/form/radio-group-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/radio-group-field/index.js +32 -0
- package/dist/esm/components/form/renderable-label.d.ts +35 -0
- package/dist/esm/components/form/renderable-label.d.ts.map +1 -0
- package/dist/esm/components/form/renderable-label.js +54 -0
- package/dist/esm/components/form/select-field/index.d.ts +20 -0
- package/dist/esm/components/form/select-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/select-field/index.js +16 -0
- package/dist/esm/components/form/state-field/index.d.ts +10 -0
- package/dist/esm/components/form/state-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/state-field/index.js +35 -0
- package/dist/esm/components/form/switch-field/index.d.ts +15 -0
- package/dist/esm/components/form/switch-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/switch-field/index.js +7 -0
- package/dist/esm/components/form/textarea-field/index.d.ts +31 -0
- package/dist/esm/components/form/textarea-field/index.d.ts.map +1 -0
- package/dist/esm/components/form/textarea-field/index.js +19 -0
- package/dist/esm/components/page/index.d.ts +4 -0
- package/dist/esm/components/page/index.d.ts.map +1 -0
- package/dist/esm/components/page/index.js +11 -0
- package/dist/esm/components/page-header/index.d.ts +33 -0
- package/dist/esm/components/page-header/index.d.ts.map +1 -0
- package/dist/esm/components/page-header/index.js +40 -0
- package/dist/esm/components/pagination/index.d.ts +8 -0
- package/dist/esm/components/pagination/index.d.ts.map +1 -0
- package/dist/esm/components/pagination/index.js +6 -0
- package/dist/esm/components/table/id-table-cell.d.ts +7 -0
- package/dist/esm/components/table/id-table-cell.d.ts.map +1 -0
- package/dist/esm/components/table/id-table-cell.js +12 -0
- package/dist/esm/components/table/index.d.ts +3 -0
- package/dist/esm/components/table/index.d.ts.map +1 -0
- package/dist/esm/components/table/index.js +2 -0
- package/dist/esm/components/table/locked-table-actions.d.ts +7 -0
- package/dist/esm/components/table/locked-table-actions.d.ts.map +1 -0
- package/dist/esm/components/table/locked-table-actions.js +7 -0
- package/dist/esm/components/table/name-table-cell.d.ts +6 -0
- package/dist/esm/components/table/name-table-cell.d.ts.map +1 -0
- package/dist/esm/components/table/name-table-cell.js +6 -0
- package/dist/esm/components/ui/accordion/index.d.ts +14 -0
- package/dist/esm/components/ui/accordion/index.d.ts.map +1 -0
- package/dist/esm/components/ui/accordion/index.js +24 -0
- package/dist/esm/components/ui/alert/index.d.ts +15 -0
- package/dist/esm/components/ui/alert/index.d.ts.map +1 -0
- package/dist/esm/components/ui/alert/index.js +38 -0
- package/dist/esm/components/ui/alert-dialog/index.d.ts +15 -0
- package/dist/esm/components/ui/alert-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/ui/alert-dialog/index.js +39 -0
- package/dist/esm/components/ui/autocomplete/index.d.ts +54 -0
- package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -0
- package/dist/esm/components/ui/autocomplete/index.js +276 -0
- package/dist/esm/components/ui/autosize-textarea/index.d.ts +15 -0
- package/dist/esm/components/ui/autosize-textarea/index.d.ts.map +1 -0
- package/dist/esm/components/ui/autosize-textarea/index.js +51 -0
- package/dist/esm/components/ui/avatar/index.d.ts +7 -0
- package/dist/esm/components/ui/avatar/index.d.ts.map +1 -0
- package/dist/esm/components/ui/avatar/index.js +14 -0
- package/dist/esm/components/ui/badge/index.d.ts +11 -0
- package/dist/esm/components/ui/badge/index.d.ts.map +1 -0
- package/dist/esm/components/ui/badge/index.js +29 -0
- package/dist/esm/components/ui/breadcrumb/index.d.ts +12 -0
- package/dist/esm/components/ui/breadcrumb/index.d.ts.map +1 -0
- package/dist/esm/components/ui/breadcrumb/index.js +27 -0
- package/dist/esm/components/ui/button/index.d.ts +22 -0
- package/dist/esm/components/ui/button/index.d.ts.map +1 -0
- package/dist/esm/components/ui/button/index.js +59 -0
- package/dist/esm/components/ui/calendar/index.d.ts +9 -0
- package/dist/esm/components/ui/calendar/index.d.ts.map +1 -0
- package/dist/esm/components/ui/calendar/index.js +79 -0
- package/dist/esm/components/ui/card/index.d.ts +10 -0
- package/dist/esm/components/ui/card/index.d.ts.map +1 -0
- package/dist/esm/components/ui/card/index.js +24 -0
- package/dist/esm/components/ui/checkbox/index.d.ts +5 -0
- package/dist/esm/components/ui/checkbox/index.d.ts.map +1 -0
- package/dist/esm/components/ui/checkbox/index.js +9 -0
- package/dist/esm/components/ui/collapsible/index.d.ts +6 -0
- package/dist/esm/components/ui/collapsible/index.d.ts.map +1 -0
- package/dist/esm/components/ui/collapsible/index.js +13 -0
- package/dist/esm/components/ui/command/index.d.ts +14 -0
- package/dist/esm/components/ui/command/index.d.ts.map +1 -0
- package/dist/esm/components/ui/command/index.js +51 -0
- package/dist/esm/components/ui/copy-field/index.d.ts +56 -0
- package/dist/esm/components/ui/copy-field/index.d.ts.map +1 -0
- package/dist/esm/components/ui/copy-field/index.js +119 -0
- package/dist/esm/components/ui/dialog/index.d.ts +16 -0
- package/dist/esm/components/ui/dialog/index.d.ts.map +1 -0
- package/dist/esm/components/ui/dialog/index.js +36 -0
- package/dist/esm/components/ui/dropdown-menu/index.d.ts +27 -0
- package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -0
- package/dist/esm/components/ui/dropdown-menu/index.js +57 -0
- package/dist/esm/components/ui/field/index.d.ts +25 -0
- package/dist/esm/components/ui/field/index.d.ts.map +1 -0
- package/dist/esm/components/ui/field/index.js +68 -0
- package/dist/esm/components/ui/file-upload/index.d.ts +94 -0
- package/dist/esm/components/ui/file-upload/index.d.ts.map +1 -0
- package/dist/esm/components/ui/file-upload/index.js +200 -0
- package/dist/esm/components/ui/form.d.ts +39 -0
- package/dist/esm/components/ui/form.d.ts.map +1 -0
- package/dist/esm/components/ui/form.js +67 -0
- package/dist/esm/components/ui/hover-card/index.d.ts +7 -0
- package/dist/esm/components/ui/hover-card/index.d.ts.map +1 -0
- package/dist/esm/components/ui/hover-card/index.js +14 -0
- package/dist/esm/components/ui/icon-button/index.d.ts +13 -0
- package/dist/esm/components/ui/icon-button/index.d.ts.map +1 -0
- package/dist/esm/components/ui/icon-button/index.js +31 -0
- package/dist/esm/components/ui/input/adornment.d.ts +9 -0
- package/dist/esm/components/ui/input/adornment.d.ts.map +1 -0
- package/dist/esm/components/ui/input/adornment.js +17 -0
- package/dist/esm/components/ui/input/index.d.ts +18 -0
- package/dist/esm/components/ui/input/index.d.ts.map +1 -0
- package/dist/esm/components/ui/input/index.js +60 -0
- package/dist/esm/components/ui/label/index.d.ts +7 -0
- package/dist/esm/components/ui/label/index.d.ts.map +1 -0
- package/dist/esm/components/ui/label/index.js +10 -0
- package/dist/esm/components/ui/loading-button/index.d.ts +8 -0
- package/dist/esm/components/ui/loading-button/index.d.ts.map +1 -0
- package/dist/esm/components/ui/loading-button/index.js +7 -0
- package/dist/esm/components/ui/multiple-select/index.d.ts +91 -0
- package/dist/esm/components/ui/multiple-select/index.d.ts.map +1 -0
- package/dist/esm/components/ui/multiple-select/index.js +196 -0
- package/dist/esm/components/ui/otp-input/index.d.ts +13 -0
- package/dist/esm/components/ui/otp-input/index.d.ts.map +1 -0
- package/dist/esm/components/ui/otp-input/index.js +21 -0
- package/dist/esm/components/ui/paper/index.d.ts +4 -0
- package/dist/esm/components/ui/paper/index.d.ts.map +1 -0
- package/dist/esm/components/ui/paper/index.js +5 -0
- package/dist/esm/components/ui/paper-collapsible/index.d.ts +9 -0
- package/dist/esm/components/ui/paper-collapsible/index.d.ts.map +1 -0
- package/dist/esm/components/ui/paper-collapsible/index.js +19 -0
- package/dist/esm/components/ui/popover/index.d.ts +8 -0
- package/dist/esm/components/ui/popover/index.d.ts.map +1 -0
- package/dist/esm/components/ui/popover/index.js +17 -0
- package/dist/esm/components/ui/progress/index.d.ts +8 -0
- package/dist/esm/components/ui/progress/index.d.ts.map +1 -0
- package/dist/esm/components/ui/progress/index.js +8 -0
- package/dist/esm/components/ui/qr-code/index.d.ts +26 -0
- package/dist/esm/components/ui/qr-code/index.d.ts.map +1 -0
- package/dist/esm/components/ui/qr-code/index.js +24 -0
- package/dist/esm/components/ui/radio-group/index.d.ts +6 -0
- package/dist/esm/components/ui/radio-group/index.d.ts.map +1 -0
- package/dist/esm/components/ui/radio-group/index.js +12 -0
- package/dist/esm/components/ui/scroll-area/index.d.ts +6 -0
- package/dist/esm/components/ui/scroll-area/index.d.ts.map +1 -0
- package/dist/esm/components/ui/scroll-area/index.js +13 -0
- package/dist/esm/components/ui/select/index.d.ts +18 -0
- package/dist/esm/components/ui/select/index.d.ts.map +1 -0
- package/dist/esm/components/ui/select/index.js +47 -0
- package/dist/esm/components/ui/separator/index.d.ts +5 -0
- package/dist/esm/components/ui/separator/index.d.ts.map +1 -0
- package/dist/esm/components/ui/separator/index.js +8 -0
- package/dist/esm/components/ui/sheet/index.d.ts +19 -0
- package/dist/esm/components/ui/sheet/index.d.ts.map +1 -0
- package/dist/esm/components/ui/sheet/index.js +59 -0
- package/dist/esm/components/ui/sidebar/index.d.ts +11 -0
- package/dist/esm/components/ui/sidebar/index.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/index.js +10 -0
- package/dist/esm/components/ui/sidebar/next-router.cjs +119 -0
- package/dist/esm/components/ui/sidebar/next-router.d.cts +7 -0
- package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts +3 -0
- package/dist/esm/components/ui/sidebar/sidebar-back-button.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-back-button.js +5 -0
- package/dist/esm/components/ui/sidebar/sidebar-components.d.ts +23 -0
- package/dist/esm/components/ui/sidebar/sidebar-components.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-components.js +15 -0
- package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts +7 -0
- package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +12 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts +12 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-button.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-button.js +18 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts +12 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-collapsible.js +44 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts +12 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-item-icon-button.js +14 -0
- package/dist/esm/components/ui/sidebar/sidebar-item.d.ts +13 -0
- package/dist/esm/components/ui/sidebar/sidebar-item.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-item.js +16 -0
- package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts +12 -0
- package/dist/esm/components/ui/sidebar/sidebar-provider.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-provider.js +51 -0
- package/dist/esm/components/ui/sidebar/sidebar-root.d.ts +3 -0
- package/dist/esm/components/ui/sidebar/sidebar-root.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-root.js +20 -0
- package/dist/esm/components/ui/sidebar/sidebar-router.d.ts +82 -0
- package/dist/esm/components/ui/sidebar/sidebar-router.d.ts.map +1 -0
- package/dist/esm/components/ui/sidebar/sidebar-router.js +89 -0
- package/dist/esm/components/ui/skeleton/index.d.ts +3 -0
- package/dist/esm/components/ui/skeleton/index.d.ts.map +1 -0
- package/dist/esm/components/ui/skeleton/index.js +6 -0
- package/dist/esm/components/ui/stepper/index.d.ts +18 -0
- package/dist/esm/components/ui/stepper/index.d.ts.map +1 -0
- package/dist/esm/components/ui/stepper/index.js +20 -0
- package/dist/esm/components/ui/switch/index.d.ts +5 -0
- package/dist/esm/components/ui/switch/index.d.ts.map +1 -0
- package/dist/esm/components/ui/switch/index.js +8 -0
- package/dist/esm/components/ui/table/index.d.ts +21 -0
- package/dist/esm/components/ui/table/index.d.ts.map +1 -0
- package/dist/esm/components/ui/table/index.js +44 -0
- package/dist/esm/components/ui/tabs/index.d.ts +8 -0
- package/dist/esm/components/ui/tabs/index.d.ts.map +1 -0
- package/dist/esm/components/ui/tabs/index.js +17 -0
- package/dist/esm/components/ui/textarea/index.d.ts +4 -0
- package/dist/esm/components/ui/textarea/index.d.ts.map +1 -0
- package/dist/esm/components/ui/textarea/index.js +6 -0
- package/dist/esm/components/ui/time-picker/index.d.ts +18 -0
- package/dist/esm/components/ui/time-picker/index.d.ts.map +1 -0
- package/dist/esm/components/ui/time-picker/index.js +49 -0
- package/dist/esm/components/ui/toast/index.d.ts +18 -0
- package/dist/esm/components/ui/toast/index.d.ts.map +1 -0
- package/dist/esm/components/ui/toast/index.js +2 -0
- package/dist/esm/components/ui/toast/toaster.d.ts +6 -0
- package/dist/esm/components/ui/toast/toaster.d.ts.map +1 -0
- package/dist/esm/components/ui/toast/toaster.js +8 -0
- package/dist/esm/components/ui/toggle-group/index.d.ts +18 -0
- package/dist/esm/components/ui/toggle-group/index.d.ts.map +1 -0
- package/dist/esm/components/ui/toggle-group/index.js +51 -0
- package/dist/esm/components/ui/tooltip/index.d.ts +11 -0
- package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -0
- package/dist/esm/components/ui/tooltip/index.js +28 -0
- package/dist/esm/domain/blotter/index.d.ts +40 -0
- package/dist/esm/domain/blotter/index.d.ts.map +1 -0
- package/dist/esm/domain/blotter/index.js +12 -0
- package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts +57 -0
- package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
- package/dist/esm/domain/delinquency-aging/aging-buckets.js +105 -0
- package/dist/esm/domain/delinquency-aging/index.d.ts +71 -0
- package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -0
- package/dist/esm/domain/delinquency-aging/index.js +209 -0
- package/dist/esm/domain/figure/index.d.ts +30 -0
- package/dist/esm/domain/figure/index.d.ts.map +1 -0
- package/dist/esm/domain/figure/index.js +14 -0
- package/dist/esm/domain/format.d.ts +79 -0
- package/dist/esm/domain/format.d.ts.map +1 -0
- package/dist/esm/domain/format.js +128 -0
- package/dist/esm/domain/index.d.ts +23 -0
- package/dist/esm/domain/index.d.ts.map +1 -0
- package/dist/esm/domain/index.js +19 -0
- package/dist/esm/domain/key-id/index.d.ts +31 -0
- package/dist/esm/domain/key-id/index.d.ts.map +1 -0
- package/dist/esm/domain/key-id/index.js +169 -0
- package/dist/esm/domain/ledger-sheet/index.d.ts +45 -0
- package/dist/esm/domain/ledger-sheet/index.d.ts.map +1 -0
- package/dist/esm/domain/ledger-sheet/index.js +24 -0
- package/dist/esm/domain/money-diff.d.ts +28 -0
- package/dist/esm/domain/money-diff.d.ts.map +1 -0
- package/dist/esm/domain/money-diff.js +45 -0
- package/dist/esm/domain/money-math.d.ts +32 -0
- package/dist/esm/domain/money-math.d.ts.map +1 -0
- package/dist/esm/domain/money-math.js +98 -0
- package/dist/esm/domain/money-text/index.d.ts +37 -0
- package/dist/esm/domain/money-text/index.d.ts.map +1 -0
- package/dist/esm/domain/money-text/index.js +110 -0
- package/dist/esm/domain/section-label/index.d.ts +21 -0
- package/dist/esm/domain/section-label/index.d.ts.map +1 -0
- package/dist/esm/domain/section-label/index.js +10 -0
- package/dist/esm/domain/status-rail/index.d.ts +40 -0
- package/dist/esm/domain/status-rail/index.d.ts.map +1 -0
- package/dist/esm/domain/status-rail/index.js +67 -0
- package/dist/esm/domain/threshold-gauge/index.d.ts +84 -0
- package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -0
- package/dist/esm/domain/threshold-gauge/index.js +153 -0
- package/dist/esm/enterprise/alert-banner/index.d.ts +30 -0
- package/dist/esm/enterprise/alert-banner/index.d.ts.map +1 -0
- package/dist/esm/enterprise/alert-banner/index.js +21 -0
- package/dist/esm/enterprise/app-shell/index.d.ts +61 -0
- package/dist/esm/enterprise/app-shell/index.d.ts.map +1 -0
- package/dist/esm/enterprise/app-shell/index.js +51 -0
- package/dist/esm/enterprise/cursor-pager/index.d.ts +21 -0
- package/dist/esm/enterprise/cursor-pager/index.d.ts.map +1 -0
- package/dist/esm/enterprise/cursor-pager/index.js +23 -0
- package/dist/esm/enterprise/data-table/index.d.ts +88 -0
- package/dist/esm/enterprise/data-table/index.d.ts.map +1 -0
- package/dist/esm/enterprise/data-table/index.js +242 -0
- package/dist/esm/enterprise/date-range-picker/index.d.ts +37 -0
- package/dist/esm/enterprise/date-range-picker/index.d.ts.map +1 -0
- package/dist/esm/enterprise/date-range-picker/index.js +89 -0
- package/dist/esm/enterprise/detail-panel/index.d.ts +54 -0
- package/dist/esm/enterprise/detail-panel/index.d.ts.map +1 -0
- package/dist/esm/enterprise/detail-panel/index.js +17 -0
- package/dist/esm/enterprise/empty-state/index.d.ts +32 -0
- package/dist/esm/enterprise/empty-state/index.d.ts.map +1 -0
- package/dist/esm/enterprise/empty-state/index.js +10 -0
- package/dist/esm/enterprise/index.d.ts +26 -0
- package/dist/esm/enterprise/index.d.ts.map +1 -0
- package/dist/esm/enterprise/index.js +22 -0
- package/dist/esm/enterprise/number-input/index.d.ts +55 -0
- package/dist/esm/enterprise/number-input/index.d.ts.map +1 -0
- package/dist/esm/enterprise/number-input/index.js +214 -0
- package/dist/esm/enterprise/search-input/index.d.ts +32 -0
- package/dist/esm/enterprise/search-input/index.d.ts.map +1 -0
- package/dist/esm/enterprise/search-input/index.js +85 -0
- package/dist/esm/enterprise/stat-card/index.d.ts +43 -0
- package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -0
- package/dist/esm/enterprise/stat-card/index.js +64 -0
- package/dist/esm/enterprise/status-badge/index.d.ts +31 -0
- package/dist/esm/enterprise/status-badge/index.d.ts.map +1 -0
- package/dist/esm/enterprise/status-badge/index.js +116 -0
- package/dist/esm/enterprise/use-is-mobile.d.ts +20 -0
- package/dist/esm/enterprise/use-is-mobile.d.ts.map +1 -0
- package/dist/esm/enterprise/use-is-mobile.js +31 -0
- package/dist/esm/enterprise/virtualized-table/index.d.ts +26 -0
- package/dist/esm/enterprise/virtualized-table/index.d.ts.map +1 -0
- package/dist/esm/enterprise/virtualized-table/index.js +111 -0
- package/dist/esm/hooks/use-click-away.d.ts +9 -0
- package/dist/esm/hooks/use-click-away.d.ts.map +1 -0
- package/dist/esm/hooks/use-click-away.js +22 -0
- package/dist/esm/hooks/use-pagination.d.ts +13 -0
- package/dist/esm/hooks/use-pagination.d.ts.map +1 -0
- package/dist/esm/hooks/use-pagination.js +38 -0
- package/dist/esm/hooks/use-stepper.d.ts +11 -0
- package/dist/esm/hooks/use-stepper.d.ts.map +1 -0
- package/dist/esm/hooks/use-stepper.js +22 -0
- package/dist/esm/hooks/use-time.d.ts +6 -0
- package/dist/esm/hooks/use-time.d.ts.map +1 -0
- package/dist/esm/hooks/use-time.js +13 -0
- package/dist/esm/hooks/use-toast.d.ts +31 -0
- package/dist/esm/hooks/use-toast.d.ts.map +1 -0
- package/dist/esm/hooks/use-toast.js +63 -0
- package/dist/esm/index.d.ts +69 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +74 -0
- package/dist/esm/lib/storage/get-storage-object.d.ts +2 -0
- package/dist/esm/lib/storage/get-storage-object.d.ts.map +1 -0
- package/dist/esm/lib/storage/get-storage-object.js +17 -0
- package/dist/esm/lib/storage/get-storage.d.ts +2 -0
- package/dist/esm/lib/storage/get-storage.d.ts.map +1 -0
- package/dist/esm/lib/storage/get-storage.js +14 -0
- package/dist/esm/lib/storage/index.d.ts +3 -0
- package/dist/esm/lib/storage/index.d.ts.map +1 -0
- package/dist/esm/lib/storage/index.js +2 -0
- package/dist/esm/lib/typography.d.ts +17 -0
- package/dist/esm/lib/typography.d.ts.map +1 -0
- package/dist/esm/lib/typography.js +16 -0
- package/dist/esm/lib/utils.d.ts +3 -0
- package/dist/esm/lib/utils.d.ts.map +1 -0
- package/dist/esm/lib/utils.js +5 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/public/countries.json +21210 -0
- package/dist/esm/theme/get-theme-script.d.ts +3 -0
- package/dist/esm/theme/get-theme-script.d.ts.map +1 -0
- package/dist/esm/theme/get-theme-script.js +41 -0
- package/dist/esm/theme/index.d.ts +6 -0
- package/dist/esm/theme/index.d.ts.map +1 -0
- package/dist/esm/theme/index.js +4 -0
- package/dist/esm/theme/mode-toggle.d.ts +25 -0
- package/dist/esm/theme/mode-toggle.d.ts.map +1 -0
- package/dist/esm/theme/mode-toggle.js +45 -0
- package/dist/esm/theme/theme-provider.d.ts +38 -0
- package/dist/esm/theme/theme-provider.d.ts.map +1 -0
- package/dist/esm/theme/theme-provider.js +112 -0
- package/dist/esm/toast/helpers.d.ts +16 -0
- package/dist/esm/toast/helpers.d.ts.map +1 -0
- package/dist/esm/toast/helpers.js +29 -0
- package/dist/esm/toast/index.d.ts +3 -0
- package/dist/esm/toast/index.d.ts.map +1 -0
- package/dist/esm/toast/index.js +4 -0
- package/dist/esm/types/metadata-type.d.ts +2 -0
- package/dist/esm/types/metadata-type.d.ts.map +1 -0
- package/dist/esm/types/metadata-type.js +1 -0
- package/dist/esm/utils/countries.cjs +17 -0
- package/dist/esm/utils/countries.d.cts +14 -0
- package/dist/esm/utils/country-utils.d.ts +17 -0
- package/dist/esm/utils/country-utils.d.ts.map +1 -0
- package/dist/esm/utils/country-utils.js +18 -0
- package/dist/esm/utils/currency-codes.d.ts +5 -0
- package/dist/esm/utils/currency-codes.d.ts.map +1 -0
- package/dist/esm/utils/currency-codes.js +181 -0
- package/dist/globals.css +74 -0
- package/dist/hooks/use-toast.d.ts +1 -1
- package/dist/hooks/use-toast.d.ts.map +1 -1
- package/dist/hooks/use-toast.js +4 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -1
- package/dist/lib/storage/get-storage-object.d.ts.map +1 -1
- package/dist/lib/storage/get-storage-object.js +6 -2
- package/dist/lib/typography.d.ts +17 -0
- package/dist/lib/typography.d.ts.map +1 -0
- package/dist/lib/typography.js +19 -0
- package/dist/public/countries.json +21200 -21200
- package/dist/theme/get-theme-script.d.ts +3 -0
- package/dist/theme/get-theme-script.d.ts.map +1 -0
- package/dist/theme/get-theme-script.js +44 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +11 -0
- package/dist/theme/mode-toggle.d.ts +25 -0
- package/dist/theme/mode-toggle.d.ts.map +1 -0
- package/dist/theme/mode-toggle.js +48 -0
- package/dist/theme/theme-provider.d.ts +38 -0
- package/dist/theme/theme-provider.d.ts.map +1 -0
- package/dist/theme/theme-provider.js +149 -0
- package/dist/toast/helpers.d.ts +16 -0
- package/dist/toast/helpers.d.ts.map +1 -0
- package/dist/toast/helpers.js +34 -0
- package/dist/toast/index.d.ts +3 -0
- package/dist/toast/index.d.ts.map +1 -0
- package/dist/toast/index.js +10 -0
- package/dist/utils/countries.cjs +17 -0
- package/dist/utils/countries.d.cts +14 -0
- package/dist/utils/country-utils.js +2 -2
- package/package.json +55 -18
- package/dist/components/ui/label/label.stories.d.ts +0 -5
- package/dist/components/ui/label/label.stories.d.ts.map +0 -1
- package/dist/components/ui/label/label.stories.js +0 -24
- package/dist/components/ui/sidebar/sidebar-provider.test.d.ts +0 -2
- package/dist/components/ui/sidebar/sidebar-provider.test.d.ts.map +0 -1
- package/dist/components/ui/sidebar/sidebar-provider.test.js +0 -170
- package/dist/hooks/use-click-away.test.d.ts +0 -2
- package/dist/hooks/use-click-away.test.d.ts.map +0 -1
- package/dist/hooks/use-click-away.test.js +0 -39
- package/dist/hooks/use-stepper.test.d.ts +0 -2
- package/dist/hooks/use-stepper.test.d.ts.map +0 -1
- package/dist/hooks/use-stepper.test.js +0 -45
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gaugeBand = gaugeBand;
|
|
4
|
+
exports.ThresholdGauge = ThresholdGauge;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* ThresholdGauge — where a value sits across ordered, NAMED bands.
|
|
8
|
+
*
|
|
9
|
+
* A metric is rarely interesting in isolation; what matters is which band it has
|
|
10
|
+
* crossed. A credit utilization of 95% is a breach; a liquidity coverage ratio
|
|
11
|
+
* of 95% may be perfectly calm. So a gauge that paints a smooth red→green
|
|
12
|
+
* gradient is lying by implication — it suggests a continuum where the business
|
|
13
|
+
* has hard thresholds. This atom STATES the thresholds: it resolves the current
|
|
14
|
+
* band (low / warn / breach), names it with a glyph + an sr-only word + a tint,
|
|
15
|
+
* and marks the band edges on the bar so the reader sees the line the value
|
|
16
|
+
* crossed, not a vibe.
|
|
17
|
+
*
|
|
18
|
+
* <ThresholdGauge value={0.92} max={1} warn={0.8} breach={0.9} format="percent"
|
|
19
|
+
* direction="higher-is-worse" label="Utilização do limite" /> // breach
|
|
20
|
+
* <ThresholdGauge value={1.18} max={2} warn={1} breach={0.9} format="ratio"
|
|
21
|
+
* direction="lower-is-worse" label="Índice de cobertura" /> // low (calm)
|
|
22
|
+
*
|
|
23
|
+
* DIRECTION is mandatory because the same numbers mean opposite things:
|
|
24
|
+
* - higher-is-worse: the value climbs INTO danger (warn < breach). Utilization,
|
|
25
|
+
* concentration, error rate.
|
|
26
|
+
* - lower-is-worse: the value FALLS into danger (breach < warn). Coverage,
|
|
27
|
+
* liquidity, capital adequacy.
|
|
28
|
+
*
|
|
29
|
+
* INVARIANT (strict edges by DEFAULT): a band escalation requires the value to
|
|
30
|
+
* be STRICTLY beyond the edge. A value sitting exactly ON a threshold belongs to
|
|
31
|
+
* the calmer band, not the louder one — `gaugeBand` encodes this so an on-edge
|
|
32
|
+
* utilization of exactly the breach line still reads as warn, never a surprise
|
|
33
|
+
* breach. A consumer whose own enforcement is INCLUSIVE (a quota blocking at
|
|
34
|
+
* `used >= limit`) opts out with `edges="inclusive"`, which escalates ON the
|
|
35
|
+
* edge in both directions.
|
|
36
|
+
*
|
|
37
|
+
* The current band is the load-bearing signal and it never rides on color alone
|
|
38
|
+
* (WCAG 1.4.1): a glyph leads, an sr-only word names it, the tint only
|
|
39
|
+
* reinforces. The numeric position reads via a mono `Figure`, never inferred
|
|
40
|
+
* from the bar geometry — and a consumer forced to clamp `value` to keep
|
|
41
|
+
* `aria-valuenow` in range can still print the true figure via `displayValue`.
|
|
42
|
+
*
|
|
43
|
+
* Pure display: server-safe, no directive.
|
|
44
|
+
*/
|
|
45
|
+
const lucide_react_1 = require("lucide-react");
|
|
46
|
+
const typography_1 = require("../../lib/typography");
|
|
47
|
+
const utils_1 = require("../../lib/utils");
|
|
48
|
+
const figure_1 = require("../figure");
|
|
49
|
+
const format_1 = require("../format");
|
|
50
|
+
const money_text_1 = require("../money-text");
|
|
51
|
+
/** Band → glyph + tint + accessible word. The glyph and sr-only word are the
|
|
52
|
+
* load-bearing cue; the tint only reinforces, so the band survives grayscale
|
|
53
|
+
* and color-vision deficiency. The words are pt-BR defaults — a consumer in
|
|
54
|
+
* another locale overrides them via the `bandLabels` prop. */
|
|
55
|
+
const BAND = {
|
|
56
|
+
low: {
|
|
57
|
+
Icon: lucide_react_1.ShieldCheck,
|
|
58
|
+
tint: 'text-system-success',
|
|
59
|
+
word: 'Dentro do limite'
|
|
60
|
+
},
|
|
61
|
+
warn: {
|
|
62
|
+
Icon: lucide_react_1.TriangleAlert,
|
|
63
|
+
tint: 'text-system-alert',
|
|
64
|
+
word: 'Próximo do limite'
|
|
65
|
+
},
|
|
66
|
+
breach: {
|
|
67
|
+
Icon: lucide_react_1.OctagonX,
|
|
68
|
+
tint: 'text-destructive',
|
|
69
|
+
word: 'Limite ultrapassado'
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
/** Track fill tint per band — kept distinct from the glyph tint so the bar can
|
|
73
|
+
* use the softer wash while the glyph carries the full tint. */
|
|
74
|
+
const BAND_FILL = {
|
|
75
|
+
low: 'bg-system-success',
|
|
76
|
+
warn: 'bg-system-alert',
|
|
77
|
+
breach: 'bg-destructive'
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Resolve which band a value occupies. Pure — the testable heart of the atom.
|
|
81
|
+
*
|
|
82
|
+
* STRICT edges by default: a value exactly ON a threshold stays in the CALMER
|
|
83
|
+
* band; escalation needs the value strictly past.
|
|
84
|
+
*
|
|
85
|
+
* - higher-is-worse: `value > breach` → breach; `value > warn` → warn; else low.
|
|
86
|
+
* - lower-is-worse: `value < breach` → breach; `value < warn` → warn; else low.
|
|
87
|
+
*
|
|
88
|
+
* `thresholds.edges = 'inclusive'` opts into `>=` / `<=` instead, for a consumer
|
|
89
|
+
* whose enforcement is inclusive. Omitted or 'strict' → the behaviour above.
|
|
90
|
+
*
|
|
91
|
+
* Non-finite input degrades to 'low' rather than throwing — a missing reading is
|
|
92
|
+
* not, by itself, an alarm.
|
|
93
|
+
*/
|
|
94
|
+
function gaugeBand(value, thresholds, direction) {
|
|
95
|
+
if (!Number.isFinite(value))
|
|
96
|
+
return 'low';
|
|
97
|
+
const { warn, breach, edges = 'strict' } = thresholds;
|
|
98
|
+
const beyond = direction === 'higher-is-worse'
|
|
99
|
+
? (edge) => (edges === 'inclusive' ? value >= edge : value > edge)
|
|
100
|
+
: (edge) => (edges === 'inclusive' ? value <= edge : value < edge);
|
|
101
|
+
if (beyond(breach))
|
|
102
|
+
return 'breach';
|
|
103
|
+
if (beyond(warn))
|
|
104
|
+
return 'warn';
|
|
105
|
+
return 'low';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* An empty or whitespace-only string is not a name. `??` only skips null and
|
|
109
|
+
* undefined, so `ariaLabel=""` or `bandLabels={{ breach: '' }}` won the fallback
|
|
110
|
+
* chain and produced an EMPTY accessible name — worse than the missing one it
|
|
111
|
+
* was meant to fix, because `aria-label=""` also suppresses the element's other
|
|
112
|
+
* naming routes. Normalizing to undefined lets the chain fall through properly.
|
|
113
|
+
*/
|
|
114
|
+
function nonEmpty(value) {
|
|
115
|
+
return value != null && value.trim() !== '' ? value : undefined;
|
|
116
|
+
}
|
|
117
|
+
/** Clamp a value into [min, max] then normalize to a 0..1 fraction of the
|
|
118
|
+
* track. A zero-width track (max <= min) collapses to 0 rather than dividing by
|
|
119
|
+
* zero. */
|
|
120
|
+
function trackFraction(value, min, max) {
|
|
121
|
+
if (!Number.isFinite(value) || max <= min)
|
|
122
|
+
return 0;
|
|
123
|
+
const clamped = Math.max(min, Math.min(max, value));
|
|
124
|
+
return (clamped - min) / (max - min);
|
|
125
|
+
}
|
|
126
|
+
/** Format the value for the mono readout per `format`. Money routes through
|
|
127
|
+
* MoneyText (never a hand-rolled string); the rest through the format helpers. */
|
|
128
|
+
function readout(value, format, currency, locale) {
|
|
129
|
+
if (!Number.isFinite(value))
|
|
130
|
+
return format_1.NO_VALUE;
|
|
131
|
+
if (format === 'money') {
|
|
132
|
+
return ((0, jsx_runtime_1.jsx)(money_text_1.MoneyText, { amount: value, currency: currency, signColor: false, locale: locale }));
|
|
133
|
+
}
|
|
134
|
+
if (format === 'percent')
|
|
135
|
+
return (0, format_1.formatPercent)(value, { unit: 'percent', locale });
|
|
136
|
+
if (format === 'ratio')
|
|
137
|
+
return (0, format_1.formatPercent)(value, { unit: 'ratio', locale });
|
|
138
|
+
return (0, format_1.formatCount)(value, locale);
|
|
139
|
+
}
|
|
140
|
+
function ThresholdGauge({ value, displayValue, min = 0, max, warn, breach, edges, direction, format = 'percent', currency, locale, label, ariaLabel, bandLabels, className }) {
|
|
141
|
+
const band = gaugeBand(value, { warn, breach, edges }, direction);
|
|
142
|
+
const { Icon, tint } = BAND[band];
|
|
143
|
+
// The sr-only word is the band's only non-chromatic cue, so it is also the
|
|
144
|
+
// string a trilingual consumer has to translate. pt-BR default, override wins.
|
|
145
|
+
// Every rung of the naming chain is normalized: an empty override must fall
|
|
146
|
+
// through to the next source rather than win with a blank string.
|
|
147
|
+
const word = nonEmpty(bandLabels?.[band]) ?? BAND[band].word;
|
|
148
|
+
const caption = nonEmpty(label);
|
|
149
|
+
// A `role="meter"` with no accessible name is announced as a naked number.
|
|
150
|
+
// The band word is always present and always meaningful, so the meter is named
|
|
151
|
+
// even when a consumer renders the gauge without a visible caption.
|
|
152
|
+
const meterName = nonEmpty(ariaLabel) ?? caption ?? word;
|
|
153
|
+
const valuePct = trackFraction(value, min, max) * 100;
|
|
154
|
+
const warnPct = trackFraction(warn, min, max) * 100;
|
|
155
|
+
const breachPct = trackFraction(breach, min, max) * 100;
|
|
156
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('flex flex-col gap-2', className), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-baseline justify-between gap-3", children: [caption != null ? ((0, jsx_runtime_1.jsx)("span", { className: typography_1.LABEL_VOICE_CLASS, children: caption })) : ((0, jsx_runtime_1.jsx)("span", {})), (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-center gap-1.5', tint), children: [(0, jsx_runtime_1.jsx)(Icon, { "aria-hidden": true, className: "size-4 shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { className: "sr-only", children: [word, ": "] }), (0, jsx_runtime_1.jsx)(figure_1.Figure, { size: "row", className: tint, children: readout(displayValue ?? value, format, currency, locale) })] })] }), (0, jsx_runtime_1.jsxs)("div", { role: "meter", "aria-valuenow": Number.isFinite(value) ? value : undefined, "aria-valuemin": min, "aria-valuemax": max, "aria-label": meterName, className: "border-border bg-muted relative h-2 w-full overflow-hidden rounded-full border", children: [(0, jsx_runtime_1.jsx)("div", { "aria-hidden": true, className: (0, utils_1.cn)('absolute inset-y-0 left-0 rounded-full', BAND_FILL[band]), style: { width: `${valuePct}%` } }), (0, jsx_runtime_1.jsx)("span", { "aria-hidden": true, className: "bg-system-alert absolute inset-y-0 w-px", style: { left: `${warnPct}%` } }), (0, jsx_runtime_1.jsx)("span", { "aria-hidden": true, className: "bg-destructive absolute inset-y-0 w-px", style: { left: `${breachPct}%` } })] })] }));
|
|
157
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AlertBanner — the console's semantic message box. A rounded, hairline-bordered
|
|
3
|
+
* panel with a tinted background whose tone escalates by severity. The title
|
|
4
|
+
* carries the tone color (font-medium); the body stays foreground for
|
|
5
|
+
* readability; an optional `detail` slot renders mono diagnostic text (an error
|
|
6
|
+
* code, a failed id) below the body.
|
|
7
|
+
*
|
|
8
|
+
* <AlertBanner tone="destructive" title="Import failed">
|
|
9
|
+
* The file could not be parsed. No rows were ingested.
|
|
10
|
+
* </AlertBanner>
|
|
11
|
+
*
|
|
12
|
+
* Renders `role="alert"`. Tones map to sindarian-ui's `system-*` semantic token
|
|
13
|
+
* families, so they track the active light/dark palette automatically.
|
|
14
|
+
*/
|
|
15
|
+
import type { ReactNode } from 'react';
|
|
16
|
+
export type AlertBannerTone = 'destructive' | 'warning' | 'info' | 'success' | 'neutral';
|
|
17
|
+
export type AlertBannerProps = {
|
|
18
|
+
tone?: AlertBannerTone;
|
|
19
|
+
/** Bold lead line, carries the tone color. */
|
|
20
|
+
title?: ReactNode;
|
|
21
|
+
/** Body copy (foreground, for readability). */
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
/** Optional mono diagnostic detail rendered below the body. */
|
|
24
|
+
detail?: ReactNode;
|
|
25
|
+
/** Optional leading icon (e.g. a lucide glyph), aligned to the title. */
|
|
26
|
+
icon?: ReactNode;
|
|
27
|
+
className?: string;
|
|
28
|
+
};
|
|
29
|
+
export declare function AlertBanner({ tone, title, children, detail, icon, className }: AlertBannerProps): import("react").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/alert-banner/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,MAAM,eAAe,GACzB,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAoB5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,yEAAyE;IACzE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAgB,EAChB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,SAAS,EACV,EAAE,gBAAgB,+BAmClB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlertBanner = AlertBanner;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const utils_1 = require("../../lib/utils");
|
|
6
|
+
/** Container tint + border per tone. The title color is applied separately so
|
|
7
|
+
* the body copy stays high-contrast foreground. */
|
|
8
|
+
const TONE_CONTAINER = {
|
|
9
|
+
destructive: 'border-system-error-border bg-system-error-surface',
|
|
10
|
+
warning: 'border-system-alert-border bg-system-alert-surface',
|
|
11
|
+
info: 'border-system-info-border bg-system-info-surface',
|
|
12
|
+
success: 'border-system-success-border bg-system-success-surface',
|
|
13
|
+
neutral: 'border-border bg-muted/50'
|
|
14
|
+
};
|
|
15
|
+
const TONE_TITLE = {
|
|
16
|
+
destructive: 'text-system-error-text',
|
|
17
|
+
warning: 'text-system-alert-text',
|
|
18
|
+
info: 'text-system-info-text',
|
|
19
|
+
success: 'text-system-success-text',
|
|
20
|
+
neutral: 'text-foreground'
|
|
21
|
+
};
|
|
22
|
+
function AlertBanner({ tone = 'neutral', title, children, detail, icon, className }) {
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)("div", { role: "alert", "data-tone": tone, className: (0, utils_1.cn)('flex gap-3 rounded-md border px-4 py-3', TONE_CONTAINER[tone], className), children: [icon != null ? ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('mt-0.5 shrink-0', TONE_TITLE[tone]), "aria-hidden": true, children: icon })) : null, (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0 flex-1 space-y-1", children: [title != null ? ((0, jsx_runtime_1.jsx)("p", { className: (0, utils_1.cn)('text-sm font-medium', TONE_TITLE[tone]), children: title })) : null, children != null ? ((0, jsx_runtime_1.jsx)("div", { className: "text-foreground text-xs leading-relaxed", children: children })) : null, detail != null ? ((0, jsx_runtime_1.jsx)("pre", { className: "text-muted-foreground overflow-x-auto font-mono text-xs break-words whitespace-pre-wrap", children: detail })) : null] })] }));
|
|
24
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppShell — the console frame: a sidebar rail, an optional sticky header row,
|
|
3
|
+
* and a centered, scrollable content column. This is the whole screen, not a
|
|
4
|
+
* fragment, so it deliberately OWNS the SidebarProvider — the consumer drops a
|
|
5
|
+
* sindarian-ui sidebar (`SidebarRoot` + its parts) into `sidebar` and a
|
|
6
|
+
* `SidebarExpandButton` into `header`, and the collapse behavior comes free,
|
|
7
|
+
* no extra wrapper required.
|
|
8
|
+
*
|
|
9
|
+
* Landmark contract (the a11y-correct frame):
|
|
10
|
+
* SidebarProvider
|
|
11
|
+
* div (the shell ROW — carries `className`)
|
|
12
|
+
* a.sr-only (skip link, if labelled) // FIRST focusable in the document,
|
|
13
|
+
* // targets <main> — bypasses the nav
|
|
14
|
+
* {sidebar}
|
|
15
|
+
* div[data-slot=sidebar-inset] // the inset COLUMN — a plain div
|
|
16
|
+
* header (banner, if given) // SIBLING of <main>, not nested
|
|
17
|
+
* main#<id> tabIndex=-1 // the ONE main: skip-linkable + ref-able
|
|
18
|
+
* div (centered content container) → {children}
|
|
19
|
+
*
|
|
20
|
+
* The skip link is the FIRST child inside the shell row — before the sidebar —
|
|
21
|
+
* so a keyboard user's very first Tab lands on it and Enter jumps past the
|
|
22
|
+
* entire nav to the content <main>. That is the whole point of WCAG 2.4.1
|
|
23
|
+
* "Bypass Blocks": a skip link placed AFTER the nav would be reached only after
|
|
24
|
+
* tabbing through every nav item, defeating its purpose. The inset column is a
|
|
25
|
+
* <div>, not a <main>, so AppShell can own the single inner <main> for the
|
|
26
|
+
* content. The page header passed via `header` becomes a top-level banner
|
|
27
|
+
* SIBLING of <main> (one banner); a PageHeader rendered inside `children` lands
|
|
28
|
+
* inside <main> and is content, not a top-level landmark.
|
|
29
|
+
*
|
|
30
|
+
* Client by construction: it calls React.useId() to wire the skip link to the
|
|
31
|
+
* content <main>, and forwards a ref to that <main> so a consumer can focus it
|
|
32
|
+
* on route change — both are client concerns, hence the "use client" directive.
|
|
33
|
+
*/
|
|
34
|
+
import * as React from 'react';
|
|
35
|
+
export type AppShellProps = {
|
|
36
|
+
sidebar?: React.ReactNode;
|
|
37
|
+
/**
|
|
38
|
+
* App-bar CONTENT, rendered INSIDE the shell's <header> banner landmark. Pass
|
|
39
|
+
* banner content only — the sidebar trigger, a screen title, header actions.
|
|
40
|
+
*
|
|
41
|
+
* Do NOT pass an element that renders its OWN <header>/landmark (e.g.
|
|
42
|
+
* <PageHeader>, which is itself a <header>). Nesting a <header> in this banner
|
|
43
|
+
* produces a SECOND banner — a <header> is not sectioning content, so the
|
|
44
|
+
* inner one stays body-scoped — which violates WCAG's at-most-one-banner rule.
|
|
45
|
+
* Page-level title blocks (<PageHeader>) belong in `children`, where they land
|
|
46
|
+
* inside <main> and are correctly page content, not a top-level landmark.
|
|
47
|
+
*/
|
|
48
|
+
header?: React.ReactNode;
|
|
49
|
+
children: React.ReactNode;
|
|
50
|
+
className?: string;
|
|
51
|
+
contentClassName?: string;
|
|
52
|
+
/**
|
|
53
|
+
* When set, renders a "skip to content" link as the FIRST focusable element;
|
|
54
|
+
* activating it jumps focus to the content <main>. Omit it and no skip link
|
|
55
|
+
* renders. The link/target wiring (the <main> id) is internal — generated with
|
|
56
|
+
* React.useId() so it is stable and unique without a required id prop.
|
|
57
|
+
*/
|
|
58
|
+
skipToContentLabel?: string;
|
|
59
|
+
};
|
|
60
|
+
export declare const AppShell: React.ForwardRefExoticComponent<AppShellProps & React.RefAttributes<HTMLElement>>;
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/app-shell/index.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,QAAQ,mFAgEpB,CAAA"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use client';
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.AppShell = void 0;
|
|
38
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
/**
|
|
40
|
+
* AppShell — the console frame: a sidebar rail, an optional sticky header row,
|
|
41
|
+
* and a centered, scrollable content column. This is the whole screen, not a
|
|
42
|
+
* fragment, so it deliberately OWNS the SidebarProvider — the consumer drops a
|
|
43
|
+
* sindarian-ui sidebar (`SidebarRoot` + its parts) into `sidebar` and a
|
|
44
|
+
* `SidebarExpandButton` into `header`, and the collapse behavior comes free,
|
|
45
|
+
* no extra wrapper required.
|
|
46
|
+
*
|
|
47
|
+
* Landmark contract (the a11y-correct frame):
|
|
48
|
+
* SidebarProvider
|
|
49
|
+
* div (the shell ROW — carries `className`)
|
|
50
|
+
* a.sr-only (skip link, if labelled) // FIRST focusable in the document,
|
|
51
|
+
* // targets <main> — bypasses the nav
|
|
52
|
+
* {sidebar}
|
|
53
|
+
* div[data-slot=sidebar-inset] // the inset COLUMN — a plain div
|
|
54
|
+
* header (banner, if given) // SIBLING of <main>, not nested
|
|
55
|
+
* main#<id> tabIndex=-1 // the ONE main: skip-linkable + ref-able
|
|
56
|
+
* div (centered content container) → {children}
|
|
57
|
+
*
|
|
58
|
+
* The skip link is the FIRST child inside the shell row — before the sidebar —
|
|
59
|
+
* so a keyboard user's very first Tab lands on it and Enter jumps past the
|
|
60
|
+
* entire nav to the content <main>. That is the whole point of WCAG 2.4.1
|
|
61
|
+
* "Bypass Blocks": a skip link placed AFTER the nav would be reached only after
|
|
62
|
+
* tabbing through every nav item, defeating its purpose. The inset column is a
|
|
63
|
+
* <div>, not a <main>, so AppShell can own the single inner <main> for the
|
|
64
|
+
* content. The page header passed via `header` becomes a top-level banner
|
|
65
|
+
* SIBLING of <main> (one banner); a PageHeader rendered inside `children` lands
|
|
66
|
+
* inside <main> and is content, not a top-level landmark.
|
|
67
|
+
*
|
|
68
|
+
* Client by construction: it calls React.useId() to wire the skip link to the
|
|
69
|
+
* content <main>, and forwards a ref to that <main> so a consumer can focus it
|
|
70
|
+
* on route change — both are client concerns, hence the "use client" directive.
|
|
71
|
+
*/
|
|
72
|
+
const React = __importStar(require("react"));
|
|
73
|
+
const sidebar_1 = require("../../components/ui/sidebar");
|
|
74
|
+
const utils_1 = require("../../lib/utils");
|
|
75
|
+
exports.AppShell = React.forwardRef(function AppShell({ sidebar, header, children, className, contentClassName, skipToContentLabel }, ref) {
|
|
76
|
+
// The content <main> id — wires the skip link to its target and gives the
|
|
77
|
+
// <main> a stable, focusable anchor. Internal: no consumer-facing id prop.
|
|
78
|
+
const mainId = React.useId();
|
|
79
|
+
// sindarian-ui's SidebarProvider is context-only (it renders no DOM and
|
|
80
|
+
// takes no className), so the shell owns the flex row itself and `className`
|
|
81
|
+
// lands on it — the same element the legacy provider's className reached.
|
|
82
|
+
return ((0, jsx_runtime_1.jsx)(sidebar_1.SidebarProvider, { children: (0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('flex h-svh w-full overflow-hidden', className), children: [skipToContentLabel ? ((0, jsx_runtime_1.jsx)("a", { href: `#${mainId}`, className: "focus:bg-background focus:text-foreground sr-only focus:not-sr-only focus:absolute focus:z-50 focus:m-2 focus:rounded focus:px-3 focus:py-2 focus:shadow", children: skipToContentLabel })) : null, sidebar, (0, jsx_runtime_1.jsxs)("div", { "data-slot": "sidebar-inset", className: "bg-background relative flex w-full min-w-0 flex-1 flex-col", children: [header ? ((0, jsx_runtime_1.jsx)("header", { className: "border-border bg-background sticky top-0 z-10 flex items-center gap-3 border-b px-6 py-3", children: header })) : null, (0, jsx_runtime_1.jsx)("main", { id: mainId, ref: ref, tabIndex: -1,
|
|
83
|
+
// min-h-0 lets this flex child shrink below its content height —
|
|
84
|
+
// without it `flex-1` keeps min-height:auto and nothing scrolls.
|
|
85
|
+
className: "min-h-0 flex-1 overflow-y-auto outline-none", children: (0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('mx-auto w-full max-w-7xl px-6 py-8 lg:px-8', contentClassName), children: children }) })] })] }) }));
|
|
86
|
+
});
|
|
87
|
+
exports.AppShell.displayName = 'AppShell';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type CursorPagerProps = {
|
|
2
|
+
/** From the page envelope: more pages exist after this one. */
|
|
3
|
+
hasMore?: boolean;
|
|
4
|
+
/** From the page envelope: cursor for the next page. */
|
|
5
|
+
nextCursor?: string | null;
|
|
6
|
+
/** From the page envelope: cursor for the previous page. */
|
|
7
|
+
prevCursor?: string | null;
|
|
8
|
+
/** Called with the cursor to load (undefined => first page). */
|
|
9
|
+
onCursorChange: (cursor: string | undefined) => void;
|
|
10
|
+
/** Disable both controls (e.g. while fetching). */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** Optional summary, e.g. "50 per page" or a loaded-count string. */
|
|
13
|
+
summary?: string;
|
|
14
|
+
/** Label for the previous-page control. Defaults to "Previous". */
|
|
15
|
+
previousLabel?: string;
|
|
16
|
+
/** Label for the next-page control. Defaults to "Next". */
|
|
17
|
+
nextLabel?: string;
|
|
18
|
+
className?: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function CursorPager({ hasMore, nextCursor, prevCursor, onCursorChange, disabled, summary, previousLabel, nextLabel, className }: CursorPagerProps): import("react").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/cursor-pager/index.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,gEAAgE;IAChE,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IACpD,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,UAAU,EACV,cAAc,EACd,QAAgB,EAChB,OAAO,EACP,aAA0B,EAC1B,SAAkB,EAClB,SAAS,EACV,EAAE,gBAAgB,+BAmClB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.CursorPager = CursorPager;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* CursorPager drives the cursor-pagination envelope
|
|
8
|
+
* { items, hasMore, nextCursor, prevCursor, limit }
|
|
9
|
+
* shared by the console's cursor-paged list endpoints (do not use it on
|
|
10
|
+
* offset-based endpoints).
|
|
11
|
+
*
|
|
12
|
+
* It is controlled: the parent owns the active cursor (the value it passes to
|
|
13
|
+
* the list hook) and reacts to `onCursorChange`. Pass the page envelope's
|
|
14
|
+
* `hasMore`, `nextCursor`, `prevCursor`. "Previous" is enabled when the page
|
|
15
|
+
* reports a `prevCursor`; "Next" when `hasMore` and a `nextCursor` exist.
|
|
16
|
+
*
|
|
17
|
+
* `onCursorChange(undefined)` requests the first page (no cursor).
|
|
18
|
+
*/
|
|
19
|
+
const lucide_react_1 = require("lucide-react");
|
|
20
|
+
const button_1 = require("../../components/ui/button");
|
|
21
|
+
const utils_1 = require("../../lib/utils");
|
|
22
|
+
function CursorPager({ hasMore, nextCursor, prevCursor, onCursorChange, disabled = false, summary, previousLabel = 'Previous', nextLabel = 'Next', className }) {
|
|
23
|
+
const canPrev = !disabled && !!prevCursor;
|
|
24
|
+
const canNext = !disabled && !!hasMore && !!nextCursor;
|
|
25
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('flex items-center justify-between gap-4 pt-3', className), children: [(0, jsx_runtime_1.jsx)("p", { className: "text-muted-foreground text-xs", children: summary ?? '' }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "outline", size: "small", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { "aria-hidden": true }), iconPlacement: "start", disabled: !canPrev, onClick: () => onCursorChange(prevCursor ?? undefined), children: previousLabel }), (0, jsx_runtime_1.jsx)(button_1.Button, { type: "button", variant: "outline", size: "small", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { "aria-hidden": true }), iconPlacement: "end", disabled: !canNext, onClick: () => onCursorChange(nextCursor ?? undefined), children: nextLabel })] })] }));
|
|
26
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type ColumnDef, type OnChangeFn, type RowData, type RowSelectionState } from '@tanstack/react-table';
|
|
2
|
+
import { type EmptyStateProps } from '../empty-state';
|
|
3
|
+
/**
|
|
4
|
+
* Per-column opt-in for ledger numeric alignment. Set `meta: { numeric: true }`
|
|
5
|
+
* on a money/number `ColumnDef` and DataTable right-aligns both the header and
|
|
6
|
+
* its body cells (mono tabular figures).
|
|
7
|
+
*/
|
|
8
|
+
declare module '@tanstack/react-table' {
|
|
9
|
+
interface ColumnMeta<TData extends RowData, TValue> {
|
|
10
|
+
numeric?: boolean;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Row selection is CONTROLLED-ONLY — the contract sindarian-x shipped: the
|
|
15
|
+
* component holds no selection state and only mirrors `rowSelection` back into
|
|
16
|
+
* TanStack. Legacy typed all three props as independently optional, so opting
|
|
17
|
+
* into `enableRowSelection` without wiring the other two compiled fine and then
|
|
18
|
+
* rendered checkboxes that could never toggle (state pinned to a constant `{}`,
|
|
19
|
+
* no updater). Same runtime contract here, honest types: enabling selection
|
|
20
|
+
* requires the controlled pair, and leaving it off forbids them.
|
|
21
|
+
*/
|
|
22
|
+
type RowSelectionProps<TData> = {
|
|
23
|
+
enableRowSelection?: false;
|
|
24
|
+
rowSelection?: never;
|
|
25
|
+
onRowSelectionChange?: never;
|
|
26
|
+
getRowSelectionLabel?: never;
|
|
27
|
+
} | {
|
|
28
|
+
enableRowSelection: true;
|
|
29
|
+
/** Controlled selection state (TanStack `RowSelectionState`, keyed by row id). */
|
|
30
|
+
rowSelection: RowSelectionState;
|
|
31
|
+
/** Controlled selection updater (TanStack `OnChangeFn`). */
|
|
32
|
+
onRowSelectionChange: OnChangeFn<RowSelectionState>;
|
|
33
|
+
/**
|
|
34
|
+
* Accessible name for a row's checkbox. Defaults to `Select row <id>`,
|
|
35
|
+
* which announces the raw row id (`Select row 0` with the default index
|
|
36
|
+
* ids) — pass a builder to name the record the way a user recognises it,
|
|
37
|
+
* e.g. ``(row) => `Select settlement ${row.reference}` ``.
|
|
38
|
+
*/
|
|
39
|
+
getRowSelectionLabel?: (row: TData) => string;
|
|
40
|
+
};
|
|
41
|
+
type DataTableBaseProps<TData> = {
|
|
42
|
+
columns: ColumnDef<TData, unknown>[];
|
|
43
|
+
data: TData[];
|
|
44
|
+
/** Show skeleton rows instead of data/empty state. */
|
|
45
|
+
loading?: boolean;
|
|
46
|
+
/** Number of skeleton rows when loading. Defaults to 8. */
|
|
47
|
+
skeletonRows?: number;
|
|
48
|
+
/** Announced by the persistent status region while loading. Defaults to "Loading table rows". */
|
|
49
|
+
loadingLabel?: string;
|
|
50
|
+
/** Empty-state config when data resolves to zero rows. */
|
|
51
|
+
empty?: EmptyStateProps;
|
|
52
|
+
/** Stable row id accessor; defaults to TanStack's index-based id. */
|
|
53
|
+
getRowId?: (row: TData, index: number) => string;
|
|
54
|
+
/**
|
|
55
|
+
* Drop the rounded-card framing (radius, hairline border, bg-card) so the
|
|
56
|
+
* table runs full-bleed inside an already-framed surface. Margin tweaks like
|
|
57
|
+
* `-mx-5` stay the caller's job via `className`.
|
|
58
|
+
*/
|
|
59
|
+
flush?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Row density. `comfortable` (default) keeps the table's standard padding;
|
|
62
|
+
* `compact` tightens cell padding for the veteran "more rows per screen"
|
|
63
|
+
* view. Applied as a per-cell padding override on THIS table only.
|
|
64
|
+
*/
|
|
65
|
+
density?: 'comfortable' | 'compact';
|
|
66
|
+
/**
|
|
67
|
+
* Opt into the roving-focus keyboard layer. Presence of this callback
|
|
68
|
+
* enables row tabIndex/focus/keydown handling; Enter calls it with the
|
|
69
|
+
* focused row's data. DataTable stays router-agnostic — consumers
|
|
70
|
+
* navigate inside the callback. Default off: rows render exactly as
|
|
71
|
+
* before, with no tabIndex and no handlers.
|
|
72
|
+
*/
|
|
73
|
+
onRowActivate?: (row: TData) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Optional href builder pairing with `onRowActivate`: when present,
|
|
76
|
+
* Cmd/Ctrl+Enter on a focused row opens the built href in a new tab via
|
|
77
|
+
* `window.open(href, '_blank', 'noopener,noreferrer')` — the keyboard twin
|
|
78
|
+
* of cmd-clicking the row's in-cell link. Build hrefs with the router's
|
|
79
|
+
* own URL builder, never string concatenation. Sheet-based tables (no
|
|
80
|
+
* routable destination) simply omit it and keep modified Enter a no-op.
|
|
81
|
+
*/
|
|
82
|
+
rowHref?: (row: TData) => string;
|
|
83
|
+
className?: string;
|
|
84
|
+
};
|
|
85
|
+
export type DataTableProps<TData> = DataTableBaseProps<TData> & RowSelectionProps<TData>;
|
|
86
|
+
export declare function DataTable<TData>({ columns, data, loading, skeletonRows, loadingLabel, empty, getRowId, flush, density, enableRowSelection, rowSelection, onRowSelectionChange, getRowSelectionLabel, onRowActivate, rowHref, className }: DataTableProps<TData>): import("react").JSX.Element;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enterprise/data-table/index.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,UAAU,EAEf,KAAK,OAAO,EACZ,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAA;AAY9B,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjE;;;;GAIG;AACH,OAAO,QAAQ,uBAAuB,CAAC;IAIrC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAChD,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB;CACF;AAED;;;;;;;;GAQG;AACH,KAAK,iBAAiB,CAAC,KAAK,IACxB;IACE,kBAAkB,CAAC,EAAE,KAAK,CAAA;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,oBAAoB,CAAC,EAAE,KAAK,CAAA;IAC5B,oBAAoB,CAAC,EAAE,KAAK,CAAA;CAC7B,GACD;IACE,kBAAkB,EAAE,IAAI,CAAA;IACxB,kFAAkF;IAClF,YAAY,EAAE,iBAAiB,CAAA;IAC/B,4DAA4D;IAC5D,oBAAoB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACnD;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAA;CAC9C,CAAA;AAEL,KAAK,kBAAkB,CAAC,KAAK,IAAI;IAC/B,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,IAAI,EAAE,KAAK,EAAE,CAAA;IACb,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACnC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IACpC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAC3D,iBAAiB,CAAC,KAAK,CAAC,CAAA;AA4E1B,wBAAgB,SAAS,CAAC,KAAK,EAAE,EAC/B,OAAO,EACP,IAAI,EACJ,OAAe,EACf,YAAgB,EAChB,YAAmC,EACnC,KAAK,EACL,QAAQ,EACR,KAAa,EACb,OAAuB,EACvB,kBAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,SAAS,EACV,EAAE,cAAc,CAAC,KAAK,CAAC,+BA+RvB"}
|