orn-ui 0.1.0 → 0.2.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 +9 -2
- package/lib/commonjs/atoms/Avatar.js +1 -1
- package/lib/commonjs/atoms/Avatar.js.map +1 -1
- package/lib/commonjs/atoms/Badge.js +10 -8
- package/lib/commonjs/atoms/Badge.js.map +1 -1
- package/lib/commonjs/atoms/Button.js +8 -6
- package/lib/commonjs/atoms/Button.js.map +1 -1
- package/lib/commonjs/atoms/Checkbox.js +4 -1
- package/lib/commonjs/atoms/Checkbox.js.map +1 -1
- package/lib/commonjs/atoms/Fab.js +1 -1
- package/lib/commonjs/atoms/Fab.js.map +1 -1
- package/lib/commonjs/atoms/Image.js +2 -2
- package/lib/commonjs/atoms/Image.js.map +1 -1
- package/lib/commonjs/atoms/Input.js +2 -2
- package/lib/commonjs/atoms/Input.js.map +1 -1
- package/lib/commonjs/atoms/PressableScale.js +9 -10
- package/lib/commonjs/atoms/PressableScale.js.map +1 -1
- package/lib/commonjs/atoms/Skeleton.js +96 -0
- package/lib/commonjs/atoms/Skeleton.js.map +1 -0
- package/lib/commonjs/atoms/Transition.js +171 -0
- package/lib/commonjs/atoms/Transition.js.map +1 -0
- package/lib/commonjs/atoms/index.js +20 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/molecules/AvatarHeader.js +2 -2
- package/lib/commonjs/molecules/AvatarHeader.js.map +1 -1
- package/lib/commonjs/molecules/OptionCard.js +57 -24
- package/lib/commonjs/molecules/OptionCard.js.map +1 -1
- package/lib/commonjs/molecules/{ThemeToggle.js → SegmentedControl.js} +37 -37
- package/lib/commonjs/molecules/SegmentedControl.js.map +1 -0
- package/lib/commonjs/molecules/Stepper.js +124 -47
- package/lib/commonjs/molecules/Stepper.js.map +1 -1
- package/lib/commonjs/molecules/Steps.js +2 -2
- package/lib/commonjs/molecules/Steps.js.map +1 -1
- package/lib/commonjs/molecules/index.js +9 -3
- package/lib/commonjs/molecules/index.js.map +1 -1
- package/lib/commonjs/organisms/Alert.js +6 -5
- package/lib/commonjs/organisms/Alert.js.map +1 -1
- package/lib/commonjs/organisms/AlertProvider.js +26 -0
- package/lib/commonjs/organisms/AlertProvider.js.map +1 -1
- package/lib/commonjs/organisms/BottomSheet.js +118 -39
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
- package/lib/commonjs/organisms/DateField.js +2 -2
- package/lib/commonjs/organisms/DateField.js.map +1 -1
- package/lib/commonjs/organisms/DatePicker.js +3 -3
- package/lib/commonjs/organisms/DatePicker.js.map +1 -1
- package/lib/commonjs/organisms/List.js +66 -44
- package/lib/commonjs/organisms/List.js.map +1 -1
- package/lib/commonjs/organisms/Modal.js +42 -87
- package/lib/commonjs/organisms/Modal.js.map +1 -1
- package/lib/commonjs/organisms/NavigationBar.js +205 -0
- package/lib/commonjs/organisms/NavigationBar.js.map +1 -0
- package/lib/commonjs/organisms/Screen.js +9 -2
- package/lib/commonjs/organisms/Screen.js.map +1 -1
- package/lib/commonjs/organisms/SearchList.js +99 -30
- package/lib/commonjs/organisms/SearchList.js.map +1 -1
- package/lib/commonjs/organisms/Select.js +226 -54
- package/lib/commonjs/organisms/Select.js.map +1 -1
- package/lib/commonjs/organisms/ThemeToggle.js +52 -0
- package/lib/commonjs/organisms/ThemeToggle.js.map +1 -0
- package/lib/commonjs/organisms/Toast.js +20 -25
- package/lib/commonjs/organisms/Toast.js.map +1 -1
- package/lib/commonjs/organisms/ToastProvider.js +24 -0
- package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
- package/lib/commonjs/organisms/Wizard.js +22 -2
- package/lib/commonjs/organisms/Wizard.js.map +1 -1
- package/lib/commonjs/organisms/imperativeBridge.js +28 -0
- package/lib/commonjs/organisms/imperativeBridge.js.map +1 -0
- package/lib/commonjs/organisms/index.js +50 -0
- package/lib/commonjs/organisms/index.js.map +1 -1
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js +65 -0
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js.map +1 -0
- package/lib/commonjs/safe-area/index.js +13 -0
- package/lib/commonjs/safe-area/index.js.map +1 -0
- package/lib/commonjs/theme/UIProvider.js +11 -0
- package/lib/commonjs/theme/UIProvider.js.map +1 -1
- package/lib/commonjs/theme/colors.js +207 -0
- package/lib/commonjs/theme/colors.js.map +1 -0
- package/lib/commonjs/theme/createTheme.js +25 -2
- package/lib/commonjs/theme/createTheme.js.map +1 -1
- package/lib/commonjs/theme/index.js +25 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/theme/palettes.js +73 -11
- package/lib/commonjs/theme/palettes.js.map +1 -1
- package/lib/module/atoms/Avatar.js +1 -1
- package/lib/module/atoms/Avatar.js.map +1 -1
- package/lib/module/atoms/Badge.js +10 -8
- package/lib/module/atoms/Badge.js.map +1 -1
- package/lib/module/atoms/Button.js +8 -6
- package/lib/module/atoms/Button.js.map +1 -1
- package/lib/module/atoms/Checkbox.js +4 -1
- package/lib/module/atoms/Checkbox.js.map +1 -1
- package/lib/module/atoms/Fab.js +1 -1
- package/lib/module/atoms/Fab.js.map +1 -1
- package/lib/module/atoms/Image.js +2 -2
- package/lib/module/atoms/Image.js.map +1 -1
- package/lib/module/atoms/Input.js +2 -2
- package/lib/module/atoms/Input.js.map +1 -1
- package/lib/module/atoms/PressableScale.js +9 -10
- package/lib/module/atoms/PressableScale.js.map +1 -1
- package/lib/module/atoms/Skeleton.js +91 -0
- package/lib/module/atoms/Skeleton.js.map +1 -0
- package/lib/module/atoms/Transition.js +165 -0
- package/lib/module/atoms/Transition.js.map +1 -0
- package/lib/module/atoms/index.js +2 -0
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/molecules/AvatarHeader.js +2 -2
- package/lib/module/molecules/AvatarHeader.js.map +1 -1
- package/lib/module/molecules/OptionCard.js +58 -25
- package/lib/module/molecules/OptionCard.js.map +1 -1
- package/lib/module/molecules/{ThemeToggle.js → SegmentedControl.js} +37 -37
- package/lib/module/molecules/SegmentedControl.js.map +1 -0
- package/lib/module/molecules/Stepper.js +125 -49
- package/lib/module/molecules/Stepper.js.map +1 -1
- package/lib/module/molecules/Steps.js +2 -2
- package/lib/module/molecules/Steps.js.map +1 -1
- package/lib/module/molecules/index.js +2 -2
- package/lib/module/molecules/index.js.map +1 -1
- package/lib/module/organisms/Alert.js +6 -5
- package/lib/module/organisms/Alert.js.map +1 -1
- package/lib/module/organisms/AlertProvider.js +24 -1
- package/lib/module/organisms/AlertProvider.js.map +1 -1
- package/lib/module/organisms/BottomSheet.js +120 -41
- package/lib/module/organisms/BottomSheet.js.map +1 -1
- package/lib/module/organisms/DateField.js +2 -2
- package/lib/module/organisms/DateField.js.map +1 -1
- package/lib/module/organisms/DatePicker.js +3 -3
- package/lib/module/organisms/DatePicker.js.map +1 -1
- package/lib/module/organisms/List.js +68 -46
- package/lib/module/organisms/List.js.map +1 -1
- package/lib/module/organisms/Modal.js +44 -89
- package/lib/module/organisms/Modal.js.map +1 -1
- package/lib/module/organisms/NavigationBar.js +200 -0
- package/lib/module/organisms/NavigationBar.js.map +1 -0
- package/lib/module/organisms/Screen.js +9 -2
- package/lib/module/organisms/Screen.js.map +1 -1
- package/lib/module/organisms/SearchList.js +100 -31
- package/lib/module/organisms/SearchList.js.map +1 -1
- package/lib/module/organisms/Select.js +228 -56
- package/lib/module/organisms/Select.js.map +1 -1
- package/lib/module/organisms/ThemeToggle.js +47 -0
- package/lib/module/organisms/ThemeToggle.js.map +1 -0
- package/lib/module/organisms/Toast.js +22 -27
- package/lib/module/organisms/Toast.js.map +1 -1
- package/lib/module/organisms/ToastProvider.js +21 -0
- package/lib/module/organisms/ToastProvider.js.map +1 -1
- package/lib/module/organisms/Wizard.js +23 -3
- package/lib/module/organisms/Wizard.js.map +1 -1
- package/lib/module/organisms/imperativeBridge.js +24 -0
- package/lib/module/organisms/imperativeBridge.js.map +1 -0
- package/lib/module/organisms/index.js +4 -2
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/safe-area/SafeAreaUIProvider.js +60 -0
- package/lib/module/safe-area/SafeAreaUIProvider.js.map +1 -0
- package/lib/module/safe-area/index.js +4 -0
- package/lib/module/safe-area/index.js.map +1 -0
- package/lib/module/theme/UIProvider.js +11 -0
- package/lib/module/theme/UIProvider.js.map +1 -1
- package/lib/module/theme/colors.js +194 -0
- package/lib/module/theme/colors.js.map +1 -0
- package/lib/module/theme/createTheme.js +25 -2
- package/lib/module/theme/createTheme.js.map +1 -1
- package/lib/module/theme/index.js +1 -0
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/palettes.js +73 -11
- package/lib/module/theme/palettes.js.map +1 -1
- package/lib/typescript/atoms/Badge.d.ts.map +1 -1
- package/lib/typescript/atoms/Button.d.ts.map +1 -1
- package/lib/typescript/atoms/Checkbox.d.ts.map +1 -1
- package/lib/typescript/atoms/PressableScale.d.ts +3 -2
- package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
- package/lib/typescript/atoms/Skeleton.d.ts +29 -0
- package/lib/typescript/atoms/Skeleton.d.ts.map +1 -0
- package/lib/typescript/atoms/Transition.d.ts +51 -0
- package/lib/typescript/atoms/Transition.d.ts.map +1 -0
- package/lib/typescript/atoms/index.d.ts +4 -0
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/molecules/OptionCard.d.ts +11 -6
- package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
- package/lib/typescript/molecules/SegmentedControl.d.ts +24 -0
- package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/molecules/Stepper.d.ts +35 -3
- package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
- package/lib/typescript/molecules/index.d.ts +4 -4
- package/lib/typescript/molecules/index.d.ts.map +1 -1
- package/lib/typescript/organisms/Alert.d.ts.map +1 -1
- package/lib/typescript/organisms/AlertProvider.d.ts +9 -0
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/BottomSheet.d.ts +26 -4
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/organisms/List.d.ts +9 -2
- package/lib/typescript/organisms/List.d.ts.map +1 -1
- package/lib/typescript/organisms/Modal.d.ts +3 -5
- package/lib/typescript/organisms/Modal.d.ts.map +1 -1
- package/lib/typescript/organisms/NavigationBar.d.ts +32 -0
- package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -0
- package/lib/typescript/organisms/Screen.d.ts +2 -1
- package/lib/typescript/organisms/Screen.d.ts.map +1 -1
- package/lib/typescript/organisms/SearchList.d.ts +21 -5
- package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
- package/lib/typescript/organisms/Select.d.ts +19 -4
- package/lib/typescript/organisms/Select.d.ts.map +1 -1
- package/lib/typescript/{molecules → organisms}/ThemeToggle.d.ts +4 -4
- package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -0
- package/lib/typescript/organisms/Toast.d.ts.map +1 -1
- package/lib/typescript/organisms/ToastProvider.d.ts +8 -0
- package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/Wizard.d.ts +7 -1
- package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
- package/lib/typescript/organisms/imperativeBridge.d.ts +12 -0
- package/lib/typescript/organisms/imperativeBridge.d.ts.map +1 -0
- package/lib/typescript/organisms/index.d.ts +7 -3
- package/lib/typescript/organisms/index.d.ts.map +1 -1
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts +46 -0
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts.map +1 -0
- package/lib/typescript/safe-area/index.d.ts +3 -0
- package/lib/typescript/safe-area/index.d.ts.map +1 -0
- package/lib/typescript/theme/UIProvider.d.ts.map +1 -1
- package/lib/typescript/theme/colors.d.ts +44 -0
- package/lib/typescript/theme/colors.d.ts.map +1 -0
- package/lib/typescript/theme/createTheme.d.ts +3 -0
- package/lib/typescript/theme/createTheme.d.ts.map +1 -1
- package/lib/typescript/theme/index.d.ts +3 -1
- package/lib/typescript/theme/index.d.ts.map +1 -1
- package/lib/typescript/theme/palettes.d.ts +41 -3
- package/lib/typescript/theme/palettes.d.ts.map +1 -1
- package/lib/typescript/theme/types.d.ts +9 -0
- package/lib/typescript/theme/types.d.ts.map +1 -1
- package/package.json +101 -18
- package/registry/alert-provider.json +9 -2
- package/registry/alert.json +1 -1
- package/registry/avatar-header.json +1 -1
- package/registry/avatar.json +1 -1
- package/registry/badge.json +1 -1
- package/registry/bottom-sheet.json +6 -2
- package/registry/button.json +1 -1
- package/registry/checkbox.json +1 -1
- package/registry/core.json +9 -5
- package/registry/date-field.json +2 -1
- package/registry/date-picker.json +1 -1
- package/registry/fab.json +1 -1
- package/registry/image.json +1 -1
- package/registry/index.json +108 -39
- package/registry/input.json +1 -1
- package/registry/list.json +2 -1
- package/registry/manifest.json +44 -6
- package/registry/modal.json +3 -2
- package/registry/navigation-bar.json +18 -0
- package/registry/option-card.json +3 -2
- package/registry/pressable-scale.json +1 -1
- package/registry/screen.json +1 -1
- package/registry/search-list.json +2 -1
- package/registry/segmented-control.json +18 -0
- package/registry/select.json +1 -1
- package/registry/skeleton.json +18 -0
- package/registry/stepper.json +3 -2
- package/registry/steps.json +1 -1
- package/registry/theme-toggle.json +5 -4
- package/registry/toast-provider.json +11 -3
- package/registry/toast.json +3 -2
- package/registry/transition.json +19 -0
- package/registry/wizard.json +3 -2
- package/src/atoms/Avatar.tsx +1 -1
- package/src/atoms/Badge.tsx +6 -4
- package/src/atoms/Button.tsx +8 -6
- package/src/atoms/Checkbox.tsx +4 -1
- package/src/atoms/Fab.tsx +1 -1
- package/src/atoms/Image.tsx +2 -2
- package/src/atoms/Input.tsx +2 -2
- package/src/atoms/PressableScale.tsx +16 -6
- package/src/atoms/Skeleton.tsx +114 -0
- package/src/atoms/Transition.tsx +189 -0
- package/src/atoms/index.ts +4 -0
- package/src/molecules/AvatarHeader.tsx +2 -2
- package/src/molecules/OptionCard.tsx +64 -27
- package/src/molecules/SegmentedControl.tsx +84 -0
- package/src/molecules/Stepper.tsx +147 -32
- package/src/molecules/Steps.tsx +2 -2
- package/src/molecules/index.ts +4 -4
- package/src/organisms/Alert.tsx +6 -5
- package/src/organisms/AlertProvider.tsx +26 -1
- package/src/organisms/BottomSheet.tsx +214 -62
- package/src/organisms/DateField.tsx +2 -2
- package/src/organisms/DatePicker.tsx +3 -3
- package/src/organisms/List.tsx +73 -41
- package/src/organisms/Modal.tsx +49 -61
- package/src/organisms/NavigationBar.tsx +223 -0
- package/src/organisms/Screen.tsx +11 -3
- package/src/organisms/SearchList.tsx +134 -38
- package/src/organisms/Select.tsx +227 -49
- package/src/organisms/ThemeToggle.tsx +30 -0
- package/src/organisms/Toast.tsx +19 -24
- package/src/organisms/ToastProvider.tsx +24 -0
- package/src/organisms/Wizard.tsx +36 -3
- package/src/organisms/imperativeBridge.ts +28 -0
- package/src/organisms/index.ts +7 -3
- package/src/safe-area/SafeAreaUIProvider.tsx +67 -0
- package/src/safe-area/index.ts +2 -0
- package/src/theme/UIProvider.tsx +15 -0
- package/src/theme/colors.ts +175 -0
- package/src/theme/createTheme.ts +38 -4
- package/src/theme/index.ts +3 -1
- package/src/theme/palettes.ts +108 -11
- package/src/theme/types.ts +10 -0
- package/lib/commonjs/molecules/ThemeToggle.js.map +0 -1
- package/lib/module/molecules/ThemeToggle.js.map +0 -1
- package/lib/typescript/molecules/ThemeToggle.d.ts.map +0 -1
- package/src/molecules/ThemeToggle.tsx +0 -67
package/src/theme/palettes.ts
CHANGED
|
@@ -2,15 +2,49 @@
|
|
|
2
2
|
* Cada color es `string`, no un literal (`as const`): light y dark tienen
|
|
3
3
|
* valores distintos para la misma clave, y createTheme() debe poder
|
|
4
4
|
* aceptar cualquier hex/rgba en los overrides — literal typing lo impediría.
|
|
5
|
+
*
|
|
6
|
+
* Cada acento viene en cuatro roles, y no son intercambiables:
|
|
7
|
+
*
|
|
8
|
+
* `primary` relleno sólido (fondo de botón, día seleccionado, FAB).
|
|
9
|
+
* `onPrimary` texto/ícono *encima* de ese relleno.
|
|
10
|
+
* `primarySoft` fondo teñido para estados seleccionados y pills.
|
|
11
|
+
* `primaryText` texto/ícono del acento sobre `surface`, `background`
|
|
12
|
+
* o sobre su propio `primarySoft`.
|
|
13
|
+
*
|
|
14
|
+
* El motivo es el contraste: un acento que se lee bien como relleno no se
|
|
15
|
+
* lee como texto. Antes los componentes usaban `colors.primary` para las dos
|
|
16
|
+
* cosas y lo teñían concatenando alpha al hex (`colors.primary + '15'`), lo
|
|
17
|
+
* que en dark daba 2.6:1 sobre la superficie — muy por debajo del 4.5:1 de
|
|
18
|
+
* WCAG AA. Todos los pares de esta paleta pasan AA en ambos esquemas.
|
|
5
19
|
*/
|
|
6
20
|
export interface ThemeColors {
|
|
7
21
|
primary: string;
|
|
22
|
+
onPrimary: string;
|
|
23
|
+
primarySoft: string;
|
|
24
|
+
primaryText: string;
|
|
25
|
+
|
|
8
26
|
secondary: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
27
|
+
onSecondary: string;
|
|
28
|
+
secondarySoft: string;
|
|
29
|
+
secondaryText: string;
|
|
30
|
+
|
|
12
31
|
success: string;
|
|
32
|
+
onSuccess: string;
|
|
33
|
+
successSoft: string;
|
|
34
|
+
successText: string;
|
|
35
|
+
|
|
36
|
+
error: string;
|
|
37
|
+
onError: string;
|
|
38
|
+
errorSoft: string;
|
|
39
|
+
errorText: string;
|
|
40
|
+
|
|
13
41
|
warning: string;
|
|
42
|
+
onWarning: string;
|
|
43
|
+
warningSoft: string;
|
|
44
|
+
warningText: string;
|
|
45
|
+
|
|
46
|
+
white: string;
|
|
47
|
+
black: string;
|
|
14
48
|
background: string;
|
|
15
49
|
surface: string;
|
|
16
50
|
text: string;
|
|
@@ -18,20 +52,48 @@ export interface ThemeColors {
|
|
|
18
52
|
border: string;
|
|
19
53
|
inputBackground: string;
|
|
20
54
|
overlay: string;
|
|
55
|
+
/** Velo semitransparente sobre contenido propio (footer de carga de List). */
|
|
56
|
+
scrim: string;
|
|
57
|
+
/** Fondo de placeholder mientras carga una imagen. */
|
|
58
|
+
skeleton: string;
|
|
21
59
|
}
|
|
22
60
|
|
|
23
|
-
const
|
|
24
|
-
primary: '#004cef',
|
|
25
|
-
secondary: '#00cae1',
|
|
61
|
+
const neutral = {
|
|
26
62
|
white: '#ffffff',
|
|
27
63
|
black: '#000000',
|
|
28
|
-
error: '#ff3b30',
|
|
29
|
-
success: '#34c759',
|
|
30
|
-
warning: '#f59e0b',
|
|
31
64
|
};
|
|
32
65
|
|
|
33
66
|
export const lightPalette: ThemeColors = {
|
|
34
|
-
...
|
|
67
|
+
...neutral,
|
|
68
|
+
|
|
69
|
+
primary: '#004cef',
|
|
70
|
+
onPrimary: '#ffffff',
|
|
71
|
+
primarySoft: '#e6edfe',
|
|
72
|
+
primaryText: '#00369f',
|
|
73
|
+
|
|
74
|
+
secondary: '#00cae1',
|
|
75
|
+
onSecondary: '#00363d',
|
|
76
|
+
secondarySoft: '#dcf6f9',
|
|
77
|
+
secondaryText: '#00707d',
|
|
78
|
+
|
|
79
|
+
success: '#34c759',
|
|
80
|
+
onSuccess: '#00320f',
|
|
81
|
+
successSoft: '#e3f6e9',
|
|
82
|
+
successText: '#116a30',
|
|
83
|
+
|
|
84
|
+
// El rojo va con texto blanco, que es lo que la gente espera de un botón
|
|
85
|
+
// destructivo. #ff3b30 no llega a 4.5:1 con blanco y obligaba a texto casi
|
|
86
|
+
// negro sobre rojo; este tono sí, y sigue leyéndose como rojo de alerta.
|
|
87
|
+
error: '#dc2626',
|
|
88
|
+
onError: '#ffffff',
|
|
89
|
+
errorSoft: '#fdeaea',
|
|
90
|
+
errorText: '#c62222',
|
|
91
|
+
|
|
92
|
+
warning: '#f59e0b',
|
|
93
|
+
onWarning: '#3d2600',
|
|
94
|
+
warningSoft: '#fdf1de',
|
|
95
|
+
warningText: '#8a4b00',
|
|
96
|
+
|
|
35
97
|
background: '#f8f9fa',
|
|
36
98
|
surface: '#ffffff',
|
|
37
99
|
text: '#333333',
|
|
@@ -39,10 +101,43 @@ export const lightPalette: ThemeColors = {
|
|
|
39
101
|
border: '#e5e7eb',
|
|
40
102
|
inputBackground: '#f5f7fa',
|
|
41
103
|
overlay: 'rgba(0,0,0,0.5)',
|
|
104
|
+
scrim: 'rgba(248,249,250,0.8)',
|
|
105
|
+
skeleton: '#eceef1',
|
|
42
106
|
};
|
|
43
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Los acentos de dark NO son los de light: sobre `#1e1e1e` hay que subir la
|
|
110
|
+
* luminosidad del acento y bajar la del texto que va encima (por eso
|
|
111
|
+
* `onPrimary` es azul oscuro acá y blanco en light).
|
|
112
|
+
*/
|
|
44
113
|
export const darkPalette: ThemeColors = {
|
|
45
|
-
...
|
|
114
|
+
...neutral,
|
|
115
|
+
|
|
116
|
+
primary: '#7ba4ff',
|
|
117
|
+
onPrimary: '#00205c',
|
|
118
|
+
primarySoft: '#1b2740',
|
|
119
|
+
primaryText: '#a9c3ff',
|
|
120
|
+
|
|
121
|
+
secondary: '#4dd8e8',
|
|
122
|
+
onSecondary: '#00363d',
|
|
123
|
+
secondarySoft: '#12333a',
|
|
124
|
+
secondaryText: '#7fe6f2',
|
|
125
|
+
|
|
126
|
+
success: '#5ddb84',
|
|
127
|
+
onSuccess: '#003514',
|
|
128
|
+
successSoft: '#13301e',
|
|
129
|
+
successText: '#7fe6a1',
|
|
130
|
+
|
|
131
|
+
error: '#ff7b72',
|
|
132
|
+
onError: '#4d0500',
|
|
133
|
+
errorSoft: '#3a1c1a',
|
|
134
|
+
errorText: '#ffa9a3',
|
|
135
|
+
|
|
136
|
+
warning: '#f0b458',
|
|
137
|
+
onWarning: '#3d2600',
|
|
138
|
+
warningSoft: '#33260f',
|
|
139
|
+
warningText: '#f5c97e',
|
|
140
|
+
|
|
46
141
|
background: '#121212',
|
|
47
142
|
surface: '#1e1e1e',
|
|
48
143
|
text: '#ecedee',
|
|
@@ -50,4 +145,6 @@ export const darkPalette: ThemeColors = {
|
|
|
50
145
|
border: '#2a2a2e',
|
|
51
146
|
inputBackground: '#232326',
|
|
52
147
|
overlay: 'rgba(0,0,0,0.6)',
|
|
148
|
+
scrim: 'rgba(18,18,18,0.8)',
|
|
149
|
+
skeleton: '#26262a',
|
|
53
150
|
};
|
package/src/theme/types.ts
CHANGED
|
@@ -18,7 +18,17 @@ export type DeepPartial<T> = {
|
|
|
18
18
|
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
/** Acentos que se pueden definir con un solo hex vía `brand`. */
|
|
22
|
+
export type BrandAccent = 'primary' | 'secondary' | 'success' | 'error' | 'warning';
|
|
23
|
+
|
|
21
24
|
export interface ThemeOverrides {
|
|
25
|
+
/**
|
|
26
|
+
* Un hex por acento; de cada uno se derivan sus cuatro roles (relleno, lo
|
|
27
|
+
* que va encima, el fondo tenue y la variante legible sobre `surface`) para
|
|
28
|
+
* light y para dark, con el contraste ya resuelto. Un string suelto define
|
|
29
|
+
* `primary`. Lo que se pase en `colors` gana sobre lo derivado.
|
|
30
|
+
*/
|
|
31
|
+
brand?: string | Partial<Record<BrandAccent, string>>;
|
|
22
32
|
colors?: {
|
|
23
33
|
light?: Partial<ThemeColors>;
|
|
24
34
|
dark?: Partial<ThemeColors>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MODES","DEFAULT_LABELS","system","light","dark","useStyles","createStyles","theme","track","flexDirection","backgroundColor","colors","inputBackground","borderRadius","tokens","radius","md","padding","segment","flex","paddingVertical","spacing","sm","alignItems","segmentActive","surface","shadow","label","fontSize","fontWeight","medium","color","textLight","labelActive","primary","semibold","ThemeToggle","exports","memo","style","labels","labelOverrides","mode","setMode","useThemeMode","useColors","styles","allowFontScaling","useAllowFontScaling","jsx","View","accessibilityRole","children","map","m","active","TouchableOpacity","onPress","accessibilityState","selected","accessibilityLabel","Text","displayName"],"sourceRoot":"../../../src","sources":["molecules/ThemeToggle.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","Text","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","useThemeMode","jsx","_jsx","MODES","DEFAULT_LABELS","system","light","dark","useStyles","theme","track","flexDirection","backgroundColor","colors","inputBackground","borderRadius","tokens","radius","md","padding","segment","flex","paddingVertical","spacing","sm","alignItems","segmentActive","surface","shadow","label","fontSize","fontWeight","medium","color","textLight","labelActive","primary","semibold","ThemeToggle","style","labels","labelOverrides","mode","setMode","styles","allowFontScaling","accessibilityRole","children","map","m","active","onPress","accessibilityState","selected","accessibilityLabel","displayName"],"sourceRoot":"../../../src","sources":["molecules/ThemeToggle.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,EAAEC,gBAAgB,EAAEC,IAAI,QAAwC,cAAc;AAC3F,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,EAAEC,SAAS,EAAEC,YAAY,QAAwB,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOnG,MAAMC,KAAkB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACtD,MAAMC,cAAyC,GAAG;EAAEC,MAAM,EAAE,MAAM;EAAEC,KAAK,EAAE,OAAO;EAAEC,IAAI,EAAE;AAAO,CAAC;AAElG,MAAMC,SAAS,GAAGX,YAAY,CAAEY,KAAK,KAAM;EACzCC,KAAK,EAAE;IACLC,aAAa,EAAE,KAAK;IACpBC,eAAe,EAAEH,KAAK,CAACI,MAAM,CAACC,eAAe;IAC7CC,YAAY,EAAEN,KAAK,CAACO,MAAM,CAACC,MAAM,CAACC,EAAE;IACpCC,OAAO,EAAE;EACX,CAAC;EACDC,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC;IACPC,eAAe,EAAEb,KAAK,CAACO,MAAM,CAACO,OAAO,CAACC,EAAE;IACxCT,YAAY,EAAEN,KAAK,CAACO,MAAM,CAACC,MAAM,CAACO,EAAE;IACpCC,UAAU,EAAE;EACd,CAAC;EACDC,aAAa,EAAE;IAAEd,eAAe,EAAEH,KAAK,CAACI,MAAM,CAACc,OAAO;IAAE,GAAGlB,KAAK,CAACO,MAAM,CAACY,MAAM,CAACJ;EAAG,CAAC;EACnFK,KAAK,EAAE;IAAEC,QAAQ,EAAErB,KAAK,CAACO,MAAM,CAACc,QAAQ,CAACN,EAAE;IAAEO,UAAU,EAAEtB,KAAK,CAACO,MAAM,CAACe,UAAU,CAACC,MAAM;IAAEC,KAAK,EAAExB,KAAK,CAACI,MAAM,CAACqB;EAAU,CAAC;EACxHC,WAAW,EAAE;IAAEF,KAAK,EAAExB,KAAK,CAACI,MAAM,CAACuB,OAAO;IAAEL,UAAU,EAAEtB,KAAK,CAACO,MAAM,CAACe,UAAU,CAACM;EAAS;AAC3F,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,gBAAG7C,IAAI,CAAC,CAAC;EAAE8C,KAAK;EAAEC,MAAM,EAAEC;AAAiC,CAAC,KAAK;EACvF,MAAM;IAAEC,IAAI;IAAEC;EAAQ,CAAC,GAAG3C,YAAY,CAAC,CAAC;EACxC,MAAMa,MAAM,GAAGd,SAAS,CAAC,CAAC;EAC1B,MAAM6C,MAAM,GAAGpC,SAAS,CAAC,CAAC;EAC1B,MAAMqC,gBAAgB,GAAG/C,mBAAmB,CAAC,CAAC;EAC9C,MAAM0C,MAAM,GAAG;IAAE,GAAGpC,cAAc;IAAE,GAAGqC;EAAe,CAAC;EAEvD,oBACEvC,IAAA,CAACN,IAAI;IAAC2C,KAAK,EAAE,CAACK,MAAM,CAAClC,KAAK,EAAE6B,KAAK,CAAE;IAACO,iBAAiB,EAAC,SAAS;IAAAC,QAAA,EAC5D5C,KAAK,CAAC6C,GAAG,CAAEC,CAAC,IAAK;MAChB,MAAMC,MAAM,GAAGR,IAAI,KAAKO,CAAC;MACzB,oBACE/C,IAAA,CAACP,gBAAgB;QAEf4C,KAAK,EAAE,CAACK,MAAM,CAACxB,OAAO,EAAE8B,MAAM,IAAIN,MAAM,CAAClB,aAAa,CAAE;QACxDyB,OAAO,EAAEA,CAAA,KAAMR,OAAO,CAACM,CAAC,CAAE;QAC1BH,iBAAiB,EAAC,KAAK;QACvBM,kBAAkB,EAAE;UAAEC,QAAQ,EAAEH;QAAO,CAAE;QACzCI,kBAAkB,EAAEd,MAAM,CAACS,CAAC,CAAE;QAAAF,QAAA,eAE9B7C,IAAA,CAACR,IAAI;UAACmD,gBAAgB,EAAEA,gBAAiB;UAACN,KAAK,EAAE,CAACK,MAAM,CAACf,KAAK,EAAEqB,MAAM,IAAIN,MAAM,CAACT,WAAW,CAAE;UAAAY,QAAA,EAC3FP,MAAM,CAACS,CAAC;QAAC,CACN;MAAC,GATFA,CAUW,CAAC;IAEvB,CAAC;EAAC,CACE,CAAC;AAEX,CAAC,CAAC;AACFX,WAAW,CAACiB,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../../src/molecules/ThemeToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAgC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnG,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C;AAuBD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,gEAA4C,gBAAgB,uBA4BlF,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import React, { memo } from 'react';
|
|
2
|
-
import { Text, TouchableOpacity, View, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
-
import { createStyles } from '../theme/createStyles';
|
|
4
|
-
import { useAllowFontScaling, useColors, useThemeMode, type ThemeMode } from '../theme/UIProvider';
|
|
5
|
-
|
|
6
|
-
export interface ThemeToggleProps {
|
|
7
|
-
style?: StyleProp<ViewStyle>;
|
|
8
|
-
labels?: Partial<Record<ThemeMode, string>>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const MODES: ThemeMode[] = ['system', 'light', 'dark'];
|
|
12
|
-
const DEFAULT_LABELS: Record<ThemeMode, string> = { system: 'Auto', light: 'Light', dark: 'Dark' };
|
|
13
|
-
|
|
14
|
-
const useStyles = createStyles((theme) => ({
|
|
15
|
-
track: {
|
|
16
|
-
flexDirection: 'row',
|
|
17
|
-
backgroundColor: theme.colors.inputBackground,
|
|
18
|
-
borderRadius: theme.tokens.radius.md,
|
|
19
|
-
padding: 3,
|
|
20
|
-
},
|
|
21
|
-
segment: {
|
|
22
|
-
flex: 1,
|
|
23
|
-
paddingVertical: theme.tokens.spacing.sm,
|
|
24
|
-
borderRadius: theme.tokens.radius.sm,
|
|
25
|
-
alignItems: 'center',
|
|
26
|
-
},
|
|
27
|
-
segmentActive: { backgroundColor: theme.colors.surface, ...theme.tokens.shadow.sm },
|
|
28
|
-
label: { fontSize: theme.tokens.fontSize.sm, fontWeight: theme.tokens.fontWeight.medium, color: theme.colors.textLight },
|
|
29
|
-
labelActive: { color: theme.colors.primary, fontWeight: theme.tokens.fontWeight.semibold },
|
|
30
|
-
}));
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* ThemeToggle
|
|
34
|
-
* Segmented control de 3 estados (system/light/dark) conectado a
|
|
35
|
-
* UIProvider.setMode. Sin persistencia — el consumidor la resuelve vía
|
|
36
|
-
* onModeChange en <UIProvider>.
|
|
37
|
-
*/
|
|
38
|
-
export const ThemeToggle = memo(({ style, labels: labelOverrides }: ThemeToggleProps) => {
|
|
39
|
-
const { mode, setMode } = useThemeMode();
|
|
40
|
-
const colors = useColors();
|
|
41
|
-
const styles = useStyles();
|
|
42
|
-
const allowFontScaling = useAllowFontScaling();
|
|
43
|
-
const labels = { ...DEFAULT_LABELS, ...labelOverrides };
|
|
44
|
-
|
|
45
|
-
return (
|
|
46
|
-
<View style={[styles.track, style]} accessibilityRole="tablist">
|
|
47
|
-
{MODES.map((m) => {
|
|
48
|
-
const active = mode === m;
|
|
49
|
-
return (
|
|
50
|
-
<TouchableOpacity
|
|
51
|
-
key={m}
|
|
52
|
-
style={[styles.segment, active && styles.segmentActive]}
|
|
53
|
-
onPress={() => setMode(m)}
|
|
54
|
-
accessibilityRole="tab"
|
|
55
|
-
accessibilityState={{ selected: active }}
|
|
56
|
-
accessibilityLabel={labels[m]}
|
|
57
|
-
>
|
|
58
|
-
<Text allowFontScaling={allowFontScaling} style={[styles.label, active && styles.labelActive]}>
|
|
59
|
-
{labels[m]}
|
|
60
|
-
</Text>
|
|
61
|
-
</TouchableOpacity>
|
|
62
|
-
);
|
|
63
|
-
})}
|
|
64
|
-
</View>
|
|
65
|
-
);
|
|
66
|
-
});
|
|
67
|
-
ThemeToggle.displayName = 'ThemeToggle';
|