@adminiumjs/ui 0.1.0-rc.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/LICENSE +661 -0
- package/dist/components/alert/Alert.d.ts +27 -0
- package/dist/components/alert/Alert.d.ts.map +1 -0
- package/dist/components/alert/Alert.js +25 -0
- package/dist/components/alert/Alert.js.map +1 -0
- package/dist/components/alert/index.d.ts +3 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +2 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/auth-layout/AuthLayout.d.ts +54 -0
- package/dist/components/auth-layout/AuthLayout.d.ts.map +1 -0
- package/dist/components/auth-layout/AuthLayout.js +30 -0
- package/dist/components/auth-layout/AuthLayout.js.map +1 -0
- package/dist/components/auth-layout/index.d.ts +3 -0
- package/dist/components/auth-layout/index.d.ts.map +1 -0
- package/dist/components/auth-layout/index.js +2 -0
- package/dist/components/auth-layout/index.js.map +1 -0
- package/dist/components/auth-screens/ForgotPasswordForm.d.ts +80 -0
- package/dist/components/auth-screens/ForgotPasswordForm.d.ts.map +1 -0
- package/dist/components/auth-screens/ForgotPasswordForm.js +50 -0
- package/dist/components/auth-screens/ForgotPasswordForm.js.map +1 -0
- package/dist/components/auth-screens/ResetPasswordForm.d.ts +55 -0
- package/dist/components/auth-screens/ResetPasswordForm.d.ts.map +1 -0
- package/dist/components/auth-screens/ResetPasswordForm.js +45 -0
- package/dist/components/auth-screens/ResetPasswordForm.js.map +1 -0
- package/dist/components/auth-screens/SignInForm.d.ts +67 -0
- package/dist/components/auth-screens/SignInForm.d.ts.map +1 -0
- package/dist/components/auth-screens/SignInForm.js +47 -0
- package/dist/components/auth-screens/SignInForm.js.map +1 -0
- package/dist/components/auth-screens/TwoFactorForm.d.ts +54 -0
- package/dist/components/auth-screens/TwoFactorForm.d.ts.map +1 -0
- package/dist/components/auth-screens/TwoFactorForm.js +47 -0
- package/dist/components/auth-screens/TwoFactorForm.js.map +1 -0
- package/dist/components/auth-screens/index.d.ts +9 -0
- package/dist/components/auth-screens/index.d.ts.map +1 -0
- package/dist/components/auth-screens/index.js +5 -0
- package/dist/components/auth-screens/index.js.map +1 -0
- package/dist/components/autosave-indicator/AutosaveIndicator.d.ts +28 -0
- package/dist/components/autosave-indicator/AutosaveIndicator.d.ts.map +1 -0
- package/dist/components/autosave-indicator/AutosaveIndicator.js +14 -0
- package/dist/components/autosave-indicator/AutosaveIndicator.js.map +1 -0
- package/dist/components/autosave-indicator/index.d.ts +3 -0
- package/dist/components/autosave-indicator/index.d.ts.map +1 -0
- package/dist/components/autosave-indicator/index.js +2 -0
- package/dist/components/autosave-indicator/index.js.map +1 -0
- package/dist/components/avatar/Avatar.d.ts +48 -0
- package/dist/components/avatar/Avatar.d.ts.map +1 -0
- package/dist/components/avatar/Avatar.js +104 -0
- package/dist/components/avatar/Avatar.js.map +1 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +2 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/avatar-stack/AvatarStack.d.ts +21 -0
- package/dist/components/avatar-stack/AvatarStack.d.ts.map +1 -0
- package/dist/components/avatar-stack/AvatarStack.js +16 -0
- package/dist/components/avatar-stack/AvatarStack.js.map +1 -0
- package/dist/components/avatar-stack/index.d.ts +3 -0
- package/dist/components/avatar-stack/index.d.ts.map +1 -0
- package/dist/components/avatar-stack/index.js +2 -0
- package/dist/components/avatar-stack/index.js.map +1 -0
- package/dist/components/badge/Badge.d.ts +22 -0
- package/dist/components/badge/Badge.d.ts.map +1 -0
- package/dist/components/badge/Badge.js +21 -0
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +6 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/banner/Banner.d.ts +21 -0
- package/dist/components/banner/Banner.d.ts.map +1 -0
- package/dist/components/banner/Banner.js +24 -0
- package/dist/components/banner/Banner.js.map +1 -0
- package/dist/components/banner/index.d.ts +3 -0
- package/dist/components/banner/index.d.ts.map +1 -0
- package/dist/components/banner/index.js +2 -0
- package/dist/components/banner/index.js.map +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +22 -0
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js +24 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/components/breadcrumbs/index.d.ts +3 -0
- package/dist/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/components/breadcrumbs/index.js +2 -0
- package/dist/components/breadcrumbs/index.js.map +1 -0
- package/dist/components/bulk-action-bar/BulkActionBar.d.ts +35 -0
- package/dist/components/bulk-action-bar/BulkActionBar.d.ts.map +1 -0
- package/dist/components/bulk-action-bar/BulkActionBar.js +17 -0
- package/dist/components/bulk-action-bar/BulkActionBar.js.map +1 -0
- package/dist/components/bulk-action-bar/index.d.ts +3 -0
- package/dist/components/bulk-action-bar/index.d.ts.map +1 -0
- package/dist/components/bulk-action-bar/index.js +2 -0
- package/dist/components/bulk-action-bar/index.js.map +1 -0
- package/dist/components/button/Button.d.ts +27 -0
- package/dist/components/button/Button.d.ts.map +1 -0
- package/dist/components/button/Button.js +43 -0
- package/dist/components/button/Button.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +2 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/card/Card.d.ts +27 -0
- package/dist/components/card/Card.d.ts.map +1 -0
- package/dist/components/card/Card.js +41 -0
- package/dist/components/card/Card.js.map +1 -0
- package/dist/components/card/index.d.ts +3 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/index.js +2 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +13 -0
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/Checkbox.js +16 -0
- package/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/chip-input/ChipInput.d.ts +29 -0
- package/dist/components/chip-input/ChipInput.d.ts.map +1 -0
- package/dist/components/chip-input/ChipInput.js +96 -0
- package/dist/components/chip-input/ChipInput.js.map +1 -0
- package/dist/components/chip-input/index.d.ts +3 -0
- package/dist/components/chip-input/index.d.ts.map +1 -0
- package/dist/components/chip-input/index.js +2 -0
- package/dist/components/chip-input/index.js.map +1 -0
- package/dist/components/choice-chips/ChoiceChips.d.ts +40 -0
- package/dist/components/choice-chips/ChoiceChips.d.ts.map +1 -0
- package/dist/components/choice-chips/ChoiceChips.js +76 -0
- package/dist/components/choice-chips/ChoiceChips.js.map +1 -0
- package/dist/components/choice-chips/index.d.ts +3 -0
- package/dist/components/choice-chips/index.d.ts.map +1 -0
- package/dist/components/choice-chips/index.js +2 -0
- package/dist/components/choice-chips/index.js.map +1 -0
- package/dist/components/combobox/Combobox.d.ts +54 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -0
- package/dist/components/combobox/Combobox.js +127 -0
- package/dist/components/combobox/Combobox.js.map +1 -0
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/combobox/index.d.ts.map +1 -0
- package/dist/components/combobox/index.js +2 -0
- package/dist/components/combobox/index.js.map +1 -0
- package/dist/components/command-palette/CommandPalette.d.ts +62 -0
- package/dist/components/command-palette/CommandPalette.d.ts.map +1 -0
- package/dist/components/command-palette/CommandPalette.js +91 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -0
- package/dist/components/command-palette/index.d.ts +4 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/command-palette/index.js +3 -0
- package/dist/components/command-palette/index.js.map +1 -0
- package/dist/components/command-palette/useCommandK.d.ts +9 -0
- package/dist/components/command-palette/useCommandK.d.ts.map +1 -0
- package/dist/components/command-palette/useCommandK.js +24 -0
- package/dist/components/command-palette/useCommandK.js.map +1 -0
- package/dist/components/confirm-modal/ConfirmModal.d.ts +38 -0
- package/dist/components/confirm-modal/ConfirmModal.d.ts.map +1 -0
- package/dist/components/confirm-modal/ConfirmModal.js +40 -0
- package/dist/components/confirm-modal/ConfirmModal.js.map +1 -0
- package/dist/components/confirm-modal/index.d.ts +3 -0
- package/dist/components/confirm-modal/index.d.ts.map +1 -0
- package/dist/components/confirm-modal/index.js +2 -0
- package/dist/components/confirm-modal/index.js.map +1 -0
- package/dist/components/count-badge/CountBadge.d.ts +13 -0
- package/dist/components/count-badge/CountBadge.d.ts.map +1 -0
- package/dist/components/count-badge/CountBadge.js +20 -0
- package/dist/components/count-badge/CountBadge.js.map +1 -0
- package/dist/components/count-badge/index.d.ts +3 -0
- package/dist/components/count-badge/index.d.ts.map +1 -0
- package/dist/components/count-badge/index.js +2 -0
- package/dist/components/count-badge/index.js.map +1 -0
- package/dist/components/date-input/DateInput.d.ts +53 -0
- package/dist/components/date-input/DateInput.d.ts.map +1 -0
- package/dist/components/date-input/DateInput.js +38 -0
- package/dist/components/date-input/DateInput.js.map +1 -0
- package/dist/components/date-input/index.d.ts +3 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/index.js +2 -0
- package/dist/components/date-input/index.js.map +1 -0
- package/dist/components/delta-pill/DeltaPill.d.ts +25 -0
- package/dist/components/delta-pill/DeltaPill.d.ts.map +1 -0
- package/dist/components/delta-pill/DeltaPill.js +36 -0
- package/dist/components/delta-pill/DeltaPill.js.map +1 -0
- package/dist/components/delta-pill/index.d.ts +3 -0
- package/dist/components/delta-pill/index.d.ts.map +1 -0
- package/dist/components/delta-pill/index.js +2 -0
- package/dist/components/delta-pill/index.js.map +1 -0
- package/dist/components/divider/Divider.d.ts +15 -0
- package/dist/components/divider/Divider.d.ts.map +1 -0
- package/dist/components/divider/Divider.js +23 -0
- package/dist/components/divider/Divider.js.map +1 -0
- package/dist/components/divider/index.d.ts +3 -0
- package/dist/components/divider/index.d.ts.map +1 -0
- package/dist/components/divider/index.js +2 -0
- package/dist/components/divider/index.js.map +1 -0
- package/dist/components/drawer/Drawer.d.ts +44 -0
- package/dist/components/drawer/Drawer.d.ts.map +1 -0
- package/dist/components/drawer/Drawer.js +45 -0
- package/dist/components/drawer/Drawer.js.map +1 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.ts +35 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -0
- package/dist/components/dropdown-menu/DropdownMenu.js +38 -0
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -0
- package/dist/components/dropdown-menu/index.d.ts +3 -0
- package/dist/components/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/dropdown-menu/index.js +2 -0
- package/dist/components/dropdown-menu/index.js.map +1 -0
- package/dist/components/empty-state/EmptyState.d.ts +26 -0
- package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
- package/dist/components/empty-state/EmptyState.js +24 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -0
- package/dist/components/empty-state/index.d.ts +3 -0
- package/dist/components/empty-state/index.d.ts.map +1 -0
- package/dist/components/empty-state/index.js +2 -0
- package/dist/components/empty-state/index.js.map +1 -0
- package/dist/components/filter-chip/FilterChip.d.ts +26 -0
- package/dist/components/filter-chip/FilterChip.d.ts.map +1 -0
- package/dist/components/filter-chip/FilterChip.js +17 -0
- package/dist/components/filter-chip/FilterChip.js.map +1 -0
- package/dist/components/filter-chip/index.d.ts +3 -0
- package/dist/components/filter-chip/index.d.ts.map +1 -0
- package/dist/components/filter-chip/index.js +2 -0
- package/dist/components/filter-chip/index.js.map +1 -0
- package/dist/components/form-field/FormField.d.ts +50 -0
- package/dist/components/form-field/FormField.d.ts.map +1 -0
- package/dist/components/form-field/FormField.js +31 -0
- package/dist/components/form-field/FormField.js.map +1 -0
- package/dist/components/form-field/index.d.ts +3 -0
- package/dist/components/form-field/index.d.ts.map +1 -0
- package/dist/components/form-field/index.js +2 -0
- package/dist/components/form-field/index.js.map +1 -0
- package/dist/components/icon/Icon.d.ts +36 -0
- package/dist/components/icon/Icon.d.ts.map +1 -0
- package/dist/components/icon/Icon.js +24 -0
- package/dist/components/icon/Icon.js.map +1 -0
- package/dist/components/icon/index.d.ts +3 -0
- package/dist/components/icon/index.d.ts.map +1 -0
- package/dist/components/icon/index.js +2 -0
- package/dist/components/icon/index.js.map +1 -0
- package/dist/components/icon-button/IconButton.d.ts +19 -0
- package/dist/components/icon-button/IconButton.d.ts.map +1 -0
- package/dist/components/icon-button/IconButton.js +31 -0
- package/dist/components/icon-button/IconButton.js.map +1 -0
- package/dist/components/icon-button/index.d.ts +3 -0
- package/dist/components/icon-button/index.d.ts.map +1 -0
- package/dist/components/icon-button/index.js +2 -0
- package/dist/components/icon-button/index.js.map +1 -0
- package/dist/components/icon-tile/IconTile.d.ts +24 -0
- package/dist/components/icon-tile/IconTile.d.ts.map +1 -0
- package/dist/components/icon-tile/IconTile.js +32 -0
- package/dist/components/icon-tile/IconTile.js.map +1 -0
- package/dist/components/icon-tile/index.d.ts +3 -0
- package/dist/components/icon-tile/index.d.ts.map +1 -0
- package/dist/components/icon-tile/index.js +2 -0
- package/dist/components/icon-tile/index.js.map +1 -0
- package/dist/components/input/Input.d.ts +28 -0
- package/dist/components/input/Input.d.ts.map +1 -0
- package/dist/components/input/Input.js +34 -0
- package/dist/components/input/Input.js.map +1 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +2 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input-group/InputGroup.d.ts +34 -0
- package/dist/components/input-group/InputGroup.d.ts.map +1 -0
- package/dist/components/input-group/InputGroup.js +23 -0
- package/dist/components/input-group/InputGroup.js.map +1 -0
- package/dist/components/input-group/index.d.ts +3 -0
- package/dist/components/input-group/index.d.ts.map +1 -0
- package/dist/components/input-group/index.js +2 -0
- package/dist/components/input-group/index.js.map +1 -0
- package/dist/components/kbd/Kbd.d.ts +8 -0
- package/dist/components/kbd/Kbd.d.ts.map +1 -0
- package/dist/components/kbd/Kbd.js +10 -0
- package/dist/components/kbd/Kbd.js.map +1 -0
- package/dist/components/kbd/index.d.ts +3 -0
- package/dist/components/kbd/index.d.ts.map +1 -0
- package/dist/components/kbd/index.js +2 -0
- package/dist/components/kbd/index.js.map +1 -0
- package/dist/components/key-value-list/KeyValueList.d.ts +27 -0
- package/dist/components/key-value-list/KeyValueList.d.ts.map +1 -0
- package/dist/components/key-value-list/KeyValueList.js +16 -0
- package/dist/components/key-value-list/KeyValueList.js.map +1 -0
- package/dist/components/key-value-list/index.d.ts +3 -0
- package/dist/components/key-value-list/index.d.ts.map +1 -0
- package/dist/components/key-value-list/index.js +2 -0
- package/dist/components/key-value-list/index.js.map +1 -0
- package/dist/components/label/Label.d.ts +14 -0
- package/dist/components/label/Label.d.ts.map +1 -0
- package/dist/components/label/Label.js +17 -0
- package/dist/components/label/Label.js.map +1 -0
- package/dist/components/label/index.d.ts +3 -0
- package/dist/components/label/index.d.ts.map +1 -0
- package/dist/components/label/index.js +2 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/modal/Modal.d.ts +48 -0
- package/dist/components/modal/Modal.d.ts.map +1 -0
- package/dist/components/modal/Modal.js +48 -0
- package/dist/components/modal/Modal.js.map +1 -0
- package/dist/components/modal/index.d.ts +3 -0
- package/dist/components/modal/index.d.ts.map +1 -0
- package/dist/components/modal/index.js +2 -0
- package/dist/components/modal/index.js.map +1 -0
- package/dist/components/mono-text/MonoText.d.ts +13 -0
- package/dist/components/mono-text/MonoText.d.ts.map +1 -0
- package/dist/components/mono-text/MonoText.js +14 -0
- package/dist/components/mono-text/MonoText.js.map +1 -0
- package/dist/components/mono-text/index.d.ts +3 -0
- package/dist/components/mono-text/index.d.ts.map +1 -0
- package/dist/components/mono-text/index.js +2 -0
- package/dist/components/mono-text/index.js.map +1 -0
- package/dist/components/number-stepper/NumberStepper.d.ts +29 -0
- package/dist/components/number-stepper/NumberStepper.d.ts.map +1 -0
- package/dist/components/number-stepper/NumberStepper.js +50 -0
- package/dist/components/number-stepper/NumberStepper.js.map +1 -0
- package/dist/components/number-stepper/index.d.ts +3 -0
- package/dist/components/number-stepper/index.d.ts.map +1 -0
- package/dist/components/number-stepper/index.js +2 -0
- package/dist/components/number-stepper/index.js.map +1 -0
- package/dist/components/otp-input/OtpInput.d.ts +30 -0
- package/dist/components/otp-input/OtpInput.d.ts.map +1 -0
- package/dist/components/otp-input/OtpInput.js +35 -0
- package/dist/components/otp-input/OtpInput.js.map +1 -0
- package/dist/components/otp-input/index.d.ts +3 -0
- package/dist/components/otp-input/index.d.ts.map +1 -0
- package/dist/components/otp-input/index.js +2 -0
- package/dist/components/otp-input/index.js.map +1 -0
- package/dist/components/pagination/Pagination.d.ts +26 -0
- package/dist/components/pagination/Pagination.d.ts.map +1 -0
- package/dist/components/pagination/Pagination.js +34 -0
- package/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/components/pagination/index.d.ts +3 -0
- package/dist/components/pagination/index.d.ts.map +1 -0
- package/dist/components/pagination/index.js +2 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/password-strength/PasswordStrength.d.ts +29 -0
- package/dist/components/password-strength/PasswordStrength.d.ts.map +1 -0
- package/dist/components/password-strength/PasswordStrength.js +43 -0
- package/dist/components/password-strength/PasswordStrength.js.map +1 -0
- package/dist/components/password-strength/index.d.ts +3 -0
- package/dist/components/password-strength/index.d.ts.map +1 -0
- package/dist/components/password-strength/index.js +2 -0
- package/dist/components/password-strength/index.js.map +1 -0
- package/dist/components/permission-matrix/PermissionMatrix.d.ts +90 -0
- package/dist/components/permission-matrix/PermissionMatrix.d.ts.map +1 -0
- package/dist/components/permission-matrix/PermissionMatrix.js +62 -0
- package/dist/components/permission-matrix/PermissionMatrix.js.map +1 -0
- package/dist/components/permission-matrix/index.d.ts +3 -0
- package/dist/components/permission-matrix/index.d.ts.map +1 -0
- package/dist/components/permission-matrix/index.js +2 -0
- package/dist/components/permission-matrix/index.js.map +1 -0
- package/dist/components/popover/Popover.d.ts +19 -0
- package/dist/components/popover/Popover.d.ts.map +1 -0
- package/dist/components/popover/Popover.js +21 -0
- package/dist/components/popover/Popover.js.map +1 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popover/index.js +2 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/progress-bar/ProgressBar.d.ts +24 -0
- package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -0
- package/dist/components/progress-bar/ProgressBar.js +35 -0
- package/dist/components/progress-bar/ProgressBar.js.map +1 -0
- package/dist/components/progress-bar/index.d.ts +3 -0
- package/dist/components/progress-bar/index.d.ts.map +1 -0
- package/dist/components/progress-bar/index.js +2 -0
- package/dist/components/progress-bar/index.js.map +1 -0
- package/dist/components/radio/Radio.d.ts +25 -0
- package/dist/components/radio/Radio.d.ts.map +1 -0
- package/dist/components/radio/Radio.js +28 -0
- package/dist/components/radio/Radio.js.map +1 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +2 -0
- package/dist/components/radio/index.js.map +1 -0
- package/dist/components/radio-card/RadioCard.d.ts +22 -0
- package/dist/components/radio-card/RadioCard.d.ts.map +1 -0
- package/dist/components/radio-card/RadioCard.js +16 -0
- package/dist/components/radio-card/RadioCard.js.map +1 -0
- package/dist/components/radio-card/index.d.ts +3 -0
- package/dist/components/radio-card/index.d.ts.map +1 -0
- package/dist/components/radio-card/index.js +2 -0
- package/dist/components/radio-card/index.js.map +1 -0
- package/dist/components/runtime-chip/RuntimeChip.d.ts +54 -0
- package/dist/components/runtime-chip/RuntimeChip.d.ts.map +1 -0
- package/dist/components/runtime-chip/RuntimeChip.js +46 -0
- package/dist/components/runtime-chip/RuntimeChip.js.map +1 -0
- package/dist/components/runtime-chip/index.d.ts +3 -0
- package/dist/components/runtime-chip/index.d.ts.map +1 -0
- package/dist/components/runtime-chip/index.js +2 -0
- package/dist/components/runtime-chip/index.js.map +1 -0
- package/dist/components/search-input/SearchInput.d.ts +27 -0
- package/dist/components/search-input/SearchInput.d.ts.map +1 -0
- package/dist/components/search-input/SearchInput.js +36 -0
- package/dist/components/search-input/SearchInput.js.map +1 -0
- package/dist/components/search-input/index.d.ts +3 -0
- package/dist/components/search-input/index.d.ts.map +1 -0
- package/dist/components/search-input/index.js +2 -0
- package/dist/components/search-input/index.js.map +1 -0
- package/dist/components/secret-input/SecretInput.d.ts +27 -0
- package/dist/components/secret-input/SecretInput.d.ts.map +1 -0
- package/dist/components/secret-input/SecretInput.js +49 -0
- package/dist/components/secret-input/SecretInput.js.map +1 -0
- package/dist/components/secret-input/index.d.ts +3 -0
- package/dist/components/secret-input/index.d.ts.map +1 -0
- package/dist/components/secret-input/index.js +2 -0
- package/dist/components/secret-input/index.js.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts +35 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.js +67 -0
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -0
- package/dist/components/segmented-control/index.d.ts +3 -0
- package/dist/components/segmented-control/index.d.ts.map +1 -0
- package/dist/components/segmented-control/index.js +2 -0
- package/dist/components/segmented-control/index.js.map +1 -0
- package/dist/components/select/Select.d.ts +17 -0
- package/dist/components/select/Select.d.ts.map +1 -0
- package/dist/components/select/Select.js +14 -0
- package/dist/components/select/Select.js.map +1 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +2 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/skeleton/Skeleton.d.ts +18 -0
- package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
- package/dist/components/skeleton/Skeleton.js +30 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +3 -0
- package/dist/components/skeleton/index.d.ts.map +1 -0
- package/dist/components/skeleton/index.js +2 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/slider/Slider.d.ts +17 -0
- package/dist/components/slider/Slider.d.ts.map +1 -0
- package/dist/components/slider/Slider.js +14 -0
- package/dist/components/slider/Slider.js.map +1 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/index.d.ts.map +1 -0
- package/dist/components/slider/index.js +2 -0
- package/dist/components/slider/index.js.map +1 -0
- package/dist/components/snackbar/Snackbar.d.ts +21 -0
- package/dist/components/snackbar/Snackbar.d.ts.map +1 -0
- package/dist/components/snackbar/Snackbar.js +12 -0
- package/dist/components/snackbar/Snackbar.js.map +1 -0
- package/dist/components/snackbar/index.d.ts +3 -0
- package/dist/components/snackbar/index.d.ts.map +1 -0
- package/dist/components/snackbar/index.js +2 -0
- package/dist/components/snackbar/index.js.map +1 -0
- package/dist/components/spinner/Spinner.d.ts +22 -0
- package/dist/components/spinner/Spinner.d.ts.map +1 -0
- package/dist/components/spinner/Spinner.js +28 -0
- package/dist/components/spinner/Spinner.js.map +1 -0
- package/dist/components/spinner/index.d.ts +3 -0
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +2 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/status-pill/StatusPill.d.ts +19 -0
- package/dist/components/status-pill/StatusPill.d.ts.map +1 -0
- package/dist/components/status-pill/StatusPill.js +16 -0
- package/dist/components/status-pill/StatusPill.js.map +1 -0
- package/dist/components/status-pill/index.d.ts +3 -0
- package/dist/components/status-pill/index.d.ts.map +1 -0
- package/dist/components/status-pill/index.js +2 -0
- package/dist/components/status-pill/index.js.map +1 -0
- package/dist/components/stepper/Stepper.d.ts +31 -0
- package/dist/components/stepper/Stepper.d.ts.map +1 -0
- package/dist/components/stepper/Stepper.js +49 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/stepper/index.d.ts +3 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/stepper/index.js +2 -0
- package/dist/components/stepper/index.js.map +1 -0
- package/dist/components/success-state/SuccessState.d.ts +27 -0
- package/dist/components/success-state/SuccessState.d.ts.map +1 -0
- package/dist/components/success-state/SuccessState.js +14 -0
- package/dist/components/success-state/SuccessState.js.map +1 -0
- package/dist/components/success-state/index.d.ts +3 -0
- package/dist/components/success-state/index.d.ts.map +1 -0
- package/dist/components/success-state/index.js +2 -0
- package/dist/components/success-state/index.js.map +1 -0
- package/dist/components/switch/Switch.d.ts +11 -0
- package/dist/components/switch/Switch.d.ts.map +1 -0
- package/dist/components/switch/Switch.js +13 -0
- package/dist/components/switch/Switch.js.map +1 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +32 -0
- package/dist/components/tabs/Tabs.d.ts.map +1 -0
- package/dist/components/tabs/Tabs.js +43 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/components/tabs/index.d.ts +3 -0
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tag/Tag.d.ts +30 -0
- package/dist/components/tag/Tag.d.ts.map +1 -0
- package/dist/components/tag/Tag.js +35 -0
- package/dist/components/tag/Tag.js.map +1 -0
- package/dist/components/tag/index.d.ts +3 -0
- package/dist/components/tag/index.d.ts.map +1 -0
- package/dist/components/tag/index.js +2 -0
- package/dist/components/tag/index.js.map +1 -0
- package/dist/components/textarea/Textarea.d.ts +19 -0
- package/dist/components/textarea/Textarea.d.ts.map +1 -0
- package/dist/components/textarea/Textarea.js +11 -0
- package/dist/components/textarea/Textarea.js.map +1 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/toast/Toast.d.ts +67 -0
- package/dist/components/toast/Toast.d.ts.map +1 -0
- package/dist/components/toast/Toast.js +63 -0
- package/dist/components/toast/Toast.js.map +1 -0
- package/dist/components/toast/index.d.ts +5 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/index.js +3 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toast/useToastQueue.d.ts +73 -0
- package/dist/components/toast/useToastQueue.d.ts.map +1 -0
- package/dist/components/toast/useToastQueue.js +191 -0
- package/dist/components/toast/useToastQueue.js.map +1 -0
- package/dist/components/toggle-matrix/ToggleMatrix.d.ts +58 -0
- package/dist/components/toggle-matrix/ToggleMatrix.d.ts.map +1 -0
- package/dist/components/toggle-matrix/ToggleMatrix.js +95 -0
- package/dist/components/toggle-matrix/ToggleMatrix.js.map +1 -0
- package/dist/components/toggle-matrix/index.d.ts +3 -0
- package/dist/components/toggle-matrix/index.d.ts.map +1 -0
- package/dist/components/toggle-matrix/index.js +2 -0
- package/dist/components/toggle-matrix/index.js.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +33 -0
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/tooltip/Tooltip.js +19 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +2 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/two-phase-modal/TwoPhaseModal.d.ts +45 -0
- package/dist/components/two-phase-modal/TwoPhaseModal.d.ts.map +1 -0
- package/dist/components/two-phase-modal/TwoPhaseModal.js +50 -0
- package/dist/components/two-phase-modal/TwoPhaseModal.js.map +1 -0
- package/dist/components/two-phase-modal/index.d.ts +3 -0
- package/dist/components/two-phase-modal/index.d.ts.map +1 -0
- package/dist/components/two-phase-modal/index.js +2 -0
- package/dist/components/two-phase-modal/index.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useUndoableAction.d.ts +62 -0
- package/dist/hooks/useUndoableAction.d.ts.map +1 -0
- package/dist/hooks/useUndoableAction.js +85 -0
- package/dist/hooks/useUndoableAction.js.map +1 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +33 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +59 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/tones.d.ts +40 -0
- package/dist/lib/tones.d.ts.map +1 -0
- package/dist/lib/tones.js +91 -0
- package/dist/lib/tones.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +15 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +186 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/context.d.ts +21 -0
- package/dist/theme/context.d.ts.map +1 -0
- package/dist/theme/context.js +7 -0
- package/dist/theme/context.js.map +1 -0
- package/dist/theme/index.d.ts +9 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +5 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/subscribe.d.ts +12 -0
- package/dist/theme/subscribe.d.ts.map +1 -0
- package/dist/theme/subscribe.js +14 -0
- package/dist/theme/subscribe.js.map +1 -0
- package/dist/theme/types.d.ts +32 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +23 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/useTheme.d.ts +14 -0
- package/dist/theme/useTheme.d.ts.map +1 -0
- package/dist/theme/useTheme.js +27 -0
- package/dist/theme/useTheme.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/tones.ts — the canonical home of the semantic tone vocabulary and the
|
|
3
|
+
* status→tone registry (workplan/03-component-library.md §3.3, §7.6).
|
|
4
|
+
*
|
|
5
|
+
* The SINGLE source of truth: components/icon-tile, components/badge and
|
|
6
|
+
* components/status-pill re-export from here (their wave-1 local copies are
|
|
7
|
+
* gone), so there is exactly one `Tone` union, one class map per recipe, and
|
|
8
|
+
* one status→tone registry instance. New code must import from this module.
|
|
9
|
+
*/
|
|
10
|
+
/** Semantic tone vocabulary shared across the library. */
|
|
11
|
+
export type Tone = 'neutral' | 'accent' | 'pos' | 'warn' | 'danger' | 'info';
|
|
12
|
+
/** Every tone, in canonical display order (stories, matrices). */
|
|
13
|
+
export declare const TONES: readonly Tone[];
|
|
14
|
+
/** Tone → soft background + strong tone foreground utility pairs. */
|
|
15
|
+
export declare const toneSoftClasses: Record<Tone, string>;
|
|
16
|
+
/** Tone → solid background + on-tone foreground utility pairs. */
|
|
17
|
+
export declare const toneSolidClasses: Record<Tone, string>;
|
|
18
|
+
/**
|
|
19
|
+
* Tone → `color-mix` border utilities used by Alert/Banner callouts
|
|
20
|
+
* (tone-soft bg + 30%-mixed tone border, research/design-system.md §3 Tier 3).
|
|
21
|
+
*/
|
|
22
|
+
export declare const toneMixBorderClasses: Record<Tone, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Sticky translucent bar recipe (workplan/03-component-library.md §7.5) —
|
|
25
|
+
* used by `Topbar`, `WizardLayout` footer and sticky table headers. Exported
|
|
26
|
+
* from here so the color-mix recipe lives in exactly one place.
|
|
27
|
+
*/
|
|
28
|
+
export declare const glassBar = "sticky top-0 z-40 border-b border-border bg-[color-mix(in_srgb,var(--surface)_82%,transparent)] backdrop-blur-[8px]";
|
|
29
|
+
/**
|
|
30
|
+
* Default status→tone registry (workplan/03-component-library.md §7.6).
|
|
31
|
+
* Extended at runtime via `registerStatusTones` (widgets/manifests register
|
|
32
|
+
* domain statuses); tints always derive from the tone — never hardcoded per
|
|
33
|
+
* feature (the "Ticket Queue hardcoded priority tint" defect fix).
|
|
34
|
+
*/
|
|
35
|
+
export declare const DEFAULT_STATUS_TONES: Readonly<Record<string, Tone>>;
|
|
36
|
+
/** Idempotent merge of domain statuses into the status→tone registry. */
|
|
37
|
+
export declare function registerStatusTones(map: Record<string, Tone>): void;
|
|
38
|
+
/** Resolve the semantic tone for a status key (case-insensitive). */
|
|
39
|
+
export declare function statusTone(status: string, fallback?: Tone): Tone;
|
|
40
|
+
//# sourceMappingURL=tones.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tones.d.ts","sourceRoot":"","sources":["../../src/lib/tones.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7E,kEAAkE;AAClE,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAA2D,CAAC;AAE7F,qEAAqE;AACrE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAOhD,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAOjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAOrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,wHACkG,CAAC;AAExH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAyB9D,CAAC;AAIH,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAInE;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,IAAgB,GAAG,IAAI,CAE3E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/tones.ts — the canonical home of the semantic tone vocabulary and the
|
|
3
|
+
* status→tone registry (workplan/03-component-library.md §3.3, §7.6).
|
|
4
|
+
*
|
|
5
|
+
* The SINGLE source of truth: components/icon-tile, components/badge and
|
|
6
|
+
* components/status-pill re-export from here (their wave-1 local copies are
|
|
7
|
+
* gone), so there is exactly one `Tone` union, one class map per recipe, and
|
|
8
|
+
* one status→tone registry instance. New code must import from this module.
|
|
9
|
+
*/
|
|
10
|
+
/** Every tone, in canonical display order (stories, matrices). */
|
|
11
|
+
export const TONES = ['neutral', 'accent', 'pos', 'warn', 'danger', 'info'];
|
|
12
|
+
/** Tone → soft background + strong tone foreground utility pairs. */
|
|
13
|
+
export const toneSoftClasses = {
|
|
14
|
+
neutral: 'bg-surface-3 text-fg-muted',
|
|
15
|
+
accent: 'bg-accent-soft text-accent',
|
|
16
|
+
pos: 'bg-pos-soft text-pos',
|
|
17
|
+
warn: 'bg-warn-soft text-warn',
|
|
18
|
+
danger: 'bg-danger-soft text-danger',
|
|
19
|
+
info: 'bg-info-soft text-info',
|
|
20
|
+
};
|
|
21
|
+
/** Tone → solid background + on-tone foreground utility pairs. */
|
|
22
|
+
export const toneSolidClasses = {
|
|
23
|
+
neutral: 'bg-surface-3 text-fg',
|
|
24
|
+
accent: 'bg-accent text-accent-fg',
|
|
25
|
+
pos: 'bg-pos text-white',
|
|
26
|
+
warn: 'bg-warn text-white',
|
|
27
|
+
danger: 'bg-danger text-white',
|
|
28
|
+
info: 'bg-info text-white',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Tone → `color-mix` border utilities used by Alert/Banner callouts
|
|
32
|
+
* (tone-soft bg + 30%-mixed tone border, research/design-system.md §3 Tier 3).
|
|
33
|
+
*/
|
|
34
|
+
export const toneMixBorderClasses = {
|
|
35
|
+
neutral: 'border-border',
|
|
36
|
+
accent: 'border-[color-mix(in_srgb,var(--accent)_30%,transparent)]',
|
|
37
|
+
pos: 'border-[color-mix(in_srgb,var(--pos)_30%,transparent)]',
|
|
38
|
+
warn: 'border-[color-mix(in_srgb,var(--warn)_30%,transparent)]',
|
|
39
|
+
danger: 'border-[color-mix(in_srgb,var(--danger)_30%,transparent)]',
|
|
40
|
+
info: 'border-[color-mix(in_srgb,var(--info)_30%,transparent)]',
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Sticky translucent bar recipe (workplan/03-component-library.md §7.5) —
|
|
44
|
+
* used by `Topbar`, `WizardLayout` footer and sticky table headers. Exported
|
|
45
|
+
* from here so the color-mix recipe lives in exactly one place.
|
|
46
|
+
*/
|
|
47
|
+
export const glassBar = 'sticky top-0 z-40 border-b border-border bg-[color-mix(in_srgb,var(--surface)_82%,transparent)] backdrop-blur-[8px]';
|
|
48
|
+
/**
|
|
49
|
+
* Default status→tone registry (workplan/03-component-library.md §7.6).
|
|
50
|
+
* Extended at runtime via `registerStatusTones` (widgets/manifests register
|
|
51
|
+
* domain statuses); tints always derive from the tone — never hardcoded per
|
|
52
|
+
* feature (the "Ticket Queue hardcoded priority tint" defect fix).
|
|
53
|
+
*/
|
|
54
|
+
export const DEFAULT_STATUS_TONES = Object.freeze({
|
|
55
|
+
paid: 'pos',
|
|
56
|
+
active: 'pos',
|
|
57
|
+
connected: 'pos',
|
|
58
|
+
completed: 'pos',
|
|
59
|
+
published: 'pos',
|
|
60
|
+
healthy: 'pos',
|
|
61
|
+
pending: 'warn',
|
|
62
|
+
trialing: 'warn',
|
|
63
|
+
queued: 'warn',
|
|
64
|
+
degraded: 'warn',
|
|
65
|
+
past_due: 'warn',
|
|
66
|
+
failed: 'danger',
|
|
67
|
+
error: 'danger',
|
|
68
|
+
suspended: 'danger',
|
|
69
|
+
overdue: 'danger',
|
|
70
|
+
canceled: 'danger',
|
|
71
|
+
refunded: 'info',
|
|
72
|
+
running: 'info',
|
|
73
|
+
syncing: 'info',
|
|
74
|
+
scheduled: 'info',
|
|
75
|
+
draft: 'neutral',
|
|
76
|
+
archived: 'neutral',
|
|
77
|
+
inactive: 'neutral',
|
|
78
|
+
disabled: 'neutral',
|
|
79
|
+
});
|
|
80
|
+
const registry = new Map(Object.entries(DEFAULT_STATUS_TONES));
|
|
81
|
+
/** Idempotent merge of domain statuses into the status→tone registry. */
|
|
82
|
+
export function registerStatusTones(map) {
|
|
83
|
+
for (const [status, tone] of Object.entries(map)) {
|
|
84
|
+
registry.set(status.toLowerCase(), tone);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** Resolve the semantic tone for a status key (case-insensitive). */
|
|
88
|
+
export function statusTone(status, fallback = 'neutral') {
|
|
89
|
+
return registry.get(status.toLowerCase()) ?? fallback;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=tones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tones.js","sourceRoot":"","sources":["../../src/lib/tones.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,kEAAkE;AAClE,MAAM,CAAC,MAAM,KAAK,GAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE7F,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAyB;IACnD,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,4BAA4B;IACpC,GAAG,EAAE,sBAAsB;IAC3B,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,4BAA4B;IACpC,IAAI,EAAE,wBAAwB;CAC/B,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,OAAO,EAAE,sBAAsB;IAC/B,MAAM,EAAE,0BAA0B;IAClC,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,sBAAsB;IAC9B,IAAI,EAAE,oBAAoB;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,2DAA2D;IACnE,GAAG,EAAE,wDAAwD;IAC7D,IAAI,EAAE,yDAAyD;IAC/D,MAAM,EAAE,2DAA2D;IACnE,IAAI,EAAE,yDAAyD;CAChE,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GACnB,qHAAqH,CAAC;AAExH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAmC,MAAM,CAAC,MAAM,CAAC;IAChF,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;CACpB,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAe,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAE7E,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,GAAyB;IAC3D,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,WAAiB,SAAS;IACnE,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,QAAQ,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ThemePrefs } from './types.js';
|
|
3
|
+
/** Called after each `setPref` with the axis, the new value, and the next full prefs. */
|
|
4
|
+
export type ThemePrefChangeHandler = <K extends keyof ThemePrefs>(key: K, value: ThemePrefs[K], prefs: ThemePrefs) => void;
|
|
5
|
+
export interface ThemeProviderProps {
|
|
6
|
+
/** Global super-admin defaults from `adminium_settings` (M8; absent pre-M8/pre-auth). */
|
|
7
|
+
globalDefaults?: Partial<ThemePrefs>;
|
|
8
|
+
/** Per-user overrides from `adminium_user_prefs` (M8; absent pre-auth). */
|
|
9
|
+
userPrefs?: Partial<ThemePrefs>;
|
|
10
|
+
/** Persistence hook for `setPref` (M8 wires `PATCH /api/v1/me/prefs` here). */
|
|
11
|
+
onPrefChange?: ThemePrefChangeHandler;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare function ThemeProvider(props: ThemeProviderProps): ReactNode;
|
|
15
|
+
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBvC,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAIpB,yFAAyF;AACzF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,SAAS,MAAM,UAAU,EAC9D,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,UAAU,KACd,IAAI,CAAC;AAEV,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,QAAQ,EAAE,SAAS,CAAC;CACrB;AA2DD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAkHlE"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ThemeProvider — runtime for the four theming axes (theme/accent/density/locale→dir),
|
|
4
|
+
* per workplan/02-design-system.md §4 and 03-component-library.md §3.6.
|
|
5
|
+
*
|
|
6
|
+
* Responsibilities:
|
|
7
|
+
* 1. Resolve effective prefs per-axis (§4.2): baseline ← localStorage pre-paint
|
|
8
|
+
* cache ← `globalDefaults` (adminium_settings) ← `userPrefs`
|
|
9
|
+
* (adminium_user_prefs) ← in-session `setPref` calls. localStorage is a
|
|
10
|
+
* cache, not a preference source: it only fills axes the server props do
|
|
11
|
+
* not supply (pre-auth surfaces), and server-resolved values always win.
|
|
12
|
+
* The `setPref` layer (`sessionPrefs`) is optimistic and transient: an entry
|
|
13
|
+
* is reconciled away once the server-resolved props catch up to it (same
|
|
14
|
+
* value), and can be dropped explicitly via `clearSessionPref` when the
|
|
15
|
+
* caller resets an axis server-side (M8 reset-to-default) — otherwise a
|
|
16
|
+
* stale optimistic value would keep masking the refetched default until a
|
|
17
|
+
* reload. Entries whose value still differs from the props are treated as
|
|
18
|
+
* in flight and keep winning (§4 behavior 4).
|
|
19
|
+
* 2. Stamp `THEME_ATTRIBUTES` on `document.documentElement` (`data-theme` with
|
|
20
|
+
* the RESOLVED light/dark, `data-accent`, `data-density`, `dir`, `lang`).
|
|
21
|
+
* This is the only place theming attributes are set after pre-hydration.
|
|
22
|
+
* 3. Track `matchMedia('(prefers-color-scheme: dark)')` live while the
|
|
23
|
+
* effective theme pref is `system`; detach when it becomes explicit.
|
|
24
|
+
* 4. Write the cache back to localStorage under `STORAGE_KEYS` on every
|
|
25
|
+
* resolution change. The theme key stores the PREF (so `system` round-trips
|
|
26
|
+
* and the pre-hydration script re-resolves it against the OS at next boot —
|
|
27
|
+
* the script explicitly handles a cached "system"); `dir` stores the
|
|
28
|
+
* derived value the script needs pre-React.
|
|
29
|
+
* 5. Notify `subscribeTheme` listeners after the DOM attributes are committed.
|
|
30
|
+
*
|
|
31
|
+
* Persistence to `adminium_user_prefs` (M8) is the caller's job via
|
|
32
|
+
* `onPrefChange`; the provider itself never talks to the server.
|
|
33
|
+
*/
|
|
34
|
+
import { DirectionProvider } from '@radix-ui/react-direction';
|
|
35
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
36
|
+
import { ACCENTS, DENSITIES, STORAGE_KEYS, THEMES, THEME_ATTRIBUTES, } from '@adminium/tokens';
|
|
37
|
+
import { ThemeContext, } from './context.js';
|
|
38
|
+
import { emitTheme } from './subscribe.js';
|
|
39
|
+
import { BASELINE_PREFS, LOCALES, dirForLocale, langForLocale, } from './types.js';
|
|
40
|
+
const DARK_QUERY = '(prefers-color-scheme: dark)';
|
|
41
|
+
/** Read the localStorage pre-paint cache, ignoring unknown/invalid values. */
|
|
42
|
+
function readStorageCache() {
|
|
43
|
+
const cache = {};
|
|
44
|
+
if (typeof window === 'undefined')
|
|
45
|
+
return cache;
|
|
46
|
+
try {
|
|
47
|
+
const theme = window.localStorage.getItem(STORAGE_KEYS.theme);
|
|
48
|
+
if (theme !== null && THEMES.includes(theme)) {
|
|
49
|
+
cache.theme = theme;
|
|
50
|
+
}
|
|
51
|
+
const accent = window.localStorage.getItem(STORAGE_KEYS.accent);
|
|
52
|
+
if (accent !== null && accent in ACCENTS)
|
|
53
|
+
cache.accent = accent;
|
|
54
|
+
const density = window.localStorage.getItem(STORAGE_KEYS.density);
|
|
55
|
+
if (density !== null && DENSITIES.includes(density)) {
|
|
56
|
+
cache.density = density;
|
|
57
|
+
}
|
|
58
|
+
const locale = window.localStorage.getItem(STORAGE_KEYS.locale);
|
|
59
|
+
if (locale !== null && LOCALES.includes(locale)) {
|
|
60
|
+
cache.locale = locale;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Private mode / storage disabled: baseline render.
|
|
65
|
+
}
|
|
66
|
+
return cache;
|
|
67
|
+
}
|
|
68
|
+
function systemPrefersDark() {
|
|
69
|
+
if (typeof window === 'undefined' || typeof window.matchMedia !== 'function')
|
|
70
|
+
return false;
|
|
71
|
+
return window.matchMedia(DARK_QUERY).matches;
|
|
72
|
+
}
|
|
73
|
+
/** Value-equality over the four axes (props identity churns when the parent
|
|
74
|
+
* re-derives `userPrefs`, so the reconcile trigger must compare by value). */
|
|
75
|
+
function samePrefs(a, b) {
|
|
76
|
+
return a.theme === b.theme && a.accent === b.accent && a.density === b.density && a.locale === b.locale;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Drop optimistic session entries the freshly-resolved props now confirm (the
|
|
80
|
+
* axis resolves to the same value with or without the override). Those entries
|
|
81
|
+
* have served their purpose; keeping them would mask a *later* authoritative
|
|
82
|
+
* change to the axis. Entries whose value still differs are left untouched —
|
|
83
|
+
* they are in flight and must keep winning. Returns the same reference when
|
|
84
|
+
* nothing changed so the caller can skip a state update.
|
|
85
|
+
*/
|
|
86
|
+
function reconcileSessionPrefs(session, propsResolved) {
|
|
87
|
+
const confirmed = Object.keys(session).filter((key) => propsResolved[key] === session[key]);
|
|
88
|
+
if (confirmed.length === 0)
|
|
89
|
+
return session;
|
|
90
|
+
const next = { ...session };
|
|
91
|
+
for (const key of confirmed)
|
|
92
|
+
delete next[key];
|
|
93
|
+
return next;
|
|
94
|
+
}
|
|
95
|
+
export function ThemeProvider(props) {
|
|
96
|
+
const { globalDefaults, userPrefs, onPrefChange, children } = props;
|
|
97
|
+
// Read once per mount — the cache is a boot-time fallback, not a live source.
|
|
98
|
+
const [storageCache] = useState(readStorageCache);
|
|
99
|
+
// Axes changed via setPref during this session (optimistic layer, wins over props).
|
|
100
|
+
const [sessionPrefs, setSessionPrefs] = useState({});
|
|
101
|
+
const [prefersDark, setPrefersDark] = useState(systemPrefersDark);
|
|
102
|
+
// Everything resolvable from the server props (+ pre-paint cache), WITHOUT the
|
|
103
|
+
// optimistic session layer. `sessionPrefs` rides on top of this (§4.2).
|
|
104
|
+
const propsResolved = useMemo(() => ({
|
|
105
|
+
...BASELINE_PREFS,
|
|
106
|
+
...storageCache,
|
|
107
|
+
...globalDefaults,
|
|
108
|
+
...userPrefs,
|
|
109
|
+
}), [storageCache, globalDefaults, userPrefs]);
|
|
110
|
+
// When a fresh server resolution arrives (by value — the parent re-derives
|
|
111
|
+
// `userPrefs` into a new object each render), reconcile the optimistic layer:
|
|
112
|
+
// adjusting state during render (per the React docs' "storing information from
|
|
113
|
+
// previous renders" pattern) drops confirmed entries before commit, so it
|
|
114
|
+
// never re-stamps <html> or re-emits with an intermediate value.
|
|
115
|
+
const [prevPropsResolved, setPrevPropsResolved] = useState(propsResolved);
|
|
116
|
+
if (!samePrefs(propsResolved, prevPropsResolved)) {
|
|
117
|
+
setPrevPropsResolved(propsResolved);
|
|
118
|
+
setSessionPrefs((prev) => reconcileSessionPrefs(prev, propsResolved));
|
|
119
|
+
}
|
|
120
|
+
const prefs = useMemo(() => ({ ...propsResolved, ...sessionPrefs }), [propsResolved, sessionPrefs]);
|
|
121
|
+
// Live system-theme tracking, attached only while the pref is `system` (§4 behavior 2).
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
if (prefs.theme !== 'system')
|
|
124
|
+
return;
|
|
125
|
+
if (typeof window === 'undefined' || typeof window.matchMedia !== 'function')
|
|
126
|
+
return;
|
|
127
|
+
const mql = window.matchMedia(DARK_QUERY);
|
|
128
|
+
setPrefersDark(mql.matches);
|
|
129
|
+
const onChange = (event) => {
|
|
130
|
+
setPrefersDark(event.matches);
|
|
131
|
+
};
|
|
132
|
+
mql.addEventListener('change', onChange);
|
|
133
|
+
return () => {
|
|
134
|
+
mql.removeEventListener('change', onChange);
|
|
135
|
+
};
|
|
136
|
+
}, [prefs.theme]);
|
|
137
|
+
const resolved = useMemo(() => ({
|
|
138
|
+
theme: prefs.theme === 'system' ? (prefersDark ? 'dark' : 'light') : prefs.theme,
|
|
139
|
+
accent: prefs.accent,
|
|
140
|
+
density: prefs.density,
|
|
141
|
+
locale: prefs.locale,
|
|
142
|
+
dir: dirForLocale(prefs.locale),
|
|
143
|
+
}), [prefs, prefersDark]);
|
|
144
|
+
// Stamp <html>, write the cache back, then notify listeners (§4 behaviors 1/3/5).
|
|
145
|
+
useLayoutEffect(() => {
|
|
146
|
+
const el = document.documentElement;
|
|
147
|
+
el.setAttribute(THEME_ATTRIBUTES.theme, resolved.theme);
|
|
148
|
+
el.setAttribute(THEME_ATTRIBUTES.accent, resolved.accent);
|
|
149
|
+
el.setAttribute(THEME_ATTRIBUTES.density, resolved.density);
|
|
150
|
+
el.setAttribute(THEME_ATTRIBUTES.dir, resolved.dir);
|
|
151
|
+
el.setAttribute(THEME_ATTRIBUTES.lang, langForLocale(resolved.locale));
|
|
152
|
+
try {
|
|
153
|
+
window.localStorage.setItem(STORAGE_KEYS.theme, prefs.theme);
|
|
154
|
+
window.localStorage.setItem(STORAGE_KEYS.accent, resolved.accent);
|
|
155
|
+
window.localStorage.setItem(STORAGE_KEYS.density, resolved.density);
|
|
156
|
+
window.localStorage.setItem(STORAGE_KEYS.locale, resolved.locale);
|
|
157
|
+
window.localStorage.setItem(STORAGE_KEYS.dir, resolved.dir);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Private mode / storage disabled: skip the pre-paint cache.
|
|
161
|
+
}
|
|
162
|
+
emitTheme(resolved);
|
|
163
|
+
}, [resolved, prefs.theme]);
|
|
164
|
+
const prefsRef = useRef(prefs);
|
|
165
|
+
prefsRef.current = prefs;
|
|
166
|
+
const onPrefChangeRef = useRef(onPrefChange);
|
|
167
|
+
onPrefChangeRef.current = onPrefChange;
|
|
168
|
+
const setPref = useCallback((key, value) => {
|
|
169
|
+
setSessionPrefs((prev) => ({ ...prev, [key]: value }));
|
|
170
|
+
onPrefChangeRef.current?.(key, value, { ...prefsRef.current, [key]: value });
|
|
171
|
+
}, []);
|
|
172
|
+
// Drop the optimistic entry so resolution falls back to the props (the caller
|
|
173
|
+
// owns the server-side clear). Not a `setPref`, so no `onPrefChange` fires.
|
|
174
|
+
const clearSessionPref = useCallback((key) => {
|
|
175
|
+
setSessionPrefs((prev) => {
|
|
176
|
+
if (!(key in prev))
|
|
177
|
+
return prev;
|
|
178
|
+
const next = { ...prev };
|
|
179
|
+
delete next[key];
|
|
180
|
+
return next;
|
|
181
|
+
});
|
|
182
|
+
}, []);
|
|
183
|
+
const contextValue = useMemo(() => ({ prefs, resolved, setPref, clearSessionPref }), [prefs, resolved, setPref, clearSessionPref]);
|
|
184
|
+
return (_jsx(ThemeContext.Provider, { value: contextValue, children: _jsx(DirectionProvider, { dir: resolved.dir, children: children }) }));
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ResolvedTheme, ThemePrefs } from './types.js';
|
|
2
|
+
/** `setPref` updates one axis optimistically (02-design-system.md §4 behavior 4). */
|
|
3
|
+
export type SetThemePref = <K extends keyof ThemePrefs>(key: K, value: ThemePrefs[K]) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Drop the optimistic session override for one axis so the resolved value falls
|
|
6
|
+
* back through to the server-resolved props (§4.2). The Preferences page calls
|
|
7
|
+
* this on "Reset to workspace default" — clearing an axis server-side does not
|
|
8
|
+
* change the in-session `setPref` layer, which would otherwise keep masking the
|
|
9
|
+
* refetched default until a reload.
|
|
10
|
+
*/
|
|
11
|
+
export type ClearSessionPref = (key: keyof ThemePrefs) => void;
|
|
12
|
+
export interface ThemeContextValue {
|
|
13
|
+
/** Effective preferences after the resolution order (§4.2); `theme` may be `system`. */
|
|
14
|
+
prefs: ThemePrefs;
|
|
15
|
+
/** Resolved values as stamped on `<html>`. */
|
|
16
|
+
resolved: ResolvedTheme;
|
|
17
|
+
setPref: SetThemePref;
|
|
18
|
+
clearSessionPref: ClearSessionPref;
|
|
19
|
+
}
|
|
20
|
+
export declare const ThemeContext: import("react").Context<ThemeContextValue | null>;
|
|
21
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/theme/context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,qFAAqF;AACrF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,MAAM,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,UAAU,KAAK,IAAI,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,KAAK,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,eAAO,MAAM,YAAY,mDAAgD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React context shared by ThemeProvider and the useTheme/useThemePrefs hooks.
|
|
3
|
+
* Internal module — consumers use the hooks, never the raw context.
|
|
4
|
+
*/
|
|
5
|
+
import { createContext } from 'react';
|
|
6
|
+
export const ThemeContext = createContext(null);
|
|
7
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/theme/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAyBtC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ThemeProvider } from './ThemeProvider.js';
|
|
2
|
+
export type { ThemeProviderProps, ThemePrefChangeHandler } from './ThemeProvider.js';
|
|
3
|
+
export { useTheme, useThemePrefs } from './useTheme.js';
|
|
4
|
+
export { subscribeTheme } from './subscribe.js';
|
|
5
|
+
export type { ThemeListener } from './subscribe.js';
|
|
6
|
+
export type { SetThemePref } from './context.js';
|
|
7
|
+
export { BASELINE_PREFS, LOCALES, dirForLocale, langForLocale } from './types.js';
|
|
8
|
+
export type { Locale, ResolvedTheme, ThemePrefs } from './types.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ThemeProvider } from './ThemeProvider.js';
|
|
2
|
+
export { useTheme, useThemePrefs } from './useTheme.js';
|
|
3
|
+
export { subscribeTheme } from './subscribe.js';
|
|
4
|
+
export { BASELINE_PREFS, LOCALES, dirForLocale, langForLocale } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-React theme subscription (workplan/02-design-system.md §4.1) — for
|
|
3
|
+
* Leaflet tile swaps, chart re-tints, Electron `nativeTheme` mirroring.
|
|
4
|
+
* ThemeProvider emits AFTER the DOM attributes are committed (§4 behavior 5).
|
|
5
|
+
*/
|
|
6
|
+
import type { ResolvedTheme } from './types.js';
|
|
7
|
+
export type ThemeListener = (theme: ResolvedTheme) => void;
|
|
8
|
+
/** Subscribe to resolved-theme changes; returns an unsubscribe function. */
|
|
9
|
+
export declare function subscribeTheme(listener: ThemeListener): () => void;
|
|
10
|
+
/** @internal Called by ThemeProvider after stamping `<html>`. Not part of the public API. */
|
|
11
|
+
export declare function emitTheme(theme: ResolvedTheme): void;
|
|
12
|
+
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/theme/subscribe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAI3D,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAKlE;AAED,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEpD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const listeners = new Set();
|
|
2
|
+
/** Subscribe to resolved-theme changes; returns an unsubscribe function. */
|
|
3
|
+
export function subscribeTheme(listener) {
|
|
4
|
+
listeners.add(listener);
|
|
5
|
+
return () => {
|
|
6
|
+
listeners.delete(listener);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/** @internal Called by ThemeProvider after stamping `<html>`. Not part of the public API. */
|
|
10
|
+
export function emitTheme(theme) {
|
|
11
|
+
for (const listener of [...listeners])
|
|
12
|
+
listener(theme);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=subscribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/theme/subscribe.ts"],"names":[],"mappings":"AASA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,QAAuB;IACpD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,KAAoB;IAC5C,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;QAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theming axis types for ThemeProvider (workplan/02-design-system.md §4.1).
|
|
3
|
+
* Axis value unions come from `@adminium/tokens` so the DOM attributes,
|
|
4
|
+
* Storybook toolbar and provider can never drift apart; the locale union and
|
|
5
|
+
* the pref/resolved shapes live here because they are UI-runtime concerns.
|
|
6
|
+
*/
|
|
7
|
+
import type { Accent, Density, Dir, ResolvedTheme as ResolvedThemeMode, ThemePref } from '@adminium/tokens';
|
|
8
|
+
/** The 8 BRIEF locales (02-design-system.md §4.1). */
|
|
9
|
+
export declare const LOCALES: readonly ["en_US", "de_DE", "ar_EG", "zh_CN", "zh_TW", "cs_CZ", "da_DK", "fr_FR"];
|
|
10
|
+
export type Locale = (typeof LOCALES)[number];
|
|
11
|
+
/** User-facing preferences: `theme` may be `system`; `dir` is derived, not a pref. */
|
|
12
|
+
export interface ThemePrefs {
|
|
13
|
+
theme: ThemePref;
|
|
14
|
+
accent: Accent;
|
|
15
|
+
density: Density;
|
|
16
|
+
locale: Locale;
|
|
17
|
+
}
|
|
18
|
+
/** Fully resolved theme as stamped on `<html>`: `system` resolved, `dir` derived. */
|
|
19
|
+
export interface ResolvedTheme {
|
|
20
|
+
theme: ResolvedThemeMode;
|
|
21
|
+
accent: Accent;
|
|
22
|
+
density: Density;
|
|
23
|
+
locale: Locale;
|
|
24
|
+
dir: Dir;
|
|
25
|
+
}
|
|
26
|
+
/** Baseline of the resolution order (BRIEF §7 via `@adminium/tokens`). */
|
|
27
|
+
export declare const BASELINE_PREFS: ThemePrefs;
|
|
28
|
+
/** `rtl` iff the locale is `ar_EG` (02-design-system.md §4.1). */
|
|
29
|
+
export declare function dirForLocale(locale: Locale): Dir;
|
|
30
|
+
/** BCP-47 form of a locale for the `lang` attribute (`ar_EG` → `ar-EG`). */
|
|
31
|
+
export declare function langForLocale(locale: Locale): string;
|
|
32
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,OAAO,EACP,GAAG,EACH,aAAa,IAAI,iBAAiB,EAClC,SAAS,EACV,MAAM,kBAAkB,CAAC;AAG1B,sDAAsD;AACtD,eAAO,MAAM,OAAO,mFASV,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9C,sFAAsF;AACtF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,GAAG,CAAC;CACV;AAED,0EAA0E;AAC1E,eAAO,MAAM,cAAc,EAAE,UAAiC,CAAC;AAE/D,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAEhD;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DEFAULT_PREFS } from '@adminium/tokens';
|
|
2
|
+
/** The 8 BRIEF locales (02-design-system.md §4.1). */
|
|
3
|
+
export const LOCALES = [
|
|
4
|
+
'en_US',
|
|
5
|
+
'de_DE',
|
|
6
|
+
'ar_EG',
|
|
7
|
+
'zh_CN',
|
|
8
|
+
'zh_TW',
|
|
9
|
+
'cs_CZ',
|
|
10
|
+
'da_DK',
|
|
11
|
+
'fr_FR',
|
|
12
|
+
];
|
|
13
|
+
/** Baseline of the resolution order (BRIEF §7 via `@adminium/tokens`). */
|
|
14
|
+
export const BASELINE_PREFS = { ...DEFAULT_PREFS };
|
|
15
|
+
/** `rtl` iff the locale is `ar_EG` (02-design-system.md §4.1). */
|
|
16
|
+
export function dirForLocale(locale) {
|
|
17
|
+
return locale === 'ar_EG' ? 'rtl' : 'ltr';
|
|
18
|
+
}
|
|
19
|
+
/** BCP-47 form of a locale for the `lang` attribute (`ar_EG` → `ar-EG`). */
|
|
20
|
+
export function langForLocale(locale) {
|
|
21
|
+
return locale.replace('_', '-');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,sDAAsD;AACtD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;CACC,CAAC;AAoBX,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAe,EAAE,GAAG,aAAa,EAAE,CAAC;AAE/D,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ClearSessionPref, type SetThemePref } from './context.js';
|
|
2
|
+
import type { ResolvedTheme, ThemePrefs } from './types.js';
|
|
3
|
+
/** The resolved theme as stamped on `<html>` (`system` already resolved, `dir` derived). */
|
|
4
|
+
export declare function useTheme(): ResolvedTheme;
|
|
5
|
+
/**
|
|
6
|
+
* The effective preferences (theme may be `system`), the optimistic setter, and
|
|
7
|
+
* `clearSessionPref` for dropping a session override on reset-to-default.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useThemePrefs(): {
|
|
10
|
+
prefs: ThemePrefs;
|
|
11
|
+
setPref: SetThemePref;
|
|
12
|
+
clearSessionPref: ClearSessionPref;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=useTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/theme/useTheme.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU5D,4FAA4F;AAC5F,wBAAgB,QAAQ,IAAI,aAAa,CAExC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAGA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme hooks (workplan/02-design-system.md §4.1).
|
|
3
|
+
* `useTheme` → resolved values for rendering; `useThemePrefs` → raw prefs +
|
|
4
|
+
* `setPref` for the appearance settings UI.
|
|
5
|
+
*/
|
|
6
|
+
import { useContext } from 'react';
|
|
7
|
+
import { ThemeContext } from './context.js';
|
|
8
|
+
function useRequiredThemeContext(hook) {
|
|
9
|
+
const context = useContext(ThemeContext);
|
|
10
|
+
if (context === null) {
|
|
11
|
+
throw new Error(`${hook} must be used inside <ThemeProvider>`);
|
|
12
|
+
}
|
|
13
|
+
return context;
|
|
14
|
+
}
|
|
15
|
+
/** The resolved theme as stamped on `<html>` (`system` already resolved, `dir` derived). */
|
|
16
|
+
export function useTheme() {
|
|
17
|
+
return useRequiredThemeContext('useTheme()').resolved;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The effective preferences (theme may be `system`), the optimistic setter, and
|
|
21
|
+
* `clearSessionPref` for dropping a session override on reset-to-default.
|
|
22
|
+
*/
|
|
23
|
+
export function useThemePrefs() {
|
|
24
|
+
const { prefs, setPref, clearSessionPref } = useRequiredThemeContext('useThemePrefs()');
|
|
25
|
+
return { prefs, setPref, clearSessionPref };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=useTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.js","sourceRoot":"","sources":["../../src/theme/useTheme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,YAAY,EAA4C,MAAM,cAAc,CAAC;AAGtF,SAAS,uBAAuB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sCAAsC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,QAAQ;IACtB,OAAO,uBAAuB,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAK3B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IACxF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9C,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adminiumjs/ui",
|
|
3
|
+
"version": "0.1.0-rc.1",
|
|
4
|
+
"license": "AGPL-3.0-only",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/MoSofi/Adminium.git",
|
|
8
|
+
"directory": "packages/ui"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://adminium.dev",
|
|
11
|
+
"bugs": "https://github.com/MoSofi/Adminium/issues",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"description": "Component library (Tiers 1-3), Radix-based, CVA variants, ThemeProvider",
|
|
14
|
+
"sideEffects": [
|
|
15
|
+
"**/*.css"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"default": "./dist/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@adminium/tokens": "npm:@adminiumjs/tokens@0.1.0-rc.1",
|
|
27
|
+
"@radix-ui/react-checkbox": "^1.3.3",
|
|
28
|
+
"@radix-ui/react-dialog": "^1.1.15",
|
|
29
|
+
"@radix-ui/react-direction": "^1.1.1",
|
|
30
|
+
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
31
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
32
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
33
|
+
"@radix-ui/react-slider": "^1.3.6",
|
|
34
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
35
|
+
"@radix-ui/react-switch": "^1.2.6",
|
|
36
|
+
"@radix-ui/react-tabs": "^1.1.13",
|
|
37
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
38
|
+
"class-variance-authority": "^0.7.1",
|
|
39
|
+
"clsx": "^2.1.1",
|
|
40
|
+
"lucide-react": "^0.525.0",
|
|
41
|
+
"react": "^19.1.0",
|
|
42
|
+
"react-dom": "^19.1.0",
|
|
43
|
+
"tailwind-merge": "^3.3.1"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist"
|
|
47
|
+
]
|
|
48
|
+
}
|