@bearmenu/ui 0.8.33 → 0.8.34

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 (84) hide show
  1. package/dist/{chunk-GESB7GCF.js → chunk-6W25S5CF.js} +1 -1
  2. package/dist/chunk-LY67SOFC.js +142 -0
  3. package/dist/{chunk-ZU4NAYN7.js → chunk-NIAL4ZU2.js} +13 -1
  4. package/dist/{chunk-JWTN7MNK.js → chunk-TVEIUTBQ.js} +2 -2
  5. package/dist/{chunk-ZJMCU7MI.js → chunk-VCRXL7H5.js} +1 -1
  6. package/dist/chunk-XLHMF6F5.js +127 -0
  7. package/dist/{chunk-VSRGEB36.js → chunk-XNBDACL7.js} +1 -1
  8. package/dist/components/action-bar.d.ts +67 -0
  9. package/dist/components/action-bar.js +43 -0
  10. package/dist/components/activity-row.d.ts +38 -0
  11. package/dist/components/activity-row.js +43 -0
  12. package/dist/components/alert.d.ts +2 -2
  13. package/dist/components/avatar.d.ts +4 -1
  14. package/dist/components/avatar.js +39 -5
  15. package/dist/components/badge.d.ts +1 -1
  16. package/dist/components/badge.js +1 -1
  17. package/dist/components/booking-row.js +1 -1
  18. package/dist/components/button.d.ts +2 -2
  19. package/dist/components/combobox.js +2 -2
  20. package/dist/components/command.d.ts +15 -15
  21. package/dist/components/command.js +2 -2
  22. package/dist/components/concept-convergence.js +2 -2
  23. package/dist/components/currency-input.js +4 -142
  24. package/dist/components/dialog.d.ts +6 -0
  25. package/dist/components/dialog.js +1 -1
  26. package/dist/components/drawer.d.ts +6 -0
  27. package/dist/components/drawer.js +3 -127
  28. package/dist/components/empty-state.d.ts +2 -2
  29. package/dist/components/filter-category-row.js +1 -1
  30. package/dist/components/menu-item.js +3 -3
  31. package/dist/components/menu-pick-row.d.ts +47 -0
  32. package/dist/components/menu-pick-row.js +49 -0
  33. package/dist/components/multi-select-combobox.js +3 -3
  34. package/dist/components/place-card.js +1 -1
  35. package/dist/components/place-details-mobile.js +1 -1
  36. package/dist/components/qr-panel.d.ts +31 -0
  37. package/dist/components/qr-panel.js +33 -0
  38. package/dist/components/reconcile-bar.d.ts +47 -0
  39. package/dist/components/reconcile-bar.js +60 -0
  40. package/dist/components/responsive-overlay.d.ts +59 -0
  41. package/dist/components/responsive-overlay.js +132 -0
  42. package/dist/components/searchable-select.js +2 -2
  43. package/dist/components/signature-chip.js +2 -2
  44. package/dist/components/spinner.d.ts +2 -2
  45. package/dist/components/split-share-row.d.ts +77 -0
  46. package/dist/components/split-share-row.js +101 -0
  47. package/dist/components/table-ledger-card.d.ts +80 -0
  48. package/dist/components/table-ledger-card.js +84 -0
  49. package/dist/components/table-trigger-band.d.ts +56 -0
  50. package/dist/components/table-trigger-band.js +43 -0
  51. package/dist/components/tag.d.ts +2 -2
  52. package/dist/components/text.d.ts +2 -2
  53. package/dist/components/toggle.d.ts +1 -1
  54. package/dist/components/top-ranking-entry.js +3 -3
  55. package/dist/components/venue-events-block.js +1 -1
  56. package/package.json +10 -1
  57. package/src/components/action-bar.stories.tsx +78 -0
  58. package/src/components/action-bar.tsx +80 -0
  59. package/src/components/activity-row.stories.tsx +78 -0
  60. package/src/components/activity-row.tsx +65 -0
  61. package/src/components/avatar.stories.tsx +55 -0
  62. package/src/components/avatar.tsx +63 -19
  63. package/src/components/badge.stories.tsx +41 -0
  64. package/src/components/badge.tsx +13 -0
  65. package/src/components/dialog.tsx +8 -2
  66. package/src/components/drawer.tsx +8 -2
  67. package/src/components/menu-pick-row.stories.tsx +71 -0
  68. package/src/components/menu-pick-row.tsx +76 -0
  69. package/src/components/qr-panel.stories.tsx +39 -0
  70. package/src/components/qr-panel.tsx +52 -0
  71. package/src/components/reconcile-bar.stories.tsx +57 -0
  72. package/src/components/reconcile-bar.tsx +80 -0
  73. package/src/components/responsive-overlay.stories.tsx +91 -0
  74. package/src/components/responsive-overlay.test.tsx +162 -0
  75. package/src/components/responsive-overlay.tsx +232 -0
  76. package/src/components/shared-table-primitives.test.tsx +482 -0
  77. package/src/components/split-share-row.stories.tsx +114 -0
  78. package/src/components/split-share-row.tsx +150 -0
  79. package/src/components/table-ledger-card.stories.tsx +120 -0
  80. package/src/components/table-ledger-card.tsx +138 -0
  81. package/src/components/table-trigger-band.stories.tsx +76 -0
  82. package/src/components/table-trigger-band.tsx +75 -0
  83. package/src/globals.css +44 -0
  84. package/src/test/setup.ts +11 -0
@@ -3,8 +3,8 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const buttonVariants: (props?: ({
6
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "glass" | "overlay" | "ink" | "brown" | "warning" | "cta" | null | undefined;
7
- size?: "default" | "cta" | "xs" | "sm" | "lg" | "pill" | "cta-sm" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ variant?: "default" | "link" | "secondary" | "warning" | "destructive" | "outline" | "ghost" | "glass" | "overlay" | "ink" | "brown" | "cta" | null | undefined;
7
+ size?: "icon" | "default" | "cta" | "xs" | "sm" | "lg" | "pill" | "cta-sm" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
8
8
  fullWidth?: boolean | null | undefined;
9
9
  } & class_variance_authority_types.ClassProp) | undefined) => string;
10
10
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -1,6 +1,6 @@
1
1
  import { Popover, PopoverTrigger, PopoverContent } from '../chunk-2ADCZXZJ.js';
2
- import { Command, CommandInput, CommandList, CommandLoading, CommandEmpty, CommandGroup, CommandItem } from '../chunk-ZJMCU7MI.js';
3
- import '../chunk-JWTN7MNK.js';
2
+ import { Command, CommandInput, CommandList, CommandLoading, CommandEmpty, CommandGroup, CommandItem } from '../chunk-VCRXL7H5.js';
3
+ import '../chunk-TVEIUTBQ.js';
4
4
  import { Button } from '../chunk-5SGKGFMN.js';
5
5
  import '../chunk-RIH2IS7X.js';
6
6
  import '../chunk-5YNIQ2BL.js';
@@ -4,11 +4,11 @@ import { DialogProps } from '@radix-ui/react-dialog';
4
4
 
5
5
  declare const Command: React.ForwardRefExoticComponent<Omit<{
6
6
  children?: React.ReactNode;
7
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
7
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
8
8
  ref?: React.Ref<HTMLDivElement>;
9
9
  } & {
10
10
  asChild?: boolean;
11
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
11
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
12
12
  label?: string;
13
13
  shouldFilter?: boolean;
14
14
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -28,61 +28,61 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
28
28
  ref?: React.Ref<HTMLInputElement>;
29
29
  } & {
30
30
  asChild?: boolean;
31
- }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
31
+ }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "value" | "onChange" | "type"> & {
32
32
  value?: string;
33
33
  onValueChange?: (search: string) => void;
34
34
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
35
35
  declare const CommandList: React.ForwardRefExoticComponent<Omit<{
36
36
  children?: React.ReactNode;
37
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
37
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
38
38
  ref?: React.Ref<HTMLDivElement>;
39
39
  } & {
40
40
  asChild?: boolean;
41
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
41
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
42
42
  label?: string;
43
43
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
44
44
  declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
45
45
  children?: React.ReactNode;
46
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
46
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
47
47
  ref?: React.Ref<HTMLDivElement>;
48
48
  } & {
49
49
  asChild?: boolean;
50
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
50
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
51
51
  declare const CommandLoading: React.ForwardRefExoticComponent<Omit<{
52
52
  children?: React.ReactNode;
53
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
53
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
54
54
  ref?: React.Ref<HTMLDivElement>;
55
55
  } & {
56
56
  asChild?: boolean;
57
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
57
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
58
58
  progress?: number;
59
59
  label?: string;
60
60
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
61
61
  declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
62
62
  children?: React.ReactNode;
63
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
63
+ } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
64
64
  ref?: React.Ref<HTMLDivElement>;
65
65
  } & {
66
66
  asChild?: boolean;
67
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "heading" | "value"> & {
67
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key">, "value" | "heading"> & {
68
68
  heading?: React.ReactNode;
69
69
  value?: string;
70
70
  forceMount?: boolean;
71
71
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
72
- declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
72
+ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
73
73
  ref?: React.Ref<HTMLDivElement>;
74
74
  } & {
75
75
  asChild?: boolean;
76
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
76
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
77
77
  alwaysRender?: boolean;
78
78
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
79
79
  declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
80
80
  children?: React.ReactNode;
81
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
81
+ } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
82
82
  ref?: React.Ref<HTMLDivElement>;
83
83
  } & {
84
84
  asChild?: boolean;
85
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "disabled" | "value"> & {
85
+ }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key">, "value" | "onSelect" | "disabled"> & {
86
86
  disabled?: boolean;
87
87
  onSelect?: (value: string) => void;
88
88
  value?: string;
@@ -1,4 +1,4 @@
1
- export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut } from '../chunk-ZJMCU7MI.js';
2
- import '../chunk-JWTN7MNK.js';
1
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut } from '../chunk-VCRXL7H5.js';
2
+ import '../chunk-TVEIUTBQ.js';
3
3
  import '../chunk-FEK5XGZW.js';
4
4
  import '../chunk-MMUBH76A.js';
@@ -1,7 +1,7 @@
1
+ import { PhotoGround } from '../chunk-SWD6CJ35.js';
1
2
  import { Convergence } from '../chunk-4XDJXMLF.js';
2
3
  import '../chunk-OIV7B44M.js';
3
- import { PhotoGround } from '../chunk-SWD6CJ35.js';
4
- import { Badge } from '../chunk-ZU4NAYN7.js';
4
+ import { Badge } from '../chunk-NIAL4ZU2.js';
5
5
  import { cn } from '../chunk-FEK5XGZW.js';
6
6
  import '../chunk-MMUBH76A.js';
7
7
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,142 +1,4 @@
1
- import { Input } from '../chunk-GTQSGDYF.js';
2
- import { cn } from '../chunk-FEK5XGZW.js';
3
- import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
4
- import * as React from 'react';
5
- import { jsxs, jsx } from 'react/jsx-runtime';
6
-
7
- var ALLOWED_NAVIGATION_KEYS = /* @__PURE__ */ new Set([
8
- "Backspace",
9
- "Tab",
10
- "Escape",
11
- "Enter",
12
- "Delete",
13
- "Home",
14
- "End",
15
- "ArrowLeft",
16
- "ArrowRight",
17
- "ArrowUp",
18
- "ArrowDown"
19
- ]);
20
- var ALLOWED_SHORTCUT_KEYS = /* @__PURE__ */ new Set(["a", "c", "v", "x", "z"]);
21
- var CurrencyInput = React.forwardRef(
22
- (_a, ref) => {
23
- var _b = _a, {
24
- value,
25
- onChange,
26
- placeholder = "Enter amount",
27
- currency = "$",
28
- locale = "en-US",
29
- min,
30
- max,
31
- disabled = false,
32
- className,
33
- error,
34
- id: providedId
35
- } = _b, props = __objRest(_b, [
36
- "value",
37
- "onChange",
38
- "placeholder",
39
- "currency",
40
- "locale",
41
- "min",
42
- "max",
43
- "disabled",
44
- "className",
45
- "error",
46
- "id"
47
- ]);
48
- const reactId = React.useId();
49
- const id = providedId != null ? providedId : reactId;
50
- const errorId = `${id}-error`;
51
- const [displayValue, setDisplayValue] = React.useState("");
52
- const [isFocused, setIsFocused] = React.useState(false);
53
- const formatNumber = React.useCallback(
54
- (num) => {
55
- if (num === null || isNaN(num)) return "";
56
- return new Intl.NumberFormat(locale, {
57
- minimumFractionDigits: 0,
58
- maximumFractionDigits: 2
59
- }).format(num);
60
- },
61
- [locale]
62
- );
63
- const parseInput = (input) => {
64
- const cleaned = input.replace(/[^\d.-]/g, "");
65
- const parsed = parseFloat(cleaned);
66
- return isNaN(parsed) ? null : parsed;
67
- };
68
- React.useEffect(() => {
69
- if (!isFocused) {
70
- setDisplayValue(formatNumber(value));
71
- }
72
- }, [value, isFocused, formatNumber]);
73
- const handleInputChange = (e) => {
74
- const inputValue = e.target.value;
75
- setDisplayValue(inputValue);
76
- const parsedValue = parseInput(inputValue);
77
- if (parsedValue !== null) {
78
- if (min !== void 0 && parsedValue < min) return;
79
- if (max !== void 0 && parsedValue > max) return;
80
- }
81
- onChange(parsedValue);
82
- };
83
- const handleFocus = () => {
84
- setIsFocused(true);
85
- if (value !== null && value !== void 0 && !isNaN(value)) {
86
- setDisplayValue(value.toString());
87
- }
88
- };
89
- const handleBlur = () => {
90
- setIsFocused(false);
91
- if (value !== null && value !== void 0 && !isNaN(value)) {
92
- setDisplayValue(formatNumber(value));
93
- } else {
94
- setDisplayValue("");
95
- }
96
- };
97
- const handleKeyDown = (e) => {
98
- if (ALLOWED_NAVIGATION_KEYS.has(e.key)) return;
99
- if ((e.ctrlKey || e.metaKey) && ALLOWED_SHORTCUT_KEYS.has(e.key.toLowerCase())) return;
100
- if (/^[0-9]$/.test(e.key)) return;
101
- if (e.key === "." || e.key === "-") return;
102
- e.preventDefault();
103
- };
104
- const symbolLength = currency.length;
105
- const inputPaddingClass = symbolLength <= 1 ? "pl-8" : symbolLength === 2 ? "pl-10" : symbolLength === 3 ? "pl-12" : "pl-14";
106
- return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
107
- /* @__PURE__ */ jsxs("div", { className: "relative", children: [
108
- /* @__PURE__ */ jsx(
109
- "span",
110
- {
111
- "aria-hidden": true,
112
- className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm font-semibold text-muted-foreground",
113
- children: currency
114
- }
115
- ),
116
- /* @__PURE__ */ jsx(
117
- Input,
118
- __spreadValues({
119
- ref,
120
- id,
121
- type: "text",
122
- inputMode: "decimal",
123
- value: displayValue,
124
- onChange: handleInputChange,
125
- onFocus: handleFocus,
126
- onBlur: handleBlur,
127
- onKeyDown: handleKeyDown,
128
- placeholder,
129
- disabled,
130
- "aria-invalid": error ? true : void 0,
131
- "aria-describedby": error ? errorId : void 0,
132
- className: cn(inputPaddingClass, className)
133
- }, props)
134
- )
135
- ] }),
136
- error && /* @__PURE__ */ jsx("p", { id: errorId, className: "ml-1 mt-1 text-sm text-destructive", children: error })
137
- ] });
138
- }
139
- );
140
- CurrencyInput.displayName = "CurrencyInput";
141
-
142
- export { CurrencyInput };
1
+ export { CurrencyInput } from '../chunk-LY67SOFC.js';
2
+ import '../chunk-GTQSGDYF.js';
3
+ import '../chunk-FEK5XGZW.js';
4
+ import '../chunk-MMUBH76A.js';
@@ -18,6 +18,12 @@ declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitiv
18
18
  scrollBehavior?: "inside" | "outside" | null | undefined;
19
19
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
20
20
  showCloseButton?: boolean;
21
+ /**
22
+ * Classes for the scrim behind the dialog. The default `bg-black/50` is
23
+ * kept for every existing caller; pass `bg-scrim-overlay` for the themed
24
+ * dim (see `--scrim-overlay` in globals.css, and why it is not `--scrim`).
25
+ */
26
+ overlayClassName?: string;
21
27
  } & React.RefAttributes<HTMLDivElement>>;
22
28
  declare const DialogHeader: {
23
29
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
@@ -1,3 +1,3 @@
1
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, dialogContentVariants } from '../chunk-JWTN7MNK.js';
1
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, dialogContentVariants } from '../chunk-TVEIUTBQ.js';
2
2
  import '../chunk-FEK5XGZW.js';
3
3
  import '../chunk-MMUBH76A.js';
@@ -15,6 +15,12 @@ declare const DrawerOverlay: React.ForwardRefExoticComponent<Omit<Omit<DialogPri
15
15
  declare const DrawerContent: React.ForwardRefExoticComponent<Omit<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
16
16
  variant?: "flush" | "floating";
17
17
  showHandle?: boolean;
18
+ /**
19
+ * Classes for the scrim behind the sheet. The default `bg-black/60` is kept
20
+ * for every existing caller; pass `bg-scrim-overlay` for the themed dim (see
21
+ * `--scrim-overlay` in globals.css, and why it is not `--scrim`).
22
+ */
23
+ overlayClassName?: string;
18
24
  } & React.RefAttributes<HTMLDivElement>>;
19
25
  declare const DrawerHeader: {
20
26
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
@@ -1,127 +1,3 @@
1
- import { cn } from '../chunk-FEK5XGZW.js';
2
- import { __objRest, __spreadValues, __spreadProps } from '../chunk-MMUBH76A.js';
3
- import * as React from 'react';
4
- import { Drawer as Drawer$1 } from 'vaul';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
6
-
7
- var DrawerDirectionContext = React.createContext("bottom");
8
- var Drawer = (_a) => {
9
- var _b = _a, {
10
- shouldScaleBackground = false,
11
- direction = "bottom"
12
- } = _b, props = __objRest(_b, [
13
- "shouldScaleBackground",
14
- "direction"
15
- ]);
16
- return /* @__PURE__ */ jsx(DrawerDirectionContext.Provider, { value: direction, children: /* @__PURE__ */ jsx(
17
- Drawer$1.Root,
18
- __spreadValues({
19
- shouldScaleBackground,
20
- direction
21
- }, props)
22
- ) });
23
- };
24
- Drawer.displayName = "Drawer";
25
- var DrawerTrigger = Drawer$1.Trigger;
26
- var DrawerPortal = Drawer$1.Portal;
27
- var DrawerClose = Drawer$1.Close;
28
- var DrawerOverlay = React.forwardRef((_a, ref) => {
29
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
30
- return /* @__PURE__ */ jsx(
31
- Drawer$1.Overlay,
32
- __spreadValues({
33
- ref,
34
- "data-slot": "drawer-overlay",
35
- className: cn("fixed inset-0 z-[1000] bg-black/60", className)
36
- }, props)
37
- );
38
- });
39
- DrawerOverlay.displayName = Drawer$1.Overlay.displayName;
40
- var DrawerContent = React.forwardRef((_a, ref) => {
41
- var _b = _a, { className, variant = "flush", showHandle, children } = _b, props = __objRest(_b, ["className", "variant", "showHandle", "children"]);
42
- const direction = React.useContext(DrawerDirectionContext);
43
- const isVertical = direction === "top" || direction === "bottom";
44
- const handleEnabled = showHandle != null ? showHandle : direction === "bottom";
45
- const positionClasses = direction === "bottom" ? "inset-x-0 bottom-0 flex-col rounded-t-2xl border-t [padding-bottom:max(env(safe-area-inset-bottom),0px)]" : direction === "top" ? "inset-x-0 top-0 flex-col rounded-b-2xl border-b [padding-top:max(env(safe-area-inset-top),0px)]" : direction === "left" ? "inset-y-0 left-0 h-full w-3/4 max-w-sm flex-col rounded-r-2xl border-r [padding-left:max(env(safe-area-inset-left),0px)]" : "inset-y-0 right-0 h-full w-3/4 max-w-sm flex-col rounded-l-2xl border-l [padding-right:max(env(safe-area-inset-right),0px)]";
46
- return /* @__PURE__ */ jsxs(DrawerPortal, { children: [
47
- /* @__PURE__ */ jsx(DrawerOverlay, {}),
48
- /* @__PURE__ */ jsxs(
49
- Drawer$1.Content,
50
- __spreadProps(__spreadValues({
51
- ref,
52
- "data-slot": "drawer-content",
53
- className: cn(
54
- "fixed z-[1000] flex border-border bg-card shadow-[var(--shadow-overlay)]",
55
- positionClasses,
56
- // The single height cap for every vertical drawer. Consumers should
57
- // NOT restate it: six app call sites carried an identical
58
- // `!max-h-[90vh]`, so this default governed nothing and changing it
59
- // here would have reached none of them.
60
- isVertical ? "max-h-[85vh]" : "",
61
- variant === "floating" && "m-3 rounded-2xl border",
62
- className
63
- )
64
- }, props), {
65
- children: [
66
- handleEnabled && /* @__PURE__ */ jsx(
67
- "div",
68
- {
69
- "aria-hidden": true,
70
- className: "mx-auto mt-2 h-1.5 w-[60px] shrink-0 rounded-full bg-muted-foreground/30"
71
- }
72
- ),
73
- children
74
- ]
75
- })
76
- )
77
- ] });
78
- });
79
- DrawerContent.displayName = "DrawerContent";
80
- var DrawerHeader = (_a) => {
81
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
82
- return /* @__PURE__ */ jsx(
83
- "div",
84
- __spreadValues({
85
- "data-slot": "drawer-header",
86
- className: cn("grid gap-1.5 p-4 text-center sm:text-left", className)
87
- }, props)
88
- );
89
- };
90
- DrawerHeader.displayName = "DrawerHeader";
91
- var DrawerFooter = (_a) => {
92
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
93
- return /* @__PURE__ */ jsx(
94
- "div",
95
- __spreadValues({
96
- "data-slot": "drawer-footer",
97
- className: cn("mt-auto flex flex-col gap-2 p-4", className)
98
- }, props)
99
- );
100
- };
101
- DrawerFooter.displayName = "DrawerFooter";
102
- var DrawerTitle = React.forwardRef((_a, ref) => {
103
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
104
- return /* @__PURE__ */ jsx(
105
- Drawer$1.Title,
106
- __spreadValues({
107
- ref,
108
- "data-slot": "drawer-title",
109
- className: cn("text-lg font-semibold leading-none tracking-tight", className)
110
- }, props)
111
- );
112
- });
113
- DrawerTitle.displayName = Drawer$1.Title.displayName;
114
- var DrawerDescription = React.forwardRef((_a, ref) => {
115
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
116
- return /* @__PURE__ */ jsx(
117
- Drawer$1.Description,
118
- __spreadValues({
119
- ref,
120
- "data-slot": "drawer-description",
121
- className: cn("text-sm text-muted-foreground", className)
122
- }, props)
123
- );
124
- });
125
- DrawerDescription.displayName = Drawer$1.Description.displayName;
126
-
127
- export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
1
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger } from '../chunk-XLHMF6F5.js';
2
+ import '../chunk-FEK5XGZW.js';
3
+ import '../chunk-MMUBH76A.js';
@@ -16,7 +16,7 @@ interface EmptyStateProps {
16
16
  className?: string;
17
17
  }
18
18
  declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
19
- declare const SearchEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "variant" | "icon"> & React.RefAttributes<HTMLDivElement>>;
20
- declare const ErrorEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "variant" | "icon"> & React.RefAttributes<HTMLDivElement>>;
19
+ declare const SearchEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "icon" | "variant"> & React.RefAttributes<HTMLDivElement>>;
20
+ declare const ErrorEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "icon" | "variant"> & React.RefAttributes<HTMLDivElement>>;
21
21
 
22
22
  export { EmptyState, ErrorEmptyState, SearchEmptyState };
@@ -1,5 +1,5 @@
1
1
  import { Text } from '../chunk-ZLMRVBD7.js';
2
- import { Badge } from '../chunk-ZU4NAYN7.js';
2
+ import { Badge } from '../chunk-NIAL4ZU2.js';
3
3
  import '../chunk-FEK5XGZW.js';
4
4
  import '../chunk-MMUBH76A.js';
5
5
  import { ChevronRight } from 'lucide-react';
@@ -1,5 +1,5 @@
1
- export { MentionSignal, MenuItem } from '../chunk-VSRGEB36.js';
2
- import '../chunk-GESB7GCF.js';
3
- import '../chunk-ZU4NAYN7.js';
1
+ export { MentionSignal, MenuItem } from '../chunk-XNBDACL7.js';
2
+ import '../chunk-6W25S5CF.js';
3
+ import '../chunk-NIAL4ZU2.js';
4
4
  import '../chunk-FEK5XGZW.js';
5
5
  import '../chunk-MMUBH76A.js';
@@ -0,0 +1,47 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * MenuPickRow — a dish in the add-an-item overlay (16-shared-table.html T3):
5
+ * its name, its price, and a disc that adds it.
6
+ *
7
+ * The disc is the control and the row is not: a whole-row target would make
8
+ * "read the menu" and "add this" the same gesture, and a reader scrolling a
9
+ * long menu would add things by accident. It is 44×44 as the accessibility
10
+ * floor asks, with the drawn 28px disc inside it.
11
+ *
12
+ * A tap adds one unit. There is no stepper and no quantity anywhere in the
13
+ * shared table — one row per unit, so removing one is removing one thing and
14
+ * never an arithmetic edit (the board's ruling 3). `selected` is therefore
15
+ * "this dish is on the table", not a count; a caller showing a second unit
16
+ * shows a second row.
17
+ */
18
+ type MenuPickRowProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onToggle"> & {
19
+ /** The dish. */
20
+ label: React.ReactNode;
21
+ /** Its price, formatted by the caller. */
22
+ price: React.ReactNode;
23
+ /** Is it on the table already? Fills the disc. */
24
+ selected?: boolean;
25
+ onToggle?: () => void;
26
+ /** The disc's accessible name when it would add — "Add Papanași". Injected. */
27
+ addLabel?: string;
28
+ /** Its name when it would remove — "Remove Papanași". Injected. */
29
+ removeLabel?: string;
30
+ disabled?: boolean;
31
+ };
32
+ declare const MenuPickRow: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "onToggle"> & {
33
+ /** The dish. */
34
+ label: React.ReactNode;
35
+ /** Its price, formatted by the caller. */
36
+ price: React.ReactNode;
37
+ /** Is it on the table already? Fills the disc. */
38
+ selected?: boolean;
39
+ onToggle?: () => void;
40
+ /** The disc's accessible name when it would add — "Add Papanași". Injected. */
41
+ addLabel?: string;
42
+ /** Its name when it would remove — "Remove Papanași". Injected. */
43
+ removeLabel?: string;
44
+ disabled?: boolean;
45
+ } & React.RefAttributes<HTMLDivElement>>;
46
+
47
+ export { MenuPickRow, type MenuPickRowProps };
@@ -0,0 +1,49 @@
1
+ import { cn } from '../chunk-FEK5XGZW.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from '../chunk-MMUBH76A.js';
3
+ import * as React from 'react';
4
+ import { Plus } from 'lucide-react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var MenuPickRow = React.forwardRef(
8
+ (_a, ref) => {
9
+ var _b = _a, { className, label, price, selected = false, onToggle, addLabel, removeLabel, disabled = false } = _b, props = __objRest(_b, ["className", "label", "price", "selected", "onToggle", "addLabel", "removeLabel", "disabled"]);
10
+ return /* @__PURE__ */ jsxs(
11
+ "div",
12
+ __spreadProps(__spreadValues({
13
+ ref,
14
+ "data-slot": "menu-pick-row",
15
+ "data-selected": selected ? "" : void 0,
16
+ className: cn("flex items-center gap-3 py-2.5", className)
17
+ }, props), {
18
+ children: [
19
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-[14px] font-bold", children: label }),
20
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 text-[14px] font-bold tabular-nums", children: price }),
21
+ /* @__PURE__ */ jsx(
22
+ "button",
23
+ {
24
+ type: "button",
25
+ onClick: onToggle,
26
+ disabled,
27
+ "aria-pressed": selected,
28
+ "aria-label": selected ? removeLabel : addLabel,
29
+ className: "grid size-11 shrink-0 place-items-center rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
30
+ children: /* @__PURE__ */ jsx(
31
+ "span",
32
+ {
33
+ className: cn(
34
+ "grid size-7 place-items-center rounded-full border transition-colors",
35
+ selected ? "border-transparent bg-primary text-primary-foreground" : "border-border bg-background text-muted-foreground"
36
+ ),
37
+ children: /* @__PURE__ */ jsx(Plus, { className: "size-4", "aria-hidden": true, strokeWidth: 2.5 })
38
+ }
39
+ )
40
+ }
41
+ )
42
+ ]
43
+ })
44
+ );
45
+ }
46
+ );
47
+ MenuPickRow.displayName = "MenuPickRow";
48
+
49
+ export { MenuPickRow };
@@ -1,11 +1,11 @@
1
1
  import { Checkbox } from '../chunk-L3CDXVEP.js';
2
2
  import { Popover, PopoverTrigger, PopoverContent } from '../chunk-2ADCZXZJ.js';
3
- import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from '../chunk-ZJMCU7MI.js';
4
- import '../chunk-JWTN7MNK.js';
3
+ import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from '../chunk-VCRXL7H5.js';
4
+ import '../chunk-TVEIUTBQ.js';
5
5
  import { Button } from '../chunk-5SGKGFMN.js';
6
6
  import '../chunk-RIH2IS7X.js';
7
7
  import '../chunk-5YNIQ2BL.js';
8
- import { Badge } from '../chunk-ZU4NAYN7.js';
8
+ import { Badge } from '../chunk-NIAL4ZU2.js';
9
9
  import { cn } from '../chunk-FEK5XGZW.js';
10
10
  import '../chunk-MMUBH76A.js';
11
11
  import * as React from 'react';
@@ -6,7 +6,7 @@ import { showsGradeAtom } from '../chunk-I5V446BX.js';
6
6
  import { Separator } from '../chunk-NWZGSLPU.js';
7
7
  import { springSnappy } from '../chunk-OIV7B44M.js';
8
8
  import { Skeleton } from '../chunk-XBBEX4SF.js';
9
- import { Badge } from '../chunk-ZU4NAYN7.js';
9
+ import { Badge } from '../chunk-NIAL4ZU2.js';
10
10
  import { cn } from '../chunk-FEK5XGZW.js';
11
11
  import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
12
12
  import { forwardRef, memo, useState, useMemo } from 'react';
@@ -3,7 +3,7 @@ import '../chunk-FMTJGO76.js';
3
3
  import '../chunk-MWB7S54O.js';
4
4
  import '../chunk-NWZGSLPU.js';
5
5
  import { Text } from '../chunk-ZLMRVBD7.js';
6
- import { Badge } from '../chunk-ZU4NAYN7.js';
6
+ import { Badge } from '../chunk-NIAL4ZU2.js';
7
7
  import { cn } from '../chunk-FEK5XGZW.js';
8
8
  import '../chunk-MMUBH76A.js';
9
9
  import { useState } from 'react';
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * QrPanel — the frame around the code that gets a phone onto a shared table
5
+ * (16-shared-table.html T8).
6
+ *
7
+ * The code arrives as `children`: an `img` with a data URL, an inline `svg`,
8
+ * whatever the caller's QR library returns. The design system imports no QR
9
+ * library — a dependency that ships in every consumer's bundle to serve one
10
+ * sheet is the wrong trade, and the app already has `qrcode`.
11
+ *
12
+ * The white plate is not decoration. A QR reader needs the quiet zone and the
13
+ * light module ground to decode, so the plate stays white in dark mode too and
14
+ * the padding is the quiet zone, not padding taste. Its hairline is a neutral
15
+ * alpha rather than `--border`: the plate is always white, so a themed border
16
+ * would put a dark ring on it in dark mode.
17
+ *
18
+ * The caption sits OUTSIDE the plate, on the sheet's own ground (T8), which is
19
+ * also what lets it use `--muted-foreground` instead of an ink picked to work
20
+ * on white.
21
+ */
22
+ type QrPanelProps = React.HTMLAttributes<HTMLDivElement> & {
23
+ /** The line under the code — "Scan with a phone camera to join". */
24
+ caption?: React.ReactNode;
25
+ };
26
+ declare const QrPanel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
27
+ /** The line under the code — "Scan with a phone camera to join". */
28
+ caption?: React.ReactNode;
29
+ } & React.RefAttributes<HTMLDivElement>>;
30
+
31
+ export { QrPanel, type QrPanelProps };