@korsolutions/ui 0.0.84 → 0.0.86
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/AGENTS.md +3 -3
- package/dist/module/components/alert/components/alert-description.js.map +1 -1
- package/dist/module/components/alert/components/alert-icon.js.map +1 -1
- package/dist/module/components/alert/components/alert-root.js +7 -3
- package/dist/module/components/alert/components/alert-root.js.map +1 -1
- package/dist/module/components/alert-dialog/async-alert-dialog.js.map +1 -1
- package/dist/module/components/alert-dialog/components/alert-dialog-root.js +7 -3
- package/dist/module/components/alert-dialog/components/alert-dialog-root.js.map +1 -1
- package/dist/module/components/alert-dialog/variants/default.js +93 -85
- package/dist/module/components/alert-dialog/variants/default.js.map +1 -1
- package/dist/module/components/avatar/components/avatar-image.js.map +1 -1
- package/dist/module/components/avatar/components/avatar-root.js +7 -3
- package/dist/module/components/avatar/components/avatar-root.js.map +1 -1
- package/dist/module/components/badge/badge.js +11 -4
- package/dist/module/components/badge/badge.js.map +1 -1
- package/dist/module/components/button/button.js +7 -3
- package/dist/module/components/button/button.js.map +1 -1
- package/dist/module/components/button/variants/default.js +48 -44
- package/dist/module/components/button/variants/default.js.map +1 -1
- package/dist/module/components/button/variants/ghost.js +64 -60
- package/dist/module/components/button/variants/ghost.js.map +1 -1
- package/dist/module/components/button/variants/secondary.js +66 -62
- package/dist/module/components/button/variants/secondary.js.map +1 -1
- package/dist/module/components/calendar/calendar/calendar-root.js +6 -2
- package/dist/module/components/calendar/calendar/calendar-root.js.map +1 -1
- package/dist/module/components/calendar/calendar/calendar-weeks.js +6 -9
- package/dist/module/components/calendar/calendar/calendar-weeks.js.map +1 -1
- package/dist/module/components/calendar/shared/calendar-context.js.map +1 -1
- package/dist/module/components/calendar/shared/calendar-day.js.map +1 -1
- package/dist/module/components/calendar/shared/calendar-header.js.map +1 -1
- package/dist/module/components/calendar/shared/calendar-nav-buttons.js +4 -4
- package/dist/module/components/calendar/shared/calendar-nav-buttons.js.map +1 -1
- package/dist/module/components/calendar/shared/calendar-title.js.map +1 -1
- package/dist/module/components/calendar/shared/calendar-week-labels.js.map +1 -1
- package/dist/module/components/calendar/timeline/calendar-timeline.js.map +1 -1
- package/dist/module/components/calendar/week-calendar/week-calendar.js +4 -4
- package/dist/module/components/calendar/week-calendar/week-calendar.js.map +1 -1
- package/dist/module/components/card/card-root.js +6 -3
- package/dist/module/components/card/card-root.js.map +1 -1
- package/dist/module/components/checkbox/components/checkbox-root.js +7 -3
- package/dist/module/components/checkbox/components/checkbox-root.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-content.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-option.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-overlay.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-portal.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-root.js +8 -4
- package/dist/module/components/combobox/components/combobox-root.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-trigger.js.map +1 -1
- package/dist/module/components/combobox/context.js.map +1 -1
- package/dist/module/components/combobox/variants/default.js +91 -88
- package/dist/module/components/combobox/variants/default.js.map +1 -1
- package/dist/module/components/empty/components/empty-root.js +6 -2
- package/dist/module/components/empty/components/empty-root.js.map +1 -1
- package/dist/module/components/field/components/field-label.js.map +1 -1
- package/dist/module/components/field/components/field-root.js +6 -2
- package/dist/module/components/field/components/field-root.js.map +1 -1
- package/dist/module/components/icon/icon.js.map +1 -1
- package/dist/module/components/icon-button/icon-button.js +10 -7
- package/dist/module/components/icon-button/icon-button.js.map +1 -1
- package/dist/module/components/icon-button/variants/default.js +31 -24
- package/dist/module/components/icon-button/variants/default.js.map +1 -1
- package/dist/module/components/icon-button/variants/ghost.js +32 -25
- package/dist/module/components/icon-button/variants/ghost.js.map +1 -1
- package/dist/module/components/icon-button/variants/secondary.js +34 -27
- package/dist/module/components/icon-button/variants/secondary.js.map +1 -1
- package/dist/module/components/index.js +1 -0
- package/dist/module/components/index.js.map +1 -1
- package/dist/module/components/input/input.js +8 -4
- package/dist/module/components/input/input.js.map +1 -1
- package/dist/module/components/input/numeric-input.js +0 -1
- package/dist/module/components/input/numeric-input.js.map +1 -1
- package/dist/module/components/input/variants/default.js +39 -37
- package/dist/module/components/input/variants/default.js.map +1 -1
- package/dist/module/components/input/variants/secondary.js +39 -37
- package/dist/module/components/input/variants/secondary.js.map +1 -1
- package/dist/module/components/menu/components/menu-checkbox-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-overlay.js.map +1 -1
- package/dist/module/components/menu/components/menu-radio-group.js.map +1 -1
- package/dist/module/components/menu/components/menu-radio-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-root.js +6 -2
- package/dist/module/components/menu/components/menu-root.js.map +1 -1
- package/dist/module/components/menu/components/menu-selection-indicator.js +3 -3
- package/dist/module/components/menu/components/menu-selection-indicator.js.map +1 -1
- package/dist/module/components/menu/components/menu-trigger.js.map +1 -1
- package/dist/module/components/menu/context.js.map +1 -1
- package/dist/module/components/phone-input/components/country-picker.js.map +1 -1
- package/dist/module/components/phone-input/components/phone-input-root.js +9 -4
- package/dist/module/components/phone-input/components/phone-input-root.js.map +1 -1
- package/dist/module/components/phone-input/components/phone-input.js.map +1 -1
- package/dist/module/components/phone-input/context.js.map +1 -1
- package/dist/module/components/phone-input/variants/default.js +115 -112
- package/dist/module/components/phone-input/variants/default.js.map +1 -1
- package/dist/module/components/popover/components/popover-overlay.js.map +1 -1
- package/dist/module/components/popover/components/popover-root.js +6 -2
- package/dist/module/components/popover/components/popover-root.js.map +1 -1
- package/dist/module/components/popover/components/popover-trigger.js.map +1 -1
- package/dist/module/components/portal/portal.js.map +1 -1
- package/dist/module/components/progress/components/progress-indicator.js.map +1 -1
- package/dist/module/components/progress/components/progress-root.js +6 -3
- package/dist/module/components/progress/components/progress-root.js.map +1 -1
- package/dist/module/components/radio-group/components/radio-group-item.js.map +1 -1
- package/dist/module/components/radio-group/components/radio-group-root.js +7 -3
- package/dist/module/components/radio-group/components/radio-group-root.js.map +1 -1
- package/dist/module/components/select/components/select-content.js.map +1 -1
- package/dist/module/components/select/components/select-option.js.map +1 -1
- package/dist/module/components/select/components/select-overlay.js.map +1 -1
- package/dist/module/components/select/components/select-portal.js.map +1 -1
- package/dist/module/components/select/components/select-root.js +8 -5
- package/dist/module/components/select/components/select-root.js.map +1 -1
- package/dist/module/components/select/components/select-trigger.js.map +1 -1
- package/dist/module/components/select/variants/default.js +75 -73
- package/dist/module/components/select/variants/default.js.map +1 -1
- package/dist/module/components/separator/separator.js +5 -1
- package/dist/module/components/separator/separator.js.map +1 -1
- package/dist/module/components/spinner/spinner.js +7 -3
- package/dist/module/components/spinner/spinner.js.map +1 -1
- package/dist/module/components/table/context.js +12 -0
- package/dist/module/components/table/context.js.map +1 -0
- package/dist/module/components/table/index.js +17 -0
- package/dist/module/components/table/index.js.map +1 -0
- package/dist/module/components/table/table-body.js +17 -0
- package/dist/module/components/table/table-body.js.map +1 -0
- package/dist/module/components/table/table-cell.js +17 -0
- package/dist/module/components/table/table-cell.js.map +1 -0
- package/dist/module/components/table/table-head.js +17 -0
- package/dist/module/components/table/table-head.js.map +1 -0
- package/dist/module/components/table/table-header.js +17 -0
- package/dist/module/components/table/table-header.js.map +1 -0
- package/dist/module/components/table/table-root.js +27 -0
- package/dist/module/components/table/table-root.js.map +1 -0
- package/dist/module/components/table/table-row.js +17 -0
- package/dist/module/components/table/table-row.js.map +1 -0
- package/dist/module/components/table/types.js +4 -0
- package/dist/module/components/table/types.js.map +1 -0
- package/dist/module/components/table/variants/default.js +48 -0
- package/dist/module/components/table/variants/default.js.map +1 -0
- package/dist/module/components/table/variants/index.js +7 -0
- package/dist/module/components/table/variants/index.js.map +1 -0
- package/dist/module/components/tabs/components/tabs-item.js.map +1 -1
- package/dist/module/components/tabs/components/tabs-root.js +7 -3
- package/dist/module/components/tabs/components/tabs-root.js.map +1 -1
- package/dist/module/components/textarea/textarea.js +7 -3
- package/dist/module/components/textarea/textarea.js.map +1 -1
- package/dist/module/components/toast/components/toast-icon.js.map +1 -1
- package/dist/module/components/toast/components/toast-root.js +6 -2
- package/dist/module/components/toast/components/toast-root.js.map +1 -1
- package/dist/module/components/toast/manager.js +3 -3
- package/dist/module/components/toast/manager.js.map +1 -1
- package/dist/module/components/touchable/touchable.js +5 -1
- package/dist/module/components/touchable/touchable.js.map +1 -1
- package/dist/module/hooks/use-color-scheme.js.map +1 -1
- package/dist/module/hooks/use-is-react-navigation-modal.js.map +1 -1
- package/dist/module/hooks/use-numeric-mask.js.map +1 -1
- package/dist/module/hooks/use-phone-mask.js.map +1 -1
- package/dist/module/hooks/use-relative-position.js.map +1 -1
- package/dist/module/hooks/use-screen-size.js.map +1 -1
- package/dist/module/index.js +1 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/themes/default/index.js +1 -0
- package/dist/module/themes/default/index.js.map +1 -1
- package/dist/module/themes/index.js +2 -2
- package/dist/module/themes/index.js.map +1 -1
- package/dist/module/themes/provider.js +6 -1
- package/dist/module/themes/provider.js.map +1 -1
- package/dist/module/themes/types.js +2 -0
- package/dist/module/themes/utils.js +2 -1
- package/dist/module/themes/utils.js.map +1 -1
- package/dist/module/utils/calculate-styles.js +26 -0
- package/dist/module/utils/calculate-styles.js.map +1 -1
- package/dist/module/utils/date-utils.js.map +1 -1
- package/dist/module/utils/input-utils.js.map +1 -1
- package/dist/module/utils/normalize-layout.js.map +1 -1
- package/dist/module/utils/size-scale.js +42 -0
- package/dist/module/utils/size-scale.js.map +1 -0
- package/dist/module/utils/use-themed-styles.js +4 -1
- package/dist/module/utils/use-themed-styles.js.map +1 -1
- package/dist/typescript/src/components/alert/components/alert-description.d.ts.map +1 -1
- package/dist/typescript/src/components/alert/components/alert-icon.d.ts.map +1 -1
- package/dist/typescript/src/components/alert/components/alert-root.d.ts +1 -1
- package/dist/typescript/src/components/alert/components/alert-root.d.ts.map +1 -1
- package/dist/typescript/src/components/alert-dialog/async-alert-dialog.d.ts.map +1 -1
- package/dist/typescript/src/components/alert-dialog/components/alert-dialog-root.d.ts +2 -0
- package/dist/typescript/src/components/alert-dialog/components/alert-dialog-root.d.ts.map +1 -1
- package/dist/typescript/src/components/alert-dialog/variants/default.d.ts +3 -2
- package/dist/typescript/src/components/alert-dialog/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/alert-dialog/variants/index.d.ts +1 -1
- package/dist/typescript/src/components/avatar/components/avatar-image.d.ts.map +1 -1
- package/dist/typescript/src/components/avatar/components/avatar-root.d.ts.map +1 -1
- package/dist/typescript/src/components/badge/badge.d.ts.map +1 -1
- package/dist/typescript/src/components/button/button.d.ts +2 -0
- package/dist/typescript/src/components/button/button.d.ts.map +1 -1
- package/dist/typescript/src/components/button/types.d.ts.map +1 -1
- package/dist/typescript/src/components/button/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/button/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/button/variants/ghost.d.ts +2 -1
- package/dist/typescript/src/components/button/variants/ghost.d.ts.map +1 -1
- package/dist/typescript/src/components/button/variants/index.d.ts +3 -3
- package/dist/typescript/src/components/button/variants/secondary.d.ts +2 -1
- package/dist/typescript/src/components/button/variants/secondary.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/calendar/calendar-root.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/calendar/calendar-weeks.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/index.d.ts +1 -1
- package/dist/typescript/src/components/calendar/index.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/calendar-context.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/calendar-day.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/calendar-header.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/calendar-nav-buttons.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/calendar-title.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/calendar-week-labels.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/shared/types.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/timeline/calendar-timeline.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/timeline/index.d.ts +1 -1
- package/dist/typescript/src/components/calendar/timeline/index.d.ts.map +1 -1
- package/dist/typescript/src/components/calendar/week-calendar/week-calendar.d.ts.map +1 -1
- package/dist/typescript/src/components/card/card-root.d.ts +1 -1
- package/dist/typescript/src/components/card/card-root.d.ts.map +1 -1
- package/dist/typescript/src/components/checkbox/components/checkbox-root.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-content.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-option.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-overlay.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-portal.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-root.d.ts +2 -0
- package/dist/typescript/src/components/combobox/components/combobox-root.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-trigger.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/context.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/combobox/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/empty/components/empty-root.d.ts.map +1 -1
- package/dist/typescript/src/components/field/components/field-label.d.ts.map +1 -1
- package/dist/typescript/src/components/field/components/field-root.d.ts.map +1 -1
- package/dist/typescript/src/components/icon/icon.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/icon-button.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/icon-button.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/variants/ghost.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/variants/ghost.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/variants/index.d.ts +3 -3
- package/dist/typescript/src/components/icon-button/variants/secondary.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/variants/secondary.d.ts.map +1 -1
- package/dist/typescript/src/components/index.d.ts +1 -0
- package/dist/typescript/src/components/index.d.ts.map +1 -1
- package/dist/typescript/src/components/input/input.d.ts +2 -0
- package/dist/typescript/src/components/input/input.d.ts.map +1 -1
- package/dist/typescript/src/components/input/numeric-input.d.ts +1 -1
- package/dist/typescript/src/components/input/numeric-input.d.ts.map +1 -1
- package/dist/typescript/src/components/input/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/input/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/input/variants/secondary.d.ts +3 -2
- package/dist/typescript/src/components/input/variants/secondary.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-checkbox-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-overlay.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-radio-group.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-root.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-selection-indicator.d.ts +1 -1
- package/dist/typescript/src/components/menu/components/menu-selection-indicator.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-trigger.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/context.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/types.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/components/country-picker.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/components/phone-input-root.d.ts +3 -1
- package/dist/typescript/src/components/phone-input/components/phone-input-root.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/components/phone-input.d.ts +1 -1
- package/dist/typescript/src/components/phone-input/components/phone-input.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/context.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/types.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/phone-input/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/popover/components/popover-overlay.d.ts.map +1 -1
- package/dist/typescript/src/components/popover/components/popover-root.d.ts.map +1 -1
- package/dist/typescript/src/components/popover/components/popover-trigger.d.ts.map +1 -1
- package/dist/typescript/src/components/portal/portal.d.ts +2 -2
- package/dist/typescript/src/components/portal/portal.d.ts.map +1 -1
- package/dist/typescript/src/components/progress/components/progress-indicator.d.ts.map +1 -1
- package/dist/typescript/src/components/progress/components/progress-root.d.ts.map +1 -1
- package/dist/typescript/src/components/radio-group/components/radio-group-item.d.ts.map +1 -1
- package/dist/typescript/src/components/radio-group/components/radio-group-root.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-content.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-option.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-overlay.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-portal.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-root.d.ts +2 -0
- package/dist/typescript/src/components/select/components/select-root.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-trigger.d.ts.map +1 -1
- package/dist/typescript/src/components/select/variants/default.d.ts +3 -2
- package/dist/typescript/src/components/select/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/separator/separator.d.ts.map +1 -1
- package/dist/typescript/src/components/spinner/spinner.d.ts.map +1 -1
- package/dist/typescript/src/components/table/context.d.ts +8 -0
- package/dist/typescript/src/components/table/context.d.ts.map +1 -0
- package/dist/typescript/src/components/table/index.d.ts +22 -0
- package/dist/typescript/src/components/table/index.d.ts.map +1 -0
- package/dist/typescript/src/components/table/table-body.d.ts +9 -0
- package/dist/typescript/src/components/table/table-body.d.ts.map +1 -0
- package/dist/typescript/src/components/table/table-cell.d.ts +9 -0
- package/dist/typescript/src/components/table/table-cell.d.ts.map +1 -0
- package/dist/typescript/src/components/table/table-head.d.ts +9 -0
- package/dist/typescript/src/components/table/table-head.d.ts.map +1 -0
- package/dist/typescript/src/components/table/table-header.d.ts +9 -0
- package/dist/typescript/src/components/table/table-header.d.ts.map +1 -0
- package/dist/typescript/src/components/table/table-root.d.ts +11 -0
- package/dist/typescript/src/components/table/table-root.d.ts.map +1 -0
- package/dist/typescript/src/components/table/table-row.d.ts +9 -0
- package/dist/typescript/src/components/table/table-row.d.ts.map +1 -0
- package/dist/typescript/src/components/table/types.d.ts +16 -0
- package/dist/typescript/src/components/table/types.d.ts.map +1 -0
- package/dist/typescript/src/components/table/variants/default.d.ts +3 -0
- package/dist/typescript/src/components/table/variants/default.d.ts.map +1 -0
- package/dist/typescript/src/components/table/variants/index.d.ts +5 -0
- package/dist/typescript/src/components/table/variants/index.d.ts.map +1 -0
- package/dist/typescript/src/components/tabs/components/tabs-item.d.ts.map +1 -1
- package/dist/typescript/src/components/tabs/components/tabs-root.d.ts.map +1 -1
- package/dist/typescript/src/components/textarea/textarea.d.ts.map +1 -1
- package/dist/typescript/src/components/toast/components/toast-icon.d.ts.map +1 -1
- package/dist/typescript/src/components/toast/components/toast-root.d.ts.map +1 -1
- package/dist/typescript/src/components/toast/manager.d.ts.map +1 -1
- package/dist/typescript/src/components/touchable/touchable.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-color-scheme.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-is-react-navigation-modal.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-numeric-mask.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-phone-mask.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-relative-position.d.ts.map +1 -1
- package/dist/typescript/src/hooks/use-screen-size.d.ts.map +1 -1
- package/dist/typescript/src/index.d.ts +5 -2
- package/dist/typescript/src/index.d.ts.map +1 -1
- package/dist/typescript/src/themes/default/index.d.ts.map +1 -1
- package/dist/typescript/src/themes/index.d.ts +2 -2
- package/dist/typescript/src/themes/index.d.ts.map +1 -1
- package/dist/typescript/src/themes/provider.d.ts +3 -19
- package/dist/typescript/src/themes/provider.d.ts.map +1 -1
- package/dist/typescript/src/themes/types.d.ts +124 -0
- package/dist/typescript/src/themes/types.d.ts.map +1 -1
- package/dist/typescript/src/themes/utils.d.ts.map +1 -1
- package/dist/typescript/src/utils/calculate-styles.d.ts +1 -0
- package/dist/typescript/src/utils/calculate-styles.d.ts.map +1 -1
- package/dist/typescript/src/utils/date-utils.d.ts.map +1 -1
- package/dist/typescript/src/utils/input-utils.d.ts.map +1 -1
- package/dist/typescript/src/utils/normalize-layout.d.ts.map +1 -1
- package/dist/typescript/src/utils/size-scale.d.ts +20 -0
- package/dist/typescript/src/utils/size-scale.d.ts.map +1 -0
- package/dist/typescript/src/utils/use-themed-styles.d.ts +5 -0
- package/dist/typescript/src/utils/use-themed-styles.d.ts.map +1 -1
- package/package.json +9 -8
- package/src/components/alert/components/alert-description.tsx +1 -3
- package/src/components/alert/components/alert-icon.tsx +4 -1
- package/src/components/alert/components/alert-root.tsx +9 -4
- package/src/components/alert-dialog/async-alert-dialog.tsx +6 -25
- package/src/components/alert-dialog/components/alert-dialog-root.tsx +10 -3
- package/src/components/alert-dialog/variants/default.tsx +88 -79
- package/src/components/avatar/components/avatar-image.tsx +1 -6
- package/src/components/avatar/components/avatar-root.tsx +8 -3
- package/src/components/badge/badge.tsx +10 -12
- package/src/components/button/button.tsx +13 -23
- package/src/components/button/types.ts +1 -5
- package/src/components/button/variants/default.tsx +14 -10
- package/src/components/button/variants/ghost.tsx +14 -10
- package/src/components/button/variants/secondary.tsx +14 -10
- package/src/components/calendar/calendar/calendar-root.tsx +6 -2
- package/src/components/calendar/calendar/calendar-weeks.tsx +7 -13
- package/src/components/calendar/index.ts +1 -5
- package/src/components/calendar/shared/calendar-context.ts +2 -6
- package/src/components/calendar/shared/calendar-day.tsx +4 -12
- package/src/components/calendar/shared/calendar-header.tsx +1 -6
- package/src/components/calendar/shared/calendar-nav-buttons.tsx +9 -28
- package/src/components/calendar/shared/calendar-title.tsx +1 -6
- package/src/components/calendar/shared/calendar-week-labels.tsx +1 -7
- package/src/components/calendar/shared/types.ts +1 -6
- package/src/components/calendar/timeline/calendar-timeline.tsx +3 -9
- package/src/components/calendar/timeline/index.ts +1 -4
- package/src/components/calendar/week-calendar/week-calendar.tsx +10 -25
- package/src/components/card/card-root.tsx +8 -4
- package/src/components/checkbox/components/checkbox-root.tsx +13 -4
- package/src/components/combobox/components/combobox-content.tsx +2 -11
- package/src/components/combobox/components/combobox-option.tsx +1 -2
- package/src/components/combobox/components/combobox-overlay.tsx +1 -6
- package/src/components/combobox/components/combobox-portal.tsx +1 -3
- package/src/components/combobox/components/combobox-root.tsx +23 -24
- package/src/components/combobox/components/combobox-trigger.tsx +2 -7
- package/src/components/combobox/context.ts +1 -3
- package/src/components/combobox/variants/default.tsx +17 -14
- package/src/components/empty/components/empty-root.tsx +7 -2
- package/src/components/field/components/field-label.tsx +3 -1
- package/src/components/field/components/field-root.tsx +7 -2
- package/src/components/icon/icon.tsx +1 -4
- package/src/components/icon-button/icon-button.tsx +16 -15
- package/src/components/icon-button/variants/default.tsx +12 -6
- package/src/components/icon-button/variants/ghost.tsx +12 -6
- package/src/components/icon-button/variants/secondary.tsx +12 -6
- package/src/components/index.ts +1 -0
- package/src/components/input/input.tsx +11 -5
- package/src/components/input/numeric-input.tsx +2 -9
- package/src/components/input/variants/default.tsx +11 -9
- package/src/components/input/variants/secondary.tsx +12 -10
- package/src/components/menu/components/menu-checkbox-item.tsx +2 -9
- package/src/components/menu/components/menu-item.tsx +2 -10
- package/src/components/menu/components/menu-overlay.tsx +1 -6
- package/src/components/menu/components/menu-radio-group.tsx +1 -5
- package/src/components/menu/components/menu-radio-item.tsx +1 -5
- package/src/components/menu/components/menu-root.tsx +10 -2
- package/src/components/menu/components/menu-selection-indicator.tsx +4 -6
- package/src/components/menu/components/menu-trigger.tsx +32 -34
- package/src/components/menu/context.ts +3 -3
- package/src/components/menu/types.ts +1 -5
- package/src/components/phone-input/components/country-picker.tsx +6 -21
- package/src/components/phone-input/components/phone-input-root.tsx +14 -9
- package/src/components/phone-input/components/phone-input.tsx +5 -20
- package/src/components/phone-input/context.ts +1 -3
- package/src/components/phone-input/types.ts +2 -6
- package/src/components/phone-input/variants/default.tsx +21 -18
- package/src/components/popover/components/popover-overlay.tsx +7 -1
- package/src/components/popover/components/popover-root.tsx +10 -2
- package/src/components/popover/components/popover-trigger.tsx +1 -4
- package/src/components/portal/portal.tsx +6 -26
- package/src/components/progress/components/progress-indicator.tsx +13 -2
- package/src/components/progress/components/progress-root.tsx +6 -3
- package/src/components/radio-group/components/radio-group-item.tsx +1 -5
- package/src/components/radio-group/components/radio-group-root.tsx +7 -3
- package/src/components/select/components/select-content.tsx +1 -5
- package/src/components/select/components/select-option.tsx +5 -1
- package/src/components/select/components/select-overlay.tsx +6 -1
- package/src/components/select/components/select-portal.tsx +1 -3
- package/src/components/select/components/select-root.tsx +10 -5
- package/src/components/select/components/select-trigger.tsx +3 -13
- package/src/components/select/variants/default.tsx +16 -14
- package/src/components/separator/separator.tsx +5 -1
- package/src/components/spinner/spinner.tsx +8 -9
- package/src/components/table/context.ts +17 -0
- package/src/components/table/index.ts +23 -0
- package/src/components/table/table-body.tsx +20 -0
- package/src/components/table/table-cell.tsx +20 -0
- package/src/components/table/table-head.tsx +20 -0
- package/src/components/table/table-header.tsx +20 -0
- package/src/components/table/table-root.tsx +35 -0
- package/src/components/table/table-row.tsx +20 -0
- package/src/components/table/types.ts +17 -0
- package/src/components/table/variants/default.tsx +46 -0
- package/src/components/table/variants/index.ts +5 -0
- package/src/components/tabs/components/tabs-item.tsx +5 -25
- package/src/components/tabs/components/tabs-root.tsx +9 -10
- package/src/components/textarea/textarea.tsx +7 -3
- package/src/components/toast/components/toast-icon.tsx +2 -8
- package/src/components/toast/components/toast-root.tsx +6 -2
- package/src/components/toast/manager.tsx +4 -6
- package/src/components/touchable/touchable.tsx +7 -7
- package/src/hooks/use-color-scheme.ts +1 -4
- package/src/hooks/use-currency-mask.ts +4 -4
- package/src/hooks/use-is-react-navigation-modal.ts +4 -13
- package/src/hooks/use-numeric-mask.ts +10 -5
- package/src/hooks/use-phone-mask.ts +6 -18
- package/src/hooks/use-relative-position.ts +8 -24
- package/src/hooks/use-screen-size.ts +8 -3
- package/src/index.tsx +5 -6
- package/src/themes/default/index.ts +1 -0
- package/src/themes/index.ts +2 -2
- package/src/themes/provider.tsx +10 -25
- package/src/themes/types.ts +126 -0
- package/src/themes/utils.ts +1 -0
- package/src/utils/calculate-styles.ts +42 -2
- package/src/utils/date-utils.ts +23 -3
- package/src/utils/input-utils.ts +1 -4
- package/src/utils/normalize-layout.ts +3 -1
- package/src/utils/size-scale.ts +45 -0
- package/src/utils/use-themed-styles.ts +10 -10
- package/tsconfig.json +5 -15
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react";
|
|
2
2
|
import { Pressable, type PressableProps } from "react-native";
|
|
3
|
+
import { useComponentConfig } from "../../themes/provider";
|
|
4
|
+
import { mergeStyles } from "../../utils/calculate-styles";
|
|
3
5
|
import type { PressableState } from "./types";
|
|
4
6
|
import { PressableVariants } from "./variants";
|
|
5
7
|
|
|
@@ -25,6 +27,8 @@ const calculateState = (
|
|
|
25
27
|
export function Touchable(props: TouchableProps) {
|
|
26
28
|
const { variant = "default", isDisabled, style, children, ...rest } = props;
|
|
27
29
|
const variantStyles = PressableVariants[variant]();
|
|
30
|
+
const componentConfig = useComponentConfig("touchable");
|
|
31
|
+
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
28
32
|
const [isHovered, setIsHovered] = useState(false);
|
|
29
33
|
|
|
30
34
|
const handlePress: PressableProps["onPress"] = (event) => {
|
|
@@ -46,15 +50,11 @@ export function Touchable(props: TouchableProps) {
|
|
|
46
50
|
}}
|
|
47
51
|
disabled={isDisabled}
|
|
48
52
|
style={(styleState) => {
|
|
49
|
-
const currentState = calculateState(
|
|
50
|
-
props,
|
|
51
|
-
styleState.pressed,
|
|
52
|
-
isHovered,
|
|
53
|
-
);
|
|
53
|
+
const currentState = calculateState(props, styleState.pressed, isHovered);
|
|
54
54
|
|
|
55
55
|
return [
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
mergedStyles?.default,
|
|
57
|
+
mergedStyles?.[currentState],
|
|
58
58
|
typeof style === "function" ? style(styleState) : style,
|
|
59
59
|
];
|
|
60
60
|
}}
|
|
@@ -32,10 +32,7 @@ export function useColorScheme({ colorSchemeStorage }: UseColorSchemeProps) {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
useEffect(() => {
|
|
35
|
-
const newScheme = getColorScheme(
|
|
36
|
-
colorSchemeStorage?.get,
|
|
37
|
-
systemColorScheme,
|
|
38
|
-
);
|
|
35
|
+
const newScheme = getColorScheme(colorSchemeStorage?.get, systemColorScheme);
|
|
39
36
|
if (newScheme === _colorScheme) return;
|
|
40
37
|
setColorScheme(newScheme);
|
|
41
38
|
}, [systemColorScheme]);
|
|
@@ -42,7 +42,7 @@ export function useCurrencyMask({
|
|
|
42
42
|
maximumFractionDigits: precision,
|
|
43
43
|
}).format(num);
|
|
44
44
|
},
|
|
45
|
-
[locale, currency, precision]
|
|
45
|
+
[locale, currency, precision],
|
|
46
46
|
);
|
|
47
47
|
|
|
48
48
|
const parseCurrency = useCallback(
|
|
@@ -60,7 +60,7 @@ export function useCurrencyMask({
|
|
|
60
60
|
|
|
61
61
|
return constrained;
|
|
62
62
|
},
|
|
63
|
-
[min, max]
|
|
63
|
+
[min, max],
|
|
64
64
|
);
|
|
65
65
|
|
|
66
66
|
const handleChangeText = useCallback(
|
|
@@ -93,7 +93,7 @@ export function useCurrencyMask({
|
|
|
93
93
|
setNumericValue(value);
|
|
94
94
|
onValueChange?.(value);
|
|
95
95
|
},
|
|
96
|
-
[parseCurrency, onValueChange, isFocused, precision]
|
|
96
|
+
[parseCurrency, onValueChange, isFocused, precision],
|
|
97
97
|
);
|
|
98
98
|
|
|
99
99
|
const handleBlur = useCallback(() => {
|
|
@@ -126,7 +126,7 @@ export function useCurrencyMask({
|
|
|
126
126
|
}
|
|
127
127
|
onValueChange?.(value);
|
|
128
128
|
},
|
|
129
|
-
[isFocused, formatCurrency, onValueChange]
|
|
129
|
+
[isFocused, formatCurrency, onValueChange],
|
|
130
130
|
);
|
|
131
131
|
|
|
132
132
|
return {
|
|
@@ -3,8 +3,7 @@ import { useEffect, useMemo } from "react";
|
|
|
3
3
|
type NavigationContainerRef =
|
|
4
4
|
import("@react-navigation/native").NavigationContainerRefWithCurrent<ReactNavigation.RootParamList>;
|
|
5
5
|
|
|
6
|
-
let useCachedNavigationContainerRef: (() => NavigationContainerRef) | null =
|
|
7
|
-
null;
|
|
6
|
+
let useCachedNavigationContainerRef: (() => NavigationContainerRef) | null = null;
|
|
8
7
|
|
|
9
8
|
export function useInitializeNavigationContainerRef() {
|
|
10
9
|
useEffect(() => {
|
|
@@ -16,14 +15,10 @@ export function useInitializeNavigationContainerRef() {
|
|
|
16
15
|
}
|
|
17
16
|
const reactNavigation = require("@react-navigation/native");
|
|
18
17
|
if (reactNavigation) {
|
|
19
|
-
useCachedNavigationContainerRef =
|
|
20
|
-
reactNavigation.useNavigationContainerRef;
|
|
18
|
+
useCachedNavigationContainerRef = reactNavigation.useNavigationContainerRef;
|
|
21
19
|
}
|
|
22
20
|
} catch (error) {
|
|
23
|
-
console.warn(
|
|
24
|
-
"[useIsReactNavigationModal] Failed to load navigation ref:",
|
|
25
|
-
error,
|
|
26
|
-
);
|
|
21
|
+
console.warn("[useIsReactNavigationModal] Failed to load navigation ref:", error);
|
|
27
22
|
}
|
|
28
23
|
}, []);
|
|
29
24
|
}
|
|
@@ -40,11 +35,7 @@ const getIsModal = () => {
|
|
|
40
35
|
return false;
|
|
41
36
|
}
|
|
42
37
|
const state = navigationRef.getCurrentOptions();
|
|
43
|
-
if (
|
|
44
|
-
state &&
|
|
45
|
-
"presentation" in state &&
|
|
46
|
-
typeof state.presentation === "string"
|
|
47
|
-
) {
|
|
38
|
+
if (state && "presentation" in state && typeof state.presentation === "string") {
|
|
48
39
|
return state.presentation === "modal";
|
|
49
40
|
}
|
|
50
41
|
return false;
|
|
@@ -74,7 +74,7 @@ export function useNumericMask({
|
|
|
74
74
|
}).format(num);
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
|
-
[format, locale, currency, effectivePrecision]
|
|
77
|
+
[format, locale, currency, effectivePrecision],
|
|
78
78
|
);
|
|
79
79
|
|
|
80
80
|
const parseValue = useCallback(
|
|
@@ -98,7 +98,7 @@ export function useNumericMask({
|
|
|
98
98
|
|
|
99
99
|
return constrained;
|
|
100
100
|
},
|
|
101
|
-
[min, max, allowNegative]
|
|
101
|
+
[min, max, allowNegative],
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
const handleChangeText = useCallback(
|
|
@@ -151,7 +151,7 @@ export function useNumericMask({
|
|
|
151
151
|
setNumericValue(value);
|
|
152
152
|
onChange?.(value);
|
|
153
153
|
},
|
|
154
|
-
[parseValue, onChange, isFocused, effectivePrecision, allowNegative, format]
|
|
154
|
+
[parseValue, onChange, isFocused, effectivePrecision, allowNegative, format],
|
|
155
155
|
);
|
|
156
156
|
|
|
157
157
|
const handleBlur = useCallback(() => {
|
|
@@ -184,11 +184,16 @@ export function useNumericMask({
|
|
|
184
184
|
}
|
|
185
185
|
onChange?.(value);
|
|
186
186
|
},
|
|
187
|
-
[isFocused, formatValue, onChange]
|
|
187
|
+
[isFocused, formatValue, onChange],
|
|
188
188
|
);
|
|
189
189
|
|
|
190
190
|
// Determine keyboard type based on format
|
|
191
|
-
const keyboardType =
|
|
191
|
+
const keyboardType =
|
|
192
|
+
format === "integer"
|
|
193
|
+
? allowNegative
|
|
194
|
+
? ("numeric" as const)
|
|
195
|
+
: ("number-pad" as const)
|
|
196
|
+
: ("decimal-pad" as const);
|
|
192
197
|
|
|
193
198
|
return {
|
|
194
199
|
value: displayValue,
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
-
import {
|
|
3
|
-
type CountryData,
|
|
4
|
-
COUNTRIES,
|
|
5
|
-
getCountryByCode,
|
|
6
|
-
} from "../data/countries";
|
|
2
|
+
import { type CountryData, COUNTRIES, getCountryByCode } from "../data/countries";
|
|
7
3
|
|
|
8
4
|
export interface UsePhoneMaskOptions {
|
|
9
5
|
value?: string;
|
|
@@ -57,9 +53,7 @@ function parseE164(
|
|
|
57
53
|
if (!e164.startsWith("+")) return null;
|
|
58
54
|
const digits = e164.slice(1);
|
|
59
55
|
|
|
60
|
-
const sorted = [...countries].sort(
|
|
61
|
-
(a, b) => b.dialCode.length - a.dialCode.length,
|
|
62
|
-
);
|
|
56
|
+
const sorted = [...countries].sort((a, b) => b.dialCode.length - a.dialCode.length);
|
|
63
57
|
|
|
64
58
|
for (const country of sorted) {
|
|
65
59
|
if (digits.startsWith(country.dialCode)) {
|
|
@@ -99,9 +93,7 @@ export function usePhoneMask({
|
|
|
99
93
|
if (parsed) {
|
|
100
94
|
setCountryState(parsed.country);
|
|
101
95
|
setNationalDigits(parsed.nationalDigits);
|
|
102
|
-
setDisplayValue(
|
|
103
|
-
formatNational(parsed.nationalDigits, parsed.country.format),
|
|
104
|
-
);
|
|
96
|
+
setDisplayValue(formatNational(parsed.nationalDigits, parsed.country.format));
|
|
105
97
|
}
|
|
106
98
|
} else {
|
|
107
99
|
setNationalDigits("");
|
|
@@ -138,8 +130,7 @@ export function usePhoneMask({
|
|
|
138
130
|
setNationalDigits(trimmed);
|
|
139
131
|
setDisplayValue(formatNational(trimmed, newCountry.format));
|
|
140
132
|
|
|
141
|
-
const e164 =
|
|
142
|
-
trimmed.length > 0 ? toE164(newCountry.dialCode, trimmed) : "";
|
|
133
|
+
const e164 = trimmed.length > 0 ? toE164(newCountry.dialCode, trimmed) : "";
|
|
143
134
|
isInternalChange.current = true;
|
|
144
135
|
onChange?.(e164);
|
|
145
136
|
},
|
|
@@ -159,9 +150,7 @@ export function usePhoneMask({
|
|
|
159
150
|
if (parsed) {
|
|
160
151
|
setCountryState(parsed.country);
|
|
161
152
|
setNationalDigits(parsed.nationalDigits);
|
|
162
|
-
setDisplayValue(
|
|
163
|
-
formatNational(parsed.nationalDigits, parsed.country.format),
|
|
164
|
-
);
|
|
153
|
+
setDisplayValue(formatNational(parsed.nationalDigits, parsed.country.format));
|
|
165
154
|
isInternalChange.current = true;
|
|
166
155
|
onChange?.(e164);
|
|
167
156
|
}
|
|
@@ -171,8 +160,7 @@ export function usePhoneMask({
|
|
|
171
160
|
|
|
172
161
|
return {
|
|
173
162
|
displayValue,
|
|
174
|
-
e164Value:
|
|
175
|
-
nationalDigits.length > 0 ? toE164(country.dialCode, nationalDigits) : "",
|
|
163
|
+
e164Value: nationalDigits.length > 0 ? toE164(country.dialCode, nationalDigits) : "",
|
|
176
164
|
country,
|
|
177
165
|
countries: availableCountries,
|
|
178
166
|
onChangeText,
|
|
@@ -10,14 +10,9 @@ import { usePortalOffset } from "../components/portal";
|
|
|
10
10
|
import { useSafeAreaInsets, type SafeAreaInsets } from "../safe-area";
|
|
11
11
|
import { useIsReactNavigationModal } from "./use-is-react-navigation-modal";
|
|
12
12
|
|
|
13
|
-
type UseRelativePositionArgs = Omit<
|
|
14
|
-
GetContentStyleArgs,
|
|
15
|
-
"dimensions" | "insets"
|
|
16
|
-
>;
|
|
13
|
+
type UseRelativePositionArgs = Omit<GetContentStyleArgs, "dimensions" | "insets">;
|
|
17
14
|
|
|
18
|
-
type GetContentStyleArgs = GetPositionArgs &
|
|
19
|
-
GetSidePositionArgs &
|
|
20
|
-
GetAlignPositionArgs;
|
|
15
|
+
type GetContentStyleArgs = GetPositionArgs & GetSidePositionArgs & GetAlignPositionArgs;
|
|
21
16
|
|
|
22
17
|
export function useRelativePosition({
|
|
23
18
|
align,
|
|
@@ -81,9 +76,7 @@ export function useRelativePosition({
|
|
|
81
76
|
// Temporary fix to calculate portal content relative position correctly when rendered in a React Navigation modal.
|
|
82
77
|
top: Platform.select({
|
|
83
78
|
default: sidePosition.top,
|
|
84
|
-
ios: isReactNavigationModal
|
|
85
|
-
? sidePosition.top + insets.top
|
|
86
|
-
: sidePosition.top,
|
|
79
|
+
ios: isReactNavigationModal ? sidePosition.top + insets.top : sidePosition.top,
|
|
87
80
|
}),
|
|
88
81
|
};
|
|
89
82
|
|
|
@@ -182,10 +175,8 @@ function getSidePosition({
|
|
|
182
175
|
insets,
|
|
183
176
|
dimensions,
|
|
184
177
|
}: GetSidePositionArgs) {
|
|
185
|
-
const positionTop =
|
|
186
|
-
|
|
187
|
-
const positionBottom =
|
|
188
|
-
triggerPosition.pageY + triggerPosition.height + sideOffset;
|
|
178
|
+
const positionTop = triggerPosition?.pageY - sideOffset - contentLayout.height;
|
|
179
|
+
const positionBottom = triggerPosition.pageY + triggerPosition.height + sideOffset;
|
|
189
180
|
|
|
190
181
|
const side = getSide({
|
|
191
182
|
preferredSide,
|
|
@@ -205,10 +196,7 @@ function getSidePosition({
|
|
|
205
196
|
};
|
|
206
197
|
}
|
|
207
198
|
|
|
208
|
-
let top = Math.min(
|
|
209
|
-
dimensions.height - insets.bottom - contentLayout.height,
|
|
210
|
-
positionBottom,
|
|
211
|
-
);
|
|
199
|
+
let top = Math.min(dimensions.height - insets.bottom - contentLayout.height, positionBottom);
|
|
212
200
|
|
|
213
201
|
return {
|
|
214
202
|
top,
|
|
@@ -242,8 +230,7 @@ function getAlignPosition({
|
|
|
242
230
|
dimensions,
|
|
243
231
|
);
|
|
244
232
|
|
|
245
|
-
const doesCollide =
|
|
246
|
-
left < insets.left || left + contentWidth > dimensions.width - insets.right;
|
|
233
|
+
const doesCollide = left < insets.left || left + contentWidth > dimensions.width - insets.right;
|
|
247
234
|
if (doesCollide) {
|
|
248
235
|
const spaceLeft = left - insets.left;
|
|
249
236
|
const spaceRight = dimensions.width - insets.right - (left + contentWidth);
|
|
@@ -285,9 +272,6 @@ function getLeftPosition(
|
|
|
285
272
|
}
|
|
286
273
|
return Math.max(
|
|
287
274
|
insets.left,
|
|
288
|
-
Math.min(
|
|
289
|
-
left + alignOffset,
|
|
290
|
-
dimensions.width - contentWidth - insets.right,
|
|
291
|
-
),
|
|
275
|
+
Math.min(left + alignOffset, dimensions.width - contentWidth - insets.right),
|
|
292
276
|
);
|
|
293
277
|
}
|
|
@@ -10,14 +10,17 @@ interface Response {
|
|
|
10
10
|
readonly isTablet: boolean;
|
|
11
11
|
readonly isDesktop: boolean;
|
|
12
12
|
|
|
13
|
-
select<T>(
|
|
13
|
+
select<T>(
|
|
14
|
+
specifics: ({ [size in ScreenSize]?: T } & { default: T }) | { [platform in ScreenSize]: T },
|
|
15
|
+
): T;
|
|
14
16
|
select<T>(specifics: { [size in ScreenSize]?: T }): T | undefined;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
export function useScreenSize(): Response {
|
|
18
20
|
const windowDimensions = useWindowDimensions();
|
|
19
21
|
|
|
20
|
-
const size: ScreenSize =
|
|
22
|
+
const size: ScreenSize =
|
|
23
|
+
windowDimensions.width < 768 ? "mobile" : windowDimensions.width < 1024 ? "tablet" : "desktop";
|
|
21
24
|
|
|
22
25
|
return {
|
|
23
26
|
size,
|
|
@@ -33,7 +36,9 @@ export function useScreenSize(): Response {
|
|
|
33
36
|
if (size === "tablet" && tablet !== undefined) return tablet;
|
|
34
37
|
if (size === "desktop" && desktop !== undefined) return desktop;
|
|
35
38
|
if (!("default" in specifics)) {
|
|
36
|
-
throw new Error(
|
|
39
|
+
throw new Error(
|
|
40
|
+
`Utils.$screenSize.select: No value specified for current screen size: ${size}`,
|
|
41
|
+
);
|
|
37
42
|
}
|
|
38
43
|
return specifics.default;
|
|
39
44
|
},
|
package/src/index.tsx
CHANGED
|
@@ -5,11 +5,8 @@ import { type PortalHostProps } from "./components/portal/portal.constants";
|
|
|
5
5
|
import { ToastContainer } from "./components/toast/manager";
|
|
6
6
|
import { useInitializeNavigationContainerRef } from "./hooks/use-is-react-navigation-modal";
|
|
7
7
|
import { SafeAreaProvider, type SafeAreaInsets } from "./safe-area";
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
type ComponentsConfig,
|
|
11
|
-
type ThemeProviderProps,
|
|
12
|
-
} from "./themes";
|
|
8
|
+
import { ThemeProvider, type ThemeProviderProps } from "./themes/provider";
|
|
9
|
+
import type { ComponentsConfig } from "./themes/types";
|
|
13
10
|
|
|
14
11
|
export interface ProviderProps {
|
|
15
12
|
children: React.ReactNode;
|
|
@@ -46,9 +43,11 @@ export * from "./hooks/use-screen-size";
|
|
|
46
43
|
|
|
47
44
|
export * from "./themes/adapters";
|
|
48
45
|
export * from "./themes/default";
|
|
49
|
-
export { useTheme
|
|
46
|
+
export { useTheme } from "./themes/provider";
|
|
50
47
|
export * from "./themes/types";
|
|
51
48
|
|
|
52
49
|
export * from "./components";
|
|
53
50
|
|
|
54
51
|
export * from "./safe-area";
|
|
52
|
+
export type { Size } from "./utils/size-scale";
|
|
53
|
+
export type { SvgProps } from "./types/props.types";
|
package/src/themes/index.ts
CHANGED
package/src/themes/provider.tsx
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { createContext, type PropsWithChildren, useContext } from "react";
|
|
2
|
-
import type { ToastVariants } from "../components/toast/variants";
|
|
3
2
|
import { useColorScheme } from "../hooks/use-color-scheme";
|
|
4
|
-
import type { SvgProps } from "../types/props.types";
|
|
5
3
|
import type { DeepPartial } from "../types/util.types";
|
|
6
4
|
import { defaultThemeAssets } from "./default";
|
|
7
5
|
import type {
|
|
8
6
|
Colors,
|
|
9
7
|
ColorScheme,
|
|
8
|
+
ComponentsConfig,
|
|
10
9
|
FontFamily,
|
|
11
10
|
FontSize,
|
|
12
11
|
LetterSpacing,
|
|
13
12
|
Radius,
|
|
14
|
-
StorageClient,
|
|
15
13
|
ThemeAssets,
|
|
16
14
|
} from "./types";
|
|
17
15
|
import { mergeThemeAssets } from "./utils";
|
|
@@ -23,28 +21,11 @@ interface ThemeContext {
|
|
|
23
21
|
colorScheme: ColorScheme;
|
|
24
22
|
letterSpacing: LetterSpacing;
|
|
25
23
|
fontSize: FontSize;
|
|
24
|
+
spacing: number;
|
|
26
25
|
setColorScheme: (scheme: ColorScheme) => void;
|
|
27
26
|
components?: ComponentsConfig;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
export interface ComponentsConfig {
|
|
31
|
-
colorScheme?: {
|
|
32
|
-
storage?: StorageClient<ColorScheme>;
|
|
33
|
-
};
|
|
34
|
-
toast?: {
|
|
35
|
-
icons?: Partial<
|
|
36
|
-
Record<keyof typeof ToastVariants, React.ComponentType<SvgProps>>
|
|
37
|
-
>;
|
|
38
|
-
};
|
|
39
|
-
menu?: {
|
|
40
|
-
selectionIcon?: React.ComponentType<SvgProps>;
|
|
41
|
-
};
|
|
42
|
-
calendar?: {
|
|
43
|
-
prevIcon?: React.ComponentType<SvgProps>;
|
|
44
|
-
nextIcon?: React.ComponentType<SvgProps>;
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
29
|
const ThemeContext = createContext<ThemeContext | null>(null);
|
|
49
30
|
|
|
50
31
|
export interface ThemeProviderProps extends PropsWithChildren {
|
|
@@ -58,9 +39,7 @@ export const ThemeProvider = (props: ThemeProviderProps) => {
|
|
|
58
39
|
colorSchemeStorage: components?.colorScheme?.storage,
|
|
59
40
|
});
|
|
60
41
|
|
|
61
|
-
const themeAssets = theme
|
|
62
|
-
? mergeThemeAssets(defaultThemeAssets, theme)
|
|
63
|
-
: defaultThemeAssets;
|
|
42
|
+
const themeAssets = theme ? mergeThemeAssets(defaultThemeAssets, theme) : defaultThemeAssets;
|
|
64
43
|
|
|
65
44
|
const colors = themeAssets.colors[colorScheme];
|
|
66
45
|
|
|
@@ -74,6 +53,7 @@ export const ThemeProvider = (props: ThemeProviderProps) => {
|
|
|
74
53
|
fontFamily: themeAssets.fontFamily,
|
|
75
54
|
letterSpacing: themeAssets.letterSpacing,
|
|
76
55
|
fontSize: themeAssets.fontSize,
|
|
56
|
+
spacing: themeAssets.spacing,
|
|
77
57
|
components,
|
|
78
58
|
}}
|
|
79
59
|
>
|
|
@@ -90,10 +70,15 @@ export const useTheme = () => {
|
|
|
90
70
|
return context;
|
|
91
71
|
};
|
|
92
72
|
|
|
93
|
-
|
|
73
|
+
const useComponentsConfig = () => {
|
|
94
74
|
const context = useContext(ThemeContext);
|
|
95
75
|
if (!context) {
|
|
96
76
|
throw new Error("useComponentsConfig must be used within a ThemeProvider");
|
|
97
77
|
}
|
|
98
78
|
return context.components;
|
|
99
79
|
};
|
|
80
|
+
|
|
81
|
+
export const useComponentConfig = <K extends keyof ComponentsConfig>(componentName: K) => {
|
|
82
|
+
const componentsConfig = useComponentsConfig();
|
|
83
|
+
return componentsConfig?.[componentName];
|
|
84
|
+
};
|
package/src/themes/types.ts
CHANGED
|
@@ -30,9 +30,135 @@ export interface ThemeAssets {
|
|
|
30
30
|
fontFamily: FontFamily;
|
|
31
31
|
letterSpacing: LetterSpacing;
|
|
32
32
|
fontSize: FontSize;
|
|
33
|
+
spacing: number;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
export type StorageClient<T> = {
|
|
36
37
|
set: (value: T) => void;
|
|
37
38
|
get: () => T | null;
|
|
38
39
|
};
|
|
40
|
+
|
|
41
|
+
import type { AlertDialogStyles } from "../components/alert-dialog/types";
|
|
42
|
+
import type { AlertStyles } from "../components/alert/types";
|
|
43
|
+
import type { AvatarStyles } from "../components/avatar/types";
|
|
44
|
+
import type { BadgeStyles } from "../components/badge/types";
|
|
45
|
+
import type { ButtonStyles } from "../components/button/types";
|
|
46
|
+
import type { CalendarStyles } from "../components/calendar/calendar/types";
|
|
47
|
+
import type { TimelineStyles } from "../components/calendar/timeline/types";
|
|
48
|
+
import type { WeekCalendarStyles } from "../components/calendar/week-calendar/types";
|
|
49
|
+
import type { CardStyles } from "../components/card/types";
|
|
50
|
+
import type { CheckboxStyles } from "../components/checkbox/types";
|
|
51
|
+
import type { ComboboxStyles } from "../components/combobox/types";
|
|
52
|
+
import type { EmptyStyles } from "../components/empty/types";
|
|
53
|
+
import type { FieldStyles } from "../components/field/types";
|
|
54
|
+
import type { IconButtonStyles } from "../components/icon-button/types";
|
|
55
|
+
import type { InputStyles } from "../components/input/types";
|
|
56
|
+
import type { MenuStyles } from "../components/menu/types";
|
|
57
|
+
import type { PhoneInputStyles } from "../components/phone-input/types";
|
|
58
|
+
import type { PopoverStyles } from "../components/popover/types";
|
|
59
|
+
import type { ProgressStyles } from "../components/progress/types";
|
|
60
|
+
import type { RadioGroupStyles } from "../components/radio-group/types";
|
|
61
|
+
import type { SelectStyles } from "../components/select/types";
|
|
62
|
+
import type { SeparatorStyles } from "../components/separator/types";
|
|
63
|
+
import type { SpinnerStyles } from "../components/spinner/types";
|
|
64
|
+
import type { TableStyles } from "../components/table/types";
|
|
65
|
+
import type { TabsStyles } from "../components/tabs/types";
|
|
66
|
+
import type { TextareaStyles } from "../components/textarea/types";
|
|
67
|
+
import type { ToastStyles } from "../components/toast/types";
|
|
68
|
+
import type { ToastVariants } from "../components/toast/variants";
|
|
69
|
+
import type { PressableStyles } from "../components/touchable/types";
|
|
70
|
+
import type { SvgProps } from "../types/props.types";
|
|
71
|
+
|
|
72
|
+
export interface ComponentsConfig {
|
|
73
|
+
colorScheme?: {
|
|
74
|
+
storage?: StorageClient<ColorScheme>;
|
|
75
|
+
};
|
|
76
|
+
alert?: {
|
|
77
|
+
styles?: AlertStyles;
|
|
78
|
+
};
|
|
79
|
+
alertDialog?: {
|
|
80
|
+
styles?: AlertDialogStyles;
|
|
81
|
+
};
|
|
82
|
+
avatar?: {
|
|
83
|
+
styles?: AvatarStyles;
|
|
84
|
+
};
|
|
85
|
+
badge?: {
|
|
86
|
+
styles?: BadgeStyles;
|
|
87
|
+
};
|
|
88
|
+
button?: {
|
|
89
|
+
styles?: ButtonStyles;
|
|
90
|
+
};
|
|
91
|
+
calendar?: {
|
|
92
|
+
prevIcon?: React.ComponentType<SvgProps>;
|
|
93
|
+
nextIcon?: React.ComponentType<SvgProps>;
|
|
94
|
+
styles?: CalendarStyles;
|
|
95
|
+
};
|
|
96
|
+
card?: {
|
|
97
|
+
styles?: CardStyles;
|
|
98
|
+
};
|
|
99
|
+
checkbox?: {
|
|
100
|
+
styles?: CheckboxStyles;
|
|
101
|
+
};
|
|
102
|
+
combobox?: {
|
|
103
|
+
styles?: ComboboxStyles;
|
|
104
|
+
};
|
|
105
|
+
empty?: {
|
|
106
|
+
styles?: EmptyStyles;
|
|
107
|
+
};
|
|
108
|
+
field?: {
|
|
109
|
+
styles?: FieldStyles;
|
|
110
|
+
};
|
|
111
|
+
iconButton?: {
|
|
112
|
+
styles?: IconButtonStyles;
|
|
113
|
+
};
|
|
114
|
+
input?: {
|
|
115
|
+
styles?: InputStyles;
|
|
116
|
+
};
|
|
117
|
+
menu?: {
|
|
118
|
+
selectionIcon?: React.ComponentType<SvgProps>;
|
|
119
|
+
styles?: MenuStyles;
|
|
120
|
+
};
|
|
121
|
+
phoneInput?: {
|
|
122
|
+
styles?: PhoneInputStyles;
|
|
123
|
+
};
|
|
124
|
+
popover?: {
|
|
125
|
+
styles?: PopoverStyles;
|
|
126
|
+
};
|
|
127
|
+
progress?: {
|
|
128
|
+
styles?: ProgressStyles;
|
|
129
|
+
};
|
|
130
|
+
radioGroup?: {
|
|
131
|
+
styles?: RadioGroupStyles;
|
|
132
|
+
};
|
|
133
|
+
select?: {
|
|
134
|
+
styles?: SelectStyles;
|
|
135
|
+
};
|
|
136
|
+
separator?: {
|
|
137
|
+
styles?: SeparatorStyles;
|
|
138
|
+
};
|
|
139
|
+
spinner?: {
|
|
140
|
+
styles?: SpinnerStyles;
|
|
141
|
+
};
|
|
142
|
+
table?: {
|
|
143
|
+
styles?: TableStyles;
|
|
144
|
+
};
|
|
145
|
+
tabs?: {
|
|
146
|
+
styles?: TabsStyles;
|
|
147
|
+
};
|
|
148
|
+
textarea?: {
|
|
149
|
+
styles?: TextareaStyles;
|
|
150
|
+
};
|
|
151
|
+
timeline?: {
|
|
152
|
+
styles?: TimelineStyles;
|
|
153
|
+
};
|
|
154
|
+
toast?: {
|
|
155
|
+
icons?: Partial<Record<keyof typeof ToastVariants, React.ComponentType<SvgProps>>>;
|
|
156
|
+
styles?: ToastStyles;
|
|
157
|
+
};
|
|
158
|
+
touchable?: {
|
|
159
|
+
styles?: PressableStyles;
|
|
160
|
+
};
|
|
161
|
+
weekCalendar?: {
|
|
162
|
+
styles?: WeekCalendarStyles;
|
|
163
|
+
};
|
|
164
|
+
}
|
package/src/themes/utils.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import { StyleSheet } from "react-native";
|
|
2
|
+
|
|
3
|
+
export const calculateComposedStyles = <
|
|
4
|
+
TStyle,
|
|
5
|
+
State extends string | "default",
|
|
6
|
+
Component extends string,
|
|
7
|
+
>(
|
|
2
8
|
styles: Partial<Record<Component, Partial<Record<State, TStyle>>>> | null = {},
|
|
3
9
|
state: State,
|
|
4
10
|
component: Component,
|
|
5
|
-
style?: TStyle
|
|
11
|
+
style?: TStyle,
|
|
6
12
|
): TStyle[] => {
|
|
7
13
|
const result: TStyle[] = [];
|
|
8
14
|
const componentStyles = styles?.[component];
|
|
@@ -17,3 +23,37 @@ export const calculateComposedStyles = <TStyle, State extends string | "default"
|
|
|
17
23
|
}
|
|
18
24
|
return result;
|
|
19
25
|
};
|
|
26
|
+
|
|
27
|
+
const mergeProps = <TProps extends { style?: any }>(
|
|
28
|
+
variantProps: TProps,
|
|
29
|
+
globalProps: TProps | undefined,
|
|
30
|
+
): TProps => {
|
|
31
|
+
if (!globalProps) return variantProps;
|
|
32
|
+
const mergedProps = {
|
|
33
|
+
...globalProps,
|
|
34
|
+
...variantProps,
|
|
35
|
+
style: [globalProps.style, variantProps.style],
|
|
36
|
+
};
|
|
37
|
+
return mergedProps;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const isPropsObject = (props: unknown): props is { style?: any } => {
|
|
41
|
+
return typeof props === "object" && props !== null && "style" in props;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const mergeStyles = <TStyle extends Record<string, any>>(
|
|
45
|
+
variantStyles: TStyle,
|
|
46
|
+
globalStyles: TStyle | undefined,
|
|
47
|
+
): TStyle => {
|
|
48
|
+
if (!globalStyles) return variantStyles;
|
|
49
|
+
const returnStyles = {} as TStyle;
|
|
50
|
+
for (const key in variantStyles) {
|
|
51
|
+
if (isPropsObject(variantStyles[key]) && isPropsObject(globalStyles[key])) {
|
|
52
|
+
returnStyles[key] = mergeProps(variantStyles[key], globalStyles[key]);
|
|
53
|
+
} else {
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
returnStyles[key] = StyleSheet.flatten([variantStyles[key], globalStyles[key]]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return returnStyles;
|
|
59
|
+
};
|