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,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Select = Select;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _createStyles = require("../theme/createStyles");
|
|
10
|
+
var _UIProvider = require("../theme/UIProvider");
|
|
11
|
+
var _Icon = require("../icons/Icon");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
15
|
+
container: {
|
|
16
|
+
gap: theme.tokens.spacing.sm
|
|
17
|
+
},
|
|
18
|
+
containerOpen: {
|
|
19
|
+
zIndex: 20,
|
|
20
|
+
elevation: 20
|
|
21
|
+
},
|
|
22
|
+
label: {
|
|
23
|
+
fontWeight: theme.tokens.fontWeight.bold,
|
|
24
|
+
fontSize: theme.tokens.fontSize.md,
|
|
25
|
+
color: theme.colors.text
|
|
26
|
+
},
|
|
27
|
+
required: {
|
|
28
|
+
color: theme.colors.error
|
|
29
|
+
},
|
|
30
|
+
field: {
|
|
31
|
+
flexDirection: 'row',
|
|
32
|
+
alignItems: 'center',
|
|
33
|
+
justifyContent: 'space-between',
|
|
34
|
+
borderWidth: 2,
|
|
35
|
+
borderColor: theme.colors.border,
|
|
36
|
+
borderRadius: theme.tokens.radius.lg,
|
|
37
|
+
backgroundColor: theme.colors.inputBackground,
|
|
38
|
+
minHeight: 50,
|
|
39
|
+
paddingHorizontal: theme.tokens.spacing.lg
|
|
40
|
+
},
|
|
41
|
+
fieldText: {
|
|
42
|
+
fontSize: theme.tokens.fontSize.lg,
|
|
43
|
+
color: theme.colors.text
|
|
44
|
+
},
|
|
45
|
+
fieldPlaceholder: {
|
|
46
|
+
color: theme.colors.textLight
|
|
47
|
+
},
|
|
48
|
+
optionsList: {
|
|
49
|
+
position: 'absolute',
|
|
50
|
+
top: '100%',
|
|
51
|
+
left: 0,
|
|
52
|
+
right: 0,
|
|
53
|
+
marginTop: theme.tokens.spacing.sm,
|
|
54
|
+
borderWidth: 2,
|
|
55
|
+
borderColor: theme.colors.border,
|
|
56
|
+
borderRadius: theme.tokens.radius.lg,
|
|
57
|
+
backgroundColor: theme.colors.surface,
|
|
58
|
+
overflow: 'hidden',
|
|
59
|
+
zIndex: 20,
|
|
60
|
+
elevation: 20,
|
|
61
|
+
...theme.tokens.shadow.md
|
|
62
|
+
},
|
|
63
|
+
optionRow: {
|
|
64
|
+
flexDirection: 'row',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
justifyContent: 'space-between',
|
|
67
|
+
paddingHorizontal: theme.tokens.spacing.lg,
|
|
68
|
+
paddingVertical: theme.tokens.spacing.md + 2,
|
|
69
|
+
borderBottomWidth: 1,
|
|
70
|
+
borderBottomColor: theme.colors.border
|
|
71
|
+
},
|
|
72
|
+
optionRowLast: {
|
|
73
|
+
borderBottomWidth: 0
|
|
74
|
+
},
|
|
75
|
+
optionRowSelected: {
|
|
76
|
+
backgroundColor: theme.colors.primary + '15'
|
|
77
|
+
},
|
|
78
|
+
optionText: {
|
|
79
|
+
fontSize: theme.tokens.fontSize.lg - 1,
|
|
80
|
+
color: theme.colors.text
|
|
81
|
+
},
|
|
82
|
+
optionTextSelected: {
|
|
83
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
84
|
+
color: theme.colors.primary
|
|
85
|
+
},
|
|
86
|
+
errorText: {
|
|
87
|
+
fontSize: theme.tokens.fontSize.sm,
|
|
88
|
+
color: theme.colors.error
|
|
89
|
+
}
|
|
90
|
+
}));
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Select
|
|
94
|
+
* Dropdown que expande la lista de opciones flotando sobre el resto del
|
|
95
|
+
* contenido (position: absolute), en vez de empujarlo hacia abajo o abrir
|
|
96
|
+
* un picker nativo del sistema.
|
|
97
|
+
*/
|
|
98
|
+
function Select({
|
|
99
|
+
label,
|
|
100
|
+
required = false,
|
|
101
|
+
options,
|
|
102
|
+
selectedValue,
|
|
103
|
+
onSelect,
|
|
104
|
+
placeholder,
|
|
105
|
+
error,
|
|
106
|
+
isLoading = false,
|
|
107
|
+
containerStyle
|
|
108
|
+
}) {
|
|
109
|
+
const colors = (0, _UIProvider.useColors)();
|
|
110
|
+
const styles = useStyles();
|
|
111
|
+
const labels = (0, _UIProvider.useLabels)();
|
|
112
|
+
const allowFontScaling = (0, _UIProvider.useAllowFontScaling)();
|
|
113
|
+
const [open, setOpen] = (0, _react.useState)(false);
|
|
114
|
+
const selectedOption = options.find(o => o.value === selectedValue);
|
|
115
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
116
|
+
style: [styles.container, open && styles.containerOpen, containerStyle],
|
|
117
|
+
children: [label && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
118
|
+
allowFontScaling: allowFontScaling,
|
|
119
|
+
style: styles.label,
|
|
120
|
+
children: [label, required && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
121
|
+
style: styles.required,
|
|
122
|
+
children: " *"
|
|
123
|
+
})]
|
|
124
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
|
|
125
|
+
style: styles.field,
|
|
126
|
+
onPress: () => !isLoading && setOpen(o => !o),
|
|
127
|
+
disabled: isLoading,
|
|
128
|
+
accessibilityRole: "button",
|
|
129
|
+
accessibilityLabel: label ?? placeholder ?? labels.selectPlaceholder,
|
|
130
|
+
accessibilityState: {
|
|
131
|
+
expanded: open,
|
|
132
|
+
disabled: isLoading
|
|
133
|
+
},
|
|
134
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
135
|
+
allowFontScaling: allowFontScaling,
|
|
136
|
+
style: [styles.fieldText, !selectedOption && styles.fieldPlaceholder],
|
|
137
|
+
children: selectedOption?.label || placeholder || labels.selectPlaceholder
|
|
138
|
+
}), isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
139
|
+
size: "small",
|
|
140
|
+
color: colors.primary
|
|
141
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
142
|
+
name: open ? 'chevron-up' : 'chevron-down',
|
|
143
|
+
size: 20,
|
|
144
|
+
color: colors.textLight
|
|
145
|
+
})]
|
|
146
|
+
}), open && !isLoading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
147
|
+
style: styles.optionsList,
|
|
148
|
+
children: options.map((option, index) => {
|
|
149
|
+
const isSelected = option.value === selectedValue;
|
|
150
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
|
|
151
|
+
style: [styles.optionRow, index === options.length - 1 && styles.optionRowLast, isSelected && styles.optionRowSelected],
|
|
152
|
+
onPress: () => {
|
|
153
|
+
onSelect(option.value);
|
|
154
|
+
setOpen(false);
|
|
155
|
+
},
|
|
156
|
+
accessibilityRole: "menuitem",
|
|
157
|
+
accessibilityState: {
|
|
158
|
+
selected: isSelected
|
|
159
|
+
},
|
|
160
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
161
|
+
allowFontScaling: allowFontScaling,
|
|
162
|
+
style: [styles.optionText, isSelected && styles.optionTextSelected],
|
|
163
|
+
children: option.label
|
|
164
|
+
}), isSelected && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
165
|
+
name: "check",
|
|
166
|
+
size: 18,
|
|
167
|
+
color: colors.primary
|
|
168
|
+
})]
|
|
169
|
+
}, String(option.value));
|
|
170
|
+
})
|
|
171
|
+
}), !!error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
172
|
+
allowFontScaling: allowFontScaling,
|
|
173
|
+
style: styles.errorText,
|
|
174
|
+
children: error
|
|
175
|
+
})]
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_Icon","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStyles","createStyles","theme","container","gap","tokens","spacing","sm","containerOpen","zIndex","elevation","label","fontWeight","bold","fontSize","md","color","colors","text","required","error","field","flexDirection","alignItems","justifyContent","borderWidth","borderColor","border","borderRadius","radius","lg","backgroundColor","inputBackground","minHeight","paddingHorizontal","fieldText","fieldPlaceholder","textLight","optionsList","position","top","left","right","marginTop","surface","overflow","shadow","optionRow","paddingVertical","borderBottomWidth","borderBottomColor","optionRowLast","optionRowSelected","primary","optionText","optionTextSelected","semibold","errorText","Select","options","selectedValue","onSelect","placeholder","isLoading","containerStyle","useColors","styles","labels","useLabels","allowFontScaling","useAllowFontScaling","open","setOpen","useState","selectedOption","find","value","jsxs","View","style","children","Text","jsx","Pressable","onPress","disabled","accessibilityRole","accessibilityLabel","selectPlaceholder","accessibilityState","expanded","ActivityIndicator","size","Icon","name","map","option","index","isSelected","length","selected","String"],"sourceRoot":"../../../src","sources":["organisms/Select.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Toast = exports.AnimatedToast = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _createStyles = require("../theme/createStyles");
|
|
10
|
+
var _UIProvider = require("../theme/UIProvider");
|
|
11
|
+
var _Icon = require("../icons/Icon");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
const ICON_BY_VARIANT = {
|
|
15
|
+
success: 'check',
|
|
16
|
+
error: 'alert',
|
|
17
|
+
warning: 'warning',
|
|
18
|
+
info: 'info'
|
|
19
|
+
};
|
|
20
|
+
const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
21
|
+
container: {
|
|
22
|
+
flexDirection: 'row',
|
|
23
|
+
alignItems: 'center',
|
|
24
|
+
gap: theme.tokens.spacing.md,
|
|
25
|
+
backgroundColor: theme.colors.surface,
|
|
26
|
+
borderRadius: theme.tokens.radius.lg,
|
|
27
|
+
borderWidth: 1,
|
|
28
|
+
borderColor: theme.colors.border,
|
|
29
|
+
paddingVertical: theme.tokens.spacing.md,
|
|
30
|
+
paddingHorizontal: theme.tokens.spacing.lg,
|
|
31
|
+
...theme.tokens.shadow.lg
|
|
32
|
+
},
|
|
33
|
+
accent: {
|
|
34
|
+
position: 'absolute',
|
|
35
|
+
left: 0,
|
|
36
|
+
top: 0,
|
|
37
|
+
bottom: 0,
|
|
38
|
+
width: 4,
|
|
39
|
+
borderTopLeftRadius: theme.tokens.radius.lg,
|
|
40
|
+
borderBottomLeftRadius: theme.tokens.radius.lg
|
|
41
|
+
},
|
|
42
|
+
text: {
|
|
43
|
+
flex: 1,
|
|
44
|
+
gap: 2
|
|
45
|
+
},
|
|
46
|
+
title: {
|
|
47
|
+
fontSize: theme.tokens.fontSize.md,
|
|
48
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
49
|
+
color: theme.colors.text
|
|
50
|
+
},
|
|
51
|
+
message: {
|
|
52
|
+
fontSize: theme.tokens.fontSize.sm,
|
|
53
|
+
color: theme.colors.textLight,
|
|
54
|
+
lineHeight: theme.tokens.lineHeight.sm
|
|
55
|
+
}
|
|
56
|
+
}));
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Toast
|
|
60
|
+
* Notificación efímera. Normalmente no se usa directo: `ToastProvider` +
|
|
61
|
+
* `useToast()` la montan y la descartan por vos. Se expone igual por si
|
|
62
|
+
* querés colocarla vos mismo dentro de una pantalla concreta.
|
|
63
|
+
*/
|
|
64
|
+
const Toast = exports.Toast = /*#__PURE__*/(0, _react.memo)(({
|
|
65
|
+
title,
|
|
66
|
+
message,
|
|
67
|
+
variant = 'info',
|
|
68
|
+
onPress,
|
|
69
|
+
onDismiss,
|
|
70
|
+
hideCloseButton,
|
|
71
|
+
style,
|
|
72
|
+
testID
|
|
73
|
+
}) => {
|
|
74
|
+
const colors = (0, _UIProvider.useColors)();
|
|
75
|
+
const styles = useStyles();
|
|
76
|
+
const allowFontScaling = (0, _UIProvider.useAllowFontScaling)();
|
|
77
|
+
const accentColor = {
|
|
78
|
+
success: colors.success,
|
|
79
|
+
error: colors.error,
|
|
80
|
+
warning: colors.warning,
|
|
81
|
+
info: colors.secondary
|
|
82
|
+
};
|
|
83
|
+
const body = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
84
|
+
style: [styles.container, style],
|
|
85
|
+
testID: testID,
|
|
86
|
+
accessibilityRole: "alert",
|
|
87
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
88
|
+
style: [styles.accent, {
|
|
89
|
+
backgroundColor: accentColor[variant]
|
|
90
|
+
}]
|
|
91
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
92
|
+
name: ICON_BY_VARIANT[variant],
|
|
93
|
+
size: 22,
|
|
94
|
+
color: accentColor[variant]
|
|
95
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
96
|
+
style: styles.text,
|
|
97
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
98
|
+
allowFontScaling: allowFontScaling,
|
|
99
|
+
style: styles.title,
|
|
100
|
+
children: title
|
|
101
|
+
}), !!message && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
102
|
+
allowFontScaling: allowFontScaling,
|
|
103
|
+
style: styles.message,
|
|
104
|
+
children: message
|
|
105
|
+
})]
|
|
106
|
+
}), !hideCloseButton && !!onDismiss && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
107
|
+
onPress: onDismiss,
|
|
108
|
+
accessibilityRole: "button",
|
|
109
|
+
accessibilityLabel: "Dismiss",
|
|
110
|
+
hitSlop: 8,
|
|
111
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
|
|
112
|
+
name: "close",
|
|
113
|
+
size: 18,
|
|
114
|
+
color: colors.textLight
|
|
115
|
+
})
|
|
116
|
+
})]
|
|
117
|
+
});
|
|
118
|
+
if (!onPress) return body;
|
|
119
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
120
|
+
onPress: onPress,
|
|
121
|
+
accessibilityRole: "button",
|
|
122
|
+
accessibilityLabel: title,
|
|
123
|
+
children: body
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
Toast.displayName = 'Toast';
|
|
127
|
+
|
|
128
|
+
/** Envuelve un Toast con su animación de entrada/salida. Uso interno del provider. */
|
|
129
|
+
const AnimatedToast = exports.AnimatedToast = /*#__PURE__*/(0, _react.memo)(({
|
|
130
|
+
children,
|
|
131
|
+
onHeight
|
|
132
|
+
}) => {
|
|
133
|
+
const progress = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
|
|
134
|
+
(0, _react.useEffect)(() => {
|
|
135
|
+
_reactNative.Animated.spring(progress, {
|
|
136
|
+
toValue: 1,
|
|
137
|
+
useNativeDriver: true,
|
|
138
|
+
speed: 14,
|
|
139
|
+
bounciness: 4
|
|
140
|
+
}).start();
|
|
141
|
+
}, [progress]);
|
|
142
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
143
|
+
onLayout: e => onHeight?.(e.nativeEvent.layout.height),
|
|
144
|
+
style: {
|
|
145
|
+
opacity: progress,
|
|
146
|
+
transform: [{
|
|
147
|
+
translateY: progress.interpolate({
|
|
148
|
+
inputRange: [0, 1],
|
|
149
|
+
outputRange: [-16, 0]
|
|
150
|
+
})
|
|
151
|
+
}]
|
|
152
|
+
},
|
|
153
|
+
children: children
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
AnimatedToast.displayName = 'AnimatedToast';
|
|
157
|
+
//# sourceMappingURL=Toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_Icon","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ICON_BY_VARIANT","success","error","warning","info","useStyles","createStyles","theme","container","flexDirection","alignItems","gap","tokens","spacing","md","backgroundColor","colors","surface","borderRadius","radius","lg","borderWidth","borderColor","border","paddingVertical","paddingHorizontal","shadow","accent","position","left","top","bottom","width","borderTopLeftRadius","borderBottomLeftRadius","text","flex","title","fontSize","fontWeight","semibold","color","message","sm","textLight","lineHeight","Toast","exports","memo","variant","onPress","onDismiss","hideCloseButton","style","testID","useColors","styles","allowFontScaling","useAllowFontScaling","accentColor","secondary","body","jsxs","View","accessibilityRole","children","jsx","Icon","name","size","Text","Pressable","accessibilityLabel","hitSlop","displayName","AnimatedToast","onHeight","progress","useRef","Animated","Value","current","useEffect","spring","toValue","useNativeDriver","speed","bounciness","start","onLayout","nativeEvent","layout","height","opacity","transform","translateY","interpolate","inputRange","outputRange"],"sourceRoot":"../../../src","sources":["organisms/Toast.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ToastProvider = ToastProvider;
|
|
7
|
+
exports.useToast = useToast;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _Toast = require("./Toast");
|
|
11
|
+
var _UIProvider = require("../theme/UIProvider");
|
|
12
|
+
var _createStyles = require("../theme/createStyles");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
const ToastContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
16
|
+
const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
17
|
+
host: {
|
|
18
|
+
position: 'absolute',
|
|
19
|
+
left: 0,
|
|
20
|
+
right: 0,
|
|
21
|
+
paddingHorizontal: theme.tokens.spacing.lg,
|
|
22
|
+
gap: theme.tokens.spacing.sm
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
/**
|
|
26
|
+
* ToastProvider
|
|
27
|
+
* Monta la capa de toasts sobre el resto de la app. Colocar una vez cerca de
|
|
28
|
+
* la raíz, dentro de UIProvider. Los timers de auto-dismiss se limpian al
|
|
29
|
+
* desmontar y al cerrar cada toast, así que no quedan callbacks colgados.
|
|
30
|
+
*/
|
|
31
|
+
function ToastProvider({
|
|
32
|
+
children,
|
|
33
|
+
position = 'top',
|
|
34
|
+
maxVisible = 3,
|
|
35
|
+
defaultDuration = 4000
|
|
36
|
+
}) {
|
|
37
|
+
const [toasts, setToasts] = (0, _react.useState)([]);
|
|
38
|
+
const timers = (0, _react.useRef)(new Map());
|
|
39
|
+
const counter = (0, _react.useRef)(0);
|
|
40
|
+
const insets = (0, _UIProvider.useInsets)();
|
|
41
|
+
const styles = useStyles();
|
|
42
|
+
const clearTimer = (0, _react.useCallback)(id => {
|
|
43
|
+
const t = timers.current.get(id);
|
|
44
|
+
if (t) {
|
|
45
|
+
clearTimeout(t);
|
|
46
|
+
timers.current.delete(id);
|
|
47
|
+
}
|
|
48
|
+
}, []);
|
|
49
|
+
const hide = (0, _react.useCallback)(id => {
|
|
50
|
+
clearTimer(id);
|
|
51
|
+
setToasts(prev => prev.filter(t => t.id !== id));
|
|
52
|
+
}, [clearTimer]);
|
|
53
|
+
const hideAll = (0, _react.useCallback)(() => {
|
|
54
|
+
timers.current.forEach(t => clearTimeout(t));
|
|
55
|
+
timers.current.clear();
|
|
56
|
+
setToasts([]);
|
|
57
|
+
}, []);
|
|
58
|
+
const show = (0, _react.useCallback)(options => {
|
|
59
|
+
counter.current += 1;
|
|
60
|
+
const id = `toast-${counter.current}`;
|
|
61
|
+
const duration = options.duration ?? defaultDuration;
|
|
62
|
+
setToasts(prev => {
|
|
63
|
+
const next = [...prev, {
|
|
64
|
+
...options,
|
|
65
|
+
id
|
|
66
|
+
}];
|
|
67
|
+
// Se descartan los más viejos, no los recién llegados: un toast nuevo
|
|
68
|
+
// siempre se ve.
|
|
69
|
+
const overflow = next.length - maxVisible;
|
|
70
|
+
if (overflow > 0) {
|
|
71
|
+
next.slice(0, overflow).forEach(t => clearTimer(t.id));
|
|
72
|
+
return next.slice(overflow);
|
|
73
|
+
}
|
|
74
|
+
return next;
|
|
75
|
+
});
|
|
76
|
+
if (duration > 0) {
|
|
77
|
+
timers.current.set(id, setTimeout(() => hide(id), duration));
|
|
78
|
+
}
|
|
79
|
+
return id;
|
|
80
|
+
}, [defaultDuration, maxVisible, hide, clearTimer]);
|
|
81
|
+
|
|
82
|
+
// Al desmontar el provider no debe quedar ningún setTimeout apuntando a un
|
|
83
|
+
// setState de un árbol ya desmontado.
|
|
84
|
+
(0, _react.useEffect)(() => {
|
|
85
|
+
const pending = timers.current;
|
|
86
|
+
return () => {
|
|
87
|
+
pending.forEach(t => clearTimeout(t));
|
|
88
|
+
pending.clear();
|
|
89
|
+
};
|
|
90
|
+
}, []);
|
|
91
|
+
const value = (0, _react.useMemo)(() => ({
|
|
92
|
+
show,
|
|
93
|
+
hide,
|
|
94
|
+
hideAll
|
|
95
|
+
}), [show, hide, hideAll]);
|
|
96
|
+
const hostPosition = position === 'top' ? {
|
|
97
|
+
top: insets.top + 8
|
|
98
|
+
} : {
|
|
99
|
+
bottom: insets.bottom + 8,
|
|
100
|
+
flexDirection: 'column-reverse'
|
|
101
|
+
};
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(ToastContext.Provider, {
|
|
103
|
+
value: value,
|
|
104
|
+
children: [children, toasts.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
105
|
+
style: [styles.host, hostPosition],
|
|
106
|
+
pointerEvents: "box-none",
|
|
107
|
+
testID: "toast-host",
|
|
108
|
+
children: toasts.map(t => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toast.AnimatedToast, {
|
|
109
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toast.Toast, {
|
|
110
|
+
title: t.title,
|
|
111
|
+
message: t.message,
|
|
112
|
+
variant: t.variant,
|
|
113
|
+
hideCloseButton: t.hideCloseButton,
|
|
114
|
+
onDismiss: () => hide(t.id),
|
|
115
|
+
onPress: t.onPress ? () => {
|
|
116
|
+
t.onPress?.();
|
|
117
|
+
hide(t.id);
|
|
118
|
+
} : undefined
|
|
119
|
+
})
|
|
120
|
+
}, t.id))
|
|
121
|
+
})]
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function useToast() {
|
|
125
|
+
const ctx = (0, _react.useContext)(ToastContext);
|
|
126
|
+
if (!ctx) {
|
|
127
|
+
throw new Error('orn-ui: useToast must be used within a <ToastProvider>.');
|
|
128
|
+
}
|
|
129
|
+
return ctx;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=ToastProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_Toast","_UIProvider","_createStyles","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ToastContext","createContext","undefined","useStyles","createStyles","theme","host","position","left","right","paddingHorizontal","tokens","spacing","lg","gap","sm","ToastProvider","children","maxVisible","defaultDuration","toasts","setToasts","useState","timers","useRef","Map","counter","insets","useInsets","styles","clearTimer","useCallback","id","current","clearTimeout","delete","hide","prev","filter","hideAll","forEach","clear","show","options","duration","next","overflow","length","slice","setTimeout","useEffect","pending","value","useMemo","hostPosition","top","bottom","flexDirection","jsxs","Provider","jsx","View","style","pointerEvents","testID","map","AnimatedToast","Toast","title","message","variant","hideCloseButton","onDismiss","onPress","useToast","ctx","useContext","Error"],"sourceRoot":"../../../src","sources":["organisms/ToastProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Wizard = Wizard;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _createStyles = require("../theme/createStyles");
|
|
10
|
+
var _Steps = require("../molecules/Steps");
|
|
11
|
+
var _Button = require("../atoms/Button");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
const useStyles = (0, _createStyles.createStyles)(theme => ({
|
|
15
|
+
container: {
|
|
16
|
+
flex: 1,
|
|
17
|
+
gap: theme.tokens.spacing.xl
|
|
18
|
+
},
|
|
19
|
+
content: {
|
|
20
|
+
flex: 1
|
|
21
|
+
},
|
|
22
|
+
contentInner: {
|
|
23
|
+
flexGrow: 1,
|
|
24
|
+
paddingBottom: theme.tokens.spacing.sm
|
|
25
|
+
},
|
|
26
|
+
footer: {
|
|
27
|
+
flexDirection: 'row',
|
|
28
|
+
gap: theme.tokens.spacing.md
|
|
29
|
+
},
|
|
30
|
+
footerButton: {
|
|
31
|
+
flex: 1
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Wizard
|
|
37
|
+
* Flujo multi-paso: indicador (Steps) + contenido del paso actual + barra de
|
|
38
|
+
* navegación. Funciona controlado (`current` + `onStepChange`) o por su
|
|
39
|
+
* cuenta. `canGoNext: false` en un paso deshabilita el avance, que es donde
|
|
40
|
+
* se engancha la validación del formulario de ese paso.
|
|
41
|
+
*/
|
|
42
|
+
function Wizard({
|
|
43
|
+
steps,
|
|
44
|
+
current: controlledCurrent,
|
|
45
|
+
onStepChange,
|
|
46
|
+
onFinish,
|
|
47
|
+
orientation = 'horizontal',
|
|
48
|
+
completedIndicator = 'check',
|
|
49
|
+
allowStepNavigation = true,
|
|
50
|
+
backLabel = 'Back',
|
|
51
|
+
nextLabel = 'Next',
|
|
52
|
+
finishLabel = 'Finish',
|
|
53
|
+
scrollableContent = true,
|
|
54
|
+
style
|
|
55
|
+
}) {
|
|
56
|
+
const styles = useStyles();
|
|
57
|
+
const [uncontrolled, setUncontrolled] = (0, _react.useState)(0);
|
|
58
|
+
const isControlled = controlledCurrent !== undefined;
|
|
59
|
+
const current = isControlled ? controlledCurrent : uncontrolled;
|
|
60
|
+
const goTo = (0, _react.useCallback)(index => {
|
|
61
|
+
const clamped = Math.max(0, Math.min(index, steps.length - 1));
|
|
62
|
+
if (!isControlled) setUncontrolled(clamped);
|
|
63
|
+
onStepChange?.(clamped);
|
|
64
|
+
}, [isControlled, onStepChange, steps.length]);
|
|
65
|
+
const stepItems = (0, _react.useMemo)(() => steps.map(({
|
|
66
|
+
label,
|
|
67
|
+
description
|
|
68
|
+
}) => ({
|
|
69
|
+
label,
|
|
70
|
+
description
|
|
71
|
+
})), [steps]);
|
|
72
|
+
const activeStep = steps[current];
|
|
73
|
+
const isFirst = current === 0;
|
|
74
|
+
const isLast = current === steps.length - 1;
|
|
75
|
+
const canGoNext = activeStep?.canGoNext !== false;
|
|
76
|
+
const handleNext = () => {
|
|
77
|
+
if (isLast) onFinish?.();else goTo(current + 1);
|
|
78
|
+
};
|
|
79
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
80
|
+
style: [styles.container, style],
|
|
81
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Steps.Steps, {
|
|
82
|
+
steps: stepItems,
|
|
83
|
+
current: current,
|
|
84
|
+
orientation: orientation,
|
|
85
|
+
completedIndicator: completedIndicator
|
|
86
|
+
// Sólo se puede volver atrás tocando el indicador; saltar hacia
|
|
87
|
+
// adelante se saltearía la validación de los pasos intermedios.
|
|
88
|
+
,
|
|
89
|
+
onStepPress: allowStepNavigation ? index => index < current && goTo(index) : undefined
|
|
90
|
+
}), scrollableContent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
|
|
91
|
+
style: styles.content,
|
|
92
|
+
contentContainerStyle: styles.contentInner,
|
|
93
|
+
keyboardShouldPersistTaps: "handled",
|
|
94
|
+
automaticallyAdjustKeyboardInsets: true,
|
|
95
|
+
showsVerticalScrollIndicator: false,
|
|
96
|
+
children: activeStep?.content
|
|
97
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
98
|
+
style: styles.content,
|
|
99
|
+
children: activeStep?.content
|
|
100
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
101
|
+
style: styles.footer,
|
|
102
|
+
children: [!isFirst && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
|
|
103
|
+
title: backLabel,
|
|
104
|
+
variant: "outline",
|
|
105
|
+
onPress: () => goTo(current - 1),
|
|
106
|
+
style: styles.footerButton
|
|
107
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
|
|
108
|
+
title: isLast ? finishLabel : nextLabel,
|
|
109
|
+
onPress: handleNext,
|
|
110
|
+
disabled: !canGoNext,
|
|
111
|
+
style: styles.footerButton
|
|
112
|
+
})]
|
|
113
|
+
})]
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=Wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_Steps","_Button","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStyles","createStyles","theme","container","flex","gap","tokens","spacing","xl","content","contentInner","flexGrow","paddingBottom","sm","footer","flexDirection","md","footerButton","Wizard","steps","current","controlledCurrent","onStepChange","onFinish","orientation","completedIndicator","allowStepNavigation","backLabel","nextLabel","finishLabel","scrollableContent","style","styles","uncontrolled","setUncontrolled","useState","isControlled","undefined","goTo","useCallback","index","clamped","Math","max","min","length","stepItems","useMemo","map","label","description","activeStep","isFirst","isLast","canGoNext","handleNext","jsxs","View","children","jsx","Steps","onStepPress","ScrollView","contentContainerStyle","keyboardShouldPersistTaps","automaticallyAdjustKeyboardInsets","showsVerticalScrollIndicator","Button","title","variant","onPress","disabled"],"sourceRoot":"../../../src","sources":["organisms/Wizard.tsx"],"mappings":"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","ignoreList":[]}
|