@tallyui/components 1.0.0 → 2.0.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 (136) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +1076 -76
  3. package/dist/index.js +4662 -355
  4. package/package.json +27 -5
  5. package/src/cart/cart-line-actions.tsx +40 -0
  6. package/src/cart/cart-line.tsx +18 -32
  7. package/src/cart/cart-note-input.tsx +46 -0
  8. package/src/cart/cart-panel.tsx +39 -26
  9. package/src/cart/cart-total.tsx +43 -47
  10. package/src/cart/discount-badge.tsx +19 -0
  11. package/src/cart/index.ts +4 -1
  12. package/src/checkout/cash-tendered.tsx +101 -0
  13. package/src/checkout/change-display.tsx +19 -0
  14. package/src/checkout/index.ts +3 -0
  15. package/src/checkout/order-summary-line.tsx +7 -8
  16. package/src/checkout/order-summary.tsx +8 -7
  17. package/src/checkout/payment-method-card.tsx +10 -9
  18. package/src/checkout/payment-selector.tsx +5 -5
  19. package/src/checkout/receipt-preview.tsx +78 -0
  20. package/src/customer/customer-card.tsx +8 -9
  21. package/src/customer/customer-form.tsx +70 -0
  22. package/src/customer/customer-order-history.tsx +34 -0
  23. package/src/customer/customer-select.tsx +63 -24
  24. package/src/customer/index.ts +2 -0
  25. package/src/index.ts +112 -1
  26. package/src/input/filter-chip.tsx +85 -27
  27. package/src/input/index.ts +1 -0
  28. package/src/input/quantity-stepper.tsx +64 -0
  29. package/src/input/search-input.tsx +30 -7
  30. package/src/layout/checkout-layout.tsx +46 -0
  31. package/src/layout/index.ts +5 -0
  32. package/src/layout/live-tab-screen.tsx +54 -0
  33. package/src/layout/pos-layout.tsx +64 -0
  34. package/src/layout/settings-layout.tsx +58 -0
  35. package/src/layout/store-settings-choice-screen.tsx +142 -0
  36. package/src/order/index.ts +4 -0
  37. package/src/order/order-card.tsx +48 -0
  38. package/src/order/order-detail.tsx +82 -0
  39. package/src/order/order-list.tsx +39 -0
  40. package/src/order/order-status-badge.tsx +32 -0
  41. package/src/product/category-nav.tsx +70 -0
  42. package/src/product/index.ts +3 -0
  43. package/src/product/product-card.tsx +36 -8
  44. package/src/product/product-grid.tsx +25 -6
  45. package/src/product/product-image.tsx +28 -7
  46. package/src/product/product-list.tsx +44 -0
  47. package/src/product/product-price.tsx +77 -22
  48. package/src/product/product-sku.tsx +5 -5
  49. package/src/product/product-stock-badge.tsx +41 -28
  50. package/src/product/product-title.tsx +2 -3
  51. package/src/product/product-variant-picker.tsx +61 -0
  52. package/src/register/cash-count-input.tsx +85 -0
  53. package/src/register/closure-sheet.tsx +155 -0
  54. package/src/register/index.ts +12 -0
  55. package/src/register/movement-sheet.tsx +118 -0
  56. package/src/register/open-register-card.tsx +109 -0
  57. package/src/register/register-bar.helpers.ts +57 -0
  58. package/src/register/register-bar.tsx +85 -0
  59. package/src/register/register-column.tsx +117 -0
  60. package/src/register/register-count.tsx +330 -0
  61. package/src/register/register-open-close.tsx +52 -0
  62. package/src/register/register-panel.tsx +151 -0
  63. package/src/register/register-picker.tsx +60 -0
  64. package/src/register/register-summary.tsx +72 -0
  65. package/src/sale/cart-bar.tsx +18 -0
  66. package/src/sale/cart.tsx +66 -0
  67. package/src/sale/catalogue.tsx +131 -0
  68. package/src/sale/discount-form.tsx +85 -0
  69. package/src/sale/index.ts +9 -0
  70. package/src/sale/orders-list.tsx +66 -0
  71. package/src/sale/print-style.ts +11 -0
  72. package/src/sale/receipt.tsx +61 -0
  73. package/src/sale/sync-status.tsx +20 -0
  74. package/src/sale/tender.tsx +35 -0
  75. package/src/settings/connector-status.tsx +65 -0
  76. package/src/settings/index.ts +3 -0
  77. package/src/settings/settings-group.tsx +23 -0
  78. package/src/settings/settings-row.tsx +23 -0
  79. package/src/ui/accordion/index.tsx +59 -0
  80. package/src/ui/alert-dialog/index.tsx +91 -0
  81. package/src/ui/avatar/index.tsx +50 -0
  82. package/src/ui/badge/index.tsx +60 -0
  83. package/src/ui/button/index.tsx +90 -0
  84. package/src/ui/card/index.tsx +60 -0
  85. package/src/ui/checkbox/index.tsx +29 -0
  86. package/src/ui/collapsible/index.tsx +24 -0
  87. package/src/ui/combobox/index.tsx +98 -0
  88. package/src/ui/context-menu/index.tsx +159 -0
  89. package/src/ui/dialog/index.tsx +92 -0
  90. package/src/ui/dropdown-menu/index.tsx +161 -0
  91. package/src/ui/hover-card/index.tsx +31 -0
  92. package/src/ui/hstack/index.tsx +43 -0
  93. package/src/ui/icon/index.tsx +44 -0
  94. package/src/ui/icon/search-icon.tsx +9 -0
  95. package/src/ui/icon/svg-icon.tsx +36 -0
  96. package/src/ui/icon-button/index.tsx +58 -0
  97. package/src/ui/index.ts +99 -0
  98. package/src/ui/input/index.tsx +100 -0
  99. package/src/ui/label/index.tsx +26 -0
  100. package/src/ui/loader/index.tsx +37 -0
  101. package/src/ui/popover/index.tsx +31 -0
  102. package/src/ui/progress/index.tsx +28 -0
  103. package/src/ui/radio-group/index.tsx +38 -0
  104. package/src/ui/select/index.tsx +96 -0
  105. package/src/ui/separator/index.tsx +29 -0
  106. package/src/ui/slider/index.tsx +28 -0
  107. package/src/ui/switch/index.tsx +31 -0
  108. package/src/ui/table/index.tsx +59 -0
  109. package/src/ui/tabs/index.tsx +53 -0
  110. package/src/ui/text/index.tsx +36 -0
  111. package/src/ui/textarea/index.tsx +29 -0
  112. package/src/ui/toast/index.tsx +52 -0
  113. package/src/ui/toggle/index.tsx +69 -0
  114. package/src/ui/toggle-group/index.tsx +66 -0
  115. package/src/ui/tooltip/index.tsx +30 -0
  116. package/src/ui/vstack/index.tsx +43 -0
  117. package/src/uniwind-env.d.ts +9 -1
  118. package/src/__tests__/cart-line.test.tsx +0 -53
  119. package/src/__tests__/cart-panel.test.tsx +0 -55
  120. package/src/__tests__/cart-total.test.tsx +0 -60
  121. package/src/__tests__/customer-card.test.tsx +0 -47
  122. package/src/__tests__/customer-select.test.tsx +0 -33
  123. package/src/__tests__/filter-chip.test.tsx +0 -40
  124. package/src/__tests__/helpers.ts +0 -111
  125. package/src/__tests__/order-summary-line.test.tsx +0 -18
  126. package/src/__tests__/order-summary.test.tsx +0 -32
  127. package/src/__tests__/payment-method-card.test.tsx +0 -24
  128. package/src/__tests__/payment-selector.test.tsx +0 -23
  129. package/src/__tests__/product-card.test.tsx +0 -31
  130. package/src/__tests__/product-grid.test.tsx +0 -37
  131. package/src/__tests__/product-image.test.tsx +0 -54
  132. package/src/__tests__/product-price.test.tsx +0 -68
  133. package/src/__tests__/product-sku.test.tsx +0 -47
  134. package/src/__tests__/product-stock-badge.test.tsx +0 -58
  135. package/src/__tests__/product-title.test.tsx +0 -38
  136. package/src/__tests__/search-input.test.tsx +0 -22
package/dist/index.d.ts CHANGED
@@ -1,6 +1,324 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { TextProps, ImageProps, StyleProp, ImageStyle, ViewProps, TextInputProps } from 'react-native';
3
- import { ReactNode } from 'react';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import * as React$1 from 'react';
4
+ import { ReactNode, JSX } from 'react';
5
+ import * as react_native from 'react-native';
6
+ import { Text as Text$1, ViewProps, View, PressableProps, TextProps as TextProps$1, TextInputProps, TextInput, Pressable, StyleProp, ImageStyle } from 'react-native';
7
+ import { VariantProps } from 'class-variance-authority';
8
+ import { SvgProps } from 'react-native-svg';
9
+ import { Separator as Separator$1, Label as Label$1, Tabs as Tabs$1, Dialog as Dialog$1, AlertDialog as AlertDialog$1, Select as Select$1, Combobox as Combobox$1, DropdownMenu as DropdownMenu$1, ContextMenu as ContextMenu$1, Popover as Popover$1, Tooltip as Tooltip$1, HoverCard as HoverCard$1, Accordion as Accordion$1, Collapsible as Collapsible$1, Checkbox as Checkbox$1, Switch as Switch$1, RadioGroup as RadioGroup$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1, Progress as Progress$1, Slider as Slider$1, Image } from '@tallyui/primitives';
10
+ export { TextClassContext } from '@tallyui/primitives';
11
+ import { Money, ProductTraits, StoreSettingsChoices, StoreSettingsChoice } from '@tallyui/core';
12
+ import { useRegisterSession, MovementType, useSale, AppliedDiscount, Discount, CatalogueEntry, Order, OutboxState, PosOrder } from '@tallyui/pos';
13
+
14
+ declare const textVariants: (props?: ({
15
+ variant?: "link" | "default" | null | undefined;
16
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
17
+ type TextProps = React$1.ComponentPropsWithoutRef<typeof Text$1> & VariantProps<typeof textVariants> & {
18
+ asChild?: boolean;
19
+ };
20
+ declare function Text({ className, variant, asChild, children, ...props }: TextProps): react_jsx_runtime.JSX.Element;
21
+
22
+ declare const hstackVariants: (props?: ({
23
+ space?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
24
+ reversed?: boolean | null | undefined;
25
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
26
+ type HStackProps = ViewProps & VariantProps<typeof hstackVariants>;
27
+ declare const HStack: React$1.ForwardRefExoticComponent<ViewProps & VariantProps<(props?: ({
28
+ space?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
29
+ reversed?: boolean | null | undefined;
30
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<View>>;
31
+
32
+ declare const vstackVariants: (props?: ({
33
+ space?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
34
+ reversed?: boolean | null | undefined;
35
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
36
+ type VStackProps = ViewProps & VariantProps<typeof vstackVariants>;
37
+ declare const VStack: React$1.ForwardRefExoticComponent<ViewProps & VariantProps<(props?: ({
38
+ space?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
39
+ reversed?: boolean | null | undefined;
40
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<View>>;
41
+
42
+ declare const iconVariants: (props?: ({
43
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
44
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
45
+ type IconProps = ViewProps & VariantProps<typeof iconVariants>;
46
+ declare const Icon: React$1.ForwardRefExoticComponent<ViewProps & VariantProps<(props?: ({
47
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
48
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<View>>;
49
+
50
+ type SvgIconProps = {
51
+ size?: number;
52
+ color?: string;
53
+ strokeWidth?: number;
54
+ accessibilityLabel?: string;
55
+ } & Omit<SvgProps, 'width' | 'height' | 'color'>;
56
+ declare function createSvgIcon(name: string, render: (props: {
57
+ strokeWidth: number;
58
+ }) => React$1.ReactNode): {
59
+ ({ size, color, strokeWidth, accessibilityLabel, ...props }: SvgIconProps): react_jsx_runtime.JSX.Element;
60
+ displayName: string;
61
+ };
62
+
63
+ declare const SearchIcon: {
64
+ ({ size, color, strokeWidth, accessibilityLabel, ...props }: SvgIconProps): react_jsx_runtime.JSX.Element;
65
+ displayName: string;
66
+ };
67
+
68
+ declare const loaderVariants: (props?: ({
69
+ size?: "sm" | "md" | "lg" | null | undefined;
70
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
71
+ type LoaderProps = Omit<ViewProps, 'children'> & VariantProps<typeof loaderVariants>;
72
+ declare function Loader({ className, size, ...props }: LoaderProps): react_jsx_runtime.JSX.Element;
73
+
74
+ declare const badgeVariants: (props?: ({
75
+ variant?: "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | null | undefined;
76
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
77
+ declare const badgeTextVariants: (props?: ({
78
+ variant?: "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | null | undefined;
79
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
80
+ type BadgeProps = ViewProps & VariantProps<typeof badgeVariants> & {
81
+ label?: string;
82
+ };
83
+ declare function Badge({ className, variant, label, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
84
+
85
+ declare const avatarVariants: (props?: ({
86
+ size?: "sm" | "md" | "lg" | "xl" | null | undefined;
87
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
88
+ type AvatarProps = ViewProps & VariantProps<typeof avatarVariants> & {
89
+ src?: string;
90
+ alt?: string;
91
+ fallback?: string;
92
+ };
93
+ declare function Avatar({ className, size, src, alt, fallback, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
94
+
95
+ declare const buttonVariants: (props?: ({
96
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
97
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
98
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
99
+ declare const buttonTextVariants: (props?: ({
100
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
101
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
102
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
103
+ type ButtonProps = PressableProps & VariantProps<typeof buttonVariants> & {
104
+ asChild?: boolean;
105
+ };
106
+ declare const Button: React$1.ForwardRefExoticComponent<PressableProps & VariantProps<(props?: ({
107
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
108
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
109
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & {
110
+ asChild?: boolean;
111
+ } & React$1.RefAttributes<react_native.View>>;
112
+
113
+ declare const iconButtonVariants: (props?: ({
114
+ variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
115
+ size?: "sm" | "md" | "lg" | null | undefined;
116
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
117
+ type IconButtonProps = PressableProps & VariantProps<typeof iconButtonVariants> & {
118
+ asChild?: boolean;
119
+ };
120
+ declare const IconButton: React$1.ForwardRefExoticComponent<PressableProps & VariantProps<(props?: ({
121
+ variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
122
+ size?: "sm" | "md" | "lg" | null | undefined;
123
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & {
124
+ asChild?: boolean;
125
+ } & React$1.RefAttributes<react_native.View>>;
126
+
127
+ declare const Card: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
128
+ declare const CardHeader: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
129
+ declare const CardTitle: React$1.ForwardRefExoticComponent<TextProps$1 & React$1.RefAttributes<Text$1>>;
130
+ declare const CardDescription: React$1.ForwardRefExoticComponent<TextProps$1 & React$1.RefAttributes<Text$1>>;
131
+ declare const CardContent: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
132
+ declare const CardFooter: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
133
+
134
+ type SeparatorProps = React$1.ComponentPropsWithoutRef<typeof Separator$1.Root>;
135
+ declare const Separator: React$1.ForwardRefExoticComponent<Omit<Omit<Separator$1.RootProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
136
+
137
+ type LabelProps = React$1.ComponentPropsWithoutRef<typeof Label$1.Root>;
138
+ declare const Label: React$1.ForwardRefExoticComponent<Omit<Omit<Label$1.RootProps, "ref"> & React$1.RefAttributes<Text$1>, "ref"> & React$1.RefAttributes<Text$1>>;
139
+
140
+ interface InputContextType {
141
+ focused: boolean;
142
+ disabled: boolean;
143
+ }
144
+ declare function useInputContext(): InputContextType;
145
+ interface InputRootProps extends ViewProps {
146
+ disabled?: boolean;
147
+ }
148
+ declare const InputRoot: React$1.ForwardRefExoticComponent<InputRootProps & React$1.RefAttributes<View>>;
149
+ declare const InputSlot: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
150
+ declare const InputField: React$1.ForwardRefExoticComponent<TextInputProps & React$1.RefAttributes<TextInput>>;
151
+ declare const Input: React$1.ForwardRefExoticComponent<InputRootProps & React$1.RefAttributes<View>> & {
152
+ Left: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
153
+ Field: React$1.ForwardRefExoticComponent<TextInputProps & React$1.RefAttributes<TextInput>>;
154
+ Right: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
155
+ };
156
+
157
+ type TextareaProps = TextInputProps & {
158
+ className?: string;
159
+ };
160
+ declare const Textarea: React$1.ForwardRefExoticComponent<TextInputProps & {
161
+ className?: string;
162
+ } & React$1.RefAttributes<TextInput>>;
163
+
164
+ declare const Tabs: typeof Tabs$1.Root;
165
+ declare function TabsList({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof Tabs$1.List>): react_jsx_runtime.JSX.Element;
166
+ declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<Omit<Tabs$1.TriggerProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
167
+ declare function TabsContent({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof Tabs$1.Content>): react_jsx_runtime.JSX.Element;
168
+
169
+ declare const Dialog: typeof Dialog$1.Root;
170
+ declare const DialogTrigger: React$1.ForwardRefExoticComponent<Omit<Dialog$1.TriggerProps, "ref"> & React$1.RefAttributes<View>>;
171
+ declare const DialogPortal: typeof Dialog$1.Portal;
172
+ declare const DialogClose: React$1.ForwardRefExoticComponent<Omit<Dialog$1.CloseProps, "ref"> & React$1.RefAttributes<View>>;
173
+ declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<Omit<Dialog$1.OverlayProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
174
+ declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<Omit<Dialog$1.ContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
175
+ declare function DialogHeader({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof View>): react_jsx_runtime.JSX.Element;
176
+ declare function DialogFooter({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof View>): react_jsx_runtime.JSX.Element;
177
+ declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<Omit<Dialog$1.TitleProps, "ref"> & React$1.RefAttributes<Text$1>, "ref"> & React$1.RefAttributes<Text$1>>;
178
+ declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<Omit<Dialog$1.DescriptionProps, "ref"> & React$1.RefAttributes<Text$1>, "ref"> & React$1.RefAttributes<Text$1>>;
179
+
180
+ declare const AlertDialog: typeof AlertDialog$1.Root;
181
+ declare const AlertDialogTrigger: React$1.ForwardRefExoticComponent<Omit<AlertDialog$1.TriggerProps, "ref"> & React$1.RefAttributes<View>>;
182
+ declare const AlertDialogPortal: typeof AlertDialog$1.Portal;
183
+ declare const AlertDialogOverlay: React$1.ForwardRefExoticComponent<Omit<Omit<AlertDialog$1.OverlayProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
184
+ declare const AlertDialogContent: React$1.ForwardRefExoticComponent<Omit<Omit<AlertDialog$1.ContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
185
+ declare function AlertDialogHeader({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof View>): react_jsx_runtime.JSX.Element;
186
+ declare function AlertDialogFooter({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof View>): react_jsx_runtime.JSX.Element;
187
+ declare const AlertDialogTitle: React$1.ForwardRefExoticComponent<Omit<Omit<AlertDialog$1.TitleProps, "ref"> & React$1.RefAttributes<react_native.Text>, "ref"> & React$1.RefAttributes<react_native.Text>>;
188
+ declare const AlertDialogDescription: React$1.ForwardRefExoticComponent<Omit<Omit<AlertDialog$1.DescriptionProps, "ref"> & React$1.RefAttributes<react_native.Text>, "ref"> & React$1.RefAttributes<react_native.Text>>;
189
+ declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDialog$1.ActionProps, "ref"> & React$1.RefAttributes<View>>;
190
+ declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialog$1.CancelProps, "ref"> & React$1.RefAttributes<View>>;
191
+
192
+ declare const Select: typeof Select$1.Root;
193
+ declare const SelectGroup: React$1.ForwardRefExoticComponent<Omit<Select$1.GroupProps, "ref"> & React$1.RefAttributes<View>>;
194
+ declare const SelectValue: React$1.ForwardRefExoticComponent<Omit<Select$1.ValueProps, "ref"> & React$1.RefAttributes<react_native.Text>>;
195
+ declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<Omit<Select$1.TriggerProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
196
+ declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<Omit<Select$1.ContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
197
+ declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<Omit<Select$1.LabelProps, "ref"> & React$1.RefAttributes<react_native.Text>, "ref"> & React$1.RefAttributes<react_native.Text>>;
198
+ declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<Omit<Select$1.ItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
199
+ declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<Omit<Select$1.SeparatorProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
200
+
201
+ declare const Combobox: typeof Combobox$1.Root;
202
+ declare const ComboboxTrigger: React$1.ForwardRefExoticComponent<Omit<Omit<Combobox$1.TriggerProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
203
+ declare const ComboboxInput: React$1.ForwardRefExoticComponent<Omit<Omit<Combobox$1.InputProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
204
+ declare const ComboboxContent: React$1.ForwardRefExoticComponent<Omit<Omit<Combobox$1.ContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
205
+ declare const ComboboxItem: React$1.ForwardRefExoticComponent<Omit<Omit<Combobox$1.ItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
206
+ declare const ComboboxEmpty: React$1.ForwardRefExoticComponent<react_native.ViewProps & React$1.RefAttributes<View>>;
207
+
208
+ declare const DropdownMenu: typeof DropdownMenu$1.Root;
209
+ declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<Omit<DropdownMenu$1.TriggerProps, "ref"> & React$1.RefAttributes<View>>;
210
+ declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<Omit<DropdownMenu$1.GroupProps, "ref"> & React$1.RefAttributes<View>>;
211
+ declare const DropdownMenuPortal: typeof DropdownMenu$1.Portal;
212
+ declare const DropdownMenuSub: typeof DropdownMenu$1.Sub;
213
+ declare const DropdownMenuRadioGroup: React$1.ForwardRefExoticComponent<Omit<DropdownMenu$1.RadioGroupProps, "ref"> & React$1.RefAttributes<View>>;
214
+ declare const DropdownMenuContent: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.ContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
215
+ declare const DropdownMenuItem: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.ItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & {
216
+ inset?: boolean;
217
+ } & React$1.RefAttributes<View>>;
218
+ declare const DropdownMenuCheckboxItem: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.CheckboxItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
219
+ declare const DropdownMenuRadioItem: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.RadioItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
220
+ declare const DropdownMenuLabel: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.LabelProps, "ref"> & React$1.RefAttributes<react_native.Text>, "ref"> & {
221
+ inset?: boolean;
222
+ } & React$1.RefAttributes<react_native.Text>>;
223
+ declare const DropdownMenuSeparator: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.SeparatorProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
224
+ declare const DropdownMenuSubTrigger: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.SubTriggerProps, "ref"> & React$1.RefAttributes<View>, "ref"> & {
225
+ inset?: boolean;
226
+ } & React$1.RefAttributes<View>>;
227
+ declare const DropdownMenuSubContent: React$1.ForwardRefExoticComponent<Omit<Omit<DropdownMenu$1.SubContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
228
+
229
+ declare const ContextMenu: typeof ContextMenu$1.Root;
230
+ declare const ContextMenuTrigger: React$1.ForwardRefExoticComponent<Omit<ContextMenu$1.TriggerProps, "ref"> & React$1.RefAttributes<react_native.View>>;
231
+ declare const ContextMenuGroup: React$1.ForwardRefExoticComponent<Omit<ContextMenu$1.GroupProps, "ref"> & React$1.RefAttributes<react_native.View>>;
232
+ declare const ContextMenuPortal: typeof ContextMenu$1.Portal;
233
+ declare const ContextMenuSub: typeof ContextMenu$1.Sub;
234
+ declare const ContextMenuRadioGroup: React$1.ForwardRefExoticComponent<Omit<ContextMenu$1.RadioGroupProps, "ref"> & React$1.RefAttributes<react_native.View>>;
235
+ declare const ContextMenuContent: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.ContentProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
236
+ declare const ContextMenuItem: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.ItemProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & {
237
+ inset?: boolean;
238
+ } & React$1.RefAttributes<react_native.View>>;
239
+ declare const ContextMenuCheckboxItem: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.CheckboxItemProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
240
+ declare const ContextMenuRadioItem: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.RadioItemProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
241
+ declare const ContextMenuLabel: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.LabelProps, "ref"> & React$1.RefAttributes<react_native.Text>, "ref"> & {
242
+ inset?: boolean;
243
+ } & React$1.RefAttributes<react_native.Text>>;
244
+ declare const ContextMenuSeparator: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.SeparatorProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
245
+ declare const ContextMenuSubTrigger: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.SubTriggerProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & {
246
+ inset?: boolean;
247
+ } & React$1.RefAttributes<react_native.View>>;
248
+ declare const ContextMenuSubContent: React$1.ForwardRefExoticComponent<Omit<Omit<ContextMenu$1.SubContentProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
249
+
250
+ declare const Popover: typeof Popover$1.Root;
251
+ declare const PopoverTrigger: React$1.ForwardRefExoticComponent<Omit<Popover$1.TriggerProps, "ref"> & React$1.RefAttributes<react_native.View>>;
252
+ declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<Omit<Popover$1.ContentProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
253
+
254
+ declare const Tooltip: typeof Tooltip$1.Root;
255
+ declare const TooltipTrigger: React$1.ForwardRefExoticComponent<Omit<Tooltip$1.TriggerProps, "ref"> & React$1.RefAttributes<react_native.View>>;
256
+ declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<Omit<Tooltip$1.ContentProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
257
+
258
+ declare const HoverCard: typeof HoverCard$1.Root;
259
+ declare const HoverCardTrigger: React$1.ForwardRefExoticComponent<Omit<HoverCard$1.TriggerProps, "ref"> & React$1.RefAttributes<react_native.View>>;
260
+ declare const HoverCardContent: React$1.ForwardRefExoticComponent<Omit<Omit<HoverCard$1.ContentProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
261
+
262
+ declare const Accordion: React$1.ForwardRefExoticComponent<(Omit<Accordion$1.SingleRootProps, "ref"> | Omit<Accordion$1.MultipleRootProps, "ref">) & React$1.RefAttributes<View>>;
263
+ declare const AccordionItem: React$1.ForwardRefExoticComponent<Omit<Omit<Accordion$1.ItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
264
+ declare const AccordionTrigger: React$1.ForwardRefExoticComponent<Omit<Omit<Accordion$1.TriggerProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
265
+ declare const AccordionContent: React$1.ForwardRefExoticComponent<Omit<Omit<Accordion$1.ContentProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
266
+
267
+ declare const Collapsible: React$1.ForwardRefExoticComponent<Omit<Collapsible$1.RootProps, "ref"> & React$1.RefAttributes<react_native.View>>;
268
+ declare const CollapsibleTrigger: React$1.ForwardRefExoticComponent<Omit<Collapsible$1.TriggerProps, "ref"> & React$1.RefAttributes<react_native.View>>;
269
+ declare const CollapsibleContent: React$1.ForwardRefExoticComponent<Omit<Omit<Collapsible$1.ContentProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
270
+
271
+ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<Omit<Checkbox$1.RootProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
272
+
273
+ declare const Switch: React$1.ForwardRefExoticComponent<Omit<Omit<Switch$1.RootProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & React$1.RefAttributes<react_native.View>>;
274
+
275
+ declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<Omit<RadioGroup$1.RootProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
276
+ declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<Omit<RadioGroup$1.ItemProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
277
+
278
+ declare const toggleVariants: (props?: ({
279
+ variant?: "default" | "outline" | null | undefined;
280
+ size?: "default" | "sm" | "lg" | null | undefined;
281
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
282
+ declare const toggleTextVariants: (props?: ({
283
+ variant?: "default" | "outline" | null | undefined;
284
+ size?: "default" | "sm" | "lg" | null | undefined;
285
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
286
+ type ToggleProps = React$1.ComponentPropsWithoutRef<typeof Toggle$1.Root> & VariantProps<typeof toggleVariants>;
287
+ declare const Toggle: React$1.ForwardRefExoticComponent<Omit<Omit<Toggle$1.RootProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & VariantProps<(props?: ({
288
+ variant?: "default" | "outline" | null | undefined;
289
+ size?: "default" | "sm" | "lg" | null | undefined;
290
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<react_native.View>>;
291
+
292
+ type ToggleGroupProps = React$1.ComponentPropsWithoutRef<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants>;
293
+ declare const ToggleGroup: React$1.ForwardRefExoticComponent<ToggleGroupProps & React$1.RefAttributes<react_native.View>>;
294
+ type ToggleGroupItemProps = React$1.ComponentPropsWithoutRef<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>;
295
+ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<Omit<ToggleGroup$1.ItemProps, "ref"> & React$1.RefAttributes<react_native.View>, "ref"> & VariantProps<(props?: ({
296
+ variant?: "default" | "outline" | null | undefined;
297
+ size?: "default" | "sm" | "lg" | null | undefined;
298
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<react_native.View>>;
299
+
300
+ type ProgressProps = React$1.ComponentPropsWithoutRef<typeof Progress$1.Root>;
301
+ declare const Progress: React$1.ForwardRefExoticComponent<Omit<Omit<Progress$1.RootProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
302
+
303
+ type SliderProps = React$1.ComponentPropsWithoutRef<typeof Slider$1.Root>;
304
+ declare const Slider: React$1.ForwardRefExoticComponent<Omit<Omit<Slider$1.RootProps, "ref"> & React$1.RefAttributes<View>, "ref"> & React$1.RefAttributes<View>>;
305
+
306
+ declare const toastVariants: (props?: ({
307
+ variant?: "default" | "destructive" | "success" | null | undefined;
308
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
309
+ type ToastProps = React$1.ComponentPropsWithoutRef<typeof View> & VariantProps<typeof toastVariants>;
310
+ declare function Toast({ className, variant, ...props }: ToastProps): react_jsx_runtime.JSX.Element;
311
+ declare function ToastTitle({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof Text$1>): react_jsx_runtime.JSX.Element;
312
+ declare function ToastDescription({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof Text$1>): react_jsx_runtime.JSX.Element;
313
+ declare function ToastClose({ className, ...props }: React$1.ComponentPropsWithoutRef<typeof Pressable>): react_jsx_runtime.JSX.Element;
314
+
315
+ declare const Table: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
316
+ declare const TableHeader: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
317
+ declare const TableBody: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
318
+ declare const TableFooter: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
319
+ declare const TableRow: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
320
+ declare const TableHead: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
321
+ declare const TableCell: React$1.ForwardRefExoticComponent<ViewProps & React$1.RefAttributes<View>>;
4
322
 
5
323
  interface ProductTitleProps extends Omit<TextProps, 'children'> {
6
324
  /** The raw RxDB product document (connector-specific shape) */
@@ -23,30 +341,59 @@ declare function ProductTitle({ doc, className, ...textProps }: ProductTitleProp
23
341
  interface ProductPriceProps extends Omit<TextProps, 'children'> {
24
342
  /** The raw RxDB product document (connector-specific shape) */
25
343
  doc: any;
26
- /** Currency symbol to prepend (defaults to '$') */
344
+ /**
345
+ * Currency to show when the product is priced in several. Defaults to the
346
+ * provider's store currency, then to the first currency listed.
347
+ */
348
+ currency?: string;
349
+ /** BCP 47 locale for number formatting. Defaults to the runtime locale. */
350
+ locale?: string;
351
+ /** Symbol to prepend when the currency is unknown (defaults to '$') */
27
352
  currencySymbol?: string;
353
+ /**
354
+ * When the connector's variants have differing prices, show
355
+ * `{fromLabel} <lowest price>` instead of the default variant's price.
356
+ * Defaults to true.
357
+ */
358
+ showFromPrice?: boolean;
359
+ /**
360
+ * Label shown before the lowest price when variant prices differ.
361
+ * @deprecated Use formatFrom.
362
+ */
363
+ fromLabel?: string;
364
+ /**
365
+ * Formats the lowest price when variant prices differ, for languages
366
+ * whose word order puts the label after the price. Defaults to
367
+ * `` (price) => `from ${price}` ``. Wins over `fromLabel` when both are given.
368
+ */
369
+ formatFrom?: (price: string) => string;
28
370
  className?: string;
29
371
  }
30
372
  /**
31
- * Displays a product's price.
373
+ * Displays a product's price, and the price it replaces while on sale.
32
374
  *
33
- * Works with any connector — extracts price via traits regardless
34
- * of whether it's a string field (WooCommerce) or derived from
35
- * variant pricing (Medusa).
375
+ * Reads the backend-neutral price list (`getPrices`), so a WooCommerce sale
376
+ * price, a Medusa sale price list and a Shopify compare-at price all render
377
+ * the same way.
36
378
  *
37
379
  * ```tsx
38
- * <ProductPrice doc={productDocument} currencySymbol="$" />
380
+ * <ProductPrice doc={productDocument} currency="EUR" />
39
381
  * ```
40
382
  */
41
- declare function ProductPrice({ doc, currencySymbol, className, ...textProps }: ProductPriceProps): react_jsx_runtime.JSX.Element;
383
+ declare function ProductPrice({ doc, currency, locale, currencySymbol, className, showFromPrice, fromLabel, formatFrom, ...textProps }: ProductPriceProps): react_jsx_runtime.JSX.Element;
42
384
 
43
- interface ProductImageProps extends Omit<ImageProps, 'source'> {
385
+ interface ProductImageProps extends Omit<React.ComponentPropsWithoutRef<typeof Image.Root>, 'source'> {
44
386
  /** The raw RxDB product document */
45
387
  doc: any;
46
388
  /** Image dimensions */
47
389
  size?: number;
48
390
  /** Style overrides (for dynamic sizing) */
49
391
  style?: StyleProp<ImageStyle>;
392
+ /**
393
+ * Render a same-size tile with the product's initial when there is no
394
+ * image, so rows and grids stay aligned. Defaults to false (render nothing).
395
+ */
396
+ showPlaceholder?: boolean;
50
397
  className?: string;
51
398
  }
52
399
  /**
@@ -58,7 +405,7 @@ interface ProductImageProps extends Omit<ImageProps, 'source'> {
58
405
  * <ProductImage doc={productDocument} size={80} className="rounded-lg" />
59
406
  * ```
60
407
  */
61
- declare function ProductImage({ doc, size, style, className, ...imageProps }: ProductImageProps): react_jsx_runtime.JSX.Element | null;
408
+ declare function ProductImage({ doc, size, style, showPlaceholder, className, ...imageProps }: ProductImageProps): react_jsx_runtime.JSX.Element | null;
62
409
 
63
410
  interface ProductSkuProps extends Omit<TextProps, 'children'> {
64
411
  /** The raw RxDB product document (connector-specific shape) */
@@ -79,35 +426,40 @@ interface ProductSkuProps extends Omit<TextProps, 'children'> {
79
426
  */
80
427
  declare function ProductSku({ doc, fallback, className, ...textProps }: ProductSkuProps): react_jsx_runtime.JSX.Element;
81
428
 
82
- interface ProductStockBadgeProps extends Omit<ViewProps, 'children'> {
429
+ interface ProductStockBadgeProps extends Omit<HStackProps, 'children'> {
83
430
  /** The raw RxDB product document (connector-specific shape) */
84
431
  doc: any;
85
432
  /** Whether to show the quantity alongside the status */
86
433
  showQuantity?: boolean;
434
+ /** Append when reconciled stock was last confirmed, if the provider gives it (default true) */
435
+ showAsOf?: boolean;
87
436
  className?: string;
88
437
  }
89
438
  /**
90
439
  * Displays a visual stock status badge for a product.
91
440
  *
92
- * Shows a colored label (In Stock / Out of Stock / On Backorder)
93
- * with an optional quantity count.
441
+ * Shows a label (In Stock / Out of Stock / On Backorder) with a dot carrying the colour
442
+ * with an optional quantity count. When the ConnectorProvider is given a
443
+ * reconciled stock overlay, it shows that stock and when it was confirmed.
94
444
  *
95
445
  * ```tsx
96
446
  * <ProductStockBadge doc={productDocument} showQuantity />
97
447
  * ```
98
448
  */
99
- declare function ProductStockBadge({ doc, showQuantity, className, ...viewProps }: ProductStockBadgeProps): react_jsx_runtime.JSX.Element;
449
+ declare function ProductStockBadge({ doc, showQuantity, showAsOf, className, ...props }: ProductStockBadgeProps): react_jsx_runtime.JSX.Element;
100
450
 
101
- interface ProductCardProps extends Omit<ViewProps, 'children'> {
451
+ interface ProductCardProps extends Omit<VStackProps, 'children'> {
102
452
  doc: any;
103
453
  onPress?: () => void;
104
454
  imageSize?: number;
105
455
  currencySymbol?: string;
456
+ /** Shown in place of the price when the channel doesn't sell this product. */
457
+ notSoldLabel?: string;
106
458
  className?: string;
107
459
  }
108
- declare function ProductCard({ doc, onPress, imageSize, currencySymbol, className, ...viewProps }: ProductCardProps): react_jsx_runtime.JSX.Element;
460
+ declare function ProductCard({ doc, onPress, imageSize, currencySymbol, notSoldLabel, className, ...props }: ProductCardProps): react_jsx_runtime.JSX.Element;
109
461
 
110
- interface ProductGridProps extends Omit<ViewProps, 'children'> {
462
+ interface ProductGridProps extends Omit<VStackProps, 'children'> {
111
463
  /** Array of product documents to render */
112
464
  items: any[];
113
465
  /** Render function for each product */
@@ -120,6 +472,12 @@ interface ProductGridProps extends Omit<ViewProps, 'children'> {
120
472
  filterSlot?: ReactNode;
121
473
  /** Content shown when items is empty */
122
474
  emptyState?: ReactNode;
475
+ /**
476
+ * Products the channel doesn't sell (`traits.product.isSellable` false,
477
+ * for example a Medusa product outside the sales channel) are hidden
478
+ * unless `showUnsellable`.
479
+ */
480
+ showUnsellable?: boolean;
123
481
  className?: string;
124
482
  }
125
483
  /**
@@ -137,86 +495,135 @@ interface ProductGridProps extends Omit<ViewProps, 'children'> {
137
495
  * />
138
496
  * ```
139
497
  */
140
- declare function ProductGrid({ items, renderItem, numColumns, searchSlot, filterSlot, emptyState, className, ...viewProps }: ProductGridProps): react_jsx_runtime.JSX.Element;
498
+ declare function ProductGrid({ items, renderItem, numColumns, searchSlot, filterSlot, emptyState, showUnsellable, className, ...viewProps }: ProductGridProps): react_jsx_runtime.JSX.Element;
141
499
 
142
- interface CartLineItem {
143
- /** The raw product document (connector-specific shape) */
144
- doc: any;
145
- /** Quantity in cart */
146
- quantity: number;
500
+ interface ProductListProps extends Omit<ViewProps, 'children'> {
501
+ items: any[];
502
+ renderItem: (item: any, index: number) => ReactNode;
503
+ searchSlot?: ReactNode;
504
+ filterSlot?: ReactNode;
505
+ emptyState?: ReactNode;
506
+ className?: string;
147
507
  }
148
- interface CartLineProps extends Omit<ViewProps, 'children'> {
149
- /** The cart line item */
150
- item: CartLineItem;
151
- /** Currency symbol (defaults to '$') */
152
- currencySymbol?: string;
508
+ declare function ProductList({ items, renderItem, searchSlot, filterSlot, emptyState, className, ...viewProps }: ProductListProps): react_jsx_runtime.JSX.Element;
509
+
510
+ interface CategoryItem {
511
+ id: string;
512
+ name: string;
513
+ }
514
+ interface CategoryNavProps extends Omit<ViewProps, 'children'> {
515
+ categories: CategoryItem[];
516
+ selectedId: string;
517
+ onSelect: (id: string) => void;
518
+ orientation?: 'horizontal' | 'vertical';
519
+ className?: string;
520
+ }
521
+ declare function CategoryNav({ categories, selectedId, onSelect, orientation, className, ...viewProps }: CategoryNavProps): react_jsx_runtime.JSX.Element;
522
+
523
+ interface VariantOption {
524
+ name: string;
525
+ values: string[];
526
+ }
527
+ interface ProductVariantPickerProps extends Omit<ViewProps, 'children'> {
528
+ options: VariantOption[];
529
+ selected?: Record<string, string>;
530
+ onSelect?: (selection: Record<string, string>) => void;
531
+ className?: string;
532
+ }
533
+ declare function ProductVariantPicker({ options, selected, onSelect, className, ...viewProps }: ProductVariantPickerProps): react_jsx_runtime.JSX.Element;
534
+
535
+ interface CartLineProps extends Omit<HStackProps, 'children'> {
536
+ name: string;
537
+ quantity: number;
538
+ unitPrice: Money;
539
+ lineTotal: Money;
540
+ locale?: string;
153
541
  className?: string;
154
542
  }
155
543
  /**
156
544
  * Displays a single cart line item: product name, quantity, and line total.
157
545
  *
158
546
  * ```tsx
159
- * <CartLine item={{ doc: productDocument, quantity: 2 }} />
547
+ * <CartLine name="Coffee" quantity={2} unitPrice={unitPrice} lineTotal={lineTotal} />
160
548
  * ```
161
549
  */
162
- declare function CartLine({ item, currencySymbol, className, ...viewProps }: CartLineProps): react_jsx_runtime.JSX.Element;
550
+ declare function CartLine({ name, quantity, unitPrice, lineTotal, locale, className, ...props }: CartLineProps): react_jsx_runtime.JSX.Element;
163
551
 
164
- interface CartTotalProps extends Omit<ViewProps, 'children'> {
165
- /** All cart line items */
166
- items: CartLineItem[];
167
- /** Currency symbol (defaults to '$') */
168
- currencySymbol?: string;
169
- /** Tax rate as a decimal (e.g. 0.1 for 10%). Defaults to 0. */
170
- taxRate?: number;
171
- /** Label for the tax line (defaults to 'Tax') */
172
- taxLabel?: string;
552
+ interface CartTotalProps extends Omit<VStackProps, 'children'> {
553
+ subtotal: Money;
554
+ taxLines?: Array<{
555
+ label: string;
556
+ amount: Money;
557
+ }>;
558
+ discount?: Money;
559
+ total: Money;
560
+ /** The tax is already in the subtotal (an inclusive display), so its rows read "incl." rather than add up. */
561
+ taxInclusive?: boolean;
562
+ locale?: string;
173
563
  className?: string;
174
564
  }
175
565
  /**
176
- * Displays a cart summary with subtotal, optional tax, and total.
566
+ * Displays a cart summary: subtotal, optional discount, optional tax, and total, in the receipt's order.
177
567
  *
178
568
  * ```tsx
179
- * <CartTotal items={cartItems} taxRate={0.1} />
569
+ * <CartTotal subtotal={subtotal} discount={discount} taxLines={taxLines} total={total} />
180
570
  * ```
181
571
  */
182
- declare function CartTotal({ items, currencySymbol, taxRate, taxLabel, className, ...viewProps }: CartTotalProps): react_jsx_runtime.JSX.Element;
572
+ declare function CartTotal({ subtotal, taxLines, discount, total, taxInclusive, locale, className, ...props }: CartTotalProps): react_jsx_runtime.JSX.Element;
183
573
 
184
- interface CartPanelProps extends Omit<ViewProps, 'children'> {
574
+ interface CartPanelProps<T> extends Omit<VStackProps, 'children'> {
185
575
  /** Cart line items to render */
186
- items: CartLineItem[];
576
+ items: T[];
187
577
  /** Render function for each cart line */
188
- renderItem: (item: CartLineItem, index: number) => ReactNode;
578
+ renderItem: (item: T, index: number) => ReactNode;
579
+ /** Row key per item; defaults to the item's string/number `id`, else its index. Override for items without `id`, or to key by something else. */
580
+ keyExtractor?: (item: T, index: number) => string;
189
581
  /** Header slot (e.g. customer info) */
190
582
  header?: ReactNode;
583
+ /** Content after the lines, inside the scrolling region (e.g. discount chips); shown even with no lines, so it isn't hidden by an empty cart */
584
+ afterItems?: ReactNode;
191
585
  /** Footer slot (e.g. totals, checkout button) */
192
586
  footer?: ReactNode;
193
587
  /** Content shown when items is empty */
194
588
  emptyState?: ReactNode;
195
589
  className?: string;
196
590
  }
197
- /**
198
- * A scrollable cart panel with header/footer slots.
199
- *
200
- * Composes CartLine (or custom renderItem) into a scrollable list
201
- * with optional header, footer, and empty state.
202
- *
203
- * ```tsx
204
- * <CartPanel
205
- * items={cartItems}
206
- * renderItem={(item) => <CartLine item={item} />}
207
- * header={<CustomerCard doc={customer} />}
208
- * footer={<CartTotal items={cartItems} />}
209
- * />
210
- * ```
211
- */
212
- declare function CartPanel({ items, renderItem, header, footer, emptyState, className, ...viewProps }: CartPanelProps): react_jsx_runtime.JSX.Element;
591
+ declare function CartPanel<T>({ items, renderItem, keyExtractor, header, afterItems, footer, emptyState, className, ...props }: CartPanelProps<T>): JSX.Element;
592
+
593
+ interface DiscountBadgeProps extends Omit<ViewProps, 'children'> {
594
+ label: string;
595
+ className?: string;
596
+ }
597
+ declare function DiscountBadge({ label, className, ...viewProps }: DiscountBadgeProps): react_jsx_runtime.JSX.Element;
598
+
599
+ interface CartNoteInputProps extends Omit<ViewProps, 'children'> {
600
+ value: string;
601
+ onChangeText: (text: string) => void;
602
+ placeholder?: string;
603
+ className?: string;
604
+ }
605
+ declare function CartNoteInput({ value, onChangeText, placeholder, className, ...viewProps }: CartNoteInputProps): react_jsx_runtime.JSX.Element;
606
+
607
+ interface CartAction {
608
+ id: string;
609
+ label: string;
610
+ onPress: () => void;
611
+ color?: string;
612
+ iconSlot?: ReactNode;
613
+ }
614
+ interface CartLineActionsProps extends Omit<ViewProps, 'children'> {
615
+ children: ReactNode;
616
+ actions: CartAction[];
617
+ className?: string;
618
+ }
619
+ declare function CartLineActions({ children, actions, className, ...viewProps }: CartLineActionsProps): react_jsx_runtime.JSX.Element;
213
620
 
214
621
  interface SearchInputProps extends Omit<TextInputProps, 'value' | 'onChangeText'> {
215
622
  value: string;
216
623
  onChangeText: (text: string) => void;
217
624
  className?: string;
218
625
  }
219
- declare function SearchInput({ value, onChangeText, className, placeholder, ...props }: SearchInputProps): react_jsx_runtime.JSX.Element;
626
+ declare function SearchInput({ value, onChangeText, className, placeholder, style, onFocus, onBlur, ...props }: SearchInputProps): react_jsx_runtime.JSX.Element;
220
627
 
221
628
  interface FilterChipProps {
222
629
  label: string;
@@ -224,6 +631,10 @@ interface FilterChipProps {
224
631
  onPress: () => void;
225
632
  className?: string;
226
633
  }
634
+ /**
635
+ * A single toggle chip. When used standalone, renders as a simple
636
+ * ToggleGroup with one item.
637
+ */
227
638
  declare function FilterChip({ label, active, onPress, className }: FilterChipProps): react_jsx_runtime.JSX.Element;
228
639
  interface ChipItem {
229
640
  label: string;
@@ -234,15 +645,31 @@ interface FilterChipGroupProps extends Omit<ViewProps, 'children'> {
234
645
  onChipPress: (index: number) => void;
235
646
  className?: string;
236
647
  }
648
+ /**
649
+ * A horizontal scrollable row of toggleable filter chips.
650
+ *
651
+ * Built on top of the ToggleGroup primitive for proper `aria-pressed`
652
+ * semantics and accessible toggle group behavior.
653
+ */
237
654
  declare function FilterChipGroup({ chips, onChipPress, className, ...viewProps }: FilterChipGroupProps): react_jsx_runtime.JSX.Element;
238
655
 
239
- interface CustomerCardProps extends Omit<ViewProps, 'children'> {
656
+ interface QuantityStepperProps extends Omit<ViewProps, 'children'> {
657
+ defaultQuantity?: number;
658
+ quantity?: number;
659
+ onChangeQuantity?: (quantity: number) => void;
660
+ min?: number;
661
+ max?: number;
662
+ className?: string;
663
+ }
664
+ declare function QuantityStepper({ defaultQuantity, quantity: controlledQuantity, onChangeQuantity, min, max, className, ...viewProps }: QuantityStepperProps): react_jsx_runtime.JSX.Element;
665
+
666
+ interface CustomerCardProps extends Omit<VStackProps, 'children'> {
240
667
  doc: any;
241
668
  className?: string;
242
669
  }
243
- declare function CustomerCard({ doc, className, ...viewProps }: CustomerCardProps): react_jsx_runtime.JSX.Element | null;
670
+ declare function CustomerCard({ doc, className, ...props }: CustomerCardProps): react_jsx_runtime.JSX.Element | null;
244
671
 
245
- interface CustomerSelectProps extends Omit<ViewProps, 'children'> {
672
+ interface CustomerSelectProps extends Omit<VStackProps, 'children'> {
246
673
  /** Customer documents to display as options */
247
674
  customers: any[];
248
675
  /** Currently selected customer (if any) */
@@ -263,6 +690,9 @@ interface CustomerSelectProps extends Omit<ViewProps, 'children'> {
263
690
  * calls onSearch with the query text and renders whatever customers
264
691
  * are passed in.
265
692
  *
693
+ * Built on top of the Select primitive for proper accessibility
694
+ * semantics (combobox role, option roles, aria-expanded, aria-checked).
695
+ *
266
696
  * ```tsx
267
697
  * <CustomerSelect
268
698
  * customers={filteredCustomers}
@@ -272,31 +702,55 @@ interface CustomerSelectProps extends Omit<ViewProps, 'children'> {
272
702
  * />
273
703
  * ```
274
704
  */
275
- declare function CustomerSelect({ customers, selected, onSelect, onSearch, placeholder, className, ...viewProps }: CustomerSelectProps): react_jsx_runtime.JSX.Element;
705
+ declare function CustomerSelect({ customers, selected, onSelect, onSearch, placeholder, className, ...props }: CustomerSelectProps): react_jsx_runtime.JSX.Element;
706
+
707
+ interface CustomerFormValues {
708
+ firstName: string;
709
+ lastName: string;
710
+ email: string;
711
+ phone: string;
712
+ address: string;
713
+ }
714
+ interface CustomerFormProps extends Omit<ViewProps, 'children'> {
715
+ values: CustomerFormValues;
716
+ onChangeField: (field: keyof CustomerFormValues, value: string) => void;
717
+ onSubmit?: () => void;
718
+ submitLabel?: string;
719
+ className?: string;
720
+ }
721
+ declare function CustomerForm({ values, onChangeField, onSubmit, submitLabel, className, ...viewProps }: CustomerFormProps): react_jsx_runtime.JSX.Element;
722
+
723
+ interface CustomerOrderHistoryProps extends Omit<ViewProps, 'children'> {
724
+ orders: any[];
725
+ renderItem: (order: any, index: number) => ReactNode;
726
+ emptyState?: ReactNode;
727
+ className?: string;
728
+ }
729
+ declare function CustomerOrderHistory({ orders, renderItem, emptyState, className, ...viewProps }: CustomerOrderHistoryProps): react_jsx_runtime.JSX.Element;
276
730
 
277
- interface PaymentMethodCardProps extends Omit<ViewProps, 'children'> {
731
+ interface PaymentMethodCardProps extends Omit<PressableProps, 'children'> {
278
732
  label: string;
279
733
  selected: boolean;
280
734
  onPress: () => void;
281
735
  icon?: ReactNode;
282
736
  className?: string;
283
737
  }
284
- declare function PaymentMethodCard({ label, selected, onPress, icon, className, ...viewProps }: PaymentMethodCardProps): react_jsx_runtime.JSX.Element;
738
+ declare function PaymentMethodCard({ label, selected, onPress, icon, className, ...props }: PaymentMethodCardProps): react_jsx_runtime.JSX.Element;
285
739
 
286
- interface OrderSummaryLineProps extends Omit<ViewProps, 'children'> {
740
+ interface OrderSummaryLineProps extends Omit<HStackProps, 'children'> {
287
741
  label: string;
288
742
  amount: string;
289
743
  bold?: boolean;
290
744
  className?: string;
291
745
  }
292
- declare function OrderSummaryLine({ label, amount, bold, className, ...viewProps }: OrderSummaryLineProps): react_jsx_runtime.JSX.Element;
746
+ declare function OrderSummaryLine({ label, amount, bold, className, ...props }: OrderSummaryLineProps): react_jsx_runtime.JSX.Element;
293
747
 
294
748
  interface PaymentMethod {
295
749
  id: string;
296
750
  label: string;
297
751
  icon?: ReactNode;
298
752
  }
299
- interface PaymentSelectorProps extends Omit<ViewProps, 'children'> {
753
+ interface PaymentSelectorProps extends Omit<VStackProps, 'children'> {
300
754
  /** Available payment methods */
301
755
  methods: PaymentMethod[];
302
756
  /** ID of the currently selected method */
@@ -318,13 +772,13 @@ interface PaymentSelectorProps extends Omit<ViewProps, 'children'> {
318
772
  * />
319
773
  * ```
320
774
  */
321
- declare function PaymentSelector({ methods, selected, onSelect, className, ...viewProps }: PaymentSelectorProps): react_jsx_runtime.JSX.Element;
775
+ declare function PaymentSelector({ methods, selected, onSelect, className, ...props }: PaymentSelectorProps): react_jsx_runtime.JSX.Element;
322
776
 
323
777
  interface OrderSummaryPayment {
324
778
  label: string;
325
779
  amount: string;
326
780
  }
327
- interface OrderSummaryProps extends Omit<ViewProps, 'children'> {
781
+ interface OrderSummaryProps extends Omit<VStackProps, 'children'> {
328
782
  /** Formatted subtotal string (e.g. "$1199.98") */
329
783
  subtotal: string;
330
784
  /** Formatted tax amount (optional) */
@@ -359,6 +813,552 @@ interface OrderSummaryProps extends Omit<ViewProps, 'children'> {
359
813
  * />
360
814
  * ```
361
815
  */
362
- declare function OrderSummary({ subtotal, tax, taxLabel, total, payments, header, footer, className, ...viewProps }: OrderSummaryProps): react_jsx_runtime.JSX.Element;
816
+ declare function OrderSummary({ subtotal, tax, taxLabel, total, payments, header, footer, className, ...props }: OrderSummaryProps): react_jsx_runtime.JSX.Element;
817
+
818
+ interface ChangeDisplayProps extends Omit<ViewProps, 'children'> {
819
+ change: Money;
820
+ locale?: string;
821
+ className?: string;
822
+ }
823
+ declare function ChangeDisplay({ change, locale, className, ...viewProps }: ChangeDisplayProps): react_jsx_runtime.JSX.Element;
824
+
825
+ interface CashTenderedProps extends Omit<ViewProps, 'children'> {
826
+ total: Money;
827
+ defaultAmount?: Money;
828
+ amount?: Money;
829
+ onChangeAmount?: (amount: Money) => void;
830
+ quickAmounts?: Money[];
831
+ locale?: string;
832
+ className?: string;
833
+ }
834
+ declare function CashTendered({ total, defaultAmount, amount: controlledAmount, onChangeAmount, quickAmounts, locale, className, ...viewProps }: CashTenderedProps): react_jsx_runtime.JSX.Element;
835
+
836
+ interface ReceiptItem {
837
+ name: string;
838
+ quantity: number;
839
+ total: string;
840
+ }
841
+ interface ReceiptPreviewProps extends Omit<ViewProps, 'children'> {
842
+ items: ReceiptItem[];
843
+ subtotal: string;
844
+ tax: string;
845
+ total: string;
846
+ payments?: Array<{
847
+ method: string;
848
+ amount: string;
849
+ }>;
850
+ headerSlot?: ReactNode;
851
+ footerSlot?: ReactNode;
852
+ className?: string;
853
+ }
854
+ declare function ReceiptPreview({ items, subtotal, tax, total, payments, headerSlot, footerSlot, className, ...viewProps }: ReceiptPreviewProps): react_jsx_runtime.JSX.Element;
855
+
856
+ type OrderStatus = 'pending' | 'processing' | 'completed' | 'refunded' | 'cancelled';
857
+ interface OrderStatusBadgeProps extends Omit<ViewProps, 'children'> {
858
+ status: OrderStatus;
859
+ className?: string;
860
+ }
861
+ declare function OrderStatusBadge({ status, className, ...viewProps }: OrderStatusBadgeProps): react_jsx_runtime.JSX.Element;
862
+
863
+ interface OrderCardProps extends Omit<ViewProps, 'children'> {
864
+ orderNumber: string;
865
+ date: string;
866
+ total: string;
867
+ status: OrderStatus;
868
+ customerName?: string;
869
+ onPress?: () => void;
870
+ className?: string;
871
+ }
872
+ declare function OrderCard({ orderNumber, date, total, status, customerName, onPress, className, ...viewProps }: OrderCardProps): react_jsx_runtime.JSX.Element;
873
+
874
+ interface OrderListProps extends Omit<ViewProps, 'children'> {
875
+ items: any[];
876
+ renderItem: (item: any, index: number) => ReactNode;
877
+ headerSlot?: ReactNode;
878
+ emptyState?: ReactNode;
879
+ className?: string;
880
+ }
881
+ declare function OrderList({ items, renderItem, headerSlot, emptyState, className, ...viewProps }: OrderListProps): react_jsx_runtime.JSX.Element;
882
+
883
+ interface OrderDetailLineItem {
884
+ name: string;
885
+ quantity: number;
886
+ total: string;
887
+ }
888
+ interface OrderDetailProps extends Omit<ViewProps, 'children'> {
889
+ orderNumber: string;
890
+ status: OrderStatus;
891
+ lineItems: OrderDetailLineItem[];
892
+ subtotal: string;
893
+ tax: string;
894
+ total: string;
895
+ customerSlot?: ReactNode;
896
+ paymentSlot?: ReactNode;
897
+ footerSlot?: ReactNode;
898
+ className?: string;
899
+ }
900
+ declare function OrderDetail({ orderNumber, status, lineItems, subtotal, tax, total, customerSlot, paymentSlot, footerSlot, className, ...viewProps }: OrderDetailProps): react_jsx_runtime.JSX.Element;
901
+
902
+ interface Denomination {
903
+ label: string;
904
+ value: number;
905
+ }
906
+ interface CashCountInputProps extends Omit<ViewProps, 'children'> {
907
+ denominations?: Denomination[];
908
+ defaultCounts?: Record<number, number>;
909
+ counts?: Record<number, number>;
910
+ onChangeCounts?: (counts: Record<number, number>) => void;
911
+ onChangeTotal?: (total: number) => void;
912
+ className?: string;
913
+ }
914
+ declare function CashCountInput({ denominations, defaultCounts, counts: controlledCounts, onChangeCounts, onChangeTotal, className, ...viewProps }: CashCountInputProps): react_jsx_runtime.JSX.Element;
915
+
916
+ interface TransactionSummary {
917
+ method: string;
918
+ count: number;
919
+ total: number;
920
+ }
921
+ interface RegisterSummaryProps extends Omit<ViewProps, 'children'> {
922
+ expectedCash: number;
923
+ actualCash: number;
924
+ transactions: TransactionSummary[];
925
+ headerSlot?: ReactNode;
926
+ footerSlot?: ReactNode;
927
+ className?: string;
928
+ }
929
+ declare function RegisterSummary({ expectedCash, actualCash, transactions, headerSlot, footerSlot, className, ...viewProps }: RegisterSummaryProps): react_jsx_runtime.JSX.Element;
930
+
931
+ interface RegisterOpenCloseProps extends Omit<ViewProps, 'children'> {
932
+ isOpen: boolean;
933
+ onOpen?: () => void;
934
+ onClose?: () => void;
935
+ expectedBalance?: number;
936
+ cashCountSlot?: ReactNode;
937
+ notesSlot?: ReactNode;
938
+ className?: string;
939
+ }
940
+ declare function RegisterOpenClose({ isOpen, onOpen, onClose, expectedBalance, cashCountSlot, notesSlot, className, ...viewProps }: RegisterOpenCloseProps): react_jsx_runtime.JSX.Element;
941
+
942
+ interface RegisterPickerRegister {
943
+ id: string;
944
+ name: string;
945
+ }
946
+ interface RegisterPickerProps {
947
+ /** The app's own list of registers for this store; there's no `useRegisterSession` yet to bind. */
948
+ registers: RegisterPickerRegister[];
949
+ onPick: (id: string) => void;
950
+ className?: string;
951
+ }
952
+ /**
953
+ * The register-choice screen: shown before a till is bound to any register. Port provenance
954
+ * (ADR-032 amendment 1): WCPOS `next` `3b5331b5c` `register-picker.tsx`.
955
+ *
956
+ * Neutral change: the app supplies `registers` and binds on `onPick` itself — TallyUI has no
957
+ * `useRegisterBinding` concept; binding is entirely the app's own (ADR-032 amendment 1).
958
+ */
959
+ declare function RegisterPicker({ registers, onPick, className }: RegisterPickerProps): react_jsx_runtime.JSX.Element;
960
+
961
+ interface OpenRegisterCardProps {
962
+ /** `useRegisterSession`'s return value: opens the session through `register.actions.openSession`. */
963
+ register: ReturnType<typeof useRegisterSession>;
964
+ /** ISO 4217 code, for parsing and formatting the typed amount. */
965
+ currency: string;
966
+ /** The store's configured opening float, minor units; preferred over the last counted cash. */
967
+ configuredFloatMinor?: number | null;
968
+ className?: string;
969
+ }
970
+ /**
971
+ * Opens a register session, prefilled with the configured float or the last counted cash.
972
+ * Port provenance (ADR-032 amendment 1): WCPOS `next` `3b5331b5c` `open-register-card.tsx`
973
+ * (LEDGER 52).
974
+ *
975
+ * The chip choices are already resolved once `expectedFloatMinor` is computed: a late-arriving
976
+ * `configuredFloatMinor` or `register.lastClosure` never overwrites what the cashier already
977
+ * typed, because `enteredAmount` only ever starts from it, never re-derives from it.
978
+ */
979
+ declare function OpenRegisterCard({ register, currency, configuredFloatMinor, className }: OpenRegisterCardProps): react_jsx_runtime.JSX.Element;
980
+
981
+ interface RegisterBarProps {
982
+ /** `useRegisterSession`'s return value: the session's status, `overdue`, `enabled` and so on. */
983
+ register: ReturnType<typeof useRegisterSession>;
984
+ /** The register this till is bound to, or `null` when no register is chosen yet. */
985
+ registerId: string | null;
986
+ /** `false` when the store, or the app itself, can't be reached — reads to the cashier as offline. */
987
+ online: boolean;
988
+ /** Hidden when `multiRegister` is `false`: a single-register store doesn't need to name it. */
989
+ registerName?: string;
990
+ multiRegister: boolean;
991
+ onOpenPanel: () => void;
992
+ /** Turns the pill into a button (opens the gate/picker or the panel) when given; the plain badge otherwise. */
993
+ onPressPill?: () => void;
994
+ className?: string;
995
+ }
996
+ /**
997
+ * The till's one status bar: which register (multi-register stores only), one status pill
998
+ * (LEDGER 48), and the button that opens the register panel. Port provenance (ADR-032 amendment
999
+ * 1): WCPOS `next` `3b5331b5c` `register-bar.tsx`.
1000
+ *
1001
+ * Dropped for this neutral port: the user avatar and user sheet, switch-store, and the
1002
+ * WooCommerce OAuth-return rehosting — all app/backend concerns `useRegisterSession` never
1003
+ * carries. The drawer/menu button is gone too: TallyUI has no fixed navigation shell to open.
1004
+ */
1005
+ declare function RegisterBar({ register, registerId, online, registerName, multiRegister, onOpenPanel, onPressPill, className, }: RegisterBarProps): react_jsx_runtime.JSX.Element;
1006
+
1007
+ /**
1008
+ * The register bar's status pill: one pill, one place. Port provenance (ADR-032 amendment 1):
1009
+ * WCPOS `next` `3b5331b5c` `register-bar.helpers.ts` (LEDGER 48).
1010
+ *
1011
+ * Neutral changes: WCPOS decides "choosing a register" from a WooCommerce binding status
1012
+ * (`bindingStatus: 'bound' | 'choose' | 'none' | 'unknown'`) and folds the store's display name
1013
+ * into `place`. TallyUI's binding is entirely the app's own (ADR-032 amendment 1's "Not ported"
1014
+ * note), so this takes the plain `registerId` the app already passes to `useRegisterSession`
1015
+ * (`null` means unbound) instead, and drops the store name — RegisterBar here shows only the
1016
+ * register name (`multiRegister` decides whether that's shown at all) and the status pill.
1017
+ * Copy is plain English (no i18n keys, ADR-064's neutral-copy rule).
1018
+ */
1019
+ type RegisterBarPill = 'Choose a register' | 'Close not finished' | 'Offline' | 'Approval needed' | 'Counting' | 'Overdue' | 'Register closed';
1020
+ /**
1021
+ * Priority, matching WCPOS's ordering: choosing a register outranks everything (LEDGER 48);
1022
+ * then a closed session whose close isn't in flight (TallyUI: it blocks selling until Finish
1023
+ * closing); then an unreachable store reads as offline, ahead of any session state; approval needed
1024
+ * outranks plain counting; an open, overdue session outranks a session-less "closed" pill.
1025
+ */
1026
+ declare function describeRegisterBarPill({ registerId, online, sessionStatus, overdue, approvalRequired, sessionsOn, closing, }: {
1027
+ /** The register this till is bound to, or `null` when it isn't bound yet. */
1028
+ registerId: string | null;
1029
+ online: boolean;
1030
+ sessionStatus?: 'open' | 'counting' | 'closed' | null;
1031
+ overdue?: boolean;
1032
+ approvalRequired?: boolean;
1033
+ /** The store uses register sessions at all (`useRegisterSession`'s `enabled`). */
1034
+ sessionsOn?: boolean;
1035
+ /** A close is in flight (`useRegisterSession`'s `closing`), so a closed session isn't unfinished. */
1036
+ closing?: boolean;
1037
+ }): RegisterBarPill | null;
1038
+
1039
+ interface MovementSheetProps {
1040
+ /** `useRegisterSession`'s return value: records the movement through `register.actions.recordMovement`. */
1041
+ register: ReturnType<typeof useRegisterSession>;
1042
+ /** The caller mounts this only once a type is chosen, so the sheet always has one to record. */
1043
+ type: MovementType;
1044
+ /** ISO 4217 code, for parsing the typed amount into minor units. */
1045
+ currency: string;
1046
+ onDone?: (id: string, type: MovementType, amountMinor: number) => void;
1047
+ onOpenChange: (open: boolean) => void;
1048
+ /** A no-sale opens the drawer once recorded (LEDGER 66); there is nothing to open otherwise. */
1049
+ onOpenDrawer?: () => void;
1050
+ }
1051
+ /**
1052
+ * Records a paid-in, paid-out or no-sale cash movement. Port provenance (ADR-032 amendment 1):
1053
+ * WCPOS `next` `3b5331b5c` `movement-sheet.tsx` (LEDGER 55, 56, 66).
1054
+ *
1055
+ * The cash moves the moment the cashier confirms, so validation happens before the tap, never
1056
+ * after: a refusal afterwards would mean cash already moved with no record of it. A no-sale
1057
+ * hides the amount field, always records zero, and opens the drawer once the row is written.
1058
+ */
1059
+ declare function MovementSheet({ register, type, currency, onDone, onOpenChange, onOpenDrawer }: MovementSheetProps): react_jsx_runtime.JSX.Element;
1060
+
1061
+ interface RegisterPanelProps {
1062
+ /** `useRegisterSession`'s return value: movements, `expected`, `blind`, and every action used here. */
1063
+ register: ReturnType<typeof useRegisterSession>;
1064
+ /** ISO 4217 code, for money display and movement amounts. */
1065
+ currency: string;
1066
+ /** Shown as the panel's title while blind counting hides the expected amount. */
1067
+ registerName?: string;
1068
+ open: boolean;
1069
+ onOpenChange: (open: boolean) => void;
1070
+ className?: string;
1071
+ }
1072
+ /**
1073
+ * The register's drawer panel: expected figures, cash movements with Undo, and Close register.
1074
+ * Port provenance (ADR-032 amendment 1): WCPOS `next` `3b5331b5c` `register-panel.tsx` (LEDGER
1075
+ * 54, 56, 58).
1076
+ *
1077
+ * Leaves out (registers job c2 or a later job, per `useRegisterSession`'s own "Not ported"
1078
+ * note): refused-movement Retry and "Unsynced" (no outbox here to refuse a movement), the
1079
+ * X-report, Z and print/reprint, and the Reports deep link.
1080
+ */
1081
+ declare function RegisterPanel({ register, currency, registerName, open, onOpenChange, className }: RegisterPanelProps): react_jsx_runtime.JSX.Element | null;
1082
+
1083
+ interface RegisterColumnProps {
1084
+ /** `useRegisterSession`'s return value: decides the picker/open/counting/selling swap. */
1085
+ register: ReturnType<typeof useRegisterSession>;
1086
+ /** The register this till is bound to, the same value passed into `useRegisterSession`; `null`
1087
+ * means unbound, since the hook's own return carries no such field (it's the app's input, not
1088
+ * its output). */
1089
+ registerId: string | null;
1090
+ registers: RegisterPickerRegister[];
1091
+ onPick: (id: string) => void;
1092
+ /** ISO 4217 code, forwarded to `OpenRegisterCard`. */
1093
+ currency: string;
1094
+ configuredFloatMinor?: number | null;
1095
+ /** Rendered instead of `children` while a session is counting (Job B fills this), and while its close is in flight
1096
+ * (`register.closing`). A closed session that isn't closing shows the Finish-closing card instead, whose button has
1097
+ * `nativeID="register-column-finish-close-button"`, so an app's `onPressPill` can focus it on the web. */
1098
+ countSlot?: ReactNode;
1099
+ /** Whether the cart has no lines; gates the overdue Close register offer (LEDGER 53). */
1100
+ cartEmpty?: boolean;
1101
+ /** The cart, shown once a register is bound, open, and not counting. */
1102
+ children: ReactNode;
1103
+ }
1104
+ /**
1105
+ * Swaps the cart column's content for register selection, opening or counting when the till
1106
+ * needs it, offering Close register when an open session runs overdue with nothing left to
1107
+ * sell. Port provenance (ADR-032 amendment 1): WCPOS `next` `3b5331b5c`'s cart-column register
1108
+ * swap (LEDGER 53), composed here as one small component rather than inline cart-screen logic.
1109
+ */
1110
+ declare function RegisterColumn({ register, registerId, registers, onPick, currency, configuredFloatMinor, countSlot, cartEmpty, children, }: RegisterColumnProps): react_jsx_runtime.JSX.Element;
1111
+
1112
+ /** The exact refusal shown when Close is over `varianceThreshold` and the host gives no `approve` (the Front desk, 2026-09-28). */
1113
+ declare const APPROVAL_REQUIRED_TEXT = "Manager approval needed. Ask a manager to approve, or count again.";
1114
+ interface RegisterCountProps {
1115
+ /** `useRegisterSession`'s return value: `expected`, `blind`, `varianceThreshold`, and `backToSelling`/`closeSession`. */
1116
+ register: ReturnType<typeof useRegisterSession>;
1117
+ /** ISO 4217 code: denomination faces, parsing and display. */
1118
+ currency: string;
1119
+ /**
1120
+ * Above `register.varianceThreshold`, Close asks for this first. `null` refuses and the count
1121
+ * stays; without it, Close refuses outright with `APPROVAL_REQUIRED_TEXT`. Its `approvedBy`
1122
+ * and `approvedByName` go to `closeSession`, which enforces the same gate and puts them on the Z.
1123
+ */
1124
+ approve?: () => Promise<{
1125
+ approvedBy: string;
1126
+ approvedByName?: string;
1127
+ } | null>;
1128
+ className?: string;
1129
+ }
1130
+ /**
1131
+ * Counts the drawer at close: denomination tiles or a typed cash amount, other tenders kept as
1132
+ * typed, a live variance line, and Close (gated by `approve` over threshold) or Back to selling.
1133
+ * Port provenance (ADR-032 amendment 1): WCPOS `next` `3b5331b5c` `register-count.tsx` (LEDGER
1134
+ * 59, 60, 65, 67). Leaves out WCPOS's ApproveSheet and server-demanded `approval_required`
1135
+ * (registers c2) — `approve` is the host's own gate, and it runs regardless of `blind`: dropping
1136
+ * the server flag would otherwise leave a blind count with no gate at all over threshold.
1137
+ */
1138
+ declare function RegisterCount({ register, currency, approve, className }: RegisterCountProps): react_jsx_runtime.JSX.Element | null;
1139
+
1140
+ interface ClosureSheetProps {
1141
+ /** `useRegisterSession`'s return value: reads `lastClosure` and `blind`. */
1142
+ register: ReturnType<typeof useRegisterSession>;
1143
+ /** ISO 4217 code, for the figures. */
1144
+ currency: string;
1145
+ /** Renders no print button when absent — printing is a later job (registers c2). */
1146
+ onPrint?: () => void | Promise<void>;
1147
+ onDone: () => void;
1148
+ }
1149
+ /**
1150
+ * Confirms a closed session from `register.lastClosure`: the local closure number always, and
1151
+ * the counted figures and variance per tender unless `blind`. Port provenance (ADR-032
1152
+ * amendment 1): WCPOS `next` `3b5331b5c` `closure-sheet.tsx` (LEDGER 54, 62). Leaves out the
1153
+ * Z-report preview, print/reprint and the server-number adoption (registers c2) — `onPrint` is
1154
+ * an optional hook for a host that later wires up printing; without it, no button renders.
1155
+ * Unlike WCPOS (which still shows counted cash to a blind cashier), every figure here is hidden
1156
+ * while blind, per the register-screens-b design, since TallyUI's closure lists every tender.
1157
+ */
1158
+ declare function ClosureSheet({ register, currency, onPrint, onDone }: ClosureSheetProps): react_jsx_runtime.JSX.Element | null;
1159
+
1160
+ interface SettingsRowProps extends Omit<ViewProps, 'children'> {
1161
+ label: string;
1162
+ description?: string;
1163
+ action?: ReactNode;
1164
+ className?: string;
1165
+ }
1166
+ declare function SettingsRow({ label, description, action, className, ...viewProps }: SettingsRowProps): react_jsx_runtime.JSX.Element;
1167
+
1168
+ interface SettingsGroupProps extends Omit<ViewProps, 'children'> {
1169
+ title: string;
1170
+ description?: string;
1171
+ children: ReactNode;
1172
+ className?: string;
1173
+ }
1174
+ declare function SettingsGroup({ title, description, children, className, ...viewProps }: SettingsGroupProps): react_jsx_runtime.JSX.Element;
1175
+
1176
+ type ConnectionStatus = 'connected' | 'disconnected' | 'syncing' | 'error';
1177
+ interface ConnectorStatusProps extends Omit<ViewProps, 'children'> {
1178
+ name: string;
1179
+ status: ConnectionStatus;
1180
+ lastSync?: string;
1181
+ error?: string;
1182
+ className?: string;
1183
+ /** Products the sales channel doesn't sell (the calculated-price runner's `unreported`). Hidden when undefined or 0. */
1184
+ unsoldCount?: number;
1185
+ /** True when that count is from an older pass than the last failure (`!isFingerprintResultCurrent(state)`). */
1186
+ unsoldStale?: boolean;
1187
+ /** The line's text; default: `${n} product(s) not sold in this channel`, plus ` (last check failed)` when stale. */
1188
+ formatUnsold?: (count: number, stale: boolean) => string;
1189
+ }
1190
+ declare function ConnectorStatus({ name, status, lastSync, error, className, unsoldCount, unsoldStale, formatUnsold, ...viewProps }: ConnectorStatusProps): react_jsx_runtime.JSX.Element;
1191
+
1192
+ /** `taxLabel` names each tax row; VAT isn't universal, so a platform passes its own (medusapos passes `VAT ${rate}%`). */
1193
+ declare function Cart({ sale, taxLabel }: {
1194
+ sale: ReturnType<typeof useSale>;
1195
+ taxLabel?: (ratePpm: number) => string;
1196
+ }): react_jsx_runtime.JSX.Element;
1197
+
1198
+ /** Phone mode's cart summary (medusapos ADR 0009): the whole bar is one button; the total is the cart's own Total row. */
1199
+ declare function CartBar({ sale, onOpen }: {
1200
+ sale: ReturnType<typeof useSale>;
1201
+ onOpen: () => void;
1202
+ }): react_jsx_runtime.JSX.Element;
1203
+
1204
+ declare function Tender({ sale }: {
1205
+ sale: ReturnType<typeof useSale>;
1206
+ }): react_jsx_runtime.JSX.Element | null;
1207
+
1208
+ /** The cashier's entry as a TallyUI Discount (a percent, or integer minor units), or the inline error to show. */
1209
+ declare function parseDiscount(type: Discount['type'], text: string, currency: string): Discount | string;
1210
+ /** "10%", or a fixed discount's amount as it actually comes off (amountMinor), never the amount requested. */
1211
+ declare const discountLabel: (discount: AppliedDiscount, currency: string) => string;
1212
+ /** `onApply` returns a refusal to show inline (the capability gate), or null once applied. */
1213
+ declare function DiscountForm({ title, currency, onApply, onClose }: {
1214
+ title: string;
1215
+ currency: string;
1216
+ onApply: (discount: Discount) => string | null;
1217
+ onClose: () => void;
1218
+ }): react_jsx_runtime.JSX.Element;
1219
+ /** Applied discounts as badges; pressing one removes it through TallyUI's builder. */
1220
+ /** `prefix` names a chip that would otherwise read like a fee, e.g. "Order discount −€0.50". */
1221
+ /** `amounts` are order.display's figures by discountId (TallyUI ADR-063): "10% −€0.40", or "−€0.40" for a fixed one. */
1222
+ declare function DiscountChips({ discounts, currency, onRemove, prefix, amounts }: {
1223
+ discounts: AppliedDiscount[];
1224
+ currency: string;
1225
+ onRemove: (id: string) => void;
1226
+ prefix?: string;
1227
+ amounts?: {
1228
+ discountId: string;
1229
+ amountMinor: number;
1230
+ }[];
1231
+ }): react_jsx_runtime.JSX.Element | null;
1232
+
1233
+ declare function formatStockSyncTime(time: Date, locale?: string, hour12?: boolean, now?: Date): string;
1234
+ declare function Catalogue<Doc>({ products, traits, currency, onSelect, statusText, statusAccessory, lastSyncedAt, lastStockCheckAt, hour12, minCodeLength }: {
1235
+ products: Doc[];
1236
+ traits: ProductTraits<Doc>;
1237
+ currency: string;
1238
+ onSelect: (entry: CatalogueEntry<Doc>) => void;
1239
+ statusText?: string;
1240
+ /** Rendered at the end of the status line, e.g. a register control at phone width; the row renders even without `statusText`. */
1241
+ statusAccessory?: ReactNode;
1242
+ lastSyncedAt: Date | null;
1243
+ /** The last completed stock reconcile pass, persisted across restarts; the later of this and lastSyncedAt wins. */
1244
+ lastStockCheckAt?: Date | null;
1245
+ /** Whether to show a 12- or 24-hour clock in the stock-as-of time; undefined keeps the locale default. A platform
1246
+ * reads this off its own device APIs (e.g. expo-localization's getCalendars()) and passes it in. */
1247
+ hour12?: boolean;
1248
+ /** A till's scanner setting: below this length (after trimming), Enter leaves the typed text as a plain
1249
+ * search instead of doing a code lookup. A scanner's timing threshold is the app's own concern,
1250
+ * in its unfocused wedge listener — not this prop's job. */
1251
+ minCodeLength?: number;
1252
+ }): react_jsx_runtime.JSX.Element;
1253
+
1254
+ /** `store`/`taxLabel`/`topInset`/`formatDate` replace the app's Medusa settings, hard-coded VAT (default matches
1255
+ * TV6a's `Cart`), outbox strip and date util, so `Receipt` stays platform-neutral (ADR-052). */
1256
+ declare function Receipt({ order, store, cashier, registerId, newSale, taxLabel, topInset, formatDate }: {
1257
+ order: Order;
1258
+ store: {
1259
+ name: string;
1260
+ address?: string;
1261
+ };
1262
+ cashier: string;
1263
+ registerId: string;
1264
+ newSale: () => void;
1265
+ taxLabel?: (ratePpm: number) => string;
1266
+ topInset?: number;
1267
+ formatDate?: (iso: string) => string;
1268
+ }): react_jsx_runtime.JSX.Element;
1269
+
1270
+ declare function injectPrintStyle(): void;
1271
+
1272
+ declare function SyncStatus({ state }: {
1273
+ state: OutboxState;
1274
+ }): react_jsx_runtime.JSX.Element;
1275
+
1276
+ /** The "Needs attention" (when not empty) and "Recent" orders, lifted from medusapos/app's orders screen (ADR-052).
1277
+ * `onRetry` is the outbox's `requeue`; `formatDate` replaces the app's date util; `footer` is the app's own content
1278
+ * (medusapos: the feedback link). The router and session redirect stay in the app. */
1279
+ declare function OrdersList({ orders, onRetry, formatDate, footer }: {
1280
+ orders: PosOrder[];
1281
+ onRetry(orderIds: string[]): Promise<number>;
1282
+ formatDate?: (iso: string) => string;
1283
+ footer?: ReactNode;
1284
+ }): react_jsx_runtime.JSX.Element;
1285
+
1286
+ interface POSLayoutProps extends Omit<ViewProps, 'children'> {
1287
+ browseSlot: ReactNode;
1288
+ cartSlot: ReactNode;
1289
+ headerSlot?: ReactNode;
1290
+ layout?: 'split' | 'stacked';
1291
+ breakpoint?: number;
1292
+ className?: string;
1293
+ }
1294
+ declare function POSLayout({ browseSlot, cartSlot, headerSlot, layout: layoutProp, breakpoint, className, ...viewProps }: POSLayoutProps): react_jsx_runtime.JSX.Element;
1295
+
1296
+ interface CheckoutLayoutProps extends Omit<ViewProps, 'children'> {
1297
+ summarySlot: ReactNode;
1298
+ paymentSlot: ReactNode;
1299
+ headerSlot?: ReactNode;
1300
+ layout?: 'split' | 'stacked';
1301
+ breakpoint?: number;
1302
+ className?: string;
1303
+ }
1304
+ declare function CheckoutLayout({ summarySlot, paymentSlot, headerSlot, layout: layoutProp, breakpoint, className, ...viewProps }: CheckoutLayoutProps): react_jsx_runtime.JSX.Element;
1305
+
1306
+ interface SettingsLayoutProps extends Omit<ViewProps, 'children'> {
1307
+ navSlot: ReactNode;
1308
+ contentSlot: ReactNode;
1309
+ headerSlot?: ReactNode;
1310
+ layout?: 'split' | 'stacked';
1311
+ breakpoint?: number;
1312
+ className?: string;
1313
+ }
1314
+ declare function SettingsLayout({ navSlot, contentSlot, headerSlot, layout: layoutProp, breakpoint, className, ...viewProps }: SettingsLayoutProps): react_jsx_runtime.JSX.Element;
1315
+
1316
+ /** Mirrors `LiveTabState` from `@tallyui/database`, without depending on that package. */
1317
+ type LiveTabScreenState = 'acquiring' | 'live' | 'parked' | 'blocked';
1318
+ interface LiveTabScreenProps extends Omit<ViewProps, 'children'> {
1319
+ state: LiveTabScreenState;
1320
+ /** Called when the parked screen's "Use here" button is pressed. */
1321
+ onUseHere: () => void;
1322
+ /** Called when the blocked screen's "Reload" button is pressed. */
1323
+ onReload: () => void;
1324
+ /** Title for both the parked and the blocked screen. */
1325
+ parkedTitle?: string;
1326
+ parkedBody?: string;
1327
+ useHereLabel?: string;
1328
+ blockedBody?: string;
1329
+ reloadLabel?: string;
1330
+ className?: string;
1331
+ }
1332
+ /**
1333
+ * ADR-061: what a tab shows once it is no longer the live one. Renders
1334
+ * nothing for `acquiring` and `live`.
1335
+ */
1336
+ declare function LiveTabScreen({ state, onUseHere, onReload, parkedTitle, parkedBody, useHereLabel, blockedBody, reloadLabel, className, ...viewProps }: LiveTabScreenProps): react_jsx_runtime.JSX.Element | null;
1337
+
1338
+ interface StoreSettingsChoiceScreenProps extends Omit<ViewProps, 'children'> {
1339
+ /** From `StoreSettingsError.choices`. Only the sections present are shown. */
1340
+ choices: StoreSettingsChoices;
1341
+ /** A previous choice to pre-select (for example, a stale stored one); fields that aren't in `choices` are ignored. */
1342
+ initial?: StoreSettingsChoice;
1343
+ /** Called with the full choice when the user confirms. The app persists it per store and retries `storeSettings`. */
1344
+ onSubmit: (choice: StoreSettingsChoice) => void;
1345
+ /** Display name for an ISO 3166-1 alpha-2 code. Default: `Intl.DisplayNames` in `locale`, falling back to the upper-cased code. */
1346
+ countryName?: (code: string) => string;
1347
+ locale?: string;
1348
+ title?: string;
1349
+ body?: string;
1350
+ regionLabel?: string;
1351
+ countryLabel?: string;
1352
+ channelLabel?: string;
1353
+ submitLabel?: string;
1354
+ className?: string;
1355
+ }
1356
+ /**
1357
+ * TV4: shown when `storeSettings` rejects with `choice_required`. The app
1358
+ * persists the returned choice per store and calls `storeSettings(context,
1359
+ * choice)` again; a stored choice that no longer resolves raises
1360
+ * `choice_required` again, and this screen pre-selects what still matches.
1361
+ */
1362
+ declare function StoreSettingsChoiceScreen({ choices, initial, onSubmit, countryName, locale, title, body, regionLabel, countryLabel, channelLabel, submitLabel, className, ...viewProps }: StoreSettingsChoiceScreenProps): react_jsx_runtime.JSX.Element;
363
1363
 
364
- export { CartLine, type CartLineItem, type CartLineProps, CartPanel, type CartPanelProps, CartTotal, type CartTotalProps, type ChipItem, CustomerCard, type CustomerCardProps, CustomerSelect, type CustomerSelectProps, FilterChip, FilterChipGroup, type FilterChipGroupProps, type FilterChipProps, OrderSummary, OrderSummaryLine, type OrderSummaryLineProps, type OrderSummaryPayment, type OrderSummaryProps, type PaymentMethod, PaymentMethodCard, type PaymentMethodCardProps, PaymentSelector, type PaymentSelectorProps, ProductCard, type ProductCardProps, ProductGrid, type ProductGridProps, ProductImage, type ProductImageProps, ProductPrice, type ProductPriceProps, ProductSku, type ProductSkuProps, ProductStockBadge, type ProductStockBadgeProps, ProductTitle, type ProductTitleProps, SearchInput, type SearchInputProps };
1364
+ export { APPROVAL_REQUIRED_TEXT, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Cart, type CartAction, CartBar, CartLine, CartLineActions, type CartLineActionsProps, type CartLineProps, CartNoteInput, type CartNoteInputProps, CartPanel, type CartPanelProps, CartTotal, type CartTotalProps, CashCountInput, type CashCountInputProps, CashTendered, type CashTenderedProps, Catalogue, type CategoryItem, CategoryNav, type CategoryNavProps, ChangeDisplay, type ChangeDisplayProps, Checkbox, CheckoutLayout, type CheckoutLayoutProps, type ChipItem, ClosureSheet, type ClosureSheetProps, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxTrigger, type ConnectionStatus, ConnectorStatus, type ConnectorStatusProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CustomerCard, type CustomerCardProps, CustomerForm, type CustomerFormProps, type CustomerFormValues, CustomerOrderHistory, type CustomerOrderHistoryProps, CustomerSelect, type CustomerSelectProps, type Denomination, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiscountBadge, type DiscountBadgeProps, DiscountChips, DiscountForm, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FilterChip, FilterChipGroup, type FilterChipGroupProps, type FilterChipProps, HStack, type HStackProps, HoverCard, HoverCardContent, HoverCardTrigger, Icon, IconButton, type IconButtonProps, type IconProps, Input, InputField, InputRoot, type InputRootProps, InputSlot, Label, type LabelProps, LiveTabScreen, type LiveTabScreenProps, type LiveTabScreenState, Loader, type LoaderProps, MovementSheet, type MovementSheetProps, OpenRegisterCard, type OpenRegisterCardProps, OrderCard, type OrderCardProps, OrderDetail, type OrderDetailLineItem, type OrderDetailProps, OrderList, type OrderListProps, type OrderStatus, OrderStatusBadge, type OrderStatusBadgeProps, OrderSummary, OrderSummaryLine, type OrderSummaryLineProps, type OrderSummaryPayment, type OrderSummaryProps, OrdersList, POSLayout, type POSLayoutProps, type PaymentMethod, PaymentMethodCard, type PaymentMethodCardProps, PaymentSelector, type PaymentSelectorProps, Popover, PopoverContent, PopoverTrigger, ProductCard, type ProductCardProps, ProductGrid, type ProductGridProps, ProductImage, type ProductImageProps, ProductList, type ProductListProps, ProductPrice, type ProductPriceProps, ProductSku, type ProductSkuProps, ProductStockBadge, type ProductStockBadgeProps, ProductTitle, type ProductTitleProps, ProductVariantPicker, type ProductVariantPickerProps, Progress, type ProgressProps, QuantityStepper, type QuantityStepperProps, RadioGroup, RadioGroupItem, Receipt, type ReceiptItem, ReceiptPreview, type ReceiptPreviewProps, RegisterBar, type RegisterBarPill, type RegisterBarProps, RegisterColumn, type RegisterColumnProps, RegisterCount, type RegisterCountProps, RegisterOpenClose, type RegisterOpenCloseProps, RegisterPanel, type RegisterPanelProps, RegisterPicker, type RegisterPickerProps, type RegisterPickerRegister, RegisterSummary, type RegisterSummaryProps, SearchIcon, SearchInput, type SearchInputProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps, SettingsGroup, type SettingsGroupProps, SettingsLayout, type SettingsLayoutProps, SettingsRow, type SettingsRowProps, Slider, type SliderProps, StoreSettingsChoiceScreen, type StoreSettingsChoiceScreenProps, type SvgIconProps, Switch, SyncStatus, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tender, Text, type TextProps, Textarea, type TextareaProps, Toast, ToastClose, ToastDescription, type ToastProps, ToastTitle, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, Tooltip, TooltipContent, TooltipTrigger, type TransactionSummary, VStack, type VStackProps, type VariantOption, avatarVariants, badgeTextVariants, badgeVariants, buttonTextVariants, buttonVariants, createSvgIcon, describeRegisterBarPill, discountLabel, formatStockSyncTime, hstackVariants, iconButtonVariants, iconVariants, injectPrintStyle, loaderVariants, parseDiscount, textVariants, toastVariants, toggleTextVariants, toggleVariants, useInputContext, vstackVariants };