orn-ui 0.1.0
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 +107 -0
- package/bin/orn-ui.mjs +228 -0
- package/lib/commonjs/atoms/Avatar.js +42 -0
- package/lib/commonjs/atoms/Avatar.js.map +1 -0
- package/lib/commonjs/atoms/Badge.js +82 -0
- package/lib/commonjs/atoms/Badge.js.map +1 -0
- package/lib/commonjs/atoms/Button.js +222 -0
- package/lib/commonjs/atoms/Button.js.map +1 -0
- package/lib/commonjs/atoms/Card.js +33 -0
- package/lib/commonjs/atoms/Card.js.map +1 -0
- package/lib/commonjs/atoms/Checkbox.js +107 -0
- package/lib/commonjs/atoms/Checkbox.js.map +1 -0
- package/lib/commonjs/atoms/Divider.js +27 -0
- package/lib/commonjs/atoms/Divider.js.map +1 -0
- package/lib/commonjs/atoms/EmptyState.js +69 -0
- package/lib/commonjs/atoms/EmptyState.js.map +1 -0
- package/lib/commonjs/atoms/Fab.js +62 -0
- package/lib/commonjs/atoms/Fab.js.map +1 -0
- package/lib/commonjs/atoms/IconButton.js +60 -0
- package/lib/commonjs/atoms/IconButton.js.map +1 -0
- package/lib/commonjs/atoms/Image.js +113 -0
- package/lib/commonjs/atoms/Image.js.map +1 -0
- package/lib/commonjs/atoms/Input.js +173 -0
- package/lib/commonjs/atoms/Input.js.map +1 -0
- package/lib/commonjs/atoms/KeyValueRow.js +60 -0
- package/lib/commonjs/atoms/KeyValueRow.js.map +1 -0
- package/lib/commonjs/atoms/PressableScale.js +60 -0
- package/lib/commonjs/atoms/PressableScale.js.map +1 -0
- package/lib/commonjs/atoms/Spinner.js +156 -0
- package/lib/commonjs/atoms/Spinner.js.map +1 -0
- package/lib/commonjs/atoms/Text.js +63 -0
- package/lib/commonjs/atoms/Text.js.map +1 -0
- package/lib/commonjs/atoms/index.js +135 -0
- package/lib/commonjs/atoms/index.js.map +1 -0
- package/lib/commonjs/icons/Icon.js +40 -0
- package/lib/commonjs/icons/Icon.js.map +1 -0
- package/lib/commonjs/icons/defaultIcons.js +386 -0
- package/lib/commonjs/icons/defaultIcons.js.map +1 -0
- package/lib/commonjs/icons/index.js +20 -0
- package/lib/commonjs/icons/index.js.map +1 -0
- package/lib/commonjs/icons/types.js +6 -0
- package/lib/commonjs/icons/types.js.map +1 -0
- package/lib/commonjs/index.js +61 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/molecules/AvatarHeader.js +87 -0
- package/lib/commonjs/molecules/AvatarHeader.js.map +1 -0
- package/lib/commonjs/molecules/FormActions.js +47 -0
- package/lib/commonjs/molecules/FormActions.js.map +1 -0
- package/lib/commonjs/molecules/InfoRow.js +83 -0
- package/lib/commonjs/molecules/InfoRow.js.map +1 -0
- package/lib/commonjs/molecules/OptionCard.js +98 -0
- package/lib/commonjs/molecules/OptionCard.js.map +1 -0
- package/lib/commonjs/molecules/Stepper.js +104 -0
- package/lib/commonjs/molecules/Stepper.js.map +1 -0
- package/lib/commonjs/molecules/Steps.js +220 -0
- package/lib/commonjs/molecules/Steps.js.map +1 -0
- package/lib/commonjs/molecules/ThemeToggle.js +91 -0
- package/lib/commonjs/molecules/ThemeToggle.js.map +1 -0
- package/lib/commonjs/molecules/index.js +55 -0
- package/lib/commonjs/molecules/index.js.map +1 -0
- package/lib/commonjs/organisms/Alert.js +223 -0
- package/lib/commonjs/organisms/Alert.js.map +1 -0
- package/lib/commonjs/organisms/AlertProvider.js +109 -0
- package/lib/commonjs/organisms/AlertProvider.js.map +1 -0
- package/lib/commonjs/organisms/BottomSheet.js +154 -0
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -0
- package/lib/commonjs/organisms/DateField.js +147 -0
- package/lib/commonjs/organisms/DateField.js.map +1 -0
- package/lib/commonjs/organisms/DatePicker.js +253 -0
- package/lib/commonjs/organisms/DatePicker.js.map +1 -0
- package/lib/commonjs/organisms/List.js +143 -0
- package/lib/commonjs/organisms/List.js.map +1 -0
- package/lib/commonjs/organisms/Modal.js +286 -0
- package/lib/commonjs/organisms/Modal.js.map +1 -0
- package/lib/commonjs/organisms/Screen.js +75 -0
- package/lib/commonjs/organisms/Screen.js.map +1 -0
- package/lib/commonjs/organisms/SearchList.js +180 -0
- package/lib/commonjs/organisms/SearchList.js.map +1 -0
- package/lib/commonjs/organisms/Select.js +178 -0
- package/lib/commonjs/organisms/Select.js.map +1 -0
- package/lib/commonjs/organisms/Toast.js +157 -0
- package/lib/commonjs/organisms/Toast.js.map +1 -0
- package/lib/commonjs/organisms/ToastProvider.js +131 -0
- package/lib/commonjs/organisms/ToastProvider.js.map +1 -0
- package/lib/commonjs/organisms/Wizard.js +116 -0
- package/lib/commonjs/organisms/Wizard.js.map +1 -0
- package/lib/commonjs/organisms/index.js +127 -0
- package/lib/commonjs/organisms/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/theme/UIProvider.js +110 -0
- package/lib/commonjs/theme/UIProvider.js.map +1 -0
- package/lib/commonjs/theme/createStyles.js +42 -0
- package/lib/commonjs/theme/createStyles.js.map +1 -0
- package/lib/commonjs/theme/createTheme.js +50 -0
- package/lib/commonjs/theme/createTheme.js.map +1 -0
- package/lib/commonjs/theme/index.js +151 -0
- package/lib/commonjs/theme/index.js.map +1 -0
- package/lib/commonjs/theme/insets.js +15 -0
- package/lib/commonjs/theme/insets.js.map +1 -0
- package/lib/commonjs/theme/labels.js +18 -0
- package/lib/commonjs/theme/labels.js.map +1 -0
- package/lib/commonjs/theme/palettes.js +42 -0
- package/lib/commonjs/theme/palettes.js.map +1 -0
- package/lib/commonjs/theme/tokens.js +120 -0
- package/lib/commonjs/theme/tokens.js.map +1 -0
- package/lib/commonjs/theme/types.js +6 -0
- package/lib/commonjs/theme/types.js.map +1 -0
- package/lib/module/atoms/Avatar.js +37 -0
- package/lib/module/atoms/Avatar.js.map +1 -0
- package/lib/module/atoms/Badge.js +77 -0
- package/lib/module/atoms/Badge.js.map +1 -0
- package/lib/module/atoms/Button.js +217 -0
- package/lib/module/atoms/Button.js.map +1 -0
- package/lib/module/atoms/Card.js +28 -0
- package/lib/module/atoms/Card.js.map +1 -0
- package/lib/module/atoms/Checkbox.js +102 -0
- package/lib/module/atoms/Checkbox.js.map +1 -0
- package/lib/module/atoms/Divider.js +22 -0
- package/lib/module/atoms/Divider.js.map +1 -0
- package/lib/module/atoms/EmptyState.js +64 -0
- package/lib/module/atoms/EmptyState.js.map +1 -0
- package/lib/module/atoms/Fab.js +57 -0
- package/lib/module/atoms/Fab.js.map +1 -0
- package/lib/module/atoms/IconButton.js +55 -0
- package/lib/module/atoms/IconButton.js.map +1 -0
- package/lib/module/atoms/Image.js +108 -0
- package/lib/module/atoms/Image.js.map +1 -0
- package/lib/module/atoms/Input.js +168 -0
- package/lib/module/atoms/Input.js.map +1 -0
- package/lib/module/atoms/KeyValueRow.js +55 -0
- package/lib/module/atoms/KeyValueRow.js.map +1 -0
- package/lib/module/atoms/PressableScale.js +55 -0
- package/lib/module/atoms/PressableScale.js.map +1 -0
- package/lib/module/atoms/Spinner.js +151 -0
- package/lib/module/atoms/Spinner.js.map +1 -0
- package/lib/module/atoms/Text.js +58 -0
- package/lib/module/atoms/Text.js.map +1 -0
- package/lib/module/atoms/index.js +18 -0
- package/lib/module/atoms/index.js.map +1 -0
- package/lib/module/icons/Icon.js +35 -0
- package/lib/module/icons/Icon.js.map +1 -0
- package/lib/module/icons/defaultIcons.js +381 -0
- package/lib/module/icons/defaultIcons.js.map +1 -0
- package/lib/module/icons/index.js +5 -0
- package/lib/module/icons/index.js.map +1 -0
- package/lib/module/icons/types.js +4 -0
- package/lib/module/icons/types.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/molecules/AvatarHeader.js +82 -0
- package/lib/module/molecules/AvatarHeader.js.map +1 -0
- package/lib/module/molecules/FormActions.js +42 -0
- package/lib/module/molecules/FormActions.js.map +1 -0
- package/lib/module/molecules/InfoRow.js +78 -0
- package/lib/module/molecules/InfoRow.js.map +1 -0
- package/lib/module/molecules/OptionCard.js +93 -0
- package/lib/module/molecules/OptionCard.js.map +1 -0
- package/lib/module/molecules/Stepper.js +99 -0
- package/lib/module/molecules/Stepper.js.map +1 -0
- package/lib/module/molecules/Steps.js +215 -0
- package/lib/module/molecules/Steps.js.map +1 -0
- package/lib/module/molecules/ThemeToggle.js +86 -0
- package/lib/module/molecules/ThemeToggle.js.map +1 -0
- package/lib/module/molecules/index.js +10 -0
- package/lib/module/molecules/index.js.map +1 -0
- package/lib/module/organisms/Alert.js +218 -0
- package/lib/module/organisms/Alert.js.map +1 -0
- package/lib/module/organisms/AlertProvider.js +103 -0
- package/lib/module/organisms/AlertProvider.js.map +1 -0
- package/lib/module/organisms/BottomSheet.js +149 -0
- package/lib/module/organisms/BottomSheet.js.map +1 -0
- package/lib/module/organisms/DateField.js +142 -0
- package/lib/module/organisms/DateField.js.map +1 -0
- package/lib/module/organisms/DatePicker.js +247 -0
- package/lib/module/organisms/DatePicker.js.map +1 -0
- package/lib/module/organisms/List.js +138 -0
- package/lib/module/organisms/List.js.map +1 -0
- package/lib/module/organisms/Modal.js +281 -0
- package/lib/module/organisms/Modal.js.map +1 -0
- package/lib/module/organisms/Screen.js +70 -0
- package/lib/module/organisms/Screen.js.map +1 -0
- package/lib/module/organisms/SearchList.js +175 -0
- package/lib/module/organisms/SearchList.js.map +1 -0
- package/lib/module/organisms/Select.js +173 -0
- package/lib/module/organisms/Select.js.map +1 -0
- package/lib/module/organisms/Toast.js +152 -0
- package/lib/module/organisms/Toast.js.map +1 -0
- package/lib/module/organisms/ToastProvider.js +125 -0
- package/lib/module/organisms/ToastProvider.js.map +1 -0
- package/lib/module/organisms/Wizard.js +111 -0
- package/lib/module/organisms/Wizard.js.map +1 -0
- package/lib/module/organisms/index.js +16 -0
- package/lib/module/organisms/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/theme/UIProvider.js +97 -0
- package/lib/module/theme/UIProvider.js.map +1 -0
- package/lib/module/theme/createStyles.js +38 -0
- package/lib/module/theme/createStyles.js.map +1 -0
- package/lib/module/theme/createTheme.js +45 -0
- package/lib/module/theme/createTheme.js.map +1 -0
- package/lib/module/theme/index.js +10 -0
- package/lib/module/theme/index.js.map +1 -0
- package/lib/module/theme/insets.js +11 -0
- package/lib/module/theme/insets.js.map +1 -0
- package/lib/module/theme/labels.js +14 -0
- package/lib/module/theme/labels.js.map +1 -0
- package/lib/module/theme/palettes.js +38 -0
- package/lib/module/theme/palettes.js.map +1 -0
- package/lib/module/theme/tokens.js +117 -0
- package/lib/module/theme/tokens.js.map +1 -0
- package/lib/module/theme/types.js +4 -0
- package/lib/module/theme/types.js.map +1 -0
- package/lib/typescript/atoms/Avatar.d.ts +15 -0
- package/lib/typescript/atoms/Avatar.d.ts.map +1 -0
- package/lib/typescript/atoms/Badge.d.ts +19 -0
- package/lib/typescript/atoms/Badge.d.ts.map +1 -0
- package/lib/typescript/atoms/Button.d.ts +30 -0
- package/lib/typescript/atoms/Button.d.ts.map +1 -0
- package/lib/typescript/atoms/Card.d.ts +8 -0
- package/lib/typescript/atoms/Card.d.ts.map +1 -0
- package/lib/typescript/atoms/Checkbox.d.ts +11 -0
- package/lib/typescript/atoms/Checkbox.d.ts.map +1 -0
- package/lib/typescript/atoms/Divider.d.ts +8 -0
- package/lib/typescript/atoms/Divider.d.ts.map +1 -0
- package/lib/typescript/atoms/EmptyState.d.ts +12 -0
- package/lib/typescript/atoms/EmptyState.d.ts.map +1 -0
- package/lib/typescript/atoms/Fab.d.ts +22 -0
- package/lib/typescript/atoms/Fab.d.ts.map +1 -0
- package/lib/typescript/atoms/IconButton.d.ts +23 -0
- package/lib/typescript/atoms/IconButton.d.ts.map +1 -0
- package/lib/typescript/atoms/Image.d.ts +45 -0
- package/lib/typescript/atoms/Image.d.ts.map +1 -0
- package/lib/typescript/atoms/Input.d.ts +24 -0
- package/lib/typescript/atoms/Input.d.ts.map +1 -0
- package/lib/typescript/atoms/KeyValueRow.d.ts +17 -0
- package/lib/typescript/atoms/KeyValueRow.d.ts.map +1 -0
- package/lib/typescript/atoms/PressableScale.d.ts +15 -0
- package/lib/typescript/atoms/PressableScale.d.ts.map +1 -0
- package/lib/typescript/atoms/Spinner.d.ts +20 -0
- package/lib/typescript/atoms/Spinner.d.ts.map +1 -0
- package/lib/typescript/atoms/Text.d.ts +13 -0
- package/lib/typescript/atoms/Text.d.ts.map +1 -0
- package/lib/typescript/atoms/index.d.ts +31 -0
- package/lib/typescript/atoms/index.d.ts.map +1 -0
- package/lib/typescript/icons/Icon.d.ts +18 -0
- package/lib/typescript/icons/Icon.d.ts.map +1 -0
- package/lib/typescript/icons/defaultIcons.d.ts +5 -0
- package/lib/typescript/icons/defaultIcons.d.ts.map +1 -0
- package/lib/typescript/icons/index.d.ts +5 -0
- package/lib/typescript/icons/index.d.ts.map +1 -0
- package/lib/typescript/icons/types.d.ts +10 -0
- package/lib/typescript/icons/types.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +6 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/molecules/AvatarHeader.d.ts +20 -0
- package/lib/typescript/molecules/AvatarHeader.d.ts.map +1 -0
- package/lib/typescript/molecules/FormActions.d.ts +21 -0
- package/lib/typescript/molecules/FormActions.d.ts.map +1 -0
- package/lib/typescript/molecules/InfoRow.d.ts +17 -0
- package/lib/typescript/molecules/InfoRow.d.ts.map +1 -0
- package/lib/typescript/molecules/OptionCard.d.ts +20 -0
- package/lib/typescript/molecules/OptionCard.d.ts.map +1 -0
- package/lib/typescript/molecules/Stepper.d.ts +15 -0
- package/lib/typescript/molecules/Stepper.d.ts.map +1 -0
- package/lib/typescript/molecules/Steps.d.ts +29 -0
- package/lib/typescript/molecules/Steps.d.ts.map +1 -0
- package/lib/typescript/molecules/ThemeToggle.d.ts +15 -0
- package/lib/typescript/molecules/ThemeToggle.d.ts.map +1 -0
- package/lib/typescript/molecules/index.d.ts +15 -0
- package/lib/typescript/molecules/index.d.ts.map +1 -0
- package/lib/typescript/organisms/Alert.d.ts +29 -0
- package/lib/typescript/organisms/Alert.d.ts.map +1 -0
- package/lib/typescript/organisms/AlertProvider.d.ts +32 -0
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -0
- package/lib/typescript/organisms/BottomSheet.d.ts +15 -0
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/organisms/DateField.d.ts +26 -0
- package/lib/typescript/organisms/DateField.d.ts.map +1 -0
- package/lib/typescript/organisms/DatePicker.d.ts +49 -0
- package/lib/typescript/organisms/DatePicker.d.ts.map +1 -0
- package/lib/typescript/organisms/List.d.ts +35 -0
- package/lib/typescript/organisms/List.d.ts.map +1 -0
- package/lib/typescript/organisms/Modal.d.ts +25 -0
- package/lib/typescript/organisms/Modal.d.ts.map +1 -0
- package/lib/typescript/organisms/Screen.d.ts +26 -0
- package/lib/typescript/organisms/Screen.d.ts.map +1 -0
- package/lib/typescript/organisms/SearchList.d.ts +40 -0
- package/lib/typescript/organisms/SearchList.d.ts.map +1 -0
- package/lib/typescript/organisms/Select.d.ts +25 -0
- package/lib/typescript/organisms/Select.d.ts.map +1 -0
- package/lib/typescript/organisms/Toast.d.ts +28 -0
- package/lib/typescript/organisms/Toast.d.ts.map +1 -0
- package/lib/typescript/organisms/ToastProvider.d.ts +36 -0
- package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -0
- package/lib/typescript/organisms/Wizard.d.ts +40 -0
- package/lib/typescript/organisms/Wizard.d.ts.map +1 -0
- package/lib/typescript/organisms/index.d.ts +27 -0
- package/lib/typescript/organisms/index.d.ts.map +1 -0
- package/lib/typescript/theme/UIProvider.d.ts +47 -0
- package/lib/typescript/theme/UIProvider.d.ts.map +1 -0
- package/lib/typescript/theme/createStyles.d.ts +21 -0
- package/lib/typescript/theme/createStyles.d.ts.map +1 -0
- package/lib/typescript/theme/createTheme.d.ts +9 -0
- package/lib/typescript/theme/createTheme.d.ts.map +1 -0
- package/lib/typescript/theme/index.d.ts +14 -0
- package/lib/typescript/theme/index.d.ts.map +1 -0
- package/lib/typescript/theme/insets.d.ts +9 -0
- package/lib/typescript/theme/insets.d.ts.map +1 -0
- package/lib/typescript/theme/labels.d.ts +13 -0
- package/lib/typescript/theme/labels.d.ts.map +1 -0
- package/lib/typescript/theme/palettes.d.ts +24 -0
- package/lib/typescript/theme/palettes.d.ts.map +1 -0
- package/lib/typescript/theme/tokens.d.ts +41 -0
- package/lib/typescript/theme/tokens.d.ts.map +1 -0
- package/lib/typescript/theme/types.d.ts +24 -0
- package/lib/typescript/theme/types.d.ts.map +1 -0
- package/package.json +311 -0
- package/registry/alert-provider.json +21 -0
- package/registry/alert.json +19 -0
- package/registry/avatar-header.json +18 -0
- package/registry/avatar.json +18 -0
- package/registry/badge.json +18 -0
- package/registry/bottom-sheet.json +18 -0
- package/registry/button.json +18 -0
- package/registry/card.json +18 -0
- package/registry/checkbox.json +18 -0
- package/registry/core.json +64 -0
- package/registry/date-field.json +24 -0
- package/registry/date-picker.json +23 -0
- package/registry/divider.json +18 -0
- package/registry/empty-state.json +18 -0
- package/registry/fab.json +19 -0
- package/registry/form-actions.json +19 -0
- package/registry/icon-button.json +19 -0
- package/registry/image.json +20 -0
- package/registry/index.json +465 -0
- package/registry/info-row.json +19 -0
- package/registry/input.json +18 -0
- package/registry/key-value-row.json +18 -0
- package/registry/list.json +20 -0
- package/registry/manifest.json +263 -0
- package/registry/modal.json +21 -0
- package/registry/option-card.json +18 -0
- package/registry/pressable-scale.json +18 -0
- package/registry/screen.json +18 -0
- package/registry/search-list.json +23 -0
- package/registry/select.json +18 -0
- package/registry/spinner.json +18 -0
- package/registry/stepper.json +18 -0
- package/registry/steps.json +18 -0
- package/registry/theme-toggle.json +18 -0
- package/registry/title.json +21 -0
- package/registry/toast-provider.json +20 -0
- package/registry/toast.json +18 -0
- package/registry/wizard.json +20 -0
- package/src/atoms/Avatar.tsx +40 -0
- package/src/atoms/Badge.tsx +55 -0
- package/src/atoms/Button.tsx +186 -0
- package/src/atoms/Card.tsx +27 -0
- package/src/atoms/Checkbox.tsx +75 -0
- package/src/atoms/Divider.tsx +14 -0
- package/src/atoms/EmptyState.tsx +60 -0
- package/src/atoms/Fab.tsx +63 -0
- package/src/atoms/IconButton.tsx +53 -0
- package/src/atoms/Image.tsx +137 -0
- package/src/atoms/Input.tsx +166 -0
- package/src/atoms/KeyValueRow.tsx +48 -0
- package/src/atoms/PressableScale.tsx +52 -0
- package/src/atoms/Spinner.tsx +127 -0
- package/src/atoms/Text.tsx +58 -0
- package/src/atoms/index.ts +30 -0
- package/src/icons/Icon.tsx +27 -0
- package/src/icons/defaultIcons.tsx +292 -0
- package/src/icons/index.ts +4 -0
- package/src/icons/types.ts +27 -0
- package/src/index.ts +5 -0
- package/src/molecules/AvatarHeader.tsx +69 -0
- package/src/molecules/FormActions.tsx +52 -0
- package/src/molecules/InfoRow.tsx +52 -0
- package/src/molecules/OptionCard.tsx +82 -0
- package/src/molecules/Stepper.tsx +76 -0
- package/src/molecules/Steps.tsx +198 -0
- package/src/molecules/ThemeToggle.tsx +67 -0
- package/src/molecules/index.ts +14 -0
- package/src/organisms/Alert.tsx +162 -0
- package/src/organisms/AlertProvider.tsx +125 -0
- package/src/organisms/BottomSheet.tsx +95 -0
- package/src/organisms/DateField.tsx +134 -0
- package/src/organisms/DatePicker.tsx +255 -0
- package/src/organisms/List.tsx +154 -0
- package/src/organisms/Modal.tsx +251 -0
- package/src/organisms/Screen.tsx +84 -0
- package/src/organisms/SearchList.tsx +186 -0
- package/src/organisms/Select.tsx +156 -0
- package/src/organisms/Toast.tsx +135 -0
- package/src/organisms/ToastProvider.tsx +166 -0
- package/src/organisms/Wizard.tsx +137 -0
- package/src/organisms/index.ts +26 -0
- package/src/theme/UIProvider.tsx +129 -0
- package/src/theme/createStyles.ts +40 -0
- package/src/theme/createTheme.ts +49 -0
- package/src/theme/index.ts +22 -0
- package/src/theme/insets.ts +9 -0
- package/src/theme/labels.ts +23 -0
- package/src/theme/palettes.ts +53 -0
- package/src/theme/tokens.ts +113 -0
- package/src/theme/types.ts +27 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo } from 'react';
|
|
4
|
+
import { Text, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling, useColors, useLabels } from '../theme/UIProvider';
|
|
7
|
+
import { Icon } from '../icons/Icon';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const useStyles = createStyles(theme => ({
|
|
10
|
+
container: {
|
|
11
|
+
flex: 1,
|
|
12
|
+
justifyContent: 'center',
|
|
13
|
+
alignItems: 'center',
|
|
14
|
+
padding: theme.tokens.spacing.xxl - 4,
|
|
15
|
+
minHeight: 200
|
|
16
|
+
},
|
|
17
|
+
title: {
|
|
18
|
+
fontSize: theme.tokens.fontSize.lg,
|
|
19
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
20
|
+
color: theme.colors.textLight,
|
|
21
|
+
marginTop: theme.tokens.spacing.md - 2,
|
|
22
|
+
textAlign: 'center'
|
|
23
|
+
},
|
|
24
|
+
description: {
|
|
25
|
+
fontSize: theme.tokens.fontSize.md,
|
|
26
|
+
color: theme.colors.textLight,
|
|
27
|
+
marginTop: theme.tokens.spacing.xs + 1,
|
|
28
|
+
textAlign: 'center'
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
export const EmptyState = /*#__PURE__*/memo(({
|
|
32
|
+
title,
|
|
33
|
+
description,
|
|
34
|
+
iconName = 'search',
|
|
35
|
+
icon,
|
|
36
|
+
style
|
|
37
|
+
}) => {
|
|
38
|
+
const colors = useColors();
|
|
39
|
+
const styles = useStyles();
|
|
40
|
+
const labels = useLabels();
|
|
41
|
+
const allowFontScaling = useAllowFontScaling();
|
|
42
|
+
const resolvedTitle = title ?? labels.noResultsTitle;
|
|
43
|
+
const resolvedDescription = description ?? labels.noResultsDescription;
|
|
44
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
45
|
+
style: [styles.container, style],
|
|
46
|
+
accessible: true,
|
|
47
|
+
accessibilityRole: "text",
|
|
48
|
+
children: [icon ?? /*#__PURE__*/_jsx(Icon, {
|
|
49
|
+
name: iconName,
|
|
50
|
+
size: 48,
|
|
51
|
+
color: colors.textLight
|
|
52
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
53
|
+
allowFontScaling: allowFontScaling,
|
|
54
|
+
style: styles.title,
|
|
55
|
+
children: resolvedTitle
|
|
56
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
57
|
+
allowFontScaling: allowFontScaling,
|
|
58
|
+
style: styles.description,
|
|
59
|
+
children: resolvedDescription
|
|
60
|
+
})]
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
EmptyState.displayName = 'EmptyState';
|
|
64
|
+
//# sourceMappingURL=EmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","Text","View","createStyles","useAllowFontScaling","useColors","useLabels","Icon","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","flex","justifyContent","alignItems","padding","tokens","spacing","xxl","minHeight","title","fontSize","lg","fontWeight","semibold","color","colors","textLight","marginTop","md","textAlign","description","xs","EmptyState","iconName","icon","style","styles","labels","allowFontScaling","resolvedTitle","noResultsTitle","resolvedDescription","noResultsDescription","accessible","accessibilityRole","children","name","size","displayName"],"sourceRoot":"../../../src","sources":["atoms/EmptyState.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,EAAEC,IAAI,QAAwB,cAAc;AACzD,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,EAAEC,SAAS,EAAEC,SAAS,QAAQ,qBAAqB;AAC/E,SAASC,IAAI,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWrC,MAAMC,SAAS,GAAGT,YAAY,CAAEU,KAAK,KAAM;EACzCC,SAAS,EAAE;IACTC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAEL,KAAK,CAACM,MAAM,CAACC,OAAO,CAACC,GAAG,GAAG,CAAC;IACrCC,SAAS,EAAE;EACb,CAAC;EACDC,KAAK,EAAE;IACLC,QAAQ,EAAEX,KAAK,CAACM,MAAM,CAACK,QAAQ,CAACC,EAAE;IAClCC,UAAU,EAAEb,KAAK,CAACM,MAAM,CAACO,UAAU,CAACC,QAAQ;IAC5CC,KAAK,EAAEf,KAAK,CAACgB,MAAM,CAACC,SAAS;IAC7BC,SAAS,EAAElB,KAAK,CAACM,MAAM,CAACC,OAAO,CAACY,EAAE,GAAG,CAAC;IACtCC,SAAS,EAAE;EACb,CAAC;EACDC,WAAW,EAAE;IACXV,QAAQ,EAAEX,KAAK,CAACM,MAAM,CAACK,QAAQ,CAACQ,EAAE;IAClCJ,KAAK,EAAEf,KAAK,CAACgB,MAAM,CAACC,SAAS;IAC7BC,SAAS,EAAElB,KAAK,CAACM,MAAM,CAACC,OAAO,CAACe,EAAE,GAAG,CAAC;IACtCF,SAAS,EAAE;EACb;AACF,CAAC,CAAC,CAAC;AAEH,OAAO,MAAMG,UAAU,gBAAGpC,IAAI,CAC5B,CAAC;EAAEuB,KAAK;EAAEW,WAAW;EAAEG,QAAQ,GAAG,QAAQ;EAAEC,IAAI;EAAEC;AAAuB,CAAC,KAAK;EAC7E,MAAMV,MAAM,GAAGxB,SAAS,CAAC,CAAC;EAC1B,MAAMmC,MAAM,GAAG5B,SAAS,CAAC,CAAC;EAC1B,MAAM6B,MAAM,GAAGnC,SAAS,CAAC,CAAC;EAC1B,MAAMoC,gBAAgB,GAAGtC,mBAAmB,CAAC,CAAC;EAC9C,MAAMuC,aAAa,GAAGpB,KAAK,IAAIkB,MAAM,CAACG,cAAc;EACpD,MAAMC,mBAAmB,GAAGX,WAAW,IAAIO,MAAM,CAACK,oBAAoB;EACtE,oBACEnC,KAAA,CAACT,IAAI;IAACqC,KAAK,EAAE,CAACC,MAAM,CAAC1B,SAAS,EAAEyB,KAAK,CAAE;IAACQ,UAAU;IAACC,iBAAiB,EAAC,MAAM;IAAAC,QAAA,GACxEX,IAAI,iBAAI7B,IAAA,CAACF,IAAI;MAAC2C,IAAI,EAAEb,QAAS;MAACc,IAAI,EAAE,EAAG;MAACvB,KAAK,EAAEC,MAAM,CAACC;IAAU,CAAE,CAAC,eACpErB,IAAA,CAACR,IAAI;MAACyC,gBAAgB,EAAEA,gBAAiB;MAACH,KAAK,EAAEC,MAAM,CAACjB,KAAM;MAAA0B,QAAA,EAC3DN;IAAa,CACV,CAAC,eACPlC,IAAA,CAACR,IAAI;MAACyC,gBAAgB,EAAEA,gBAAiB;MAACH,KAAK,EAAEC,MAAM,CAACN,WAAY;MAAAe,QAAA,EACjEJ;IAAmB,CAChB,CAAC;EAAA,CACH,CAAC;AAEX,CACF,CAAC;AACDT,UAAU,CAACgB,WAAW,GAAG,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo } from 'react';
|
|
4
|
+
import { PressableScale } from './PressableScale';
|
|
5
|
+
import { Icon } from '../icons/Icon';
|
|
6
|
+
import { createStyles } from '../theme/createStyles';
|
|
7
|
+
import { useColors } from '../theme/UIProvider';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const useStyles = createStyles(theme => ({
|
|
10
|
+
fab: {
|
|
11
|
+
position: 'absolute',
|
|
12
|
+
justifyContent: 'center',
|
|
13
|
+
alignItems: 'center',
|
|
14
|
+
...theme.tokens.shadow.lg
|
|
15
|
+
}
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Fab
|
|
20
|
+
* Botón flotante circular. `bottom`/`right` en vez del `tabBarHeight`
|
|
21
|
+
* obligatorio de la versión original — el consumidor decide su propio
|
|
22
|
+
* offset (con o sin tab bar).
|
|
23
|
+
*/
|
|
24
|
+
export const Fab = /*#__PURE__*/memo(({
|
|
25
|
+
onPress,
|
|
26
|
+
iconName = 'plus',
|
|
27
|
+
icon,
|
|
28
|
+
size = 60,
|
|
29
|
+
bottom = 20,
|
|
30
|
+
right = 20,
|
|
31
|
+
color,
|
|
32
|
+
style,
|
|
33
|
+
accessibilityLabel
|
|
34
|
+
}) => {
|
|
35
|
+
const styles = useStyles();
|
|
36
|
+
const colors = useColors();
|
|
37
|
+
return /*#__PURE__*/_jsx(PressableScale, {
|
|
38
|
+
onPress: onPress,
|
|
39
|
+
style: [styles.fab, {
|
|
40
|
+
width: size,
|
|
41
|
+
height: size,
|
|
42
|
+
borderRadius: size / 2,
|
|
43
|
+
bottom,
|
|
44
|
+
right,
|
|
45
|
+
backgroundColor: color ?? colors.primary
|
|
46
|
+
}, style],
|
|
47
|
+
accessibilityRole: "button",
|
|
48
|
+
accessibilityLabel: accessibilityLabel,
|
|
49
|
+
children: icon ?? /*#__PURE__*/_jsx(Icon, {
|
|
50
|
+
name: iconName,
|
|
51
|
+
size: size * 0.5,
|
|
52
|
+
color: colors.white
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
Fab.displayName = 'Fab';
|
|
57
|
+
//# sourceMappingURL=Fab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","PressableScale","Icon","createStyles","useColors","jsx","_jsx","useStyles","theme","fab","position","justifyContent","alignItems","tokens","shadow","lg","Fab","onPress","iconName","icon","size","bottom","right","color","style","accessibilityLabel","styles","colors","width","height","borderRadius","backgroundColor","primary","accessibilityRole","children","name","white","displayName"],"sourceRoot":"../../../src","sources":["atoms/Fab.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AAEnC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,IAAI,QAAQ,eAAe;AAEpC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,SAAS,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAchD,MAAMC,SAAS,GAAGJ,YAAY,CAAEK,KAAK,KAAM;EACzCC,GAAG,EAAE;IACHC,QAAQ,EAAE,UAAU;IACpBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpB,GAAGJ,KAAK,CAACK,MAAM,CAACC,MAAM,CAACC;EACzB;AACF,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,GAAG,gBAAGhB,IAAI,CACrB,CAAC;EAAEiB,OAAO;EAAEC,QAAQ,GAAG,MAAM;EAAEC,IAAI;EAAEC,IAAI,GAAG,EAAE;EAAEC,MAAM,GAAG,EAAE;EAAEC,KAAK,GAAG,EAAE;EAAEC,KAAK;EAAEC,KAAK;EAAEC;AAA6B,CAAC,KAAK;EACxH,MAAMC,MAAM,GAAGnB,SAAS,CAAC,CAAC;EAC1B,MAAMoB,MAAM,GAAGvB,SAAS,CAAC,CAAC;EAC1B,oBACEE,IAAA,CAACL,cAAc;IACbgB,OAAO,EAAEA,OAAQ;IACjBO,KAAK,EAAE,CACLE,MAAM,CAACjB,GAAG,EACV;MACEmB,KAAK,EAAER,IAAI;MACXS,MAAM,EAAET,IAAI;MACZU,YAAY,EAAEV,IAAI,GAAG,CAAC;MACtBC,MAAM;MACNC,KAAK;MACLS,eAAe,EAAER,KAAK,IAAII,MAAM,CAACK;IACnC,CAAC,EACDR,KAAK,CACL;IACFS,iBAAiB,EAAC,QAAQ;IAC1BR,kBAAkB,EAAEA,kBAAmB;IAAAS,QAAA,EAEtCf,IAAI,iBAAIb,IAAA,CAACJ,IAAI;MAACiC,IAAI,EAAEjB,QAAS;MAACE,IAAI,EAAEA,IAAI,GAAG,GAAI;MAACG,KAAK,EAAEI,MAAM,CAACS;IAAM,CAAE;EAAC,CAC1D,CAAC;AAErB,CACF,CAAC;AACDpB,GAAG,CAACqB,WAAW,GAAG,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo } from 'react';
|
|
4
|
+
import { PressableScale } from './PressableScale';
|
|
5
|
+
import { Icon } from '../icons/Icon';
|
|
6
|
+
import { createStyles } from '../theme/createStyles';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const useStyles = createStyles(theme => ({
|
|
9
|
+
hitArea: {
|
|
10
|
+
padding: theme.tokens.spacing.sm,
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
justifyContent: 'center'
|
|
13
|
+
}
|
|
14
|
+
}));
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* IconButton
|
|
18
|
+
* Botón de solo ícono con área táctil mínima de 44x44 garantizada por el
|
|
19
|
+
* padding (icon 24 + padding 8*2 = 40; sube a 44 con size>=24 default RN).
|
|
20
|
+
* `accessibilityLabel` es obligatorio: sin texto visible, es la única forma
|
|
21
|
+
* de que un lector de pantalla anuncie qué hace el botón.
|
|
22
|
+
*/
|
|
23
|
+
export const IconButton = /*#__PURE__*/memo(({
|
|
24
|
+
iconName,
|
|
25
|
+
icon,
|
|
26
|
+
onPress,
|
|
27
|
+
size = 24,
|
|
28
|
+
color,
|
|
29
|
+
disabled,
|
|
30
|
+
style,
|
|
31
|
+
accessibilityLabel,
|
|
32
|
+
testID
|
|
33
|
+
}) => {
|
|
34
|
+
const styles = useStyles();
|
|
35
|
+
return /*#__PURE__*/_jsx(PressableScale, {
|
|
36
|
+
onPress: onPress,
|
|
37
|
+
disabled: disabled,
|
|
38
|
+
style: [styles.hitArea, {
|
|
39
|
+
opacity: disabled ? 0.5 : 1
|
|
40
|
+
}, style],
|
|
41
|
+
accessibilityRole: "button",
|
|
42
|
+
accessibilityLabel: accessibilityLabel,
|
|
43
|
+
accessibilityState: {
|
|
44
|
+
disabled: !!disabled
|
|
45
|
+
},
|
|
46
|
+
testID: testID,
|
|
47
|
+
children: icon ?? (iconName && /*#__PURE__*/_jsx(Icon, {
|
|
48
|
+
name: iconName,
|
|
49
|
+
size: size,
|
|
50
|
+
color: color
|
|
51
|
+
}))
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
IconButton.displayName = 'IconButton';
|
|
55
|
+
//# sourceMappingURL=IconButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","PressableScale","Icon","createStyles","jsx","_jsx","useStyles","theme","hitArea","padding","tokens","spacing","sm","alignItems","justifyContent","IconButton","iconName","icon","onPress","size","color","disabled","style","accessibilityLabel","testID","styles","opacity","accessibilityRole","accessibilityState","children","name","displayName"],"sourceRoot":"../../../src","sources":["atoms/IconButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AAEnC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,IAAI,QAAQ,eAAe;AAEpC,SAASC,YAAY,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAcrD,MAAMC,SAAS,GAAGH,YAAY,CAAEI,KAAK,KAAM;EACzCC,OAAO,EAAE;IACPC,OAAO,EAAEF,KAAK,CAACG,MAAM,CAACC,OAAO,CAACC,EAAE;IAChCC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,gBAAGf,IAAI,CAC5B,CAAC;EAAEgB,QAAQ;EAAEC,IAAI;EAAEC,OAAO;EAAEC,IAAI,GAAG,EAAE;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,KAAK;EAAEC,kBAAkB;EAAEC;AAAwB,CAAC,KAAK;EAC/G,MAAMC,MAAM,GAAGnB,SAAS,CAAC,CAAC;EAC1B,oBACED,IAAA,CAACJ,cAAc;IACbiB,OAAO,EAAEA,OAAQ;IACjBG,QAAQ,EAAEA,QAAS;IACnBC,KAAK,EAAE,CAACG,MAAM,CAACjB,OAAO,EAAE;MAAEkB,OAAO,EAAEL,QAAQ,GAAG,GAAG,GAAG;IAAE,CAAC,EAAEC,KAAK,CAAE;IAChEK,iBAAiB,EAAC,QAAQ;IAC1BJ,kBAAkB,EAAEA,kBAAmB;IACvCK,kBAAkB,EAAE;MAAEP,QAAQ,EAAE,CAAC,CAACA;IAAS,CAAE;IAC7CG,MAAM,EAAEA,MAAO;IAAAK,QAAA,EAEdZ,IAAI,KAAKD,QAAQ,iBAAIX,IAAA,CAACH,IAAI;MAAC4B,IAAI,EAAEd,QAAS;MAACG,IAAI,EAAEA,IAAK;MAACC,KAAK,EAAEA;IAAM,CAAE,CAAC;EAAC,CAC3D,CAAC;AAErB,CACF,CAAC;AACDL,UAAU,CAACgB,WAAW,GAAG,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useCallback, useEffect, useState } from 'react';
|
|
4
|
+
import { Image as RNImage, Platform, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { Spinner } from './Spinner';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
const useStyles = createStyles(theme => ({
|
|
9
|
+
container: {
|
|
10
|
+
overflow: 'hidden',
|
|
11
|
+
backgroundColor: theme.colors.border + '30'
|
|
12
|
+
},
|
|
13
|
+
overlay: {
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
justifyContent: 'center'
|
|
16
|
+
},
|
|
17
|
+
fallback: {
|
|
18
|
+
flex: 1,
|
|
19
|
+
backgroundColor: theme.colors.border + '30'
|
|
20
|
+
}
|
|
21
|
+
}));
|
|
22
|
+
function sourceUri(source) {
|
|
23
|
+
return typeof source === 'object' && source !== null && 'uri' in source ? source.uri : undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Image
|
|
28
|
+
* Wrapper cero-dependencias sobre <Image> de RN: agrega estado de carga y
|
|
29
|
+
* error (con los mismos placeholders que el resto de la librería), y expone
|
|
30
|
+
* `priority="high"` para adelantar la descarga vía Image.prefetch(). El
|
|
31
|
+
* cache real (disco/memoria) lo maneja el motor de imágenes nativo de RN —
|
|
32
|
+
* esto no lo reimplementa, solo no lo deja apagado por accidente: en iOS
|
|
33
|
+
* fuerza `cache="force-cache"` (usa el disco aunque el header HTTP no lo
|
|
34
|
+
* pida); en Android el cache de disco de la imagen nativa ya está siempre
|
|
35
|
+
* activo, no hay knob equivalente que tocar.
|
|
36
|
+
*/
|
|
37
|
+
export const Image = /*#__PURE__*/memo(({
|
|
38
|
+
source,
|
|
39
|
+
width,
|
|
40
|
+
height,
|
|
41
|
+
resizeMode = 'cover',
|
|
42
|
+
radius = 0,
|
|
43
|
+
loading = true,
|
|
44
|
+
fallback,
|
|
45
|
+
priority = 'normal',
|
|
46
|
+
style,
|
|
47
|
+
onLoadEnd,
|
|
48
|
+
onError,
|
|
49
|
+
testID
|
|
50
|
+
}) => {
|
|
51
|
+
const styles = useStyles();
|
|
52
|
+
const [status, setStatus] = useState('loading');
|
|
53
|
+
const uri = sourceUri(source);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
// Resetea el estado si cambia la imagen (misma instancia de Image,
|
|
56
|
+
// source distinto: p.ej. avatar de un usuario a otro en la misma fila).
|
|
57
|
+
setStatus('loading');
|
|
58
|
+
}, [uri ?? source]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (priority === 'high' && uri) {
|
|
61
|
+
RNImage.prefetch(uri).catch(() => {});
|
|
62
|
+
}
|
|
63
|
+
}, [priority, uri]);
|
|
64
|
+
const handleError = useCallback(e => {
|
|
65
|
+
setStatus('error');
|
|
66
|
+
onError?.(e);
|
|
67
|
+
}, [onError]);
|
|
68
|
+
const handleLoadEnd = useCallback(() => {
|
|
69
|
+
setStatus('loaded');
|
|
70
|
+
onLoadEnd?.();
|
|
71
|
+
}, [onLoadEnd]);
|
|
72
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
73
|
+
style: [styles.container, {
|
|
74
|
+
width,
|
|
75
|
+
height,
|
|
76
|
+
borderRadius: radius
|
|
77
|
+
}, style],
|
|
78
|
+
testID: testID,
|
|
79
|
+
children: [status !== 'error' && /*#__PURE__*/_jsx(RNImage, {
|
|
80
|
+
source: source,
|
|
81
|
+
resizeMode: resizeMode,
|
|
82
|
+
style: StyleSheet.absoluteFill,
|
|
83
|
+
fadeDuration: Platform.OS === 'android' ? 150 : undefined,
|
|
84
|
+
...(Platform.OS === 'ios' ? {
|
|
85
|
+
cache: 'force-cache'
|
|
86
|
+
} : null),
|
|
87
|
+
onLoadEnd: handleLoadEnd,
|
|
88
|
+
onError: handleError
|
|
89
|
+
}), status === 'loading' && loading !== false && /*#__PURE__*/_jsx(View, {
|
|
90
|
+
style: [StyleSheet.absoluteFill, styles.overlay],
|
|
91
|
+
children: loading === true ? /*#__PURE__*/_jsx(Spinner, {
|
|
92
|
+
size: "small",
|
|
93
|
+
fullscreen: false
|
|
94
|
+
}) : loading
|
|
95
|
+
}), status === 'error' && (fallback ?? /*#__PURE__*/_jsx(View, {
|
|
96
|
+
style: styles.fallback
|
|
97
|
+
}))]
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
Image.displayName = 'Image';
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Precarga una URL antes de montar el componente (p.ej. al recibir la
|
|
104
|
+
* respuesta de un listado, antes de navegar al detalle). Re-exporta
|
|
105
|
+
* Image.prefetch de RN — no hay nada zero-dep que agregarle encima.
|
|
106
|
+
*/
|
|
107
|
+
export const prefetchImage = RNImage.prefetch;
|
|
108
|
+
//# sourceMappingURL=Image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useCallback","useEffect","useState","Image","RNImage","Platform","StyleSheet","View","createStyles","Spinner","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","overflow","backgroundColor","colors","border","overlay","alignItems","justifyContent","fallback","flex","sourceUri","source","uri","undefined","width","height","resizeMode","radius","loading","priority","style","onLoadEnd","onError","testID","styles","status","setStatus","prefetch","catch","handleError","e","handleLoadEnd","borderRadius","children","absoluteFill","fadeDuration","OS","cache","size","fullscreen","displayName","prefetchImage"],"sourceRoot":"../../../src","sources":["atoms/Image.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useRef, useState } from 'react';
|
|
4
|
+
import { ActivityIndicator, Animated, Text, TextInput, TouchableOpacity, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling, useColors } from '../theme/UIProvider';
|
|
7
|
+
import { Icon } from '../icons/Icon';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const useStyles = createStyles(theme => ({
|
|
10
|
+
container: {
|
|
11
|
+
marginBottom: theme.tokens.spacing.lg,
|
|
12
|
+
width: '100%'
|
|
13
|
+
},
|
|
14
|
+
label: {
|
|
15
|
+
marginBottom: theme.tokens.spacing.sm,
|
|
16
|
+
fontSize: theme.tokens.fontSize.md,
|
|
17
|
+
fontWeight: theme.tokens.fontWeight.medium,
|
|
18
|
+
color: theme.colors.text
|
|
19
|
+
},
|
|
20
|
+
required: {
|
|
21
|
+
color: theme.colors.error
|
|
22
|
+
},
|
|
23
|
+
inputWrapper: {
|
|
24
|
+
flexDirection: 'row',
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
backgroundColor: theme.colors.inputBackground,
|
|
27
|
+
borderRadius: theme.tokens.radius.lg,
|
|
28
|
+
borderWidth: 2,
|
|
29
|
+
minHeight: 50
|
|
30
|
+
},
|
|
31
|
+
input: {
|
|
32
|
+
flex: 1,
|
|
33
|
+
paddingVertical: theme.tokens.spacing.md,
|
|
34
|
+
paddingHorizontal: theme.tokens.spacing.lg,
|
|
35
|
+
fontSize: theme.tokens.fontSize.lg,
|
|
36
|
+
color: theme.colors.text
|
|
37
|
+
},
|
|
38
|
+
leftIcon: {
|
|
39
|
+
marginLeft: theme.tokens.spacing.lg,
|
|
40
|
+
marginRight: -theme.tokens.spacing.xs
|
|
41
|
+
},
|
|
42
|
+
rightIcon: {
|
|
43
|
+
padding: theme.tokens.spacing.sm + 2,
|
|
44
|
+
marginRight: theme.tokens.spacing.xs
|
|
45
|
+
},
|
|
46
|
+
errorText: {
|
|
47
|
+
marginTop: theme.tokens.spacing.xs,
|
|
48
|
+
fontSize: theme.tokens.fontSize.sm,
|
|
49
|
+
color: theme.colors.error
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Input
|
|
55
|
+
* El borde anima color entre border/primary/error con Animated (no
|
|
56
|
+
* useNativeDriver: los navegadores de color en RN sin Fabric solo son
|
|
57
|
+
* confiables en el hilo de JS; el costo es despreciable, se anima un borde).
|
|
58
|
+
*/
|
|
59
|
+
export const Input = /*#__PURE__*/memo(({
|
|
60
|
+
label,
|
|
61
|
+
required = false,
|
|
62
|
+
error,
|
|
63
|
+
containerStyle,
|
|
64
|
+
leftIconName,
|
|
65
|
+
rightIconName,
|
|
66
|
+
onRightIconPress,
|
|
67
|
+
isPassword = false,
|
|
68
|
+
isLoading = false,
|
|
69
|
+
style,
|
|
70
|
+
onFocus,
|
|
71
|
+
onBlur,
|
|
72
|
+
testID,
|
|
73
|
+
...props
|
|
74
|
+
}) => {
|
|
75
|
+
const colors = useColors();
|
|
76
|
+
const styles = useStyles();
|
|
77
|
+
const allowFontScaling = useAllowFontScaling();
|
|
78
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
79
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
80
|
+
const focusProgress = useRef(new Animated.Value(0)).current;
|
|
81
|
+
const handleFocus = e => {
|
|
82
|
+
setIsFocused(true);
|
|
83
|
+
Animated.timing(focusProgress, {
|
|
84
|
+
toValue: 1,
|
|
85
|
+
duration: 200,
|
|
86
|
+
useNativeDriver: false
|
|
87
|
+
}).start();
|
|
88
|
+
onFocus?.(e);
|
|
89
|
+
};
|
|
90
|
+
const handleBlur = e => {
|
|
91
|
+
setIsFocused(false);
|
|
92
|
+
Animated.timing(focusProgress, {
|
|
93
|
+
toValue: 0,
|
|
94
|
+
duration: 200,
|
|
95
|
+
useNativeDriver: false
|
|
96
|
+
}).start();
|
|
97
|
+
onBlur?.(e);
|
|
98
|
+
};
|
|
99
|
+
const borderColor = error ? colors.error : focusProgress.interpolate({
|
|
100
|
+
outputRange: [colors.border, colors.primary],
|
|
101
|
+
inputRange: [0, 1]
|
|
102
|
+
});
|
|
103
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
104
|
+
style: [styles.container, containerStyle],
|
|
105
|
+
testID: testID,
|
|
106
|
+
children: [label && /*#__PURE__*/_jsxs(Text, {
|
|
107
|
+
allowFontScaling: allowFontScaling,
|
|
108
|
+
style: styles.label,
|
|
109
|
+
children: [label, required && /*#__PURE__*/_jsx(Text, {
|
|
110
|
+
style: styles.required,
|
|
111
|
+
children: " *"
|
|
112
|
+
})]
|
|
113
|
+
}), /*#__PURE__*/_jsxs(Animated.View, {
|
|
114
|
+
style: [styles.inputWrapper, {
|
|
115
|
+
borderColor
|
|
116
|
+
}],
|
|
117
|
+
children: [leftIconName && /*#__PURE__*/_jsx(Icon, {
|
|
118
|
+
name: leftIconName,
|
|
119
|
+
size: 20,
|
|
120
|
+
color: colors.textLight,
|
|
121
|
+
style: styles.leftIcon
|
|
122
|
+
}), /*#__PURE__*/_jsx(TextInput, {
|
|
123
|
+
style: [styles.input, style],
|
|
124
|
+
placeholderTextColor: colors.textLight,
|
|
125
|
+
onFocus: handleFocus,
|
|
126
|
+
onBlur: handleBlur,
|
|
127
|
+
secureTextEntry: isPassword && !showPassword,
|
|
128
|
+
allowFontScaling: allowFontScaling,
|
|
129
|
+
textAlignVertical: "center",
|
|
130
|
+
accessibilityLabel: label ?? props.placeholder,
|
|
131
|
+
...props
|
|
132
|
+
}), isLoading ? /*#__PURE__*/_jsx(View, {
|
|
133
|
+
style: styles.rightIcon,
|
|
134
|
+
children: /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
135
|
+
size: "small",
|
|
136
|
+
color: colors.primary
|
|
137
|
+
})
|
|
138
|
+
}) : isPassword ? /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
139
|
+
onPress: () => setShowPassword(v => !v),
|
|
140
|
+
style: styles.rightIcon,
|
|
141
|
+
accessibilityRole: "button",
|
|
142
|
+
accessibilityLabel: showPassword ? 'Hide password' : 'Show password',
|
|
143
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
144
|
+
name: showPassword ? 'eye-off' : 'eye',
|
|
145
|
+
size: 20,
|
|
146
|
+
color: colors.textLight
|
|
147
|
+
})
|
|
148
|
+
}) : rightIconName ? /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
149
|
+
onPress: onRightIconPress,
|
|
150
|
+
style: styles.rightIcon,
|
|
151
|
+
disabled: !onRightIconPress,
|
|
152
|
+
accessibilityRole: "button",
|
|
153
|
+
accessibilityLabel: "Clear",
|
|
154
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
155
|
+
name: rightIconName,
|
|
156
|
+
size: 20,
|
|
157
|
+
color: colors.textLight
|
|
158
|
+
})
|
|
159
|
+
}) : null]
|
|
160
|
+
}), !!error && /*#__PURE__*/_jsx(Text, {
|
|
161
|
+
allowFontScaling: allowFontScaling,
|
|
162
|
+
style: styles.errorText,
|
|
163
|
+
children: error
|
|
164
|
+
})]
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
Input.displayName = 'Input';
|
|
168
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useRef","useState","ActivityIndicator","Animated","Text","TextInput","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","Icon","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","marginBottom","tokens","spacing","lg","width","label","sm","fontSize","md","fontWeight","medium","color","colors","text","required","error","inputWrapper","flexDirection","alignItems","backgroundColor","inputBackground","borderRadius","radius","borderWidth","minHeight","input","flex","paddingVertical","paddingHorizontal","leftIcon","marginLeft","marginRight","xs","rightIcon","padding","errorText","marginTop","Input","containerStyle","leftIconName","rightIconName","onRightIconPress","isPassword","isLoading","style","onFocus","onBlur","testID","props","styles","allowFontScaling","isFocused","setIsFocused","showPassword","setShowPassword","focusProgress","Value","current","handleFocus","e","timing","toValue","duration","useNativeDriver","start","handleBlur","borderColor","interpolate","outputRange","border","primary","inputRange","children","name","size","textLight","placeholderTextColor","secureTextEntry","textAlignVertical","accessibilityLabel","placeholder","onPress","v","accessibilityRole","disabled","displayName"],"sourceRoot":"../../../src","sources":["atoms/Input.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACrD,SACEC,iBAAiB,EACjBC,QAAQ,EACRC,IAAI,EACJC,SAAS,EACTC,gBAAgB,EAChBC,IAAI,QAIC,cAAc;AACrB,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,EAAEC,SAAS,QAAQ,qBAAqB;AACpE,SAASC,IAAI,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBrC,MAAMC,SAAS,GAAGR,YAAY,CAAES,KAAK,KAAM;EACzCC,SAAS,EAAE;IAAEC,YAAY,EAAEF,KAAK,CAACG,MAAM,CAACC,OAAO,CAACC,EAAE;IAAEC,KAAK,EAAE;EAAO,CAAC;EACnEC,KAAK,EAAE;IACLL,YAAY,EAAEF,KAAK,CAACG,MAAM,CAACC,OAAO,CAACI,EAAE;IACrCC,QAAQ,EAAET,KAAK,CAACG,MAAM,CAACM,QAAQ,CAACC,EAAE;IAClCC,UAAU,EAAEX,KAAK,CAACG,MAAM,CAACQ,UAAU,CAACC,MAAM;IAC1CC,KAAK,EAAEb,KAAK,CAACc,MAAM,CAACC;EACtB,CAAC;EACDC,QAAQ,EAAE;IAAEH,KAAK,EAAEb,KAAK,CAACc,MAAM,CAACG;EAAM,CAAC;EACvCC,YAAY,EAAE;IACZC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAErB,KAAK,CAACc,MAAM,CAACQ,eAAe;IAC7CC,YAAY,EAAEvB,KAAK,CAACG,MAAM,CAACqB,MAAM,CAACnB,EAAE;IACpCoB,WAAW,EAAE,CAAC;IACdC,SAAS,EAAE;EACb,CAAC;EACDC,KAAK,EAAE;IACLC,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE7B,KAAK,CAACG,MAAM,CAACC,OAAO,CAACM,EAAE;IACxCoB,iBAAiB,EAAE9B,KAAK,CAACG,MAAM,CAACC,OAAO,CAACC,EAAE;IAC1CI,QAAQ,EAAET,KAAK,CAACG,MAAM,CAACM,QAAQ,CAACJ,EAAE;IAClCQ,KAAK,EAAEb,KAAK,CAACc,MAAM,CAACC;EACtB,CAAC;EACDgB,QAAQ,EAAE;IAAEC,UAAU,EAAEhC,KAAK,CAACG,MAAM,CAACC,OAAO,CAACC,EAAE;IAAE4B,WAAW,EAAE,CAACjC,KAAK,CAACG,MAAM,CAACC,OAAO,CAAC8B;EAAG,CAAC;EACxFC,SAAS,EAAE;IAAEC,OAAO,EAAEpC,KAAK,CAACG,MAAM,CAACC,OAAO,CAACI,EAAE,GAAG,CAAC;IAAEyB,WAAW,EAAEjC,KAAK,CAACG,MAAM,CAACC,OAAO,CAAC8B;EAAG,CAAC;EACzFG,SAAS,EAAE;IAAEC,SAAS,EAAEtC,KAAK,CAACG,MAAM,CAACC,OAAO,CAAC8B,EAAE;IAAEzB,QAAQ,EAAET,KAAK,CAACG,MAAM,CAACM,QAAQ,CAACD,EAAE;IAAEK,KAAK,EAAEb,KAAK,CAACc,MAAM,CAACG;EAAM;AACjH,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMsB,KAAK,gBAAGzD,IAAI,CACvB,CAAC;EACCyB,KAAK;EACLS,QAAQ,GAAG,KAAK;EAChBC,KAAK;EACLuB,cAAc;EACdC,YAAY;EACZC,aAAa;EACbC,gBAAgB;EAChBC,UAAU,GAAG,KAAK;EAClBC,SAAS,GAAG,KAAK;EACjBC,KAAK;EACLC,OAAO;EACPC,MAAM;EACNC,MAAM;EACN,GAAGC;AACO,CAAC,KAAK;EAChB,MAAMpC,MAAM,GAAGrB,SAAS,CAAC,CAAC;EAC1B,MAAM0D,MAAM,GAAGpD,SAAS,CAAC,CAAC;EAC1B,MAAMqD,gBAAgB,GAAG5D,mBAAmB,CAAC,CAAC;EAC9C,MAAM,CAAC6D,SAAS,EAAEC,YAAY,CAAC,GAAGtE,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACuE,YAAY,EAAEC,eAAe,CAAC,GAAGxE,QAAQ,CAAC,KAAK,CAAC;EACvD,MAAMyE,aAAa,GAAG1E,MAAM,CAAC,IAAIG,QAAQ,CAACwE,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAE3D,MAAMC,WAAsC,GAAIC,CAAC,IAAK;IACpDP,YAAY,CAAC,IAAI,CAAC;IAClBpE,QAAQ,CAAC4E,MAAM,CAACL,aAAa,EAAE;MAAEM,OAAO,EAAE,CAAC;MAAEC,QAAQ,EAAE,GAAG;MAAEC,eAAe,EAAE;IAAM,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;IAC7FnB,OAAO,GAAGc,CAAC,CAAC;EACd,CAAC;EAED,MAAMM,UAAoC,GAAIN,CAAC,IAAK;IAClDP,YAAY,CAAC,KAAK,CAAC;IACnBpE,QAAQ,CAAC4E,MAAM,CAACL,aAAa,EAAE;MAAEM,OAAO,EAAE,CAAC;MAAEC,QAAQ,EAAE,GAAG;MAAEC,eAAe,EAAE;IAAM,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;IAC7FlB,MAAM,GAAGa,CAAC,CAAC;EACb,CAAC;EAED,MAAMO,WAAW,GAAGnD,KAAK,GACrBH,MAAM,CAACG,KAAK,GACZwC,aAAa,CAACY,WAAW,CAAC;IAAEC,WAAW,EAAE,CAACxD,MAAM,CAACyD,MAAM,EAAEzD,MAAM,CAAC0D,OAAO,CAAC;IAAEC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;EAAE,CAAC,CAAC;EAEnG,oBACE3E,KAAA,CAACR,IAAI;IAACwD,KAAK,EAAE,CAACK,MAAM,CAAClD,SAAS,EAAEuC,cAAc,CAAE;IAACS,MAAM,EAAEA,MAAO;IAAAyB,QAAA,GAC7DnE,KAAK,iBACJT,KAAA,CAACX,IAAI;MAACiE,gBAAgB,EAAEA,gBAAiB;MAACN,KAAK,EAAEK,MAAM,CAAC5C,KAAM;MAAAmE,QAAA,GAC3DnE,KAAK,EACLS,QAAQ,iBAAIpB,IAAA,CAACT,IAAI;QAAC2D,KAAK,EAAEK,MAAM,CAACnC,QAAS;QAAA0D,QAAA,EAAC;MAAE,CAAM,CAAC;IAAA,CAChD,CACP,eAED5E,KAAA,CAACZ,QAAQ,CAACI,IAAI;MAACwD,KAAK,EAAE,CAACK,MAAM,CAACjC,YAAY,EAAE;QAAEkD;MAAY,CAAC,CAAE;MAAAM,QAAA,GAC1DjC,YAAY,iBAAI7C,IAAA,CAACF,IAAI;QAACiF,IAAI,EAAElC,YAAa;QAACmC,IAAI,EAAE,EAAG;QAAC/D,KAAK,EAAEC,MAAM,CAAC+D,SAAU;QAAC/B,KAAK,EAAEK,MAAM,CAACpB;MAAS,CAAE,CAAC,eAExGnC,IAAA,CAACR,SAAS;QACR0D,KAAK,EAAE,CAACK,MAAM,CAACxB,KAAK,EAAEmB,KAAK,CAAE;QAC7BgC,oBAAoB,EAAEhE,MAAM,CAAC+D,SAAU;QACvC9B,OAAO,EAAEa,WAAY;QACrBZ,MAAM,EAAEmB,UAAW;QACnBY,eAAe,EAAEnC,UAAU,IAAI,CAACW,YAAa;QAC7CH,gBAAgB,EAAEA,gBAAiB;QACnC4B,iBAAiB,EAAC,QAAQ;QAC1BC,kBAAkB,EAAE1E,KAAK,IAAI2C,KAAK,CAACgC,WAAY;QAAA,GAC3ChC;MAAK,CACV,CAAC,EAEDL,SAAS,gBACRjD,IAAA,CAACN,IAAI;QAACwD,KAAK,EAAEK,MAAM,CAAChB,SAAU;QAAAuC,QAAA,eAC5B9E,IAAA,CAACX,iBAAiB;UAAC2F,IAAI,EAAC,OAAO;UAAC/D,KAAK,EAAEC,MAAM,CAAC0D;QAAQ,CAAE;MAAC,CACrD,CAAC,GACL5B,UAAU,gBACZhD,IAAA,CAACP,gBAAgB;QACf8F,OAAO,EAAEA,CAAA,KAAM3B,eAAe,CAAE4B,CAAC,IAAK,CAACA,CAAC,CAAE;QAC1CtC,KAAK,EAAEK,MAAM,CAAChB,SAAU;QACxBkD,iBAAiB,EAAC,QAAQ;QAC1BJ,kBAAkB,EAAE1B,YAAY,GAAG,eAAe,GAAG,eAAgB;QAAAmB,QAAA,eAErE9E,IAAA,CAACF,IAAI;UAACiF,IAAI,EAAEpB,YAAY,GAAG,SAAS,GAAG,KAAM;UAACqB,IAAI,EAAE,EAAG;UAAC/D,KAAK,EAAEC,MAAM,CAAC+D;QAAU,CAAE;MAAC,CACnE,CAAC,GACjBnC,aAAa,gBACf9C,IAAA,CAACP,gBAAgB;QACf8F,OAAO,EAAExC,gBAAiB;QAC1BG,KAAK,EAAEK,MAAM,CAAChB,SAAU;QACxBmD,QAAQ,EAAE,CAAC3C,gBAAiB;QAC5B0C,iBAAiB,EAAC,QAAQ;QAC1BJ,kBAAkB,EAAC,OAAO;QAAAP,QAAA,eAE1B9E,IAAA,CAACF,IAAI;UAACiF,IAAI,EAAEjC,aAAc;UAACkC,IAAI,EAAE,EAAG;UAAC/D,KAAK,EAAEC,MAAM,CAAC+D;QAAU,CAAE;MAAC,CAChD,CAAC,GACjB,IAAI;IAAA,CACK,CAAC,EAEf,CAAC,CAAC5D,KAAK,iBACNrB,IAAA,CAACT,IAAI;MAACiE,gBAAgB,EAAEA,gBAAiB;MAACN,KAAK,EAAEK,MAAM,CAACd,SAAU;MAAAqC,QAAA,EAC/DzD;IAAK,CACF,CACP;EAAA,CACG,CAAC;AAEX,CACF,CAAC;AACDsB,KAAK,CAACgD,WAAW,GAAG,OAAO","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo } from 'react';
|
|
4
|
+
import { Text, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling } from '../theme/UIProvider';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
const useStyles = createStyles(theme => ({
|
|
9
|
+
row: {
|
|
10
|
+
flexDirection: 'row',
|
|
11
|
+
justifyContent: 'space-between',
|
|
12
|
+
alignItems: 'center'
|
|
13
|
+
},
|
|
14
|
+
label: {
|
|
15
|
+
fontSize: theme.tokens.fontSize.sm,
|
|
16
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
17
|
+
color: theme.colors.textLight
|
|
18
|
+
},
|
|
19
|
+
value: {
|
|
20
|
+
fontSize: theme.tokens.fontSize.sm,
|
|
21
|
+
textAlign: 'right',
|
|
22
|
+
color: theme.colors.text
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* KeyValueRow
|
|
28
|
+
* Fila label (izquierda) / value (derecha). Si label/value son string o
|
|
29
|
+
* number, se renderizan con el estilo default; si ya vienen envueltos en un
|
|
30
|
+
* componente de texto propio, se respetan tal cual.
|
|
31
|
+
*/
|
|
32
|
+
export const KeyValueRow = /*#__PURE__*/memo(({
|
|
33
|
+
label,
|
|
34
|
+
value,
|
|
35
|
+
style,
|
|
36
|
+
labelStyle,
|
|
37
|
+
valueStyle
|
|
38
|
+
}) => {
|
|
39
|
+
const styles = useStyles();
|
|
40
|
+
const allowFontScaling = useAllowFontScaling();
|
|
41
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
42
|
+
style: [styles.row, style],
|
|
43
|
+
children: [typeof label === 'string' || typeof label === 'number' ? /*#__PURE__*/_jsx(Text, {
|
|
44
|
+
allowFontScaling: allowFontScaling,
|
|
45
|
+
style: [styles.label, labelStyle],
|
|
46
|
+
children: label
|
|
47
|
+
}) : label, typeof value === 'string' || typeof value === 'number' ? /*#__PURE__*/_jsx(Text, {
|
|
48
|
+
allowFontScaling: allowFontScaling,
|
|
49
|
+
style: [styles.value, valueStyle],
|
|
50
|
+
children: value
|
|
51
|
+
}) : value]
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
KeyValueRow.displayName = 'KeyValueRow';
|
|
55
|
+
//# sourceMappingURL=KeyValueRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","Text","View","createStyles","useAllowFontScaling","jsx","_jsx","jsxs","_jsxs","useStyles","theme","row","flexDirection","justifyContent","alignItems","label","fontSize","tokens","sm","fontWeight","semibold","color","colors","textLight","value","textAlign","text","KeyValueRow","style","labelStyle","valueStyle","styles","allowFontScaling","children","displayName"],"sourceRoot":"../../../src","sources":["atoms/KeyValueRow.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,EAAEC,IAAI,QAAwD,cAAc;AACzF,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAU1D,MAAMC,SAAS,GAAGN,YAAY,CAAEO,KAAK,KAAM;EACzCC,GAAG,EAAE;IAAEC,aAAa,EAAE,KAAK;IAAEC,cAAc,EAAE,eAAe;IAAEC,UAAU,EAAE;EAAS,CAAC;EACpFC,KAAK,EAAE;IAAEC,QAAQ,EAAEN,KAAK,CAACO,MAAM,CAACD,QAAQ,CAACE,EAAE;IAAEC,UAAU,EAAET,KAAK,CAACO,MAAM,CAACE,UAAU,CAACC,QAAQ;IAAEC,KAAK,EAAEX,KAAK,CAACY,MAAM,CAACC;EAAU,CAAC;EAC1HC,KAAK,EAAE;IAAER,QAAQ,EAAEN,KAAK,CAACO,MAAM,CAACD,QAAQ,CAACE,EAAE;IAAEO,SAAS,EAAE,OAAO;IAAEJ,KAAK,EAAEX,KAAK,CAACY,MAAM,CAACI;EAAK;AAC5F,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,gBAAG3B,IAAI,CAAC,CAAC;EAAEe,KAAK;EAAES,KAAK;EAAEI,KAAK;EAAEC,UAAU;EAAEC;AAA6B,CAAC,KAAK;EACrG,MAAMC,MAAM,GAAGtB,SAAS,CAAC,CAAC;EAC1B,MAAMuB,gBAAgB,GAAG5B,mBAAmB,CAAC,CAAC;EAC9C,oBACEI,KAAA,CAACN,IAAI;IAAC0B,KAAK,EAAE,CAACG,MAAM,CAACpB,GAAG,EAAEiB,KAAK,CAAE;IAAAK,QAAA,GAC9B,OAAOlB,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,gBACrDT,IAAA,CAACL,IAAI;MAAC+B,gBAAgB,EAAEA,gBAAiB;MAACJ,KAAK,EAAE,CAACG,MAAM,CAAChB,KAAK,EAAEc,UAAU,CAAE;MAAAI,QAAA,EACzElB;IAAK,CACF,CAAC,GAEPA,KACD,EACA,OAAOS,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,gBACrDlB,IAAA,CAACL,IAAI;MAAC+B,gBAAgB,EAAEA,gBAAiB;MAACJ,KAAK,EAAE,CAACG,MAAM,CAACP,KAAK,EAAEM,UAAU,CAAE;MAAAG,QAAA,EACzET;IAAK,CACF,CAAC,GAEPA,KACD;EAAA,CACG,CAAC;AAEX,CAAC,CAAC;AACFG,WAAW,CAACO,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useRef } from 'react';
|
|
4
|
+
import { Animated, Pressable } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
/**
|
|
7
|
+
* PressableScale
|
|
8
|
+
* Feedback táctil de "achicarse" al presionar, con Animated.spring de RN
|
|
9
|
+
* (useNativeDriver: true — corre en el hilo nativo, sin coste de JS por frame).
|
|
10
|
+
* No depende de reanimated: la librería entera es cero-dependencias.
|
|
11
|
+
*/
|
|
12
|
+
export const PressableScale = /*#__PURE__*/memo(({
|
|
13
|
+
scaleTo = 0.96,
|
|
14
|
+
style,
|
|
15
|
+
children,
|
|
16
|
+
onPressIn,
|
|
17
|
+
onPressOut,
|
|
18
|
+
disabled,
|
|
19
|
+
...props
|
|
20
|
+
}) => {
|
|
21
|
+
const scale = useRef(new Animated.Value(1)).current;
|
|
22
|
+
const animateTo = value => {
|
|
23
|
+
Animated.spring(scale, {
|
|
24
|
+
toValue: value,
|
|
25
|
+
useNativeDriver: true,
|
|
26
|
+
speed: 50,
|
|
27
|
+
bounciness: 6
|
|
28
|
+
}).start();
|
|
29
|
+
};
|
|
30
|
+
const handlePressIn = e => {
|
|
31
|
+
if (!disabled) animateTo(scaleTo);
|
|
32
|
+
onPressIn?.(e);
|
|
33
|
+
};
|
|
34
|
+
const handlePressOut = e => {
|
|
35
|
+
if (!disabled) animateTo(1);
|
|
36
|
+
onPressOut?.(e);
|
|
37
|
+
};
|
|
38
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
39
|
+
...props,
|
|
40
|
+
disabled: disabled,
|
|
41
|
+
onPressIn: handlePressIn,
|
|
42
|
+
onPressOut: handlePressOut,
|
|
43
|
+
style: style,
|
|
44
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
45
|
+
style: {
|
|
46
|
+
transform: [{
|
|
47
|
+
scale
|
|
48
|
+
}]
|
|
49
|
+
},
|
|
50
|
+
children: children
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
PressableScale.displayName = 'PressableScale';
|
|
55
|
+
//# sourceMappingURL=PressableScale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useRef","Animated","Pressable","jsx","_jsx","PressableScale","scaleTo","style","children","onPressIn","onPressOut","disabled","props","scale","Value","current","animateTo","value","spring","toValue","useNativeDriver","speed","bounciness","start","handlePressIn","e","handlePressOut","View","transform","displayName"],"sourceRoot":"../../../src","sources":["atoms/PressableScale.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SAASC,QAAQ,EAAEC,SAAS,QAAyD,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQpG;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,gBAAGN,IAAI,CAChC,CAAC;EAAEO,OAAO,GAAG,IAAI;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,UAAU;EAAEC,QAAQ;EAAE,GAAGC;AAA2B,CAAC,KAAK;EACvG,MAAMC,KAAK,GAAGb,MAAM,CAAC,IAAIC,QAAQ,CAACa,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEnD,MAAMC,SAAS,GAAIC,KAAa,IAAK;IACnChB,QAAQ,CAACiB,MAAM,CAACL,KAAK,EAAE;MACrBM,OAAO,EAAEF,KAAK;MACdG,eAAe,EAAE,IAAI;MACrBC,KAAK,EAAE,EAAE;MACTC,UAAU,EAAE;IACd,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EACZ,CAAC;EAED,MAAMC,aAAa,GAAIC,CAAwB,IAAK;IAClD,IAAI,CAACd,QAAQ,EAAEK,SAAS,CAACV,OAAO,CAAC;IACjCG,SAAS,GAAGgB,CAAC,CAAC;EAChB,CAAC;EAED,MAAMC,cAAc,GAAID,CAAwB,IAAK;IACnD,IAAI,CAACd,QAAQ,EAAEK,SAAS,CAAC,CAAC,CAAC;IAC3BN,UAAU,GAAGe,CAAC,CAAC;EACjB,CAAC;EAED,oBACErB,IAAA,CAACF,SAAS;IAAA,GACJU,KAAK;IACTD,QAAQ,EAAEA,QAAS;IACnBF,SAAS,EAAEe,aAAc;IACzBd,UAAU,EAAEgB,cAAe;IAC3BnB,KAAK,EAAEA,KAAM;IAAAC,QAAA,eAEbJ,IAAA,CAACH,QAAQ,CAAC0B,IAAI;MAACpB,KAAK,EAAE;QAAEqB,SAAS,EAAE,CAAC;UAAEf;QAAM,CAAC;MAAE,CAAE;MAAAL,QAAA,EAAEA;IAAQ,CAAgB;EAAC,CACnE,CAAC;AAEhB,CACF,CAAC;AACDH,cAAc,CAACwB,WAAW,GAAG,gBAAgB","ignoreList":[]}
|