orn-ui 0.1.1 → 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/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/OptionCard.js +55 -22
- package/lib/commonjs/molecules/OptionCard.js.map +1 -1
- package/lib/commonjs/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
- 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/index.js +9 -3
- package/lib/commonjs/molecules/index.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/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 +97 -28
- package/lib/commonjs/organisms/SearchList.js.map +1 -1
- package/lib/commonjs/organisms/Select.js +222 -50
- 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 +8 -22
- 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/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 +5 -2
- package/lib/commonjs/theme/palettes.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/OptionCard.js +56 -23
- package/lib/module/molecules/OptionCard.js.map +1 -1
- package/lib/module/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
- 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/index.js +2 -2
- package/lib/module/molecules/index.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/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 +98 -29
- package/lib/module/organisms/SearchList.js.map +1 -1
- package/lib/module/organisms/Select.js +224 -52
- 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 +10 -24
- 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/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 +5 -2
- package/lib/module/theme/palettes.js.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/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/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.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 +67 -6
- package/registry/alert-provider.json +9 -2
- package/registry/bottom-sheet.json +6 -2
- package/registry/core.json +8 -4
- package/registry/date-field.json +1 -0
- package/registry/index.json +96 -27
- 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/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/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/OptionCard.tsx +62 -25
- package/src/molecules/SegmentedControl.tsx +84 -0
- package/src/molecules/Stepper.tsx +147 -32
- package/src/molecules/index.ts +4 -4
- package/src/organisms/AlertProvider.tsx +26 -1
- package/src/organisms/BottomSheet.tsx +214 -62
- 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 +132 -36
- package/src/organisms/Select.tsx +223 -45
- package/src/organisms/ThemeToggle.tsx +30 -0
- package/src/organisms/Toast.tsx +8 -21
- 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/theme/colors.ts +175 -0
- package/src/theme/createTheme.ts +38 -4
- package/src/theme/index.ts +3 -1
- package/src/theme/palettes.ts +5 -2
- 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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useCallback, useMemo, useState } from 'react';
|
|
3
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { ScrollView, View } from 'react-native';
|
|
5
5
|
import { createStyles } from '../theme/createStyles';
|
|
6
6
|
import { Steps } from '../molecules/Steps';
|
|
7
7
|
import { Button } from '../atoms/Button';
|
|
8
|
+
import { Transition } from '../atoms/Transition';
|
|
8
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
10
|
const useStyles = createStyles(theme => ({
|
|
10
11
|
container: {
|
|
@@ -46,6 +47,7 @@ export function Wizard({
|
|
|
46
47
|
nextLabel = 'Next',
|
|
47
48
|
finishLabel = 'Finish',
|
|
48
49
|
scrollableContent = true,
|
|
50
|
+
animated = true,
|
|
49
51
|
style
|
|
50
52
|
}) {
|
|
51
53
|
const styles = useStyles();
|
|
@@ -64,6 +66,15 @@ export function Wizard({
|
|
|
64
66
|
label,
|
|
65
67
|
description
|
|
66
68
|
})), [steps]);
|
|
69
|
+
|
|
70
|
+
// El ref todavía guarda el paso anterior durante el render que trae el nuevo.
|
|
71
|
+
const previous = useRef(current);
|
|
72
|
+
const forward = current >= previous.current;
|
|
73
|
+
const entered = useRef(false);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
previous.current = current;
|
|
76
|
+
entered.current = true;
|
|
77
|
+
}, [current]);
|
|
67
78
|
const activeStep = steps[current];
|
|
68
79
|
const isFirst = current === 0;
|
|
69
80
|
const isLast = current === steps.length - 1;
|
|
@@ -71,6 +82,15 @@ export function Wizard({
|
|
|
71
82
|
const handleNext = () => {
|
|
72
83
|
if (isLast) onFinish?.();else goTo(current + 1);
|
|
73
84
|
};
|
|
85
|
+
|
|
86
|
+
// El paso saliente no se anima: mantener los dos montados a la vez duplicaría
|
|
87
|
+
// los formularios y su estado.
|
|
88
|
+
const renderContent = () => animated ? /*#__PURE__*/_jsx(Transition, {
|
|
89
|
+
testID: "wizard-step",
|
|
90
|
+
preset: ['fade', forward ? 'slide-left' : 'slide-right'],
|
|
91
|
+
appear: entered.current,
|
|
92
|
+
children: activeStep?.content
|
|
93
|
+
}, current) : activeStep?.content;
|
|
74
94
|
return /*#__PURE__*/_jsxs(View, {
|
|
75
95
|
style: [styles.container, style],
|
|
76
96
|
children: [/*#__PURE__*/_jsx(Steps, {
|
|
@@ -88,10 +108,10 @@ export function Wizard({
|
|
|
88
108
|
keyboardShouldPersistTaps: "handled",
|
|
89
109
|
automaticallyAdjustKeyboardInsets: true,
|
|
90
110
|
showsVerticalScrollIndicator: false,
|
|
91
|
-
children:
|
|
111
|
+
children: renderContent()
|
|
92
112
|
}) : /*#__PURE__*/_jsx(View, {
|
|
93
113
|
style: styles.content,
|
|
94
|
-
children:
|
|
114
|
+
children: renderContent()
|
|
95
115
|
}), /*#__PURE__*/_jsxs(View, {
|
|
96
116
|
style: styles.footer,
|
|
97
117
|
children: [!isFirst && /*#__PURE__*/_jsx(Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","useState","ScrollView","View","createStyles","Steps","Button","jsx","_jsx","jsxs","_jsxs","useStyles","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","isControlled","undefined","goTo","index","clamped","Math","max","min","length","stepItems","map","label","description","activeStep","isFirst","isLast","canGoNext","handleNext","children","onStepPress","contentContainerStyle","keyboardShouldPersistTaps","automaticallyAdjustKeyboardInsets","showsVerticalScrollIndicator","title","variant","onPress","disabled"],"sourceRoot":"../../../src","sources":["organisms/Wizard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","ScrollView","View","createStyles","Steps","Button","Transition","jsx","_jsx","jsxs","_jsxs","useStyles","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","animated","style","styles","uncontrolled","setUncontrolled","isControlled","undefined","goTo","index","clamped","Math","max","min","length","stepItems","map","label","description","previous","forward","entered","activeStep","isFirst","isLast","canGoNext","handleNext","renderContent","testID","preset","appear","children","onStepPress","contentContainerStyle","keyboardShouldPersistTaps","automaticallyAdjustKeyboardInsets","showsVerticalScrollIndicator","title","variant","onPress","disabled"],"sourceRoot":"../../../src","sources":["organisms/Wizard.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Puente entre el proveedor montado y el código que no es un componente
|
|
5
|
+
* (servicios, capa de API, interceptores). El proveedor se registra al montar y
|
|
6
|
+
* se borra al desmontar, así que fuera del árbol nunca queda una referencia
|
|
7
|
+
* viva a un contexto muerto.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export function createImperativeBridge(providerName) {
|
|
11
|
+
let current = null;
|
|
12
|
+
return {
|
|
13
|
+
set: value => {
|
|
14
|
+
current = value;
|
|
15
|
+
},
|
|
16
|
+
get: () => {
|
|
17
|
+
if (!current && __DEV__) {
|
|
18
|
+
console.warn(`orn-ui: se llamó a la API imperativa sin un <${providerName}> montado. La llamada se ignoró.`);
|
|
19
|
+
}
|
|
20
|
+
return current;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=imperativeBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createImperativeBridge","providerName","current","set","value","get","__DEV__","console","warn"],"sourceRoot":"../../../src","sources":["organisms/imperativeBridge.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAMA,OAAO,SAASA,sBAAsBA,CAAIC,YAAoB,EAAuB;EACnF,IAAIC,OAAiB,GAAG,IAAI;EAE5B,OAAO;IACLC,GAAG,EAAGC,KAAK,IAAK;MACdF,OAAO,GAAGE,KAAK;IACjB,CAAC;IACDC,GAAG,EAAEA,CAAA,KAAM;MACT,IAAI,CAACH,OAAO,IAAII,OAAO,EAAE;QACvBC,OAAO,CAACC,IAAI,CACV,gDAAgDP,YAAY,kCAC9D,CAAC;MACH;MACA,OAAOC,OAAO;IAChB;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -4,13 +4,15 @@ export { Modal } from './Modal';
|
|
|
4
4
|
export { BottomSheet } from './BottomSheet';
|
|
5
5
|
export { Select } from './Select';
|
|
6
6
|
export { Alert } from './Alert';
|
|
7
|
-
export { AlertProvider, useAlert } from './AlertProvider';
|
|
7
|
+
export { AlertProvider, useAlert, showAlert, showConfirm, hideAlert } from './AlertProvider';
|
|
8
8
|
export { Screen } from './Screen';
|
|
9
9
|
export { List } from './List';
|
|
10
10
|
export { SearchList } from './SearchList';
|
|
11
11
|
export { Toast } from './Toast';
|
|
12
|
-
export { ToastProvider, useToast } from './ToastProvider';
|
|
12
|
+
export { ToastProvider, useToast, showToast, hideToast, hideAllToasts } from './ToastProvider';
|
|
13
13
|
export { DatePicker, buildMonthGrid, DEFAULT_MONTH_NAMES, DEFAULT_WEEKDAY_NAMES } from './DatePicker';
|
|
14
14
|
export { DateField } from './DateField';
|
|
15
15
|
export { Wizard } from './Wizard';
|
|
16
|
+
export { ThemeToggle } from './ThemeToggle';
|
|
17
|
+
export { NavigationBar } from './NavigationBar';
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","BottomSheet","Select","Alert","AlertProvider","useAlert","Screen","List","SearchList","Toast","ToastProvider","useToast","DatePicker","buildMonthGrid","DEFAULT_MONTH_NAMES","DEFAULT_WEEKDAY_NAMES","DateField","Wizard"],"sourceRoot":"../../../src","sources":["organisms/index.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,SAAS;AAE/B,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,QAAQ,iBAAiB;
|
|
1
|
+
{"version":3,"names":["Modal","BottomSheet","Select","Alert","AlertProvider","useAlert","showAlert","showConfirm","hideAlert","Screen","List","SearchList","Toast","ToastProvider","useToast","showToast","hideToast","hideAllToasts","DatePicker","buildMonthGrid","DEFAULT_MONTH_NAMES","DEFAULT_WEEKDAY_NAMES","DateField","Wizard","ThemeToggle","NavigationBar"],"sourceRoot":"../../../src","sources":["organisms/index.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,SAAS;AAE/B,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AAE5F,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AAE9F,SAASC,UAAU,EAAEC,cAAc,EAAEC,mBAAmB,EAAEC,qBAAqB,QAAQ,cAAc;AAErG,SAASC,SAAS,QAAQ,aAAa;AAEvC,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,aAAa,QAAQ,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Utilidades de color sin dependencias, usadas para derivar una familia de
|
|
5
|
+
* roles (relleno / encima / tenue / legible) a partir de un solo hex de marca.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** Contraste mínimo AA para texto normal. */
|
|
9
|
+
export const AA_CONTRAST = 4.5;
|
|
10
|
+
|
|
11
|
+
/** Roles que necesita un acento del theme, en un esquema concreto. */
|
|
12
|
+
|
|
13
|
+
const HEX = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
14
|
+
export function hexToRgb(hex) {
|
|
15
|
+
const match = HEX.exec(hex.trim());
|
|
16
|
+
if (!match) {
|
|
17
|
+
throw new Error(`orn-ui: se esperaba un color hex como "#7c3aed", se recibió "${hex}".`);
|
|
18
|
+
}
|
|
19
|
+
const digits = match[1];
|
|
20
|
+
const full = digits.length === 3 ? digits.replace(/./g, c => c + c) : digits;
|
|
21
|
+
return {
|
|
22
|
+
r: parseInt(full.slice(0, 2), 16),
|
|
23
|
+
g: parseInt(full.slice(2, 4), 16),
|
|
24
|
+
b: parseInt(full.slice(4, 6), 16)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const toHexPair = value => Math.round(clamp(value, 0, 255)).toString(16).padStart(2, '0');
|
|
28
|
+
export function rgbToHex({
|
|
29
|
+
r,
|
|
30
|
+
g,
|
|
31
|
+
b
|
|
32
|
+
}) {
|
|
33
|
+
return `#${toHexPair(r)}${toHexPair(g)}${toHexPair(b)}`;
|
|
34
|
+
}
|
|
35
|
+
function clamp(value, min, max) {
|
|
36
|
+
return Math.min(max, Math.max(min, value));
|
|
37
|
+
}
|
|
38
|
+
export function rgbToHsl({
|
|
39
|
+
r,
|
|
40
|
+
g,
|
|
41
|
+
b
|
|
42
|
+
}) {
|
|
43
|
+
const rn = r / 255;
|
|
44
|
+
const gn = g / 255;
|
|
45
|
+
const bn = b / 255;
|
|
46
|
+
const max = Math.max(rn, gn, bn);
|
|
47
|
+
const min = Math.min(rn, gn, bn);
|
|
48
|
+
const delta = max - min;
|
|
49
|
+
const l = (max + min) / 2;
|
|
50
|
+
if (delta === 0) return {
|
|
51
|
+
h: 0,
|
|
52
|
+
s: 0,
|
|
53
|
+
l
|
|
54
|
+
};
|
|
55
|
+
const s = delta / (1 - Math.abs(2 * l - 1));
|
|
56
|
+
let h;
|
|
57
|
+
if (max === rn) h = (gn - bn) / delta % 6;else if (max === gn) h = (bn - rn) / delta + 2;else h = (rn - gn) / delta + 4;
|
|
58
|
+
h *= 60;
|
|
59
|
+
return {
|
|
60
|
+
h: h < 0 ? h + 360 : h,
|
|
61
|
+
s,
|
|
62
|
+
l
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function hslToRgb({
|
|
66
|
+
h,
|
|
67
|
+
s,
|
|
68
|
+
l
|
|
69
|
+
}) {
|
|
70
|
+
const c = (1 - Math.abs(2 * l - 1)) * s;
|
|
71
|
+
const hp = (h % 360 + 360) % 360 / 60;
|
|
72
|
+
const x = c * (1 - Math.abs(hp % 2 - 1));
|
|
73
|
+
const [r1, g1, b1] = hp < 1 ? [c, x, 0] : hp < 2 ? [x, c, 0] : hp < 3 ? [0, c, x] : hp < 4 ? [0, x, c] : hp < 5 ? [x, 0, c] : [c, 0, x];
|
|
74
|
+
const m = l - c / 2;
|
|
75
|
+
return {
|
|
76
|
+
r: (r1 + m) * 255,
|
|
77
|
+
g: (g1 + m) * 255,
|
|
78
|
+
b: (b1 + m) * 255
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function toHsl(hex) {
|
|
82
|
+
return rgbToHsl(hexToRgb(hex));
|
|
83
|
+
}
|
|
84
|
+
export function toHex(hsl) {
|
|
85
|
+
return rgbToHex(hslToRgb({
|
|
86
|
+
...hsl,
|
|
87
|
+
s: clamp(hsl.s, 0, 1),
|
|
88
|
+
l: clamp(hsl.l, 0, 1)
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
function channelLuminance(value) {
|
|
92
|
+
const c = value / 255;
|
|
93
|
+
return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Luminancia relativa WCAG de un hex. */
|
|
97
|
+
export function luminance(hex) {
|
|
98
|
+
const {
|
|
99
|
+
r,
|
|
100
|
+
g,
|
|
101
|
+
b
|
|
102
|
+
} = hexToRgb(hex);
|
|
103
|
+
return 0.2126 * channelLuminance(r) + 0.7152 * channelLuminance(g) + 0.0722 * channelLuminance(b);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Ratio de contraste WCAG entre dos hex: 1 (igual) a 21 (blanco sobre negro). */
|
|
107
|
+
export function contrast(a, b) {
|
|
108
|
+
const la = luminance(a);
|
|
109
|
+
const lb = luminance(b);
|
|
110
|
+
return (Math.max(la, lb) + 0.05) / (Math.min(la, lb) + 0.05);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Blanco si alcanza el contraste AA —es lo que se espera encima de un relleno
|
|
115
|
+
* de color— y si no, el extremo que más contraste dé.
|
|
116
|
+
*/
|
|
117
|
+
function bestOnColor(background, light, dark) {
|
|
118
|
+
if (contrast(background, light) >= AA_CONTRAST) return light;
|
|
119
|
+
return contrast(background, dark) >= contrast(background, light) ? dark : light;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Mueve la luminosidad del tono hasta alcanzar el contraste pedido contra
|
|
124
|
+
* `against`. Si ni el extremo llega —un amarillo puro sobre blanco, por
|
|
125
|
+
* ejemplo— devuelve el más contrastado que encontró en el camino.
|
|
126
|
+
*/
|
|
127
|
+
function reachContrast(hsl, against, target, direction) {
|
|
128
|
+
const step = direction === 'darker' ? -0.02 : 0.02;
|
|
129
|
+
let best = toHex(hsl);
|
|
130
|
+
let bestRatio = contrast(best, against);
|
|
131
|
+
for (let l = hsl.l; l >= 0 && l <= 1; l += step) {
|
|
132
|
+
const candidate = toHex({
|
|
133
|
+
...hsl,
|
|
134
|
+
l
|
|
135
|
+
});
|
|
136
|
+
const ratio = contrast(candidate, against);
|
|
137
|
+
if (ratio > bestRatio) {
|
|
138
|
+
best = candidate;
|
|
139
|
+
bestRatio = ratio;
|
|
140
|
+
}
|
|
141
|
+
if (ratio >= target) return candidate;
|
|
142
|
+
}
|
|
143
|
+
return best;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Deriva los cuatro roles de un acento a partir de un hex, para un esquema.
|
|
148
|
+
* `surface` es el fondo sobre el que tiene que leerse el rol `text`, así que
|
|
149
|
+
* cada esquema pasa el suyo.
|
|
150
|
+
*/
|
|
151
|
+
export function deriveAccent(hex, scheme, surface) {
|
|
152
|
+
const hsl = toHsl(hex);
|
|
153
|
+
if (scheme === 'light') {
|
|
154
|
+
const base = toHex(hsl);
|
|
155
|
+
return {
|
|
156
|
+
base,
|
|
157
|
+
on: bestOnColor(base, '#ffffff', '#1a1a1a'),
|
|
158
|
+
soft: toHex({
|
|
159
|
+
h: hsl.h,
|
|
160
|
+
s: Math.min(hsl.s, 0.85),
|
|
161
|
+
l: 0.94
|
|
162
|
+
}),
|
|
163
|
+
text: reachContrast({
|
|
164
|
+
...hsl,
|
|
165
|
+
l: Math.min(hsl.l, 0.38)
|
|
166
|
+
}, surface, AA_CONTRAST, 'darker')
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// En oscuro el acento sube de luminosidad y lo que va encima baja: un
|
|
171
|
+
// #004cef sobre #1e1e1e no se distingue del fondo.
|
|
172
|
+
const base = toHex({
|
|
173
|
+
...hsl,
|
|
174
|
+
l: 0.72
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
base,
|
|
178
|
+
on: bestOnColor(base, '#ffffff', toHex({
|
|
179
|
+
...hsl,
|
|
180
|
+
s: Math.min(hsl.s, 0.9),
|
|
181
|
+
l: 0.16
|
|
182
|
+
})),
|
|
183
|
+
soft: toHex({
|
|
184
|
+
h: hsl.h,
|
|
185
|
+
s: Math.min(hsl.s, 0.35),
|
|
186
|
+
l: 0.18
|
|
187
|
+
}),
|
|
188
|
+
text: reachContrast({
|
|
189
|
+
...hsl,
|
|
190
|
+
l: Math.max(hsl.l, 0.74)
|
|
191
|
+
}, surface, AA_CONTRAST, 'lighter')
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AA_CONTRAST","HEX","hexToRgb","hex","match","exec","trim","Error","digits","full","length","replace","c","r","parseInt","slice","g","b","toHexPair","value","Math","round","clamp","toString","padStart","rgbToHex","min","max","rgbToHsl","rn","gn","bn","delta","l","h","s","abs","hslToRgb","hp","x","r1","g1","b1","m","toHsl","toHex","hsl","channelLuminance","luminance","contrast","a","la","lb","bestOnColor","background","light","dark","reachContrast","against","target","direction","step","best","bestRatio","candidate","ratio","deriveAccent","scheme","surface","base","on","soft","text"],"sourceRoot":"../../../src","sources":["theme/colors.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { lightPalette, darkPalette } from './palettes';
|
|
4
4
|
import { tokens as defaultTokens } from './tokens';
|
|
5
|
+
import { deriveAccent } from './colors';
|
|
5
6
|
function mergeDeep(base, patch) {
|
|
6
7
|
if (!patch) return base;
|
|
7
8
|
const out = {
|
|
@@ -18,21 +19,43 @@ function mergeDeep(base, patch) {
|
|
|
18
19
|
}
|
|
19
20
|
return out;
|
|
20
21
|
}
|
|
22
|
+
const capitalize = name => name.charAt(0).toUpperCase() + name.slice(1);
|
|
23
|
+
|
|
24
|
+
/** Expande cada hex de `brand` a los cuatro roles del acento en un esquema. */
|
|
25
|
+
function brandColors(brand, scheme, palette) {
|
|
26
|
+
if (!brand) return {};
|
|
27
|
+
const accents = typeof brand === 'string' ? {
|
|
28
|
+
primary: brand
|
|
29
|
+
} : brand;
|
|
30
|
+
const out = {};
|
|
31
|
+
for (const [name, hex] of Object.entries(accents)) {
|
|
32
|
+
if (!hex) continue;
|
|
33
|
+
const roles = deriveAccent(hex, scheme, palette.surface);
|
|
34
|
+
out[name] = roles.base;
|
|
35
|
+
out[`on${capitalize(name)}`] = roles.on;
|
|
36
|
+
out[`${name}Soft`] = roles.soft;
|
|
37
|
+
out[`${name}Text`] = roles.text;
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
21
41
|
|
|
22
42
|
/**
|
|
23
43
|
* Construye el par de themes light/dark que consume <UIProvider theme={...}>.
|
|
24
44
|
* Nunca muta los defaults: cada llamada produce objetos nuevos, seguros de
|
|
25
45
|
* compartir entre providers distintos (tests, multi-brand en el mismo árbol).
|
|
46
|
+
*
|
|
47
|
+
* `brand` se aplica antes que `colors`, así que un rol escrito a mano siempre
|
|
48
|
+
* gana sobre el derivado.
|
|
26
49
|
*/
|
|
27
50
|
export function createTheme(overrides) {
|
|
28
51
|
const tokens = mergeDeep(defaultTokens, overrides?.tokens);
|
|
29
52
|
const light = {
|
|
30
|
-
colors: mergeDeep(lightPalette, overrides?.colors?.light),
|
|
53
|
+
colors: mergeDeep(mergeDeep(lightPalette, brandColors(overrides?.brand, 'light', lightPalette)), overrides?.colors?.light),
|
|
31
54
|
tokens,
|
|
32
55
|
scheme: 'light'
|
|
33
56
|
};
|
|
34
57
|
const dark = {
|
|
35
|
-
colors: mergeDeep(darkPalette, overrides?.colors?.dark),
|
|
58
|
+
colors: mergeDeep(mergeDeep(darkPalette, brandColors(overrides?.brand, 'dark', darkPalette)), overrides?.colors?.dark),
|
|
36
59
|
tokens,
|
|
37
60
|
scheme: 'dark'
|
|
38
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["lightPalette","darkPalette","tokens","defaultTokens","mergeDeep","base","patch","out","key","Object","keys","patchVal","baseVal","Array","isArray","undefined","createTheme","overrides","light","colors","
|
|
1
|
+
{"version":3,"names":["lightPalette","darkPalette","tokens","defaultTokens","deriveAccent","mergeDeep","base","patch","out","key","Object","keys","patchVal","baseVal","Array","isArray","undefined","capitalize","name","charAt","toUpperCase","slice","brandColors","brand","scheme","palette","accents","primary","hex","entries","roles","surface","on","soft","text","createTheme","overrides","light","colors","dark","defaultTheme"],"sourceRoot":"../../../src","sources":["theme/createTheme.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
export { spacing, radius, fontSize, fontWeight, lineHeight, duration, shadow, tokens } from './tokens';
|
|
4
4
|
export { lightPalette, darkPalette } from './palettes';
|
|
5
5
|
export { createTheme, defaultTheme } from './createTheme';
|
|
6
|
+
export { deriveAccent, contrast, luminance, AA_CONTRAST } from './colors';
|
|
6
7
|
export { defaultLabels } from './labels';
|
|
7
8
|
export { zeroInsets } from './insets';
|
|
8
9
|
export { createStyles } from './createStyles';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["spacing","radius","fontSize","fontWeight","lineHeight","duration","shadow","tokens","lightPalette","darkPalette","createTheme","defaultTheme","defaultLabels","zeroInsets","createStyles","UIProvider","useTheme","useColors","useThemeMode","useIcons","useInsets","useLabels","useAllowFontScaling"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,QAAQ,UAAU;AAEtG,SAASC,YAAY,EAAEC,WAAW,QAAQ,YAAY;AAEtD,SAASC,WAAW,EAAEC,YAAY,QAAQ,eAAe;AAEzD,SAASC,aAAa,QAAQ,UAAU;AAExC,SAASC,UAAU,QAAQ,UAAU;AAErC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SACEC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,mBAAmB,QACd,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["spacing","radius","fontSize","fontWeight","lineHeight","duration","shadow","tokens","lightPalette","darkPalette","createTheme","defaultTheme","deriveAccent","contrast","luminance","AA_CONTRAST","defaultLabels","zeroInsets","createStyles","UIProvider","useTheme","useColors","useThemeMode","useIcons","useInsets","useLabels","useAllowFontScaling"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,QAAQ,UAAU;AAEtG,SAASC,YAAY,EAAEC,WAAW,QAAQ,YAAY;AAEtD,SAASC,WAAW,EAAEC,YAAY,QAAQ,eAAe;AAEzD,SAASC,YAAY,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,UAAU;AAEzE,SAASC,aAAa,QAAQ,UAAU;AAExC,SAASC,UAAU,QAAQ,UAAU;AAErC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SACEC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,mBAAmB,QACd,cAAc","ignoreList":[]}
|
|
@@ -38,8 +38,11 @@ export const lightPalette = {
|
|
|
38
38
|
onSuccess: '#00320f',
|
|
39
39
|
successSoft: '#e3f6e9',
|
|
40
40
|
successText: '#116a30',
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
// El rojo va con texto blanco, que es lo que la gente espera de un botón
|
|
42
|
+
// destructivo. #ff3b30 no llega a 4.5:1 con blanco y obligaba a texto casi
|
|
43
|
+
// negro sobre rojo; este tono sí, y sigue leyéndose como rojo de alerta.
|
|
44
|
+
error: '#dc2626',
|
|
45
|
+
onError: '#ffffff',
|
|
43
46
|
errorSoft: '#fdeaea',
|
|
44
47
|
errorText: '#c62222',
|
|
45
48
|
warning: '#f59e0b',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["neutral","white","black","lightPalette","primary","onPrimary","primarySoft","primaryText","secondary","onSecondary","secondarySoft","secondaryText","success","onSuccess","successSoft","successText","error","onError","errorSoft","errorText","warning","onWarning","warningSoft","warningText","background","surface","text","textLight","border","inputBackground","overlay","scrim","skeleton","darkPalette"],"sourceRoot":"../../../src","sources":["theme/palettes.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA0CA,MAAMA,OAAO,GAAG;EACdC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE;AACT,CAAC;AAED,OAAO,MAAMC,YAAyB,GAAG;EACvC,GAAGH,OAAO;EAEVI,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,SAAS;EACxBC,aAAa,EAAE,SAAS;EAExBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;
|
|
1
|
+
{"version":3,"names":["neutral","white","black","lightPalette","primary","onPrimary","primarySoft","primaryText","secondary","onSecondary","secondarySoft","secondaryText","success","onSuccess","successSoft","successText","error","onError","errorSoft","errorText","warning","onWarning","warningSoft","warningText","background","surface","text","textLight","border","inputBackground","overlay","scrim","skeleton","darkPalette"],"sourceRoot":"../../../src","sources":["theme/palettes.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA0CA,MAAMA,OAAO,GAAG;EACdC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE;AACT,CAAC;AAED,OAAO,MAAMC,YAAyB,GAAG;EACvC,GAAGH,OAAO;EAEVI,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,SAAS;EACxBC,aAAa,EAAE,SAAS;EAExBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtB;EACA;EACA;EACAC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,SAAS,EAAE,SAAS;EAEpBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtBC,UAAU,EAAE,SAAS;EACrBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAE,SAAS;EACpBC,MAAM,EAAE,SAAS;EACjBC,eAAe,EAAE,SAAS;EAC1BC,OAAO,EAAE,iBAAiB;EAC1BC,KAAK,EAAE,uBAAuB;EAC9BC,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAwB,GAAG;EACtC,GAAGjC,OAAO;EAEVI,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,SAAS;EACxBC,aAAa,EAAE,SAAS;EAExBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtBC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,SAAS,EAAE,SAAS;EAEpBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EAEtBC,UAAU,EAAE,SAAS;EACrBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAE,SAAS;EACpBC,MAAM,EAAE,SAAS;EACjBC,eAAe,EAAE,SAAS;EAC1BC,OAAO,EAAE,iBAAiB;EAC1BC,KAAK,EAAE,oBAAoB;EAC3BC,QAAQ,EAAE;AACZ,CAAC","ignoreList":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { type PressableProps } from 'react-native';
|
|
3
|
-
export interface PressableScaleProps extends PressableProps {
|
|
2
|
+
import { type PressableProps, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
export interface PressableScaleProps extends Omit<PressableProps, 'style'> {
|
|
4
4
|
/** Escala objetivo al presionar. @default 0.96 */
|
|
5
5
|
scaleTo?: number;
|
|
6
|
+
style?: StyleProp<ViewStyle>;
|
|
6
7
|
children: React.ReactNode;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PressableScale.d.ts","sourceRoot":"","sources":["../../../src/atoms/PressableScale.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"PressableScale.d.ts","sourceRoot":"","sources":["../../../src/atoms/PressableScale.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IACxE,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAID;;;;;GAKG;AACH,eAAO,MAAM,cAAc,sGACwD,mBAAmB,uBAkCrG,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type DimensionValue, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
export type SkeletonVariant = 'rect' | 'text' | 'circle';
|
|
4
|
+
export interface SkeletonProps {
|
|
5
|
+
/** @default '100%' ('circle' lo usa también como diámetro) */
|
|
6
|
+
width?: DimensionValue;
|
|
7
|
+
/** @default 16 ('text' usa el alto de línea; 'circle', el ancho) */
|
|
8
|
+
height?: DimensionValue;
|
|
9
|
+
/** @default 'rect' */
|
|
10
|
+
variant?: SkeletonVariant;
|
|
11
|
+
/** Override del radius del theme. */
|
|
12
|
+
radius?: number;
|
|
13
|
+
/** Líneas apiladas, sólo para variant="text". @default 1 */
|
|
14
|
+
lines?: number;
|
|
15
|
+
/** Ancho de la última línea, para que el párrafo no termine en bloque. @default '60%' */
|
|
16
|
+
lastLineWidth?: DimensionValue;
|
|
17
|
+
/** @default true */
|
|
18
|
+
animated?: boolean;
|
|
19
|
+
style?: StyleProp<ViewStyle>;
|
|
20
|
+
testID?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Skeleton
|
|
24
|
+
* Placeholder que late mientras llega el contenido real. Reserva el espacio
|
|
25
|
+
* exacto de lo que reemplaza, así la pantalla no salta cuando aparecen los
|
|
26
|
+
* datos — que es justamente lo que un Spinner centrado no puede hacer.
|
|
27
|
+
*/
|
|
28
|
+
export declare const Skeleton: React.MemoExoticComponent<({ width, height, variant, radius, lines, lastLineWidth, animated, style, testID, }: SkeletonProps) => React.JSX.Element>;
|
|
29
|
+
//# sourceMappingURL=Skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/atoms/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AACvD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,oEAAoE;IACpE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,sBAAsB;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,iHAWhB,aAAa,uBAyDjB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Animated, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
export type TransitionPreset = 'fade' | 'scale' | 'pop' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';
|
|
4
|
+
export interface TransitionProps {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
/** Entra en true, sale (y desmonta) en false. @default true */
|
|
7
|
+
visible?: boolean;
|
|
8
|
+
/** Uno o varios: 'fade scale' combina opacidad y escala. @default 'fade' */
|
|
9
|
+
preset?: TransitionPreset | TransitionPreset[];
|
|
10
|
+
/** ms del timing. @default tokens.duration.base */
|
|
11
|
+
duration?: number;
|
|
12
|
+
/** ms antes de arrancar. Un índice por delay escalona una lista. @default 0 */
|
|
13
|
+
delay?: number;
|
|
14
|
+
/** Píxeles que recorren los presets de slide. @default 24 */
|
|
15
|
+
distance?: number;
|
|
16
|
+
/** Spring en vez de timing (implícito en 'pop'). */
|
|
17
|
+
spring?: boolean;
|
|
18
|
+
/** Anima también el primer render. En false arranca ya presente. @default true */
|
|
19
|
+
appear?: boolean;
|
|
20
|
+
/** Deja el nodo montado al salir, sólo lo esconde. @default false */
|
|
21
|
+
keepMounted?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Progreso 0→1 manejado desde afuera. Con esto el Transition sólo interpola:
|
|
24
|
+
* quien lo pasa decide cuándo y cómo avanza (un PanResponder, por ejemplo).
|
|
25
|
+
*/
|
|
26
|
+
value?: Animated.Value;
|
|
27
|
+
onEntered?: () => void;
|
|
28
|
+
onExited?: () => void;
|
|
29
|
+
style?: StyleProp<ViewStyle>;
|
|
30
|
+
testID?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Sigue el ajuste de "reducir movimiento" del sistema: con él activo las
|
|
34
|
+
* animaciones saltan al estado final en vez de desactivarse, así que los
|
|
35
|
+
* callbacks y el desmontaje siguen ocurriendo igual.
|
|
36
|
+
*/
|
|
37
|
+
export declare function useReduceMotion(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Transition
|
|
40
|
+
* Envuelve cualquier árbol y lo anima al entrar y al salir. Todos los presets
|
|
41
|
+
* se reducen a `opacity` y `transform` sobre un único Animated.Value, que es
|
|
42
|
+
* lo que `useNativeDriver` sabe mandar al hilo nativo: la animación corre ahí
|
|
43
|
+
* y el hilo de JS no participa de ningún frame — por eso no hay presets de
|
|
44
|
+
* alto, ancho o color, que obligarían a volver a JS en cada frame.
|
|
45
|
+
*
|
|
46
|
+
* El nodo se mantiene montado hasta que termina la animación de salida, y el
|
|
47
|
+
* comportamiento es idéntico en iOS y Android: no hay ninguna rama por
|
|
48
|
+
* plataforma.
|
|
49
|
+
*/
|
|
50
|
+
export declare const Transition: React.MemoExoticComponent<({ children, visible, preset, duration, delay, distance, spring, appear, keepMounted, value, onEntered, onExited, style, testID, }: TransitionProps) => React.JSX.Element | null>;
|
|
51
|
+
//# sourceMappingURL=Transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transition.d.ts","sourceRoot":"","sources":["../../../src/atoms/Transition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAqB,QAAQ,EAAU,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGnG,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,OAAO,GACP,KAAK,GACL,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAC/C,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAkBzC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,gKAgBlB,eAAe,8BA0FnB,CAAC"}
|
|
@@ -20,6 +20,10 @@ export { Image, prefetchImage } from './Image';
|
|
|
20
20
|
export type { ImageProps } from './Image';
|
|
21
21
|
export { Spinner } from './Spinner';
|
|
22
22
|
export type { SpinnerProps, SpinnerVariant } from './Spinner';
|
|
23
|
+
export { Skeleton } from './Skeleton';
|
|
24
|
+
export type { SkeletonProps, SkeletonVariant } from './Skeleton';
|
|
25
|
+
export { Transition, useReduceMotion } from './Transition';
|
|
26
|
+
export type { TransitionProps, TransitionPreset } from './Transition';
|
|
23
27
|
export { EmptyState } from './EmptyState';
|
|
24
28
|
export type { EmptyStateProps } from './EmptyState';
|
|
25
29
|
export { KeyValueRow } from './KeyValueRow';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|