panelui-native 0.25.0 → 0.28.1

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 (193) hide show
  1. package/lib/module/components/accordion/index.js +8 -8
  2. package/lib/module/components/accordion/index.js.map +1 -1
  3. package/lib/module/components/alert/index.js +2 -2
  4. package/lib/module/components/alert/index.js.map +1 -1
  5. package/lib/module/components/area-chart/index.js +182 -50
  6. package/lib/module/components/area-chart/index.js.map +1 -1
  7. package/lib/module/components/attachment/index.js +2 -1
  8. package/lib/module/components/attachment/index.js.map +1 -1
  9. package/lib/module/components/avatar/index.js +3 -3
  10. package/lib/module/components/avatar/index.js.map +1 -1
  11. package/lib/module/components/badge/index.js +4 -4
  12. package/lib/module/components/badge/index.js.map +1 -1
  13. package/lib/module/components/bar-chart/index.js +197 -56
  14. package/lib/module/components/bar-chart/index.js.map +1 -1
  15. package/lib/module/components/bottom-sheet/index.js +15 -10
  16. package/lib/module/components/bottom-sheet/index.js.map +1 -1
  17. package/lib/module/components/breadcrumb/index.js +6 -6
  18. package/lib/module/components/breadcrumb/index.js.map +1 -1
  19. package/lib/module/components/button/index.js +11 -6
  20. package/lib/module/components/button/index.js.map +1 -1
  21. package/lib/module/components/calendar/index.js +557 -0
  22. package/lib/module/components/calendar/index.js.map +1 -0
  23. package/lib/module/components/carousel/index.js +680 -0
  24. package/lib/module/components/carousel/index.js.map +1 -0
  25. package/lib/module/components/chip/index.js +4 -4
  26. package/lib/module/components/chip/index.js.map +1 -1
  27. package/lib/module/components/date-picker/index.js +158 -0
  28. package/lib/module/components/date-picker/index.js.map +1 -0
  29. package/lib/module/components/dialog/index.js +7 -2
  30. package/lib/module/components/dialog/index.js.map +1 -1
  31. package/lib/module/components/direction/index.js +2 -1
  32. package/lib/module/components/direction/index.js.map +1 -1
  33. package/lib/module/components/empty-state/index.js +2 -2
  34. package/lib/module/components/empty-state/index.js.map +1 -1
  35. package/lib/module/components/field/index.js +5 -5
  36. package/lib/module/components/field/index.js.map +1 -1
  37. package/lib/module/components/flow/index.js +3 -3
  38. package/lib/module/components/flow/index.js.map +1 -1
  39. package/lib/module/components/frame/index.js +5 -5
  40. package/lib/module/components/frame/index.js.map +1 -1
  41. package/lib/module/components/input-group/index.js +3 -2
  42. package/lib/module/components/input-group/index.js.map +1 -1
  43. package/lib/module/components/item/index.js +9 -9
  44. package/lib/module/components/item/index.js.map +1 -1
  45. package/lib/module/components/label/index.js +4 -4
  46. package/lib/module/components/label/index.js.map +1 -1
  47. package/lib/module/components/line-chart/index.js +167 -44
  48. package/lib/module/components/line-chart/index.js.map +1 -1
  49. package/lib/module/components/map/index.js +7 -7
  50. package/lib/module/components/map/index.js.map +1 -1
  51. package/lib/module/components/marker/index.js +3 -3
  52. package/lib/module/components/marker/index.js.map +1 -1
  53. package/lib/module/components/message/index.js +7 -7
  54. package/lib/module/components/message/index.js.map +1 -1
  55. package/lib/module/components/message-scroller/index.js +5 -4
  56. package/lib/module/components/message-scroller/index.js.map +1 -1
  57. package/lib/module/components/popover/index.js +39 -7
  58. package/lib/module/components/popover/index.js.map +1 -1
  59. package/lib/module/components/radio-group/index.js +2 -2
  60. package/lib/module/components/radio-group/index.js.map +1 -1
  61. package/lib/module/components/section-rail/index.js +4 -4
  62. package/lib/module/components/section-rail/index.js.map +1 -1
  63. package/lib/module/components/select/index.js +10 -4
  64. package/lib/module/components/select/index.js.map +1 -1
  65. package/lib/module/components/steps/index.js +4 -4
  66. package/lib/module/components/steps/index.js.map +1 -1
  67. package/lib/module/components/tabs/index.js +7 -7
  68. package/lib/module/components/tabs/index.js.map +1 -1
  69. package/lib/module/components/timeline/index.js +4 -4
  70. package/lib/module/components/timeline/index.js.map +1 -1
  71. package/lib/module/components/toast/index.js +2 -2
  72. package/lib/module/components/toast/index.js.map +1 -1
  73. package/lib/module/components/toggle-button/index.js +5 -5
  74. package/lib/module/components/toggle-button/index.js.map +1 -1
  75. package/lib/module/components/tooltip/index.js +492 -0
  76. package/lib/module/components/tooltip/index.js.map +1 -0
  77. package/lib/module/components/typography/index.js +2 -2
  78. package/lib/module/components/typography/index.js.map +1 -1
  79. package/lib/module/hooks/index.js +1 -0
  80. package/lib/module/hooks/index.js.map +1 -1
  81. package/lib/module/hooks/use-back-handler.js +37 -0
  82. package/lib/module/hooks/use-back-handler.js.map +1 -0
  83. package/lib/module/icons/index.js +63 -0
  84. package/lib/module/icons/index.js.map +1 -1
  85. package/lib/module/index.js +5 -1
  86. package/lib/module/index.js.map +1 -1
  87. package/lib/module/primitives/keyboard-avoider.js +2 -1
  88. package/lib/module/primitives/keyboard-avoider.js.map +1 -1
  89. package/lib/module/primitives/text.js +25 -1
  90. package/lib/module/primitives/text.js.map +1 -1
  91. package/lib/module/utils/date.js +386 -0
  92. package/lib/module/utils/date.js.map +1 -0
  93. package/lib/typescript/src/components/accordion/index.d.ts.map +1 -1
  94. package/lib/typescript/src/components/alert/index.d.ts.map +1 -1
  95. package/lib/typescript/src/components/area-chart/index.d.ts +41 -1
  96. package/lib/typescript/src/components/area-chart/index.d.ts.map +1 -1
  97. package/lib/typescript/src/components/attachment/index.d.ts.map +1 -1
  98. package/lib/typescript/src/components/bar-chart/index.d.ts +44 -2
  99. package/lib/typescript/src/components/bar-chart/index.d.ts.map +1 -1
  100. package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
  101. package/lib/typescript/src/components/breadcrumb/index.d.ts.map +1 -1
  102. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  103. package/lib/typescript/src/components/calendar/index.d.ts +108 -0
  104. package/lib/typescript/src/components/calendar/index.d.ts.map +1 -0
  105. package/lib/typescript/src/components/carousel/index.d.ts +179 -0
  106. package/lib/typescript/src/components/carousel/index.d.ts.map +1 -0
  107. package/lib/typescript/src/components/chip/index.d.ts.map +1 -1
  108. package/lib/typescript/src/components/date-picker/index.d.ts +91 -0
  109. package/lib/typescript/src/components/date-picker/index.d.ts.map +1 -0
  110. package/lib/typescript/src/components/dialog/index.d.ts.map +1 -1
  111. package/lib/typescript/src/components/direction/index.d.ts.map +1 -1
  112. package/lib/typescript/src/components/empty-state/index.d.ts.map +1 -1
  113. package/lib/typescript/src/components/field/index.d.ts.map +1 -1
  114. package/lib/typescript/src/components/frame/index.d.ts.map +1 -1
  115. package/lib/typescript/src/components/input-group/index.d.ts.map +1 -1
  116. package/lib/typescript/src/components/item/index.d.ts.map +1 -1
  117. package/lib/typescript/src/components/label/index.d.ts.map +1 -1
  118. package/lib/typescript/src/components/line-chart/index.d.ts +41 -2
  119. package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -1
  120. package/lib/typescript/src/components/map/index.d.ts.map +1 -1
  121. package/lib/typescript/src/components/marker/index.d.ts.map +1 -1
  122. package/lib/typescript/src/components/message/index.d.ts.map +1 -1
  123. package/lib/typescript/src/components/message-scroller/index.d.ts.map +1 -1
  124. package/lib/typescript/src/components/popover/index.d.ts.map +1 -1
  125. package/lib/typescript/src/components/select/index.d.ts.map +1 -1
  126. package/lib/typescript/src/components/steps/index.d.ts.map +1 -1
  127. package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
  128. package/lib/typescript/src/components/timeline/index.d.ts.map +1 -1
  129. package/lib/typescript/src/components/toast/index.d.ts.map +1 -1
  130. package/lib/typescript/src/components/toggle-button/index.d.ts.map +1 -1
  131. package/lib/typescript/src/components/tooltip/index.d.ts +125 -0
  132. package/lib/typescript/src/components/tooltip/index.d.ts.map +1 -0
  133. package/lib/typescript/src/components/typography/index.d.ts.map +1 -1
  134. package/lib/typescript/src/hooks/index.d.ts +1 -0
  135. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  136. package/lib/typescript/src/hooks/use-back-handler.d.ts +19 -0
  137. package/lib/typescript/src/hooks/use-back-handler.d.ts.map +1 -0
  138. package/lib/typescript/src/icons/index.d.ts +3 -0
  139. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  140. package/lib/typescript/src/index.d.ts +8 -4
  141. package/lib/typescript/src/index.d.ts.map +1 -1
  142. package/lib/typescript/src/primitives/keyboard-avoider.d.ts.map +1 -1
  143. package/lib/typescript/src/primitives/text.d.ts +20 -0
  144. package/lib/typescript/src/primitives/text.d.ts.map +1 -1
  145. package/lib/typescript/src/utils/date.d.ts +116 -0
  146. package/lib/typescript/src/utils/date.d.ts.map +1 -0
  147. package/package.json +1 -1
  148. package/src/components/accordion/index.tsx +8 -12
  149. package/src/components/alert/index.tsx +2 -2
  150. package/src/components/area-chart/index.tsx +208 -55
  151. package/src/components/attachment/index.tsx +2 -2
  152. package/src/components/avatar/index.tsx +3 -3
  153. package/src/components/badge/index.tsx +6 -6
  154. package/src/components/bar-chart/index.tsx +214 -54
  155. package/src/components/bottom-sheet/index.tsx +17 -16
  156. package/src/components/breadcrumb/index.tsx +6 -8
  157. package/src/components/button/index.tsx +12 -8
  158. package/src/components/calendar/index.tsx +703 -0
  159. package/src/components/carousel/index.tsx +788 -0
  160. package/src/components/chip/index.tsx +4 -6
  161. package/src/components/date-picker/index.tsx +237 -0
  162. package/src/components/dialog/index.tsx +7 -2
  163. package/src/components/direction/index.tsx +2 -1
  164. package/src/components/empty-state/index.tsx +2 -2
  165. package/src/components/field/index.tsx +3 -5
  166. package/src/components/flow/index.tsx +3 -3
  167. package/src/components/frame/index.tsx +5 -7
  168. package/src/components/input-group/index.tsx +3 -2
  169. package/src/components/item/index.tsx +9 -9
  170. package/src/components/label/index.tsx +2 -2
  171. package/src/components/line-chart/index.tsx +189 -50
  172. package/src/components/map/index.tsx +7 -9
  173. package/src/components/marker/index.tsx +3 -3
  174. package/src/components/message/index.tsx +7 -7
  175. package/src/components/message-scroller/index.tsx +5 -4
  176. package/src/components/popover/index.tsx +43 -7
  177. package/src/components/radio-group/index.tsx +2 -2
  178. package/src/components/section-rail/index.tsx +4 -4
  179. package/src/components/select/index.tsx +10 -4
  180. package/src/components/steps/index.tsx +4 -4
  181. package/src/components/tabs/index.tsx +7 -9
  182. package/src/components/timeline/index.tsx +4 -4
  183. package/src/components/toast/index.tsx +2 -2
  184. package/src/components/toggle-button/index.tsx +5 -7
  185. package/src/components/tooltip/index.tsx +610 -0
  186. package/src/components/typography/index.tsx +2 -2
  187. package/src/hooks/index.ts +1 -0
  188. package/src/hooks/use-back-handler.ts +37 -0
  189. package/src/icons/index.tsx +45 -0
  190. package/src/index.ts +45 -0
  191. package/src/primitives/keyboard-avoider.tsx +2 -1
  192. package/src/primitives/text.tsx +28 -1
  193. package/src/utils/date.ts +446 -0
@@ -51,7 +51,8 @@ import { useCSSVariable } from 'uniwind';
51
51
  import { CheckIcon, ChevronDownIcon } from '../../icons';
52
52
  import { getNativeUI } from '../../native';
53
53
  import { Portal } from '../../primitives/portal';
54
- import { Text } from '../../primitives/text';
54
+ import { Text, textChildren } from '../../primitives/text';
55
+ import { useBackHandler } from '../../hooks/use-back-handler';
55
56
  import { BottomSheet } from '../bottom-sheet';
56
57
 
57
58
  const selectVariants = tv({
@@ -223,6 +224,11 @@ function SelectRoot({
223
224
  onOpenChange?.(false);
224
225
  }, [chevron, onOpenChange]);
225
226
 
227
+ // An open overlay list catches the Android back button, closing itself
228
+ // instead of popping the screen behind it. The `sheet` presentation gets the
229
+ // same behaviour from its BottomSheet; the native picker owns its own back.
230
+ useBackHandler(open && presentation === 'overlay' && !nativeUI, close);
231
+
226
232
  const toggle = useCallback(() => {
227
233
  if (open) {
228
234
  close();
@@ -333,7 +339,7 @@ function SelectRoot({
333
339
  </Text>
334
340
  ) : null}
335
341
  <ScrollView bounces={false} className="max-h-96">
336
- <View className="gap-1 pb-2">{children}</View>
342
+ <View className="gap-1 pb-2">{textChildren(children)}</View>
337
343
  </ScrollView>
338
344
  </SelectContext.Provider>
339
345
  </BottomSheet.Content>
@@ -353,7 +359,7 @@ function SelectRoot({
353
359
  exiting={FadeOut.duration(120)}
354
360
  className={slots.list()}
355
361
  >
356
- {children}
362
+ {textChildren(children)}
357
363
  </Animated.View>
358
364
  ) : null}
359
365
  </View>
@@ -410,7 +416,7 @@ function SelectRoot({
410
416
  className={slots.list()}
411
417
  >
412
418
  <ScrollView bounces={false} showsVerticalScrollIndicator={false}>
413
- {children}
419
+ {textChildren(children)}
414
420
  </ScrollView>
415
421
  </Animated.View>
416
422
  </SelectContext.Provider>
@@ -26,7 +26,7 @@ import { Pressable, View, type Text as RNText, type ViewProps } from 'react-nati
26
26
  import { tv } from 'tailwind-variants';
27
27
  import { useCSSVariable } from 'uniwind';
28
28
  import { CheckIcon } from '../../icons';
29
- import { Text, type TextProps } from '../../primitives/text';
29
+ import { Text, type TextProps, textChildren } from '../../primitives/text';
30
30
  import { Spinner } from '../spinner';
31
31
 
32
32
  export type StepState = 'active' | 'completed' | 'inactive' | 'loading';
@@ -163,7 +163,7 @@ const StepsRoot = forwardRef<View, StepsProps>(
163
163
  return (
164
164
  <StepsContext.Provider value={context}>
165
165
  <View ref={ref} className={root({ className })} {...props}>
166
- {children}
166
+ {textChildren(children)}
167
167
  </View>
168
168
  </StepsContext.Provider>
169
169
  );
@@ -210,7 +210,7 @@ const StepsItem = forwardRef<View, StepsItemProps>(
210
210
  return (
211
211
  <StepItemContext.Provider value={context}>
212
212
  <View ref={ref} className={item({ className })} {...props}>
213
- {children}
213
+ {textChildren(children)}
214
214
  </View>
215
215
  </StepItemContext.Provider>
216
216
  );
@@ -240,7 +240,7 @@ const StepsTrigger = forwardRef<View, StepsTriggerProps>(
240
240
  className={trigger({ className })}
241
241
  {...props}
242
242
  >
243
- {children}
243
+ {textChildren(children)}
244
244
  </Pressable>
245
245
  );
246
246
  }
@@ -40,7 +40,7 @@ import Animated, {
40
40
  withSpring,
41
41
  } from 'react-native-reanimated';
42
42
  import { tv } from 'tailwind-variants';
43
- import { Text } from '../../primitives/text';
43
+ import { Text, textChildren } from '../../primitives/text';
44
44
  import { cn } from '../../utils/cn';
45
45
 
46
46
  const SPRING = { damping: 24, stiffness: 300, mass: 0.7 } as const;
@@ -197,7 +197,7 @@ function TabsRoot({
197
197
  return (
198
198
  <TabsContext.Provider value={context}>
199
199
  <View className={cn('gap-3', className)} {...props}>
200
- {children}
200
+ {textChildren(children)}
201
201
  </View>
202
202
  </TabsContext.Provider>
203
203
  );
@@ -274,7 +274,7 @@ function TabsList({ className, scrollable = false, children, ...props }: TabsLis
274
274
  const row = (
275
275
  <View accessibilityRole="tablist" className={cn(list(), className)} {...props}>
276
276
  <TabsIndicator />
277
- {children}
277
+ {textChildren(children)}
278
278
  </View>
279
279
  );
280
280
 
@@ -341,13 +341,11 @@ function TabsTrigger({
341
341
  className={cn(slots.trigger(), (icon || badge) && 'flex-row gap-1.5', className)}
342
342
  >
343
343
  {icon}
344
- {typeof children === 'string' ? (
344
+ {textChildren(children, (text) => (
345
345
  <Text size="sm" weight="medium" className={slots.label()}>
346
- {children}
346
+ {text}
347
347
  </Text>
348
- ) : (
349
- children
350
- )}
348
+ ))}
351
349
  {badge}
352
350
  </Pressable>
353
351
  );
@@ -384,7 +382,7 @@ function TabsContent({ className, value, children, style, ...props }: TabsConten
384
382
  className={className}
385
383
  {...props}
386
384
  >
387
- {children}
385
+ {textChildren(children)}
388
386
  </Animated.View>
389
387
  );
390
388
  }
@@ -43,7 +43,7 @@ import { View, type Text as RNText, type ViewProps } from 'react-native';
43
43
  import { tv } from 'tailwind-variants';
44
44
  import { useCSSVariable } from 'uniwind';
45
45
  import { IconColorProvider } from '../../icons';
46
- import { Text, type TextProps } from '../../primitives/text';
46
+ import { Text, type TextProps, textChildren } from '../../primitives/text';
47
47
 
48
48
  export type TimelineVariant = 'dot' | 'icon' | 'numbered' | 'card' | 'compact';
49
49
  /** Semantic colour for a single event, independent of progress. */
@@ -209,7 +209,7 @@ const TimelineRoot = forwardRef<View, TimelineProps>(
209
209
  return (
210
210
  <TimelineContext.Provider value={context}>
211
211
  <View ref={ref} className={root({ className })} {...props}>
212
- {children}
212
+ {textChildren(children)}
213
213
  </View>
214
214
  </TimelineContext.Provider>
215
215
  );
@@ -247,7 +247,7 @@ const TimelineItem = forwardRef<View, TimelineItemProps>(
247
247
  return (
248
248
  <TimelineItemContext.Provider value={context}>
249
249
  <View ref={ref} className={item({ className })} {...props}>
250
- {children}
250
+ {textChildren(children)}
251
251
  </View>
252
252
  </TimelineItemContext.Provider>
253
253
  );
@@ -357,7 +357,7 @@ const TimelineContent = forwardRef<View, ViewProps & { className?: string }>(
357
357
 
358
358
  return (
359
359
  <View ref={ref} className={body({ className })} {...props}>
360
- {variant === 'card' ? <View className={panel()}>{children}</View> : children}
360
+ {variant === 'card' ? <View className={panel()}>{textChildren(children)}</View> : children}
361
361
  </View>
362
362
  );
363
363
  }
@@ -39,7 +39,7 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context';
39
39
  import { tv, type VariantProps } from 'tailwind-variants';
40
40
  import { useCSSVariable } from 'uniwind';
41
41
  import { Portal } from '../../primitives/portal';
42
- import { Text, type TextProps } from '../../primitives/text';
42
+ import { Text, type TextProps, textChildren } from '../../primitives/text';
43
43
  import { cn } from '../../utils/cn';
44
44
  import { AlertTriangleIcon, CheckCircleIcon, InfoIcon, XIcon } from '../../icons';
45
45
  import { Button, type ButtonProps } from '../button';
@@ -171,7 +171,7 @@ const ToastRoot = ({ className, variant = 'default', onHide, children, ...props
171
171
  return (
172
172
  <ToastContext.Provider value={context}>
173
173
  <View accessibilityRole="alert" accessibilityLiveRegion="polite" className={root({ className })} {...props}>
174
- {children}
174
+ {textChildren(children)}
175
175
  </View>
176
176
  </ToastContext.Provider>
177
177
  );
@@ -42,7 +42,7 @@ import {
42
42
  AnimatedPressable,
43
43
  type AnimatedPressableProps,
44
44
  } from '../../primitives/animated-pressable';
45
- import { Text } from '../../primitives/text';
45
+ import { Text, textChildren } from '../../primitives/text';
46
46
  import { cn } from '../../utils/cn';
47
47
  import { selectionTick } from '../../utils/haptics';
48
48
 
@@ -196,7 +196,7 @@ const ToggleButtonGroup = forwardRef<View, ToggleButtonGroupProps>(
196
196
  className={cn('flex-row items-center gap-1.5', className)}
197
197
  {...props}
198
198
  >
199
- {children}
199
+ {textChildren(children)}
200
200
  </View>
201
201
  </ToggleGroupContext.Provider>
202
202
  );
@@ -347,13 +347,11 @@ const ToggleButtonRoot = forwardRef<View, ToggleButtonProps>(
347
347
  )}
348
348
  {...props}
349
349
  >
350
- {typeof children === 'string' ? (
350
+ {textChildren(children, (text) => (
351
351
  <Text className={slots.label({ className: labelClassName })}>
352
- {children}
352
+ {text}
353
353
  </Text>
354
- ) : (
355
- children
356
- )}
354
+ ))}
357
355
  </AnimatedPressable>
358
356
  </IconColorProvider>
359
357
  </ToggleStateContext.Provider>