orn-ui 0.2.7 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +25 -3
- package/README.md +9 -8
- package/lib/commonjs/atoms/Gradient.js +111 -0
- package/lib/commonjs/atoms/Gradient.js.map +1 -0
- package/lib/commonjs/atoms/ShinyText.js +188 -0
- package/lib/commonjs/atoms/ShinyText.js.map +1 -0
- package/lib/commonjs/atoms/index.js +14 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/organisms/Chart.js +947 -0
- package/lib/commonjs/organisms/Chart.js.map +1 -0
- package/lib/commonjs/organisms/OptionWheel.js +408 -0
- package/lib/commonjs/organisms/OptionWheel.js.map +1 -0
- package/lib/commonjs/organisms/Slides.js +406 -0
- package/lib/commonjs/organisms/Slides.js.map +1 -0
- package/lib/commonjs/organisms/Timeline.js +420 -0
- package/lib/commonjs/organisms/Timeline.js.map +1 -0
- package/lib/commonjs/organisms/chart/frame.js +373 -0
- package/lib/commonjs/organisms/chart/frame.js.map +1 -0
- package/lib/commonjs/organisms/chart/marks.js +316 -0
- package/lib/commonjs/organisms/chart/marks.js.map +1 -0
- package/lib/commonjs/organisms/chart/math.js +468 -0
- package/lib/commonjs/organisms/chart/math.js.map +1 -0
- package/lib/commonjs/organisms/chart/palette.js +120 -0
- package/lib/commonjs/organisms/chart/palette.js.map +1 -0
- package/lib/commonjs/organisms/index.js +28 -0
- package/lib/commonjs/organisms/index.js.map +1 -1
- package/lib/commonjs/organisms/useSlides.js +186 -0
- package/lib/commonjs/organisms/useSlides.js.map +1 -0
- package/lib/module/atoms/Gradient.js +106 -0
- package/lib/module/atoms/Gradient.js.map +1 -0
- package/lib/module/atoms/ShinyText.js +183 -0
- package/lib/module/atoms/ShinyText.js.map +1 -0
- package/lib/module/atoms/index.js +2 -0
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/organisms/Chart.js +942 -0
- package/lib/module/organisms/Chart.js.map +1 -0
- package/lib/module/organisms/OptionWheel.js +403 -0
- package/lib/module/organisms/OptionWheel.js.map +1 -0
- package/lib/module/organisms/Slides.js +401 -0
- package/lib/module/organisms/Slides.js.map +1 -0
- package/lib/module/organisms/Timeline.js +415 -0
- package/lib/module/organisms/Timeline.js.map +1 -0
- package/lib/module/organisms/chart/frame.js +367 -0
- package/lib/module/organisms/chart/frame.js.map +1 -0
- package/lib/module/organisms/chart/marks.js +310 -0
- package/lib/module/organisms/chart/marks.js.map +1 -0
- package/lib/module/organisms/chart/math.js +445 -0
- package/lib/module/organisms/chart/math.js.map +1 -0
- package/lib/module/organisms/chart/palette.js +114 -0
- package/lib/module/organisms/chart/palette.js.map +1 -0
- package/lib/module/organisms/index.js +4 -0
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/organisms/useSlides.js +182 -0
- package/lib/module/organisms/useSlides.js.map +1 -0
- package/lib/typescript/atoms/Gradient.d.ts +37 -0
- package/lib/typescript/atoms/Gradient.d.ts.map +1 -0
- package/lib/typescript/atoms/ShinyText.d.ts +48 -0
- package/lib/typescript/atoms/ShinyText.d.ts.map +1 -0
- package/lib/typescript/atoms/index.d.ts +4 -0
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/organisms/Chart.d.ts +208 -0
- package/lib/typescript/organisms/Chart.d.ts.map +1 -0
- package/lib/typescript/organisms/OptionWheel.d.ts +78 -0
- package/lib/typescript/organisms/OptionWheel.d.ts.map +1 -0
- package/lib/typescript/organisms/Slides.d.ts +69 -0
- package/lib/typescript/organisms/Slides.d.ts.map +1 -0
- package/lib/typescript/organisms/Timeline.d.ts +61 -0
- package/lib/typescript/organisms/Timeline.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/frame.d.ts +85 -0
- package/lib/typescript/organisms/chart/frame.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/marks.d.ts +88 -0
- package/lib/typescript/organisms/chart/marks.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/math.d.ts +161 -0
- package/lib/typescript/organisms/chart/math.d.ts.map +1 -0
- package/lib/typescript/organisms/chart/palette.d.ts +6 -0
- package/lib/typescript/organisms/chart/palette.d.ts.map +1 -0
- package/lib/typescript/organisms/index.d.ts +8 -0
- package/lib/typescript/organisms/index.d.ts.map +1 -1
- package/lib/typescript/organisms/useSlides.d.ts +52 -0
- package/lib/typescript/organisms/useSlides.d.ts.map +1 -0
- package/llms.txt +6 -5
- package/package.json +33 -2
- package/registry/chart.json +35 -0
- package/registry/gradient.json +18 -0
- package/registry/index.json +79 -0
- package/registry/manifest.json +42 -0
- package/registry/option-wheel.json +19 -0
- package/registry/shiny-text.json +19 -0
- package/registry/slides.json +24 -0
- package/registry/timeline.json +20 -0
- package/src/atoms/Gradient.tsx +99 -0
- package/src/atoms/ShinyText.tsx +226 -0
- package/src/atoms/index.ts +4 -0
- package/src/organisms/Chart.tsx +1223 -0
- package/src/organisms/OptionWheel.tsx +476 -0
- package/src/organisms/Slides.tsx +413 -0
- package/src/organisms/Timeline.tsx +467 -0
- package/src/organisms/chart/frame.tsx +349 -0
- package/src/organisms/chart/marks.tsx +295 -0
- package/src/organisms/chart/math.ts +475 -0
- package/src/organisms/chart/palette.ts +112 -0
- package/src/organisms/index.ts +22 -0
- package/src/organisms/useSlides.ts +220 -0
|
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "BottomSheet", {
|
|
|
21
21
|
return _BottomSheet.BottomSheet;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "Chart", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _Chart.Chart;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
Object.defineProperty(exports, "DEFAULT_MONTH_NAMES", {
|
|
25
31
|
enumerable: true,
|
|
26
32
|
get: function () {
|
|
@@ -63,6 +69,12 @@ Object.defineProperty(exports, "NavigationBar", {
|
|
|
63
69
|
return _NavigationBar.NavigationBar;
|
|
64
70
|
}
|
|
65
71
|
});
|
|
72
|
+
Object.defineProperty(exports, "OptionWheel", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _OptionWheel.OptionWheel;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
66
78
|
Object.defineProperty(exports, "ReorderableList", {
|
|
67
79
|
enumerable: true,
|
|
68
80
|
get: function () {
|
|
@@ -87,12 +99,24 @@ Object.defineProperty(exports, "Select", {
|
|
|
87
99
|
return _Select.Select;
|
|
88
100
|
}
|
|
89
101
|
});
|
|
102
|
+
Object.defineProperty(exports, "Slides", {
|
|
103
|
+
enumerable: true,
|
|
104
|
+
get: function () {
|
|
105
|
+
return _Slides.Slides;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
90
108
|
Object.defineProperty(exports, "ThemeToggle", {
|
|
91
109
|
enumerable: true,
|
|
92
110
|
get: function () {
|
|
93
111
|
return _ThemeToggle.ThemeToggle;
|
|
94
112
|
}
|
|
95
113
|
});
|
|
114
|
+
Object.defineProperty(exports, "Timeline", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get: function () {
|
|
117
|
+
return _Timeline.Timeline;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
96
120
|
Object.defineProperty(exports, "Toast", {
|
|
97
121
|
enumerable: true,
|
|
98
122
|
get: function () {
|
|
@@ -165,8 +189,10 @@ Object.defineProperty(exports, "useToast", {
|
|
|
165
189
|
return _ToastProvider.useToast;
|
|
166
190
|
}
|
|
167
191
|
});
|
|
192
|
+
var _Timeline = require("./Timeline");
|
|
168
193
|
var _Modal = require("./Modal");
|
|
169
194
|
var _BottomSheet = require("./BottomSheet");
|
|
195
|
+
var _OptionWheel = require("./OptionWheel");
|
|
170
196
|
var _Select = require("./Select");
|
|
171
197
|
var _Alert = require("./Alert");
|
|
172
198
|
var _AlertProvider = require("./AlertProvider");
|
|
@@ -181,4 +207,6 @@ var _Wizard = require("./Wizard");
|
|
|
181
207
|
var _ThemeToggle = require("./ThemeToggle");
|
|
182
208
|
var _NavigationBar = require("./NavigationBar");
|
|
183
209
|
var _ReorderableList = require("./ReorderableList");
|
|
210
|
+
var _Slides = require("./Slides");
|
|
211
|
+
var _Chart = require("./Chart");
|
|
184
212
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_Timeline","require","_Modal","_BottomSheet","_OptionWheel","_Select","_Alert","_AlertProvider","_Screen","_List","_SearchList","_Toast","_ToastProvider","_DatePicker","_DateField","_Wizard","_ThemeToggle","_NavigationBar","_ReorderableList","_Slides","_Chart"],"sourceRoot":"../../../src","sources":["organisms/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAEA,IAAAM,cAAA,GAAAN,OAAA;AAEA,IAAAO,OAAA,GAAAP,OAAA;AAEA,IAAAQ,KAAA,GAAAR,OAAA;AAEA,IAAAS,WAAA,GAAAT,OAAA;AAEA,IAAAU,MAAA,GAAAV,OAAA;AAEA,IAAAW,cAAA,GAAAX,OAAA;AAEA,IAAAY,WAAA,GAAAZ,OAAA;AAEA,IAAAa,UAAA,GAAAb,OAAA;AAEA,IAAAc,OAAA,GAAAd,OAAA;AAEA,IAAAe,YAAA,GAAAf,OAAA;AAEA,IAAAgB,cAAA,GAAAhB,OAAA;AAEA,IAAAiB,gBAAA,GAAAjB,OAAA;AAEA,IAAAkB,OAAA,GAAAlB,OAAA;AAQA,IAAAmB,MAAA,GAAAnB,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.clampIndex = clampIndex;
|
|
7
|
+
exports.useSlides = useSlides;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _Transition = require("../atoms/Transition");
|
|
10
|
+
/** Una página del scroll. Los clones del modo infinito repiten el `real` de un vecino. */
|
|
11
|
+
|
|
12
|
+
function clampIndex(value, total) {
|
|
13
|
+
if (total === 0) return 0;
|
|
14
|
+
if (value < 0) return 0;
|
|
15
|
+
if (value > total - 1) return total - 1;
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* useSlides
|
|
21
|
+
* Todo lo que en `Slides` no se ve: qué página está encuadrada, cuándo mover el
|
|
22
|
+
* scroll, cómo se mapean los clones del modo infinito a índices reales, y el
|
|
23
|
+
* reloj del avance automático.
|
|
24
|
+
*
|
|
25
|
+
* Trabaja sólo con índices, nunca con los ítems: así no necesita el genérico
|
|
26
|
+
* `T` del componente, y el UI resuelve `pages[i].real` contra su propio `data`.
|
|
27
|
+
*/
|
|
28
|
+
function useSlides({
|
|
29
|
+
total,
|
|
30
|
+
orientation,
|
|
31
|
+
loop,
|
|
32
|
+
autoPlay,
|
|
33
|
+
interval,
|
|
34
|
+
index,
|
|
35
|
+
defaultIndex,
|
|
36
|
+
onIndexChange
|
|
37
|
+
}) {
|
|
38
|
+
const motionReduced = (0, _Transition.useReduceMotion)();
|
|
39
|
+
const isHorizontal = orientation === 'horizontal';
|
|
40
|
+
// Un solo elemento no tiene a dónde ciclar: quedaría deslizable entre tres
|
|
41
|
+
// copias de lo mismo.
|
|
42
|
+
const isLoop = loop && total > 1;
|
|
43
|
+
const [uncontrolled, setUncontrolled] = (0, _react.useState)(() => clampIndex(defaultIndex, total));
|
|
44
|
+
const active = clampIndex(index ?? uncontrolled, total);
|
|
45
|
+
const activeRef = (0, _react.useRef)(active);
|
|
46
|
+
activeRef.current = active;
|
|
47
|
+
const [autoPlayPaused, setAutoPlayPaused] = (0, _react.useState)(false);
|
|
48
|
+
const [size, setSize] = (0, _react.useState)({
|
|
49
|
+
width: 0,
|
|
50
|
+
height: 0
|
|
51
|
+
});
|
|
52
|
+
const pageSize = isHorizontal ? size.width : size.height;
|
|
53
|
+
const scrollRef = (0, _react.useRef)(null);
|
|
54
|
+
/** Página realmente visible (índice dentro de `pages`, clones incluidos). */
|
|
55
|
+
const offsetPageRef = (0, _react.useRef)(isLoop ? 1 : 0);
|
|
56
|
+
const didInitRef = (0, _react.useRef)(false);
|
|
57
|
+
const lastPageSizeRef = (0, _react.useRef)(0);
|
|
58
|
+
const draggingRef = (0, _react.useRef)(false);
|
|
59
|
+
const pages = (0, _react.useMemo)(() => {
|
|
60
|
+
const real = Array.from({
|
|
61
|
+
length: total
|
|
62
|
+
}, (_, i) => ({
|
|
63
|
+
real: i,
|
|
64
|
+
clone: null
|
|
65
|
+
}));
|
|
66
|
+
if (!isLoop) return real;
|
|
67
|
+
return [{
|
|
68
|
+
real: total - 1,
|
|
69
|
+
clone: 'head'
|
|
70
|
+
}, ...real, {
|
|
71
|
+
real: 0,
|
|
72
|
+
clone: 'tail'
|
|
73
|
+
}];
|
|
74
|
+
}, [isLoop, total]);
|
|
75
|
+
const scrollToPage = (0, _react.useCallback)((page, animated) => {
|
|
76
|
+
const offset = page * pageSize;
|
|
77
|
+
scrollRef.current?.scrollTo({
|
|
78
|
+
x: isHorizontal ? offset : 0,
|
|
79
|
+
y: isHorizontal ? 0 : offset,
|
|
80
|
+
animated
|
|
81
|
+
});
|
|
82
|
+
}, [isHorizontal, pageSize]);
|
|
83
|
+
const goTo = (0, _react.useCallback)(next => {
|
|
84
|
+
if (next === activeRef.current) return;
|
|
85
|
+
activeRef.current = next;
|
|
86
|
+
if (index == null) setUncontrolled(next);
|
|
87
|
+
onIndexChange?.(next);
|
|
88
|
+
}, [index, onIndexChange]);
|
|
89
|
+
|
|
90
|
+
// Sólo actúa cuando el índice y la página visible discrepan: un cambio que
|
|
91
|
+
// vino del propio gesto no dispara un segundo scroll encima del que frenó.
|
|
92
|
+
(0, _react.useEffect)(() => {
|
|
93
|
+
if (pageSize === 0 || total === 0) return;
|
|
94
|
+
const target = isLoop ? active + 1 : active;
|
|
95
|
+
const resized = lastPageSizeRef.current !== pageSize;
|
|
96
|
+
if (offsetPageRef.current === target && didInitRef.current && !resized) return;
|
|
97
|
+
// Ni el primer posicionamiento ni el reacomodo por rotación son un cambio
|
|
98
|
+
// de slide: animarlos sería un deslizamiento que nadie pidió.
|
|
99
|
+
const animated = didInitRef.current && !resized;
|
|
100
|
+
didInitRef.current = true;
|
|
101
|
+
lastPageSizeRef.current = pageSize;
|
|
102
|
+
offsetPageRef.current = target;
|
|
103
|
+
scrollToPage(target, animated);
|
|
104
|
+
}, [active, isLoop, pageSize, scrollToPage, total]);
|
|
105
|
+
const onLayout = (0, _react.useCallback)(event => {
|
|
106
|
+
const {
|
|
107
|
+
width,
|
|
108
|
+
height
|
|
109
|
+
} = event.nativeEvent.layout;
|
|
110
|
+
setSize(prev => prev.width === width && prev.height === height ? prev : {
|
|
111
|
+
width,
|
|
112
|
+
height
|
|
113
|
+
});
|
|
114
|
+
}, []);
|
|
115
|
+
const onMomentumScrollEnd = (0, _react.useCallback)(event => {
|
|
116
|
+
draggingRef.current = false;
|
|
117
|
+
if (pageSize === 0) return;
|
|
118
|
+
const {
|
|
119
|
+
contentOffset
|
|
120
|
+
} = event.nativeEvent;
|
|
121
|
+
const page = Math.round((isHorizontal ? contentOffset.x : contentOffset.y) / pageSize);
|
|
122
|
+
if (isLoop) {
|
|
123
|
+
if (page === 0) {
|
|
124
|
+
offsetPageRef.current = total;
|
|
125
|
+
scrollToPage(total, false);
|
|
126
|
+
goTo(total - 1);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (page === total + 1) {
|
|
130
|
+
offsetPageRef.current = 1;
|
|
131
|
+
scrollToPage(1, false);
|
|
132
|
+
goTo(0);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
offsetPageRef.current = page;
|
|
136
|
+
goTo(page - 1);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
offsetPageRef.current = page;
|
|
140
|
+
goTo(clampIndex(page, total));
|
|
141
|
+
}, [goTo, isHorizontal, isLoop, pageSize, scrollToPage, total]);
|
|
142
|
+
const onScrollBeginDrag = (0, _react.useCallback)(() => {
|
|
143
|
+
draggingRef.current = true;
|
|
144
|
+
}, []);
|
|
145
|
+
const onScrollEndDrag = (0, _react.useCallback)(() => {
|
|
146
|
+
// Un arrastre corto puede soltarse sin inercia y no emitir
|
|
147
|
+
// momentumScrollEnd: sin esto el autoPlay quedaría pausado para siempre.
|
|
148
|
+
draggingRef.current = false;
|
|
149
|
+
}, []);
|
|
150
|
+
const toggleAutoPlay = (0, _react.useCallback)(() => setAutoPlayPaused(paused => !paused), []);
|
|
151
|
+
(0, _react.useEffect)(() => {
|
|
152
|
+
if (!autoPlay || autoPlayPaused || motionReduced || total < 2 || pageSize === 0) return;
|
|
153
|
+
const timer = setInterval(() => {
|
|
154
|
+
if (draggingRef.current) return;
|
|
155
|
+
const from = activeRef.current;
|
|
156
|
+
if (from < total - 1) {
|
|
157
|
+
goTo(from + 1);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (!isLoop) return;
|
|
161
|
+
// Última en modo infinito: avanza al clon de la primera en vez de
|
|
162
|
+
// rebobinar; el salto al original lo cierra momentumScrollEnd.
|
|
163
|
+
offsetPageRef.current = total + 1;
|
|
164
|
+
scrollToPage(total + 1, true);
|
|
165
|
+
}, interval);
|
|
166
|
+
return () => clearInterval(timer);
|
|
167
|
+
}, [autoPlay, autoPlayPaused, goTo, interval, isLoop, motionReduced, pageSize, scrollToPage, total]);
|
|
168
|
+
return {
|
|
169
|
+
active,
|
|
170
|
+
pages,
|
|
171
|
+
isHorizontal,
|
|
172
|
+
isLoop,
|
|
173
|
+
size,
|
|
174
|
+
pageSize,
|
|
175
|
+
scrollRef,
|
|
176
|
+
autoPlayPaused,
|
|
177
|
+
motionReduced,
|
|
178
|
+
goTo,
|
|
179
|
+
toggleAutoPlay,
|
|
180
|
+
onLayout,
|
|
181
|
+
onMomentumScrollEnd,
|
|
182
|
+
onScrollBeginDrag,
|
|
183
|
+
onScrollEndDrag
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=useSlides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_Transition","clampIndex","value","total","useSlides","orientation","loop","autoPlay","interval","index","defaultIndex","onIndexChange","motionReduced","useReduceMotion","isHorizontal","isLoop","uncontrolled","setUncontrolled","useState","active","activeRef","useRef","current","autoPlayPaused","setAutoPlayPaused","size","setSize","width","height","pageSize","scrollRef","offsetPageRef","didInitRef","lastPageSizeRef","draggingRef","pages","useMemo","real","Array","from","length","_","i","clone","scrollToPage","useCallback","page","animated","offset","scrollTo","x","y","goTo","next","useEffect","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":[]}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useMemo } from 'react';
|
|
4
|
+
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
const DEFAULT_STEPS = 24;
|
|
7
|
+
const styles = StyleSheet.create({
|
|
8
|
+
// Recorta el plano rotado de las diagonales y el degradado al borderRadius.
|
|
9
|
+
root: {
|
|
10
|
+
overflow: 'hidden'
|
|
11
|
+
},
|
|
12
|
+
segment: {
|
|
13
|
+
flex: 1
|
|
14
|
+
},
|
|
15
|
+
band: {
|
|
16
|
+
flex: 1
|
|
17
|
+
},
|
|
18
|
+
// Plano √2 centrado: rotado 45° cubre las esquinas sin medir el contenedor.
|
|
19
|
+
diagonalPlane: {
|
|
20
|
+
position: 'absolute',
|
|
21
|
+
top: '-21%',
|
|
22
|
+
left: '-21%',
|
|
23
|
+
width: '142%',
|
|
24
|
+
height: '142%'
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Gradient
|
|
30
|
+
* Degradado lineal sin dependencias: React Native no trae uno en el rango
|
|
31
|
+
* soportado (Expo SDK 54–57) y `experimental_backgroundImage` no está en toda
|
|
32
|
+
* esa ventana, así que se compone con bandas.
|
|
33
|
+
*
|
|
34
|
+
* Cada tramo pinta el color inicial y encima N bandas del final con opacidad
|
|
35
|
+
* de 0 a 1. El compositor mezcla alpha linealmente: el resultado es la
|
|
36
|
+
* interpolación sRGB entre paradas sin parsear el color, y por eso vale
|
|
37
|
+
* cualquier formato que acepte RN (hex, `rgba()`, nombre).
|
|
38
|
+
*/
|
|
39
|
+
export const Gradient = /*#__PURE__*/memo(({
|
|
40
|
+
colors,
|
|
41
|
+
direction = 'vertical',
|
|
42
|
+
steps = DEFAULT_STEPS,
|
|
43
|
+
children,
|
|
44
|
+
style,
|
|
45
|
+
testID
|
|
46
|
+
}) => {
|
|
47
|
+
const isRow = direction === 'horizontal';
|
|
48
|
+
const isDiagonal = direction === 'diagonal' || direction === 'diagonal-reverse';
|
|
49
|
+
// rotate positivo gira en horario (Y crece hacia abajo): -45° manda el eje
|
|
50
|
+
// del degradado hacia abajo-derecha.
|
|
51
|
+
const rotate = direction === 'diagonal' ? '-45deg' : '45deg';
|
|
52
|
+
const bandCount = Math.max(2, Math.floor(steps));
|
|
53
|
+
const painted = useMemo(() => {
|
|
54
|
+
if (colors.length === 0) return null;
|
|
55
|
+
if (colors.length === 1) {
|
|
56
|
+
return /*#__PURE__*/_jsx(View, {
|
|
57
|
+
style: [StyleSheet.absoluteFill, {
|
|
58
|
+
backgroundColor: colors[0]
|
|
59
|
+
}]
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const segments = colors.slice(0, -1).map((from, index) => {
|
|
63
|
+
const to = colors[index + 1];
|
|
64
|
+
return /*#__PURE__*/_jsx(View, {
|
|
65
|
+
style: [styles.segment, {
|
|
66
|
+
backgroundColor: from,
|
|
67
|
+
flexDirection: isRow ? 'row' : 'column'
|
|
68
|
+
}],
|
|
69
|
+
children: Array.from({
|
|
70
|
+
length: bandCount
|
|
71
|
+
}, (_, band) => /*#__PURE__*/_jsx(View, {
|
|
72
|
+
style: [styles.band, {
|
|
73
|
+
backgroundColor: to,
|
|
74
|
+
opacity: band / (bandCount - 1)
|
|
75
|
+
}]
|
|
76
|
+
}, band))
|
|
77
|
+
}, `${from}-${to}-${index}`);
|
|
78
|
+
});
|
|
79
|
+
const stack = /*#__PURE__*/_jsx(View, {
|
|
80
|
+
style: [StyleSheet.absoluteFill, {
|
|
81
|
+
flexDirection: isRow ? 'row' : 'column'
|
|
82
|
+
}],
|
|
83
|
+
children: segments
|
|
84
|
+
});
|
|
85
|
+
if (!isDiagonal) return stack;
|
|
86
|
+
return /*#__PURE__*/_jsx(View, {
|
|
87
|
+
style: [styles.diagonalPlane, {
|
|
88
|
+
transform: [{
|
|
89
|
+
rotate
|
|
90
|
+
}]
|
|
91
|
+
}],
|
|
92
|
+
children: segments
|
|
93
|
+
});
|
|
94
|
+
}, [colors, isRow, isDiagonal, rotate, bandCount]);
|
|
95
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
96
|
+
testID: testID,
|
|
97
|
+
style: [styles.root, style],
|
|
98
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
99
|
+
style: StyleSheet.absoluteFill,
|
|
100
|
+
pointerEvents: "none",
|
|
101
|
+
children: painted
|
|
102
|
+
}), children]
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
Gradient.displayName = 'Gradient';
|
|
106
|
+
//# sourceMappingURL=Gradient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","StyleSheet","View","jsx","_jsx","jsxs","_jsxs","DEFAULT_STEPS","styles","create","root","overflow","segment","flex","band","diagonalPlane","position","top","left","width","height","Gradient","colors","direction","steps","children","style","testID","isRow","isDiagonal","rotate","bandCount","Math","max","floor","painted","length","absoluteFill","backgroundColor","segments","slice","map","from","index","to","flexDirection","Array","_","opacity","stack","transform","pointerEvents","displayName"],"sourceRoot":"../../../src","sources":["atoms/Gradient.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useEffect, useMemo, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing, Text, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useAllowFontScaling, useTheme } from '../theme/UIProvider';
|
|
7
|
+
import { useReduceMotion } from './Transition';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const DEFAULT_DURATION = 2400;
|
|
10
|
+
const DEFAULT_DELAY = 600;
|
|
11
|
+
const DEFAULT_SPREAD = 0.28;
|
|
12
|
+
const useStyles = createStyles(theme => ({
|
|
13
|
+
text: {
|
|
14
|
+
fontSize: theme.tokens.fontSize.xl,
|
|
15
|
+
lineHeight: theme.tokens.lineHeight.lg,
|
|
16
|
+
fontWeight: theme.tokens.fontWeight.semibold,
|
|
17
|
+
color: theme.colors.text
|
|
18
|
+
},
|
|
19
|
+
row: {
|
|
20
|
+
flexDirection: 'row',
|
|
21
|
+
flexWrap: 'wrap'
|
|
22
|
+
},
|
|
23
|
+
// Sólo top/left: un absoluteFill estiraría la letra al ancho del grupo y la
|
|
24
|
+
// volvería a alinear. Anclada a la esquina cae exactamente sobre la de abajo.
|
|
25
|
+
overlay: {
|
|
26
|
+
position: 'absolute',
|
|
27
|
+
top: 0,
|
|
28
|
+
left: 0
|
|
29
|
+
},
|
|
30
|
+
// Una palabra y los espacios que la siguen: el salto de línea ocurre entre
|
|
31
|
+
// grupos, nunca entre las letras de una palabra.
|
|
32
|
+
group: {
|
|
33
|
+
flexDirection: 'row'
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
const ALIGN = {
|
|
37
|
+
left: 'flex-start',
|
|
38
|
+
center: 'center',
|
|
39
|
+
right: 'flex-end'
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/** Una palabra con los espacios que la siguen, y el índice de su primera letra. */
|
|
43
|
+
|
|
44
|
+
function toGroups(text) {
|
|
45
|
+
const chars = Array.from(text);
|
|
46
|
+
const groups = [];
|
|
47
|
+
let current = [];
|
|
48
|
+
let start = 0;
|
|
49
|
+
chars.forEach((char, index) => {
|
|
50
|
+
if (current.length === 0) start = index;
|
|
51
|
+
current.push(char);
|
|
52
|
+
const next = chars[index + 1];
|
|
53
|
+
// Cierra el grupo cuando termina la racha de espacios que sigue a la
|
|
54
|
+
// palabra: así el espacio viaja con ella y no abre línea por sí solo.
|
|
55
|
+
const isSpace = /\s/.test(char);
|
|
56
|
+
if (isSpace && next !== undefined && !/\s/.test(next)) {
|
|
57
|
+
groups.push({
|
|
58
|
+
start,
|
|
59
|
+
chars: current
|
|
60
|
+
});
|
|
61
|
+
current = [];
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (current.length > 0) groups.push({
|
|
65
|
+
start,
|
|
66
|
+
chars: current
|
|
67
|
+
});
|
|
68
|
+
return groups;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* ShinyText
|
|
73
|
+
* Una banda de luz recorre el texto de izquierda a derecha. Sin
|
|
74
|
+
* `background-clip: text` ni máscaras —que React Native no tiene en el rango
|
|
75
|
+
* soportado— el brillo se compone letra por letra: cada una lleva su color de
|
|
76
|
+
* reposo y encima, superpuesta, la misma letra en el color del brillo con la
|
|
77
|
+
* opacidad animada. La banda es una ventana de interpolación que se desplaza:
|
|
78
|
+
* lo que cambia por frame es sólo `opacity`, o sea que la animación entera
|
|
79
|
+
* corre en el hilo nativo y JS no participa de ningún frame.
|
|
80
|
+
*
|
|
81
|
+
* Gestalt, destino común: las letras se encienden en secuencia y con el mismo
|
|
82
|
+
* ritmo, así que se leen como una sola cosa que se mueve —una palabra
|
|
83
|
+
* iluminándose— y no como N letras parpadeando por su cuenta. Por eso el ancho
|
|
84
|
+
* de banda es relativo al texto y no una cantidad fija de píxeles: un título
|
|
85
|
+
* largo y uno corto tardan lo mismo y se perciben igual.
|
|
86
|
+
*
|
|
87
|
+
* Con "reducir movimiento" activo, o con `animated={false}`, el texto se
|
|
88
|
+
* renderiza plano en `shineColor` —legible, un solo nodo y seleccionable—
|
|
89
|
+
* porque el efecto es decorativo y nada de lo que comunica está en el brillo.
|
|
90
|
+
*/
|
|
91
|
+
export const ShinyText = /*#__PURE__*/memo(({
|
|
92
|
+
text,
|
|
93
|
+
duration = DEFAULT_DURATION,
|
|
94
|
+
delay = DEFAULT_DELAY,
|
|
95
|
+
spread = DEFAULT_SPREAD,
|
|
96
|
+
animated = true,
|
|
97
|
+
color,
|
|
98
|
+
shineColor,
|
|
99
|
+
align = 'left',
|
|
100
|
+
style,
|
|
101
|
+
testID
|
|
102
|
+
}) => {
|
|
103
|
+
const theme = useTheme();
|
|
104
|
+
const styles = useStyles();
|
|
105
|
+
const allowFontScaling = useAllowFontScaling();
|
|
106
|
+
const reduceMotion = useReduceMotion();
|
|
107
|
+
const progress = useRef(new Animated.Value(0)).current;
|
|
108
|
+
const base = color ?? theme.colors.textLight;
|
|
109
|
+
// El acento, no `text`: contra `textLight` la diferencia es sólo de
|
|
110
|
+
// luminancia y el barrido casi no se ve. El brillo cambia tono además de
|
|
111
|
+
// claridad, que es lo que hace legible el movimiento.
|
|
112
|
+
const shine = shineColor ?? theme.colors.primary;
|
|
113
|
+
const running = animated && !reduceMotion && text.length > 0;
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
if (!running) return;
|
|
116
|
+
const loop = Animated.loop(Animated.sequence([Animated.timing(progress, {
|
|
117
|
+
toValue: 1,
|
|
118
|
+
duration,
|
|
119
|
+
easing: Easing.linear,
|
|
120
|
+
useNativeDriver: true
|
|
121
|
+
}), Animated.delay(delay)]));
|
|
122
|
+
loop.start();
|
|
123
|
+
return () => loop.stop();
|
|
124
|
+
}, [running, duration, delay, progress]);
|
|
125
|
+
const groups = useMemo(() => running ? toGroups(text) : [], [running, text]);
|
|
126
|
+
if (!running) {
|
|
127
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
128
|
+
testID: testID,
|
|
129
|
+
allowFontScaling: allowFontScaling,
|
|
130
|
+
style: [styles.text, style, {
|
|
131
|
+
color: shine,
|
|
132
|
+
textAlign: align
|
|
133
|
+
}],
|
|
134
|
+
children: text
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const total = Array.from(text).length;
|
|
138
|
+
// La banda entra por la izquierda y sale por la derecha, así que el
|
|
139
|
+
// recorrido normalizado mide 1 + 2·spread. `half` es media banda en esa
|
|
140
|
+
// escala: el tramo de progreso que una letra tarda en encenderse.
|
|
141
|
+
const half = spread / (1 + 2 * spread);
|
|
142
|
+
return /*#__PURE__*/_jsx(View, {
|
|
143
|
+
testID: testID,
|
|
144
|
+
accessible: true,
|
|
145
|
+
accessibilityRole: "text",
|
|
146
|
+
accessibilityLabel: text,
|
|
147
|
+
style: [styles.row, {
|
|
148
|
+
justifyContent: ALIGN[align]
|
|
149
|
+
}],
|
|
150
|
+
children: groups.map(group => /*#__PURE__*/_jsx(View, {
|
|
151
|
+
style: styles.group,
|
|
152
|
+
children: group.chars.map((char, offset) => {
|
|
153
|
+
const index = group.start + offset;
|
|
154
|
+
const position = total === 1 ? 0.5 : index / (total - 1);
|
|
155
|
+
// Progreso en el que el centro de la banda cae sobre esta letra.
|
|
156
|
+
const peak = (position + spread) / (1 + 2 * spread);
|
|
157
|
+
const charStyle = [styles.text, style];
|
|
158
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
159
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
160
|
+
allowFontScaling: allowFontScaling,
|
|
161
|
+
style: [charStyle, {
|
|
162
|
+
color: base
|
|
163
|
+
}],
|
|
164
|
+
children: char
|
|
165
|
+
}), /*#__PURE__*/_jsx(Animated.Text, {
|
|
166
|
+
allowFontScaling: allowFontScaling,
|
|
167
|
+
style: [charStyle, styles.overlay, {
|
|
168
|
+
color: shine,
|
|
169
|
+
opacity: progress.interpolate({
|
|
170
|
+
inputRange: [peak - half, peak, peak + half],
|
|
171
|
+
outputRange: [0, 1, 0],
|
|
172
|
+
extrapolate: 'clamp'
|
|
173
|
+
})
|
|
174
|
+
}],
|
|
175
|
+
children: char
|
|
176
|
+
})]
|
|
177
|
+
}, index);
|
|
178
|
+
})
|
|
179
|
+
}, group.start))
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
ShinyText.displayName = 'ShinyText';
|
|
183
|
+
//# sourceMappingURL=ShinyText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useEffect","useMemo","useRef","Animated","Easing","Text","View","createStyles","useAllowFontScaling","useTheme","useReduceMotion","jsx","_jsx","jsxs","_jsxs","DEFAULT_DURATION","DEFAULT_DELAY","DEFAULT_SPREAD","useStyles","theme","text","fontSize","tokens","xl","lineHeight","lg","fontWeight","semibold","color","colors","row","flexDirection","flexWrap","overlay","position","top","left","group","ALIGN","center","right","toGroups","chars","Array","from","groups","current","start","forEach","char","index","length","push","next","isSpace","test","undefined","ShinyText","duration","delay","spread","animated","shineColor","align","style","testID","styles","allowFontScaling","reduceMotion","progress","Value","base","textLight","shine","primary","running","loop","sequence","timing","toValue","easing","linear","useNativeDriver","stop","textAlign","children","total","half","accessible","accessibilityRole","accessibilityLabel","justifyContent","map","offset","peak","charStyle","opacity","interpolate","inputRange","outputRange","extrapolate","displayName"],"sourceRoot":"../../../src","sources":["atoms/ShinyText.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,11 +8,13 @@ export { Checkbox } from './Checkbox';
|
|
|
8
8
|
export { Badge } from './Badge';
|
|
9
9
|
export { Card } from './Card';
|
|
10
10
|
export { Divider } from './Divider';
|
|
11
|
+
export { Gradient } from './Gradient';
|
|
11
12
|
export { Avatar } from './Avatar';
|
|
12
13
|
export { Image, prefetchImage } from './Image';
|
|
13
14
|
export { Spinner } from './Spinner';
|
|
14
15
|
export { Skeleton } from './Skeleton';
|
|
15
16
|
export { Transition, useReduceMotion } from './Transition';
|
|
17
|
+
export { ShinyText } from './ShinyText';
|
|
16
18
|
export { EmptyState } from './EmptyState';
|
|
17
19
|
export { KeyValueRow } from './KeyValueRow';
|
|
18
20
|
export { Fab } from './Fab';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Title","Subtitle","Body","Caption","Button","IconButton","Input","Checkbox","Badge","Card","Divider","Avatar","Image","prefetchImage","Spinner","Skeleton","Transition","useReduceMotion","EmptyState","KeyValueRow","Fab","PressableScale"],"sourceRoot":"../../../src","sources":["atoms/index.ts"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,QAAQ,QAAQ;AAEvD,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,OAAO,QAAQ,WAAW;AAEnC,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,KAAK,EAAEC,aAAa,QAAQ,SAAS;AAE9C,SAASC,OAAO,QAAQ,WAAW;AAEnC,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,UAAU,EAAEC,eAAe,QAAQ,cAAc;AAE1D,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,GAAG,QAAQ,OAAO;AAE3B,SAASC,cAAc,QAAQ,kBAAkB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Title","Subtitle","Body","Caption","Button","IconButton","Input","Checkbox","Badge","Card","Divider","Gradient","Avatar","Image","prefetchImage","Spinner","Skeleton","Transition","useReduceMotion","ShinyText","EmptyState","KeyValueRow","Fab","PressableScale"],"sourceRoot":"../../../src","sources":["atoms/index.ts"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,QAAQ,QAAQ;AAEvD,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,OAAO,QAAQ,WAAW;AAEnC,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,KAAK,EAAEC,aAAa,QAAQ,SAAS;AAE9C,SAASC,OAAO,QAAQ,WAAW;AAEnC,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,UAAU,EAAEC,eAAe,QAAQ,cAAc;AAE1D,SAASC,SAAS,QAAQ,aAAa;AAEvC,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,GAAG,QAAQ,OAAO;AAE3B,SAASC,cAAc,QAAQ,kBAAkB","ignoreList":[]}
|