@telefonica/mistica 16.4.0 → 16.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/css/mistica.css +1 -1
  2. package/css/vivo-new.css +11 -11
  3. package/dist/accordion.css-mistica.js +16 -13
  4. package/dist/accordion.css.d.ts +1 -0
  5. package/dist/accordion.d.ts +4 -0
  6. package/dist/accordion.js +110 -93
  7. package/dist/callout.js +27 -15
  8. package/dist/card.css-mistica.js +5 -5
  9. package/dist/card.d.ts +9 -1
  10. package/dist/card.js +611 -475
  11. package/dist/community/advanced-data-card.css-mistica.js +14 -11
  12. package/dist/community/advanced-data-card.css.d.ts +1 -0
  13. package/dist/community/advanced-data-card.d.ts +1 -1
  14. package/dist/community/advanced-data-card.js +172 -85
  15. package/dist/cover-hero.css-mistica.js +14 -11
  16. package/dist/cover-hero.css.d.ts +1 -0
  17. package/dist/cover-hero.d.ts +1 -0
  18. package/dist/cover-hero.js +101 -59
  19. package/dist/empty-state.js +24 -15
  20. package/dist/header.css-mistica.js +6 -3
  21. package/dist/header.css.d.ts +1 -0
  22. package/dist/header.d.ts +3 -2
  23. package/dist/header.js +148 -79
  24. package/dist/hero.css-mistica.js +11 -8
  25. package/dist/hero.css.d.ts +1 -0
  26. package/dist/hero.d.ts +2 -1
  27. package/dist/hero.js +102 -68
  28. package/dist/highlighted-card.js +32 -23
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.js +4 -0
  31. package/dist/maybe-dismissable.js +8 -5
  32. package/dist/meter.d.ts +23 -0
  33. package/dist/meter.js +400 -0
  34. package/dist/mosaic.d.ts +6 -2
  35. package/dist/mosaic.js +50 -48
  36. package/dist/navigation-bar.css-mistica.js +96 -37
  37. package/dist/navigation-bar.css.d.ts +27 -1
  38. package/dist/navigation-bar.d.ts +65 -30
  39. package/dist/navigation-bar.js +818 -193
  40. package/dist/package-version.js +1 -1
  41. package/dist/sheet-common.css-mistica.js +16 -10
  42. package/dist/sheet-common.css.d.ts +3 -1
  43. package/dist/sheet-common.js +78 -70
  44. package/dist/sheet-info.css-mistica.js +15 -4
  45. package/dist/sheet-info.css.d.ts +2 -0
  46. package/dist/sheet-info.d.ts +3 -0
  47. package/dist/sheet-info.js +61 -43
  48. package/dist/sheet-native.js +59 -48
  49. package/dist/sheet-types.d.ts +6 -1
  50. package/dist/sheet-web.js +6 -4
  51. package/dist/skins/blau.js +94 -94
  52. package/dist/skins/movistar.js +94 -94
  53. package/dist/skins/o2-new.js +94 -94
  54. package/dist/skins/o2.js +94 -94
  55. package/dist/skins/telefonica.js +94 -94
  56. package/dist/skins/tu.js +94 -94
  57. package/dist/skins/vivo-new.js +98 -98
  58. package/dist/skins/vivo.js +94 -94
  59. package/dist/text-tokens.d.ts +14 -0
  60. package/dist/text-tokens.js +134 -102
  61. package/dist/theme-context-provider.js +60 -50
  62. package/dist/theme.d.ts +3 -2
  63. package/dist/theme.js +20 -17
  64. package/dist/utils/headings.d.ts +2 -0
  65. package/dist/utils/headings.js +11 -0
  66. package/dist/utils/types.d.ts +1 -0
  67. package/dist-es/accordion.css-mistica.js +7 -7
  68. package/dist-es/accordion.js +140 -123
  69. package/dist-es/callout.js +55 -43
  70. package/dist-es/card.css-mistica.js +2 -2
  71. package/dist-es/card.js +721 -588
  72. package/dist-es/community/advanced-data-card.css-mistica.js +3 -3
  73. package/dist-es/community/advanced-data-card.js +217 -130
  74. package/dist-es/cover-hero.css-mistica.js +3 -3
  75. package/dist-es/cover-hero.js +132 -90
  76. package/dist-es/empty-state.js +40 -31
  77. package/dist-es/header.css-mistica.js +2 -2
  78. package/dist-es/header.js +174 -104
  79. package/dist-es/hero.css-mistica.js +2 -2
  80. package/dist-es/hero.js +150 -115
  81. package/dist-es/highlighted-card.js +36 -27
  82. package/dist-es/index.js +1839 -1838
  83. package/dist-es/maybe-dismissable.js +17 -14
  84. package/dist-es/meter.js +346 -0
  85. package/dist-es/mosaic.js +73 -71
  86. package/dist-es/navigation-bar.css-mistica.js +14 -15
  87. package/dist-es/navigation-bar.js +864 -240
  88. package/dist-es/package-version.js +1 -1
  89. package/dist-es/sheet-common.css-mistica.js +2 -2
  90. package/dist-es/sheet-common.js +124 -116
  91. package/dist-es/sheet-info.css-mistica.js +2 -2
  92. package/dist-es/sheet-info.js +74 -56
  93. package/dist-es/sheet-native.js +59 -48
  94. package/dist-es/sheet-web.js +10 -8
  95. package/dist-es/skins/blau.js +94 -94
  96. package/dist-es/skins/movistar.js +94 -94
  97. package/dist-es/skins/o2-new.js +94 -94
  98. package/dist-es/skins/o2.js +94 -94
  99. package/dist-es/skins/telefonica.js +94 -94
  100. package/dist-es/skins/tu.js +94 -94
  101. package/dist-es/skins/vivo-new.js +98 -98
  102. package/dist-es/skins/vivo.js +94 -94
  103. package/dist-es/style.css +1 -1
  104. package/dist-es/text-tokens.js +72 -52
  105. package/dist-es/theme-context-provider.js +88 -78
  106. package/dist-es/theme.js +20 -20
  107. package/dist-es/utils/headings.js +2 -0
  108. package/package.json +2 -1
package/dist/meter.js ADDED
@@ -0,0 +1,400 @@
1
+ "use client";
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return Zt;
10
+ }
11
+ });
12
+ const _jsxruntime = require("react/jsx-runtime");
13
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
14
+ const _skincontractcssmistica = require("./skins/skin-contract.css-mistica.js");
15
+ const _cubicbezier = /*#__PURE__*/ _interop_require_default(require("cubic-bezier"));
16
+ const _dom = require("./utils/dom.js");
17
+ const _themevariantcontext = require("./theme-variant-context.js");
18
+ const _hooks = require("./hooks.js");
19
+ const _texttokens = require("./text-tokens.js");
20
+ const _platform = require("./utils/platform.js");
21
+ function _interop_require_default(obj) {
22
+ return obj && obj.__esModule ? obj : {
23
+ default: obj
24
+ };
25
+ }
26
+ function _getRequireWildcardCache(nodeInterop) {
27
+ if (typeof WeakMap !== "function") return null;
28
+ var cacheBabelInterop = new WeakMap();
29
+ var cacheNodeInterop = new WeakMap();
30
+ return (_getRequireWildcardCache = function(nodeInterop) {
31
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
32
+ })(nodeInterop);
33
+ }
34
+ function _interop_require_wildcard(obj, nodeInterop) {
35
+ if (!nodeInterop && obj && obj.__esModule) {
36
+ return obj;
37
+ }
38
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
39
+ return {
40
+ default: obj
41
+ };
42
+ }
43
+ var cache = _getRequireWildcardCache(nodeInterop);
44
+ if (cache && cache.has(obj)) {
45
+ return cache.get(obj);
46
+ }
47
+ var newObj = {
48
+ __proto__: null
49
+ };
50
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
51
+ for(var key in obj){
52
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
53
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
54
+ if (desc && (desc.get || desc.set)) {
55
+ Object.defineProperty(newObj, key, desc);
56
+ } else {
57
+ newObj[key] = obj[key];
58
+ }
59
+ }
60
+ }
61
+ newObj.default = obj;
62
+ if (cache) {
63
+ cache.set(obj, newObj);
64
+ }
65
+ return newObj;
66
+ }
67
+ function _define_property(obj, key, value) {
68
+ if (key in obj) {
69
+ Object.defineProperty(obj, key, {
70
+ value: value,
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true
74
+ });
75
+ } else {
76
+ obj[key] = value;
77
+ }
78
+ return obj;
79
+ }
80
+ function _object_spread(target) {
81
+ for(var i = 1; i < arguments.length; i++){
82
+ var source = arguments[i] != null ? arguments[i] : {};
83
+ var ownKeys = Object.keys(source);
84
+ if (typeof Object.getOwnPropertySymbols === "function") {
85
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
86
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
87
+ }));
88
+ }
89
+ ownKeys.forEach(function(key) {
90
+ _define_property(target, key, source[key]);
91
+ });
92
+ }
93
+ return target;
94
+ }
95
+ function ownKeys(object, enumerableOnly) {
96
+ var keys = Object.keys(object);
97
+ if (Object.getOwnPropertySymbols) {
98
+ var symbols = Object.getOwnPropertySymbols(object);
99
+ if (enumerableOnly) {
100
+ symbols = symbols.filter(function(sym) {
101
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
102
+ });
103
+ }
104
+ keys.push.apply(keys, symbols);
105
+ }
106
+ return keys;
107
+ }
108
+ function _object_spread_props(target, source) {
109
+ source = source != null ? source : {};
110
+ if (Object.getOwnPropertyDescriptors) {
111
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
112
+ } else {
113
+ ownKeys(Object(source)).forEach(function(key) {
114
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
115
+ });
116
+ }
117
+ return target;
118
+ }
119
+ const A = 100, J = A / 2, ft = A / 2, Q = 6, wt = 2, gt = 200, tt = 1e3, Nt = 1e3 / 60 / tt / 4, Ct = 100, D = 1e-4, R = "linear", Ot = "angular", r = "circular", pt = [
120
+ _skincontractcssmistica.vars.colors.controlActivated,
121
+ _skincontractcssmistica.vars.colors.warning,
122
+ _skincontractcssmistica.vars.colors.success,
123
+ _skincontractcssmistica.vars.colors.highlight,
124
+ _skincontractcssmistica.vars.colors.promo
125
+ ], Ft = [
126
+ _skincontractcssmistica.vars.colors.controlActivatedInverse,
127
+ _skincontractcssmistica.vars.colors.warning,
128
+ _skincontractcssmistica.vars.colors.success,
129
+ _skincontractcssmistica.vars.colors.highlight,
130
+ _skincontractcssmistica.vars.colors.promo
131
+ ], Ut = (0, _cubicbezier.default)(0.75, 0, 0.27, 1, Nt), W = (t, n, $)=>Math.min(Math.max(t, n), $), kt = (t, n, $, M)=>{
132
+ var O;
133
+ const s = [];
134
+ let b = 0, S = 0;
135
+ for(let h = 0; h < t.length; h++){
136
+ b += t[h], S += n[h];
137
+ const G = gt * (M ? h : t.length - 1 - h), V = W(($ - G) / tt, 0, 1), Z = W(Ut(V), 0, 1), X = ((O = s.at(-1)) == null ? void 0 : O.end) || 0, u = W(b + (S - b) * Z, 0, 1 - D);
138
+ s.push({
139
+ start: X,
140
+ end: u
141
+ });
142
+ }
143
+ return s;
144
+ }, C = (param)=>{
145
+ let { x1: t, y1: n, x2: $, y2: M, radius: s, clockwise: b = 1, largeArchFlag: S = 0 } = param;
146
+ return s ? `M ${t} ${n} A ${s} ${s} 0 ${+S} ${+b} ${$} ${M}` : `M ${t} ${n} L ${$} ${M}`;
147
+ }, Dt = (param)=>{
148
+ let { type: t = Ot, width: n = "100%", colors: $, values: M, reverse: s = !1, dataAttributes: b, "aria-hidden": S = !1, "aria-label": O, "aria-labelledby": h } = param;
149
+ const { borderRadii: G, t: V } = (0, _hooks.useTheme)(), { ref: Z, width: X } = (0, _hooks.useElementDimensions)(), u = parseInt(G.bar) !== 0, et = (0, _themevariantcontext.useThemeVariant)(), q = et === "media", rt = et === "inverse", nt = $ || (rt || q ? Ft : pt), [p, ot] = _react.useState(typeof n == "number" ? n : 0), z = p === 0 ? 1 : A / p, at = u ? Q / 2 : 0, Y = at * z, i = Q * z, c = t === R ? 0 : J - i / 2, T = wt * z, H = _react.useId(), st = `marker-current-${H}`, it = `marker-start-${H}`, ct = `mask-last-segment-${H}`, lt = `mask-bar-track-${H}`, dt = _react.useMemo(()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches !== !0 && !(0, _platform.isRunningAcceptanceTest)(), []), L = t === R ? A - Y * 2 : t === r ? Math.PI * 2 : Math.PI, l = t === R ? T / A : T / c / L, xt = t === R ? Q : t === r ? p : p / 2 + at, K = t === R ? i : t === r ? A : J + Y, At = q ? _skincontractcssmistica.vars.colors.inverse : rt ? _skincontractcssmistica.vars.colors.barTrackInverse : _skincontractcssmistica.vars.colors.barTrack, f = _react.useMemo(()=>M.map((e)=>e / Ct), [
150
+ M
151
+ ]), P = _react.useRef(Array.from({
152
+ length: f.length
153
+ }, ()=>s ? 1 : 0)), [_, $t] = _react.useState(()=>f.map(()=>({
154
+ start: 0,
155
+ end: 0
156
+ })));
157
+ let v = -1, B = -1;
158
+ for(let e = 0; e < _.length; e++)_[e].end - _[e].start > D && (v < 0 && (v = e), B = e);
159
+ const d = _.at(-1);
160
+ _react.useEffect(()=>{
161
+ ot(typeof n == "number" ? n : X);
162
+ }, [
163
+ n,
164
+ X
165
+ ]), _react.useEffect(()=>{
166
+ let e;
167
+ const I = performance.now(), w = I + tt + gt * (f.length - 1);
168
+ let N = [];
169
+ const U = ()=>{
170
+ const x = performance.now();
171
+ N = kt(P.current, f, x - I, s), dt && x < w ? e = requestAnimationFrame(U) : (N = kt(P.current, f, w - I, s), P.current = f), $t(N);
172
+ };
173
+ return U(), ()=>{
174
+ cancelAnimationFrame(e), P.current = N.map((x)=>x.end - x.start);
175
+ };
176
+ }, [
177
+ c,
178
+ f,
179
+ t,
180
+ s,
181
+ dt
182
+ ]);
183
+ const k = _react.useCallback((e)=>t === R ? Y + L * e : J - c * Math.cos(e * L), [
184
+ Y,
185
+ L,
186
+ c,
187
+ t
188
+ ]), g = _react.useCallback((e)=>t === R ? i / 2 : ft - c * Math.sin(e * L), [
189
+ L,
190
+ c,
191
+ i,
192
+ t
193
+ ]), F = (e)=>nt[e % nt.length], mt = Math.round(((d == null ? void 0 : d.end) || 0) * 100), ht = V(_texttokens.meterTotalLabel, f.length, mt) + " " + f.map((e, I)=>`${V(_texttokens.meterSectionLabel, I + 1, Math.round(e * 100))}`).join(". ");
194
+ return /* @__PURE__ */ (0, _jsxruntime.jsx)("div", _object_spread_props(_object_spread({
195
+ ref: Z,
196
+ style: {
197
+ width: n
198
+ },
199
+ role: "meter",
200
+ "aria-label": O || (h ? void 0 : ht),
201
+ "aria-labelledby": h,
202
+ "aria-valuenow": mt,
203
+ "aria-valuemin": 0,
204
+ "aria-valuemax": 100,
205
+ "aria-live": "polite",
206
+ "aria-valuetext": ht,
207
+ "aria-hidden": S
208
+ }, (0, _dom.getPrefixedDataAttributes)(b, "Meter")), {
209
+ children: /* @__PURE__ */ (0, _jsxruntime.jsxs)("svg", {
210
+ viewBox: `0 0 ${A} ${K}`,
211
+ style: {
212
+ width: p,
213
+ height: xt,
214
+ display: "block",
215
+ transform: `rotate(${t === r ? "90deg" : 0})`
216
+ },
217
+ "aria-hidden": "true",
218
+ children: [
219
+ /* @__PURE__ */ (0, _jsxruntime.jsxs)("defs", {
220
+ children: [
221
+ u && /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
222
+ children: [
223
+ /* @__PURE__ */ (0, _jsxruntime.jsxs)("marker", {
224
+ id: st,
225
+ viewBox: "0 0 10 10",
226
+ markerWidth: 1,
227
+ markerHeight: 1,
228
+ orient: "auto",
229
+ refX: 5,
230
+ refY: 5,
231
+ children: [
232
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("rect", {
233
+ x: 4,
234
+ y: 0,
235
+ width: 2,
236
+ height: 10,
237
+ fill: F(B)
238
+ }),
239
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("path", {
240
+ d: C({
241
+ x1: 5,
242
+ y1: 0,
243
+ x2: 5,
244
+ y2: 10,
245
+ radius: 5
246
+ }),
247
+ fill: F(B)
248
+ })
249
+ ]
250
+ }),
251
+ /* @__PURE__ */ (0, _jsxruntime.jsxs)("marker", {
252
+ id: it,
253
+ viewBox: "0 0 10 10",
254
+ markerWidth: 1,
255
+ markerHeight: 1,
256
+ orient: "auto",
257
+ refX: 5,
258
+ refY: 5,
259
+ children: [
260
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("rect", {
261
+ x: 4,
262
+ y: 0,
263
+ width: 2,
264
+ height: 10,
265
+ fill: F(v)
266
+ }),
267
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("path", {
268
+ d: C({
269
+ x1: 5,
270
+ y1: 0,
271
+ x2: 5,
272
+ y2: 10,
273
+ radius: 5,
274
+ clockwise: 0
275
+ }),
276
+ fill: F(v)
277
+ })
278
+ ]
279
+ })
280
+ ]
281
+ }),
282
+ /* @__PURE__ */ (0, _jsxruntime.jsxs)("mask", {
283
+ id: lt,
284
+ maskUnits: "userSpaceOnUse",
285
+ children: [
286
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("rect", {
287
+ x: 0,
288
+ y: 0,
289
+ width: A,
290
+ height: K,
291
+ fill: "white"
292
+ }),
293
+ v >= 0 && d && /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
294
+ children: [
295
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("path", {
296
+ stroke: "black",
297
+ fill: "none",
298
+ strokeWidth: i + T * 2,
299
+ strokeLinecap: t === r || !u ? "butt" : "round",
300
+ d: C({
301
+ x1: k(0),
302
+ y1: g(0),
303
+ x2: k(W(d.end + (u ? 0 : l), 0, 1 - D)),
304
+ y2: g(W(d.end + (u ? 0 : l), 0, 1 - D)),
305
+ radius: c,
306
+ largeArchFlag: t === r ? d.end >= 0.5 : 0
307
+ })
308
+ }),
309
+ t === r && u && // the circular type has butt line caps, so we need to add a circle to the end
310
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("circle", {
311
+ cx: k(d.end),
312
+ cy: g(d.end),
313
+ r: i / 2 + T,
314
+ fill: "black"
315
+ }),
316
+ t === r && d.end <= 0.5 && // small patch to remove the circular mask when the last segment is too near to the start
317
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("rect", {
318
+ x: 0,
319
+ y: ft + T,
320
+ width: i + T * 2,
321
+ height: i / 2 + T,
322
+ fill: "white"
323
+ })
324
+ ]
325
+ })
326
+ ]
327
+ }),
328
+ t === r && /* @__PURE__ */ (0, _jsxruntime.jsxs)("mask", {
329
+ id: ct,
330
+ maskUnits: "userSpaceOnUse",
331
+ children: [
332
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("rect", {
333
+ x: 0,
334
+ y: 0,
335
+ width: A,
336
+ height: K,
337
+ fill: "white"
338
+ }),
339
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("path", {
340
+ stroke: "black",
341
+ strokeWidth: i,
342
+ fill: "none",
343
+ d: C({
344
+ x1: k(1 - l),
345
+ y1: g(1 - l),
346
+ x2: k(1),
347
+ y2: g(1),
348
+ radius: c
349
+ })
350
+ })
351
+ ]
352
+ })
353
+ ]
354
+ }),
355
+ /* @__PURE__ */ (0, _jsxruntime.jsx)("path", {
356
+ stroke: At,
357
+ opacity: q ? 0.5 : 1,
358
+ fill: "none",
359
+ strokeWidth: i,
360
+ strokeLinecap: t === r || !u ? "butt" : "round",
361
+ d: C({
362
+ x1: k(0),
363
+ y1: g(0),
364
+ x2: k(1 - (t === r ? l : 0)),
365
+ y2: g(1 - (t === r ? l : 0)),
366
+ largeArchFlag: 1,
367
+ radius: c
368
+ }),
369
+ mask: `url("#${lt}")`
370
+ }),
371
+ v >= 0 && [
372
+ ..._
373
+ ].reverse().map((e, I)=>{
374
+ const w = _.length - 1 - I, N = F(w), U = w === v, x = w === B, j = U || e.end - e.start < l ? e.start : e.start + l / 2, y = x || e.end - e.start < l ? e.end : e.end - l / 2;
375
+ if (y - j < D) return null;
376
+ const It = U && t !== r;
377
+ return /* @__PURE__ */ (0, _jsxruntime.jsx)("path", {
378
+ stroke: N,
379
+ fill: "none",
380
+ strokeWidth: i,
381
+ strokeLinecap: "butt",
382
+ markerEnd: x ? `url(#${st})` : void 0,
383
+ markerStart: It ? `url(#${it})` : void 0,
384
+ mask: x && t === r ? `url("#${ct}")` : void 0,
385
+ d: C({
386
+ x1: k(j),
387
+ y1: g(j),
388
+ x2: k(y),
389
+ y2: g(y),
390
+ largeArchFlag: t === r ? y - j >= 0.5 : 0,
391
+ radius: c
392
+ })
393
+ }, I);
394
+ })
395
+ ]
396
+ })
397
+ }));
398
+ }, Wt = (t)=>/* @__PURE__ */ /*#__PURE__*/ (0, _react.createElement)(Dt, _object_spread_props(_object_spread({}, t), {
399
+ key: `${t.type},${t.values.length},${t.reverse}`
400
+ })), Zt = Wt;
package/dist/mosaic.d.ts CHANGED
@@ -1,14 +1,18 @@
1
1
  import * as React from 'react';
2
2
  import type { DataAttributes } from './utils/types';
3
+ type MosaicItemGridMode = 'horizontal' | 'square' | 'vertical';
4
+ type MosaicItem = React.ReactElement | ((config: {
5
+ gridMode: MosaicItemGridMode;
6
+ }) => React.ReactElement);
3
7
  type HorizontalMosaicProps = {
4
- items: ReadonlyArray<React.ReactElement>;
8
+ items: ReadonlyArray<MosaicItem>;
5
9
  withBullets?: boolean;
6
10
  free?: boolean;
7
11
  dataAttributes?: DataAttributes;
8
12
  };
9
13
  export declare const HorizontalMosaic: ({ items, withBullets, free, dataAttributes, }: HorizontalMosaicProps) => JSX.Element;
10
14
  type VerticalMosaicProps = {
11
- items: ReadonlyArray<React.ReactElement>;
15
+ items: ReadonlyArray<MosaicItem>;
12
16
  dataAttributes?: DataAttributes;
13
17
  };
14
18
  export declare const VerticalMosaic: ({ items, dataAttributes }: VerticalMosaicProps) => JSX.Element;
package/dist/mosaic.js CHANGED
@@ -10,10 +10,10 @@ function _export(target, all) {
10
10
  }
11
11
  _export(exports, {
12
12
  HorizontalMosaic: function() {
13
- return N;
13
+ return G;
14
14
  },
15
15
  VerticalMosaic: function() {
16
- return b;
16
+ return N;
17
17
  }
18
18
  });
19
19
  const _jsxruntime = require("react/jsx-runtime");
@@ -72,58 +72,60 @@ function _object_spread_props(target, source) {
72
72
  }
73
73
  return target;
74
74
  }
75
- const d = {
75
+ const u = {
76
76
  mobile: 8,
77
77
  desktop: 16
78
- }, C = (param)=>{
79
- let { items: n, isEven: r } = param;
78
+ }, t = (n, o)=>typeof n == "function" ? n({
79
+ gridMode: o
80
+ }) : n, C = (param)=>{
81
+ let { items: n, isEven: o } = param;
80
82
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
81
83
  className: n.length === 1 ? _mosaiccssmistica.singleItemRowContainer : _mosaiccssmistica.squareContainer,
82
84
  children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.Grid, {
83
- gap: d,
85
+ gap: u,
84
86
  rows: 2,
85
87
  columns: 2,
86
88
  height: "100%",
87
89
  children: n.length === 3 ? /* @__PURE__ */ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
88
90
  children: [
89
91
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
90
- columnSpan: r ? 2 : void 0,
91
- children: n[0]
92
+ columnSpan: o ? 2 : void 0,
93
+ children: t(n[0], o ? "horizontal" : "square")
92
94
  }),
93
95
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
94
- children: n[1]
96
+ children: t(n[1], "square")
95
97
  }),
96
98
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
97
- columnSpan: r ? void 0 : 2,
98
- children: n[2]
99
+ columnSpan: o ? void 0 : 2,
100
+ children: t(n[2], o ? "square" : "horizontal")
99
101
  })
100
102
  ]
101
- }) : n.map((a, h)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
103
+ }) : n.map((a, s)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
102
104
  columnSpan: n.length === 4 ? void 0 : 2,
103
105
  rowSpan: n.length === 1 ? 2 : void 0,
104
- children: a
105
- }, h))
106
+ children: t(a, n.length === 4 ? "square" : "horizontal")
107
+ }, s))
106
108
  })
107
109
  });
108
- }, N = (param)=>{
109
- let { items: n, withBullets: r, free: a, dataAttributes: h } = param;
110
- const c = n.length, t = c < 5 ? Math.min(c, 1) : Math.floor((c + 1) / 3), l = Array.from({
111
- length: t
110
+ }, G = (param)=>{
111
+ let { items: n, withBullets: o, free: a, dataAttributes: s } = param;
112
+ const c = n.length, l = c < 5 ? Math.min(c, 1) : Math.floor((c + 1) / 3), h = Array.from({
113
+ length: l
112
114
  }, ()=>[]);
113
- return n.forEach((s, p)=>{
114
- const f = Math.min(t - 1, Math.floor(p / 3));
115
- l[f].push(s);
115
+ return n.forEach((d, p)=>{
116
+ const M = Math.min(l - 1, Math.floor(p / 3));
117
+ h[M].push(d);
116
118
  }), /* @__PURE__ */ (0, _jsxruntime.jsx)(_carousel.Carousel, {
117
- dataAttributes: _object_spread_props(_object_spread({}, h), {
119
+ dataAttributes: _object_spread_props(_object_spread({}, s), {
118
120
  "component-name": "HorizontalMosaic"
119
121
  }),
120
- items: l.map((s, p)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.Grid, {
122
+ items: h.map((d, p)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.Grid, {
121
123
  children: /* @__PURE__ */ (0, _jsxruntime.jsx)(C, {
122
- items: s,
124
+ items: d,
123
125
  isEven: p % 2 === 0
124
126
  }, p)
125
127
  })),
126
- withBullets: r,
128
+ withBullets: o,
127
129
  free: a
128
130
  });
129
131
  }, S = (param)=>{
@@ -134,12 +136,12 @@ const d = {
134
136
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
135
137
  className: _mosaiccssmistica.singleItemRowContainer,
136
138
  children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.Grid, {
137
- gap: d,
139
+ gap: u,
138
140
  columns: 2,
139
141
  height: "100%",
140
- children: n.map((r, a)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
142
+ children: n.map((o, a)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
141
143
  columnSpan: n.length === 2 ? void 0 : 2,
142
- children: r
144
+ children: t(o, n.length === 2 ? "square" : "horizontal")
143
145
  }, a))
144
146
  })
145
147
  });
@@ -147,13 +149,13 @@ const d = {
147
149
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
148
150
  className: _mosaiccssmistica.squareContainer,
149
151
  children: /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.Grid, {
150
- gap: d,
152
+ gap: u,
151
153
  columns: 2,
152
154
  flow: "column",
153
155
  height: "100%",
154
- children: n.map((r, a)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
156
+ children: n.map((o, a)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
155
157
  rowSpan: a === 0 ? 2 : void 0,
156
- children: r
158
+ children: t(o, a === 0 ? "vertical" : "square")
157
159
  }, a))
158
160
  })
159
161
  });
@@ -162,45 +164,45 @@ const d = {
162
164
  return /* @__PURE__ */ (0, _jsxruntime.jsx)("div", {
163
165
  className: _mosaiccssmistica.fourItemsContainer,
164
166
  children: /* @__PURE__ */ (0, _jsxruntime.jsxs)(_grid.Grid, {
165
- gap: d,
167
+ gap: u,
166
168
  rows: 3,
167
169
  columns: 2,
168
170
  height: "100%",
169
171
  children: [
170
172
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
171
173
  rowSpan: 2,
172
- children: n[0]
174
+ children: t(n[0], "vertical")
173
175
  }),
174
176
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
175
- children: n[1]
177
+ children: t(n[1], "square")
176
178
  }),
177
179
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
178
180
  rowSpan: 2,
179
- children: n[3]
181
+ children: t(n[3], "vertical")
180
182
  }),
181
183
  /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.GridItem, {
182
- children: n[2]
184
+ children: t(n[2], "square")
183
185
  })
184
186
  ]
185
187
  })
186
188
  });
187
189
  }
188
- }, b = (param)=>{
189
- let { items: n, dataAttributes: r } = param;
190
- const a = n.length, h = Math.ceil(a / 4), c = Array.from({
191
- length: h
190
+ }, N = (param)=>{
191
+ let { items: n, dataAttributes: o } = param;
192
+ const a = n.length, s = Math.ceil(a / 4), c = Array.from({
193
+ length: s
192
194
  }, ()=>[]);
193
- return n.forEach((t, l)=>{
194
- const s = Math.floor(l / 4);
195
- c[s].push(t);
195
+ return n.forEach((l, h)=>{
196
+ const d = Math.floor(h / 4);
197
+ c[d].push(l);
196
198
  }), /* @__PURE__ */ (0, _jsxruntime.jsx)(_grid.Grid, {
197
199
  rows: 1,
198
- gap: d,
199
- dataAttributes: _object_spread_props(_object_spread({}, r), {
200
+ gap: u,
201
+ dataAttributes: _object_spread_props(_object_spread({}, o), {
200
202
  "component-name": "VerticalMosaic"
201
203
  }),
202
- children: c.map((t, l)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(S, {
203
- items: t
204
- }, l))
204
+ children: c.map((l, h)=>/* @__PURE__ */ (0, _jsxruntime.jsx)(S, {
205
+ items: l
206
+ }, h))
205
207
  });
206
208
  };