@umituz/react-native-design-system 1.3.1 → 1.3.3
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/README.md +1 -1
- package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts +91 -0
- package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts.map +1 -0
- package/lib/domains/icons/domain/config/IconLibraryConfig.js +85 -0
- package/lib/domains/icons/domain/config/IconLibraryConfig.js.map +1 -0
- package/lib/domains/icons/domain/entities/Icon.d.ts +111 -0
- package/lib/domains/icons/domain/entities/Icon.d.ts.map +1 -0
- package/lib/domains/icons/domain/entities/Icon.js +87 -0
- package/lib/domains/icons/domain/entities/Icon.js.map +1 -0
- package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts +114 -0
- package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts.map +1 -0
- package/lib/domains/icons/domain/interfaces/IIconAdapter.js +17 -0
- package/lib/domains/icons/domain/interfaces/IIconAdapter.js.map +1 -0
- package/lib/domains/icons/index.d.ts +84 -0
- package/lib/domains/icons/index.d.ts.map +1 -0
- package/lib/domains/icons/index.js +89 -0
- package/lib/domains/icons/index.js.map +1 -0
- package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts +24 -0
- package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts.map +1 -0
- package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js +85 -0
- package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js.map +1 -0
- package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts +23 -0
- package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts.map +1 -0
- package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js +178 -0
- package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js.map +1 -0
- package/lib/domains/icons/presentation/components/Icon.d.ts +42 -0
- package/lib/domains/icons/presentation/components/Icon.d.ts.map +1 -0
- package/lib/domains/icons/presentation/components/Icon.js +86 -0
- package/lib/domains/icons/presentation/components/Icon.js.map +1 -0
- package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts +38 -0
- package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts.map +1 -0
- package/lib/domains/icons/presentation/hooks/useIconLibrary.js +114 -0
- package/lib/domains/icons/presentation/hooks/useIconLibrary.js.map +1 -0
- package/lib/index.d.ts +66 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +106 -0
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/theme/globalThemeStore.d.ts +42 -0
- package/lib/infrastructure/theme/globalThemeStore.d.ts.map +1 -0
- package/lib/infrastructure/theme/globalThemeStore.js +38 -0
- package/lib/infrastructure/theme/globalThemeStore.js.map +1 -0
- package/lib/presentation/atoms/AtomicAvatar.d.ts +48 -0
- package/lib/presentation/atoms/AtomicAvatar.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicAvatar.js +85 -0
- package/lib/presentation/atoms/AtomicAvatar.js.map +1 -0
- package/lib/presentation/atoms/AtomicAvatarGroup.d.ts +56 -0
- package/lib/presentation/atoms/AtomicAvatarGroup.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicAvatarGroup.js +83 -0
- package/lib/presentation/atoms/AtomicAvatarGroup.js.map +1 -0
- package/lib/presentation/atoms/AtomicBadge.d.ts +42 -0
- package/lib/presentation/atoms/AtomicBadge.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicBadge.js +168 -0
- package/lib/presentation/atoms/AtomicBadge.js.map +1 -0
- package/lib/presentation/atoms/AtomicButton.d.ts +22 -0
- package/lib/presentation/atoms/AtomicButton.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicButton.js +193 -0
- package/lib/presentation/atoms/AtomicButton.js.map +1 -0
- package/lib/presentation/atoms/AtomicCard.d.ts +15 -0
- package/lib/presentation/atoms/AtomicCard.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicCard.js +89 -0
- package/lib/presentation/atoms/AtomicCard.js.map +1 -0
- package/lib/presentation/atoms/AtomicChip.d.ts +53 -0
- package/lib/presentation/atoms/AtomicChip.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicChip.js +131 -0
- package/lib/presentation/atoms/AtomicChip.js.map +1 -0
- package/lib/presentation/atoms/AtomicDatePicker.d.ts +75 -0
- package/lib/presentation/atoms/AtomicDatePicker.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicDatePicker.js +246 -0
- package/lib/presentation/atoms/AtomicDatePicker.js.map +1 -0
- package/lib/presentation/atoms/AtomicDivider.d.ts +45 -0
- package/lib/presentation/atoms/AtomicDivider.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicDivider.js +58 -0
- package/lib/presentation/atoms/AtomicDivider.js.map +1 -0
- package/lib/presentation/atoms/AtomicFab.d.ts +38 -0
- package/lib/presentation/atoms/AtomicFab.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicFab.js +69 -0
- package/lib/presentation/atoms/AtomicFab.js.map +1 -0
- package/lib/presentation/atoms/AtomicFilter.d.ts +37 -0
- package/lib/presentation/atoms/AtomicFilter.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicFilter.js +104 -0
- package/lib/presentation/atoms/AtomicFilter.js.map +1 -0
- package/lib/presentation/atoms/AtomicFormError.d.ts +30 -0
- package/lib/presentation/atoms/AtomicFormError.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicFormError.js +64 -0
- package/lib/presentation/atoms/AtomicFormError.js.map +1 -0
- package/lib/presentation/atoms/AtomicIcon.d.ts +36 -0
- package/lib/presentation/atoms/AtomicIcon.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicIcon.js +30 -0
- package/lib/presentation/atoms/AtomicIcon.js.map +1 -0
- package/lib/presentation/atoms/AtomicImage.d.ts +40 -0
- package/lib/presentation/atoms/AtomicImage.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicImage.js +92 -0
- package/lib/presentation/atoms/AtomicImage.js.map +1 -0
- package/lib/presentation/atoms/AtomicInput.d.ts +71 -0
- package/lib/presentation/atoms/AtomicInput.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicInput.js +196 -0
- package/lib/presentation/atoms/AtomicInput.js.map +1 -0
- package/lib/presentation/atoms/AtomicNumberInput.d.ts +69 -0
- package/lib/presentation/atoms/AtomicNumberInput.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicNumberInput.js +125 -0
- package/lib/presentation/atoms/AtomicNumberInput.js.map +1 -0
- package/lib/presentation/atoms/AtomicPicker.d.ts +52 -0
- package/lib/presentation/atoms/AtomicPicker.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicPicker.js +299 -0
- package/lib/presentation/atoms/AtomicPicker.js.map +1 -0
- package/lib/presentation/atoms/AtomicProgress.d.ts +47 -0
- package/lib/presentation/atoms/AtomicProgress.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicProgress.js +81 -0
- package/lib/presentation/atoms/AtomicProgress.js.map +1 -0
- package/lib/presentation/atoms/AtomicSearchBar.d.ts +19 -0
- package/lib/presentation/atoms/AtomicSearchBar.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicSearchBar.js +46 -0
- package/lib/presentation/atoms/AtomicSearchBar.js.map +1 -0
- package/lib/presentation/atoms/AtomicSkeleton.d.ts +43 -0
- package/lib/presentation/atoms/AtomicSkeleton.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicSkeleton.js +84 -0
- package/lib/presentation/atoms/AtomicSkeleton.js.map +1 -0
- package/lib/presentation/atoms/AtomicSort.d.ts +72 -0
- package/lib/presentation/atoms/AtomicSort.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicSort.js +77 -0
- package/lib/presentation/atoms/AtomicSort.js.map +1 -0
- package/lib/presentation/atoms/AtomicSwitch.d.ts +43 -0
- package/lib/presentation/atoms/AtomicSwitch.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicSwitch.js +104 -0
- package/lib/presentation/atoms/AtomicSwitch.js.map +1 -0
- package/lib/presentation/atoms/AtomicText.d.ts +14 -0
- package/lib/presentation/atoms/AtomicText.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicText.js +36 -0
- package/lib/presentation/atoms/AtomicText.js.map +1 -0
- package/lib/presentation/atoms/AtomicTextArea.d.ts +85 -0
- package/lib/presentation/atoms/AtomicTextArea.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicTextArea.js +196 -0
- package/lib/presentation/atoms/AtomicTextArea.js.map +1 -0
- package/lib/presentation/atoms/AtomicTouchable.d.ts +87 -0
- package/lib/presentation/atoms/AtomicTouchable.d.ts.map +1 -0
- package/lib/presentation/atoms/AtomicTouchable.js +151 -0
- package/lib/presentation/atoms/AtomicTouchable.js.map +1 -0
- package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +23 -0
- package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +1 -0
- package/lib/presentation/atoms/fab/styles/fabStyles.js +63 -0
- package/lib/presentation/atoms/fab/styles/fabStyles.js.map +1 -0
- package/lib/presentation/atoms/fab/types/index.d.ts +76 -0
- package/lib/presentation/atoms/fab/types/index.d.ts.map +1 -0
- package/lib/presentation/atoms/fab/types/index.js +2 -0
- package/lib/presentation/atoms/fab/types/index.js.map +1 -0
- package/lib/presentation/atoms/filter/styles/filterStyles.d.ts +15 -0
- package/lib/presentation/atoms/filter/styles/filterStyles.d.ts.map +1 -0
- package/lib/presentation/atoms/filter/styles/filterStyles.js +29 -0
- package/lib/presentation/atoms/filter/styles/filterStyles.js.map +1 -0
- package/lib/presentation/atoms/filter/types/index.d.ts +76 -0
- package/lib/presentation/atoms/filter/types/index.d.ts.map +1 -0
- package/lib/presentation/atoms/filter/types/index.js +2 -0
- package/lib/presentation/atoms/filter/types/index.js.map +1 -0
- package/lib/presentation/atoms/index.d.ts +276 -0
- package/lib/presentation/atoms/index.d.ts.map +1 -0
- package/lib/presentation/atoms/index.js +149 -0
- package/lib/presentation/atoms/index.js.map +1 -0
- package/lib/presentation/atoms/input/hooks/useInputState.d.ts +7 -0
- package/lib/presentation/atoms/input/hooks/useInputState.d.ts.map +1 -0
- package/lib/presentation/atoms/input/hooks/useInputState.js +13 -0
- package/lib/presentation/atoms/input/hooks/useInputState.js.map +1 -0
- package/lib/presentation/atoms/input/styles/inputStyles.d.ts +13 -0
- package/lib/presentation/atoms/input/styles/inputStyles.d.ts.map +1 -0
- package/lib/presentation/atoms/input/styles/inputStyles.js +59 -0
- package/lib/presentation/atoms/input/styles/inputStyles.js.map +1 -0
- package/lib/presentation/atoms/input/types/index.d.ts +24 -0
- package/lib/presentation/atoms/input/types/index.d.ts.map +1 -0
- package/lib/presentation/atoms/input/types/index.js +2 -0
- package/lib/presentation/atoms/input/types/index.js.map +1 -0
- package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +96 -0
- package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +1 -0
- package/lib/presentation/atoms/picker/styles/pickerStyles.js +177 -0
- package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +1 -0
- package/lib/presentation/atoms/picker/types/index.d.ts +38 -0
- package/lib/presentation/atoms/picker/types/index.d.ts.map +1 -0
- package/lib/presentation/atoms/picker/types/index.js +2 -0
- package/lib/presentation/atoms/picker/types/index.js.map +1 -0
- package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts +36 -0
- package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts.map +1 -0
- package/lib/presentation/atoms/touchable/styles/touchableStyles.js +62 -0
- package/lib/presentation/atoms/touchable/styles/touchableStyles.js.map +1 -0
- package/lib/presentation/atoms/touchable/types/index.d.ts +140 -0
- package/lib/presentation/atoms/touchable/types/index.d.ts.map +1 -0
- package/lib/presentation/atoms/touchable/types/index.js +2 -0
- package/lib/presentation/atoms/touchable/types/index.js.map +1 -0
- package/lib/presentation/hooks/useAppDesignTokens.d.ts +34 -0
- package/lib/presentation/hooks/useAppDesignTokens.d.ts.map +1 -0
- package/lib/presentation/hooks/useAppDesignTokens.js +39 -0
- package/lib/presentation/hooks/useAppDesignTokens.js.map +1 -0
- package/lib/presentation/hooks/useResponsive.d.ts +80 -0
- package/lib/presentation/hooks/useResponsive.d.ts.map +1 -0
- package/lib/presentation/hooks/useResponsive.js +82 -0
- package/lib/presentation/hooks/useResponsive.js.map +1 -0
- package/lib/presentation/loading/index.d.ts +23 -0
- package/lib/presentation/loading/index.d.ts.map +1 -0
- package/lib/presentation/loading/index.js +26 -0
- package/lib/presentation/loading/index.js.map +1 -0
- package/lib/presentation/loading/presentation/components/LoadingSpinner.d.ts +28 -0
- package/lib/presentation/loading/presentation/components/LoadingSpinner.d.ts.map +1 -0
- package/lib/presentation/loading/presentation/components/LoadingSpinner.js +77 -0
- package/lib/presentation/loading/presentation/components/LoadingSpinner.js.map +1 -0
- package/lib/presentation/loading/presentation/components/LoadingState.d.ts +39 -0
- package/lib/presentation/loading/presentation/components/LoadingState.d.ts.map +1 -0
- package/lib/presentation/loading/presentation/components/LoadingState.js +123 -0
- package/lib/presentation/loading/presentation/components/LoadingState.js.map +1 -0
- package/lib/presentation/loading/presentation/hooks/useLoading.d.ts +50 -0
- package/lib/presentation/loading/presentation/hooks/useLoading.d.ts.map +1 -0
- package/lib/presentation/loading/presentation/hooks/useLoading.js +49 -0
- package/lib/presentation/loading/presentation/hooks/useLoading.js.map +1 -0
- package/lib/presentation/molecules/AtomicConfirmationModal.d.ts +73 -0
- package/lib/presentation/molecules/AtomicConfirmationModal.d.ts.map +1 -0
- package/lib/presentation/molecules/AtomicConfirmationModal.js +172 -0
- package/lib/presentation/molecules/AtomicConfirmationModal.js.map +1 -0
- package/lib/presentation/molecules/EmptyState.d.ts +41 -0
- package/lib/presentation/molecules/EmptyState.d.ts.map +1 -0
- package/lib/presentation/molecules/EmptyState.js +68 -0
- package/lib/presentation/molecules/EmptyState.js.map +1 -0
- package/lib/presentation/molecules/FormField.d.ts +22 -0
- package/lib/presentation/molecules/FormField.d.ts.map +1 -0
- package/lib/presentation/molecules/FormField.js +76 -0
- package/lib/presentation/molecules/FormField.js.map +1 -0
- package/lib/presentation/molecules/GridContainer.d.ts +40 -0
- package/lib/presentation/molecules/GridContainer.d.ts.map +1 -0
- package/lib/presentation/molecules/GridContainer.js +77 -0
- package/lib/presentation/molecules/GridContainer.js.map +1 -0
- package/lib/presentation/molecules/IconContainer.d.ts +29 -0
- package/lib/presentation/molecules/IconContainer.d.ts.map +1 -0
- package/lib/presentation/molecules/IconContainer.js +60 -0
- package/lib/presentation/molecules/IconContainer.js.map +1 -0
- package/lib/presentation/molecules/LanguageSwitcher.d.ts +10 -0
- package/lib/presentation/molecules/LanguageSwitcher.d.ts.map +1 -0
- package/lib/presentation/molecules/LanguageSwitcher.js +24 -0
- package/lib/presentation/molecules/LanguageSwitcher.js.map +1 -0
- package/lib/presentation/molecules/ListItem.d.ts +5 -0
- package/lib/presentation/molecules/ListItem.d.ts.map +1 -0
- package/lib/presentation/molecules/ListItem.js +24 -0
- package/lib/presentation/molecules/ListItem.js.map +1 -0
- package/lib/presentation/molecules/ScreenHeader.d.ts +55 -0
- package/lib/presentation/molecules/ScreenHeader.d.ts.map +1 -0
- package/lib/presentation/molecules/ScreenHeader.js +94 -0
- package/lib/presentation/molecules/ScreenHeader.js.map +1 -0
- package/lib/presentation/molecules/SearchBar.d.ts +18 -0
- package/lib/presentation/molecules/SearchBar.d.ts.map +1 -0
- package/lib/presentation/molecules/SearchBar.js +47 -0
- package/lib/presentation/molecules/SearchBar.js.map +1 -0
- package/lib/presentation/molecules/SectionCard.d.ts +25 -0
- package/lib/presentation/molecules/SectionCard.d.ts.map +1 -0
- package/lib/presentation/molecules/SectionCard.js +47 -0
- package/lib/presentation/molecules/SectionCard.js.map +1 -0
- package/lib/presentation/molecules/SectionContainer.d.ts +33 -0
- package/lib/presentation/molecules/SectionContainer.d.ts.map +1 -0
- package/lib/presentation/molecules/SectionContainer.js +64 -0
- package/lib/presentation/molecules/SectionContainer.js.map +1 -0
- package/lib/presentation/molecules/SectionHeader.d.ts +37 -0
- package/lib/presentation/molecules/SectionHeader.d.ts.map +1 -0
- package/lib/presentation/molecules/SectionHeader.js +73 -0
- package/lib/presentation/molecules/SectionHeader.js.map +1 -0
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +50 -0
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +1 -0
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js +115 -0
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js.map +1 -0
- package/lib/presentation/molecules/confirmation-modal/types/index.d.ts +88 -0
- package/lib/presentation/molecules/confirmation-modal/types/index.d.ts.map +1 -0
- package/lib/presentation/molecules/confirmation-modal/types/index.js +7 -0
- package/lib/presentation/molecules/confirmation-modal/types/index.js.map +1 -0
- package/lib/presentation/molecules/index.d.ts +28 -0
- package/lib/presentation/molecules/index.d.ts.map +1 -0
- package/lib/presentation/molecules/index.js +18 -0
- package/lib/presentation/molecules/index.js.map +1 -0
- package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts +11 -0
- package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts.map +1 -0
- package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js +6 -0
- package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js.map +1 -0
- package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts +5 -0
- package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts.map +1 -0
- package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js +12 -0
- package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js.map +1 -0
- package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts +12 -0
- package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts.map +1 -0
- package/lib/presentation/molecules/listitem/styles/listItemStyles.js +15 -0
- package/lib/presentation/molecules/listitem/styles/listItemStyles.js.map +1 -0
- package/lib/presentation/molecules/listitem/types/index.d.ts +17 -0
- package/lib/presentation/molecules/listitem/types/index.d.ts.map +1 -0
- package/lib/presentation/molecules/listitem/types/index.js +2 -0
- package/lib/presentation/molecules/listitem/types/index.js.map +1 -0
- package/lib/presentation/organisms/AppHeader.d.ts +30 -0
- package/lib/presentation/organisms/AppHeader.d.ts.map +1 -0
- package/lib/presentation/organisms/AppHeader.js +78 -0
- package/lib/presentation/organisms/AppHeader.js.map +1 -0
- package/lib/presentation/organisms/FormContainer.d.ts +76 -0
- package/lib/presentation/organisms/FormContainer.d.ts.map +1 -0
- package/lib/presentation/organisms/FormContainer.js +127 -0
- package/lib/presentation/organisms/FormContainer.js.map +1 -0
- package/lib/presentation/organisms/ScreenLayout.d.ts +99 -0
- package/lib/presentation/organisms/ScreenLayout.d.ts.map +1 -0
- package/lib/presentation/organisms/ScreenLayout.js +78 -0
- package/lib/presentation/organisms/ScreenLayout.js.map +1 -0
- package/lib/presentation/organisms/index.d.ts +16 -0
- package/lib/presentation/organisms/index.d.ts.map +1 -0
- package/lib/presentation/organisms/index.js +14 -0
- package/lib/presentation/organisms/index.js.map +1 -0
- package/lib/presentation/tokens/AppDesignTokens.d.ts +14 -0
- package/lib/presentation/tokens/AppDesignTokens.d.ts.map +1 -0
- package/lib/presentation/tokens/AppDesignTokens.js +23 -0
- package/lib/presentation/tokens/AppDesignTokens.js.map +1 -0
- package/lib/presentation/tokens/commonStyles.d.ts +122 -0
- package/lib/presentation/tokens/commonStyles.d.ts.map +1 -0
- package/lib/presentation/tokens/commonStyles.js +220 -0
- package/lib/presentation/tokens/commonStyles.js.map +1 -0
- package/lib/presentation/tokens/core/BaseTokens.d.ts +337 -0
- package/lib/presentation/tokens/core/BaseTokens.d.ts.map +1 -0
- package/lib/presentation/tokens/core/BaseTokens.js +322 -0
- package/lib/presentation/tokens/core/BaseTokens.js.map +1 -0
- package/lib/presentation/tokens/core/ColorPalette.d.ts +216 -0
- package/lib/presentation/tokens/core/ColorPalette.d.ts.map +1 -0
- package/lib/presentation/tokens/core/ColorPalette.js +330 -0
- package/lib/presentation/tokens/core/ColorPalette.js.map +1 -0
- package/lib/presentation/tokens/core/TokenFactory.d.ts +229 -0
- package/lib/presentation/tokens/core/TokenFactory.d.ts.map +1 -0
- package/lib/presentation/tokens/core/TokenFactory.js +87 -0
- package/lib/presentation/tokens/core/TokenFactory.js.map +1 -0
- package/lib/presentation/utils/platformConstants.d.ts +100 -0
- package/lib/presentation/utils/platformConstants.d.ts.map +1 -0
- package/lib/presentation/utils/platformConstants.js +114 -0
- package/lib/presentation/utils/platformConstants.js.map +1 -0
- package/lib/presentation/utils/responsive.d.ts +218 -0
- package/lib/presentation/utils/responsive.d.ts.map +1 -0
- package/lib/presentation/utils/responsive.js +452 -0
- package/lib/presentation/utils/responsive.js.map +1 -0
- package/lib/presentation/utils/variants/compound.d.ts +10 -0
- package/lib/presentation/utils/variants/compound.d.ts.map +1 -0
- package/lib/presentation/utils/variants/compound.js +16 -0
- package/lib/presentation/utils/variants/compound.js.map +1 -0
- package/lib/presentation/utils/variants/core.d.ts +15 -0
- package/lib/presentation/utils/variants/core.d.ts.map +1 -0
- package/lib/presentation/utils/variants/core.js +23 -0
- package/lib/presentation/utils/variants/core.js.map +1 -0
- package/lib/presentation/utils/variants/helpers.d.ts +5 -0
- package/lib/presentation/utils/variants/helpers.d.ts.map +1 -0
- package/lib/presentation/utils/variants/helpers.js +10 -0
- package/lib/presentation/utils/variants/helpers.js.map +1 -0
- package/lib/presentation/utils/variants.d.ts +4 -0
- package/lib/presentation/utils/variants.d.ts.map +1 -0
- package/lib/presentation/utils/variants.js +4 -0
- package/lib/presentation/utils/variants.js.map +1 -0
- package/package.json +40 -4
- package/src/domains/icons/domain/interfaces/IIconAdapter.ts +5 -3
- package/src/domains/icons/infrastructure/adapters/LucideAdapter.ts +1 -1
- package/src/presentation/molecules/AtomicConfirmationModal.tsx +1 -1
- package/src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts +1 -2
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { StyleProp, ViewStyle, GestureResponderEvent } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* Touchable feedback variant
|
|
4
|
+
* - opacity: iOS-style opacity feedback (default)
|
|
5
|
+
* - highlight: Android-style highlight feedback
|
|
6
|
+
* - ripple: Material Design ripple effect (Android only)
|
|
7
|
+
* - none: No visual feedback
|
|
8
|
+
*/
|
|
9
|
+
export type TouchableFeedback = 'opacity' | 'highlight' | 'ripple' | 'none';
|
|
10
|
+
/**
|
|
11
|
+
* Feedback strength for visual feedback
|
|
12
|
+
* - subtle: Light feedback (0.8 opacity)
|
|
13
|
+
* - normal: Standard feedback (0.6 opacity)
|
|
14
|
+
* - strong: Strong feedback (0.4 opacity)
|
|
15
|
+
*/
|
|
16
|
+
export type FeedbackStrength = 'subtle' | 'normal' | 'strong';
|
|
17
|
+
/**
|
|
18
|
+
* Hit slop configuration
|
|
19
|
+
* Extends the touchable area beyond the component's bounds
|
|
20
|
+
*/
|
|
21
|
+
export interface HitSlop {
|
|
22
|
+
top?: number;
|
|
23
|
+
bottom?: number;
|
|
24
|
+
left?: number;
|
|
25
|
+
right?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* AtomicTouchable component props
|
|
29
|
+
*
|
|
30
|
+
* A unified touchable wrapper with consistent behavior across platforms.
|
|
31
|
+
* Uses React Native's Pressable API for modern, accessible touch handling.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <AtomicTouchable
|
|
36
|
+
* onPress={handlePress}
|
|
37
|
+
* feedback="opacity"
|
|
38
|
+
* strength="normal"
|
|
39
|
+
* disabled={isLoading}
|
|
40
|
+
* loading={isLoading}
|
|
41
|
+
* hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}
|
|
42
|
+
* style={styles.touchable}
|
|
43
|
+
* >
|
|
44
|
+
* <AtomicText>Press Me</AtomicText>
|
|
45
|
+
* </AtomicTouchable>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export interface AtomicTouchableProps {
|
|
49
|
+
/**
|
|
50
|
+
* Content to render inside the touchable
|
|
51
|
+
*/
|
|
52
|
+
children: React.ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* Callback fired when the touchable is pressed
|
|
55
|
+
*/
|
|
56
|
+
onPress?: (event: GestureResponderEvent) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Callback fired when press starts (finger down)
|
|
59
|
+
*/
|
|
60
|
+
onPressIn?: (event: GestureResponderEvent) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Callback fired when press ends (finger up)
|
|
63
|
+
*/
|
|
64
|
+
onPressOut?: (event: GestureResponderEvent) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Callback fired on long press (500ms default)
|
|
67
|
+
*/
|
|
68
|
+
onLongPress?: (event: GestureResponderEvent) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Feedback variant
|
|
71
|
+
* @default 'opacity'
|
|
72
|
+
*/
|
|
73
|
+
feedback?: TouchableFeedback;
|
|
74
|
+
/**
|
|
75
|
+
* Feedback strength
|
|
76
|
+
* @default 'normal'
|
|
77
|
+
*/
|
|
78
|
+
strength?: FeedbackStrength;
|
|
79
|
+
/**
|
|
80
|
+
* Disable the touchable
|
|
81
|
+
* @default false
|
|
82
|
+
*/
|
|
83
|
+
disabled?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Show loading indicator (disables touch)
|
|
86
|
+
* @default false
|
|
87
|
+
*/
|
|
88
|
+
loading?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Hit slop - extends touchable area
|
|
91
|
+
* Useful for small touch targets
|
|
92
|
+
* @default undefined
|
|
93
|
+
*/
|
|
94
|
+
hitSlop?: HitSlop | number;
|
|
95
|
+
/**
|
|
96
|
+
* Custom style for the touchable container
|
|
97
|
+
*/
|
|
98
|
+
style?: StyleProp<ViewStyle>;
|
|
99
|
+
/**
|
|
100
|
+
* Style applied when pressed
|
|
101
|
+
*/
|
|
102
|
+
pressedStyle?: StyleProp<ViewStyle>;
|
|
103
|
+
/**
|
|
104
|
+
* Style applied when disabled
|
|
105
|
+
*/
|
|
106
|
+
disabledStyle?: StyleProp<ViewStyle>;
|
|
107
|
+
/**
|
|
108
|
+
* Accessibility label for screen readers
|
|
109
|
+
*/
|
|
110
|
+
accessibilityLabel?: string;
|
|
111
|
+
/**
|
|
112
|
+
* Accessibility hint for screen readers
|
|
113
|
+
*/
|
|
114
|
+
accessibilityHint?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Accessibility role
|
|
117
|
+
* @default 'button'
|
|
118
|
+
*/
|
|
119
|
+
accessibilityRole?: 'button' | 'link' | 'none';
|
|
120
|
+
/**
|
|
121
|
+
* Test ID for E2E testing
|
|
122
|
+
*/
|
|
123
|
+
testID?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Delay before onLongPress is triggered (ms)
|
|
126
|
+
* @default 500
|
|
127
|
+
*/
|
|
128
|
+
delayLongPress?: number;
|
|
129
|
+
/**
|
|
130
|
+
* Ripple color (Android only, for 'ripple' feedback)
|
|
131
|
+
* @default theme primary color with alpha
|
|
132
|
+
*/
|
|
133
|
+
rippleColor?: string;
|
|
134
|
+
/**
|
|
135
|
+
* Border radius for ripple effect (Android only)
|
|
136
|
+
* @default 0
|
|
137
|
+
*/
|
|
138
|
+
rippleRadius?: number;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/atoms/touchable/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAEjD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAEnD;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAErD;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAErC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAE/C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/presentation/atoms/touchable/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useAppDesignTokens Hook - Theme-Aware Design Tokens
|
|
3
|
+
*
|
|
4
|
+
* ✅ Automatically reads theme from global store
|
|
5
|
+
* ✅ No parameters needed - fully automatic!
|
|
6
|
+
* ✅ Returns tokens for current theme (light/dark)
|
|
7
|
+
* ✅ Single source of truth
|
|
8
|
+
*
|
|
9
|
+
* @example Usage (fully automatic theme-aware)
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { useAppDesignTokens } from '@umituz/react-native-design-system';
|
|
12
|
+
*
|
|
13
|
+
* const MyComponent = () => {
|
|
14
|
+
* const tokens = useAppDesignTokens(); // Automatically uses current theme!
|
|
15
|
+
* return (
|
|
16
|
+
* <View style={{
|
|
17
|
+
* backgroundColor: tokens.colors.primary,
|
|
18
|
+
* padding: tokens.spacing.md
|
|
19
|
+
* }}>
|
|
20
|
+
* <Text style={tokens.typography.bodyLarge}>Hello!</Text>
|
|
21
|
+
* </View>
|
|
22
|
+
* );
|
|
23
|
+
* };
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* How it works:
|
|
27
|
+
* - Reads themeMode from global store (useDesignSystemTheme)
|
|
28
|
+
* - App's theme store syncs to global store automatically
|
|
29
|
+
* - All components get correct tokens without prop drilling
|
|
30
|
+
* - Change theme once, everything updates!
|
|
31
|
+
*/
|
|
32
|
+
import { type DesignTokens } from '../tokens/core/TokenFactory';
|
|
33
|
+
export declare const useAppDesignTokens: () => DesignTokens;
|
|
34
|
+
//# sourceMappingURL=useAppDesignTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAppDesignTokens.d.ts","sourceRoot":"","sources":["../../../src/presentation/hooks/useAppDesignTokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGpF,eAAO,MAAM,kBAAkB,QAAO,YAGrC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useAppDesignTokens Hook - Theme-Aware Design Tokens
|
|
3
|
+
*
|
|
4
|
+
* ✅ Automatically reads theme from global store
|
|
5
|
+
* ✅ No parameters needed - fully automatic!
|
|
6
|
+
* ✅ Returns tokens for current theme (light/dark)
|
|
7
|
+
* ✅ Single source of truth
|
|
8
|
+
*
|
|
9
|
+
* @example Usage (fully automatic theme-aware)
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { useAppDesignTokens } from '@umituz/react-native-design-system';
|
|
12
|
+
*
|
|
13
|
+
* const MyComponent = () => {
|
|
14
|
+
* const tokens = useAppDesignTokens(); // Automatically uses current theme!
|
|
15
|
+
* return (
|
|
16
|
+
* <View style={{
|
|
17
|
+
* backgroundColor: tokens.colors.primary,
|
|
18
|
+
* padding: tokens.spacing.md
|
|
19
|
+
* }}>
|
|
20
|
+
* <Text style={tokens.typography.bodyLarge}>Hello!</Text>
|
|
21
|
+
* </View>
|
|
22
|
+
* );
|
|
23
|
+
* };
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* How it works:
|
|
27
|
+
* - Reads themeMode from global store (useDesignSystemTheme)
|
|
28
|
+
* - App's theme store syncs to global store automatically
|
|
29
|
+
* - All components get correct tokens without prop drilling
|
|
30
|
+
* - Change theme once, everything updates!
|
|
31
|
+
*/
|
|
32
|
+
import { useMemo } from 'react';
|
|
33
|
+
import { createDesignTokens } from '../tokens/core/TokenFactory';
|
|
34
|
+
import { useDesignSystemTheme } from '../../infrastructure/theme/globalThemeStore';
|
|
35
|
+
export const useAppDesignTokens = () => {
|
|
36
|
+
const { themeMode } = useDesignSystemTheme();
|
|
37
|
+
return useMemo(() => createDesignTokens(themeMode), [themeMode]);
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useAppDesignTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAppDesignTokens.js","sourceRoot":"","sources":["../../../src/presentation/hooks/useAppDesignTokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAEnF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAiB,EAAE;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC7C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useResponsive Hook
|
|
3
|
+
*
|
|
4
|
+
* React Hook for accessing responsive utilities with real-time dimension updates
|
|
5
|
+
* and safe area insets integration.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```tsx
|
|
9
|
+
* const { logoSize, inputHeight, fabPosition, isSmallDevice } = useResponsive();
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { DeviceType } from '../utils/responsive';
|
|
13
|
+
export interface UseResponsiveReturn {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
isSmallDevice: boolean;
|
|
17
|
+
isTabletDevice: boolean;
|
|
18
|
+
isLandscapeMode: boolean;
|
|
19
|
+
deviceType: DeviceType;
|
|
20
|
+
insets: {
|
|
21
|
+
top: number;
|
|
22
|
+
bottom: number;
|
|
23
|
+
left: number;
|
|
24
|
+
right: number;
|
|
25
|
+
};
|
|
26
|
+
logoSize: number;
|
|
27
|
+
inputHeight: number;
|
|
28
|
+
iconContainerSize: number;
|
|
29
|
+
maxContentWidth: number;
|
|
30
|
+
minTouchTarget: number;
|
|
31
|
+
horizontalPadding: number;
|
|
32
|
+
bottomPosition: number;
|
|
33
|
+
fabPosition: {
|
|
34
|
+
bottom: number;
|
|
35
|
+
right: number;
|
|
36
|
+
};
|
|
37
|
+
modalMaxHeight: string;
|
|
38
|
+
modalMinHeight: number;
|
|
39
|
+
gridColumns: number;
|
|
40
|
+
spacingMultiplier: number;
|
|
41
|
+
onboardingIconMarginTop: number;
|
|
42
|
+
onboardingIconMarginBottom: number;
|
|
43
|
+
onboardingIconSize: number;
|
|
44
|
+
onboardingTitleMarginBottom: number;
|
|
45
|
+
onboardingTextPadding: number;
|
|
46
|
+
onboardingDescriptionMarginTop: number;
|
|
47
|
+
formBottomPadding: number;
|
|
48
|
+
inputIconSize: number;
|
|
49
|
+
formContentWidth: number | undefined;
|
|
50
|
+
formElementSpacing: number;
|
|
51
|
+
getLogoSize: (baseSize?: number) => number;
|
|
52
|
+
getInputHeight: (baseHeight?: number) => number;
|
|
53
|
+
getIconSize: (baseSize?: number) => number;
|
|
54
|
+
getMaxWidth: (baseWidth?: number) => number;
|
|
55
|
+
getFontSize: (baseFontSize: number) => number;
|
|
56
|
+
getGridCols: (mobile?: number, tablet?: number) => number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Hook for responsive design utilities
|
|
60
|
+
* Automatically updates when screen dimensions or orientation changes
|
|
61
|
+
*/
|
|
62
|
+
export declare const useResponsive: () => UseResponsiveReturn;
|
|
63
|
+
/**
|
|
64
|
+
* Shorthand hook for just responsive sizes
|
|
65
|
+
*/
|
|
66
|
+
export declare const useResponsiveSizes: () => {
|
|
67
|
+
logoSize: number;
|
|
68
|
+
inputHeight: number;
|
|
69
|
+
iconContainerSize: number;
|
|
70
|
+
maxContentWidth: number;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Shorthand hook for just device type checks
|
|
74
|
+
*/
|
|
75
|
+
export declare const useDeviceType: () => {
|
|
76
|
+
isSmallDevice: boolean;
|
|
77
|
+
isTabletDevice: boolean;
|
|
78
|
+
deviceType: DeviceType;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=useResponsive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResponsive.d.ts","sourceRoot":"","sources":["../../../src/presentation/hooks/useResponsive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EA4BL,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IAGvB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IAGvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAG/C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B,EAAE,MAAM,CAAC;IACpC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,8BAA8B,EAAE,MAAM,CAAC;IAGvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAG3B,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,cAAc,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3D;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAO,mBAwDhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;CAG9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;;;CAGzB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useResponsive Hook
|
|
3
|
+
*
|
|
4
|
+
* React Hook for accessing responsive utilities with real-time dimension updates
|
|
5
|
+
* and safe area insets integration.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```tsx
|
|
9
|
+
* const { logoSize, inputHeight, fabPosition, isSmallDevice } = useResponsive();
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
import { useWindowDimensions } from 'react-native';
|
|
13
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
14
|
+
import { getResponsiveLogoSize, getResponsiveInputHeight, getResponsiveHorizontalPadding, getResponsiveBottomPosition, getResponsiveFABPosition, getResponsiveModalMaxHeight, getResponsiveMinModalHeight, getResponsiveIconContainerSize, getResponsiveGridColumns, getResponsiveMaxWidth, getResponsiveFontSize, isSmallPhone, isTablet, isLandscape, getDeviceType, getMinTouchTargetSize, getSpacingMultiplier, getOnboardingIconMarginTop, getOnboardingIconMarginBottom, getOnboardingTitleMarginBottom, getOnboardingTextPadding, getOnboardingDescriptionMarginTop, getOnboardingIconSize, getFormBottomPadding, getInputIconSize, getFormContentWidth, getFormElementSpacing, } from '../utils/responsive';
|
|
15
|
+
/**
|
|
16
|
+
* Hook for responsive design utilities
|
|
17
|
+
* Automatically updates when screen dimensions or orientation changes
|
|
18
|
+
*/
|
|
19
|
+
export const useResponsive = () => {
|
|
20
|
+
const { width, height } = useWindowDimensions();
|
|
21
|
+
const insets = useSafeAreaInsets();
|
|
22
|
+
return {
|
|
23
|
+
// Device info
|
|
24
|
+
width,
|
|
25
|
+
height,
|
|
26
|
+
isSmallDevice: isSmallPhone(),
|
|
27
|
+
isTabletDevice: isTablet(),
|
|
28
|
+
isLandscapeMode: isLandscape(),
|
|
29
|
+
deviceType: getDeviceType(),
|
|
30
|
+
// Safe area insets
|
|
31
|
+
insets,
|
|
32
|
+
// Responsive sizes (with default values)
|
|
33
|
+
logoSize: getResponsiveLogoSize(),
|
|
34
|
+
inputHeight: getResponsiveInputHeight(),
|
|
35
|
+
iconContainerSize: getResponsiveIconContainerSize(),
|
|
36
|
+
maxContentWidth: getResponsiveMaxWidth(),
|
|
37
|
+
minTouchTarget: getMinTouchTargetSize(),
|
|
38
|
+
// Responsive positioning
|
|
39
|
+
horizontalPadding: getResponsiveHorizontalPadding(16, insets),
|
|
40
|
+
bottomPosition: getResponsiveBottomPosition(32, insets),
|
|
41
|
+
fabPosition: getResponsiveFABPosition(insets),
|
|
42
|
+
// Responsive layout
|
|
43
|
+
modalMaxHeight: getResponsiveModalMaxHeight(),
|
|
44
|
+
modalMinHeight: getResponsiveMinModalHeight(),
|
|
45
|
+
gridColumns: getResponsiveGridColumns(),
|
|
46
|
+
spacingMultiplier: getSpacingMultiplier(),
|
|
47
|
+
// Onboarding-specific spacing (pre-calculated, no component calculations)
|
|
48
|
+
onboardingIconMarginTop: getOnboardingIconMarginTop(),
|
|
49
|
+
onboardingIconMarginBottom: getOnboardingIconMarginBottom(),
|
|
50
|
+
onboardingIconSize: getOnboardingIconSize(),
|
|
51
|
+
onboardingTitleMarginBottom: getOnboardingTitleMarginBottom(),
|
|
52
|
+
onboardingTextPadding: getOnboardingTextPadding(),
|
|
53
|
+
onboardingDescriptionMarginTop: getOnboardingDescriptionMarginTop(),
|
|
54
|
+
// Form-specific spacing (pre-calculated, universal)
|
|
55
|
+
formBottomPadding: getFormBottomPadding(insets.bottom),
|
|
56
|
+
inputIconSize: getInputIconSize(),
|
|
57
|
+
formContentWidth: getFormContentWidth(),
|
|
58
|
+
formElementSpacing: getFormElementSpacing(),
|
|
59
|
+
// Utility functions (allow custom base values)
|
|
60
|
+
getLogoSize: (baseSize) => getResponsiveLogoSize(baseSize),
|
|
61
|
+
getInputHeight: (baseHeight) => getResponsiveInputHeight(baseHeight),
|
|
62
|
+
getIconSize: (baseSize) => getResponsiveIconContainerSize(baseSize),
|
|
63
|
+
getMaxWidth: (baseWidth) => getResponsiveMaxWidth(baseWidth),
|
|
64
|
+
getFontSize: (baseFontSize) => getResponsiveFontSize(baseFontSize),
|
|
65
|
+
getGridCols: (mobile, tablet) => getResponsiveGridColumns(mobile, tablet),
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Shorthand hook for just responsive sizes
|
|
70
|
+
*/
|
|
71
|
+
export const useResponsiveSizes = () => {
|
|
72
|
+
const { logoSize, inputHeight, iconContainerSize, maxContentWidth } = useResponsive();
|
|
73
|
+
return { logoSize, inputHeight, iconContainerSize, maxContentWidth };
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Shorthand hook for just device type checks
|
|
77
|
+
*/
|
|
78
|
+
export const useDeviceType = () => {
|
|
79
|
+
const { isSmallDevice, isTabletDevice, deviceType } = useResponsive();
|
|
80
|
+
return { isSmallDevice, isTabletDevice, deviceType };
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=useResponsive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResponsive.js","sourceRoot":"","sources":["../../../src/presentation/hooks/useResponsive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loading Domain - Public API
|
|
3
|
+
*
|
|
4
|
+
* Domain-Driven Design (DDD) Architecture
|
|
5
|
+
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
6
|
+
*
|
|
7
|
+
* This is the SINGLE SOURCE OF TRUTH for the Loading domain.
|
|
8
|
+
* ALL imports from this domain MUST go through this file.
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* - presentation/components: UI components (LoadingState, LoadingSpinner)
|
|
12
|
+
* - presentation/hooks: React hooks (useLoading)
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* import { LoadingState, LoadingSpinner, useLoading } from '@domains/design-system';
|
|
16
|
+
*/
|
|
17
|
+
export { LoadingState } from './presentation/components/LoadingState';
|
|
18
|
+
export type { LoadingStateProps, LoadingStateSize } from './presentation/components/LoadingState';
|
|
19
|
+
export { LoadingSpinner } from './presentation/components/LoadingSpinner';
|
|
20
|
+
export type { LoadingSpinnerProps, LoadingSpinnerSize, LoadingSpinnerColor, } from './presentation/components/LoadingSpinner';
|
|
21
|
+
export { useLoading } from './presentation/hooks/useLoading';
|
|
22
|
+
export type { LoadingConfig, UseLoadingReturn, } from './presentation/hooks/useLoading';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/loading/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAElG,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAMlD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loading Domain - Public API
|
|
3
|
+
*
|
|
4
|
+
* Domain-Driven Design (DDD) Architecture
|
|
5
|
+
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
6
|
+
*
|
|
7
|
+
* This is the SINGLE SOURCE OF TRUTH for the Loading domain.
|
|
8
|
+
* ALL imports from this domain MUST go through this file.
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* - presentation/components: UI components (LoadingState, LoadingSpinner)
|
|
12
|
+
* - presentation/hooks: React hooks (useLoading)
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* import { LoadingState, LoadingSpinner, useLoading } from '@domains/design-system';
|
|
16
|
+
*/
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// PRESENTATION LAYER - Components
|
|
19
|
+
// =============================================================================
|
|
20
|
+
export { LoadingState } from './presentation/components/LoadingState';
|
|
21
|
+
export { LoadingSpinner } from './presentation/components/LoadingSpinner';
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// PRESENTATION LAYER - Hooks
|
|
24
|
+
// =============================================================================
|
|
25
|
+
export { useLoading } from './presentation/hooks/useLoading';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/presentation/loading/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAO1E,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoadingSpinner - Theme-Aware Activity Indicator
|
|
3
|
+
*
|
|
4
|
+
* Refactored from AtomicLoadingSpinner - now part of Loading domain
|
|
5
|
+
* Uses central useAppDesignTokens() hook for automatic theme switching
|
|
6
|
+
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - ✅ AUTOMATIC theme switching via useAppDesignTokens()
|
|
10
|
+
* - ✅ Multiple size variants (small, medium, large)
|
|
11
|
+
* - ✅ Dynamic color customization
|
|
12
|
+
* - ✅ Overlay support
|
|
13
|
+
* - ✅ Message display
|
|
14
|
+
*/
|
|
15
|
+
import React from 'react';
|
|
16
|
+
import { ViewStyle } from 'react-native';
|
|
17
|
+
export type LoadingSpinnerSize = 'small' | 'medium' | 'large';
|
|
18
|
+
export type LoadingSpinnerColor = 'primary' | 'secondary' | 'white';
|
|
19
|
+
export interface LoadingSpinnerProps {
|
|
20
|
+
size?: LoadingSpinnerSize;
|
|
21
|
+
color?: LoadingSpinnerColor;
|
|
22
|
+
message?: string;
|
|
23
|
+
overlay?: boolean;
|
|
24
|
+
style?: ViewStyle;
|
|
25
|
+
}
|
|
26
|
+
export declare const LoadingSpinner: React.FC<LoadingSpinnerProps>;
|
|
27
|
+
export default LoadingSpinner;
|
|
28
|
+
//# sourceMappingURL=LoadingSpinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingSpinner.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/loading/presentation/components/LoadingSpinner.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA2B,SAAS,EAAE,MAAM,cAAc,CAAC;AASlE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAgBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+DxD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoadingSpinner - Theme-Aware Activity Indicator
|
|
3
|
+
*
|
|
4
|
+
* Refactored from AtomicLoadingSpinner - now part of Loading domain
|
|
5
|
+
* Uses central useAppDesignTokens() hook for automatic theme switching
|
|
6
|
+
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - ✅ AUTOMATIC theme switching via useAppDesignTokens()
|
|
10
|
+
* - ✅ Multiple size variants (small, medium, large)
|
|
11
|
+
* - ✅ Dynamic color customization
|
|
12
|
+
* - ✅ Overlay support
|
|
13
|
+
* - ✅ Message display
|
|
14
|
+
*/
|
|
15
|
+
import React from 'react';
|
|
16
|
+
import { View, ActivityIndicator } from 'react-native';
|
|
17
|
+
import { useAppDesignTokens } from '../../../hooks/useAppDesignTokens';
|
|
18
|
+
import { withAlpha } from '../../../tokens/AppDesignTokens';
|
|
19
|
+
import { AtomicText } from '../../../atoms/AtomicText';
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// SIZE VARIANTS
|
|
22
|
+
// =============================================================================
|
|
23
|
+
const sizeVariants = {
|
|
24
|
+
small: 'small',
|
|
25
|
+
medium: 'large',
|
|
26
|
+
large: 'large',
|
|
27
|
+
};
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// COMPONENT IMPLEMENTATION
|
|
30
|
+
// =============================================================================
|
|
31
|
+
export const LoadingSpinner = ({ size = 'medium', color = 'primary', message, overlay = false, style, }) => {
|
|
32
|
+
// ✅ DYNAMIC tokens from central hook
|
|
33
|
+
const tokens = useAppDesignTokens();
|
|
34
|
+
const spinnerSize = sizeVariants[size];
|
|
35
|
+
/**
|
|
36
|
+
* Get spinner color from dynamic theme
|
|
37
|
+
* ✅ Automatically updates when theme changes
|
|
38
|
+
*/
|
|
39
|
+
const getSpinnerColor = () => {
|
|
40
|
+
switch (color) {
|
|
41
|
+
case 'primary':
|
|
42
|
+
return tokens.colors.primary;
|
|
43
|
+
case 'secondary':
|
|
44
|
+
return tokens.colors.secondary;
|
|
45
|
+
case 'white':
|
|
46
|
+
return tokens.colors.textInverse;
|
|
47
|
+
default:
|
|
48
|
+
return tokens.colors.primary;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const spinnerColor = getSpinnerColor();
|
|
52
|
+
const containerStyle = overlay
|
|
53
|
+
? {
|
|
54
|
+
position: 'absolute',
|
|
55
|
+
top: 0,
|
|
56
|
+
left: 0,
|
|
57
|
+
right: 0,
|
|
58
|
+
bottom: 0,
|
|
59
|
+
backgroundColor: withAlpha(tokens.colors.black, 0.5),
|
|
60
|
+
justifyContent: 'center',
|
|
61
|
+
alignItems: 'center',
|
|
62
|
+
zIndex: 9999,
|
|
63
|
+
}
|
|
64
|
+
: {
|
|
65
|
+
justifyContent: 'center',
|
|
66
|
+
alignItems: 'center',
|
|
67
|
+
padding: tokens.spacing.lg,
|
|
68
|
+
};
|
|
69
|
+
return (<View style={[containerStyle, style]}>
|
|
70
|
+
<ActivityIndicator size={spinnerSize} color={spinnerColor}/>
|
|
71
|
+
{message && (<AtomicText type="bodyMedium" color={overlay ? 'inverse' : 'primary'} style={{ marginTop: tokens.spacing.md, textAlign: 'center' }}>
|
|
72
|
+
{message}
|
|
73
|
+
</AtomicText>)}
|
|
74
|
+
</View>);
|
|
75
|
+
};
|
|
76
|
+
export default LoadingSpinner;
|
|
77
|
+
//# sourceMappingURL=LoadingSpinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../../../../src/presentation/loading/presentation/components/LoadingSpinner.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAa,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAiBvD,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,YAAY,GAAkD;IAClE,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,SAAS,EACjB,OAAO,EACP,OAAO,GAAG,KAAK,EACf,KAAK,GACN,EAAE,EAAE;IACH,qCAAqC;IACrC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEvC;;;OAGG;IACH,MAAM,eAAe,GAAG,GAAW,EAAE;QACnC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS;gBACZ,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC/B,KAAK,WAAW;gBACd,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YACjC,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACnC;gBACE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,cAAc,GAAc,OAAO;QACvC,CAAC,CAAC;YACE,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YACpD,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,IAAI;SACb;QACH,CAAC,CAAC;YACE,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;SAC3B,CAAC;IAEN,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CACnC;MAAA,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAC1D;MAAA,CAAC,OAAO,IAAI,CACV,CAAC,UAAU,CACT,IAAI,CAAC,YAAY,CACjB,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CACvC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAE7D;UAAA,CAAC,OAAO,CACV;QAAA,EAAE,UAAU,CAAC,CACd,CACH;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoadingState - Dynamic Icon-Based Loading Component
|
|
3
|
+
*
|
|
4
|
+
* Universal loading component with configurable emoji/icon support
|
|
5
|
+
* Inspired by meditation_timer's breathing animation pattern
|
|
6
|
+
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - ✅ Dynamic emoji/icon per screen (🏠 Home, ⚙️ Settings, 💪 Workout, etc.)
|
|
10
|
+
* - ✅ Breathing animation effect (scale 1 → 1.15 → 1)
|
|
11
|
+
* - ✅ Size variants (small, medium, large)
|
|
12
|
+
* - ✅ Full screen or inline modes
|
|
13
|
+
* - ✅ Optional loading message
|
|
14
|
+
* - ✅ Theme-aware styling
|
|
15
|
+
*/
|
|
16
|
+
import React from 'react';
|
|
17
|
+
export type LoadingStateSize = 'small' | 'medium' | 'large';
|
|
18
|
+
export interface LoadingStateProps {
|
|
19
|
+
/**
|
|
20
|
+
* Emoji/icon to display (changes per screen context)
|
|
21
|
+
* Examples: 🏠 Home, ⚙️ Settings, 💪 Workout, 🧘 Meditation, 📊 Analytics
|
|
22
|
+
*/
|
|
23
|
+
icon?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Optional loading message
|
|
26
|
+
*/
|
|
27
|
+
message?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Size variant
|
|
30
|
+
*/
|
|
31
|
+
size?: LoadingStateSize;
|
|
32
|
+
/**
|
|
33
|
+
* Full screen overlay mode
|
|
34
|
+
*/
|
|
35
|
+
fullScreen?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare const LoadingState: React.FC<LoadingStateProps>;
|
|
38
|
+
export default LoadingState;
|
|
39
|
+
//# sourceMappingURL=LoadingState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingState.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/loading/presentation/components/LoadingState.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAe1D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkCD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4EpD,CAAC;AAmCF,eAAe,YAAY,CAAC"}
|