orn-ui 0.1.1 → 0.2.1

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 (240) hide show
  1. package/README.md +20 -2
  2. package/lib/commonjs/atoms/PressableScale.js +9 -10
  3. package/lib/commonjs/atoms/PressableScale.js.map +1 -1
  4. package/lib/commonjs/atoms/Skeleton.js +96 -0
  5. package/lib/commonjs/atoms/Skeleton.js.map +1 -0
  6. package/lib/commonjs/atoms/Transition.js +171 -0
  7. package/lib/commonjs/atoms/Transition.js.map +1 -0
  8. package/lib/commonjs/atoms/index.js +20 -0
  9. package/lib/commonjs/atoms/index.js.map +1 -1
  10. package/lib/commonjs/molecules/OptionCard.js +55 -22
  11. package/lib/commonjs/molecules/OptionCard.js.map +1 -1
  12. package/lib/commonjs/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
  13. package/lib/commonjs/molecules/SegmentedControl.js.map +1 -0
  14. package/lib/commonjs/molecules/Stepper.js +124 -47
  15. package/lib/commonjs/molecules/Stepper.js.map +1 -1
  16. package/lib/commonjs/molecules/Steps.js +36 -6
  17. package/lib/commonjs/molecules/Steps.js.map +1 -1
  18. package/lib/commonjs/molecules/index.js +9 -3
  19. package/lib/commonjs/molecules/index.js.map +1 -1
  20. package/lib/commonjs/organisms/AlertProvider.js +26 -0
  21. package/lib/commonjs/organisms/AlertProvider.js.map +1 -1
  22. package/lib/commonjs/organisms/BottomSheet.js +118 -39
  23. package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
  24. package/lib/commonjs/organisms/DateField.js +46 -15
  25. package/lib/commonjs/organisms/DateField.js.map +1 -1
  26. package/lib/commonjs/organisms/DatePicker.js +129 -50
  27. package/lib/commonjs/organisms/DatePicker.js.map +1 -1
  28. package/lib/commonjs/organisms/List.js +66 -44
  29. package/lib/commonjs/organisms/List.js.map +1 -1
  30. package/lib/commonjs/organisms/Modal.js +42 -87
  31. package/lib/commonjs/organisms/Modal.js.map +1 -1
  32. package/lib/commonjs/organisms/NavigationBar.js +210 -0
  33. package/lib/commonjs/organisms/NavigationBar.js.map +1 -0
  34. package/lib/commonjs/organisms/Screen.js +9 -2
  35. package/lib/commonjs/organisms/Screen.js.map +1 -1
  36. package/lib/commonjs/organisms/SearchList.js +95 -27
  37. package/lib/commonjs/organisms/SearchList.js.map +1 -1
  38. package/lib/commonjs/organisms/Select.js +222 -50
  39. package/lib/commonjs/organisms/Select.js.map +1 -1
  40. package/lib/commonjs/organisms/ThemeToggle.js +52 -0
  41. package/lib/commonjs/organisms/ThemeToggle.js.map +1 -0
  42. package/lib/commonjs/organisms/Toast.js +8 -22
  43. package/lib/commonjs/organisms/Toast.js.map +1 -1
  44. package/lib/commonjs/organisms/ToastProvider.js +24 -0
  45. package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
  46. package/lib/commonjs/organisms/Wizard.js +23 -2
  47. package/lib/commonjs/organisms/Wizard.js.map +1 -1
  48. package/lib/commonjs/organisms/imperativeBridge.js +28 -0
  49. package/lib/commonjs/organisms/imperativeBridge.js.map +1 -0
  50. package/lib/commonjs/organisms/index.js +50 -0
  51. package/lib/commonjs/organisms/index.js.map +1 -1
  52. package/lib/commonjs/theme/colors.js +207 -0
  53. package/lib/commonjs/theme/colors.js.map +1 -0
  54. package/lib/commonjs/theme/createTheme.js +25 -2
  55. package/lib/commonjs/theme/createTheme.js.map +1 -1
  56. package/lib/commonjs/theme/index.js +25 -0
  57. package/lib/commonjs/theme/index.js.map +1 -1
  58. package/lib/commonjs/theme/labels.js +5 -1
  59. package/lib/commonjs/theme/labels.js.map +1 -1
  60. package/lib/commonjs/theme/palettes.js +5 -2
  61. package/lib/commonjs/theme/palettes.js.map +1 -1
  62. package/lib/module/atoms/PressableScale.js +9 -10
  63. package/lib/module/atoms/PressableScale.js.map +1 -1
  64. package/lib/module/atoms/Skeleton.js +91 -0
  65. package/lib/module/atoms/Skeleton.js.map +1 -0
  66. package/lib/module/atoms/Transition.js +165 -0
  67. package/lib/module/atoms/Transition.js.map +1 -0
  68. package/lib/module/atoms/index.js +2 -0
  69. package/lib/module/atoms/index.js.map +1 -1
  70. package/lib/module/molecules/OptionCard.js +56 -23
  71. package/lib/module/molecules/OptionCard.js.map +1 -1
  72. package/lib/module/molecules/{ThemeToggle.js → SegmentedControl.js} +36 -36
  73. package/lib/module/molecules/SegmentedControl.js.map +1 -0
  74. package/lib/module/molecules/Stepper.js +125 -49
  75. package/lib/module/molecules/Stepper.js.map +1 -1
  76. package/lib/module/molecules/Steps.js +37 -7
  77. package/lib/module/molecules/Steps.js.map +1 -1
  78. package/lib/module/molecules/index.js +2 -2
  79. package/lib/module/molecules/index.js.map +1 -1
  80. package/lib/module/organisms/AlertProvider.js +24 -1
  81. package/lib/module/organisms/AlertProvider.js.map +1 -1
  82. package/lib/module/organisms/BottomSheet.js +120 -41
  83. package/lib/module/organisms/BottomSheet.js.map +1 -1
  84. package/lib/module/organisms/DateField.js +49 -18
  85. package/lib/module/organisms/DateField.js.map +1 -1
  86. package/lib/module/organisms/DatePicker.js +131 -52
  87. package/lib/module/organisms/DatePicker.js.map +1 -1
  88. package/lib/module/organisms/List.js +68 -46
  89. package/lib/module/organisms/List.js.map +1 -1
  90. package/lib/module/organisms/Modal.js +44 -89
  91. package/lib/module/organisms/Modal.js.map +1 -1
  92. package/lib/module/organisms/NavigationBar.js +205 -0
  93. package/lib/module/organisms/NavigationBar.js.map +1 -0
  94. package/lib/module/organisms/Screen.js +9 -2
  95. package/lib/module/organisms/Screen.js.map +1 -1
  96. package/lib/module/organisms/SearchList.js +96 -28
  97. package/lib/module/organisms/SearchList.js.map +1 -1
  98. package/lib/module/organisms/Select.js +224 -52
  99. package/lib/module/organisms/Select.js.map +1 -1
  100. package/lib/module/organisms/ThemeToggle.js +47 -0
  101. package/lib/module/organisms/ThemeToggle.js.map +1 -0
  102. package/lib/module/organisms/Toast.js +10 -24
  103. package/lib/module/organisms/Toast.js.map +1 -1
  104. package/lib/module/organisms/ToastProvider.js +21 -0
  105. package/lib/module/organisms/ToastProvider.js.map +1 -1
  106. package/lib/module/organisms/Wizard.js +24 -3
  107. package/lib/module/organisms/Wizard.js.map +1 -1
  108. package/lib/module/organisms/imperativeBridge.js +24 -0
  109. package/lib/module/organisms/imperativeBridge.js.map +1 -0
  110. package/lib/module/organisms/index.js +4 -2
  111. package/lib/module/organisms/index.js.map +1 -1
  112. package/lib/module/theme/colors.js +194 -0
  113. package/lib/module/theme/colors.js.map +1 -0
  114. package/lib/module/theme/createTheme.js +25 -2
  115. package/lib/module/theme/createTheme.js.map +1 -1
  116. package/lib/module/theme/index.js +1 -0
  117. package/lib/module/theme/index.js.map +1 -1
  118. package/lib/module/theme/labels.js +5 -1
  119. package/lib/module/theme/labels.js.map +1 -1
  120. package/lib/module/theme/palettes.js +5 -2
  121. package/lib/module/theme/palettes.js.map +1 -1
  122. package/lib/typescript/atoms/PressableScale.d.ts +3 -2
  123. package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
  124. package/lib/typescript/atoms/Skeleton.d.ts +29 -0
  125. package/lib/typescript/atoms/Skeleton.d.ts.map +1 -0
  126. package/lib/typescript/atoms/Transition.d.ts +51 -0
  127. package/lib/typescript/atoms/Transition.d.ts.map +1 -0
  128. package/lib/typescript/atoms/index.d.ts +4 -0
  129. package/lib/typescript/atoms/index.d.ts.map +1 -1
  130. package/lib/typescript/molecules/OptionCard.d.ts +11 -6
  131. package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
  132. package/lib/typescript/molecules/SegmentedControl.d.ts +24 -0
  133. package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -0
  134. package/lib/typescript/molecules/Stepper.d.ts +35 -3
  135. package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
  136. package/lib/typescript/molecules/Steps.d.ts.map +1 -1
  137. package/lib/typescript/molecules/index.d.ts +4 -4
  138. package/lib/typescript/molecules/index.d.ts.map +1 -1
  139. package/lib/typescript/organisms/AlertProvider.d.ts +9 -0
  140. package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
  141. package/lib/typescript/organisms/BottomSheet.d.ts +26 -4
  142. package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
  143. package/lib/typescript/organisms/DateField.d.ts +23 -5
  144. package/lib/typescript/organisms/DateField.d.ts.map +1 -1
  145. package/lib/typescript/organisms/DatePicker.d.ts +5 -1
  146. package/lib/typescript/organisms/DatePicker.d.ts.map +1 -1
  147. package/lib/typescript/organisms/List.d.ts +9 -2
  148. package/lib/typescript/organisms/List.d.ts.map +1 -1
  149. package/lib/typescript/organisms/Modal.d.ts +3 -5
  150. package/lib/typescript/organisms/Modal.d.ts.map +1 -1
  151. package/lib/typescript/organisms/NavigationBar.d.ts +32 -0
  152. package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -0
  153. package/lib/typescript/organisms/Screen.d.ts +2 -1
  154. package/lib/typescript/organisms/Screen.d.ts.map +1 -1
  155. package/lib/typescript/organisms/SearchList.d.ts +21 -5
  156. package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
  157. package/lib/typescript/organisms/Select.d.ts +19 -4
  158. package/lib/typescript/organisms/Select.d.ts.map +1 -1
  159. package/lib/typescript/{molecules → organisms}/ThemeToggle.d.ts +4 -4
  160. package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -0
  161. package/lib/typescript/organisms/Toast.d.ts.map +1 -1
  162. package/lib/typescript/organisms/ToastProvider.d.ts +8 -0
  163. package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
  164. package/lib/typescript/organisms/Wizard.d.ts +7 -1
  165. package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
  166. package/lib/typescript/organisms/imperativeBridge.d.ts +12 -0
  167. package/lib/typescript/organisms/imperativeBridge.d.ts.map +1 -0
  168. package/lib/typescript/organisms/index.d.ts +7 -3
  169. package/lib/typescript/organisms/index.d.ts.map +1 -1
  170. package/lib/typescript/theme/colors.d.ts +44 -0
  171. package/lib/typescript/theme/colors.d.ts.map +1 -0
  172. package/lib/typescript/theme/createTheme.d.ts +3 -0
  173. package/lib/typescript/theme/createTheme.d.ts.map +1 -1
  174. package/lib/typescript/theme/index.d.ts +3 -1
  175. package/lib/typescript/theme/index.d.ts.map +1 -1
  176. package/lib/typescript/theme/labels.d.ts +6 -0
  177. package/lib/typescript/theme/labels.d.ts.map +1 -1
  178. package/lib/typescript/theme/palettes.d.ts.map +1 -1
  179. package/lib/typescript/theme/types.d.ts +9 -0
  180. package/lib/typescript/theme/types.d.ts.map +1 -1
  181. package/package.json +67 -6
  182. package/registry/alert-provider.json +9 -2
  183. package/registry/bottom-sheet.json +6 -2
  184. package/registry/core.json +9 -5
  185. package/registry/date-field.json +2 -1
  186. package/registry/date-picker.json +1 -1
  187. package/registry/index.json +99 -30
  188. package/registry/list.json +2 -1
  189. package/registry/manifest.json +44 -6
  190. package/registry/modal.json +3 -2
  191. package/registry/navigation-bar.json +18 -0
  192. package/registry/option-card.json +3 -2
  193. package/registry/pressable-scale.json +1 -1
  194. package/registry/screen.json +1 -1
  195. package/registry/search-list.json +2 -1
  196. package/registry/segmented-control.json +18 -0
  197. package/registry/select.json +1 -1
  198. package/registry/skeleton.json +18 -0
  199. package/registry/stepper.json +3 -2
  200. package/registry/steps.json +1 -1
  201. package/registry/theme-toggle.json +5 -4
  202. package/registry/toast-provider.json +11 -3
  203. package/registry/toast.json +3 -2
  204. package/registry/transition.json +19 -0
  205. package/registry/wizard.json +3 -2
  206. package/src/atoms/PressableScale.tsx +16 -6
  207. package/src/atoms/Skeleton.tsx +114 -0
  208. package/src/atoms/Transition.tsx +189 -0
  209. package/src/atoms/index.ts +4 -0
  210. package/src/molecules/OptionCard.tsx +62 -25
  211. package/src/molecules/SegmentedControl.tsx +84 -0
  212. package/src/molecules/Stepper.tsx +147 -32
  213. package/src/molecules/Steps.tsx +27 -8
  214. package/src/molecules/index.ts +4 -4
  215. package/src/organisms/AlertProvider.tsx +26 -1
  216. package/src/organisms/BottomSheet.tsx +214 -62
  217. package/src/organisms/DateField.tsx +79 -19
  218. package/src/organisms/DatePicker.tsx +198 -80
  219. package/src/organisms/List.tsx +73 -41
  220. package/src/organisms/Modal.tsx +49 -61
  221. package/src/organisms/NavigationBar.tsx +226 -0
  222. package/src/organisms/Screen.tsx +11 -3
  223. package/src/organisms/SearchList.tsx +131 -35
  224. package/src/organisms/Select.tsx +223 -45
  225. package/src/organisms/ThemeToggle.tsx +30 -0
  226. package/src/organisms/Toast.tsx +8 -21
  227. package/src/organisms/ToastProvider.tsx +24 -0
  228. package/src/organisms/Wizard.tsx +37 -3
  229. package/src/organisms/imperativeBridge.ts +28 -0
  230. package/src/organisms/index.ts +7 -3
  231. package/src/theme/colors.ts +175 -0
  232. package/src/theme/createTheme.ts +38 -4
  233. package/src/theme/index.ts +3 -1
  234. package/src/theme/labels.ts +13 -0
  235. package/src/theme/palettes.ts +5 -2
  236. package/src/theme/types.ts +10 -0
  237. package/lib/commonjs/molecules/ThemeToggle.js.map +0 -1
  238. package/lib/module/molecules/ThemeToggle.js.map +0 -1
  239. package/lib/typescript/molecules/ThemeToggle.d.ts.map +0 -1
  240. package/src/molecules/ThemeToggle.tsx +0 -67
package/README.md CHANGED
@@ -6,7 +6,7 @@ Fast, tree-shakeable, atomic-design component library for React Native.
6
6
  35 components (atoms, molecules, organisms), fully typed, themeable
7
7
  (light/dark), 246 tests, 90%/85% (lines/branches) coverage gate.
8
8
 
9
- Docs, props tables and demo GIFs: **[orn-ui.dev](https://orn-ui.dev)**
9
+ Docs, props tables and demo GIFs: **[orn-ui-docs.vercel.app](https://orn-ui-docs.vercel.app/)**
10
10
 
11
11
  ## Install
12
12
 
@@ -92,7 +92,25 @@ const insets = useSafeAreaInsets();
92
92
  `Screen`, `List`, `SearchList`, `Toast`/`ToastProvider`, `DatePicker`,
93
93
  `DateField`, `Wizard`
94
94
 
95
- Every component's full prop table lives on [orn-ui.dev](https://orn-ui.dev).
95
+ Every component's full prop table lives on [orn-ui-docs.vercel.app](https://orn-ui-docs.vercel.app/).
96
+
97
+ ### SearchList & List Features
98
+ - **Search & Scan**: Buscador integrado con soporte para acción de escaneo e ítem extra.
99
+ - **Carga inicial con Skeleton**: Soporta `skeletonCount` y `renderSkeletonItem` para placeholders animados.
100
+ - **Pull-to-Refresh**: Integración nativa mediante `onRefresh` e `isRefreshing`.
101
+ - **Paginación & Headers/Footers**: `ListHeaderComponent` y `ListFooterComponent` conviven limpiamente con el indicador `isLoadingMore` y `noMoreText`.
102
+ - **Estado vacío no destructivo**: `ListEmptyComponent` conserva el header, footer y gestos de scroll/refresh.
103
+
104
+ ### Worth knowing
105
+
106
+ - **Safe area, once.** A screen above a `NavigationBar` or tab bar takes
107
+ `edges={['top']}` — applying the bottom inset on both counts the gesture bar
108
+ twice and leaves an empty band.
109
+ - **Dates.** `DatePicker`/`DateField` both take `mode="range"`; `onClear` is
110
+ what renders the clear button; month/weekday names, the modal title and the
111
+ clear label come from `labels`.
112
+ - **`Steps`** scrolls its horizontal row rather than squeezing columns until
113
+ React Native breaks labels mid-word.
96
114
 
97
115
  ## Why zero dependencies
98
116
 
@@ -8,6 +8,8 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ const AnimatedPressable = _reactNative.Animated.createAnimatedComponent(_reactNative.Pressable);
12
+
11
13
  /**
12
14
  * PressableScale
13
15
  * Feedback táctil de "achicarse" al presionar, con Animated.spring de RN
@@ -40,20 +42,17 @@ const PressableScale = exports.PressableScale = /*#__PURE__*/(0, _react.memo)(({
40
42
  if (!disabled) animateTo(1);
41
43
  onPressOut?.(e);
42
44
  };
43
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
45
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedPressable, {
44
46
  ...props,
45
47
  disabled: disabled,
46
48
  onPressIn: handlePressIn,
47
49
  onPressOut: handlePressOut,
48
- style: style,
49
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
50
- style: {
51
- transform: [{
52
- scale
53
- }]
54
- },
55
- children: children
56
- })
50
+ style: [style, {
51
+ transform: [{
52
+ scale
53
+ }]
54
+ }],
55
+ children: children
57
56
  });
58
57
  });
59
58
  PressableScale.displayName = 'PressableScale';
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PressableScale","exports","memo","scaleTo","style","children","onPressIn","onPressOut","disabled","props","scale","useRef","Animated","Value","current","animateTo","value","spring","toValue","useNativeDriver","speed","bounciness","start","handlePressIn","handlePressOut","jsx","Pressable","View","transform","displayName"],"sourceRoot":"../../../src","sources":["atoms/PressableScale.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AnimatedPressable","Animated","createAnimatedComponent","Pressable","PressableScale","exports","memo","scaleTo","style","children","onPressIn","onPressOut","disabled","props","scale","useRef","Value","current","animateTo","value","spring","toValue","useNativeDriver","speed","bounciness","start","handlePressIn","handlePressOut","jsx","transform","displayName"],"sourceRoot":"../../../src","sources":["atoms/PressableScale.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOsB,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAStB,MAAMkB,iBAAiB,GAAGC,qBAAQ,CAACC,uBAAuB,CAACC,sBAAS,CAAC;;AAErE;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,gBAAG,IAAAE,WAAI,EAChC,CAAC;EAAEC,OAAO,GAAG,IAAI;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,UAAU;EAAEC,QAAQ;EAAE,GAAGC;AAA2B,CAAC,KAAK;EACvG,MAAMC,KAAK,GAAG,IAAAC,aAAM,EAAC,IAAId,qBAAQ,CAACe,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEnD,MAAMC,SAAS,GAAIC,KAAa,IAAK;IACnClB,qBAAQ,CAACmB,MAAM,CAACN,KAAK,EAAE;MACrBO,OAAO,EAAEF,KAAK;MACdG,eAAe,EAAE,IAAI;MACrBC,KAAK,EAAE,EAAE;MACTC,UAAU,EAAE;IACd,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EACZ,CAAC;EAED,MAAMC,aAAa,GAAI7C,CAAwB,IAAK;IAClD,IAAI,CAAC+B,QAAQ,EAAEM,SAAS,CAACX,OAAO,CAAC;IACjCG,SAAS,GAAG7B,CAAC,CAAC;EAChB,CAAC;EAED,MAAM8C,cAAc,GAAI9C,CAAwB,IAAK;IACnD,IAAI,CAAC+B,QAAQ,EAAEM,SAAS,CAAC,CAAC,CAAC;IAC3BP,UAAU,GAAG9B,CAAC,CAAC;EACjB,CAAC;EAED,oBACE,IAAAD,WAAA,CAAAgD,GAAA,EAAC5B,iBAAiB;IAAA,GACZa,KAAK;IACTD,QAAQ,EAAEA,QAAS;IACnBF,SAAS,EAAEgB,aAAc;IACzBf,UAAU,EAAEgB,cAAe;IAC3BnB,KAAK,EAAE,CAACA,KAAK,EAAE;MAAEqB,SAAS,EAAE,CAAC;QAAEf;MAAM,CAAC;IAAE,CAAC,CAAE;IAAAL,QAAA,EAE1CA;EAAQ,CACQ,CAAC;AAExB,CACF,CAAC;AACDL,cAAc,CAAC0B,WAAW,GAAG,gBAAgB","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Skeleton = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _createStyles = require("../theme/createStyles");
10
+ var _UIProvider = require("../theme/UIProvider");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const useStyles = (0, _createStyles.createStyles)(theme => ({
14
+ block: {
15
+ backgroundColor: theme.colors.skeleton
16
+ },
17
+ lines: {
18
+ gap: theme.tokens.spacing.sm
19
+ }
20
+ }));
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
+ const Skeleton = exports.Skeleton = /*#__PURE__*/(0, _react.memo)(({
29
+ width = '100%',
30
+ height = 16,
31
+ variant = 'rect',
32
+ radius,
33
+ lines = 1,
34
+ lastLineWidth = '60%',
35
+ animated = true,
36
+ style,
37
+ testID
38
+ }) => {
39
+ const theme = (0, _UIProvider.useTheme)();
40
+ const styles = useStyles();
41
+ const pulse = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
42
+ (0, _react.useEffect)(() => {
43
+ if (!animated) return;
44
+ const loop = _reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(pulse, {
45
+ toValue: 1,
46
+ duration: 700,
47
+ useNativeDriver: true,
48
+ easing: _reactNative.Easing.inOut(_reactNative.Easing.quad)
49
+ }), _reactNative.Animated.timing(pulse, {
50
+ toValue: 0,
51
+ duration: 700,
52
+ useNativeDriver: true,
53
+ easing: _reactNative.Easing.inOut(_reactNative.Easing.quad)
54
+ })]));
55
+ loop.start();
56
+ return () => loop.stop();
57
+ }, [animated, pulse]);
58
+ const isCircle = variant === 'circle';
59
+ const isText = variant === 'text';
60
+ const opacity = animated ? pulse.interpolate({
61
+ inputRange: [0, 1],
62
+ outputRange: [1, 0.4]
63
+ }) : 1;
64
+ const resolvedHeight = isCircle ? width : isText ? theme.tokens.fontSize.md : height;
65
+ const resolvedRadius = radius ?? (isCircle ? theme.tokens.radius.full : isText ? theme.tokens.radius.xs : theme.tokens.radius.sm);
66
+ const barStyle = barWidth => [styles.block, {
67
+ width: barWidth,
68
+ height: resolvedHeight,
69
+ borderRadius: resolvedRadius,
70
+ opacity
71
+ }];
72
+ const a11y = {
73
+ accessibilityElementsHidden: true,
74
+ importantForAccessibility: 'no-hide-descendants'
75
+ };
76
+ if (isText && lines > 1) {
77
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
78
+ style: [styles.lines, style],
79
+ testID: testID,
80
+ ...a11y,
81
+ children: Array.from({
82
+ length: lines
83
+ }, (_, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
84
+ testID: testID && `${testID}-${i}`,
85
+ style: barStyle(i === lines - 1 ? lastLineWidth : width)
86
+ }, i))
87
+ });
88
+ }
89
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
90
+ style: [barStyle(width), style],
91
+ testID: testID,
92
+ ...a11y
93
+ });
94
+ });
95
+ Skeleton.displayName = 'Skeleton';
96
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStyles","createStyles","theme","block","backgroundColor","colors","skeleton","lines","gap","tokens","spacing","sm","Skeleton","exports","memo","width","height","variant","radius","lastLineWidth","animated","style","testID","useTheme","styles","pulse","useRef","Animated","Value","current","useEffect","loop","sequence","timing","toValue","duration","useNativeDriver","easing","Easing","inOut","quad","start","stop","isCircle","isText","opacity","interpolate","inputRange","outputRange","resolvedHeight","fontSize","md","resolvedRadius","full","xs","barStyle","barWidth","borderRadius","a11y","accessibilityElementsHidden","importantForAccessibility","jsx","View","children","Array","from","length","_","displayName"],"sourceRoot":"../../../src","sources":["atoms/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Transition = void 0;
7
+ exports.useReduceMotion = useReduceMotion;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactNative = require("react-native");
10
+ var _UIProvider = require("../theme/UIProvider");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const SCALE_FROM = {
14
+ scale: 0.92,
15
+ pop: 0.8
16
+ };
17
+
18
+ /**
19
+ * Sigue el ajuste de "reducir movimiento" del sistema: con él activo las
20
+ * animaciones saltan al estado final en vez de desactivarse, así que los
21
+ * callbacks y el desmontaje siguen ocurriendo igual.
22
+ */
23
+ function useReduceMotion() {
24
+ const [reduceMotion, setReduceMotion] = (0, _react.useState)(false);
25
+ (0, _react.useEffect)(() => {
26
+ let alive = true;
27
+ // Sólo se actualiza el estado si el ajuste está activo: el valor inicial ya
28
+ // es `false` y un setState de false a false costaría un render por montaje.
29
+ _reactNative.AccessibilityInfo.isReduceMotionEnabled().then(enabled => {
30
+ if (alive && enabled) setReduceMotion(true);
31
+ });
32
+ const sub = _reactNative.AccessibilityInfo.addEventListener('reduceMotionChanged', setReduceMotion);
33
+ return () => {
34
+ alive = false;
35
+ sub.remove();
36
+ };
37
+ }, []);
38
+ return reduceMotion;
39
+ }
40
+
41
+ /**
42
+ * Transition
43
+ * Envuelve cualquier árbol y lo anima al entrar y al salir. Todos los presets
44
+ * se reducen a `opacity` y `transform` sobre un único Animated.Value, que es
45
+ * lo que `useNativeDriver` sabe mandar al hilo nativo: la animación corre ahí
46
+ * y el hilo de JS no participa de ningún frame — por eso no hay presets de
47
+ * alto, ancho o color, que obligarían a volver a JS en cada frame.
48
+ *
49
+ * El nodo se mantiene montado hasta que termina la animación de salida, y el
50
+ * comportamiento es idéntico en iOS y Android: no hay ninguna rama por
51
+ * plataforma.
52
+ */
53
+ const Transition = exports.Transition = /*#__PURE__*/(0, _react.memo)(({
54
+ children,
55
+ visible = true,
56
+ preset = 'fade',
57
+ duration,
58
+ delay = 0,
59
+ distance = 24,
60
+ spring,
61
+ appear = true,
62
+ keepMounted = false,
63
+ value,
64
+ onEntered,
65
+ onExited,
66
+ style,
67
+ testID
68
+ }) => {
69
+ const theme = (0, _UIProvider.useTheme)();
70
+ const reduceMotion = useReduceMotion();
71
+ const internal = (0, _react.useRef)(new _reactNative.Animated.Value(visible && !appear ? 1 : 0)).current;
72
+ const progress = value ?? internal;
73
+ const driven = value === undefined;
74
+ const [mounted, setMounted] = (0, _react.useState)(visible || keepMounted);
75
+
76
+ // Los callbacks viven en un ref: pasados inline cambian de identidad en
77
+ // cada render y, como dependencias del efecto, reiniciarían la animación.
78
+ const callbacks = (0, _react.useRef)({
79
+ onEntered,
80
+ onExited
81
+ });
82
+ (0, _react.useEffect)(() => {
83
+ callbacks.current = {
84
+ onEntered,
85
+ onExited
86
+ };
87
+ });
88
+ const presetKey = Array.isArray(preset) ? preset.join(' ') : preset;
89
+ const presets = (0, _react.useMemo)(() => presetKey.split(' '), [presetKey]);
90
+ (0, _react.useEffect)(() => {
91
+ if (visible) setMounted(true);
92
+ }, [visible]);
93
+ (0, _react.useEffect)(() => {
94
+ if (!driven) return;
95
+ const toValue = visible ? 1 : 0;
96
+ const useSpring = spring ?? presets.includes('pop');
97
+ const animation = reduceMotion ? _reactNative.Animated.timing(progress, {
98
+ toValue,
99
+ duration: 0,
100
+ delay,
101
+ useNativeDriver: true
102
+ }) : useSpring ? _reactNative.Animated.spring(progress, {
103
+ toValue,
104
+ delay,
105
+ friction: 9,
106
+ tension: 90,
107
+ useNativeDriver: true
108
+ }) : _reactNative.Animated.timing(progress, {
109
+ toValue,
110
+ delay,
111
+ duration: duration ?? theme.tokens.duration.base,
112
+ easing: visible ? _reactNative.Easing.out(_reactNative.Easing.cubic) : _reactNative.Easing.in(_reactNative.Easing.cubic),
113
+ useNativeDriver: true
114
+ });
115
+ animation.start(({
116
+ finished
117
+ }) => {
118
+ if (!finished) return;
119
+ if (visible) {
120
+ callbacks.current.onEntered?.();
121
+ return;
122
+ }
123
+ callbacks.current.onExited?.();
124
+ if (!keepMounted) setMounted(false);
125
+ });
126
+ return () => animation.stop();
127
+ }, [visible, driven, reduceMotion, spring, delay, duration, keepMounted, presets, progress, theme]);
128
+ const animatedStyle = (0, _react.useMemo)(() => {
129
+ const transform = [];
130
+ let opacity;
131
+ for (const item of presets) {
132
+ if (item === 'fade') {
133
+ opacity = progress;
134
+ continue;
135
+ }
136
+ if (item === 'scale' || item === 'pop') {
137
+ transform.push({
138
+ scale: progress.interpolate({
139
+ inputRange: [0, 1],
140
+ outputRange: [SCALE_FROM[item], 1]
141
+ })
142
+ });
143
+ continue;
144
+ }
145
+ const vertical = item === 'slide-up' || item === 'slide-down';
146
+ const from = item === 'slide-up' || item === 'slide-left' ? distance : -distance;
147
+ const offset = progress.interpolate({
148
+ inputRange: [0, 1],
149
+ outputRange: [from, 0]
150
+ });
151
+ transform.push(vertical ? {
152
+ translateY: offset
153
+ } : {
154
+ translateX: offset
155
+ });
156
+ }
157
+ return {
158
+ opacity,
159
+ transform
160
+ };
161
+ }, [presets, progress, distance]);
162
+ if (!mounted) return null;
163
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
164
+ testID: testID,
165
+ pointerEvents: visible ? undefined : 'none',
166
+ style: [style, animatedStyle],
167
+ children: children
168
+ });
169
+ });
170
+ Transition.displayName = 'Transition';
171
+ //# sourceMappingURL=Transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_UIProvider","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SCALE_FROM","scale","pop","useReduceMotion","reduceMotion","setReduceMotion","useState","useEffect","alive","AccessibilityInfo","isReduceMotionEnabled","then","enabled","sub","addEventListener","remove","Transition","exports","memo","children","visible","preset","duration","delay","distance","spring","appear","keepMounted","value","onEntered","onExited","style","testID","theme","useTheme","internal","useRef","Animated","Value","current","progress","driven","undefined","mounted","setMounted","callbacks","presetKey","Array","isArray","join","presets","useMemo","split","toValue","useSpring","includes","animation","timing","useNativeDriver","friction","tension","tokens","base","easing","Easing","out","cubic","in","start","finished","stop","animatedStyle","transform","opacity","item","push","interpolate","inputRange","outputRange","vertical","from","offset","translateY","translateX","jsx","View","pointerEvents","displayName"],"sourceRoot":"../../../src","sources":["atoms/Transition.tsx"],"mappings":"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","ignoreList":[]}
@@ -93,6 +93,12 @@ Object.defineProperty(exports, "PressableScale", {
93
93
  return _PressableScale.PressableScale;
94
94
  }
95
95
  });
96
+ Object.defineProperty(exports, "Skeleton", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _Skeleton.Skeleton;
100
+ }
101
+ });
96
102
  Object.defineProperty(exports, "Spinner", {
97
103
  enumerable: true,
98
104
  get: function () {
@@ -111,12 +117,24 @@ Object.defineProperty(exports, "Title", {
111
117
  return _Text.Title;
112
118
  }
113
119
  });
120
+ Object.defineProperty(exports, "Transition", {
121
+ enumerable: true,
122
+ get: function () {
123
+ return _Transition.Transition;
124
+ }
125
+ });
114
126
  Object.defineProperty(exports, "prefetchImage", {
115
127
  enumerable: true,
116
128
  get: function () {
117
129
  return _Image.prefetchImage;
118
130
  }
119
131
  });
132
+ Object.defineProperty(exports, "useReduceMotion", {
133
+ enumerable: true,
134
+ get: function () {
135
+ return _Transition.useReduceMotion;
136
+ }
137
+ });
120
138
  var _Text = require("./Text");
121
139
  var _Button = require("./Button");
122
140
  var _IconButton = require("./IconButton");
@@ -128,6 +146,8 @@ var _Divider = require("./Divider");
128
146
  var _Avatar = require("./Avatar");
129
147
  var _Image = require("./Image");
130
148
  var _Spinner = require("./Spinner");
149
+ var _Skeleton = require("./Skeleton");
150
+ var _Transition = require("./Transition");
131
151
  var _EmptyState = require("./EmptyState");
132
152
  var _KeyValueRow = require("./KeyValueRow");
133
153
  var _Fab = require("./Fab");
@@ -1 +1 @@
1
- {"version":3,"names":["_Text","require","_Button","_IconButton","_Input","_Checkbox","_Badge","_Card","_Divider","_Avatar","_Image","_Spinner","_EmptyState","_KeyValueRow","_Fab","_PressableScale"],"sourceRoot":"../../../src","sources":["atoms/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,SAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,KAAA,GAAAN,OAAA;AAEA,IAAAO,QAAA,GAAAP,OAAA;AAEA,IAAAQ,OAAA,GAAAR,OAAA;AAEA,IAAAS,MAAA,GAAAT,OAAA;AAEA,IAAAU,QAAA,GAAAV,OAAA;AAEA,IAAAW,WAAA,GAAAX,OAAA;AAEA,IAAAY,YAAA,GAAAZ,OAAA;AAEA,IAAAa,IAAA,GAAAb,OAAA;AAEA,IAAAc,eAAA,GAAAd,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_Text","require","_Button","_IconButton","_Input","_Checkbox","_Badge","_Card","_Divider","_Avatar","_Image","_Spinner","_Skeleton","_Transition","_EmptyState","_KeyValueRow","_Fab","_PressableScale"],"sourceRoot":"../../../src","sources":["atoms/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,SAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,KAAA,GAAAN,OAAA;AAEA,IAAAO,QAAA,GAAAP,OAAA;AAEA,IAAAQ,OAAA,GAAAR,OAAA;AAEA,IAAAS,MAAA,GAAAT,OAAA;AAEA,IAAAU,QAAA,GAAAV,OAAA;AAEA,IAAAW,SAAA,GAAAX,OAAA;AAEA,IAAAY,WAAA,GAAAZ,OAAA;AAEA,IAAAa,WAAA,GAAAb,OAAA;AAEA,IAAAc,YAAA,GAAAd,OAAA;AAEA,IAAAe,IAAA,GAAAf,OAAA;AAEA,IAAAgB,eAAA,GAAAhB,OAAA","ignoreList":[]}
@@ -9,10 +9,13 @@ var _reactNative = require("react-native");
9
9
  var _createStyles = require("../theme/createStyles");
10
10
  var _UIProvider = require("../theme/UIProvider");
11
11
  var _Icon = require("../icons/Icon");
12
+ var _PressableScale = require("../atoms/PressableScale");
12
13
  var _jsxRuntime = require("react/jsx-runtime");
13
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
15
  const useStyles = (0, _createStyles.createStyles)(theme => ({
15
16
  card: {
17
+ // Las tarjetas se reparten la fila que las contenga, sean dos o cinco.
18
+ flex: 1,
16
19
  alignItems: 'center',
17
20
  justifyContent: 'center',
18
21
  backgroundColor: theme.colors.surface,
@@ -22,15 +25,13 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
22
25
  ...theme.tokens.shadow.sm
23
26
  },
24
27
  cardHorizontal: {
25
- flex: 1,
26
28
  flexDirection: 'row',
27
29
  padding: theme.tokens.spacing.md - 2,
28
30
  gap: theme.tokens.spacing.sm
29
31
  },
30
32
  cardVertical: {
31
- width: '31%',
32
- padding: theme.tokens.spacing.sm,
33
- gap: 5,
33
+ padding: theme.tokens.spacing.md - 2,
34
+ gap: 6,
34
35
  minHeight: 100
35
36
  },
36
37
  cardSelected: {
@@ -40,6 +41,15 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
40
41
  elevation: 0,
41
42
  shadowOpacity: 0
42
43
  },
44
+ cardDisabled: {
45
+ opacity: 0.5
46
+ },
47
+ text: {
48
+ flexShrink: 1
49
+ },
50
+ textVertical: {
51
+ alignItems: 'center'
52
+ },
43
53
  label: {
44
54
  color: theme.colors.textLight,
45
55
  fontWeight: theme.tokens.fontWeight.medium
@@ -50,47 +60,70 @@ const useStyles = (0, _createStyles.createStyles)(theme => ({
50
60
  },
51
61
  labelSelected: {
52
62
  color: theme.colors.primaryText
63
+ },
64
+ description: {
65
+ fontSize: theme.tokens.fontSize.xs,
66
+ color: theme.colors.textLight,
67
+ marginTop: 2
68
+ },
69
+ descriptionVertical: {
70
+ textAlign: 'center'
53
71
  }
54
72
  }));
55
73
 
56
74
  /**
57
75
  * OptionCard
58
- * Card con ícono+label que resalta con borde/fondo primary cuando
59
- * `isSelected`. Para elegir entre opciones excluyentes (forma de pago, tipo
60
- * de documento, etc).
76
+ * Opción excluyente con ícono y label que resalta cuando `isSelected`. Es un
77
+ * radio con cara de tarjeta, así que se anuncia como tal: envolver el grupo en
78
+ * una View con `accessibilityRole="radiogroup"` para que el lector de pantalla
79
+ * lea "1 de 3".
61
80
  */
62
81
  const OptionCard = exports.OptionCard = /*#__PURE__*/(0, _react.memo)(({
63
82
  label,
83
+ description,
64
84
  iconName,
65
85
  isSelected,
66
86
  onPress,
87
+ disabled = false,
67
88
  layout = 'horizontal',
68
- style
89
+ style,
90
+ testID
69
91
  }) => {
70
92
  const colors = (0, _UIProvider.useColors)();
71
93
  const styles = useStyles();
72
94
  const allowFontScaling = (0, _UIProvider.useAllowFontScaling)();
73
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity
74
- // activeOpacity=1: esta tarjeta tiene elevation (sombra Android); animar su
75
- // propia opacity en el press dispara un bug de Android que redibuja la
76
- // sombra como un borde oscuro pegado al borde del componente.
77
- , {
78
- activeOpacity: 1,
79
- style: [styles.card, layout === 'vertical' ? styles.cardVertical : styles.cardHorizontal, isSelected && styles.cardSelected, style],
95
+ const isVertical = layout === 'vertical';
96
+
97
+ // Feedback por transform y no por opacity: con elevation, animar la opacity
98
+ // dispara un bug de Android que redibuja la sombra como un borde oscuro.
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PressableScale.PressableScale, {
100
+ style: [styles.card, isVertical ? styles.cardVertical : styles.cardHorizontal, isSelected && styles.cardSelected, disabled && styles.cardDisabled, style],
80
101
  onPress: onPress,
81
- accessibilityRole: "button",
102
+ disabled: disabled,
103
+ accessibilityRole: "radio",
82
104
  accessibilityState: {
83
- selected: isSelected
105
+ selected: isSelected,
106
+ checked: isSelected,
107
+ disabled
84
108
  },
85
109
  accessibilityLabel: label,
86
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
110
+ accessibilityHint: description,
111
+ testID: testID,
112
+ children: [!!iconName && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
87
113
  name: iconName,
88
114
  size: 24,
89
115
  color: isSelected ? colors.primary : colors.textLight
90
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
91
- allowFontScaling: allowFontScaling,
92
- style: [styles.label, layout === 'vertical' && styles.labelVertical, isSelected && styles.labelSelected],
93
- children: label
116
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
117
+ style: [styles.text, isVertical && styles.textVertical],
118
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
119
+ allowFontScaling: allowFontScaling,
120
+ style: [styles.label, isVertical && styles.labelVertical, isSelected && styles.labelSelected],
121
+ children: label
122
+ }), !!description && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
123
+ allowFontScaling: allowFontScaling,
124
+ style: [styles.description, isVertical && styles.descriptionVertical],
125
+ children: description
126
+ })]
94
127
  })]
95
128
  });
96
129
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_Icon","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStyles","createStyles","theme","card","alignItems","justifyContent","backgroundColor","colors","surface","borderRadius","tokens","radius","md","borderWidth","borderColor","border","shadow","sm","cardHorizontal","flex","flexDirection","padding","spacing","gap","cardVertical","width","minHeight","cardSelected","primary","primarySoft","elevation","shadowOpacity","label","color","textLight","fontWeight","medium","labelVertical","fontSize","xs","textAlign","labelSelected","primaryText","OptionCard","exports","memo","iconName","isSelected","onPress","layout","style","useColors","styles","allowFontScaling","useAllowFontScaling","jsxs","TouchableOpacity","activeOpacity","accessibilityRole","accessibilityState","selected","accessibilityLabel","children","jsx","Icon","name","size","Text","displayName"],"sourceRoot":"../../../src","sources":["molecules/OptionCard.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_createStyles","_UIProvider","_Icon","_PressableScale","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStyles","createStyles","theme","card","flex","alignItems","justifyContent","backgroundColor","colors","surface","borderRadius","tokens","radius","md","borderWidth","borderColor","border","shadow","sm","cardHorizontal","flexDirection","padding","spacing","gap","cardVertical","minHeight","cardSelected","primary","primarySoft","elevation","shadowOpacity","cardDisabled","opacity","text","flexShrink","textVertical","label","color","textLight","fontWeight","medium","labelVertical","fontSize","xs","textAlign","labelSelected","primaryText","description","marginTop","descriptionVertical","OptionCard","exports","memo","iconName","isSelected","onPress","disabled","layout","style","testID","useColors","styles","allowFontScaling","useAllowFontScaling","isVertical","jsxs","PressableScale","accessibilityRole","accessibilityState","selected","checked","accessibilityLabel","accessibilityHint","children","jsx","Icon","name","size","View","Text","displayName"],"sourceRoot":"../../../src","sources":["molecules/OptionCard.tsx"],"mappings":"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","ignoreList":[]}