orn-ui 0.2.6 → 0.2.8

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.
Files changed (146) hide show
  1. package/AGENTS.md +372 -0
  2. package/README.md +46 -15
  3. package/lib/commonjs/atoms/Gradient.js +111 -0
  4. package/lib/commonjs/atoms/Gradient.js.map +1 -0
  5. package/lib/commonjs/atoms/index.js +7 -0
  6. package/lib/commonjs/atoms/index.js.map +1 -1
  7. package/lib/commonjs/organisms/Slides.js +406 -0
  8. package/lib/commonjs/organisms/Slides.js.map +1 -0
  9. package/lib/commonjs/organisms/index.js +7 -0
  10. package/lib/commonjs/organisms/index.js.map +1 -1
  11. package/lib/commonjs/organisms/useSlides.js +186 -0
  12. package/lib/commonjs/organisms/useSlides.js.map +1 -0
  13. package/lib/module/atoms/Gradient.js +106 -0
  14. package/lib/module/atoms/Gradient.js.map +1 -0
  15. package/lib/module/atoms/index.js +1 -0
  16. package/lib/module/atoms/index.js.map +1 -1
  17. package/lib/module/organisms/Slides.js +401 -0
  18. package/lib/module/organisms/Slides.js.map +1 -0
  19. package/lib/module/organisms/index.js +1 -0
  20. package/lib/module/organisms/index.js.map +1 -1
  21. package/lib/module/organisms/useSlides.js +182 -0
  22. package/lib/module/organisms/useSlides.js.map +1 -0
  23. package/lib/typescript/atoms/Badge.d.ts +1 -1
  24. package/lib/typescript/atoms/Badge.d.ts.map +1 -1
  25. package/lib/typescript/atoms/Gradient.d.ts +37 -0
  26. package/lib/typescript/atoms/Gradient.d.ts.map +1 -0
  27. package/lib/typescript/atoms/Image.d.ts +6 -6
  28. package/lib/typescript/atoms/Image.d.ts.map +1 -1
  29. package/lib/typescript/atoms/Input.d.ts +1 -1
  30. package/lib/typescript/atoms/Input.d.ts.map +1 -1
  31. package/lib/typescript/atoms/PressableScale.d.ts +1 -1
  32. package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
  33. package/lib/typescript/atoms/Skeleton.d.ts +5 -5
  34. package/lib/typescript/atoms/Skeleton.d.ts.map +1 -1
  35. package/lib/typescript/atoms/Spinner.d.ts +4 -4
  36. package/lib/typescript/atoms/Spinner.d.ts.map +1 -1
  37. package/lib/typescript/atoms/Transition.d.ts +10 -10
  38. package/lib/typescript/atoms/Transition.d.ts.map +1 -1
  39. package/lib/typescript/atoms/index.d.ts +2 -0
  40. package/lib/typescript/atoms/index.d.ts.map +1 -1
  41. package/lib/typescript/molecules/AvatarHeader.d.ts +2 -2
  42. package/lib/typescript/molecules/AvatarHeader.d.ts.map +1 -1
  43. package/lib/typescript/molecules/FormActions.d.ts +1 -1
  44. package/lib/typescript/molecules/FormActions.d.ts.map +1 -1
  45. package/lib/typescript/molecules/OptionCard.d.ts +2 -2
  46. package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
  47. package/lib/typescript/molecules/Stepper.d.ts +8 -8
  48. package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
  49. package/lib/typescript/molecules/Steps.d.ts +3 -3
  50. package/lib/typescript/molecules/Steps.d.ts.map +1 -1
  51. package/lib/typescript/molecules/SymmetricGrid.d.ts +4 -4
  52. package/lib/typescript/molecules/SymmetricGrid.d.ts.map +1 -1
  53. package/lib/typescript/organisms/BottomSheet.d.ts +8 -8
  54. package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
  55. package/lib/typescript/organisms/DateField.d.ts +10 -10
  56. package/lib/typescript/organisms/DateField.d.ts.map +1 -1
  57. package/lib/typescript/organisms/DatePicker.d.ts +10 -10
  58. package/lib/typescript/organisms/DatePicker.d.ts.map +1 -1
  59. package/lib/typescript/organisms/List.d.ts +6 -6
  60. package/lib/typescript/organisms/List.d.ts.map +1 -1
  61. package/lib/typescript/organisms/NavigationBar.d.ts +2 -2
  62. package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -1
  63. package/lib/typescript/organisms/ReorderableList.d.ts +7 -7
  64. package/lib/typescript/organisms/ReorderableList.d.ts.map +1 -1
  65. package/lib/typescript/organisms/Screen.d.ts +6 -6
  66. package/lib/typescript/organisms/SearchList.d.ts +8 -8
  67. package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
  68. package/lib/typescript/organisms/Select.d.ts +2 -2
  69. package/lib/typescript/organisms/Select.d.ts.map +1 -1
  70. package/lib/typescript/organisms/Slides.d.ts +69 -0
  71. package/lib/typescript/organisms/Slides.d.ts.map +1 -0
  72. package/lib/typescript/organisms/Toast.d.ts +2 -2
  73. package/lib/typescript/organisms/Toast.d.ts.map +1 -1
  74. package/lib/typescript/organisms/ToastProvider.d.ts +2 -2
  75. package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
  76. package/lib/typescript/organisms/Wizard.d.ts +7 -7
  77. package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
  78. package/lib/typescript/organisms/index.d.ts +2 -0
  79. package/lib/typescript/organisms/index.d.ts.map +1 -1
  80. package/lib/typescript/organisms/useSlides.d.ts +52 -0
  81. package/lib/typescript/organisms/useSlides.d.ts.map +1 -0
  82. package/lib/typescript/theme/UIProvider.d.ts +9 -9
  83. package/lib/typescript/theme/UIProvider.d.ts.map +1 -1
  84. package/llms.txt +34 -0
  85. package/package.json +34 -6
  86. package/registry/avatar-header.json +1 -1
  87. package/registry/badge.json +1 -1
  88. package/registry/bottom-sheet.json +1 -1
  89. package/registry/core.json +1 -1
  90. package/registry/date-field.json +1 -1
  91. package/registry/date-picker.json +1 -1
  92. package/registry/form-actions.json +1 -1
  93. package/registry/gradient.json +18 -0
  94. package/registry/image.json +1 -1
  95. package/registry/index.json +52 -26
  96. package/registry/input.json +1 -1
  97. package/registry/list.json +1 -1
  98. package/registry/manifest.json +14 -0
  99. package/registry/navigation-bar.json +1 -1
  100. package/registry/option-card.json +1 -1
  101. package/registry/pressable-scale.json +1 -1
  102. package/registry/reorderable-list.json +1 -1
  103. package/registry/screen.json +1 -1
  104. package/registry/search-list.json +1 -1
  105. package/registry/select.json +1 -1
  106. package/registry/skeleton.json +1 -1
  107. package/registry/slides.json +24 -0
  108. package/registry/spinner.json +1 -1
  109. package/registry/stepper.json +1 -1
  110. package/registry/steps.json +1 -1
  111. package/registry/symmetric-grid.json +1 -1
  112. package/registry/toast-provider.json +1 -1
  113. package/registry/toast.json +1 -1
  114. package/registry/transition.json +1 -1
  115. package/registry/wizard.json +1 -1
  116. package/src/atoms/Badge.tsx +1 -1
  117. package/src/atoms/Gradient.tsx +99 -0
  118. package/src/atoms/Image.tsx +6 -6
  119. package/src/atoms/Input.tsx +1 -1
  120. package/src/atoms/PressableScale.tsx +1 -1
  121. package/src/atoms/Skeleton.tsx +5 -5
  122. package/src/atoms/Spinner.tsx +4 -4
  123. package/src/atoms/Transition.tsx +10 -10
  124. package/src/atoms/index.ts +2 -0
  125. package/src/molecules/AvatarHeader.tsx +2 -2
  126. package/src/molecules/FormActions.tsx +1 -1
  127. package/src/molecules/OptionCard.tsx +2 -2
  128. package/src/molecules/Stepper.tsx +8 -8
  129. package/src/molecules/Steps.tsx +3 -3
  130. package/src/molecules/SymmetricGrid.tsx +4 -4
  131. package/src/organisms/BottomSheet.tsx +8 -8
  132. package/src/organisms/DateField.tsx +10 -10
  133. package/src/organisms/DatePicker.tsx +10 -10
  134. package/src/organisms/List.tsx +6 -6
  135. package/src/organisms/NavigationBar.tsx +2 -2
  136. package/src/organisms/ReorderableList.tsx +7 -7
  137. package/src/organisms/Screen.tsx +6 -6
  138. package/src/organisms/SearchList.tsx +8 -8
  139. package/src/organisms/Select.tsx +2 -2
  140. package/src/organisms/Slides.tsx +413 -0
  141. package/src/organisms/Toast.tsx +2 -2
  142. package/src/organisms/ToastProvider.tsx +2 -2
  143. package/src/organisms/Wizard.tsx +7 -7
  144. package/src/organisms/index.ts +8 -0
  145. package/src/organisms/useSlides.ts +220 -0
  146. package/src/theme/UIProvider.tsx +9 -9
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { useReduceMotion } from '../atoms/Transition';
5
+
6
+ /** Una página del scroll. Los clones del modo infinito repiten el `real` de un vecino. */
7
+
8
+ export function clampIndex(value, total) {
9
+ if (total === 0) return 0;
10
+ if (value < 0) return 0;
11
+ if (value > total - 1) return total - 1;
12
+ return value;
13
+ }
14
+
15
+ /**
16
+ * useSlides
17
+ * Todo lo que en `Slides` no se ve: qué página está encuadrada, cuándo mover el
18
+ * scroll, cómo se mapean los clones del modo infinito a índices reales, y el
19
+ * reloj del avance automático.
20
+ *
21
+ * Trabaja sólo con índices, nunca con los ítems: así no necesita el genérico
22
+ * `T` del componente, y el UI resuelve `pages[i].real` contra su propio `data`.
23
+ */
24
+ export function useSlides({
25
+ total,
26
+ orientation,
27
+ loop,
28
+ autoPlay,
29
+ interval,
30
+ index,
31
+ defaultIndex,
32
+ onIndexChange
33
+ }) {
34
+ const motionReduced = useReduceMotion();
35
+ const isHorizontal = orientation === 'horizontal';
36
+ // Un solo elemento no tiene a dónde ciclar: quedaría deslizable entre tres
37
+ // copias de lo mismo.
38
+ const isLoop = loop && total > 1;
39
+ const [uncontrolled, setUncontrolled] = useState(() => clampIndex(defaultIndex, total));
40
+ const active = clampIndex(index ?? uncontrolled, total);
41
+ const activeRef = useRef(active);
42
+ activeRef.current = active;
43
+ const [autoPlayPaused, setAutoPlayPaused] = useState(false);
44
+ const [size, setSize] = useState({
45
+ width: 0,
46
+ height: 0
47
+ });
48
+ const pageSize = isHorizontal ? size.width : size.height;
49
+ const scrollRef = useRef(null);
50
+ /** Página realmente visible (índice dentro de `pages`, clones incluidos). */
51
+ const offsetPageRef = useRef(isLoop ? 1 : 0);
52
+ const didInitRef = useRef(false);
53
+ const lastPageSizeRef = useRef(0);
54
+ const draggingRef = useRef(false);
55
+ const pages = useMemo(() => {
56
+ const real = Array.from({
57
+ length: total
58
+ }, (_, i) => ({
59
+ real: i,
60
+ clone: null
61
+ }));
62
+ if (!isLoop) return real;
63
+ return [{
64
+ real: total - 1,
65
+ clone: 'head'
66
+ }, ...real, {
67
+ real: 0,
68
+ clone: 'tail'
69
+ }];
70
+ }, [isLoop, total]);
71
+ const scrollToPage = useCallback((page, animated) => {
72
+ const offset = page * pageSize;
73
+ scrollRef.current?.scrollTo({
74
+ x: isHorizontal ? offset : 0,
75
+ y: isHorizontal ? 0 : offset,
76
+ animated
77
+ });
78
+ }, [isHorizontal, pageSize]);
79
+ const goTo = useCallback(next => {
80
+ if (next === activeRef.current) return;
81
+ activeRef.current = next;
82
+ if (index == null) setUncontrolled(next);
83
+ onIndexChange?.(next);
84
+ }, [index, onIndexChange]);
85
+
86
+ // Sólo actúa cuando el índice y la página visible discrepan: un cambio que
87
+ // vino del propio gesto no dispara un segundo scroll encima del que frenó.
88
+ useEffect(() => {
89
+ if (pageSize === 0 || total === 0) return;
90
+ const target = isLoop ? active + 1 : active;
91
+ const resized = lastPageSizeRef.current !== pageSize;
92
+ if (offsetPageRef.current === target && didInitRef.current && !resized) return;
93
+ // Ni el primer posicionamiento ni el reacomodo por rotación son un cambio
94
+ // de slide: animarlos sería un deslizamiento que nadie pidió.
95
+ const animated = didInitRef.current && !resized;
96
+ didInitRef.current = true;
97
+ lastPageSizeRef.current = pageSize;
98
+ offsetPageRef.current = target;
99
+ scrollToPage(target, animated);
100
+ }, [active, isLoop, pageSize, scrollToPage, total]);
101
+ const onLayout = useCallback(event => {
102
+ const {
103
+ width,
104
+ height
105
+ } = event.nativeEvent.layout;
106
+ setSize(prev => prev.width === width && prev.height === height ? prev : {
107
+ width,
108
+ height
109
+ });
110
+ }, []);
111
+ const onMomentumScrollEnd = useCallback(event => {
112
+ draggingRef.current = false;
113
+ if (pageSize === 0) return;
114
+ const {
115
+ contentOffset
116
+ } = event.nativeEvent;
117
+ const page = Math.round((isHorizontal ? contentOffset.x : contentOffset.y) / pageSize);
118
+ if (isLoop) {
119
+ if (page === 0) {
120
+ offsetPageRef.current = total;
121
+ scrollToPage(total, false);
122
+ goTo(total - 1);
123
+ return;
124
+ }
125
+ if (page === total + 1) {
126
+ offsetPageRef.current = 1;
127
+ scrollToPage(1, false);
128
+ goTo(0);
129
+ return;
130
+ }
131
+ offsetPageRef.current = page;
132
+ goTo(page - 1);
133
+ return;
134
+ }
135
+ offsetPageRef.current = page;
136
+ goTo(clampIndex(page, total));
137
+ }, [goTo, isHorizontal, isLoop, pageSize, scrollToPage, total]);
138
+ const onScrollBeginDrag = useCallback(() => {
139
+ draggingRef.current = true;
140
+ }, []);
141
+ const onScrollEndDrag = useCallback(() => {
142
+ // Un arrastre corto puede soltarse sin inercia y no emitir
143
+ // momentumScrollEnd: sin esto el autoPlay quedaría pausado para siempre.
144
+ draggingRef.current = false;
145
+ }, []);
146
+ const toggleAutoPlay = useCallback(() => setAutoPlayPaused(paused => !paused), []);
147
+ useEffect(() => {
148
+ if (!autoPlay || autoPlayPaused || motionReduced || total < 2 || pageSize === 0) return;
149
+ const timer = setInterval(() => {
150
+ if (draggingRef.current) return;
151
+ const from = activeRef.current;
152
+ if (from < total - 1) {
153
+ goTo(from + 1);
154
+ return;
155
+ }
156
+ if (!isLoop) return;
157
+ // Última en modo infinito: avanza al clon de la primera en vez de
158
+ // rebobinar; el salto al original lo cierra momentumScrollEnd.
159
+ offsetPageRef.current = total + 1;
160
+ scrollToPage(total + 1, true);
161
+ }, interval);
162
+ return () => clearInterval(timer);
163
+ }, [autoPlay, autoPlayPaused, goTo, interval, isLoop, motionReduced, pageSize, scrollToPage, total]);
164
+ return {
165
+ active,
166
+ pages,
167
+ isHorizontal,
168
+ isLoop,
169
+ size,
170
+ pageSize,
171
+ scrollRef,
172
+ autoPlayPaused,
173
+ motionReduced,
174
+ goTo,
175
+ toggleAutoPlay,
176
+ onLayout,
177
+ onMomentumScrollEnd,
178
+ onScrollBeginDrag,
179
+ onScrollEndDrag
180
+ };
181
+ }
182
+ //# sourceMappingURL=useSlides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useReduceMotion","clampIndex","value","total","useSlides","orientation","loop","autoPlay","interval","index","defaultIndex","onIndexChange","motionReduced","isHorizontal","isLoop","uncontrolled","setUncontrolled","active","activeRef","current","autoPlayPaused","setAutoPlayPaused","size","setSize","width","height","pageSize","scrollRef","offsetPageRef","didInitRef","lastPageSizeRef","draggingRef","pages","real","Array","from","length","_","i","clone","scrollToPage","page","animated","offset","scrollTo","x","y","goTo","next","target","resized","onLayout","event","nativeEvent","layout","prev","onMomentumScrollEnd","contentOffset","Math","round","onScrollBeginDrag","onScrollEndDrag","toggleAutoPlay","paused","timer","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["organisms/useSlides.ts"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ export type BadgeVariant = 'success' | 'error' | 'warning' | 'info' | 'neutral';
4
4
  export interface BadgeProps {
5
5
  label: string;
6
6
  variant?: BadgeVariant;
7
- /** Override manual, gana sobre `variant`. */
7
+ /** Manual override, takes precedence over `variant`. */
8
8
  backgroundColor?: string;
9
9
  textColor?: string;
10
10
  style?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/atoms/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1E,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAYD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,oFAA4E,UAAU,uBAuBtG,CAAC"}
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/atoms/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1E,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAYD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,oFAA4E,UAAU,uBAuBtG,CAAC"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ export type GradientDirection = 'vertical' | 'horizontal' | 'diagonal' | 'diagonal-reverse';
4
+ export interface GradientProps {
5
+ /** Paradas del degradado. Uno solo pinta plano; ninguno no pinta nada. */
6
+ colors: string[];
7
+ /**
8
+ * 'vertical' va de arriba a abajo, 'horizontal' de izquierda a derecha,
9
+ * 'diagonal' de arriba-izquierda a abajo-derecha y 'diagonal-reverse' de
10
+ * arriba-derecha a abajo-izquierda.
11
+ * @default 'vertical'
12
+ */
13
+ direction?: GradientDirection;
14
+ /**
15
+ * Bandas por tramo (un tramo = un par de colores consecutivos). Más bandas
16
+ * = transición más suave y más vistas en el árbol.
17
+ * @default 24
18
+ */
19
+ steps?: number;
20
+ /** Contenido por encima del degradado. */
21
+ children?: React.ReactNode;
22
+ style?: StyleProp<ViewStyle>;
23
+ testID?: string;
24
+ }
25
+ /**
26
+ * Gradient
27
+ * Degradado lineal sin dependencias: React Native no trae uno en el rango
28
+ * soportado (Expo SDK 54–57) y `experimental_backgroundImage` no está en toda
29
+ * esa ventana, así que se compone con bandas.
30
+ *
31
+ * Cada tramo pinta el color inicial y encima N bandas del final con opacidad
32
+ * de 0 a 1. El compositor mezcla alpha linealmente: el resultado es la
33
+ * interpolación sRGB entre paradas sin parsear el color, y por eso vale
34
+ * cualquier formato que acepte RN (hex, `rgba()`, nombre).
35
+ */
36
+ export declare const Gradient: React.MemoExoticComponent<({ colors, direction, steps, children, style, testID }: GradientProps) => React.JSX.Element>;
37
+ //# sourceMappingURL=Gradient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gradient.d.ts","sourceRoot":"","sources":["../../../src/atoms/Gradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,kBAAkB,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,oFACkE,aAAa,uBA+CnG,CAAC"}
@@ -6,16 +6,16 @@ export interface ImageProps {
6
6
  height?: number;
7
7
  /** @default 'cover' */
8
8
  resizeMode?: ImageResizeMode;
9
- /** Radio de las esquinas, mismo patrón que Avatar/Card. @default 0 */
9
+ /** Corner radius, same pattern as Avatar/Card. @default 0 */
10
10
  radius?: number;
11
- /** Qué mostrar mientras carga. `false` para no mostrar nada. @default true (spinner chico) */
11
+ /** What to show while loading. `false` to show nothing. @default true (small spinner) */
12
12
  loading?: React.ReactNode | boolean;
13
- /** Qué mostrar si la carga falla. @default un placeholder gris, sin contenido */
13
+ /** What to show if loading fails. @default a gray placeholder, no content */
14
14
  fallback?: React.ReactNode;
15
15
  /**
16
- * 'high' dispara Image.prefetch() al montar, antes de que <Image> arranque
17
- * su propio ciclo de carga — pensado para la imagen above-the-fold de una
18
- * pantalla (la primera que el usuario ve). Sin costo si ya está en caché.
16
+ * 'high' triggers Image.prefetch() on mount, before <Image> starts
17
+ * its own load cycle — meant for the above-the-fold image of a
18
+ * screen (the first one the user sees). No cost if it's already cached.
19
19
  * @default 'normal'
20
20
  */
21
21
  priority?: 'low' | 'normal' | 'high';
@@ -1 +1 @@
1
- {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/atoms/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EACL,KAAK,IAAI,OAAO,EAIhB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,6IAcb,UAAU,uBAoDd,CAAC;AAGF;;;;GAIG;AACH,eAAO,MAAM,aAAa,yBAAmB,CAAC"}
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/atoms/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EACL,KAAK,IAAI,OAAO,EAIhB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,6IAcb,UAAU,uBAoDd,CAAC;AAGF;;;;GAIG;AACH,eAAO,MAAM,aAAa,yBAAmB,CAAC"}
@@ -3,7 +3,7 @@ import { type StyleProp, type TextInputProps, type ViewStyle } from 'react-nativ
3
3
  import type { IconName } from '../icons/types';
4
4
  export interface InputProps extends Omit<TextInputProps, 'style'> {
5
5
  label?: string;
6
- /** Muestra un asterisco junto al label. Puramente visual, no valida nada. */
6
+ /** Shows an asterisk next to the label. Purely visual, doesn't validate anything. */
7
7
  required?: boolean;
8
8
  error?: string;
9
9
  containerStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/atoms/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AACtD,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA+BD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,yLAgBb,UAAU,uBAkFd,CAAC"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/atoms/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AACtD,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA+BD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,yLAgBb,UAAU,uBAkFd,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type PressableProps, type StyleProp, type ViewStyle } from 'react-native';
3
3
  export interface PressableScaleProps extends Omit<PressableProps, 'style'> {
4
- /** Escala objetivo al presionar. @default 0.96 */
4
+ /** Target scale when pressed. @default 0.96 */
5
5
  scaleTo?: number;
6
6
  style?: StyleProp<ViewStyle>;
7
7
  children: React.ReactNode;
@@ -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,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"}
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,+CAA+C;IAC/C,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"}
@@ -2,17 +2,17 @@ import React from 'react';
2
2
  import { type DimensionValue, type StyleProp, type ViewStyle } from 'react-native';
3
3
  export type SkeletonVariant = 'rect' | 'text' | 'circle';
4
4
  export interface SkeletonProps {
5
- /** @default '100%' ('circle' lo usa también como diámetro) */
5
+ /** @default '100%' ('circle' also uses this as the diameter) */
6
6
  width?: DimensionValue;
7
- /** @default 16 ('text' usa el alto de línea; 'circle', el ancho) */
7
+ /** @default 16 ('text' uses the line height; 'circle', the width) */
8
8
  height?: DimensionValue;
9
9
  /** @default 'rect' */
10
10
  variant?: SkeletonVariant;
11
- /** Override del radius del theme. */
11
+ /** Override of the theme's radius. */
12
12
  radius?: number;
13
- /** Líneas apiladas, sólo para variant="text". @default 1 */
13
+ /** Stacked lines, only for variant="text". @default 1 */
14
14
  lines?: number;
15
- /** Ancho de la última línea, para que el párrafo no termine en bloque. @default '60%' */
15
+ /** Width of the last line, so the paragraph doesn't end as a solid block. @default '60%' */
16
16
  lastLineWidth?: DimensionValue;
17
17
  /** @default true */
18
18
  animated?: boolean;
@@ -1 +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"}
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,gEAAgE;IAChE,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,qEAAqE;IACrE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,sBAAsB;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,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"}
@@ -4,15 +4,15 @@ export interface SpinnerProps {
4
4
  size?: 'small' | 'large';
5
5
  color?: string;
6
6
  text?: string;
7
- /** @default true. En false, no ocupa flex:1 (útil inline, dentro de un botón/fila). */
7
+ /** @default true. When false, doesn't take up flex:1 (useful inline, inside a button/row). */
8
8
  fullscreen?: boolean;
9
9
  /**
10
- * 'native' usa el ActivityIndicator del sistema; 'dots' y 'ring' son
11
- * indicadores propios, iguales en iOS y Android.
10
+ * 'native' uses the system's ActivityIndicator; 'dots' and 'ring' are
11
+ * custom indicators, identical on iOS and Android.
12
12
  * @default 'native'
13
13
  */
14
14
  variant?: SpinnerVariant;
15
- /** Indicador totalmente propio. Gana sobre `variant`. */
15
+ /** Fully custom indicator. Takes precedence over `variant`. */
16
16
  indicator?: React.ReactNode;
17
17
  testID?: string;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/atoms/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAKvD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,yDAAyD;IACzD,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6ED,eAAO,MAAM,OAAO,4FAC0E,YAAY,uBAyBzG,CAAC"}
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/atoms/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAKvD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6ED,eAAO,MAAM,OAAO,4FAC0E,YAAY,uBAyBzG,CAAC"}
@@ -3,25 +3,25 @@ import { Animated, type StyleProp, type ViewStyle } from 'react-native';
3
3
  export type TransitionPreset = 'fade' | 'scale' | 'pop' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';
4
4
  export interface TransitionProps {
5
5
  children: React.ReactNode;
6
- /** Entra en true, sale (y desmonta) en false. @default true */
6
+ /** Enters when true, exits (and unmounts) when false. @default true */
7
7
  visible?: boolean;
8
- /** Uno o varios: 'fade scale' combina opacidad y escala. @default 'fade' */
8
+ /** One or more: 'fade scale' combines opacity and scale. @default 'fade' */
9
9
  preset?: TransitionPreset | TransitionPreset[];
10
- /** ms del timing. @default tokens.duration.base */
10
+ /** Timing duration in ms. @default tokens.duration.base */
11
11
  duration?: number;
12
- /** ms antes de arrancar. Un índice por delay escalona una lista. @default 0 */
12
+ /** ms before starting. A per-index delay staggers a list. @default 0 */
13
13
  delay?: number;
14
- /** Píxeles que recorren los presets de slide. @default 24 */
14
+ /** Pixels traveled by the slide presets. @default 24 */
15
15
  distance?: number;
16
- /** Spring en vez de timing (implícito en 'pop'). */
16
+ /** Spring instead of timing (implicit in 'pop'). */
17
17
  spring?: boolean;
18
- /** Anima también el primer render. En false arranca ya presente. @default true */
18
+ /** Also animates the first render. When false it starts already present. @default true */
19
19
  appear?: boolean;
20
- /** Deja el nodo montado al salir, sólo lo esconde. @default false */
20
+ /** Keeps the node mounted on exit, only hides it. @default false */
21
21
  keepMounted?: boolean;
22
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).
23
+ * 0→1 progress driven from outside. With this, Transition only interpolates:
24
+ * whoever passes it decides when and how it advances (a PanResponder, for example).
25
25
  */
26
26
  value?: Animated.Value;
27
27
  onEntered?: () => void;
@@ -1 +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"}
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,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAC/C,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,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"}
@@ -14,6 +14,8 @@ export { Card } from './Card';
14
14
  export type { CardProps } from './Card';
15
15
  export { Divider } from './Divider';
16
16
  export type { DividerProps } from './Divider';
17
+ export { Gradient } from './Gradient';
18
+ export type { GradientProps, GradientDirection } from './Gradient';
17
19
  export { Avatar } from './Avatar';
18
20
  export type { AvatarProps } from './Avatar';
19
21
  export { Image, prefetchImage } from './Image';
@@ -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,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"}
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,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,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"}
@@ -2,10 +2,10 @@ import React from 'react';
2
2
  import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  import type { IconName } from '../icons/types';
4
4
  export interface AvatarHeaderProps {
5
- /** Ícono a mostrar dentro del círculo. Si se omite, se usan `initials`. */
5
+ /** Icon to show inside the circle. If omitted, `initials` is used instead. */
6
6
  iconName?: IconName;
7
7
  iconColor?: string;
8
- /** Texto corto (ej. 2 letras) mostrado si no se pasa `iconName`. */
8
+ /** Short text (e.g. 2 letters) shown when `iconName` isn't provided. */
9
9
  initials?: string;
10
10
  title: string;
11
11
  subtitle?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarHeader.d.ts","sourceRoot":"","sources":["../../../src/molecules/AvatarHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAkBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,wFAAoE,iBAAiB,uBA4B5G,CAAC"}
1
+ {"version":3,"file":"AvatarHeader.d.ts","sourceRoot":"","sources":["../../../src/molecules/AvatarHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAkBD;;;;GAIG;AACH,eAAO,MAAM,YAAY,wFAAoE,iBAAiB,uBA4B5G,CAAC"}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  import type { IconName } from '../icons/types';
4
4
  export interface FormActionsProps {
5
- /** Si se omite, solo se muestra el botón secundario. */
5
+ /** If omitted, only the secondary button is shown. */
6
6
  primaryLabel?: string;
7
7
  onPrimaryPress?: () => void;
8
8
  primaryDisabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"FormActions.d.ts","sourceRoot":"","sources":["../../../src/molecules/FormActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,QAAQ,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,+JAUnB,gBAAgB,uBAiBpB,CAAC"}
1
+ {"version":3,"file":"FormActions.d.ts","sourceRoot":"","sources":["../../../src/molecules/FormActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,QAAQ,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,+JAUnB,gBAAgB,uBAiBpB,CAAC"}
@@ -3,13 +3,13 @@ import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  import type { IconName } from '../icons/types';
4
4
  export interface OptionCardProps {
5
5
  label: string;
6
- /** Línea secundaria: el detalle que decide la elección ("llega en 3 días"). */
6
+ /** Secondary line: the detail that decides the choice ("arrives in 3 days"). */
7
7
  description?: string;
8
8
  iconName?: IconName;
9
9
  isSelected: boolean;
10
10
  onPress: () => void;
11
11
  disabled?: boolean;
12
- /** 'vertical': ícono arriba, texto abajo centrado. 'horizontal': en fila. @default 'horizontal' */
12
+ /** 'vertical': icon on top, text centered below. 'horizontal': in a row. @default 'horizontal' */
13
13
  layout?: 'vertical' | 'horizontal';
14
14
  style?: StyleProp<ViewStyle>;
15
15
  testID?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"OptionCard.d.ts","sourceRoot":"","sources":["../../../src/molecules/OptionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAK1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mGAAmG;IACnG,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiCD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,sHAWlB,eAAe,uBA8CnB,CAAC"}
1
+ {"version":3,"file":"OptionCard.d.ts","sourceRoot":"","sources":["../../../src/molecules/OptionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAK1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kGAAkG;IAClG,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiCD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,sHAWlB,eAAe,uBA8CnB,CAAC"}
@@ -6,23 +6,23 @@ export interface StepperProps {
6
6
  onChangeText: (text: string) => void;
7
7
  onIncrement: () => void;
8
8
  onDecrement: () => void;
9
- /** Escala del control: alto, botones, ícono y tipografía. @default 'md' */
9
+ /** Scale of the control: height, buttons, icon and typography. @default 'md' */
10
10
  size?: StepperSize;
11
- /** Ocupa todo el ancho disponible y el input se lleva el sobrante. @default false */
11
+ /** Takes up all available width and the input absorbs the extra space. @default false */
12
12
  block?: boolean;
13
13
  /**
14
- * En false el valor sólo se cambia con los botones: el teclado no se abre y
15
- * el campo pierde el fondo que lo anuncia como editable. @default true
14
+ * When false the value can only be changed with the buttons: the keyboard doesn't open and
15
+ * the field loses the background that marks it as editable. @default true
16
16
  */
17
17
  editable?: boolean;
18
18
  /**
19
- * Mínimo permitido. Deshabilita "-" al alcanzarlo y acota lo tipeado al
20
- * salir del campo. Los negativos se aceptan sólo si `min` es negativo.
19
+ * Minimum allowed value. Disables "-" when reached and clamps the typed value on
20
+ * blur. Negative values are only accepted if `min` is negative.
21
21
  */
22
22
  min?: number;
23
- /** Máximo permitido. Deshabilita "+" al alcanzarlo y acota lo tipeado. */
23
+ /** Maximum allowed value. Disables "+" when reached and clamps the typed value. */
24
24
  max?: number;
25
- /** Acepta un separador decimal, normalizando la coma a punto. @default false */
25
+ /** Accepts a decimal separator, normalizing comma to dot. @default false */
26
26
  allowDecimals?: boolean;
27
27
  style?: StyleProp<ViewStyle>;
28
28
  incrementAccessibilityLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Stepper.d.ts","sourceRoot":"","sources":["../../../src/molecules/Stepper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKjG,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgCD,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAqB,EAAE,aAAqB,EAAE;;;CAAK,GAAG,MAAM,CAO3G;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,0MAgBf,YAAY,uBAuFhB,CAAC"}
1
+ {"version":3,"file":"Stepper.d.ts","sourceRoot":"","sources":["../../../src/molecules/Stepper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKjG,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gFAAgF;IAChF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,yFAAyF;IACzF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgCD,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAqB,EAAE,aAAqB,EAAE;;;CAAK,GAAG,MAAM,CAO3G;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,0MAgBf,YAAY,uBAuFhB,CAAC"}
@@ -7,16 +7,16 @@ export interface StepItem {
7
7
  export type StepStatus = 'completed' | 'current' | 'pending';
8
8
  export interface StepsProps {
9
9
  steps: StepItem[];
10
- /** Índice del paso actual (0-based). Los anteriores quedan 'completed'. */
10
+ /** Index of the current step (0-based). Earlier steps become 'completed'. */
11
11
  current: number;
12
12
  /** @default 'horizontal' */
13
13
  orientation?: 'horizontal' | 'vertical';
14
14
  /**
15
- * Qué muestra el círculo de un paso ya completado: un check, o su número.
15
+ * What the circle of an already-completed step shows: a check, or its number.
16
16
  * @default 'check'
17
17
  */
18
18
  completedIndicator?: 'check' | 'number';
19
- /** Si se pasa, cada paso es tocable y reporta su índice. */
19
+ /** If provided, each step is tappable and reports its index. */
20
20
  onStepPress?: (index: number) => void;
21
21
  style?: StyleProp<ViewStyle>;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../../src/molecules/Steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAA4C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKxG,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAsDD;;;;GAIG;AACH,eAAO,MAAM,KAAK,sGACmF,UAAU,uBAsI9G,CAAC"}
1
+ {"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../../src/molecules/Steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAA4C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKxG,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAsDD;;;;GAIG;AACH,eAAO,MAAM,KAAK,sGACmF,UAAU,uBAsI9G,CAAC"}
@@ -4,13 +4,13 @@ export interface SymmetricGridProps<T> {
4
4
  data: T[];
5
5
  renderItem: (item: T, index: number) => React.ReactElement;
6
6
  keyExtractor: (item: T, index: number) => string;
7
- /** Columnas por fila. @default 2 */
7
+ /** Columns per row. @default 2 */
8
8
  columns?: number;
9
- /** Separación entre celdas, en ambos ejes. @default theme.tokens.spacing.md */
9
+ /** Spacing between cells, on both axes. @default theme.tokens.spacing.md */
10
10
  gap?: number;
11
11
  /**
12
- * Última fila incompleta: centrada (simétrica) en vez de pegada a la
13
- * izquierda con un hueco a la derecha. @default true
12
+ * Incomplete last row: centered (symmetric) instead of stuck to the
13
+ * left with a gap on the right. @default true
14
14
  */
15
15
  balanceLastRow?: boolean;
16
16
  style?: StyleProp<ViewStyle>;