@lerianstudio/sindarian-ui 1.2.0-beta.13 → 1.2.0-beta.14
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 +50 -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 +29 -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/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 +230 -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/input/index.js +2 -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/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 +44 -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 +2 -2
- package/dist/components/ui/sidebar/sidebar-item-icon-button.d.ts.map +1 -1
- package/dist/components/ui/sidebar/sidebar-item-icon-button.js +3 -5
- 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 +37 -0
- package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
- package/dist/domain/delinquency-aging/aging-buckets.js +97 -0
- package/dist/domain/delinquency-aging/index.d.ts +52 -0
- package/dist/domain/delinquency-aging/index.d.ts.map +1 -0
- package/dist/domain/delinquency-aging/index.js +151 -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 +57 -0
- package/dist/domain/format.d.ts.map +1 -0
- package/dist/domain/format.js +102 -0
- package/dist/domain/index.d.ts +22 -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 +167 -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 +23 -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 +113 -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 +9 -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 +64 -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 +74 -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 +238 -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 +114 -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 +11 -0
- package/dist/enterprise/use-is-mobile.d.ts.map +1 -0
- package/dist/enterprise/use-is-mobile.js +59 -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 +46 -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 +25 -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 +114 -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 +193 -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 +44 -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 +37 -0
- package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -0
- package/dist/esm/domain/delinquency-aging/aging-buckets.js +92 -0
- package/dist/esm/domain/delinquency-aging/index.d.ts +52 -0
- package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -0
- package/dist/esm/domain/delinquency-aging/index.js +147 -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 +57 -0
- package/dist/esm/domain/format.d.ts.map +1 -0
- package/dist/esm/domain/format.js +94 -0
- package/dist/esm/domain/index.d.ts +22 -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 +162 -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 +23 -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 +108 -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 +6 -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 +59 -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 +71 -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 +200 -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 +78 -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 +11 -0
- package/dist/esm/enterprise/use-is-mobile.d.ts.map +1 -0
- package/dist/esm/enterprise/use-is-mobile.js +23 -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 +27 -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 +98 -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 +66 -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 +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -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 +30 -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 +135 -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 +54 -18
- package/dist/components/ui/button/button.test.d.ts +0 -2
- package/dist/components/ui/button/button.test.d.ts.map +0 -1
- package/dist/components/ui/button/button.test.js +0 -65
- package/dist/components/ui/copy-field/copy-field.test.d.ts +0 -2
- package/dist/components/ui/copy-field/copy-field.test.d.ts.map +0 -1
- package/dist/components/ui/copy-field/copy-field.test.js +0 -268
- package/dist/components/ui/input/input.test.d.ts +0 -2
- package/dist/components/ui/input/input.test.d.ts.map +0 -1
- package/dist/components/ui/input/input.test.js +0 -52
- 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/qr-code/qr-code.test.d.ts +0 -2
- package/dist/components/ui/qr-code/qr-code.test.d.ts.map +0 -1
- package/dist/components/ui/qr-code/qr-code.test.js +0 -60
- 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,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Backward-compatible type exports.
|
|
4
|
+
*
|
|
5
|
+
* The Radix Toast primitives (ToastProvider, ToastViewport, Toast, etc.) are
|
|
6
|
+
* no longer used -- Sonner manages rendering internally. These types are kept
|
|
7
|
+
* so that any downstream code referencing ToastProps or ToastActionElement
|
|
8
|
+
* continues to compile.
|
|
9
|
+
*/
|
|
10
|
+
export type ToastActionElement = React.ReactElement;
|
|
11
|
+
export type ToastProps = {
|
|
12
|
+
variant?: 'default' | 'success' | 'warning' | 'destructive';
|
|
13
|
+
className?: string;
|
|
14
|
+
open?: boolean;
|
|
15
|
+
onOpenChange?: (open: boolean) => void;
|
|
16
|
+
duration?: number;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/toast/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;GAOG;AAEH,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAA;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/toast/toaster.tsx"],"names":[],"mappings":"AAIA,KAAK,YAAY,GAAG;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;CACpC,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAgB,EAAE,EAAE,YAAY,+BAiBzD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Toaster as SonnerToaster } from 'sonner';
|
|
4
|
+
export function Toaster({ theme = 'system' }) {
|
|
5
|
+
return (_jsx(SonnerToaster, { theme: theme, position: "bottom-right", visibleToasts: 3, duration: 10000, expand: false, closeButton: true, richColors: false, offset: 16, gap: 8, toastOptions: {
|
|
6
|
+
className: 'font-sans !text-sm !font-medium'
|
|
7
|
+
} }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
3
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
4
|
+
/**
|
|
5
|
+
* Item styling for the group. Kept local: sindarian-ui has no standalone
|
|
6
|
+
* `Toggle` primitive and the retirement census does not ask for one, so the
|
|
7
|
+
* variants live with their only consumer instead of leaking a new export.
|
|
8
|
+
*/
|
|
9
|
+
declare const toggleVariants: (props?: ({
|
|
10
|
+
variant?: "default" | "outline" | null | undefined;
|
|
11
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
12
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
13
|
+
declare function ToggleGroup({ className, variant, size, spacing, children, style, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants> & {
|
|
14
|
+
spacing?: number;
|
|
15
|
+
}): React.JSX.Element;
|
|
16
|
+
declare function ToggleGroupItem({ className, children, variant, size, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): React.JSX.Element;
|
|
17
|
+
export { ToggleGroup, ToggleGroupItem };
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/toggle-group/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE;;;;GAIG;AACH,QAAA,MAAM,cAAc;;;8EAoBnB,CAAA;AAYD,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAW,EACX,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACvD,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,qBAwBF;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACvD,YAAY,CAAC,OAAO,cAAc,CAAC,qBAuBpC;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
|
+
import { cn } from '../../../lib/utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Item styling for the group. Kept local: sindarian-ui has no standalone
|
|
9
|
+
* `Toggle` primitive and the retirement census does not ask for one, so the
|
|
10
|
+
* variants live with their only consumer instead of leaking a new export.
|
|
11
|
+
*/
|
|
12
|
+
const toggleVariants = cva("hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
13
|
+
variants: {
|
|
14
|
+
variant: {
|
|
15
|
+
default: 'bg-transparent',
|
|
16
|
+
outline: 'border-input hover:bg-accent hover:text-accent-foreground border bg-transparent shadow-xs'
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
default: 'h-9 min-w-9 px-2',
|
|
20
|
+
sm: 'h-8 min-w-8 px-1.5',
|
|
21
|
+
lg: 'h-10 min-w-10 px-2.5'
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
defaultVariants: {
|
|
25
|
+
variant: 'default',
|
|
26
|
+
size: 'default'
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const ToggleGroupContext = React.createContext({
|
|
30
|
+
size: 'default',
|
|
31
|
+
variant: 'default',
|
|
32
|
+
spacing: 0
|
|
33
|
+
});
|
|
34
|
+
function ToggleGroup({ className, variant, size, spacing = 0, children, style, ...props }) {
|
|
35
|
+
return (_jsx(ToggleGroupPrimitive.Root, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-spacing": spacing,
|
|
36
|
+
// Caller style first: `--gap` is ours and must survive, but everything
|
|
37
|
+
// else the caller passes has to reach the element.
|
|
38
|
+
style: { ...style, '--gap': spacing }, className: cn(
|
|
39
|
+
// Legacy carried a `data-[spacing=default]:...:shadow-xs` rule here that
|
|
40
|
+
// never matched — `data-spacing` is always a number. Removed rather than
|
|
41
|
+
// activated, so the rendered pixels stay identical to sindarian-x.
|
|
42
|
+
'group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md', className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children: children }) }));
|
|
43
|
+
}
|
|
44
|
+
function ToggleGroupItem({ className, children, variant, size, ...props }) {
|
|
45
|
+
const context = React.useContext(ToggleGroupContext);
|
|
46
|
+
return (_jsx(ToggleGroupPrimitive.Item, { "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, "data-spacing": context.spacing, className: cn(toggleVariants({
|
|
47
|
+
variant: context.variant || variant,
|
|
48
|
+
size: context.size || size
|
|
49
|
+
}), 'w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10', 'data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l', className), ...props, children: children }));
|
|
50
|
+
}
|
|
51
|
+
export { ToggleGroup, ToggleGroupItem };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
3
|
+
declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
|
|
4
|
+
export type TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root> & {
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare function Tooltip({ open: _open, onOpenChange, disabled, ...props }: TooltipProps): React.JSX.Element;
|
|
8
|
+
declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): React.JSX.Element;
|
|
9
|
+
declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
|
|
10
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/tooltip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAI3D,iBAAS,eAAe,CAAC,EACvB,aAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,qBAQxD;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAC7C,OAAO,gBAAgB,CAAC,IAAI,CAC7B,GAAG;IACF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,iBAAS,OAAO,CAAC,EACf,IAAI,EAAE,KAAK,EACX,YAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,YAAY,qBAwBd;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAEvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAc,EACd,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAiBvD;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
5
|
+
import { cn } from '../../../lib/utils.js';
|
|
6
|
+
function TooltipProvider({ delayDuration = 0, ...props }) {
|
|
7
|
+
return (_jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, ...props }));
|
|
8
|
+
}
|
|
9
|
+
function Tooltip({ open: _open, onOpenChange, disabled, ...props }) {
|
|
10
|
+
const [open, setOpen] = React.useState(_open ?? false);
|
|
11
|
+
const handleOpenChange = (open) => {
|
|
12
|
+
if (disabled) {
|
|
13
|
+
onOpenChange?.(false);
|
|
14
|
+
setOpen(false);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
setOpen(open);
|
|
18
|
+
onOpenChange?.(open);
|
|
19
|
+
};
|
|
20
|
+
return (_jsx(TooltipProvider, { children: _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", open: open, onOpenChange: handleOpenChange, ...props }) }));
|
|
21
|
+
}
|
|
22
|
+
function TooltipTrigger({ ...props }) {
|
|
23
|
+
return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
24
|
+
}
|
|
25
|
+
function TooltipContent({ className, sideOffset = 0, children, ...props }) {
|
|
26
|
+
return (_jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn('bg-shadcn-600 text-shadcn-400 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 rounded-md px-3 py-1.5 text-sm shadow-md', className), ...props, children: [children, _jsx(TooltipPrimitive.Arrow, { className: "bg-shadcn-600 fill-shadcn-600 z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })] }) }));
|
|
27
|
+
}
|
|
28
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blotter + BlotterRow — the mono key/value readout of the console.
|
|
3
|
+
*
|
|
4
|
+
* Clean key/value rows separated by hairline borders (`divide-y divide-border`)
|
|
5
|
+
* — no zebra fills. Each row: an uppercase 11px sans label on the left, a mono
|
|
6
|
+
* `tabular-nums` value on the right, `hover:bg-body-surface` as the quiet row
|
|
7
|
+
* affordance (the recessed page surface, one step behind `bg-card`, in both
|
|
8
|
+
* themes). Escalate the value color (`text-credit`, `text-system-alert`) only
|
|
9
|
+
* when a metric crosses a threshold.
|
|
10
|
+
*
|
|
11
|
+
* <Blotter>
|
|
12
|
+
* <BlotterRow label="Resolved on time" value="128" />
|
|
13
|
+
* <BlotterRow label="Pending overdue" value="3" valueClassName="text-credit" />
|
|
14
|
+
* </Blotter>
|
|
15
|
+
*
|
|
16
|
+
* Renders a `<dl>`; rows are `<div>`s with `<dt>`/`<dd>`.
|
|
17
|
+
*/
|
|
18
|
+
import type { ReactNode } from 'react';
|
|
19
|
+
export type BlotterProps = {
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
className?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function Blotter({ children, className }: BlotterProps): import("react").JSX.Element;
|
|
24
|
+
export type BlotterRowProps = {
|
|
25
|
+
label: ReactNode;
|
|
26
|
+
value: ReactNode;
|
|
27
|
+
/** Threshold-escalation class on the value (e.g. `text-credit`). */
|
|
28
|
+
valueClassName?: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Stack the label above a full-width value instead of the inline
|
|
32
|
+
* label-left / value-right layout. Use for long-form prose (reasons,
|
|
33
|
+
* descriptions, notes) where a justified single line would squish the text.
|
|
34
|
+
* The value renders as wrapping sans body copy, not the mono tabular figure
|
|
35
|
+
* used by inline rows.
|
|
36
|
+
*/
|
|
37
|
+
stacked?: boolean;
|
|
38
|
+
};
|
|
39
|
+
export declare function BlotterRow({ label, value, valueClassName, className, stacked }: BlotterRowProps): import("react").JSX.Element;
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/blotter/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,+BAE5D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,cAAc,EACd,SAAS,EACT,OAAe,EAChB,EAAE,eAAe,+BAwCjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { LABEL_VOICE_CLASS } from '../../lib/typography.js';
|
|
3
|
+
import { cn } from '../../lib/utils.js';
|
|
4
|
+
export function Blotter({ children, className }) {
|
|
5
|
+
return _jsx("dl", { className: cn('divide-border divide-y', className), children: children });
|
|
6
|
+
}
|
|
7
|
+
export function BlotterRow({ label, value, valueClassName, className, stacked = false }) {
|
|
8
|
+
if (stacked) {
|
|
9
|
+
return (_jsxs("div", { className: cn('hover:bg-body-surface space-y-1 px-2 py-2 transition-colors duration-150 ease-out', className), children: [_jsx("dt", { className: LABEL_VOICE_CLASS, children: label }), _jsx("dd", { className: cn('text-foreground text-sm break-words whitespace-pre-wrap', valueClassName), children: value })] }));
|
|
10
|
+
}
|
|
11
|
+
return (_jsxs("div", { className: cn('hover:bg-body-surface flex items-center justify-between gap-3 px-2 py-2 transition-colors duration-150 ease-out', className), children: [_jsx("dt", { className: LABEL_VOICE_CLASS, children: label }), _jsx("dd", { className: cn('font-mono text-sm font-medium tabular-nums', valueClassName), children: value })] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface AgingBucket {
|
|
2
|
+
/** Human label for the band, e.g. "A vencer", "31–60", "90+". */
|
|
3
|
+
label: string;
|
|
4
|
+
/** Number of items in the band. A zero is shown explicitly, never omitted. */
|
|
5
|
+
count: number;
|
|
6
|
+
/** Money total for the band. Pass a decimal STRING for lossless sums. */
|
|
7
|
+
total: string | number;
|
|
8
|
+
}
|
|
9
|
+
export interface AgingBucketsProps {
|
|
10
|
+
/** Ordered current → oldest. Order carries meaning; not reordered internally. */
|
|
11
|
+
buckets: AgingBucket[];
|
|
12
|
+
/** ISO 4217 currency code, e.g. "BRL". Drives the minor-unit sum scale. */
|
|
13
|
+
currency?: string;
|
|
14
|
+
/** BCP 47 locale for grouping/decimal marks. Defaults to the runtime locale. */
|
|
15
|
+
locale?: string;
|
|
16
|
+
/** Render a money-math-exact grand total row across all buckets. */
|
|
17
|
+
showTotal?: boolean;
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
export type AgingBand = 'current' | 'recent' | 'aging' | 'overdue';
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a bucket's severity band from its ORDINAL POSITION, not its amount —
|
|
23
|
+
* the order is the information (older = worse). The first bucket is `current`;
|
|
24
|
+
* the LAST bucket (the oldest, the 90+ tail) is always `overdue`; the middle
|
|
25
|
+
* escalates `recent` → `aging` toward the tail. A single-bucket list reads as
|
|
26
|
+
* `current` (there is no escalation to show). Pure: no React, unit-tested.
|
|
27
|
+
*/
|
|
28
|
+
export declare function bucketBand(index: number, count: number): AgingBand;
|
|
29
|
+
/**
|
|
30
|
+
* Sum the bucket totals through integer minor units (BigInt) at `scale`, then
|
|
31
|
+
* render losslessly to a decimal string. Returns null if ANY bucket total is
|
|
32
|
+
* unparseable (indeterminate) — the caller renders NO_VALUE rather than a wrong
|
|
33
|
+
* grand total. Pure: the money-math third rail, unit-tested.
|
|
34
|
+
*/
|
|
35
|
+
export declare function sumBucketTotals(buckets: AgingBucket[], scale: number): string | null;
|
|
36
|
+
export declare function AgingBuckets({ buckets, currency, locale, showTotal, className }: AgingBucketsProps): import("react").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=aging-buckets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aging-buckets.d.ts","sourceRoot":"","sources":["../../../../src/domain/delinquency-aging/aging-buckets.tsx"],"names":[],"mappings":"AAsCA,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;AA2BlE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAiB,EACjB,SAAS,EACV,EAAE,iBAAiB,+BAwFnB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* AgingBuckets — an ordered, exhaustive bucketed distribution (the receivables
|
|
4
|
+
* aging schedule: current / 1–30 / 31–60 / 61–90 / 90+), each bucket carrying a
|
|
5
|
+
* count and a money total.
|
|
6
|
+
*
|
|
7
|
+
* INTERNAL to `DelinquencyAging`: not re-exported from `src/domain/index.ts`,
|
|
8
|
+
* because the port census only lists the composite. It lives here as the
|
|
9
|
+
* distribution half of that composite.
|
|
10
|
+
*
|
|
11
|
+
* INVARIANT: the buckets are ordered current → oldest and are exhaustive. The
|
|
12
|
+
* ORDER carries the information — older money is worse money — so the ordinal
|
|
13
|
+
* position and its label are the PRIMARY cue; the band glyph + sr-only word are
|
|
14
|
+
* the accessible reinforcement (WCAG 1.4.1 — the escalation survives grayscale
|
|
15
|
+
* and color-vision deficiency), and the color tint is reinforcement only, never
|
|
16
|
+
* the sole carrier of severity. The caller supplies the order; the component
|
|
17
|
+
* never reorders, because a sorted-by-amount view would destroy the one fact the
|
|
18
|
+
* widget exists to show.
|
|
19
|
+
*
|
|
20
|
+
* THIRD RAIL (money): a zero bucket renders an explicit `0` — a zero in the 90+
|
|
21
|
+
* bucket is information ("nothing slipped that far"), never an omission. When a
|
|
22
|
+
* grand total is shown it is summed through `money-math` integer minor units
|
|
23
|
+
* (BigInt, at the currency's CLDR scale) — never IEEE-754 — and rendered via
|
|
24
|
+
* `MoneyText`. A single unparseable bucket total poisons the sum to NO_VALUE
|
|
25
|
+
* rather than silently displaying a wrong number.
|
|
26
|
+
*
|
|
27
|
+
* Pure display: no directive, no interactivity, server-safe for RSC.
|
|
28
|
+
*/
|
|
29
|
+
import { AlertOctagon, AlertTriangle, CircleDot, Clock } from 'lucide-react';
|
|
30
|
+
import { LABEL_VOICE_CLASS } from '../../lib/typography.js';
|
|
31
|
+
import { cn } from '../../lib/utils.js';
|
|
32
|
+
import { Figure } from '../figure/index.js';
|
|
33
|
+
import { formatCount, NO_VALUE } from '../format.js';
|
|
34
|
+
import { minorDigitsOf, minorToDecimal, sumMinor } from '../money-math.js';
|
|
35
|
+
import { MoneyText } from '../money-text/index.js';
|
|
36
|
+
/** Band → glyph + tint + accessible word. The glyph (and the sr-only word) is
|
|
37
|
+
* the load-bearing severity cue; the tint only reinforces it, so the
|
|
38
|
+
* escalation survives grayscale and color-vision deficiency. */
|
|
39
|
+
const BAND = {
|
|
40
|
+
current: {
|
|
41
|
+
Icon: CircleDot,
|
|
42
|
+
tint: 'text-system-success',
|
|
43
|
+
word: 'Em dia'
|
|
44
|
+
},
|
|
45
|
+
recent: {
|
|
46
|
+
Icon: Clock,
|
|
47
|
+
tint: 'text-muted-foreground',
|
|
48
|
+
word: 'Vencido recentemente'
|
|
49
|
+
},
|
|
50
|
+
aging: {
|
|
51
|
+
Icon: AlertTriangle,
|
|
52
|
+
tint: 'text-system-alert',
|
|
53
|
+
word: 'Em atraso'
|
|
54
|
+
},
|
|
55
|
+
overdue: { Icon: AlertOctagon, tint: 'text-credit', word: 'Vencido' }
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Resolve a bucket's severity band from its ORDINAL POSITION, not its amount —
|
|
59
|
+
* the order is the information (older = worse). The first bucket is `current`;
|
|
60
|
+
* the LAST bucket (the oldest, the 90+ tail) is always `overdue`; the middle
|
|
61
|
+
* escalates `recent` → `aging` toward the tail. A single-bucket list reads as
|
|
62
|
+
* `current` (there is no escalation to show). Pure: no React, unit-tested.
|
|
63
|
+
*/
|
|
64
|
+
export function bucketBand(index, count) {
|
|
65
|
+
if (count <= 1)
|
|
66
|
+
return 'current';
|
|
67
|
+
if (index === 0)
|
|
68
|
+
return 'current';
|
|
69
|
+
if (index === count - 1)
|
|
70
|
+
return 'overdue';
|
|
71
|
+
// Middle buckets: the second-oldest reads `aging`, the rest `recent`.
|
|
72
|
+
return index === count - 2 ? 'aging' : 'recent';
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Sum the bucket totals through integer minor units (BigInt) at `scale`, then
|
|
76
|
+
* render losslessly to a decimal string. Returns null if ANY bucket total is
|
|
77
|
+
* unparseable (indeterminate) — the caller renders NO_VALUE rather than a wrong
|
|
78
|
+
* grand total. Pure: the money-math third rail, unit-tested.
|
|
79
|
+
*/
|
|
80
|
+
export function sumBucketTotals(buckets, scale) {
|
|
81
|
+
const total = sumMinor(buckets.map((b) => b.total), scale);
|
|
82
|
+
return total === null ? null : minorToDecimal(total, scale);
|
|
83
|
+
}
|
|
84
|
+
export function AgingBuckets({ buckets, currency, locale, showTotal = false, className }) {
|
|
85
|
+
const scale = currency ? minorDigitsOf(currency) : 2;
|
|
86
|
+
const grandTotal = showTotal ? sumBucketTotals(buckets, scale) : null;
|
|
87
|
+
return (_jsxs("div", { className: cn('flex flex-col', className), children: [_jsx("ul", { className: "flex flex-col", children: buckets.map((bucket, i) => {
|
|
88
|
+
const band = bucketBand(i, buckets.length);
|
|
89
|
+
const { Icon, tint, word } = BAND[band];
|
|
90
|
+
return (_jsxs("li", { className: "border-border flex items-center gap-3 border-b py-2.5 last:border-b-0", children: [_jsx(Icon, { "aria-hidden": true, className: cn('size-4 shrink-0', tint) }), _jsxs("span", { className: "sr-only", children: [word, ": "] }), _jsx("span", { className: cn(LABEL_VOICE_CLASS, 'text-foreground min-w-0 flex-1 tracking-normal normal-case'), children: bucket.label }), _jsxs("span", { className: "flex shrink-0 flex-col items-end leading-none", children: [_jsx(Figure, { size: "row", className: "text-foreground", children: formatCount(bucket.count, locale) }), _jsx("span", { className: cn(LABEL_VOICE_CLASS, 'mt-1'), children: "Itens" })] }), _jsxs("span", { className: "flex w-32 shrink-0 flex-col items-end leading-none sm:w-40", children: [_jsx(Figure, { size: "row", className: cn(band === 'overdue' && 'text-credit'), children: _jsx(MoneyText, { amount: bucket.total, currency: currency, locale: locale, signColor: false }) }), _jsx("span", { className: cn(LABEL_VOICE_CLASS, 'mt-1'), children: "Total" })] })] }, `${bucket.label}-${i}`));
|
|
91
|
+
}) }), showTotal ? (_jsxs("div", { className: "border-border flex items-center gap-3 border-t-2 pt-2.5", children: [_jsx("span", { "aria-hidden": true, className: "size-4 shrink-0" }), _jsx("span", { className: cn(LABEL_VOICE_CLASS, 'text-foreground min-w-0 flex-1'), children: "Total geral" }), _jsx("span", { className: "w-32 shrink-0 text-right sm:w-40", children: grandTotal === null ? (_jsx(Figure, { size: "row", className: "text-muted-foreground", children: NO_VALUE })) : (_jsx(Figure, { size: "row", className: "text-foreground font-semibold", children: _jsx(MoneyText, { amount: grandTotal, currency: currency, locale: locale, signColor: false }) })) })] })) : null] }));
|
|
92
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AgingBucket } from './aging-buckets.js';
|
|
2
|
+
/** A bucket in the aging schedule, plus the flag that marks it past due. The
|
|
3
|
+
* `overdue` flag is what the rate's NUMERATOR sums — the caller declares which
|
|
4
|
+
* bands count as delinquent (typically every band after "current"). */
|
|
5
|
+
export interface DelinquencyBucket extends AgingBucket {
|
|
6
|
+
/** Whether this band counts toward the overdue (past-due) numerator. */
|
|
7
|
+
overdue?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** The delinquency rate resolved from EXACT integer minor-unit totals. `rate`
|
|
10
|
+
* is null for a zero/empty/indeterminate portfolio — never NaN. */
|
|
11
|
+
export interface DelinquencyRate {
|
|
12
|
+
/** overdueMinor / totalMinor as a 0..1 ratio; null when undefined. */
|
|
13
|
+
rate: number | null;
|
|
14
|
+
/** Σ(overdue bucket totals) in minor units; null if any total is unparseable. */
|
|
15
|
+
overdueMinor: bigint | null;
|
|
16
|
+
/** Σ(all bucket totals) in minor units; null if any total is unparseable. */
|
|
17
|
+
totalMinor: bigint | null;
|
|
18
|
+
/** True when the RATE cannot be determined: a bucket total that could not be
|
|
19
|
+
* parsed, or a negative bucket total (parseable, but not a share of a
|
|
20
|
+
* portfolio). The sums may still be present in the negative case. */
|
|
21
|
+
indeterminate: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* THIRD RAIL: the delinquency rate = overdue total / portfolio total, with both
|
|
25
|
+
* totals summed through integer minor units (BigInt) at `scale`. The only float
|
|
26
|
+
* operation is the final division of two EXACT integers — never a float sum of
|
|
27
|
+
* decimals. A zero portfolio gives a null rate (explicit empty, no NaN); an
|
|
28
|
+
* unparseable total poisons everything to indeterminate. Pure: unit-tested.
|
|
29
|
+
*
|
|
30
|
+
* Internal: exported for its unit tests, never from `src/domain/index.ts`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function delinquencyRate(buckets: DelinquencyBucket[], scale: number): DelinquencyRate;
|
|
33
|
+
export interface DelinquencyAgingProps {
|
|
34
|
+
/** Ordered current → oldest. Order carries meaning; not reordered internally.
|
|
35
|
+
* Each band's `overdue` flag selects it into the rate numerator. */
|
|
36
|
+
buckets: DelinquencyBucket[];
|
|
37
|
+
/** ISO 4217 currency code, e.g. "BRL". Drives the minor-unit rate scale. */
|
|
38
|
+
currency?: string;
|
|
39
|
+
/** BCP 47 locale for the percent decimal mark and the bucket figures. */
|
|
40
|
+
locale?: string;
|
|
41
|
+
/** Quiet caption above the rate readout. Defaults to "Inadimplência". */
|
|
42
|
+
rateLabel?: string;
|
|
43
|
+
/** Warn edge for the rate band (0..1 ratio). Crossing it strictly → elevated. */
|
|
44
|
+
warn?: number;
|
|
45
|
+
/** Breach edge for the rate band (0..1 ratio). Crossing it strictly → distressed. */
|
|
46
|
+
breach?: number;
|
|
47
|
+
/** Render the money-math-exact grand total row under the distribution. */
|
|
48
|
+
showTotal?: boolean;
|
|
49
|
+
className?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare function DelinquencyAging({ buckets, currency, locale, rateLabel, warn, breach, showTotal, className }: DelinquencyAgingProps): import("react").JSX.Element;
|
|
52
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/delinquency-aging/index.tsx"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAOlD;;wEAEwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;oEACoE;AACpE,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,iFAAiF;IACjF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;0EAEsE;IACtE,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,KAAK,EAAE,MAAM,GACZ,eAAe,CAuDjB;AAeD,MAAM,WAAW,qBAAqB;IACpC;yEACqE;IACrE,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAA2B,EAC3B,IAAW,EACX,MAAY,EACZ,SAAiB,EACjB,SAAS,EACV,EAAE,qBAAqB,+BAiEvB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* DelinquencyAging — a loan/receivable delinquency surface: the ordered overdue
|
|
4
|
+
* aging distribution PLUS the headline delinquency rate (the share of portfolio
|
|
5
|
+
* value that is past due).
|
|
6
|
+
*
|
|
7
|
+
* <DelinquencyAging
|
|
8
|
+
* currency="BRL"
|
|
9
|
+
* locale="pt-BR"
|
|
10
|
+
* warn={0.05}
|
|
11
|
+
* breach={0.1}
|
|
12
|
+
* buckets={[
|
|
13
|
+
* { label: 'A vencer', count: 312, total: '1840500.00', overdue: false },
|
|
14
|
+
* { label: '1–30', count: 84, total: '402300.00', overdue: true },
|
|
15
|
+
* { label: '31–60', count: 21, total: '118900.00', overdue: true },
|
|
16
|
+
* { label: '61–90', count: 9, total: '54200.00', overdue: true },
|
|
17
|
+
* { label: '90+', count: 4, total: '38100.00', overdue: true }
|
|
18
|
+
* ]}
|
|
19
|
+
* />
|
|
20
|
+
*
|
|
21
|
+
* The distribution is delegated whole to `AgingBuckets`: it owns the ordered
|
|
22
|
+
* current → 90+ schedule, the per-bucket count/total, the ordinal band cue, and
|
|
23
|
+
* the money-math-exact grand total. This composite adds only the one fact aging
|
|
24
|
+
* alone does not state — the delinquency RATE.
|
|
25
|
+
*
|
|
26
|
+
* THIRD RAIL (money): the rate is overdueTotal / portfolioTotal, and BOTH totals
|
|
27
|
+
* are summed in integer minor units (BigInt, at the currency's CLDR scale) via
|
|
28
|
+
* `money-math` — never an IEEE-754 sum of decimals (0.1 + 0.2 ≠ 0.3 in float, a
|
|
29
|
+
* silent basis-point error on a portfolio). The single floating-point operation
|
|
30
|
+
* is the FINAL division of two already-exact integers, which is the correct,
|
|
31
|
+
* lossless-enough place for it (a ratio is not money). A zero portfolio yields a
|
|
32
|
+
* null rate — an explicit empty readout, never a NaN. A single unparseable
|
|
33
|
+
* bucket total poisons the rate to indeterminate rather than reporting a wrong
|
|
34
|
+
* share.
|
|
35
|
+
*
|
|
36
|
+
* NON-COLOR CUE (WCAG 1.4.1): the rate band (healthy / elevated / distressed) is
|
|
37
|
+
* resolved through the gauge's strict-edge `gaugeBand` (higher-is-worse: more
|
|
38
|
+
* overdue is worse) and named with a glyph + an sr-only word + a tint — the tint
|
|
39
|
+
* is reinforcement only, so the band survives grayscale and color-vision
|
|
40
|
+
* deficiency. A distressed rate reads loud (credit-red, role='alert').
|
|
41
|
+
*
|
|
42
|
+
* Pure display: no directive, no interactivity, server-safe for RSC.
|
|
43
|
+
*/
|
|
44
|
+
import { AlertOctagon, ShieldCheck, TriangleAlert } from 'lucide-react';
|
|
45
|
+
import { LABEL_VOICE_CLASS } from '../../lib/typography.js';
|
|
46
|
+
import { cn } from '../../lib/utils.js';
|
|
47
|
+
import { Figure } from '../figure/index.js';
|
|
48
|
+
import { formatPercent, NO_VALUE } from '../format.js';
|
|
49
|
+
import { minorDigitsOf, toMinor } from '../money-math.js';
|
|
50
|
+
import { SectionLabel } from '../section-label/index.js';
|
|
51
|
+
import { gaugeBand } from '../threshold-gauge/index.js';
|
|
52
|
+
import { AgingBuckets } from './aging-buckets.js';
|
|
53
|
+
/** Fixed-point scale for the rate division: 1e12 keeps twelve decimal places of
|
|
54
|
+
* a 0..1 ratio, and both it and any in-range scaled quotient stay well inside
|
|
55
|
+
* the exact-integer range of a double (2^53), so the conversion is lossless. */
|
|
56
|
+
const RATE_PRECISION = 1000000000000n;
|
|
57
|
+
/**
|
|
58
|
+
* THIRD RAIL: the delinquency rate = overdue total / portfolio total, with both
|
|
59
|
+
* totals summed through integer minor units (BigInt) at `scale`. The only float
|
|
60
|
+
* operation is the final division of two EXACT integers — never a float sum of
|
|
61
|
+
* decimals. A zero portfolio gives a null rate (explicit empty, no NaN); an
|
|
62
|
+
* unparseable total poisons everything to indeterminate. Pure: unit-tested.
|
|
63
|
+
*
|
|
64
|
+
* Internal: exported for its unit tests, never from `src/domain/index.ts`.
|
|
65
|
+
*/
|
|
66
|
+
export function delinquencyRate(buckets, scale) {
|
|
67
|
+
// Parse each bucket exactly once: the sums and the per-bucket SIGN check both
|
|
68
|
+
// come off the same pass, so the two can never disagree about the same input.
|
|
69
|
+
const parsed = buckets.map((b) => toMinor(b.total, scale));
|
|
70
|
+
if (parsed.some((m) => m === null)) {
|
|
71
|
+
return {
|
|
72
|
+
rate: null,
|
|
73
|
+
overdueMinor: null,
|
|
74
|
+
totalMinor: null,
|
|
75
|
+
indeterminate: true
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
let totalMinor = 0n;
|
|
79
|
+
let overdueMinor = 0n;
|
|
80
|
+
let hasNegativeBucket = false;
|
|
81
|
+
parsed.forEach((m, i) => {
|
|
82
|
+
const minor = m;
|
|
83
|
+
if (minor < 0n)
|
|
84
|
+
hasNegativeBucket = true;
|
|
85
|
+
totalMinor += minor;
|
|
86
|
+
if (buckets[i].overdue)
|
|
87
|
+
overdueMinor += minor;
|
|
88
|
+
});
|
|
89
|
+
// A NEGATIVE bucket total is parseable but not interpretable as a share of a
|
|
90
|
+
// portfolio: overdue/total stops being bounded by 0..1 the moment a component
|
|
91
|
+
// is negative (a -50 current band against a 100 overdue band yields "200%
|
|
92
|
+
// delinquent"), and it can also cancel the denominator toward zero. A credit
|
|
93
|
+
// adjustment is real data, but it is not aging data, so the honest answer is
|
|
94
|
+
// that the RATE cannot be determined — the sums stay, since they are still
|
|
95
|
+
// correct, and the readout takes the no-value path. Legacy divided anyway and
|
|
96
|
+
// printed the out-of-range percentage.
|
|
97
|
+
if (hasNegativeBucket) {
|
|
98
|
+
return { rate: null, overdueMinor, totalMinor, indeterminate: true };
|
|
99
|
+
}
|
|
100
|
+
// A zero portfolio has no rate to report — null, never overdueMinor/0 (NaN).
|
|
101
|
+
if (totalMinor === 0n) {
|
|
102
|
+
return { rate: null, overdueMinor, totalMinor, indeterminate: false };
|
|
103
|
+
}
|
|
104
|
+
// The division is done as a BOUNDED BigInt ratio first, then converted once.
|
|
105
|
+
// Converting the two totals to Number separately overflowed on a large
|
|
106
|
+
// portfolio: past ~1.8e308 each side becomes Infinity and Infinity/Infinity is
|
|
107
|
+
// NaN — a portfolio big enough to matter reported no rate at all. Scaling the
|
|
108
|
+
// numerator by RATE_PRECISION keeps the quotient the size of a ratio (not the
|
|
109
|
+
// size of the money), so the single Number() sees a value it can hold exactly.
|
|
110
|
+
const scaled = (overdueMinor * RATE_PRECISION) / totalMinor;
|
|
111
|
+
const rate = Number(scaled) / Number(RATE_PRECISION);
|
|
112
|
+
// A ratio that still cannot be represented is no rate at all — the readout
|
|
113
|
+
// shows the no-value placeholder rather than a NaN/Infinity artifact.
|
|
114
|
+
if (!Number.isFinite(rate)) {
|
|
115
|
+
return { rate: null, overdueMinor, totalMinor, indeterminate: false };
|
|
116
|
+
}
|
|
117
|
+
return { rate, overdueMinor, totalMinor, indeterminate: false };
|
|
118
|
+
}
|
|
119
|
+
/** Band → glyph + tint + accessible word. The glyph and sr-only word are the
|
|
120
|
+
* load-bearing cue; the tint only reinforces, so the band survives grayscale
|
|
121
|
+
* and color-vision deficiency. Mirrors the gauge's three-band canon, renamed
|
|
122
|
+
* to the delinquency vocabulary. */
|
|
123
|
+
const RATE_BAND = {
|
|
124
|
+
low: { Icon: ShieldCheck, tint: 'text-system-success', word: 'Saudável' },
|
|
125
|
+
warn: { Icon: TriangleAlert, tint: 'text-system-alert', word: 'Elevada' },
|
|
126
|
+
breach: { Icon: AlertOctagon, tint: 'text-credit', word: 'Em estresse' }
|
|
127
|
+
};
|
|
128
|
+
export function DelinquencyAging({ buckets, currency, locale, rateLabel = 'Inadimplência', warn = 0.05, breach = 0.1, showTotal = false, className }) {
|
|
129
|
+
// THIRD RAIL: the rate scale and the two totals come from money-math, never
|
|
130
|
+
// float. The division below is of two exact BigInt-derived integers.
|
|
131
|
+
const scale = currency ? minorDigitsOf(currency) : 2;
|
|
132
|
+
const { rate, indeterminate } = delinquencyRate(buckets, scale);
|
|
133
|
+
// The band is only meaningful when there is a rate; an empty/indeterminate
|
|
134
|
+
// portfolio has no band to name (rendered as the explicit no-value readout).
|
|
135
|
+
const hasRate = rate !== null;
|
|
136
|
+
// higher-is-worse: more value past due is worse. gaugeBand is strict-edge, so
|
|
137
|
+
// a rate exactly on a threshold stays in the calmer band.
|
|
138
|
+
const band = hasRate
|
|
139
|
+
? gaugeBand(rate, { warn, breach }, 'higher-is-worse')
|
|
140
|
+
: 'low';
|
|
141
|
+
const { Icon, tint, word } = RATE_BAND[band];
|
|
142
|
+
const distressed = band === 'breach';
|
|
143
|
+
return (_jsxs("div", { className: cn('flex flex-col gap-4', className), children: [_jsxs("header", { className: "flex items-baseline justify-between gap-3", children: [_jsx(SectionLabel, { as: "span", children: rateLabel }), hasRate ? (_jsxs("span", {
|
|
144
|
+
// A distressed rate is a credit alarm: announced the moment it
|
|
145
|
+
// crosses the band, so assistive tech does not lean on the tint.
|
|
146
|
+
role: distressed ? 'alert' : undefined, className: cn('inline-flex items-center gap-1.5', tint), children: [_jsx(Icon, { "aria-hidden": true, className: "size-4 shrink-0" }), _jsxs("span", { className: "sr-only", children: [word, ": "] }), _jsx(Figure, { size: "row", className: tint, children: formatPercent(rate, { unit: 'ratio', locale }) })] })) : (_jsxs("span", { className: "text-muted-foreground inline-flex items-center gap-1.5", children: [_jsx("span", { className: cn(LABEL_VOICE_CLASS, 'tracking-normal normal-case'), children: indeterminate ? 'indeterminada' : 'sem carteira' }), _jsx(Figure, { size: "row", className: "text-muted-foreground", children: NO_VALUE })] }))] }), _jsx(AgingBuckets, { buckets: buckets, currency: currency, locale: locale, showTotal: showTotal })] }));
|
|
147
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Figure — the locked mono figure type scale of the enterprise console.
|
|
3
|
+
*
|
|
4
|
+
* All numbers are the hero: mono, tabular, visually dominant. This file is the
|
|
5
|
+
* single source of truth for the canonical figure sizes so screens stop
|
|
6
|
+
* re-typing `font-mono … tabular-nums` strings and drifting on
|
|
7
|
+
* size/weight/tracking. Use `<Figure size>` for new markup, or import the
|
|
8
|
+
* `FIGURE_CLASS` constants when composing className strings inline.
|
|
9
|
+
*
|
|
10
|
+
* Scale:
|
|
11
|
+
* - hero : the dominant in-bar figure — text-4xl/5xl, semibold, tracking-tight
|
|
12
|
+
* - panel : compliance / exposure — text-3xl, semibold, tracking-tight
|
|
13
|
+
* - count : ledger count — text-2xl, semibold, tracking-tight
|
|
14
|
+
* - row : inline / row figure — text-sm
|
|
15
|
+
* - tick : ruler / micro figure — text-[10px], leading-none
|
|
16
|
+
*/
|
|
17
|
+
import type { ElementType, ReactNode } from 'react';
|
|
18
|
+
export type FigureSize = 'hero' | 'panel' | 'count' | 'row' | 'tick';
|
|
19
|
+
/** Canonical class strings per figure size. The `tabular-nums` and `font-mono`
|
|
20
|
+
* invariants live here so they can never be forgotten at a call site. */
|
|
21
|
+
export declare const FIGURE_CLASS: Record<FigureSize, string>;
|
|
22
|
+
export type FigureProps = {
|
|
23
|
+
size: FigureSize;
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
/** Render element. Defaults to `span` so figures nest inside `dd`/`p`/etc. */
|
|
27
|
+
as?: ElementType;
|
|
28
|
+
};
|
|
29
|
+
export declare function Figure({ size, children, className, as: Tag }: FigureProps): import("react").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/figure/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAInD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAEpE;0EAC0E;AAC1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAMnD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB,CAAA;AAED,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,EAAE,EAAE,GAAY,EACjB,EAAE,WAAW,+BAEb"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../lib/utils.js';
|
|
3
|
+
/** Canonical class strings per figure size. The `tabular-nums` and `font-mono`
|
|
4
|
+
* invariants live here so they can never be forgotten at a call site. */
|
|
5
|
+
export const FIGURE_CLASS = {
|
|
6
|
+
hero: 'font-mono text-4xl font-semibold tracking-tight tabular-nums lg:text-5xl',
|
|
7
|
+
panel: 'font-mono text-3xl font-semibold tracking-tight tabular-nums',
|
|
8
|
+
count: 'font-mono text-2xl font-semibold tracking-tight tabular-nums',
|
|
9
|
+
row: 'font-mono text-sm tabular-nums',
|
|
10
|
+
tick: 'font-mono text-[10px] leading-none tabular-nums'
|
|
11
|
+
};
|
|
12
|
+
export function Figure({ size, children, className, as: Tag = 'span' }) {
|
|
13
|
+
return _jsx(Tag, { className: cn(FIGURE_CLASS[size], className), children: children });
|
|
14
|
+
}
|