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 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useCallback","useContext","useMemo","useRef","useState","Alert","jsx","_jsx","jsxs","_jsxs","AlertContext","undefined","HIDDEN","visible","title","type","buttons","AlertProvider","children","state","setState","resolverRef","hide","current","alertFn","options","Promise","resolve","message","text","confirmText","onPress","confirmFn","cancelText","style","variant","destructive","value","alert","confirm","Provider","onClose","useAlert","ctx","Error"],"sourceRoot":"../../../src","sources":["organisms/AlertProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { Animated, Dimensions, Modal, PanResponder, Pressable, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useInsets } from '../theme/UIProvider';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
const {
|
|
9
|
+
height: SCREEN_HEIGHT
|
|
10
|
+
} = Dimensions.get('window');
|
|
11
|
+
const DISMISS_THRESHOLD = 100;
|
|
12
|
+
const useStyles = createStyles(theme => ({
|
|
13
|
+
container: {
|
|
14
|
+
flex: 1,
|
|
15
|
+
justifyContent: 'flex-end'
|
|
16
|
+
},
|
|
17
|
+
backdrop: {
|
|
18
|
+
backgroundColor: theme.colors.overlay
|
|
19
|
+
},
|
|
20
|
+
sheet: {
|
|
21
|
+
backgroundColor: theme.colors.surface,
|
|
22
|
+
borderTopLeftRadius: theme.tokens.radius.xxl,
|
|
23
|
+
borderTopRightRadius: theme.tokens.radius.xxl,
|
|
24
|
+
paddingHorizontal: theme.tokens.spacing.xl,
|
|
25
|
+
...theme.tokens.shadow.lg
|
|
26
|
+
},
|
|
27
|
+
handleArea: {
|
|
28
|
+
paddingVertical: theme.tokens.spacing.md,
|
|
29
|
+
alignItems: 'center'
|
|
30
|
+
},
|
|
31
|
+
handle: {
|
|
32
|
+
width: 40,
|
|
33
|
+
height: 5,
|
|
34
|
+
borderRadius: 3,
|
|
35
|
+
backgroundColor: theme.colors.border
|
|
36
|
+
}
|
|
37
|
+
}));
|
|
38
|
+
const absoluteFill = {
|
|
39
|
+
position: 'absolute',
|
|
40
|
+
top: 0,
|
|
41
|
+
left: 0,
|
|
42
|
+
right: 0,
|
|
43
|
+
bottom: 0
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* BottomSheet
|
|
48
|
+
* Modal que aparece desde abajo: animación con Animated (no la del Modal
|
|
49
|
+
* nativo) y arrastre para cerrar con PanResponder — no un gesture-handler
|
|
50
|
+
* externo, para mantener la librería en cero dependencias.
|
|
51
|
+
*/
|
|
52
|
+
export const BottomSheet = /*#__PURE__*/memo(({
|
|
53
|
+
visible,
|
|
54
|
+
onClose,
|
|
55
|
+
children,
|
|
56
|
+
closeAccessibilityLabel = 'Close'
|
|
57
|
+
}) => {
|
|
58
|
+
const styles = useStyles();
|
|
59
|
+
const insets = useInsets();
|
|
60
|
+
const [mounted, setMounted] = useState(visible);
|
|
61
|
+
const translateY = useRef(new Animated.Value(SCREEN_HEIGHT)).current;
|
|
62
|
+
const backdropOpacity = useRef(new Animated.Value(0)).current;
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (visible) {
|
|
65
|
+
setMounted(true);
|
|
66
|
+
Animated.timing(translateY, {
|
|
67
|
+
toValue: 0,
|
|
68
|
+
duration: 250,
|
|
69
|
+
useNativeDriver: true
|
|
70
|
+
}).start();
|
|
71
|
+
Animated.timing(backdropOpacity, {
|
|
72
|
+
toValue: 1,
|
|
73
|
+
duration: 250,
|
|
74
|
+
useNativeDriver: true
|
|
75
|
+
}).start();
|
|
76
|
+
} else {
|
|
77
|
+
Animated.timing(translateY, {
|
|
78
|
+
toValue: SCREEN_HEIGHT,
|
|
79
|
+
duration: 200,
|
|
80
|
+
useNativeDriver: true
|
|
81
|
+
}).start(({
|
|
82
|
+
finished
|
|
83
|
+
}) => {
|
|
84
|
+
if (finished) setMounted(false);
|
|
85
|
+
});
|
|
86
|
+
Animated.timing(backdropOpacity, {
|
|
87
|
+
toValue: 0,
|
|
88
|
+
duration: 200,
|
|
89
|
+
useNativeDriver: true
|
|
90
|
+
}).start();
|
|
91
|
+
}
|
|
92
|
+
}, [visible]);
|
|
93
|
+
const panResponder = useRef(PanResponder.create({
|
|
94
|
+
onMoveShouldSetPanResponder: (_, gesture) => gesture.dy > 5 && Math.abs(gesture.dy) > Math.abs(gesture.dx),
|
|
95
|
+
onPanResponderMove: (_, gesture) => {
|
|
96
|
+
if (gesture.dy > 0) translateY.setValue(gesture.dy);
|
|
97
|
+
},
|
|
98
|
+
onPanResponderRelease: (_, gesture) => {
|
|
99
|
+
if (gesture.dy > DISMISS_THRESHOLD) {
|
|
100
|
+
onClose();
|
|
101
|
+
} else {
|
|
102
|
+
Animated.timing(translateY, {
|
|
103
|
+
toValue: 0,
|
|
104
|
+
duration: 150,
|
|
105
|
+
useNativeDriver: true
|
|
106
|
+
}).start();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
})).current;
|
|
110
|
+
if (!mounted) return null;
|
|
111
|
+
return /*#__PURE__*/_jsx(Modal, {
|
|
112
|
+
visible: true,
|
|
113
|
+
transparent: true,
|
|
114
|
+
animationType: "none",
|
|
115
|
+
statusBarTranslucent: true,
|
|
116
|
+
onRequestClose: onClose,
|
|
117
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
118
|
+
style: styles.container,
|
|
119
|
+
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
120
|
+
style: [absoluteFill, styles.backdrop, {
|
|
121
|
+
opacity: backdropOpacity
|
|
122
|
+
}],
|
|
123
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
124
|
+
style: absoluteFill,
|
|
125
|
+
onPress: onClose,
|
|
126
|
+
accessibilityRole: "button",
|
|
127
|
+
accessibilityLabel: closeAccessibilityLabel
|
|
128
|
+
})
|
|
129
|
+
}), /*#__PURE__*/_jsxs(Animated.View, {
|
|
130
|
+
style: [styles.sheet, {
|
|
131
|
+
paddingBottom: Math.max(insets.bottom, 20)
|
|
132
|
+
}, {
|
|
133
|
+
transform: [{
|
|
134
|
+
translateY
|
|
135
|
+
}]
|
|
136
|
+
}],
|
|
137
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
138
|
+
style: styles.handleArea,
|
|
139
|
+
...panResponder.panHandlers,
|
|
140
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
141
|
+
style: styles.handle
|
|
142
|
+
})
|
|
143
|
+
}), children]
|
|
144
|
+
})]
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
BottomSheet.displayName = 'BottomSheet';
|
|
149
|
+
//# sourceMappingURL=BottomSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useEffect","useRef","useState","Animated","Dimensions","Modal","PanResponder","Pressable","View","createStyles","useInsets","jsx","_jsx","jsxs","_jsxs","height","SCREEN_HEIGHT","get","DISMISS_THRESHOLD","useStyles","theme","container","flex","justifyContent","backdrop","backgroundColor","colors","overlay","sheet","surface","borderTopLeftRadius","tokens","radius","xxl","borderTopRightRadius","paddingHorizontal","spacing","xl","shadow","lg","handleArea","paddingVertical","md","alignItems","handle","width","borderRadius","border","absoluteFill","position","top","left","right","bottom","BottomSheet","visible","onClose","children","closeAccessibilityLabel","styles","insets","mounted","setMounted","translateY","Value","current","backdropOpacity","timing","toValue","duration","useNativeDriver","start","finished","panResponder","create","onMoveShouldSetPanResponder","_","gesture","dy","Math","abs","dx","onPanResponderMove","setValue","onPanResponderRelease","transparent","animationType","statusBarTranslucent","onRequestClose","style","opacity","onPress","accessibilityRole","accessibilityLabel","paddingBottom","max","transform","panHandlers","displayName"],"sourceRoot":"../../../src","sources":["organisms/BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useState } from 'react';
|
|
4
|
+
import { Text, TouchableOpacity, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling, useColors } from '../theme/UIProvider';
|
|
7
|
+
import { Modal } from './Modal';
|
|
8
|
+
import { DatePicker, DEFAULT_MONTH_NAMES } from './DatePicker';
|
|
9
|
+
import { Button } from '../atoms/Button';
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
function defaultFormat(date, monthNames) {
|
|
12
|
+
return `${monthNames[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`;
|
|
13
|
+
}
|
|
14
|
+
const useStyles = createStyles(theme => ({
|
|
15
|
+
container: {
|
|
16
|
+
marginBottom: theme.tokens.spacing.lg,
|
|
17
|
+
width: '100%',
|
|
18
|
+
gap: theme.tokens.spacing.sm
|
|
19
|
+
},
|
|
20
|
+
label: {
|
|
21
|
+
fontSize: theme.tokens.fontSize.md,
|
|
22
|
+
fontWeight: theme.tokens.fontWeight.medium,
|
|
23
|
+
color: theme.colors.text
|
|
24
|
+
},
|
|
25
|
+
required: {
|
|
26
|
+
color: theme.colors.error
|
|
27
|
+
},
|
|
28
|
+
field: {
|
|
29
|
+
flexDirection: 'row',
|
|
30
|
+
alignItems: 'center',
|
|
31
|
+
justifyContent: 'space-between',
|
|
32
|
+
backgroundColor: theme.colors.inputBackground,
|
|
33
|
+
borderRadius: theme.tokens.radius.lg,
|
|
34
|
+
borderWidth: 2,
|
|
35
|
+
borderColor: theme.colors.border,
|
|
36
|
+
minHeight: 50,
|
|
37
|
+
paddingHorizontal: theme.tokens.spacing.lg
|
|
38
|
+
},
|
|
39
|
+
fieldError: {
|
|
40
|
+
borderColor: theme.colors.error
|
|
41
|
+
},
|
|
42
|
+
fieldText: {
|
|
43
|
+
fontSize: theme.tokens.fontSize.lg,
|
|
44
|
+
color: theme.colors.text
|
|
45
|
+
},
|
|
46
|
+
placeholder: {
|
|
47
|
+
color: theme.colors.textLight
|
|
48
|
+
},
|
|
49
|
+
errorText: {
|
|
50
|
+
fontSize: theme.tokens.fontSize.sm,
|
|
51
|
+
color: theme.colors.error
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* DateField
|
|
57
|
+
* Campo de fecha: se ve como un Input, abre un `DatePicker` en un Modal al
|
|
58
|
+
* tocarlo. Sin picker nativo del sistema, así que se ve y se comporta igual
|
|
59
|
+
* en iOS y Android.
|
|
60
|
+
*/
|
|
61
|
+
export const DateField = /*#__PURE__*/memo(({
|
|
62
|
+
label,
|
|
63
|
+
required = false,
|
|
64
|
+
value,
|
|
65
|
+
onChange,
|
|
66
|
+
placeholder = 'Select a date',
|
|
67
|
+
error,
|
|
68
|
+
disabled = false,
|
|
69
|
+
format,
|
|
70
|
+
modalTitle = 'Select date',
|
|
71
|
+
clearLabel = 'Clear',
|
|
72
|
+
containerStyle,
|
|
73
|
+
monthNames = DEFAULT_MONTH_NAMES,
|
|
74
|
+
...pickerProps
|
|
75
|
+
}) => {
|
|
76
|
+
const colors = useColors();
|
|
77
|
+
const styles = useStyles();
|
|
78
|
+
const allowFontScaling = useAllowFontScaling();
|
|
79
|
+
const [open, setOpen] = useState(false);
|
|
80
|
+
const display = value ? format ? format(value) : defaultFormat(value, monthNames) : placeholder;
|
|
81
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
82
|
+
style: [styles.container, containerStyle],
|
|
83
|
+
children: [!!label && /*#__PURE__*/_jsxs(Text, {
|
|
84
|
+
allowFontScaling: allowFontScaling,
|
|
85
|
+
style: styles.label,
|
|
86
|
+
children: [label, required && /*#__PURE__*/_jsx(Text, {
|
|
87
|
+
style: styles.required,
|
|
88
|
+
children: " *"
|
|
89
|
+
})]
|
|
90
|
+
}), /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
91
|
+
style: [styles.field, !!error && styles.fieldError, disabled && {
|
|
92
|
+
opacity: 0.5
|
|
93
|
+
}],
|
|
94
|
+
onPress: () => setOpen(true),
|
|
95
|
+
disabled: disabled,
|
|
96
|
+
activeOpacity: 0.7,
|
|
97
|
+
accessibilityRole: "button",
|
|
98
|
+
accessibilityLabel: label ?? placeholder,
|
|
99
|
+
accessibilityState: {
|
|
100
|
+
disabled,
|
|
101
|
+
expanded: open
|
|
102
|
+
},
|
|
103
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
104
|
+
allowFontScaling: allowFontScaling,
|
|
105
|
+
style: [styles.fieldText, !value && styles.placeholder],
|
|
106
|
+
children: display
|
|
107
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
108
|
+
allowFontScaling: allowFontScaling,
|
|
109
|
+
style: {
|
|
110
|
+
color: colors.textLight
|
|
111
|
+
},
|
|
112
|
+
children: '▾'
|
|
113
|
+
})]
|
|
114
|
+
}), !!error && /*#__PURE__*/_jsx(Text, {
|
|
115
|
+
allowFontScaling: allowFontScaling,
|
|
116
|
+
style: styles.errorText,
|
|
117
|
+
children: error
|
|
118
|
+
}), /*#__PURE__*/_jsx(Modal, {
|
|
119
|
+
visible: open,
|
|
120
|
+
onClose: () => setOpen(false),
|
|
121
|
+
title: modalTitle,
|
|
122
|
+
variant: "overlay",
|
|
123
|
+
scrollable: false,
|
|
124
|
+
footer: /*#__PURE__*/_jsx(Button, {
|
|
125
|
+
title: clearLabel,
|
|
126
|
+
variant: "ghost",
|
|
127
|
+
onPress: () => setOpen(false)
|
|
128
|
+
}),
|
|
129
|
+
children: /*#__PURE__*/_jsx(DatePicker, {
|
|
130
|
+
value: value,
|
|
131
|
+
monthNames: monthNames,
|
|
132
|
+
...pickerProps,
|
|
133
|
+
onChange: date => {
|
|
134
|
+
onChange(date);
|
|
135
|
+
setOpen(false);
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
})]
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
DateField.displayName = 'DateField';
|
|
142
|
+
//# sourceMappingURL=DateField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useState","Text","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","Modal","DatePicker","DEFAULT_MONTH_NAMES","Button","jsx","_jsx","jsxs","_jsxs","defaultFormat","date","monthNames","getMonth","getDate","getFullYear","useStyles","theme","container","marginBottom","tokens","spacing","lg","width","gap","sm","label","fontSize","md","fontWeight","medium","color","colors","text","required","error","field","flexDirection","alignItems","justifyContent","backgroundColor","inputBackground","borderRadius","radius","borderWidth","borderColor","border","minHeight","paddingHorizontal","fieldError","fieldText","placeholder","textLight","errorText","DateField","value","onChange","disabled","format","modalTitle","clearLabel","containerStyle","pickerProps","styles","allowFontScaling","open","setOpen","display","style","children","opacity","onPress","activeOpacity","accessibilityRole","accessibilityLabel","accessibilityState","expanded","visible","onClose","title","variant","scrollable","footer","displayName"],"sourceRoot":"../../../src","sources":["organisms/DateField.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useMemo, useState } from 'react';
|
|
4
|
+
import { Text, TouchableOpacity, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling, useColors } from '../theme/UIProvider';
|
|
7
|
+
import { IconButton } from '../atoms/IconButton';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export const DEFAULT_MONTH_NAMES = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
|
10
|
+
|
|
11
|
+
/** Índice 0 = domingo, para alinear con Date.getDay(). */
|
|
12
|
+
export const DEFAULT_WEEKDAY_NAMES = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];
|
|
13
|
+
/** Compara sólo año/mes/día, ignorando hora — dos Date del mismo día son "iguales". */
|
|
14
|
+
function isSameDay(a, b) {
|
|
15
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
16
|
+
}
|
|
17
|
+
function startOfDay(d) {
|
|
18
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Estrictamente entre start y end, sin incluir los extremos. */
|
|
22
|
+
function isBetween(day, start, end) {
|
|
23
|
+
const t = startOfDay(day).getTime();
|
|
24
|
+
return t > startOfDay(start).getTime() && t < startOfDay(end).getTime();
|
|
25
|
+
}
|
|
26
|
+
function isOutOfRange(day, minDate, maxDate) {
|
|
27
|
+
const t = startOfDay(day).getTime();
|
|
28
|
+
if (minDate && t < startOfDay(minDate).getTime()) return true;
|
|
29
|
+
if (maxDate && t > startOfDay(maxDate).getTime()) return true;
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Devuelve la grilla del mes: 6 filas de 7 celdas. Las celdas fuera del mes
|
|
35
|
+
* son null, así el layout no salta de alto entre meses (un mes puede
|
|
36
|
+
* necesitar 4, 5 o 6 filas según en qué día caiga el 1).
|
|
37
|
+
*/
|
|
38
|
+
export function buildMonthGrid(year, month, firstDayOfWeek) {
|
|
39
|
+
const first = new Date(year, month, 1);
|
|
40
|
+
const daysInMonth = new Date(year, month + 1, 0).getDate();
|
|
41
|
+
const leading = (first.getDay() - firstDayOfWeek + 7) % 7;
|
|
42
|
+
const cells = [];
|
|
43
|
+
for (let i = 0; i < leading; i++) cells.push(null);
|
|
44
|
+
for (let d = 1; d <= daysInMonth; d++) cells.push(new Date(year, month, d));
|
|
45
|
+
while (cells.length < 42) cells.push(null);
|
|
46
|
+
const rows = [];
|
|
47
|
+
for (let r = 0; r < 6; r++) rows.push(cells.slice(r * 7, r * 7 + 7));
|
|
48
|
+
return rows;
|
|
49
|
+
}
|
|
50
|
+
const useStyles = createStyles(theme => ({
|
|
51
|
+
container: {
|
|
52
|
+
backgroundColor: theme.colors.surface,
|
|
53
|
+
borderRadius: theme.tokens.radius.lg,
|
|
54
|
+
borderWidth: 1,
|
|
55
|
+
borderColor: theme.colors.border,
|
|
56
|
+
padding: theme.tokens.spacing.md
|
|
57
|
+
},
|
|
58
|
+
header: {
|
|
59
|
+
flexDirection: 'row',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'space-between',
|
|
62
|
+
marginBottom: theme.tokens.spacing.sm
|
|
63
|
+
},
|
|
64
|
+
monthLabel: {
|
|
65
|
+
fontSize: theme.tokens.fontSize.lg,
|
|
66
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
67
|
+
color: theme.colors.text
|
|
68
|
+
},
|
|
69
|
+
weekRow: {
|
|
70
|
+
flexDirection: 'row'
|
|
71
|
+
},
|
|
72
|
+
weekday: {
|
|
73
|
+
flex: 1,
|
|
74
|
+
textAlign: 'center',
|
|
75
|
+
fontSize: theme.tokens.fontSize.xs,
|
|
76
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
77
|
+
color: theme.colors.textLight,
|
|
78
|
+
paddingVertical: theme.tokens.spacing.sm
|
|
79
|
+
},
|
|
80
|
+
row: {
|
|
81
|
+
flexDirection: 'row'
|
|
82
|
+
},
|
|
83
|
+
cell: {
|
|
84
|
+
flex: 1,
|
|
85
|
+
aspectRatio: 1,
|
|
86
|
+
alignItems: 'center',
|
|
87
|
+
justifyContent: 'center'
|
|
88
|
+
},
|
|
89
|
+
dayButton: {
|
|
90
|
+
width: 36,
|
|
91
|
+
height: 36,
|
|
92
|
+
borderRadius: 18,
|
|
93
|
+
alignItems: 'center',
|
|
94
|
+
justifyContent: 'center'
|
|
95
|
+
},
|
|
96
|
+
dayText: {
|
|
97
|
+
fontSize: theme.tokens.fontSize.md,
|
|
98
|
+
color: theme.colors.text
|
|
99
|
+
},
|
|
100
|
+
daySelected: {
|
|
101
|
+
backgroundColor: theme.colors.primary
|
|
102
|
+
},
|
|
103
|
+
dayTextSelected: {
|
|
104
|
+
color: theme.colors.white,
|
|
105
|
+
fontWeight: theme.tokens.fontWeight.bold
|
|
106
|
+
},
|
|
107
|
+
// El resaltado del tramo intermedio va en la celda (cuadrada, sin gaps) y
|
|
108
|
+
// no en el botón redondo, así la barra del rango se ve continua.
|
|
109
|
+
cellInRange: {
|
|
110
|
+
backgroundColor: theme.colors.primary + '1f'
|
|
111
|
+
},
|
|
112
|
+
cellRangeStart: {
|
|
113
|
+
borderTopLeftRadius: 18,
|
|
114
|
+
borderBottomLeftRadius: 18
|
|
115
|
+
},
|
|
116
|
+
cellRangeEnd: {
|
|
117
|
+
borderTopRightRadius: 18,
|
|
118
|
+
borderBottomRightRadius: 18
|
|
119
|
+
},
|
|
120
|
+
dayTextInRange: {
|
|
121
|
+
color: theme.colors.primary,
|
|
122
|
+
fontWeight: theme.tokens.fontWeight.semibold
|
|
123
|
+
},
|
|
124
|
+
dayToday: {
|
|
125
|
+
borderWidth: 1,
|
|
126
|
+
borderColor: theme.colors.primary
|
|
127
|
+
},
|
|
128
|
+
dayTextDisabled: {
|
|
129
|
+
color: theme.colors.textLight,
|
|
130
|
+
opacity: 0.4
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* DatePicker
|
|
136
|
+
* Calendario mensual dibujado con View/Text puros — sin
|
|
137
|
+
* @react-native-community/datetimepicker ni ningún picker nativo, para
|
|
138
|
+
* mantener la librería en cero dependencias y verse igual en iOS y Android.
|
|
139
|
+
*/
|
|
140
|
+
export const DatePicker = /*#__PURE__*/memo(({
|
|
141
|
+
mode = 'single',
|
|
142
|
+
value,
|
|
143
|
+
onChange,
|
|
144
|
+
range,
|
|
145
|
+
onRangeChange,
|
|
146
|
+
minDate,
|
|
147
|
+
maxDate,
|
|
148
|
+
defaultMonth,
|
|
149
|
+
monthNames = DEFAULT_MONTH_NAMES,
|
|
150
|
+
weekdayNames = DEFAULT_WEEKDAY_NAMES,
|
|
151
|
+
firstDayOfWeek = 0,
|
|
152
|
+
style,
|
|
153
|
+
testID
|
|
154
|
+
}) => {
|
|
155
|
+
const colors = useColors();
|
|
156
|
+
const styles = useStyles();
|
|
157
|
+
const allowFontScaling = useAllowFontScaling();
|
|
158
|
+
const isRange = mode === 'range';
|
|
159
|
+
const handlePress = day => {
|
|
160
|
+
if (!isRange) {
|
|
161
|
+
onChange?.(day);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// Primer toque (o rango ya cerrado, o toque antes del inicio): arranca
|
|
165
|
+
// un rango nuevo. Segundo toque en adelante: lo cierra.
|
|
166
|
+
if (!range?.start || range.end || startOfDay(day) < startOfDay(range.start)) {
|
|
167
|
+
onRangeChange?.({
|
|
168
|
+
start: day
|
|
169
|
+
});
|
|
170
|
+
} else {
|
|
171
|
+
onRangeChange?.({
|
|
172
|
+
start: range.start,
|
|
173
|
+
end: day
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const initial = value ?? range?.start ?? defaultMonth ?? new Date();
|
|
178
|
+
const [visibleMonth, setVisibleMonth] = useState(() => new Date(initial.getFullYear(), initial.getMonth(), 1));
|
|
179
|
+
const today = useMemo(() => new Date(), []);
|
|
180
|
+
const grid = useMemo(() => buildMonthGrid(visibleMonth.getFullYear(), visibleMonth.getMonth(), firstDayOfWeek), [visibleMonth, firstDayOfWeek]);
|
|
181
|
+
const orderedWeekdays = useMemo(() => firstDayOfWeek === 0 ? weekdayNames : [...weekdayNames.slice(1), weekdayNames[0]], [weekdayNames, firstDayOfWeek]);
|
|
182
|
+
const shiftMonth = delta => setVisibleMonth(m => new Date(m.getFullYear(), m.getMonth() + delta, 1));
|
|
183
|
+
const monthLabel = `${monthNames[visibleMonth.getMonth()]} ${visibleMonth.getFullYear()}`;
|
|
184
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
185
|
+
style: [styles.container, style],
|
|
186
|
+
testID: testID,
|
|
187
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
188
|
+
style: styles.header,
|
|
189
|
+
children: [/*#__PURE__*/_jsx(IconButton, {
|
|
190
|
+
iconName: "chevron-left",
|
|
191
|
+
accessibilityLabel: "Previous month",
|
|
192
|
+
onPress: () => shiftMonth(-1)
|
|
193
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
194
|
+
allowFontScaling: allowFontScaling,
|
|
195
|
+
style: styles.monthLabel,
|
|
196
|
+
accessibilityRole: "header",
|
|
197
|
+
children: monthLabel
|
|
198
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
|
199
|
+
iconName: "chevron-right",
|
|
200
|
+
accessibilityLabel: "Next month",
|
|
201
|
+
onPress: () => shiftMonth(1)
|
|
202
|
+
})]
|
|
203
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
204
|
+
style: styles.weekRow,
|
|
205
|
+
children: orderedWeekdays.map((w, i) => /*#__PURE__*/_jsx(Text, {
|
|
206
|
+
allowFontScaling: allowFontScaling,
|
|
207
|
+
style: styles.weekday,
|
|
208
|
+
children: w
|
|
209
|
+
}, `${w}-${i}`))
|
|
210
|
+
}), grid.map((row, rowIndex) => /*#__PURE__*/_jsx(View, {
|
|
211
|
+
style: styles.row,
|
|
212
|
+
children: row.map((day, cellIndex) => {
|
|
213
|
+
if (!day) return /*#__PURE__*/_jsx(View, {
|
|
214
|
+
style: styles.cell
|
|
215
|
+
}, cellIndex);
|
|
216
|
+
const isStart = isRange && !!range?.start && isSameDay(day, range.start);
|
|
217
|
+
const isEnd = isRange && !!range?.end && isSameDay(day, range.end);
|
|
218
|
+
const inRange = isRange && !!range?.start && !!range.end && isBetween(day, range.start, range.end);
|
|
219
|
+
const selected = isRange ? isStart || isEnd : !!value && isSameDay(day, value);
|
|
220
|
+
const disabled = isOutOfRange(day, minDate, maxDate);
|
|
221
|
+
const isToday = isSameDay(day, today);
|
|
222
|
+
return /*#__PURE__*/_jsx(View, {
|
|
223
|
+
style: [styles.cell, (inRange || isStart && !!range?.end || isEnd) && styles.cellInRange, isStart && !!range?.end && styles.cellRangeStart, isEnd && styles.cellRangeEnd],
|
|
224
|
+
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
225
|
+
style: [styles.dayButton, selected && styles.daySelected, !selected && isToday && styles.dayToday],
|
|
226
|
+
onPress: () => handlePress(day),
|
|
227
|
+
disabled: disabled,
|
|
228
|
+
activeOpacity: 0.7,
|
|
229
|
+
accessibilityRole: "button",
|
|
230
|
+
accessibilityLabel: `${monthNames[day.getMonth()]} ${day.getDate()}, ${day.getFullYear()}`,
|
|
231
|
+
accessibilityState: {
|
|
232
|
+
selected,
|
|
233
|
+
disabled
|
|
234
|
+
},
|
|
235
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
236
|
+
allowFontScaling: allowFontScaling,
|
|
237
|
+
style: [styles.dayText, inRange && styles.dayTextInRange, selected && styles.dayTextSelected, disabled && styles.dayTextDisabled],
|
|
238
|
+
children: day.getDate()
|
|
239
|
+
})
|
|
240
|
+
})
|
|
241
|
+
}, cellIndex);
|
|
242
|
+
})
|
|
243
|
+
}, rowIndex))]
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
DatePicker.displayName = 'DatePicker';
|
|
247
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","useState","Text","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","IconButton","jsx","_jsx","jsxs","_jsxs","DEFAULT_MONTH_NAMES","DEFAULT_WEEKDAY_NAMES","isSameDay","a","b","getFullYear","getMonth","getDate","startOfDay","d","Date","isBetween","day","start","end","t","getTime","isOutOfRange","minDate","maxDate","buildMonthGrid","year","month","firstDayOfWeek","first","daysInMonth","leading","getDay","cells","i","push","length","rows","r","slice","useStyles","theme","container","backgroundColor","colors","surface","borderRadius","tokens","radius","lg","borderWidth","borderColor","border","padding","spacing","md","header","flexDirection","alignItems","justifyContent","marginBottom","sm","monthLabel","fontSize","fontWeight","semibold","color","text","weekRow","weekday","flex","textAlign","xs","textLight","paddingVertical","row","cell","aspectRatio","dayButton","width","height","dayText","daySelected","primary","dayTextSelected","white","bold","cellInRange","cellRangeStart","borderTopLeftRadius","borderBottomLeftRadius","cellRangeEnd","borderTopRightRadius","borderBottomRightRadius","dayTextInRange","dayToday","dayTextDisabled","opacity","DatePicker","mode","value","onChange","range","onRangeChange","defaultMonth","monthNames","weekdayNames","style","testID","styles","allowFontScaling","isRange","handlePress","initial","visibleMonth","setVisibleMonth","today","grid","orderedWeekdays","shiftMonth","delta","m","children","iconName","accessibilityLabel","onPress","accessibilityRole","map","w","rowIndex","cellIndex","isStart","isEnd","inRange","selected","disabled","isToday","activeOpacity","accessibilityState","displayName"],"sourceRoot":"../../../src","sources":["organisms/DatePicker.tsx"],"mappings":"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","ignoreList":[]}
|