panelui-native 0.91.0 → 0.93.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.
@@ -0,0 +1,577 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * PageHeader — the top of a profile screen: a cover, the face over it, who it
5
+ * belongs to, and what you can do about them.
6
+ *
7
+ * Every social app opens a profile the same way, and rebuilding it per screen
8
+ * is how the cover ends up a different height on each one. The parts here are
9
+ * the pieces that arrangement is made of, and the two variants are the two
10
+ * places it lives: `card`, a self-contained surface in a scroll of other
11
+ * cards, and `page`, the header of the screen itself.
12
+ *
13
+ * ```tsx
14
+ * <PageHeader>
15
+ * <PageHeader.Cover />
16
+ * <PageHeader.Avatar source={face} fallback="OR" verified />
17
+ * <PageHeader.Content>
18
+ * <PageHeader.Title>Olivia Rhye</PageHeader.Title>
19
+ * <PageHeader.Description>@oliviarhye</PageHeader.Description>
20
+ * </PageHeader.Content>
21
+ * <PageHeader.Actions>
22
+ * <Button className="flex-1">Follow</Button>
23
+ * </PageHeader.Actions>
24
+ * </PageHeader>
25
+ * ```
26
+ *
27
+ * The cover in `card` is held off the card's edges and rounded on its top
28
+ * corners only, so its bottom edge meets the content rather than floating
29
+ * above it. The radius pair is `rounded-3xl` on the card and `rounded-2xl` on
30
+ * the cover, one step apart on the theme's own scale — which is the same 8
31
+ * points the card is padded by, so the two curves stay concentric without a
32
+ * hardcoded number that would be wrong in half the themes.
33
+ *
34
+ * The avatar lifts itself over the cover's bottom edge, and it works out
35
+ * whether to: the root looks for a `PageHeader.Cover` among its children and
36
+ * says so through context, because a header with no cover has nothing to
37
+ * overlap and an avatar that lifted anyway would hang off the top of it.
38
+ *
39
+ * The ring around the face is drawn in the surface behind it — the card, or
40
+ * the page — rather than in a border colour, so the face reads as punched out
41
+ * of the cover instead of outlined on top of it.
42
+ */
43
+ import { Children, cloneElement, createContext, forwardRef, isValidElement, useContext, useMemo } from 'react';
44
+ import { Image, StyleSheet, View } from 'react-native';
45
+ import { LinearGradient } from 'expo-linear-gradient';
46
+ import { tv } from 'tailwind-variants';
47
+ import { useCSSVariable } from 'uniwind';
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 { BadgeCheckIcon, IconColorProvider } from "../../icons/index.js";
52
+ import { Avatar, AVATAR_SIZE_POINTS } from "../avatar/index.js";
53
+
54
+ /** Height of a cover that is not given one. Two lines of nothing, and enough
55
+ * of a band for a face to sit half over. */
56
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
57
+ const COVER_HEIGHT = 120;
58
+
59
+ /** Points of surface drawn around the face. */
60
+ const AVATAR_RING = 4;
61
+
62
+ /** The rosette, as a share of the face it sits on. */
63
+ const BADGE_RATIO = 0.3;
64
+
65
+ /** The cover gradient, when no image is given. Both are series tokens, so an
66
+ * app that puts its charts on brand puts this on brand with them. */
67
+ const GRADIENT = ['--color-chart-2', '--color-chart-5'];
68
+ const GRADIENT_FALLBACK = ['#3b82f6', '#8b5cf6'];
69
+ const pageHeaderVariants = tv({
70
+ slots: {
71
+ root: 'w-full',
72
+ cover: 'overflow-hidden bg-muted',
73
+ avatar: 'self-start',
74
+ ring: 'overflow-hidden rounded-full',
75
+ row: 'flex-row items-center gap-5',
76
+ content: 'gap-1',
77
+ meta: 'flex-row items-center gap-1.5',
78
+ stats: 'flex-row items-center',
79
+ actions: 'flex-row items-center gap-2'
80
+ },
81
+ variants: {
82
+ variant: {
83
+ // `overflow-hidden` clips the cover's own square bottom corners to the
84
+ // card's radius on the way down; `p-2` is what holds the cover off the
85
+ // card's edges, and is the difference between the two radii above.
86
+ card: {
87
+ root: 'overflow-hidden rounded-3xl border border-border bg-card p-2',
88
+ cover: 'rounded-t-2xl',
89
+ ring: 'border-card',
90
+ avatar: 'px-3',
91
+ row: 'px-3',
92
+ content: 'px-3 pt-3',
93
+ actions: 'px-3 pb-2 pt-4'
94
+ },
95
+ // No surface of its own, and the cover runs to the screen's edges.
96
+ page: {
97
+ root: 'bg-background',
98
+ ring: 'border-background',
99
+ avatar: 'px-4',
100
+ row: 'px-4',
101
+ content: 'px-4 pt-3',
102
+ actions: 'px-4 pb-4 pt-4'
103
+ }
104
+ },
105
+ align: {
106
+ start: {},
107
+ center: {
108
+ avatar: 'self-center',
109
+ row: 'justify-center',
110
+ content: 'items-center',
111
+ meta: 'justify-center',
112
+ stats: 'justify-center',
113
+ actions: 'justify-center'
114
+ }
115
+ }
116
+ },
117
+ defaultVariants: {
118
+ variant: 'card',
119
+ align: 'center'
120
+ }
121
+ });
122
+
123
+ /** Where the header lives: a card in a scroll, or the top of the screen. */
124
+
125
+ /** Which edge the face and the text line up on. */
126
+
127
+ const PageHeaderContext = /*#__PURE__*/createContext(undefined);
128
+ function usePageHeader(component) {
129
+ const context = useContext(PageHeaderContext);
130
+ if (!context) throw new Error(`${component} must be used within a <PageHeader>`);
131
+ return context;
132
+ }
133
+
134
+ /**
135
+ * True inside a `PageHeader.Row`. The avatar carries the body's inset and its
136
+ * own alignment when it stands alone, and neither when something else is
137
+ * already holding the row it sits in.
138
+ */
139
+ const PageHeaderRowContext = /*#__PURE__*/createContext(false);
140
+
141
+ /** How a stats row reads its numbers out. */
142
+ const PageHeaderStatsContext = /*#__PURE__*/createContext('stacked');
143
+ const PageHeaderRoot = /*#__PURE__*/forwardRef(({
144
+ className,
145
+ variant = 'card',
146
+ align = 'center',
147
+ children,
148
+ ...props
149
+ }, ref) => {
150
+ // Whether the avatar has anything to overlap. Read off the children rather
151
+ // than asked for, because a caller who has written a cover should not also
152
+ // have to say that they have.
153
+ const hasCover = Children.toArray(children).some(child => /*#__PURE__*/isValidElement(child) && child.type === PageHeaderCover);
154
+ const context = useMemo(() => ({
155
+ variant,
156
+ align,
157
+ hasCover
158
+ }), [variant, align, hasCover]);
159
+ return /*#__PURE__*/_jsx(View, {
160
+ ...props,
161
+ ref: ref,
162
+ className: pageHeaderVariants({
163
+ variant,
164
+ align
165
+ }).root({
166
+ className
167
+ }),
168
+ children: /*#__PURE__*/_jsx(PageHeaderContext.Provider, {
169
+ value: context,
170
+ children: children
171
+ })
172
+ });
173
+ });
174
+ PageHeaderRoot.displayName = 'PageHeader';
175
+ /**
176
+ * The banner. An image when given one, a gradient when not — a header with no
177
+ * banner still has to read as a header, and an empty band reads as a bug.
178
+ */
179
+ const PageHeaderCover = /*#__PURE__*/forwardRef(({
180
+ className,
181
+ source,
182
+ height = COVER_HEIGHT,
183
+ colors,
184
+ alt,
185
+ style,
186
+ children,
187
+ ...props
188
+ }, ref) => {
189
+ const {
190
+ variant
191
+ } = usePageHeader('PageHeader.Cover');
192
+ const from = useCSSVariable(GRADIENT[0]);
193
+ const to = useCSSVariable(GRADIENT[1]);
194
+
195
+ // `useCSSVariable` can hand back something that is not a colour string, and
196
+ // a gradient given one paints nothing at all.
197
+ const ramp = colors ?? [typeof from === 'string' ? from : GRADIENT_FALLBACK[0], typeof to === 'string' ? to : GRADIENT_FALLBACK[1]];
198
+ return /*#__PURE__*/_jsxs(View, {
199
+ ...props,
200
+ ref: ref,
201
+ className: pageHeaderVariants({
202
+ variant
203
+ }).cover({
204
+ className
205
+ }),
206
+ style: [{
207
+ height
208
+ }, style],
209
+ children: [source ? /*#__PURE__*/_jsx(Image, {
210
+ source: source,
211
+ resizeMode: "cover",
212
+ style: StyleSheet.absoluteFill,
213
+ accessible: !!alt,
214
+ accessibilityRole: alt ? 'image' : undefined,
215
+ accessibilityLabel: alt
216
+ }) : /*#__PURE__*/_jsx(LinearGradient, {
217
+ colors: ramp,
218
+ start: {
219
+ x: 0,
220
+ y: 0
221
+ },
222
+ end: {
223
+ x: 0,
224
+ y: 1
225
+ }
226
+ // Filled by style rather than by class. `className` on a component
227
+ // from another package is only as good as that package's style
228
+ // forwarding, and a gradient that silently measures zero is a
229
+ // banner that is simply not there.
230
+ ,
231
+ style: StyleSheet.absoluteFill,
232
+ accessibilityElementsHidden: true,
233
+ importantForAccessibility: "no-hide-descendants"
234
+ }), children]
235
+ });
236
+ });
237
+ PageHeaderCover.displayName = 'PageHeader.Cover';
238
+ /**
239
+ * The face, in a ring of whatever surface is behind it.
240
+ *
241
+ * The badge is drawn here rather than with `Avatar.Badge` because that one is
242
+ * pinned to the top corner, where an unread count belongs. A verification mark
243
+ * belongs at the bottom, beside the name it is vouching for.
244
+ */
245
+ const PageHeaderAvatar = /*#__PURE__*/forwardRef(({
246
+ className,
247
+ size = 'xl',
248
+ verified,
249
+ badge,
250
+ overlap,
251
+ source,
252
+ fallback,
253
+ imageProps,
254
+ children,
255
+ style,
256
+ ...props
257
+ }, ref) => {
258
+ const {
259
+ variant,
260
+ align,
261
+ hasCover
262
+ } = usePageHeader('PageHeader.Avatar');
263
+ const inRow = useContext(PageHeaderRowContext);
264
+ const slots = pageHeaderVariants({
265
+ variant,
266
+ align
267
+ });
268
+ const primary = useCSSVariable('--color-primary');
269
+ const onPrimary = useCSSVariable('--color-primary-foreground');
270
+ const diameter = AVATAR_SIZE_POINTS[size] ?? AVATAR_SIZE_POINTS.xl;
271
+ const lifts = overlap ?? hasCover;
272
+ const mark = badge ?? (verified ? /*#__PURE__*/_jsx(BadgeCheckIcon, {
273
+ size: Math.round(diameter * BADGE_RATIO),
274
+ color: typeof primary === 'string' ? primary : '#2563eb',
275
+ checkColor: typeof onPrimary === 'string' ? onPrimary : '#ffffff'
276
+ }) : null);
277
+ return /*#__PURE__*/_jsxs(View, {
278
+ ...props,
279
+ ref: ref
280
+ // Inside a row the row is already holding the inset and the alignment;
281
+ // repeating them here would indent the face past the text under it.
282
+ ,
283
+ className: inRow ? cn('self-start', className) : slots.avatar({
284
+ className
285
+ }),
286
+ style: [lifts ? {
287
+ marginTop: -Math.round(diameter / 2)
288
+ } : null, style],
289
+ children: [/*#__PURE__*/_jsx(View, {
290
+ className: slots.ring(),
291
+ style:
292
+ // With a face inside, the ring is the face plus its own border.
293
+ // With anything else there is nothing to measure, so the ring is
294
+ // given the size the face would have made.
295
+ children ? {
296
+ borderWidth: AVATAR_RING,
297
+ width: diameter + AVATAR_RING * 2,
298
+ height: diameter + AVATAR_RING * 2
299
+ } : {
300
+ borderWidth: AVATAR_RING
301
+ },
302
+ children: children ?? /*#__PURE__*/_jsx(Avatar, {
303
+ size: size,
304
+ source: source,
305
+ fallback: fallback,
306
+ imageProps: imageProps,
307
+ className: "border-0"
308
+ })
309
+ }), mark ? /*#__PURE__*/_jsx(View, {
310
+ className: "absolute bottom-0.5 end-0.5",
311
+ children: mark
312
+ }) : null]
313
+ });
314
+ });
315
+ PageHeaderAvatar.displayName = 'PageHeader.Avatar';
316
+ /**
317
+ * The face, and whatever sits beside it. For the profile that puts its counts
318
+ * next to the picture rather than under the name.
319
+ */
320
+ const PageHeaderRow = /*#__PURE__*/forwardRef(({
321
+ className,
322
+ children,
323
+ ...props
324
+ }, ref) => {
325
+ const {
326
+ variant,
327
+ align
328
+ } = usePageHeader('PageHeader.Row');
329
+ return /*#__PURE__*/_jsx(View, {
330
+ ...props,
331
+ ref: ref,
332
+ className: pageHeaderVariants({
333
+ variant,
334
+ align
335
+ }).row({
336
+ className
337
+ }),
338
+ children: /*#__PURE__*/_jsx(PageHeaderRowContext.Provider, {
339
+ value: true,
340
+ children: children
341
+ })
342
+ });
343
+ });
344
+ PageHeaderRow.displayName = 'PageHeader.Row';
345
+ /** The text block: the name, the handle, and anything under them. */
346
+ const PageHeaderContent = /*#__PURE__*/forwardRef(({
347
+ className,
348
+ children,
349
+ ...props
350
+ }, ref) => {
351
+ const {
352
+ variant,
353
+ align
354
+ } = usePageHeader('PageHeader.Content');
355
+ return /*#__PURE__*/_jsx(View, {
356
+ ...props,
357
+ ref: ref,
358
+ className: pageHeaderVariants({
359
+ variant,
360
+ align
361
+ }).content({
362
+ className
363
+ }),
364
+ children: textChildren(children)
365
+ });
366
+ });
367
+ PageHeaderContent.displayName = 'PageHeader.Content';
368
+
369
+ /** Whose page it is. Announces itself as a heading. */
370
+ const PageHeaderTitle = /*#__PURE__*/forwardRef(({
371
+ className,
372
+ ...props
373
+ }, ref) => /*#__PURE__*/_jsx(Text, {
374
+ ...props,
375
+ ref: ref,
376
+ size: "xl",
377
+ weight: "semibold",
378
+ accessibilityRole: "header",
379
+ className: cn('text-foreground', className)
380
+ }));
381
+ PageHeaderTitle.displayName = 'PageHeader.Title';
382
+
383
+ /** The handle, the email, the bio — the quiet line under the name. */
384
+ const PageHeaderDescription = /*#__PURE__*/forwardRef(({
385
+ className,
386
+ ...props
387
+ }, ref) => /*#__PURE__*/_jsx(Text, {
388
+ ...props,
389
+ ref: ref,
390
+ size: "sm",
391
+ muted: true,
392
+ className: className
393
+ }));
394
+ PageHeaderDescription.displayName = 'PageHeader.Description';
395
+ /**
396
+ * One fact about the account — a link, a location, the month it was opened.
397
+ */
398
+ const PageHeaderMeta = /*#__PURE__*/forwardRef(({
399
+ className,
400
+ icon,
401
+ children,
402
+ ...props
403
+ }, ref) => {
404
+ const {
405
+ variant,
406
+ align
407
+ } = usePageHeader('PageHeader.Meta');
408
+ const muted = useCSSVariable('--color-muted-foreground');
409
+ return /*#__PURE__*/_jsxs(View, {
410
+ ...props,
411
+ ref: ref,
412
+ className: pageHeaderVariants({
413
+ variant,
414
+ align
415
+ }).meta({
416
+ className
417
+ }),
418
+ children: [icon ? /*#__PURE__*/_jsx(IconColorProvider, {
419
+ color: typeof muted === 'string' ? muted : undefined,
420
+ children: icon
421
+ }) : null, textChildren(children, text => /*#__PURE__*/_jsx(Text, {
422
+ size: "sm",
423
+ muted: true,
424
+ children: text
425
+ }))]
426
+ });
427
+ });
428
+ PageHeaderMeta.displayName = 'PageHeader.Meta';
429
+
430
+ /** How a stats row reads its numbers out. */
431
+
432
+ /**
433
+ * The row of counts.
434
+ *
435
+ * Centred and stacked, the counts take equal widths across the full row. Left
436
+ * to their content they are centred as a block but not as figures: "Followers"
437
+ * is twice the width of "Posts", so the middle count sits off the centre line
438
+ * the name and the buttons are on, and the row reads as very slightly wrong
439
+ * without it being obvious why.
440
+ */
441
+ const PageHeaderStats = /*#__PURE__*/forwardRef(({
442
+ className,
443
+ layout = 'stacked',
444
+ divided,
445
+ children,
446
+ ...props
447
+ }, ref) => {
448
+ const {
449
+ variant,
450
+ align
451
+ } = usePageHeader('PageHeader.Stats');
452
+ const stacked = layout === 'stacked';
453
+ const measured = stacked && align === 'center';
454
+
455
+ // React Native has no `:first-child`, so the rule between two counts
456
+ // cannot be a style rule. Place it on every count but the first.
457
+ const items = divided || measured ? Children.map(children, (child, index) => {
458
+ if (! /*#__PURE__*/isValidElement(child)) return child;
459
+ if (child.type !== PageHeaderStat) return child;
460
+ const next = {};
461
+ if (divided && child.props.divided === undefined) {
462
+ next.divided = index > 0;
463
+ }
464
+ if (measured) {
465
+ next.className = cn('flex-1', child.props.className);
466
+ }
467
+ return /*#__PURE__*/cloneElement(child, next);
468
+ }) : children;
469
+ return /*#__PURE__*/_jsx(View, {
470
+ ...props,
471
+ ref: ref,
472
+ className: pageHeaderVariants({
473
+ variant,
474
+ align
475
+ }).stats({
476
+ className: cn(stacked ? 'gap-6' : 'gap-4', measured && 'w-full', className)
477
+ }),
478
+ children: /*#__PURE__*/_jsx(PageHeaderStatsContext.Provider, {
479
+ value: layout,
480
+ children: items
481
+ })
482
+ });
483
+ });
484
+ PageHeaderStats.displayName = 'PageHeader.Stats';
485
+ /**
486
+ * One count. Announced as a single thing — "533 Followers" — because a figure
487
+ * and its label read apart are two pieces of nothing.
488
+ */
489
+ const PageHeaderStat = /*#__PURE__*/forwardRef(({
490
+ className,
491
+ value,
492
+ label,
493
+ divided,
494
+ onPress,
495
+ accessibilityLabel,
496
+ ...props
497
+ }, ref) => {
498
+ const layout = useContext(PageHeaderStatsContext);
499
+ const inline = layout === 'inline';
500
+ const spoken = accessibilityLabel ?? (isSpeakable(value) && isSpeakable(label) ? `${value} ${label}` : undefined);
501
+ const classes = cn(inline ? 'flex-row items-center gap-1' : 'items-center gap-0.5', divided && 'border-s border-border ps-4', className);
502
+ const body = /*#__PURE__*/_jsxs(_Fragment, {
503
+ children: [/*#__PURE__*/_jsx(Text, {
504
+ size: "sm",
505
+ weight: "semibold",
506
+ children: value
507
+ }), /*#__PURE__*/_jsx(Text, {
508
+ size: "sm",
509
+ muted: true,
510
+ children: label
511
+ })]
512
+ });
513
+ if (!onPress) {
514
+ return /*#__PURE__*/_jsx(View, {
515
+ ...props,
516
+ ref: ref,
517
+ accessible: true,
518
+ accessibilityLabel: spoken,
519
+ className: classes,
520
+ children: body
521
+ });
522
+ }
523
+ return /*#__PURE__*/_jsx(AnimatedPressable, {
524
+ ...props,
525
+ ref: ref,
526
+ accessibilityRole: "button",
527
+ accessibilityLabel: spoken,
528
+ onPress: onPress,
529
+ className: classes,
530
+ children: body
531
+ });
532
+ });
533
+ PageHeaderStat.displayName = 'PageHeader.Stat';
534
+
535
+ /** Whether a node can be read into an accessibility label as it stands. */
536
+ function isSpeakable(node) {
537
+ return typeof node === 'string' || typeof node === 'number';
538
+ }
539
+ /**
540
+ * What you can do about the account. Give the buttons `className="flex-1"` for
541
+ * the pair that splits the width evenly.
542
+ */
543
+ const PageHeaderActions = /*#__PURE__*/forwardRef(({
544
+ className,
545
+ children,
546
+ ...props
547
+ }, ref) => {
548
+ const {
549
+ variant,
550
+ align
551
+ } = usePageHeader('PageHeader.Actions');
552
+ return /*#__PURE__*/_jsx(View, {
553
+ ...props,
554
+ ref: ref,
555
+ className: pageHeaderVariants({
556
+ variant,
557
+ align
558
+ }).actions({
559
+ className
560
+ }),
561
+ children: textChildren(children)
562
+ });
563
+ });
564
+ PageHeaderActions.displayName = 'PageHeader.Actions';
565
+ export const PageHeader = Object.assign(PageHeaderRoot, {
566
+ Cover: PageHeaderCover,
567
+ Avatar: PageHeaderAvatar,
568
+ Row: PageHeaderRow,
569
+ Content: PageHeaderContent,
570
+ Title: PageHeaderTitle,
571
+ Description: PageHeaderDescription,
572
+ Meta: PageHeaderMeta,
573
+ Stats: PageHeaderStats,
574
+ Stat: PageHeaderStat,
575
+ Actions: PageHeaderActions
576
+ });
577
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Children","cloneElement","createContext","forwardRef","isValidElement","useContext","useMemo","Image","StyleSheet","View","LinearGradient","tv","useCSSVariable","AnimatedPressable","Text","textChildren","cn","BadgeCheckIcon","IconColorProvider","Avatar","AVATAR_SIZE_POINTS","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","COVER_HEIGHT","AVATAR_RING","BADGE_RATIO","GRADIENT","GRADIENT_FALLBACK","pageHeaderVariants","slots","root","cover","avatar","ring","row","content","meta","stats","actions","variants","variant","card","page","align","start","center","defaultVariants","PageHeaderContext","undefined","usePageHeader","component","context","Error","PageHeaderRowContext","PageHeaderStatsContext","PageHeaderRoot","className","children","props","ref","hasCover","toArray","some","child","type","PageHeaderCover","Provider","value","displayName","source","height","colors","alt","style","from","to","ramp","resizeMode","absoluteFill","accessible","accessibilityRole","accessibilityLabel","x","y","end","accessibilityElementsHidden","importantForAccessibility","PageHeaderAvatar","size","verified","badge","overlap","fallback","imageProps","inRow","primary","onPrimary","diameter","xl","lifts","mark","Math","round","color","checkColor","marginTop","borderWidth","width","PageHeaderRow","PageHeaderContent","PageHeaderTitle","weight","PageHeaderDescription","muted","PageHeaderMeta","icon","text","PageHeaderStats","layout","divided","stacked","measured","items","map","index","PageHeaderStat","next","label","onPress","inline","spoken","isSpeakable","classes","body","node","PageHeaderActions","PageHeader","Object","assign","Cover","Row","Content","Title","Description","Meta","Stats","Stat","Actions"],"sourceRoot":"../../../../src","sources":["components/page-header/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -30,6 +30,7 @@ const RESTING_OPACITY = 0.7;
30
30
  */
31
31
  export const Skeleton = /*#__PURE__*/memo(function Skeleton({
32
32
  className,
33
+ style,
33
34
  label
34
35
  }) {
35
36
  const reducedMotion = useReducedMotion();
@@ -57,7 +58,7 @@ export const Skeleton = /*#__PURE__*/memo(function Skeleton({
57
58
  } : undefined,
58
59
  accessibilityElementsHidden: !announced,
59
60
  importantForAccessibility: announced ? 'auto' : 'no-hide-descendants',
60
- style: animatedStyle,
61
+ style: [style, animatedStyle],
61
62
  className: cn('rounded-md bg-skeleton', className)
62
63
  });
63
64
  });
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useEffect","Animated","cancelAnimation","useAnimatedStyle","useReducedMotion","useSharedValue","withRepeat","withTiming","cn","jsx","_jsx","PULSE_DURATION","PULSE_FLOOR","RESTING_OPACITY","Skeleton","className","label","reducedMotion","opacity","value","undefined","duration","animatedStyle","announced","View","accessibilityRole","accessibilityLabel","accessibilityState","busy","accessibilityElementsHidden","importantForAccessibility","style"],"sourceRoot":"../../../../src","sources":["components/skeleton/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,SAAS,QAAQ,OAAO;AACvC,OAAOC,QAAQ,IACbC,eAAe,EACfC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,UAAU,QACL,yBAAyB;AAChC,SAASC,EAAE,QAAQ,mBAAgB;;AAEnC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,MAAMC,cAAc,GAAG,GAAG;AAC1B;AACA,MAAMC,WAAW,GAAG,IAAI;AACxB;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAG,GAAG;AAgB3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,gBAAGf,IAAI,CAAC,SAASe,QAAQA,CAAC;EAC7CC,SAAS;EACTC;AACa,CAAC,EAAE;EAChB,MAAMC,aAAa,GAAGb,gBAAgB,CAAC,CAAC;EACxC,MAAMc,OAAO,GAAGb,cAAc,CAACY,aAAa,GAAGJ,eAAe,GAAG,CAAC,CAAC;EAEnEb,SAAS,CAAC,MAAM;IACd,IAAIiB,aAAa,EAAE;MACjBC,OAAO,CAACC,KAAK,GAAGN,eAAe;MAC/B,OAAOO,SAAS;IAClB;IACAF,OAAO,CAACC,KAAK,GAAG,CAAC;IACjBD,OAAO,CAACC,KAAK,GAAGb,UAAU,CACxBC,UAAU,CAACK,WAAW,EAAE;MAAES,QAAQ,EAAEV;IAAe,CAAC,CAAC,EACrD,CAAC,CAAC,EACF,IACF,CAAC;IACD,OAAO,MAAMT,eAAe,CAACgB,OAAO,CAAC;EACvC,CAAC,EAAE,CAACA,OAAO,EAAED,aAAa,CAAC,CAAC;EAE5B,MAAMK,aAAa,GAAGnB,gBAAgB,CAAC,OAAO;IAC5Ce,OAAO,EAAEA,OAAO,CAACC;EACnB,CAAC,CAAC,CAAC;EAEH,MAAMI,SAAS,GAAGP,KAAK,IAAI,IAAI;EAE/B,oBACEN,IAAA,CAACT,QAAQ,CAACuB,IAAI;IACZC,iBAAiB,EAAEF,SAAS,GAAG,aAAa,GAAGH,SAAU;IACzDM,kBAAkB,EAAEV,KAAM;IAC1BW,kBAAkB,EAAEJ,SAAS,GAAG;MAAEK,IAAI,EAAE;IAAK,CAAC,GAAGR,SAAU;IAC3DS,2BAA2B,EAAE,CAACN,SAAU;IACxCO,yBAAyB,EAAEP,SAAS,GAAG,MAAM,GAAG,qBAAsB;IACtEQ,KAAK,EAAET,aAAc;IACrBP,SAAS,EAAEP,EAAE,CAAC,wBAAwB,EAAEO,SAAS;EAAE,CACpD,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["memo","useEffect","Animated","cancelAnimation","useAnimatedStyle","useReducedMotion","useSharedValue","withRepeat","withTiming","cn","jsx","_jsx","PULSE_DURATION","PULSE_FLOOR","RESTING_OPACITY","Skeleton","className","style","label","reducedMotion","opacity","value","undefined","duration","animatedStyle","announced","View","accessibilityRole","accessibilityLabel","accessibilityState","busy","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../src","sources":["components/skeleton/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,SAAS,QAAQ,OAAO;AAEvC,OAAOC,QAAQ,IACbC,eAAe,EACfC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,UAAU,QACL,yBAAyB;AAChC,SAASC,EAAE,QAAQ,mBAAgB;;AAEnC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,MAAMC,cAAc,GAAG,GAAG;AAC1B;AACA,MAAMC,WAAW,GAAG,IAAI;AACxB;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAG,GAAG;AAwB3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,gBAAGf,IAAI,CAAC,SAASe,QAAQA,CAAC;EAC7CC,SAAS;EACTC,KAAK;EACLC;AACa,CAAC,EAAE;EAChB,MAAMC,aAAa,GAAGd,gBAAgB,CAAC,CAAC;EACxC,MAAMe,OAAO,GAAGd,cAAc,CAACa,aAAa,GAAGL,eAAe,GAAG,CAAC,CAAC;EAEnEb,SAAS,CAAC,MAAM;IACd,IAAIkB,aAAa,EAAE;MACjBC,OAAO,CAACC,KAAK,GAAGP,eAAe;MAC/B,OAAOQ,SAAS;IAClB;IACAF,OAAO,CAACC,KAAK,GAAG,CAAC;IACjBD,OAAO,CAACC,KAAK,GAAGd,UAAU,CACxBC,UAAU,CAACK,WAAW,EAAE;MAAEU,QAAQ,EAAEX;IAAe,CAAC,CAAC,EACrD,CAAC,CAAC,EACF,IACF,CAAC;IACD,OAAO,MAAMT,eAAe,CAACiB,OAAO,CAAC;EACvC,CAAC,EAAE,CAACA,OAAO,EAAED,aAAa,CAAC,CAAC;EAE5B,MAAMK,aAAa,GAAGpB,gBAAgB,CAAC,OAAO;IAC5CgB,OAAO,EAAEA,OAAO,CAACC;EACnB,CAAC,CAAC,CAAC;EAEH,MAAMI,SAAS,GAAGP,KAAK,IAAI,IAAI;EAE/B,oBACEP,IAAA,CAACT,QAAQ,CAACwB,IAAI;IACZC,iBAAiB,EAAEF,SAAS,GAAG,aAAa,GAAGH,SAAU;IACzDM,kBAAkB,EAAEV,KAAM;IAC1BW,kBAAkB,EAAEJ,SAAS,GAAG;MAAEK,IAAI,EAAE;IAAK,CAAC,GAAGR,SAAU;IAC3DS,2BAA2B,EAAE,CAACN,SAAU;IACxCO,yBAAyB,EAAEP,SAAS,GAAG,MAAM,GAAG,qBAAsB;IACtER,KAAK,EAAE,CAACA,KAAK,EAAEO,aAAa,CAAE;IAC9BR,SAAS,EAAEP,EAAE,CAAC,wBAAwB,EAAEO,SAAS;EAAE,CACpD,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
@@ -84,6 +84,7 @@ export { OtpInput } from "./components/otp-input/index.js";
84
84
  export { SearchBar } from "./components/search-bar/index.js";
85
85
  export { Panelside, usePanelside } from "./components/panelside/index.js";
86
86
  export { Pagination, paginationRange } from "./components/pagination/index.js";
87
+ export { PageHeader } from "./components/page-header/index.js";
87
88
  export { PieChart, usePieChart } from "./components/pie-chart/index.js";
88
89
  export { LiveLineChart, useLiveLineChart } from "./components/live-line-chart/index.js";
89
90
  export { BubbleChart, useBubbleChart } from "./components/bubble-chart/index.js";