@expokit/cli 0.4.3 → 0.5.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 (242) hide show
  1. package/README.md +30 -3
  2. package/bin/expo-kit.js +749 -288
  3. package/bin/lib.mjs +313 -4
  4. package/package.json +1 -1
  5. package/registry/_docs/action-sheet.json +1 -1
  6. package/registry/_docs/alert.json +6 -0
  7. package/registry/_docs/bottom-sheet.json +6 -0
  8. package/registry/_docs/bullet.json +6 -0
  9. package/registry/_docs/dialog.json +1 -1
  10. package/registry/_docs/drawer.json +3 -3
  11. package/registry/_docs/flip-calendar.json +106 -0
  12. package/registry/_docs/glass-search-bar.json +1 -1
  13. package/registry/_docs/grain.json +6 -1
  14. package/registry/_docs/isometric-bar.json +6 -0
  15. package/registry/_docs/liquidglass-tab.json +1 -1
  16. package/registry/_docs/password-input.json +1 -1
  17. package/registry/_docs/paywall.json +144 -0
  18. package/registry/_docs/pixel-bar.json +6 -0
  19. package/registry/_docs/polar-area.json +6 -0
  20. package/registry/_docs/qr-code-button.json +9 -3
  21. package/registry/_docs/ruler-time-picker.json +147 -0
  22. package/registry/_docs/scratch-card.json +7 -1
  23. package/registry/_docs/search-bar.json +1 -1
  24. package/registry/_docs/select.json +2 -2
  25. package/registry/_docs/slide-to-confirm.json +2 -2
  26. package/registry/_docs/spinner.json +1 -1
  27. package/registry/_docs/stateful-button.json +2 -2
  28. package/registry/_docs/swipe-deck.json +1 -1
  29. package/registry/_docs/time-picker.json +2 -2
  30. package/registry/_docs/timeline-chart.json +6 -0
  31. package/registry/_docs/toast.json +15 -3
  32. package/registry/_docs/treemap.json +6 -0
  33. package/registry/_docs/waterfall.json +6 -0
  34. package/registry/accordion/files/src/components/ui/accordion.tsx +6 -4
  35. package/registry/accordion/files/src/lib/kit.tsx +462 -12
  36. package/registry/accordion.json +1 -0
  37. package/registry/action-sheet/files/src/components/ui/action-sheet.tsx +50 -58
  38. package/registry/action-sheet/files/src/lib/kit.tsx +462 -12
  39. package/registry/action-sheet.json +1 -0
  40. package/registry/alert/files/src/components/ui/alert.tsx +20 -13
  41. package/registry/alert/files/src/lib/kit.tsx +462 -12
  42. package/registry/alert.json +3 -4
  43. package/registry/assistant-app.json +1 -0
  44. package/registry/avatar/files/src/components/ui/avatar.tsx +89 -74
  45. package/registry/avatar/files/src/lib/kit.tsx +462 -12
  46. package/registry/avatar.json +1 -0
  47. package/registry/badge/files/src/components/ui/badge.tsx +36 -36
  48. package/registry/badge/files/src/lib/kit.tsx +462 -12
  49. package/registry/badge.json +1 -0
  50. package/registry/bottom-nav/files/src/components/ui/bottom-nav.tsx +39 -44
  51. package/registry/bottom-nav/files/src/lib/kit.tsx +462 -12
  52. package/registry/bottom-nav.json +5 -0
  53. package/registry/bottom-sheet/files/src/components/ui/bottom-sheet.tsx +357 -300
  54. package/registry/bottom-sheet/files/src/lib/kit.tsx +462 -12
  55. package/registry/bottom-sheet.json +5 -1
  56. package/registry/bullet.json +1 -0
  57. package/registry/button/files/src/components/ui/button.tsx +23 -34
  58. package/registry/button/files/src/lib/kit.tsx +462 -12
  59. package/registry/button-3d/files/src/components/ui/button-3d.tsx +6 -9
  60. package/registry/button-3d/files/src/lib/kit.tsx +462 -12
  61. package/registry/button-3d.json +1 -0
  62. package/registry/button.json +1 -0
  63. package/registry/calendar/files/src/components/ui/calendar.tsx +77 -79
  64. package/registry/calendar/files/src/lib/kit.tsx +462 -12
  65. package/registry/calendar.json +1 -0
  66. package/registry/card/files/src/components/ui/card.tsx +7 -6
  67. package/registry/card/files/src/lib/kit.tsx +462 -12
  68. package/registry/card-stack.json +1 -0
  69. package/registry/card.json +1 -0
  70. package/registry/carousel.json +1 -0
  71. package/registry/chat.json +7 -0
  72. package/registry/checkbox/files/src/components/ui/checkbox.tsx +4 -4
  73. package/registry/checkbox/files/src/lib/kit.tsx +462 -12
  74. package/registry/checkbox.json +1 -0
  75. package/registry/checkout.json +1 -0
  76. package/registry/chip-group/files/src/components/ui/chip-group.tsx +24 -24
  77. package/registry/chip-group/files/src/lib/kit.tsx +462 -12
  78. package/registry/chip-group.json +1 -0
  79. package/registry/confetti/files/src/components/ui/confetti.tsx +15 -14
  80. package/registry/confetti.json +3 -6
  81. package/registry/coupon/files/src/components/ui/coupon.tsx +47 -52
  82. package/registry/coupon/files/src/components/ui/flip-card.tsx +9 -14
  83. package/registry/coupon/files/src/components/ui/tilt-card.tsx +80 -101
  84. package/registry/coupon/files/src/lib/kit.tsx +462 -12
  85. package/registry/coupon/files/src/lib/ticket-shape.tsx +54 -44
  86. package/registry/coupon.json +1 -0
  87. package/registry/cube-pager.json +1 -0
  88. package/registry/dashboard.json +1 -0
  89. package/registry/date-picker/files/src/components/ui/calendar.tsx +77 -79
  90. package/registry/date-picker/files/src/components/ui/date-picker.tsx +64 -71
  91. package/registry/date-picker/files/src/lib/kit.tsx +462 -12
  92. package/registry/date-picker.json +1 -0
  93. package/registry/dialog/files/src/components/ui/dialog.tsx +66 -68
  94. package/registry/dialog/files/src/lib/kit.tsx +462 -12
  95. package/registry/dialog.json +1 -0
  96. package/registry/donut-shop.json +1 -0
  97. package/registry/drawer/files/src/components/ui/drawer.tsx +76 -88
  98. package/registry/drawer/files/src/lib/kit.tsx +462 -12
  99. package/registry/drawer.json +1 -0
  100. package/registry/fab.json +1 -0
  101. package/registry/fintech-app.json +1 -0
  102. package/registry/flip-calendar/files/src/components/ui/flip-calendar.tsx +632 -0
  103. package/registry/flip-calendar/files/src/lib/kit.tsx +672 -0
  104. package/registry/flip-calendar.json +24 -0
  105. package/registry/flip-card/files/src/components/ui/flip-card.tsx +9 -14
  106. package/registry/flip-card/files/src/lib/kit.tsx +462 -12
  107. package/registry/flip-card.json +1 -0
  108. package/registry/floating-input/files/src/components/ui/floating-input.tsx +33 -33
  109. package/registry/floating-input/files/src/lib/kit.tsx +462 -12
  110. package/registry/floating-input.json +1 -0
  111. package/registry/food-app.json +1 -0
  112. package/registry/gift-card.json +1 -0
  113. package/registry/glass-button.json +5 -0
  114. package/registry/glass-nav-bar.json +1 -0
  115. package/registry/glass-search-bar.json +1 -0
  116. package/registry/glass-segmented.json +1 -0
  117. package/registry/glass-sheet.json +1 -0
  118. package/registry/glass-tab-bar.json +5 -0
  119. package/registry/glass.json +1 -0
  120. package/registry/grain/files/src/components/ui/grain.tsx +16 -14
  121. package/registry/grain.json +8 -6
  122. package/registry/inbox.json +1 -0
  123. package/registry/isometric-bar.json +1 -0
  124. package/registry/kit/files/src/lib/kit.tsx +462 -12
  125. package/registry/kit.json +1 -0
  126. package/registry/liquidglass-tab/files/src/app/_layout.tsx +0 -1
  127. package/registry/liquidglass-tab/files/src/components/GlassTabBar.tsx +29 -16
  128. package/registry/liquidglass-tab/files/src/components/TabScreen.tsx +33 -19
  129. package/registry/liquidglass-tab/files/src/lib/tab-icons.ts +1 -1
  130. package/registry/liquidglass-tab.json +1 -0
  131. package/registry/list-item/files/src/components/ui/list-item.tsx +43 -43
  132. package/registry/list-item/files/src/lib/kit.tsx +462 -12
  133. package/registry/list-item.json +1 -0
  134. package/registry/loyalty-card.json +1 -0
  135. package/registry/morphing-button-group.json +1 -0
  136. package/registry/number-ticker.json +1 -0
  137. package/registry/offers.json +1 -0
  138. package/registry/onboarding.json +1 -0
  139. package/registry/orb-reveal.json +1 -0
  140. package/registry/otp-input/files/src/components/ui/otp-input.tsx +49 -30
  141. package/registry/otp-input/files/src/lib/kit.tsx +462 -12
  142. package/registry/otp-input.json +1 -0
  143. package/registry/parallax-layers.json +1 -0
  144. package/registry/parallax-scroll.json +1 -0
  145. package/registry/password-input/files/src/components/ui/floating-input.tsx +33 -33
  146. package/registry/password-input/files/src/components/ui/password-input.tsx +29 -25
  147. package/registry/password-input/files/src/lib/kit.tsx +462 -12
  148. package/registry/password-input.json +1 -0
  149. package/registry/payment-card/files/src/components/ui/flip-card.tsx +9 -14
  150. package/registry/payment-card/files/src/components/ui/payment-card.tsx +26 -20
  151. package/registry/payment-card/files/src/components/ui/tilt-card.tsx +80 -101
  152. package/registry/payment-card/files/src/lib/kit.tsx +462 -12
  153. package/registry/payment-card.json +1 -0
  154. package/registry/paywall.json +23 -0
  155. package/registry/pixel-bar.json +1 -0
  156. package/registry/polar-area.json +1 -0
  157. package/registry/profile.json +1 -0
  158. package/registry/progress/files/src/components/ui/progress.tsx +31 -29
  159. package/registry/progress/files/src/lib/kit.tsx +462 -12
  160. package/registry/progress-steps/files/src/components/ui/progress-steps.tsx +21 -21
  161. package/registry/progress-steps/files/src/lib/kit.tsx +462 -12
  162. package/registry/progress-steps.json +1 -0
  163. package/registry/progress.json +1 -0
  164. package/registry/qr-code-button.json +1 -0
  165. package/registry/radio-group/files/src/components/ui/radio-group.tsx +19 -19
  166. package/registry/radio-group/files/src/lib/kit.tsx +462 -12
  167. package/registry/radio-group.json +1 -0
  168. package/registry/rating.json +1 -0
  169. package/registry/ring-carousel.json +1 -0
  170. package/registry/ruler-time-picker/files/src/components/ui/ruler-time-picker.tsx +832 -0
  171. package/registry/ruler-time-picker/files/src/lib/kit.tsx +672 -0
  172. package/registry/ruler-time-picker.json +26 -0
  173. package/registry/scratch-card.json +1 -0
  174. package/registry/search-bar/files/src/components/ui/search-bar.tsx +28 -28
  175. package/registry/search-bar/files/src/lib/kit.tsx +462 -12
  176. package/registry/search-bar.json +1 -0
  177. package/registry/search-results.json +4 -0
  178. package/registry/segmented-control/files/src/components/ui/segmented-control.tsx +11 -17
  179. package/registry/segmented-control/files/src/lib/kit.tsx +462 -12
  180. package/registry/segmented-control.json +1 -0
  181. package/registry/select/files/src/components/ui/select.tsx +107 -104
  182. package/registry/select/files/src/lib/kit.tsx +462 -12
  183. package/registry/select.json +6 -0
  184. package/registry/settings.json +1 -0
  185. package/registry/sign-in.json +1 -0
  186. package/registry/skeleton/files/src/components/ui/skeleton.tsx +149 -80
  187. package/registry/skeleton/files/src/lib/kit.tsx +462 -12
  188. package/registry/skeleton.json +1 -0
  189. package/registry/slide-to-confirm.json +1 -0
  190. package/registry/slider/files/src/components/ui/slider.tsx +106 -108
  191. package/registry/slider/files/src/lib/kit.tsx +462 -12
  192. package/registry/slider.json +5 -0
  193. package/registry/spin-wheel.json +1 -0
  194. package/registry/spinner/files/src/components/ui/spinner.tsx +39 -29
  195. package/registry/spinner/files/src/lib/kit.tsx +462 -12
  196. package/registry/spinner.json +6 -0
  197. package/registry/stateful-button/files/src/components/ui/stateful-button.tsx +39 -32
  198. package/registry/stateful-button/files/src/lib/kit.tsx +462 -12
  199. package/registry/stateful-button.json +5 -0
  200. package/registry/stepper/files/src/components/ui/stepper.tsx +40 -38
  201. package/registry/stepper/files/src/lib/kit.tsx +462 -12
  202. package/registry/stepper.json +1 -0
  203. package/registry/swipe-deck.json +1 -0
  204. package/registry/swipeable-row.json +4 -0
  205. package/registry/switch/files/src/components/ui/switch.tsx +41 -47
  206. package/registry/switch/files/src/lib/kit.tsx +462 -12
  207. package/registry/switch.json +1 -0
  208. package/registry/tabs/files/src/components/ui/tabs.tsx +61 -64
  209. package/registry/tabs/files/src/lib/kit.tsx +462 -12
  210. package/registry/tabs.json +1 -0
  211. package/registry/text-animation/files/src/components/ui/text-animation.tsx +55 -42
  212. package/registry/text-animation/files/src/lib/kit.tsx +462 -12
  213. package/registry/text-animation.json +7 -0
  214. package/registry/textarea/files/src/components/ui/textarea.tsx +10 -10
  215. package/registry/textarea/files/src/lib/kit.tsx +462 -12
  216. package/registry/textarea.json +1 -0
  217. package/registry/ticket-card.json +1 -0
  218. package/registry/ticket-shape/files/src/lib/kit.tsx +462 -12
  219. package/registry/ticket-shape/files/src/lib/ticket-shape.tsx +54 -44
  220. package/registry/ticket-shape.json +1 -0
  221. package/registry/tilt-card/files/src/components/ui/tilt-card.tsx +80 -101
  222. package/registry/tilt-card/files/src/lib/kit.tsx +462 -12
  223. package/registry/tilt-card.json +1 -0
  224. package/registry/time-picker/files/src/components/ui/time-picker.tsx +136 -131
  225. package/registry/time-picker/files/src/lib/kit.tsx +462 -12
  226. package/registry/time-picker.json +1 -0
  227. package/registry/timeline/files/src/components/ui/avatar.tsx +89 -74
  228. package/registry/timeline/files/src/components/ui/timeline.tsx +49 -57
  229. package/registry/timeline/files/src/lib/kit.tsx +462 -12
  230. package/registry/timeline-chart.json +1 -0
  231. package/registry/timeline.json +1 -0
  232. package/registry/toast/files/src/components/ui/toast.tsx +543 -465
  233. package/registry/toast/files/src/lib/kit.tsx +462 -12
  234. package/registry/toast.json +7 -5
  235. package/registry/treemap.json +1 -0
  236. package/registry/waterfall.json +1 -0
  237. package/registry/wheel-list.json +1 -0
  238. package/schema/components.schema.json +1 -0
  239. package/registry/alert/files/src/components/ui/button.tsx +0 -303
  240. package/registry/confetti/files/src/lib/kit.tsx +0 -222
  241. package/registry/grain/files/src/lib/kit.tsx +0 -222
  242. package/registry/toast/files/src/components/ui/button.tsx +0 -303
@@ -72,16 +72,16 @@ export function BadgeIcon({ name, color, size = 22 }: { name: BadgeIconName; col
72
72
 
73
73
  export interface BadgeIconTileProps {
74
74
  /** Built-in icon name. */
75
- name?: BadgeIconName;
75
+ name?: BadgeIconName | undefined;
76
76
  /** Your own icon node — overrides `name`. */
77
- icon?: React.ReactNode;
77
+ icon?: React.ReactNode | undefined;
78
78
  /** Tile size in points (default 48). */
79
- size?: number;
79
+ size?: number | undefined;
80
80
  /** Glyph colour (default: foreground). */
81
- color?: string;
81
+ color?: string | undefined;
82
82
  /** Tile background (default: muted). */
83
- backgroundColor?: string;
84
- style?: StyleProp<ViewStyle>;
83
+ backgroundColor?: string | undefined;
84
+ style?: StyleProp<ViewStyle> | undefined;
85
85
  }
86
86
 
87
87
  /** Rounded square anchor for `NotificationBadge` — pass a built-in `name` or your own `icon`. */
@@ -114,23 +114,23 @@ export type BadgeSize = 'sm' | 'md' | 'lg';
114
114
 
115
115
  export interface BadgeProps {
116
116
  children: React.ReactNode;
117
- variant?: BadgeVariant;
118
- tone?: BadgeTone;
119
- size?: BadgeSize;
117
+ variant?: BadgeVariant | undefined;
118
+ tone?: BadgeTone | undefined;
119
+ size?: BadgeSize | undefined;
120
120
  /** Custom colour — overrides `tone`. */
121
- color?: string;
121
+ color?: string | undefined;
122
122
  /** Icon or emoji before the label. */
123
- icon?: React.ReactNode;
123
+ icon?: React.ReactNode | undefined;
124
124
  /** 'pill' (default) or 'rounded' corners. */
125
- shape?: 'pill' | 'rounded';
125
+ shape?: 'pill' | 'rounded' | undefined;
126
126
  /** Pulse the leading dot (dot variant) — "live" states. */
127
- pulse?: boolean;
127
+ pulse?: boolean | undefined;
128
128
  /**
129
129
  * When the label, icon or colour changes: roll the old label up and the new one in, pop the icon,
130
130
  * cross-fade the colours and spring the width (default true). Never animates on mount.
131
131
  */
132
- animateChanges?: boolean;
133
- style?: StyleProp<ViewStyle>;
132
+ animateChanges?: boolean | undefined;
133
+ style?: StyleProp<ViewStyle> | undefined;
134
134
  }
135
135
 
136
136
  const SIZES: Record<BadgeSize, { h: number; px: number; font: number; dot: number; gap: number }> = {
@@ -296,7 +296,7 @@ export function Badge({
296
296
  const s = SIZES[size];
297
297
  const c = color ?? toneColor(colors, tone);
298
298
  const neutral = !color && tone === 'neutral';
299
- const pulseV = useRef(new Animated.Value(0)).current;
299
+ const [pulseV] = useState(() => new Animated.Value(0));
300
300
 
301
301
  useEffect(() => {
302
302
  if (!pulse || variant !== 'dot') return;
@@ -328,9 +328,9 @@ export function Badge({
328
328
  const [change, setChange] = useState<Change | null>(null);
329
329
  // While set, the pill keeps this width (number), then springs (Animated.Value) to the new content.
330
330
  const [pin, setPin] = useState<number | Animated.Value | null>(null);
331
- const natural = useRef<number | null>(null);
331
+ const [natural, setNatural] = useState<number | null>(null);
332
332
  const rowWidth = useRef<number | null>(null);
333
- const widthV = useRef(new Animated.Value(0)).current;
333
+ const [widthV] = useState(() => new Animated.Value(0));
334
334
  const flat = flattenView(style);
335
335
  const canSize = flat.width == null && flat.minWidth == null && flat.flex == null && flat.flexGrow == null && flat.alignSelf !== 'stretch';
336
336
 
@@ -351,7 +351,7 @@ export function Badge({
351
351
  }
352
352
  const animated = !!(next.text || next.icon || next.look);
353
353
  setChange(animated ? next : null);
354
- setPin(animated && (textChanged || iconChanged) && canSize && natural.current != null ? natural.current : null);
354
+ setPin(animated && (textChanged || iconChanged) && canSize && natural != null ? natural : null);
355
355
  }
356
356
 
357
357
  // Fresh values per change, so the first frame of a transition already sits at its start.
@@ -381,7 +381,7 @@ export function Badge({
381
381
  }, [change, anim]);
382
382
 
383
383
  const onRoot = (e: LayoutChangeEvent) => {
384
- if (pin == null) natural.current = e.nativeEvent.layout.width;
384
+ if (pin == null) setNatural(e.nativeEvent.layout.width);
385
385
  };
386
386
  // The icon + label row remounts on every change, so this always reports the new content's width.
387
387
  const onRow = (e: LayoutChangeEvent) => {
@@ -395,7 +395,7 @@ export function Badge({
395
395
  }
396
396
  const to = Math.max(0, pin + (w - prev));
397
397
  widthV.setValue(pin);
398
- natural.current = to;
398
+ setNatural(to);
399
399
  setPin(widthV);
400
400
  Animated.spring(widthV, { toValue: to, useNativeDriver: false, ...motion.snappy }).start(({ finished }) => {
401
401
  if (finished) setPin((p) => (p === widthV ? null : p));
@@ -514,20 +514,20 @@ export function Badge({
514
514
 
515
515
  export interface NotificationBadgeProps {
516
516
  /** The number to show. 0 hides the badge (unless `showZero`). */
517
- count?: number;
517
+ count?: number | undefined;
518
518
  /** Above this, show "99+". */
519
- max?: number;
519
+ max?: number | undefined;
520
520
  /** Just a dot, no number. */
521
- dot?: boolean;
522
- showZero?: boolean;
523
- tone?: BadgeTone;
524
- color?: string;
525
- size?: 'sm' | 'md';
521
+ dot?: boolean | undefined;
522
+ showZero?: boolean | undefined;
523
+ tone?: BadgeTone | undefined;
524
+ color?: string | undefined;
525
+ size?: 'sm' | 'md' | undefined;
526
526
  /** What the badge sits on (icon, avatar, button). Omit to render the badge inline. */
527
- children?: React.ReactNode;
527
+ children?: React.ReactNode | undefined;
528
528
  /** Nudge the badge from the top-right corner: [x, y] in points. */
529
- offset?: [number, number];
530
- style?: StyleProp<ViewStyle>;
529
+ offset?: [number, number] | undefined;
530
+ style?: StyleProp<ViewStyle> | undefined;
531
531
  }
532
532
 
533
533
  /** Count bubble that springs in, pops every time the number changes, and shrinks away at zero. */
@@ -551,12 +551,12 @@ export function NotificationBadge({
551
551
 
552
552
  // Keep the last number on screen while it shrinks away.
553
553
  const [shown, setShown] = useState(count);
554
- const show = useRef(new Animated.Value(visible ? 1 : 0)).current;
555
- const pop = useRef(new Animated.Value(1)).current;
554
+ const [show] = useState(() => new Animated.Value(visible ? 1 : 0));
555
+ const [pop] = useState(() => new Animated.Value(1));
556
556
  const prev = useRef(count);
557
+ if (visible && shown !== count) setShown(count);
557
558
 
558
559
  useEffect(() => {
559
- if (visible) setShown(count);
560
560
  Animated.spring(show, { toValue: visible ? 1 : 0, useNativeDriver: true, ...motion.bouncy }).start();
561
561
  if (visible && prev.current !== count && prev.current > 0) {
562
562
  pop.setValue(1.35);
@@ -626,7 +626,7 @@ function flattenView(style: StyleProp<ViewStyle>): ViewStyle {
626
626
 
627
627
  const styles = StyleSheet.create({
628
628
  base: { flexDirection: 'row', alignItems: 'center', alignSelf: 'flex-start', borderWidth: 1 },
629
- label: { fontWeight: '400', letterSpacing: 0.1 },
629
+ label: { fontWeight: '400', letterSpacing: 0.1, includeFontPadding: false, textAlignVertical: 'center' },
630
630
  row: { flexDirection: 'row', alignItems: 'center' },
631
631
  // Clips the roll; the 2pt slack (cancelled by negative margins) keeps overshoot and unkerned letters whole.
632
632
  clip: { overflow: 'hidden', padding: 2, margin: -2 },
@@ -636,5 +636,5 @@ const styles = StyleSheet.create({
636
636
  fill: { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 },
637
637
  anchor: { alignSelf: 'flex-start' },
638
638
  bubble: { alignItems: 'center', justifyContent: 'center', borderWidth: 2 },
639
- count: { fontWeight: '400', fontVariant: ['tabular-nums'], includeFontPadding: false },
639
+ count: { fontWeight: '400', fontVariant: ['tabular-nums'], includeFontPadding: false, textAlignVertical: 'center' },
640
640
  });