@sincpro/mobile-ui 0.2.0 → 0.3.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 (234) hide show
  1. package/README.md +76 -19
  2. package/dist/Dialog/BottomSheet/BottomSheet.Root.d.ts +11 -7
  3. package/dist/Dialog/BottomSheet/BottomSheet.Root.js +4 -0
  4. package/dist/Dialog/Confirmation.context.d.ts +1 -1
  5. package/dist/Dialog/Dialog.ActionSheet.d.ts +17 -0
  6. package/dist/Dialog/Dialog.ActionSheet.js +16 -0
  7. package/dist/Dialog/Dialog.EditValue.d.ts +1 -1
  8. package/dist/Dialog/Dialog.Sheet.d.ts +26 -0
  9. package/dist/Dialog/Dialog.Sheet.js +55 -0
  10. package/dist/Dialog/index.d.ts +9 -7
  11. package/dist/Dialog/index.js +2 -0
  12. package/dist/Display/Display.Accordion.d.ts +18 -0
  13. package/dist/Display/Display.Accordion.js +22 -0
  14. package/dist/Display/Display.AvatarGroup.d.ts +12 -0
  15. package/dist/Display/Display.AvatarGroup.js +23 -0
  16. package/dist/Display/Display.Badge.d.ts +1 -1
  17. package/dist/Display/Display.Card.d.ts +46 -0
  18. package/dist/Display/Display.Card.js +36 -0
  19. package/dist/Display/Display.Carousel.d.ts +13 -0
  20. package/dist/Display/Display.Carousel.js +19 -0
  21. package/dist/Display/Display.Chip.d.ts +105 -0
  22. package/dist/Display/Display.Chip.js +45 -0
  23. package/dist/Display/Display.CopyableText.d.ts +1 -1
  24. package/dist/Display/Display.CountRecords.d.ts +1 -1
  25. package/dist/Display/Display.DataTable.d.ts +19 -0
  26. package/dist/Display/Display.DataTable.js +22 -0
  27. package/dist/Display/Display.Date.d.ts +15 -2
  28. package/dist/Display/Display.Date.js +34 -4
  29. package/dist/Display/Display.Divider.d.ts +1 -1
  30. package/dist/Display/Display.IconBadge.d.ts +13 -0
  31. package/dist/Display/Display.IconBadge.js +30 -0
  32. package/dist/Display/Display.Image.d.ts +15 -0
  33. package/dist/Display/Display.Image.js +17 -0
  34. package/dist/Display/Display.KeyValue.d.ts +10 -0
  35. package/dist/Display/Display.KeyValue.js +9 -0
  36. package/dist/Display/Display.ListItem.d.ts +13 -0
  37. package/dist/Display/Display.ListItem.js +14 -0
  38. package/dist/Display/Display.Logo.js +3 -1
  39. package/dist/Display/Display.MediaCard.d.ts +17 -0
  40. package/dist/Display/Display.MediaCard.js +12 -0
  41. package/dist/Display/Display.MediaEmbed.d.ts +19 -0
  42. package/dist/Display/Display.MediaEmbed.js +39 -0
  43. package/dist/Display/Display.MenuButton.d.ts +1 -1
  44. package/dist/Display/Display.Monetary.d.ts +1 -1
  45. package/dist/Display/Display.PriceTag.d.ts +10 -0
  46. package/dist/Display/Display.PriceTag.js +23 -0
  47. package/dist/Display/Display.ProductCard.d.ts +17 -0
  48. package/dist/Display/Display.ProductCard.js +13 -0
  49. package/dist/Display/Display.Rating.d.ts +11 -0
  50. package/dist/Display/Display.Rating.js +16 -0
  51. package/dist/Display/Display.SearchHistory.d.ts +12 -0
  52. package/dist/Display/Display.SearchHistory.js +13 -0
  53. package/dist/Display/Display.SectionHeader.d.ts +13 -0
  54. package/dist/Display/Display.SectionHeader.js +9 -0
  55. package/dist/Display/Display.Stat.d.ts +10 -0
  56. package/dist/Display/Display.Stat.js +9 -0
  57. package/dist/Display/Display.StatCard.d.ts +14 -0
  58. package/dist/Display/Display.StatCard.js +13 -0
  59. package/dist/Display/Display.StatusDot.d.ts +11 -0
  60. package/dist/Display/Display.StatusDot.js +28 -0
  61. package/dist/Display/Display.Story.d.ts +15 -0
  62. package/dist/Display/Display.Story.js +43 -0
  63. package/dist/Display/Display.StoryTray.d.ts +26 -0
  64. package/dist/Display/Display.StoryTray.js +43 -0
  65. package/dist/Display/Display.StoryViewer.d.ts +26 -0
  66. package/dist/Display/Display.StoryViewer.js +79 -0
  67. package/dist/Display/Display.SwipeableRow.d.ts +15 -0
  68. package/dist/Display/Display.SwipeableRow.js +28 -0
  69. package/dist/Display/Display.Tag.d.ts +11 -0
  70. package/dist/Display/Display.Tag.js +9 -0
  71. package/dist/Display/Display.Timeline.d.ts +13 -0
  72. package/dist/Display/Display.Timeline.js +19 -0
  73. package/dist/Display/Display.Tooltip.d.ts +10 -0
  74. package/dist/Display/Display.Tooltip.js +24 -0
  75. package/dist/Display/index.d.ts +66 -0
  76. package/dist/Display/index.js +54 -0
  77. package/dist/Feedback/ErrorBoundary.d.ts +1 -1
  78. package/dist/Feedback/Feedback.Banner.d.ts +82 -0
  79. package/dist/Feedback/Feedback.Banner.js +35 -0
  80. package/dist/Feedback/Feedback.DomainSplashScreen.d.ts +2 -1
  81. package/dist/Feedback/Feedback.DomainSplashScreen.js +1 -1
  82. package/dist/Feedback/Feedback.Empty.d.ts +1 -1
  83. package/dist/Feedback/Feedback.EmptyState.d.ts +15 -0
  84. package/dist/Feedback/Feedback.EmptyState.js +11 -0
  85. package/dist/Feedback/Feedback.Error.d.ts +1 -1
  86. package/dist/Feedback/Feedback.Loading.d.ts +2 -1
  87. package/dist/Feedback/Feedback.PermissionCard.d.ts +15 -0
  88. package/dist/Feedback/Feedback.PermissionCard.js +11 -0
  89. package/dist/Feedback/Feedback.Progress.d.ts +9 -0
  90. package/dist/Feedback/Feedback.Progress.js +35 -0
  91. package/dist/Feedback/Feedback.ProgressCircle.d.ts +12 -0
  92. package/dist/Feedback/Feedback.ProgressCircle.js +15 -0
  93. package/dist/Feedback/Feedback.Skeleton.d.ts +11 -0
  94. package/dist/Feedback/Feedback.Skeleton.js +29 -0
  95. package/dist/Feedback/Feedback.Splash.d.ts +1 -1
  96. package/dist/Feedback/Toast.context.d.ts +35 -0
  97. package/dist/Feedback/Toast.context.js +119 -0
  98. package/dist/Feedback/index.d.ts +15 -0
  99. package/dist/Feedback/index.js +15 -0
  100. package/dist/Form/Form.Button.d.ts +6 -0
  101. package/dist/Form/Form.Button.js +12 -1
  102. package/dist/Form/Form.Checkbox.d.ts +1 -1
  103. package/dist/Form/Form.ControlledCheckbox.d.ts +1 -1
  104. package/dist/Form/Form.ControlledInput.d.ts +1 -1
  105. package/dist/Form/Form.ControlledMonetaryInput.d.ts +1 -1
  106. package/dist/Form/Form.ControlledRadioButton.d.ts +1 -1
  107. package/dist/Form/Form.DatePicker.d.ts +20 -0
  108. package/dist/Form/Form.DatePicker.js +38 -0
  109. package/dist/Form/Form.Dropdown.d.ts +1 -1
  110. package/dist/Form/Form.FAB.d.ts +10 -0
  111. package/dist/Form/Form.FAB.js +17 -0
  112. package/dist/Form/Form.FilterButton.d.ts +1 -1
  113. package/dist/Form/Form.FractionalQuantityInput.d.ts +1 -1
  114. package/dist/Form/Form.IconButton.d.ts +1 -1
  115. package/dist/Form/Form.Input.d.ts +2 -1
  116. package/dist/Form/Form.MonetaryInput.d.ts +1 -1
  117. package/dist/Form/Form.PinInput.d.ts +12 -0
  118. package/dist/Form/Form.PinInput.js +23 -0
  119. package/dist/Form/Form.QuantitySelector.d.ts +2 -1
  120. package/dist/Form/Form.QuantitySelector.js +1 -1
  121. package/dist/Form/Form.RadioButton.d.ts +1 -1
  122. package/dist/Form/Form.SearchBar.d.ts +6 -1
  123. package/dist/Form/Form.SearchBar.js +4 -0
  124. package/dist/Form/Form.Select.d.ts +17 -0
  125. package/dist/Form/Form.Select.js +26 -0
  126. package/dist/Form/Form.Slider.d.ts +20 -0
  127. package/dist/Form/Form.Slider.js +16 -0
  128. package/dist/Form/Form.Switch.d.ts +10 -0
  129. package/dist/Form/Form.Switch.js +9 -0
  130. package/dist/Form/index.d.ts +12 -0
  131. package/dist/Form/index.js +12 -0
  132. package/dist/Navigation/Navigation.AppBar.d.ts +41 -0
  133. package/dist/Navigation/Navigation.AppBar.js +33 -0
  134. package/dist/Navigation/Navigation.BottomNav.d.ts +29 -0
  135. package/dist/Navigation/Navigation.BottomNav.js +35 -0
  136. package/dist/Navigation/Navigation.CollapsingHeader.d.ts +34 -0
  137. package/dist/Navigation/Navigation.CollapsingHeader.js +47 -0
  138. package/dist/Navigation/Navigation.FloatingBar.d.ts +15 -0
  139. package/dist/Navigation/Navigation.FloatingBar.js +21 -0
  140. package/dist/Navigation/Navigation.Header.d.ts +6 -2
  141. package/dist/Navigation/Navigation.Header.js +4 -0
  142. package/dist/Navigation/Navigation.HeaderToolbar.d.ts +1 -1
  143. package/dist/Navigation/Navigation.Menu.d.ts +21 -0
  144. package/dist/Navigation/Navigation.Menu.js +42 -0
  145. package/dist/Navigation/Navigation.RowItem.d.ts +1 -1
  146. package/dist/Navigation/Navigation.SearchBar.d.ts +18 -0
  147. package/dist/Navigation/Navigation.SearchBar.js +22 -0
  148. package/dist/Navigation/Navigation.SegmentedControl.d.ts +14 -0
  149. package/dist/Navigation/Navigation.SegmentedControl.js +13 -0
  150. package/dist/Navigation/Navigation.Steps.d.ts +8 -0
  151. package/dist/Navigation/Navigation.Steps.js +17 -0
  152. package/dist/Navigation/Navigation.TabIcon.d.ts +1 -1
  153. package/dist/Navigation/Navigation.Tabs.d.ts +28 -0
  154. package/dist/Navigation/Navigation.Tabs.js +45 -0
  155. package/dist/Navigation/index.d.ts +32 -1
  156. package/dist/Navigation/index.js +18 -0
  157. package/dist/Typography/Typography.Text.d.ts +2 -1
  158. package/dist/branding.d.ts +6 -0
  159. package/dist/branding.js +7 -0
  160. package/dist/icons/ArrowDownIcon.d.ts +2 -1
  161. package/dist/icons/ArrowUpIcon.d.ts +2 -1
  162. package/dist/icons/CreditIcon.d.ts +1 -1
  163. package/dist/icons/OdooIcon.d.ts +1 -1
  164. package/dist/index.d.ts +1 -0
  165. package/dist/index.js +2 -0
  166. package/dist/layouts/AuthContainer.d.ts +1 -1
  167. package/dist/layouts/Container.d.ts +1 -0
  168. package/dist/layouts/Container.js +2 -3
  169. package/dist/layouts/GradientContainer.d.ts +1 -1
  170. package/dist/layouts/PlainLayout.d.ts +1 -1
  171. package/dist/layouts/ScrollContainer.d.ts +2 -2
  172. package/dist/layouts/ScrollContainer.js +1 -1
  173. package/dist/layouts/TabNavigatorLayout.d.ts +2 -2
  174. package/dist/layouts/TabNavigatorLayout.js +4 -0
  175. package/dist/primitives/AspectRatio.d.ts +10 -0
  176. package/dist/primitives/AspectRatio.js +8 -0
  177. package/dist/primitives/Box.d.ts +1 -1
  178. package/dist/primitives/Pressable.d.ts +10 -0
  179. package/dist/primitives/Pressable.js +9 -0
  180. package/dist/primitives/Row.d.ts +1 -1
  181. package/dist/primitives/Spacer.d.ts +8 -0
  182. package/dist/primitives/Spacer.js +9 -0
  183. package/dist/primitives/Stack.d.ts +1 -1
  184. package/dist/primitives/index.d.ts +3 -0
  185. package/dist/primitives/index.js +3 -0
  186. package/dist/theme/active.d.ts +2 -0
  187. package/dist/theme/active.js +13 -0
  188. package/dist/theme/components/ThemedActivityIndicator.d.ts +1 -1
  189. package/dist/theme/components/index.d.ts +1 -1
  190. package/dist/theme/components/index.js +1 -1
  191. package/dist/theme/dark.d.ts +7 -0
  192. package/dist/theme/dark.js +84 -0
  193. package/dist/theme/define.d.ts +5 -5
  194. package/dist/theme/define.js +5 -5
  195. package/dist/theme/index.d.ts +3 -1
  196. package/dist/theme/index.js +3 -1
  197. package/dist/theme/theme.d.ts +1 -1
  198. package/dist/theme/theme.js +1 -1
  199. package/dist/theme/types.d.ts +14 -14
  200. package/dist/theme/types.js +2 -2
  201. package/dist/theme/useTheme.d.ts +3 -1
  202. package/dist/theme/useTheme.js +6 -1
  203. package/dist/tokens/index.d.ts +2 -0
  204. package/dist/tokens/index.js +2 -0
  205. package/dist/tokens/motion.d.ts +71 -0
  206. package/dist/tokens/motion.js +25 -0
  207. package/dist/utils/date.d.ts +33 -33
  208. package/dist/utils/date.js +39 -39
  209. package/dist/views/AuthFormView.d.ts +1 -1
  210. package/dist/views/FormViewV2.context.d.ts +1 -1
  211. package/dist/views/FormViewV2.d.ts +10 -10
  212. package/dist/views/FormViewV2.js +2 -2
  213. package/dist/views/ListViewV2.context.d.ts +1 -1
  214. package/dist/views/ListViewV2.d.ts +20 -20
  215. package/dist/views/ListViewV2.js +2 -2
  216. package/dist/views/Wizard/Wizard.context.d.ts +1 -1
  217. package/dist/widgets/CircleButton.d.ts +6 -2
  218. package/dist/widgets/CircleButton.js +4 -0
  219. package/dist/widgets/GeoPermissionCard.d.ts +1 -1
  220. package/dist/widgets/HomeHeader.d.ts +4 -0
  221. package/dist/widgets/HomeHeader.js +4 -0
  222. package/dist/widgets/JSONViewer.d.ts +2 -1
  223. package/dist/widgets/JSONViewer.js +6 -6
  224. package/dist/widgets/MenuCard.d.ts +1 -1
  225. package/dist/widgets/ScreenHeader.d.ts +6 -2
  226. package/dist/widgets/ScreenHeader.js +15 -4
  227. package/dist/widgets/TimeZoneSelector.d.ts +1 -1
  228. package/dist/widgets/TimeZoneSelectorModal.d.ts +1 -1
  229. package/package.json +38 -25
  230. package/tailwind.preset.js +14 -0
  231. package/dist/notifications/index.d.ts +0 -1
  232. package/dist/notifications/index.js +0 -1
  233. package/dist/providers/index.d.ts +0 -1
  234. package/dist/providers/index.js +0 -2
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import Pressable from "../primitives/Pressable";
4
+ import { theme } from "../theme";
5
+ import { View } from "react-native";
6
+ function Rating({ value, max = 5, size = 24, onChange, readOnly = false, className, testID, }) {
7
+ const interactive = !readOnly && !!onChange;
8
+ return (_jsx(View, { accessibilityLabel: `Calificación ${value} de ${max}`, accessibilityRole: interactive ? "adjustable" : "image", className: className, style: { flexDirection: "row", gap: 4 }, testID: testID, children: Array.from({ length: max }).map((_, index) => {
9
+ const filled = index < Math.round(value);
10
+ const star = (_jsx(Icon, { color: filled ? theme.warning : theme.icon.disabled, name: filled ? "star" : "star-outline", size: size }));
11
+ if (!interactive)
12
+ return _jsx(View, { children: star }, index);
13
+ return (_jsx(Pressable, { accessibilityLabel: `${index + 1} estrellas`, hitSlop: 6, onPress: () => onChange?.(index + 1), children: star }, index));
14
+ }) }));
15
+ }
16
+ export default Rating;
@@ -0,0 +1,12 @@
1
+ export interface SearchHistoryProps {
2
+ items: string[];
3
+ onSelect: (value: string) => void;
4
+ onRemove: (value: string) => void;
5
+ onClearAll?: () => void;
6
+ title?: string;
7
+ icon?: string;
8
+ className?: string;
9
+ testID?: string;
10
+ }
11
+ declare function SearchHistory({ items, onSelect, onRemove, onClearAll, title, icon, className, testID, }: SearchHistoryProps): import("react").JSX.Element | null;
12
+ export default SearchHistory;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import Pressable from "../primitives/Pressable";
4
+ import { theme } from "../theme";
5
+ import { cn } from "../theme/tw";
6
+ import { Typography } from "../Typography";
7
+ import { View } from "react-native";
8
+ function SearchHistory({ items, onSelect, onRemove, onClearAll, title = "Búsquedas recientes", icon = "time-outline", className, testID, }) {
9
+ if (items.length === 0)
10
+ return null;
11
+ return (_jsxs(View, { className: cn("gap-1", className), testID: testID, children: [_jsxs(View, { className: "flex-row items-center justify-between px-4 py-1", children: [_jsx(Typography.Text, { className: "text-text-secondary", semibold: true, variant: "bodySmall", children: title }), onClearAll ? (_jsx(Pressable, { accessibilityLabel: "Borrar todo", hitSlop: 8, onPress: onClearAll, children: _jsx(Typography.Text, { className: "text-primary", variant: "bodySmall", children: "Borrar todo" }) })) : null] }), items.map((value) => (_jsxs(Pressable, { accessibilityLabel: value, className: "flex-row items-center gap-3 px-4 py-2.5", onPress: () => onSelect(value), children: [_jsx(Icon, { color: theme.icon.tertiary, name: icon, size: 18 }), _jsx(Typography.Text, { className: "flex-1 text-text-primary", numberOfLines: 1, children: value }), _jsx(Pressable, { accessibilityLabel: `Quitar ${value}`, hitSlop: 10, onPress: () => onRemove(value), children: _jsx(Icon, { color: theme.icon.tertiary, name: "close", size: 16 }) })] }, value)))] }));
12
+ }
13
+ export default SearchHistory;
@@ -0,0 +1,13 @@
1
+ export interface SectionHeaderAction {
2
+ label: string;
3
+ onPress: () => void;
4
+ }
5
+ export interface SectionHeaderProps {
6
+ title: string;
7
+ subtitle?: string;
8
+ action?: SectionHeaderAction;
9
+ className?: string;
10
+ testID?: string;
11
+ }
12
+ declare function SectionHeader({ title, subtitle, action, className, testID }: SectionHeaderProps): import("react").JSX.Element;
13
+ export default SectionHeader;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Pressable from "../primitives/Pressable";
3
+ import { cn } from "../theme/tw";
4
+ import { Typography } from "../Typography";
5
+ import { View } from "react-native";
6
+ function SectionHeader({ title, subtitle, action, className, testID }) {
7
+ return (_jsxs(View, { className: cn("flex-row items-center justify-between px-4 py-2", className), testID: testID, children: [_jsxs(View, { className: "flex-1", children: [_jsx(Typography.Text, { className: "text-text-primary", semibold: true, variant: "subtitle", children: title }), subtitle ? (_jsx(Typography.Text, { className: "text-text-secondary", variant: "bodySmall", children: subtitle })) : null] }), action ? (_jsx(Pressable, { accessibilityRole: "button", hitSlop: 8, onPress: action.onPress, children: _jsx(Typography.Text, { className: "text-primary text-sm font-semibold", children: action.label }) })) : null] }));
8
+ }
9
+ export default SectionHeader;
@@ -0,0 +1,10 @@
1
+ export interface StatProps {
2
+ value: string | number;
3
+ label: string;
4
+ align?: "center" | "start";
5
+ className?: string;
6
+ testID?: string;
7
+ }
8
+ declare function Stat({ value, label, align, className, testID }: StatProps): import("react").JSX.Element;
9
+ export default Stat;
10
+ export { Stat };
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import { cn } from "../theme/tw";
3
+ import { Typography } from "../Typography";
4
+ import { View } from "react-native";
5
+ function Stat({ value, label, align = "center", className, testID }) {
6
+ return (_jsxs(View, { className: cn(align === "center" ? "items-center" : "items-start", className), testID: testID, children: [_jsx(Typography.Text, { className: "text-text-primary", semibold: true, variant: "subtitle", children: value }), _jsx(Typography.Text, { className: "text-text-secondary", variant: "caption", children: label })] }));
7
+ }
8
+ export default Stat;
9
+ export { Stat };
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ export interface StatCardProps {
3
+ label: string;
4
+ value: string | number;
5
+ icon?: string;
6
+ delta?: number;
7
+ deltaSuffix?: string;
8
+ hint?: string;
9
+ trailing?: ReactNode;
10
+ className?: string;
11
+ testID?: string;
12
+ }
13
+ declare function StatCard({ label, value, icon, delta, deltaSuffix, hint, trailing, className, testID, }: StatCardProps): import("react").JSX.Element;
14
+ export default StatCard;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import { theme } from "../theme";
4
+ import { cn } from "../theme/tw";
5
+ import { Typography } from "../Typography";
6
+ import { View } from "react-native";
7
+ function StatCard({ label, value, icon, delta, deltaSuffix = "%", hint, trailing, className, testID, }) {
8
+ const hasDelta = typeof delta === "number";
9
+ const up = hasDelta && delta >= 0;
10
+ const deltaColor = up ? theme.success : theme.danger;
11
+ return (_jsxs(View, { className: cn("bg-bg-card rounded-lg border border-border-light p-4 gap-1", className), style: theme.shadow.sm, testID: testID, children: [_jsxs(View, { className: "flex-row items-center justify-between", children: [_jsx(Typography.Text, { className: "text-text-secondary", variant: "bodySmall", children: label }), icon ? _jsx(Icon, { color: theme.icon.secondary, name: icon, size: 18 }) : null, trailing] }), _jsx(Typography.Text, { className: "text-text-primary", semibold: true, variant: "h3", children: value }), hasDelta || hint ? (_jsxs(View, { className: "flex-row items-center gap-1", children: [hasDelta ? (_jsxs(_Fragment, { children: [_jsx(Icon, { color: deltaColor, name: up ? "arrow-up" : "arrow-down", size: 14 }), _jsxs(Typography.Text, { style: { color: deltaColor }, variant: "bodySmall", children: [Math.abs(delta), deltaSuffix] })] })) : null, hint ? (_jsx(Typography.Text, { className: "text-text-tertiary", variant: "bodySmall", children: hint })) : null] })) : null] }));
12
+ }
13
+ export default StatCard;
@@ -0,0 +1,11 @@
1
+ export type StatusKind = "online" | "offline" | "busy" | "away";
2
+ export interface StatusDotProps {
3
+ status?: StatusKind;
4
+ label?: string;
5
+ size?: number;
6
+ color?: string;
7
+ className?: string;
8
+ testID?: string;
9
+ }
10
+ declare function StatusDot({ status, label, size, color, className, testID, }: StatusDotProps): import("react").JSX.Element;
11
+ export default StatusDot;
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import { theme } from "../theme";
3
+ import { cn } from "../theme/tw";
4
+ import { Typography } from "../Typography";
5
+ import { View } from "react-native";
6
+ const statusColor = {
7
+ online: theme.success,
8
+ offline: theme.icon.disabled,
9
+ busy: theme.danger,
10
+ away: theme.warning,
11
+ };
12
+ const statusLabel = {
13
+ online: "En línea",
14
+ offline: "Desconectado",
15
+ busy: "Ocupado",
16
+ away: "Ausente",
17
+ };
18
+ function StatusDot({ status = "online", label, size = 8, color, className, testID, }) {
19
+ const dotColor = color ?? statusColor[status];
20
+ const text = label ?? statusLabel[status];
21
+ return (_jsxs(View, { accessibilityLabel: text, className: cn("flex-row items-center gap-1.5", className), testID: testID, children: [_jsx(View, { style: {
22
+ width: size,
23
+ height: size,
24
+ borderRadius: size / 2,
25
+ backgroundColor: dotColor,
26
+ } }), text ? (_jsx(Typography.Text, { className: "text-text-secondary", variant: "bodySmall", children: text })) : null] }));
27
+ }
28
+ export default StatusDot;
@@ -0,0 +1,15 @@
1
+ import { type ImageSourcePropType } from "react-native";
2
+ export interface StoryProps {
3
+ image: ImageSourcePropType;
4
+ label?: string;
5
+ seen?: boolean;
6
+ variant?: "circle" | "card";
7
+ size?: number;
8
+ avatar?: ImageSourcePropType;
9
+ /** Mostrar el círculo del autor en la card. `false` = card de historia sin avatar. */
10
+ showAvatar?: boolean;
11
+ onPress?: () => void;
12
+ testID?: string;
13
+ }
14
+ declare function Story({ image, label, seen, variant, size, avatar, showAvatar, onPress, testID, }: StoryProps): import("react").JSX.Element;
15
+ export default Story;
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Pressable from "../primitives/Pressable";
3
+ import { theme } from "../theme";
4
+ import { Typography } from "../Typography";
5
+ import { LinearGradient } from "expo-linear-gradient";
6
+ import { Image, View } from "react-native";
7
+ const RING = ["#F58529", "#DD2A7B"];
8
+ function Story({ image, label, seen = false, variant = "circle", size = 68, avatar, showAvatar = true, onPress, testID, }) {
9
+ if (variant === "card") {
10
+ return (_jsxs(Pressable, { accessibilityLabel: label, accessibilityRole: "button", onPress: onPress, style: { width: size * 1.6, borderRadius: 14, overflow: "hidden" }, testID: testID, children: [_jsx(Image, { source: image, style: { width: "100%", height: size * 2.6 } }), showAvatar ? (_jsx(View, { style: {
11
+ position: "absolute",
12
+ top: 8,
13
+ left: 8,
14
+ borderRadius: 999,
15
+ borderWidth: 3,
16
+ borderColor: seen ? theme.border.strong : theme.primary,
17
+ }, children: _jsx(Image, { source: avatar ?? image, style: { width: 34, height: 34, borderRadius: 17 } }) })) : null, label ? (_jsx(LinearGradient, { colors: ["transparent", "rgba(0,0,0,0.7)"], style: {
18
+ position: "absolute",
19
+ left: 0,
20
+ right: 0,
21
+ bottom: 0,
22
+ padding: 8,
23
+ paddingTop: 24,
24
+ }, children: _jsx(Typography.Text, { className: "text-white", numberOfLines: 2, semibold: true, variant: "caption", children: label }) })) : null] }));
25
+ }
26
+ const ringPadding = 3;
27
+ const innerSize = size - ringPadding * 2 - 4;
28
+ return (_jsxs(Pressable, { accessibilityLabel: label, accessibilityRole: "button", onPress: onPress, style: { alignItems: "center", width: size + 8, gap: 4 }, testID: testID, children: [_jsx(LinearGradient, { colors: seen ? [theme.border.strong, theme.border.strong] : RING, style: {
29
+ width: size,
30
+ height: size,
31
+ borderRadius: size / 2,
32
+ alignItems: "center",
33
+ justifyContent: "center",
34
+ }, children: _jsx(View, { style: {
35
+ width: innerSize + 4,
36
+ height: innerSize + 4,
37
+ borderRadius: (innerSize + 4) / 2,
38
+ backgroundColor: theme.bg.card,
39
+ alignItems: "center",
40
+ justifyContent: "center",
41
+ }, children: _jsx(Image, { source: image, style: { width: innerSize, height: innerSize, borderRadius: innerSize / 2 } }) }) }), label ? (_jsx(Typography.Text, { className: "text-text-secondary", numberOfLines: 1, style: { maxWidth: size + 6 }, variant: "caption", children: label })) : null] }));
42
+ }
43
+ export default Story;
@@ -0,0 +1,26 @@
1
+ import { type ImageSourcePropType } from "react-native";
2
+ export interface StoryTrayItem {
3
+ id: string;
4
+ image: ImageSourcePropType;
5
+ label?: string;
6
+ avatar?: ImageSourcePropType;
7
+ seen?: boolean;
8
+ }
9
+ export interface StoryTrayCreate {
10
+ label?: string;
11
+ image?: ImageSourcePropType;
12
+ onPress: () => void;
13
+ }
14
+ export interface StoryTrayProps {
15
+ stories: StoryTrayItem[];
16
+ onStoryPress?: (item: StoryTrayItem) => void;
17
+ create?: StoryTrayCreate;
18
+ variant?: "circle" | "card";
19
+ size?: number;
20
+ /** Mostrar el avatar del autor en cada card (solo variant="card"). */
21
+ showAvatar?: boolean;
22
+ className?: string;
23
+ testID?: string;
24
+ }
25
+ declare function StoryTray({ stories, onStoryPress, create, variant, size, showAvatar, className, testID, }: StoryTrayProps): import("react").JSX.Element;
26
+ export default StoryTray;
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import Story from "../Display/Display.Story";
4
+ import Pressable from "../primitives/Pressable";
5
+ import { theme } from "../theme";
6
+ import { Typography } from "../Typography";
7
+ import { Image, ScrollView, View } from "react-native";
8
+ function CreateCard({ create, size }) {
9
+ const w = size * 1.6;
10
+ return (_jsxs(Pressable, { accessibilityLabel: create.label ?? "Crear historia", accessibilityRole: "button", onPress: create.onPress, style: {
11
+ width: w,
12
+ borderRadius: 14,
13
+ overflow: "hidden",
14
+ backgroundColor: theme.bg.card,
15
+ borderWidth: 1,
16
+ borderColor: theme.border.light,
17
+ }, children: [create.image ? (_jsx(Image, { source: create.image, style: { width: "100%", height: size * 1.7 } })) : (_jsx(View, { style: { width: "100%", height: size * 1.7, backgroundColor: theme.bg.muted } })), _jsxs(View, { style: { alignItems: "center", paddingVertical: 14 }, children: [_jsx(View, { style: {
18
+ position: "absolute",
19
+ top: -16,
20
+ width: 32,
21
+ height: 32,
22
+ borderRadius: 16,
23
+ backgroundColor: theme.primary,
24
+ alignItems: "center",
25
+ justifyContent: "center",
26
+ borderWidth: 3,
27
+ borderColor: theme.bg.card,
28
+ }, children: _jsx(Icon, { color: theme.text.inverse, name: "add", size: 20 }) }), _jsx(Typography.Text, { className: "text-text-primary mt-2", semibold: true, variant: "caption", children: create.label ?? "Crear historia" })] })] }));
29
+ }
30
+ function CreateCircle({ create, size }) {
31
+ return (_jsxs(Pressable, { accessibilityLabel: create.label ?? "Crear historia", accessibilityRole: "button", onPress: create.onPress, style: { alignItems: "center", width: size + 8, gap: 4 }, children: [_jsx(View, { style: {
32
+ width: size,
33
+ height: size,
34
+ borderRadius: size / 2,
35
+ backgroundColor: theme.bg.muted,
36
+ alignItems: "center",
37
+ justifyContent: "center",
38
+ }, children: _jsx(Icon, { color: theme.primary, name: "add-circle", size: size * 0.5 }) }), _jsx(Typography.Text, { className: "text-text-secondary", numberOfLines: 1, style: { maxWidth: size + 6 }, variant: "caption", children: create.label ?? "Crear" })] }));
39
+ }
40
+ function StoryTray({ stories, onStoryPress, create, variant = "card", size = 68, showAvatar = true, className, testID, }) {
41
+ return (_jsxs(ScrollView, { className: className, contentContainerStyle: { gap: 8, paddingHorizontal: 12, paddingVertical: 4 }, horizontal: true, showsHorizontalScrollIndicator: false, testID: testID, children: [create ? (variant === "card" ? (_jsx(CreateCard, { create: create, size: size })) : (_jsx(CreateCircle, { create: create, size: size }))) : null, stories.map((item) => (_jsx(Story, { avatar: item.avatar, image: item.image, label: item.label, onPress: () => onStoryPress?.(item), seen: item.seen, showAvatar: showAvatar, size: size, variant: variant }, item.id)))] }));
42
+ }
43
+ export default StoryTray;
@@ -0,0 +1,26 @@
1
+ import type { ReactNode } from "react";
2
+ import { type ImageSourcePropType } from "react-native";
3
+ export interface StoryViewerSlide {
4
+ image: ImageSourcePropType;
5
+ }
6
+ export interface StoryViewerProps {
7
+ visible: boolean;
8
+ slides: StoryViewerSlide[];
9
+ index: number;
10
+ onIndexChange: (index: number) => void;
11
+ onClose: () => void;
12
+ title: string;
13
+ subtitle?: string;
14
+ time?: string;
15
+ avatar?: ImageSourcePropType;
16
+ progress?: number;
17
+ muted?: boolean;
18
+ paused?: boolean;
19
+ onToggleMute?: () => void;
20
+ onTogglePause?: () => void;
21
+ onMore?: () => void;
22
+ footer?: ReactNode;
23
+ testID?: string;
24
+ }
25
+ declare function StoryViewer({ visible, slides, index, onIndexChange, onClose, title, subtitle, time, avatar, progress, muted, paused, onToggleMute, onTogglePause, onMore, footer, testID, }: StoryViewerProps): import("react").JSX.Element | null;
26
+ export default StoryViewer;
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import Pressable from "../primitives/Pressable";
4
+ import { theme } from "../theme";
5
+ import { Typography } from "../Typography";
6
+ import { LinearGradient } from "expo-linear-gradient";
7
+ import { Image, Modal, Pressable as RNPressable, View, } from "react-native";
8
+ import { useSafeAreaInsets } from "react-native-safe-area-context";
9
+ function StoryViewer({ visible, slides, index, onIndexChange, onClose, title, subtitle, time, avatar, progress = 1, muted, paused, onToggleMute, onTogglePause, onMore, footer, testID, }) {
10
+ const insets = useSafeAreaInsets();
11
+ const current = slides[index];
12
+ const goPrev = () => {
13
+ if (index > 0)
14
+ onIndexChange(index - 1);
15
+ };
16
+ const goNext = () => {
17
+ if (index < slides.length - 1)
18
+ onIndexChange(index + 1);
19
+ else
20
+ onClose();
21
+ };
22
+ if (!current)
23
+ return null;
24
+ return (_jsx(Modal, { animationType: "fade", onRequestClose: onClose, statusBarTranslucent: true, transparent: false, visible: visible, children: _jsxs(View, { style: { flex: 1, backgroundColor: "#000" }, testID: testID, children: [_jsx(Image, { resizeMode: "contain", source: current.image, style: {
25
+ position: "absolute",
26
+ top: 0,
27
+ left: 0,
28
+ right: 0,
29
+ bottom: 0,
30
+ width: "100%",
31
+ height: "100%",
32
+ } }), _jsxs(View, { style: {
33
+ position: "absolute",
34
+ top: 0,
35
+ bottom: 0,
36
+ left: 0,
37
+ right: 0,
38
+ flexDirection: "row",
39
+ }, children: [_jsx(RNPressable, { onPress: goPrev, style: { width: "33%" } }), _jsx(RNPressable, { onPress: goNext, style: { flex: 1 } })] }), _jsxs(LinearGradient, { colors: ["rgba(0,0,0,0.6)", "transparent"], style: {
40
+ position: "absolute",
41
+ top: 0,
42
+ left: 0,
43
+ right: 0,
44
+ paddingTop: insets.top + 8,
45
+ paddingHorizontal: 10,
46
+ }, children: [_jsx(View, { style: { flexDirection: "row", gap: 4 }, children: slides.map((_, i) => (_jsx(View, { style: {
47
+ flex: 1,
48
+ height: 2.5,
49
+ borderRadius: 2,
50
+ backgroundColor: "rgba(255,255,255,0.35)",
51
+ overflow: "hidden",
52
+ }, children: _jsx(View, { style: {
53
+ height: "100%",
54
+ width: i < index
55
+ ? "100%"
56
+ : i === index
57
+ ? `${Math.round(progress * 100)}%`
58
+ : "0%",
59
+ backgroundColor: "#fff",
60
+ } }) }, i))) }), _jsxs(View, { style: { flexDirection: "row", alignItems: "center", marginTop: 12 }, children: [avatar ? (_jsx(Image, { source: avatar, style: { width: 36, height: 36, borderRadius: 18, marginRight: 8 } })) : null, _jsxs(View, { style: { flex: 1 }, children: [_jsxs(View, { style: { flexDirection: "row", alignItems: "center", gap: 6 }, children: [_jsx(Typography.Text, { className: "text-white", semibold: true, variant: "body", children: title }), time ? (_jsx(Typography.Text, { style: { color: "rgba(255,255,255,0.7)" }, variant: "caption", children: time })) : null] }), subtitle ? (_jsx(Typography.Text, { numberOfLines: 1, style: { color: "rgba(255,255,255,0.8)" }, variant: "caption", children: subtitle })) : null] }), onToggleMute ? (_jsx(Pressable, { accessibilityLabel: muted ? "Activar sonido" : "Silenciar", hitSlop: 8, onPress: onToggleMute, children: _jsx(Icon, { color: "#fff", name: muted ? "volume-mute" : "volume-high", size: 22 }) })) : null, onTogglePause ? (_jsx(Pressable, { accessibilityLabel: paused ? "Reanudar" : "Pausar", hitSlop: 8, onPress: onTogglePause, style: { marginLeft: 14 }, children: _jsx(Icon, { color: "#fff", name: paused ? "play" : "pause", size: 22 }) })) : null, onMore ? (_jsx(Pressable, { accessibilityLabel: "M\u00E1s opciones", hitSlop: 8, onPress: onMore, style: { marginLeft: 14 }, children: _jsx(Icon, { color: "#fff", name: "ellipsis-horizontal", size: 22 }) })) : null, _jsx(Pressable, { accessibilityLabel: "Cerrar", hitSlop: 8, onPress: onClose, style: { marginLeft: 14 }, children: _jsx(Icon, { color: "#fff", name: "close", size: 24 }) })] })] }), index < slides.length - 1 ? (_jsx(Pressable, { accessibilityLabel: "Siguiente", onPress: goNext, style: {
61
+ position: "absolute",
62
+ right: 8,
63
+ top: "50%",
64
+ width: 36,
65
+ height: 36,
66
+ borderRadius: 18,
67
+ backgroundColor: "rgba(255,255,255,0.9)",
68
+ alignItems: "center",
69
+ justifyContent: "center",
70
+ }, children: _jsx(Icon, { color: theme.text.primary, name: "chevron-forward", size: 22 }) })) : null, footer ? (_jsx(View, { style: {
71
+ position: "absolute",
72
+ left: 0,
73
+ right: 0,
74
+ bottom: 0,
75
+ paddingBottom: insets.bottom + 8,
76
+ paddingHorizontal: 16,
77
+ }, children: footer })) : null] }) }));
78
+ }
79
+ export default StoryViewer;
@@ -0,0 +1,15 @@
1
+ import { type ReactNode } from "react";
2
+ export interface SwipeRowAction {
3
+ label?: string;
4
+ icon?: string;
5
+ color?: string;
6
+ onPress: () => void;
7
+ }
8
+ export interface SwipeableRowProps {
9
+ children: ReactNode;
10
+ rightActions?: SwipeRowAction[];
11
+ leftActions?: SwipeRowAction[];
12
+ testID?: string;
13
+ }
14
+ declare function SwipeableRow({ children, rightActions, leftActions, testID }: SwipeableRowProps): import("react").JSX.Element;
15
+ export default SwipeableRow;
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import { theme } from "../theme";
4
+ import { Typography } from "../Typography";
5
+ import { useRef } from "react";
6
+ import { TouchableOpacity, View } from "react-native";
7
+ import { Swipeable } from "react-native-gesture-handler";
8
+ function ActionButtons({ actions, onDone, }) {
9
+ return (_jsx(View, { style: { flexDirection: "row" }, children: actions.map((action, index) => (_jsxs(TouchableOpacity, { accessibilityLabel: action.label ?? "Acción", accessibilityRole: "button", activeOpacity: 0.8, onPress: () => {
10
+ onDone();
11
+ action.onPress();
12
+ }, style: {
13
+ backgroundColor: action.color ?? theme.danger,
14
+ justifyContent: "center",
15
+ alignItems: "center",
16
+ paddingHorizontal: 20,
17
+ }, children: [action.icon ? (_jsx(Icon, { color: theme.text.inverse, name: action.icon, size: 20 })) : null, action.label ? (_jsx(Typography.Text, { className: "text-text-inverse text-xs mt-1", children: action.label })) : null] }, index))) }));
18
+ }
19
+ function SwipeableRow({ children, rightActions, leftActions, testID }) {
20
+ const ref = useRef(null);
21
+ const close = () => ref.current?.close();
22
+ return (_jsx(Swipeable, { ref: ref, renderLeftActions: leftActions?.length
23
+ ? () => _jsx(ActionButtons, { actions: leftActions, onDone: close })
24
+ : undefined, renderRightActions: rightActions?.length
25
+ ? () => _jsx(ActionButtons, { actions: rightActions, onDone: close })
26
+ : undefined, testID: testID, children: children }));
27
+ }
28
+ export default SwipeableRow;
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ export interface TagProps {
3
+ label: string;
4
+ leading?: ReactNode;
5
+ dotColor?: string;
6
+ className?: string;
7
+ testID?: string;
8
+ }
9
+ declare function Tag({ label, leading, dotColor, className, testID }: TagProps): import("react").JSX.Element;
10
+ export default Tag;
11
+ export { Tag };
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import { cn } from "../theme/tw";
3
+ import { Typography } from "../Typography";
4
+ import { View } from "react-native";
5
+ function Tag({ label, leading, dotColor, className, testID }) {
6
+ return (_jsxs(View, { className: cn("flex-row items-center self-start rounded-full bg-bg-muted px-2.5 py-1 gap-1.5", className), testID: testID, children: [dotColor ? (_jsx(View, { style: { width: 8, height: 8, borderRadius: 4, backgroundColor: dotColor } })) : null, leading, _jsx(Typography.Text, { className: "text-text-secondary text-xs font-medium", numberOfLines: 1, children: label })] }));
7
+ }
8
+ export default Tag;
9
+ export { Tag };
@@ -0,0 +1,13 @@
1
+ export interface TimelineStep {
2
+ title: string;
3
+ description?: string;
4
+ time?: string;
5
+ }
6
+ export interface TimelineProps {
7
+ steps: TimelineStep[];
8
+ current: number;
9
+ className?: string;
10
+ testID?: string;
11
+ }
12
+ declare function Timeline({ steps, current, className, testID }: TimelineProps): import("react").JSX.Element;
13
+ export default Timeline;
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Icon from "../Display/Display.Icon";
3
+ import { theme } from "../theme";
4
+ import { cn } from "../theme/tw";
5
+ import { Typography } from "../Typography";
6
+ import { View } from "react-native";
7
+ function Timeline({ steps, current, className, testID }) {
8
+ return (_jsx(View, { className: className, testID: testID, children: steps.map((step, index) => {
9
+ const done = index < current;
10
+ const active = index === current;
11
+ const reached = done || active;
12
+ const isLast = index === steps.length - 1;
13
+ const dotColor = reached ? theme.primary : theme.bg.muted;
14
+ return (_jsxs(View, { className: "flex-row", children: [_jsxs(View, { className: "items-center", style: { width: 28 }, children: [_jsx(View, { className: "w-6 h-6 rounded-full items-center justify-center", style: { backgroundColor: dotColor }, children: done ? (_jsx(Icon, { color: theme.text.inverse, name: "checkmark", size: 14 })) : (_jsx(View, { className: "w-2 h-2 rounded-full", style: {
15
+ backgroundColor: active ? theme.text.inverse : theme.border.strong,
16
+ } })) }), !isLast ? (_jsx(View, { className: "flex-1 w-0.5 my-1", style: { backgroundColor: done ? theme.primary : theme.border.default } })) : null] }), _jsxs(View, { className: cn("flex-1 pb-5", isLast && "pb-0"), children: [_jsxs(View, { className: "flex-row items-center justify-between", children: [_jsx(Typography.Text, { className: reached ? "text-text-primary" : "text-text-tertiary", semibold: active, variant: "body", children: step.title }), step.time ? (_jsx(Typography.Text, { className: "text-text-tertiary", variant: "caption", children: step.time })) : null] }), step.description ? (_jsx(Typography.Text, { className: "text-text-secondary", variant: "bodySmall", children: step.description })) : null] })] }, step.title));
17
+ }) }));
18
+ }
19
+ export default Timeline;
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from "react";
2
+ export interface TooltipProps {
3
+ content: string;
4
+ children: ReactNode;
5
+ placement?: "top" | "bottom";
6
+ width?: number;
7
+ testID?: string;
8
+ }
9
+ declare function Tooltip({ content, children, placement, width, testID, }: TooltipProps): import("react").JSX.Element;
10
+ export default Tooltip;
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
2
+ import Pressable from "../primitives/Pressable";
3
+ import { theme } from "../theme";
4
+ import { Typography } from "../Typography";
5
+ import { useState } from "react";
6
+ import { View } from "react-native";
7
+ function Tooltip({ content, children, placement = "top", width = 200, testID, }) {
8
+ const [visible, setVisible] = useState(false);
9
+ const isTop = placement === "top";
10
+ return (_jsxs(View, { style: { position: "relative", alignSelf: "flex-start" }, testID: testID, children: [_jsx(Pressable, { accessibilityHint: content, accessibilityRole: "button", onPress: () => setVisible((v) => !v), children: children }), visible ? (_jsx(View, { style: {
11
+ position: "absolute",
12
+ [isTop ? "bottom" : "top"]: "100%",
13
+ left: 0,
14
+ width,
15
+ marginVertical: 6,
16
+ paddingHorizontal: 10,
17
+ paddingVertical: 8,
18
+ borderRadius: 8,
19
+ backgroundColor: theme.text.primary,
20
+ ...theme.shadow.md,
21
+ zIndex: 1700,
22
+ }, children: _jsx(Typography.Text, { style: { color: theme.bg.card }, variant: "bodySmall", children: content }) })) : null] }));
23
+ }
24
+ export default Tooltip;
@@ -1,14 +1,80 @@
1
+ import AvatarGroup from "../Display/Display.AvatarGroup";
1
2
  import Badge, { type BadgeProps, BadgeVariants } from "../Display/Display.Badge";
3
+ import Carousel from "../Display/Display.Carousel";
4
+ import Chip from "../Display/Display.Chip";
2
5
  import CopyableText from "../Display/Display.CopyableText";
3
6
  import CountRecords from "../Display/Display.CountRecords";
7
+ import DataTable from "../Display/Display.DataTable";
4
8
  import Date from "../Display/Display.Date";
5
9
  import Divider from "../Display/Display.Divider";
10
+ import IconBadge from "../Display/Display.IconBadge";
11
+ import DisplayImage from "../Display/Display.Image";
12
+ import KeyValue from "../Display/Display.KeyValue";
13
+ import ListItem from "../Display/Display.ListItem";
14
+ import MediaCard from "../Display/Display.MediaCard";
15
+ import MediaEmbed from "../Display/Display.MediaEmbed";
6
16
  import MenuButton from "../Display/Display.MenuButton";
7
17
  import Monetary from "../Display/Display.Monetary";
18
+ import PriceTag from "../Display/Display.PriceTag";
19
+ import ProductCard from "../Display/Display.ProductCard";
20
+ import Rating from "../Display/Display.Rating";
21
+ import SearchHistory from "../Display/Display.SearchHistory";
22
+ import SectionHeader from "../Display/Display.SectionHeader";
23
+ import Stat from "../Display/Display.Stat";
24
+ import StatCard from "../Display/Display.StatCard";
25
+ import StatusDot from "../Display/Display.StatusDot";
26
+ import Story from "../Display/Display.Story";
27
+ import StoryTray from "../Display/Display.StoryTray";
28
+ import StoryViewer from "../Display/Display.StoryViewer";
29
+ import SwipeableRow from "../Display/Display.SwipeableRow";
30
+ import Tag from "../Display/Display.Tag";
31
+ import Timeline from "../Display/Display.Timeline";
32
+ import Tooltip from "../Display/Display.Tooltip";
8
33
  export declare const Display: {
9
34
  Badge: typeof Badge;
10
35
  BadgeVariants: typeof BadgeVariants;
36
+ Accordion: (({ children, className }: {
37
+ children: import("react").ReactNode;
38
+ className?: string;
39
+ }) => import("react").JSX.Element) & {
40
+ Item: ({ title, children, defaultOpen, className, testID, }: import("../Display/Display.Accordion").AccordionItemProps) => import("react").JSX.Element;
41
+ };
11
42
  Avatar: import("react").FC<import("../Display/Display.Avatar").AvatarProps>;
43
+ AvatarGroup: typeof AvatarGroup;
44
+ Card: (({ padding, elevation, onPress, className, children, testID, }: import("../Display/Display.Card").CardProps) => import("react").JSX.Element) & {
45
+ Title: ({ children, className }: {
46
+ children: import("react").ReactNode;
47
+ className?: string;
48
+ }) => import("react").JSX.Element;
49
+ Footer: ({ children, className }: {
50
+ children: import("react").ReactNode;
51
+ className?: string;
52
+ }) => import("react").JSX.Element;
53
+ };
54
+ Carousel: typeof Carousel;
55
+ Chip: typeof Chip;
56
+ Tag: typeof Tag;
57
+ Image: typeof DisplayImage;
58
+ MediaCard: typeof MediaCard;
59
+ MediaEmbed: typeof MediaEmbed;
60
+ Story: typeof Story;
61
+ StoryTray: typeof StoryTray;
62
+ StoryViewer: typeof StoryViewer;
63
+ ListItem: typeof ListItem;
64
+ KeyValue: typeof KeyValue;
65
+ DataTable: typeof DataTable;
66
+ Stat: typeof Stat;
67
+ StatCard: typeof StatCard;
68
+ StatusDot: typeof StatusDot;
69
+ PriceTag: typeof PriceTag;
70
+ ProductCard: typeof ProductCard;
71
+ Timeline: typeof Timeline;
72
+ SearchHistory: typeof SearchHistory;
73
+ SectionHeader: typeof SectionHeader;
74
+ Rating: typeof Rating;
75
+ SwipeableRow: typeof SwipeableRow;
76
+ Tooltip: typeof Tooltip;
77
+ IconBadge: typeof IconBadge;
12
78
  CopyableText: typeof CopyableText;
13
79
  Date: typeof Date;
14
80
  Divider: typeof Divider;