panelui-native 0.38.0 → 0.40.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 (37) hide show
  1. package/README.md +2 -1
  2. package/lib/module/components/heatmap-chart/index.js +113 -6
  3. package/lib/module/components/heatmap-chart/index.js.map +1 -1
  4. package/lib/module/components/pagination/index.js +519 -0
  5. package/lib/module/components/pagination/index.js.map +1 -0
  6. package/lib/module/components/ring-chart/index.js +183 -45
  7. package/lib/module/components/ring-chart/index.js.map +1 -1
  8. package/lib/module/components/steps/index.js +8 -6
  9. package/lib/module/components/steps/index.js.map +1 -1
  10. package/lib/module/components/table/index.js +100 -26
  11. package/lib/module/components/table/index.js.map +1 -1
  12. package/lib/module/components/timeline/index.js +8 -7
  13. package/lib/module/components/timeline/index.js.map +1 -1
  14. package/lib/module/index.js +1 -0
  15. package/lib/module/index.js.map +1 -1
  16. package/lib/typescript/src/components/heatmap-chart/index.d.ts +51 -3
  17. package/lib/typescript/src/components/heatmap-chart/index.d.ts.map +1 -1
  18. package/lib/typescript/src/components/pagination/index.d.ts +285 -0
  19. package/lib/typescript/src/components/pagination/index.d.ts.map +1 -0
  20. package/lib/typescript/src/components/ring-chart/index.d.ts +75 -8
  21. package/lib/typescript/src/components/ring-chart/index.d.ts.map +1 -1
  22. package/lib/typescript/src/components/steps/index.d.ts +8 -6
  23. package/lib/typescript/src/components/steps/index.d.ts.map +1 -1
  24. package/lib/typescript/src/components/table/index.d.ts +59 -17
  25. package/lib/typescript/src/components/table/index.d.ts.map +1 -1
  26. package/lib/typescript/src/components/timeline/index.d.ts +8 -7
  27. package/lib/typescript/src/components/timeline/index.d.ts.map +1 -1
  28. package/lib/typescript/src/index.d.ts +2 -1
  29. package/lib/typescript/src/index.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/components/heatmap-chart/index.tsx +147 -5
  32. package/src/components/pagination/index.tsx +591 -0
  33. package/src/components/ring-chart/index.tsx +269 -47
  34. package/src/components/steps/index.tsx +8 -6
  35. package/src/components/table/index.tsx +146 -30
  36. package/src/components/timeline/index.tsx +8 -7
  37. package/src/index.ts +15 -0
@@ -0,0 +1,519 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Pagination — moving through a result set one page at a time.
5
+ *
6
+ * The component owns the arithmetic and nothing else. Give it how many pages
7
+ * there are and which one you are on, and it works out which numbers to show,
8
+ * where the gaps fall, and which controls are dead at the ends; it never fetches
9
+ * and never slices, because the data is yours.
10
+ *
11
+ * ```tsx
12
+ * <Pagination count={12} page={page} onPageChange={setPage} />
13
+ * ```
14
+ *
15
+ * Three presentations, because a phone is not a desktop:
16
+ *
17
+ * - `numbers` — the full run, with the middle folded into ellipses. Fits about
18
+ * seven targets across a phone, which is what `siblings` and `boundaries`
19
+ * are tuned for.
20
+ * - `compact` — the two arrows with `3 / 12` between them. Digits and a slash,
21
+ * so there is no sentence to translate.
22
+ * - `simple` — labelled Previous and Next, for a flow you walk rather than
23
+ * jump around in: a wizard, an article, a set of onboarding cards.
24
+ *
25
+ * Every target is at least 44pt in both axes, and the small size keeps that
26
+ * reach with `hitSlop` rather than by growing — the row gets denser, the
27
+ * fingers do not get smaller.
28
+ *
29
+ * An ellipsis is a button, not punctuation. A dead 44pt target in the middle of
30
+ * a row of live ones is a thing people tap and then think is broken, so tapping
31
+ * one jumps `pageJump` pages that way.
32
+ *
33
+ * Given children, the root becomes a row with them on the leading edge and the
34
+ * controls on the trailing one — which is where `Pagination.Status` goes:
35
+ *
36
+ * ```tsx
37
+ * <Pagination count={12} page={page} onPageChange={setPage} variant="compact">
38
+ * <Pagination.Status page={page} pageSize={20} total={240} />
39
+ * </Pagination>
40
+ * ```
41
+ */
42
+ import { createContext, forwardRef, useCallback, useContext, useMemo, useState } from 'react';
43
+ import { View } from 'react-native';
44
+ import { tv } from 'tailwind-variants';
45
+ import { useCSSVariable } from 'uniwind';
46
+ import { ChevronLeftIcon, ChevronRightIcon, EllipsisIcon } from "../../icons/index.js";
47
+ import { useDirection } from "../../hooks/use-direction.js";
48
+ import { AnimatedPressable } from "../../primitives/animated-pressable.js";
49
+ import { Text, textChildren } from "../../primitives/text.js";
50
+ import { cn } from "../../utils/cn.js";
51
+ import { selectionTick } from "../../utils/haptics.js";
52
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
53
+ /**
54
+ * What the small size gives back as padding. 44pt is the smallest target a
55
+ * finger reliably hits, and the row is allowed to get tighter than that only
56
+ * because the reach is restored outside the paint.
57
+ */
58
+ const SMALL_HIT_SLOP = {
59
+ top: 4,
60
+ bottom: 4,
61
+ left: 4,
62
+ right: 4
63
+ };
64
+ const paginationVariants = tv({
65
+ slots: {
66
+ root: 'flex-row items-center',
67
+ list: 'flex-row items-center',
68
+ item: 'items-center justify-center rounded-lg',
69
+ itemLabel: 'font-medium tabular-nums',
70
+ ellipsis: 'items-center justify-center',
71
+ status: 'text-muted-foreground tabular-nums',
72
+ summary: 'text-muted-foreground tabular-nums'
73
+ },
74
+ variants: {
75
+ size: {
76
+ default: {
77
+ list: 'gap-1',
78
+ item: 'h-11 min-w-11 px-1',
79
+ itemLabel: 'text-sm',
80
+ ellipsis: 'h-11 w-11',
81
+ status: 'text-sm',
82
+ summary: 'text-sm'
83
+ },
84
+ sm: {
85
+ list: 'gap-0.5',
86
+ item: 'h-9 min-w-9 px-1',
87
+ itemLabel: 'text-xs',
88
+ ellipsis: 'h-9 w-9',
89
+ status: 'text-xs',
90
+ summary: 'text-xs'
91
+ }
92
+ },
93
+ /** Whether the item is the page you are on. */
94
+ current: {
95
+ true: {
96
+ item: 'bg-primary',
97
+ itemLabel: 'text-primary-foreground'
98
+ },
99
+ false: {
100
+ itemLabel: 'text-foreground'
101
+ }
102
+ },
103
+ disabled: {
104
+ true: {
105
+ item: 'opacity-[0.4]'
106
+ }
107
+ }
108
+ },
109
+ defaultVariants: {
110
+ size: 'default',
111
+ current: false
112
+ }
113
+ });
114
+ const iconSize = {
115
+ default: 20,
116
+ sm: 16
117
+ };
118
+
119
+ /**
120
+ * The state every part reads. A `Pagination.Previous` dropped into a row of
121
+ * your own still knows which page it is on and whether it is at the start,
122
+ * because that answer lives here rather than in the props it was given.
123
+ */
124
+
125
+ const PaginationContext = /*#__PURE__*/createContext(null);
126
+ function usePagination(part) {
127
+ const context = useContext(PaginationContext);
128
+ if (!context) {
129
+ throw new Error(`${part} must be used inside <Pagination>.`);
130
+ }
131
+ return context;
132
+ }
133
+ const range = (start, end) => end < start ? [] : Array.from({
134
+ length: end - start + 1
135
+ }, (_, i) => start + i);
136
+ /**
137
+ * Which numbers to draw, and where the gaps go.
138
+ *
139
+ * The run is a fixed width rather than a sliding window: the same number of
140
+ * targets whichever page you are on, so the row does not reflow under the
141
+ * finger as you step through it and the arrow you were aiming at stays put.
142
+ * `boundaries` pins the ends, `siblings` pads the middle, and a gap of exactly
143
+ * one page is drawn as that page instead of an ellipsis — a `…` that hides a
144
+ * single number is longer than the number.
145
+ *
146
+ * Exported because a caller sometimes needs the same run for a control of their
147
+ * own, and two implementations of this would drift.
148
+ */
149
+ export function paginationRange({
150
+ count,
151
+ page,
152
+ siblings = 1,
153
+ boundaries = 1
154
+ }) {
155
+ const startPages = range(1, Math.min(boundaries, count));
156
+ const endPages = range(Math.max(count - boundaries + 1, boundaries + 1), count);
157
+ const siblingsStart = Math.max(Math.min(page - siblings, count - boundaries - siblings * 2 - 1), boundaries + 2);
158
+ const siblingsEnd = Math.min(Math.max(page + siblings, boundaries + siblings * 2 + 2), endPages.length > 0 ? endPages[0] - 2 : count - 1);
159
+ return [...startPages, ...(siblingsStart > boundaries + 2 ? ['start-ellipsis'] : boundaries + 1 < count - boundaries ? [boundaries + 1] : []), ...range(siblingsStart, siblingsEnd), ...(siblingsEnd < count - boundaries - 1 ? ['end-ellipsis'] : count - boundaries > boundaries ? [count - boundaries] : []), ...endPages];
160
+ }
161
+ const PaginationRoot = /*#__PURE__*/forwardRef(({
162
+ className,
163
+ count,
164
+ page: controlledPage,
165
+ defaultPage = 1,
166
+ onPageChange,
167
+ variant = 'numbers',
168
+ size = 'default',
169
+ siblings = 1,
170
+ boundaries = 1,
171
+ controls = true,
172
+ pageJump = 5,
173
+ disabled = false,
174
+ accessibilityLabel = 'Pagination',
175
+ children,
176
+ ...props
177
+ }, ref) => {
178
+ const [internalPage, setInternalPage] = useState(defaultPage);
179
+ const isControlled = controlledPage !== undefined;
180
+ // Clamped on the way out as well as on the way in: `count` can shrink under
181
+ // a controlled page — a filter narrowing the result set — and a page number
182
+ // past the end would light nothing and disable both arrows at once.
183
+ const page = Math.min(Math.max(isControlled ? controlledPage : internalPage, 1), count);
184
+ const goTo = useCallback(next => {
185
+ const clamped = Math.min(Math.max(next, 1), count);
186
+ if (clamped === page || disabled) return;
187
+ // On the frame of the press rather than after the fetch: the tick is
188
+ // what ties the feeling to the tap, and the rows arrive whenever they
189
+ // arrive.
190
+ selectionTick();
191
+ if (!isControlled) setInternalPage(clamped);
192
+ onPageChange?.(clamped);
193
+ }, [count, page, disabled, isControlled, onPageChange]);
194
+ const context = useMemo(() => ({
195
+ page,
196
+ count,
197
+ size,
198
+ disabled,
199
+ goTo
200
+ }), [page, count, size, disabled, goTo]);
201
+ const items = useMemo(() => variant === 'numbers' ? paginationRange({
202
+ count,
203
+ page,
204
+ siblings,
205
+ boundaries
206
+ }) : [], [variant, count, page, siblings, boundaries]);
207
+ const {
208
+ root,
209
+ list
210
+ } = paginationVariants({
211
+ size
212
+ });
213
+ return /*#__PURE__*/_jsx(PaginationContext.Provider, {
214
+ value: context,
215
+ children: /*#__PURE__*/_jsxs(View, {
216
+ ref: ref,
217
+ role: "navigation",
218
+ accessibilityLabel: accessibilityLabel,
219
+ className: root({
220
+ // With nothing on the leading edge the controls are the whole row
221
+ // and centre in it; with something there they part to the two ends,
222
+ // which is the shape a table footer wants.
223
+ className: cn(children ? 'justify-between gap-3' : 'justify-center', className)
224
+ }),
225
+ ...props,
226
+ children: [textChildren(children, text => /*#__PURE__*/_jsx(PaginationStatus, {
227
+ children: text
228
+ })), /*#__PURE__*/_jsxs(View, {
229
+ className: list(),
230
+ children: [controls ? /*#__PURE__*/_jsx(PaginationPrevious, {
231
+ label: variant === 'simple'
232
+ }) : null, variant === 'numbers' ? items.map((item, index) => typeof item === 'number' ? /*#__PURE__*/_jsx(PaginationItem, {
233
+ page: item
234
+ }, item) : /*#__PURE__*/_jsx(PaginationEllipsis, {
235
+ direction: item === 'start-ellipsis' ? -1 : 1,
236
+ jump: pageJump
237
+ }, `${item}-${index}`)) : null, variant === 'compact' ? /*#__PURE__*/_jsx(PaginationSummary, {}) : null, controls ? /*#__PURE__*/_jsx(PaginationNext, {
238
+ label: variant === 'simple'
239
+ }) : null]
240
+ })]
241
+ })
242
+ });
243
+ });
244
+ PaginationRoot.displayName = 'Pagination';
245
+ /**
246
+ * One numbered target. Announced as a selected button when it is the page you
247
+ * are on, so the current page is spoken as state rather than only painted.
248
+ */
249
+ const PaginationItem = /*#__PURE__*/forwardRef(({
250
+ className,
251
+ labelClassName,
252
+ page,
253
+ children,
254
+ ...props
255
+ }, ref) => {
256
+ const {
257
+ page: current,
258
+ size,
259
+ disabled,
260
+ goTo
261
+ } = usePagination('Pagination.Item');
262
+ const isCurrent = page === current;
263
+ const {
264
+ item,
265
+ itemLabel
266
+ } = paginationVariants({
267
+ size,
268
+ current: isCurrent,
269
+ disabled
270
+ });
271
+ return /*#__PURE__*/_jsx(AnimatedPressable, {
272
+ ref: ref,
273
+ accessibilityRole: "button",
274
+ accessibilityLabel: `Page ${page}`,
275
+ accessibilityState: {
276
+ selected: isCurrent,
277
+ disabled
278
+ },
279
+ disabled: disabled,
280
+ hitSlop: size === 'sm' ? SMALL_HIT_SLOP : undefined,
281
+ onPress: () => goTo(page),
282
+ className: item({
283
+ className
284
+ }),
285
+ ...props,
286
+ children: textChildren(children ?? String(page), text => /*#__PURE__*/_jsx(Text, {
287
+ className: itemLabel({
288
+ className: labelClassName
289
+ }),
290
+ children: text
291
+ }))
292
+ });
293
+ });
294
+ PaginationItem.displayName = 'Pagination.Item';
295
+ /**
296
+ * The two arrows, which are the same button pointed the other way.
297
+ *
298
+ * Which glyph is "back" is a question about the reading direction, not about
299
+ * the component: in a right-to-left layout the previous page is to the right.
300
+ * Yoga mirrors the row on its own; the arrowhead inside it has to be chosen.
301
+ */
302
+ function useArrow(step, part) {
303
+ const {
304
+ page,
305
+ count,
306
+ size,
307
+ disabled,
308
+ goTo
309
+ } = usePagination(part);
310
+ const rtl = useDirection() === 'rtl';
311
+ const color = useCSSVariable('--color-foreground');
312
+ const target = page + step;
313
+ const spent = disabled || target < 1 || target > count;
314
+ const Glyph = step === -1 === rtl ? ChevronRightIcon : ChevronLeftIcon;
315
+ return {
316
+ Glyph,
317
+ size,
318
+ spent,
319
+ color: typeof color === 'string' ? color : '#0a0a0a',
320
+ press: () => goTo(target)
321
+ };
322
+ }
323
+ function PaginationArrow({
324
+ step,
325
+ part,
326
+ word,
327
+ className,
328
+ label,
329
+ ...props
330
+ }) {
331
+ const {
332
+ Glyph,
333
+ size,
334
+ spent,
335
+ color,
336
+ press
337
+ } = useArrow(step, part);
338
+ const {
339
+ item,
340
+ itemLabel
341
+ } = paginationVariants({
342
+ size,
343
+ disabled: spent
344
+ });
345
+ return /*#__PURE__*/_jsxs(AnimatedPressable, {
346
+ accessibilityRole: "button",
347
+ accessibilityLabel: word,
348
+ accessibilityState: {
349
+ disabled: spent
350
+ },
351
+ disabled: spent,
352
+ hitSlop: size === 'sm' ? SMALL_HIT_SLOP : undefined,
353
+ onPress: press,
354
+ className: item({
355
+ className: cn('flex-row gap-1', label && (size === 'sm' ? 'px-2' : 'px-3'), className)
356
+ }),
357
+ ...props,
358
+ children: [step === -1 ? /*#__PURE__*/_jsx(Glyph, {
359
+ size: iconSize[size],
360
+ color: color
361
+ }) : null, label ? /*#__PURE__*/_jsx(Text, {
362
+ className: itemLabel(),
363
+ children: word
364
+ }) : null, step === 1 ? /*#__PURE__*/_jsx(Glyph, {
365
+ size: iconSize[size],
366
+ color: color
367
+ }) : null]
368
+ });
369
+ }
370
+
371
+ /** Back one page. Dead on the first page rather than looping to the last. */
372
+ const PaginationPrevious = ({
373
+ ...props
374
+ }) => /*#__PURE__*/_jsx(PaginationArrow, {
375
+ step: -1,
376
+ part: "Pagination.Previous",
377
+ word: "Previous",
378
+ ...props
379
+ });
380
+ PaginationPrevious.displayName = 'Pagination.Previous';
381
+
382
+ /** Forward one page. Dead on the last page rather than looping to the first. */
383
+ const PaginationNext = ({
384
+ ...props
385
+ }) => /*#__PURE__*/_jsx(PaginationArrow, {
386
+ step: 1,
387
+ part: "Pagination.Next",
388
+ word: "Next",
389
+ ...props
390
+ });
391
+ PaginationNext.displayName = 'Pagination.Next';
392
+ /**
393
+ * The gap in the run, and a way across it. Tapping jumps `jump` pages towards
394
+ * the end the gap is on — which is why the two ellipses are told apart: a jump
395
+ * that always went forwards would strand anyone reading the row right to left.
396
+ */
397
+ const PaginationEllipsis = /*#__PURE__*/forwardRef(({
398
+ className,
399
+ direction = 1,
400
+ jump = 5,
401
+ ...props
402
+ }, ref) => {
403
+ const {
404
+ page,
405
+ size,
406
+ disabled,
407
+ goTo
408
+ } = usePagination('Pagination.Ellipsis');
409
+ const color = useCSSVariable('--color-muted-foreground');
410
+ const {
411
+ ellipsis
412
+ } = paginationVariants({
413
+ size
414
+ });
415
+ return /*#__PURE__*/_jsx(AnimatedPressable, {
416
+ ref: ref,
417
+ accessibilityRole: "button",
418
+ accessibilityLabel: direction === -1 ? `Back ${jump} pages` : `Forward ${jump} pages`,
419
+ accessibilityState: {
420
+ disabled
421
+ },
422
+ disabled: disabled,
423
+ hitSlop: size === 'sm' ? SMALL_HIT_SLOP : undefined,
424
+ onPress: () => goTo(page + direction * jump),
425
+ className: ellipsis({
426
+ className
427
+ }),
428
+ ...props,
429
+ children: /*#__PURE__*/_jsx(EllipsisIcon, {
430
+ size: iconSize[size],
431
+ color: typeof color === 'string' ? color : '#737373'
432
+ })
433
+ });
434
+ });
435
+ PaginationEllipsis.displayName = 'Pagination.Ellipsis';
436
+ /**
437
+ * `3 / 12` — where you are, in the space two arrows leave between them.
438
+ *
439
+ * Digits and a slash rather than "Page 3 of 12", because a phone has no room
440
+ * for the sentence and the sentence would need translating. `Pagination.Status`
441
+ * is the place for words.
442
+ */
443
+ const PaginationSummary = /*#__PURE__*/forwardRef(({
444
+ className,
445
+ ...props
446
+ }, ref) => {
447
+ const {
448
+ page,
449
+ count,
450
+ size
451
+ } = usePagination('Pagination.Summary');
452
+ const {
453
+ summary
454
+ } = paginationVariants({
455
+ size
456
+ });
457
+ return /*#__PURE__*/_jsxs(Text, {
458
+ ref: ref,
459
+ accessibilityLabel: `Page ${page} of ${count}`,
460
+ className: summary({
461
+ className: cn('px-2', className)
462
+ }),
463
+ ...props,
464
+ children: [page, " / ", count]
465
+ });
466
+ });
467
+ PaginationSummary.displayName = 'Pagination.Summary';
468
+ /**
469
+ * The line that says how much of the set you are looking at — `1–20 of 240`.
470
+ *
471
+ * Worth having beside a table because a page number alone does not answer the
472
+ * question people actually have, which is how much is left. Given `children`
473
+ * it renders those instead, for a set whose size is not known yet.
474
+ */
475
+ const PaginationStatus = /*#__PURE__*/forwardRef(({
476
+ className,
477
+ page: ownPage,
478
+ pageSize,
479
+ total,
480
+ children,
481
+ ...props
482
+ }, ref) => {
483
+ const context = useContext(PaginationContext);
484
+ const size = context?.size ?? 'default';
485
+ const page = ownPage ?? context?.page ?? 1;
486
+ const {
487
+ status
488
+ } = paginationVariants({
489
+ size
490
+ });
491
+ const span = useMemo(() => {
492
+ if (children !== undefined) return null;
493
+ if (pageSize === undefined || total === undefined) return null;
494
+ if (total <= 0) return 'None';
495
+ const from = (page - 1) * pageSize + 1;
496
+ // The last page is nearly always short; counting a full one past the end
497
+ // is the classic off-by-a-page-size.
498
+ const to = Math.min(page * pageSize, total);
499
+ return `${from}–${to} of ${total}`;
500
+ }, [children, page, pageSize, total]);
501
+ return /*#__PURE__*/_jsx(Text, {
502
+ ref: ref,
503
+ className: status({
504
+ className
505
+ }),
506
+ ...props,
507
+ children: span ?? textChildren(children)
508
+ });
509
+ });
510
+ PaginationStatus.displayName = 'Pagination.Status';
511
+ export const Pagination = Object.assign(PaginationRoot, {
512
+ Item: PaginationItem,
513
+ Previous: PaginationPrevious,
514
+ Next: PaginationNext,
515
+ Ellipsis: PaginationEllipsis,
516
+ Summary: PaginationSummary,
517
+ Status: PaginationStatus
518
+ });
519
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","forwardRef","useCallback","useContext","useMemo","useState","View","tv","useCSSVariable","ChevronLeftIcon","ChevronRightIcon","EllipsisIcon","useDirection","AnimatedPressable","Text","textChildren","cn","selectionTick","jsx","_jsx","jsxs","_jsxs","SMALL_HIT_SLOP","top","bottom","left","right","paginationVariants","slots","root","list","item","itemLabel","ellipsis","status","summary","variants","size","default","sm","current","true","false","disabled","defaultVariants","iconSize","PaginationContext","usePagination","part","context","Error","range","start","end","Array","from","length","_","i","paginationRange","count","page","siblings","boundaries","startPages","Math","min","endPages","max","siblingsStart","siblingsEnd","PaginationRoot","className","controlledPage","defaultPage","onPageChange","variant","controls","pageJump","accessibilityLabel","children","props","ref","internalPage","setInternalPage","isControlled","undefined","goTo","next","clamped","items","Provider","value","role","text","PaginationStatus","PaginationPrevious","label","map","index","PaginationItem","PaginationEllipsis","direction","jump","PaginationSummary","PaginationNext","displayName","labelClassName","isCurrent","accessibilityRole","accessibilityState","selected","hitSlop","onPress","String","useArrow","step","rtl","color","target","spent","Glyph","press","PaginationArrow","word","ownPage","pageSize","total","span","to","Pagination","Object","assign","Item","Previous","Next","Ellipsis","Summary","Status"],"sourceRoot":"../../../../src","sources":["components/pagination/index.tsx"],"mappings":"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","ignoreList":[]}