@korsolutions/ui 0.0.84 → 0.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/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 +6 -2
- package/dist/module/components/button/button.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 +7 -3
- 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/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 +7 -3
- package/dist/module/components/icon-button/icon-button.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 +7 -3
- 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/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 +7 -3
- 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/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 +7 -4
- 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/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/index.js +2 -2
- package/dist/module/themes/index.js.map +1 -1
- package/dist/module/themes/provider.js +5 -1
- package/dist/module/themes/provider.js.map +1 -1
- package/dist/module/themes/types.js +2 -0
- 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/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.map +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.map +1 -1
- package/dist/typescript/src/components/button/types.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.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/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.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.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/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.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/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.map +1 -1
- package/dist/typescript/src/components/select/components/select-trigger.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 +3 -2
- package/dist/typescript/src/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 +2 -19
- package/dist/typescript/src/themes/provider.d.ts.map +1 -1
- package/dist/typescript/src/themes/types.d.ts +123 -0
- package/dist/typescript/src/themes/types.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/use-themed-styles.d.ts.map +1 -1
- package/package.json +8 -7
- 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 +8 -3
- 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 +10 -22
- package/src/components/button/types.ts +1 -5
- 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 +20 -23
- package/src/components/combobox/components/combobox-trigger.tsx +2 -7
- package/src/components/combobox/context.ts +1 -3
- 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 +11 -10
- package/src/components/index.ts +1 -0
- package/src/components/input/input.tsx +8 -4
- package/src/components/input/numeric-input.tsx +2 -9
- 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 +10 -8
- 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/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 +7 -4
- package/src/components/select/components/select-trigger.tsx +3 -13
- 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 +3 -6
- package/src/themes/index.ts +2 -2
- package/src/themes/provider.tsx +8 -25
- package/src/themes/types.ts +125 -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/use-themed-styles.ts +2 -10
- package/tsconfig.json +5 -15
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
type StyleProp,
|
|
6
|
-
type ViewProps,
|
|
7
|
-
type ViewStyle,
|
|
8
|
-
} from "react-native";
|
|
2
|
+
import { StyleSheet, View, type StyleProp, type ViewProps, type ViewStyle } from "react-native";
|
|
3
|
+
import { useComponentConfig } from "../../../themes/provider";
|
|
4
|
+
import { mergeStyles } from "../../../utils/calculate-styles";
|
|
9
5
|
import { TabsContext } from "../context";
|
|
10
6
|
import { TabsVariants } from "../variants";
|
|
11
7
|
|
|
@@ -20,16 +16,19 @@ export interface TabsRootProps extends Omit<ViewProps, "children"> {
|
|
|
20
16
|
export function TabsRoot(props: TabsRootProps) {
|
|
21
17
|
const { children, value, onChange, style, ...viewProps } = props;
|
|
22
18
|
const variantStyles = TabsVariants[props.variant || "default"]();
|
|
19
|
+
const componentConfig = useComponentConfig("tabs");
|
|
20
|
+
|
|
21
|
+
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
23
22
|
|
|
24
23
|
const contextValue = useMemo(
|
|
25
24
|
() => ({
|
|
26
25
|
value,
|
|
27
26
|
onChange,
|
|
28
|
-
styles:
|
|
27
|
+
styles: mergedStyles,
|
|
29
28
|
}),
|
|
30
|
-
[value, onChange,
|
|
29
|
+
[value, onChange, mergedStyles],
|
|
31
30
|
);
|
|
32
|
-
const composedStyles = StyleSheet.flatten([
|
|
31
|
+
const composedStyles = StyleSheet.flatten([mergedStyles?.root, style]);
|
|
33
32
|
|
|
34
33
|
return (
|
|
35
34
|
<TabsContext.Provider value={contextValue}>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
import { TextInput, type TextInputProps } from "react-native";
|
|
3
|
+
import { useComponentConfig } from "../../themes/provider";
|
|
4
|
+
import { mergeStyles } from "../../utils/calculate-styles";
|
|
3
5
|
import type { TextareaState } from "./types";
|
|
4
6
|
import { TextareaVariants } from "./variants";
|
|
5
7
|
|
|
@@ -26,14 +28,16 @@ const calculateState = (props: TextareaProps, isFocused: boolean): TextareaState
|
|
|
26
28
|
|
|
27
29
|
export function Textarea(props: TextareaProps) {
|
|
28
30
|
const variantStyles = TextareaVariants[props.variant ?? "default"]();
|
|
31
|
+
const componentConfig = useComponentConfig("textarea");
|
|
32
|
+
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
29
33
|
|
|
30
34
|
const [isFocused, setIsFocused] = useState(false);
|
|
31
35
|
const state = calculateState(props, isFocused);
|
|
32
36
|
|
|
33
|
-
const composedStyles = [
|
|
37
|
+
const composedStyles = [mergedStyles.default?.style, mergedStyles[state]?.style, props.style];
|
|
34
38
|
const composedProps = {
|
|
35
|
-
...
|
|
36
|
-
...
|
|
39
|
+
...mergedStyles.default,
|
|
40
|
+
...mergedStyles[state],
|
|
37
41
|
...props,
|
|
38
42
|
};
|
|
39
43
|
const Component = props.render ?? TextInput;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type {
|
|
3
|
-
PropsWithRequiredRender,
|
|
4
|
-
SvgProps,
|
|
5
|
-
} from "../../../types/props.types";
|
|
2
|
+
import type { PropsWithRequiredRender, SvgProps } from "../../../types/props.types";
|
|
6
3
|
import { useToast } from "../context";
|
|
7
4
|
|
|
8
5
|
export type ToastIconProps = SvgProps;
|
|
9
6
|
|
|
10
|
-
export function ToastIcon({
|
|
11
|
-
render: Component,
|
|
12
|
-
...props
|
|
13
|
-
}: PropsWithRequiredRender<SvgProps>) {
|
|
7
|
+
export function ToastIcon({ render: Component, ...props }: PropsWithRequiredRender<SvgProps>) {
|
|
14
8
|
const toast = useToast();
|
|
15
9
|
|
|
16
10
|
const composedProps = {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useComponentConfig } from "../../../themes/provider";
|
|
4
|
+
import { mergeStyles } from "../../../utils/calculate-styles";
|
|
3
5
|
import { ToastContext } from "../context";
|
|
4
6
|
import { ToastVariants } from "../variants";
|
|
5
7
|
|
|
@@ -14,13 +16,15 @@ export interface ToastRootProps {
|
|
|
14
16
|
|
|
15
17
|
export function ToastRoot(props: ToastRootProps) {
|
|
16
18
|
const variantStyles = ToastVariants[props.variant ?? "default"]();
|
|
17
|
-
const
|
|
19
|
+
const componentConfig = useComponentConfig("toast");
|
|
20
|
+
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
21
|
+
const composedStyle = [mergedStyles.root, props.style];
|
|
18
22
|
|
|
19
23
|
const Component = props.render ?? View;
|
|
20
24
|
return (
|
|
21
25
|
<ToastContext.Provider
|
|
22
26
|
value={{
|
|
23
|
-
styles:
|
|
27
|
+
styles: mergedStyles,
|
|
24
28
|
}}
|
|
25
29
|
>
|
|
26
30
|
<Component {...props} style={composedStyle} />
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useSyncExternalStore } from "react";
|
|
2
2
|
import { StyleSheet, View } from "react-native";
|
|
3
3
|
import { useSafeAreaInsets } from "../../safe-area";
|
|
4
|
-
import {
|
|
4
|
+
import { useComponentConfig } from "../../themes/provider";
|
|
5
5
|
import { Portal } from "../portal";
|
|
6
6
|
import { ToastBody } from "./components/toast-body";
|
|
7
7
|
import { ToastDescription } from "./components/toast-description";
|
|
@@ -110,18 +110,16 @@ interface ToastProps {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
export function ToastComponent(props: ToastProps) {
|
|
113
|
-
const config =
|
|
113
|
+
const config = useComponentConfig("toast");
|
|
114
114
|
const variant = props.variant ?? "default";
|
|
115
|
-
const IconComponent = config?.
|
|
115
|
+
const IconComponent = config?.icons?.[variant];
|
|
116
116
|
|
|
117
117
|
return (
|
|
118
118
|
<ToastRoot variant={variant}>
|
|
119
119
|
{!!IconComponent && <ToastIcon render={IconComponent} />}
|
|
120
120
|
<ToastBody>
|
|
121
121
|
<ToastTitle>{props.title}</ToastTitle>
|
|
122
|
-
{!!props.description &&
|
|
123
|
-
<ToastDescription>{props.description}</ToastDescription>
|
|
124
|
-
)}
|
|
122
|
+
{!!props.description && <ToastDescription>{props.description}</ToastDescription>}
|
|
125
123
|
</ToastBody>
|
|
126
124
|
</ToastRoot>
|
|
127
125
|
);
|
|
@@ -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,7 +43,7 @@ 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";
|
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";
|
|
@@ -27,24 +25,6 @@ interface ThemeContext {
|
|
|
27
25
|
components?: ComponentsConfig;
|
|
28
26
|
}
|
|
29
27
|
|
|
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
28
|
const ThemeContext = createContext<ThemeContext | null>(null);
|
|
49
29
|
|
|
50
30
|
export interface ThemeProviderProps extends PropsWithChildren {
|
|
@@ -58,9 +38,7 @@ export const ThemeProvider = (props: ThemeProviderProps) => {
|
|
|
58
38
|
colorSchemeStorage: components?.colorScheme?.storage,
|
|
59
39
|
});
|
|
60
40
|
|
|
61
|
-
const themeAssets = theme
|
|
62
|
-
? mergeThemeAssets(defaultThemeAssets, theme)
|
|
63
|
-
: defaultThemeAssets;
|
|
41
|
+
const themeAssets = theme ? mergeThemeAssets(defaultThemeAssets, theme) : defaultThemeAssets;
|
|
64
42
|
|
|
65
43
|
const colors = themeAssets.colors[colorScheme];
|
|
66
44
|
|
|
@@ -90,10 +68,15 @@ export const useTheme = () => {
|
|
|
90
68
|
return context;
|
|
91
69
|
};
|
|
92
70
|
|
|
93
|
-
|
|
71
|
+
const useComponentsConfig = () => {
|
|
94
72
|
const context = useContext(ThemeContext);
|
|
95
73
|
if (!context) {
|
|
96
74
|
throw new Error("useComponentsConfig must be used within a ThemeProvider");
|
|
97
75
|
}
|
|
98
76
|
return context.components;
|
|
99
77
|
};
|
|
78
|
+
|
|
79
|
+
export const useComponentConfig = <K extends keyof ComponentsConfig>(componentName: K) => {
|
|
80
|
+
const componentsConfig = useComponentsConfig();
|
|
81
|
+
return componentsConfig?.[componentName];
|
|
82
|
+
};
|