@bearmenu/ui 0.8.33 → 0.8.35

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 (86) 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.d.ts +11 -1
  18. package/dist/components/booking-row.js +4 -1
  19. package/dist/components/button.d.ts +2 -2
  20. package/dist/components/combobox.js +2 -2
  21. package/dist/components/command.d.ts +15 -15
  22. package/dist/components/command.js +2 -2
  23. package/dist/components/concept-convergence.js +2 -2
  24. package/dist/components/currency-input.js +4 -142
  25. package/dist/components/dialog.d.ts +6 -0
  26. package/dist/components/dialog.js +1 -1
  27. package/dist/components/drawer.d.ts +6 -0
  28. package/dist/components/drawer.js +3 -127
  29. package/dist/components/empty-state.d.ts +2 -2
  30. package/dist/components/filter-category-row.js +1 -1
  31. package/dist/components/menu-item.js +3 -3
  32. package/dist/components/menu-pick-row.d.ts +47 -0
  33. package/dist/components/menu-pick-row.js +49 -0
  34. package/dist/components/multi-select-combobox.js +3 -3
  35. package/dist/components/place-card.js +1 -1
  36. package/dist/components/place-details-mobile.js +1 -1
  37. package/dist/components/qr-panel.d.ts +31 -0
  38. package/dist/components/qr-panel.js +33 -0
  39. package/dist/components/reconcile-bar.d.ts +47 -0
  40. package/dist/components/reconcile-bar.js +60 -0
  41. package/dist/components/responsive-overlay.d.ts +59 -0
  42. package/dist/components/responsive-overlay.js +132 -0
  43. package/dist/components/searchable-select.js +2 -2
  44. package/dist/components/signature-chip.js +2 -2
  45. package/dist/components/spinner.d.ts +2 -2
  46. package/dist/components/split-share-row.d.ts +77 -0
  47. package/dist/components/split-share-row.js +101 -0
  48. package/dist/components/table-ledger-card.d.ts +80 -0
  49. package/dist/components/table-ledger-card.js +84 -0
  50. package/dist/components/table-trigger-band.d.ts +56 -0
  51. package/dist/components/table-trigger-band.js +43 -0
  52. package/dist/components/tag.d.ts +2 -2
  53. package/dist/components/text.d.ts +2 -2
  54. package/dist/components/toggle.d.ts +1 -1
  55. package/dist/components/top-ranking-entry.js +3 -3
  56. package/dist/components/venue-events-block.js +1 -1
  57. package/package.json +23 -207
  58. package/src/components/action-bar.stories.tsx +78 -0
  59. package/src/components/action-bar.tsx +80 -0
  60. package/src/components/activity-row.stories.tsx +78 -0
  61. package/src/components/activity-row.tsx +65 -0
  62. package/src/components/avatar.stories.tsx +55 -0
  63. package/src/components/avatar.tsx +63 -19
  64. package/src/components/badge.stories.tsx +41 -0
  65. package/src/components/badge.tsx +13 -0
  66. package/src/components/booking-row.tsx +13 -0
  67. package/src/components/dialog.tsx +8 -2
  68. package/src/components/drawer.tsx +8 -2
  69. package/src/components/menu-pick-row.stories.tsx +71 -0
  70. package/src/components/menu-pick-row.tsx +76 -0
  71. package/src/components/qr-panel.stories.tsx +39 -0
  72. package/src/components/qr-panel.tsx +52 -0
  73. package/src/components/reconcile-bar.stories.tsx +57 -0
  74. package/src/components/reconcile-bar.tsx +80 -0
  75. package/src/components/responsive-overlay.stories.tsx +91 -0
  76. package/src/components/responsive-overlay.test.tsx +162 -0
  77. package/src/components/responsive-overlay.tsx +232 -0
  78. package/src/components/shared-table-primitives.test.tsx +482 -0
  79. package/src/components/split-share-row.stories.tsx +114 -0
  80. package/src/components/split-share-row.tsx +150 -0
  81. package/src/components/table-ledger-card.stories.tsx +120 -0
  82. package/src/components/table-ledger-card.tsx +138 -0
  83. package/src/components/table-trigger-band.stories.tsx +76 -0
  84. package/src/components/table-trigger-band.tsx +75 -0
  85. package/src/globals.css +44 -0
  86. package/src/test/setup.ts +11 -0
@@ -0,0 +1,80 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+
5
+ /**
6
+ * TableLedgerCard — what one party at a shared table has against their name.
7
+ *
8
+ * The board draws this shape four times and it is one component
9
+ * (16-shared-table.html):
10
+ * - T2, a person's card — avatar, "Adrian · host", "2 items + share", their
11
+ * total, and the items under it.
12
+ * - T2, the Shared card — the same card whose `lead` is a people glyph or an
13
+ * `AvatarGroup` instead of one avatar, and whose rows carry "40 lei each".
14
+ * - X5, the same card the moment someone else changed it: `updated` rings it
15
+ * and tints the header, so a remote write is marked in place and the ledger
16
+ * never silently re-sorts under a reader.
17
+ * - T4 desktop, the drop targets — the header alone, no rows, `drop-idle`
18
+ * until a drag is over it and `drop-active` while it is.
19
+ *
20
+ * Money slots are `font-bold tabular-nums`, so a column of totals lines up and
21
+ * does not shuffle when one changes. The board sets the NUMERAL in the bold
22
+ * sans and only the currency suffix in mono, small and muted — so a caller
23
+ * passes `96` followed by a `font-mono text-[11px] text-muted-foreground`
24
+ * "lei", and never wraps the whole amount in `font-mono`.
25
+ *
26
+ * Drag is an accelerator only. A card in `drop-active` must have a tap and
27
+ * keyboard path to the same outcome — every T4 row opens "Who had this?" —
28
+ * because a pointer that can drag is not a pointer everyone has.
29
+ */
30
+ declare const tableLedgerCardVariants: (props?: ({
31
+ state?: "default" | "updated" | "drop-idle" | "drop-active" | null | undefined;
32
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
33
+ type TableLedgerRow = {
34
+ /** React key. Falls back to the index when the caller has no id. */
35
+ id?: string;
36
+ /** The dish or drink. */
37
+ label: React.ReactNode;
38
+ /** Its price, formatted by the caller. */
39
+ amount: React.ReactNode;
40
+ /** The quiet trailing line — "40 lei each" on the Shared card. Replaces `amount` when set. */
41
+ trailing?: React.ReactNode;
42
+ /** A chip on the row — "just now" on the X5 card, "Queued" on X6. */
43
+ badge?: React.ReactNode;
44
+ };
45
+ type TableLedgerCardProps = Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & VariantProps<typeof tableLedgerCardVariants> & {
46
+ /** The leading slot: an `Avatar`, an `AvatarGroup`, or a glyph for "Shared". */
47
+ lead?: React.ReactNode;
48
+ /** The name — "Adrian · host", "Shared between everyone". */
49
+ person?: React.ReactNode;
50
+ /** The line under the name — "2 items + share". */
51
+ meta?: React.ReactNode;
52
+ /** Their running total, formatted by the caller. */
53
+ total?: React.ReactNode;
54
+ /** The items. Empty or omitted for a T4 drop target. */
55
+ rows?: TableLedgerRow[];
56
+ /** Accessible names. Injected; the design system holds no copy. */
57
+ labels?: {
58
+ rows?: string;
59
+ };
60
+ };
61
+ declare const TableLedgerCard: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & VariantProps<(props?: ({
62
+ state?: "default" | "updated" | "drop-idle" | "drop-active" | null | undefined;
63
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & {
64
+ /** The leading slot: an `Avatar`, an `AvatarGroup`, or a glyph for "Shared". */
65
+ lead?: React.ReactNode;
66
+ /** The name — "Adrian · host", "Shared between everyone". */
67
+ person?: React.ReactNode;
68
+ /** The line under the name — "2 items + share". */
69
+ meta?: React.ReactNode;
70
+ /** Their running total, formatted by the caller. */
71
+ total?: React.ReactNode;
72
+ /** The items. Empty or omitted for a T4 drop target. */
73
+ rows?: TableLedgerRow[];
74
+ /** Accessible names. Injected; the design system holds no copy. */
75
+ labels?: {
76
+ rows?: string;
77
+ };
78
+ } & React.RefAttributes<HTMLDivElement>>;
79
+
80
+ export { TableLedgerCard, type TableLedgerCardProps, type TableLedgerRow, tableLedgerCardVariants };
@@ -0,0 +1,84 @@
1
+ import { cn } from '../chunk-FEK5XGZW.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from '../chunk-MMUBH76A.js';
3
+ import * as React from 'react';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var tableLedgerCardVariants = cva(
8
+ "overflow-hidden rounded-2xl border bg-card transition-colors",
9
+ {
10
+ variants: {
11
+ state: {
12
+ default: "border-border",
13
+ updated: "border-primary",
14
+ "drop-idle": "border-dashed border-border",
15
+ "drop-active": "border-dashed border-primary bg-accent-subtle"
16
+ }
17
+ },
18
+ defaultVariants: { state: "default" }
19
+ }
20
+ );
21
+ var TableLedgerCard = React.forwardRef(
22
+ (_a, ref) => {
23
+ var _b = _a, { className, state, lead, person, meta, total, rows, labels } = _b, props = __objRest(_b, ["className", "state", "lead", "person", "meta", "total", "rows", "labels"]);
24
+ return /* @__PURE__ */ jsxs(
25
+ "div",
26
+ __spreadProps(__spreadValues({
27
+ ref,
28
+ "data-slot": "table-ledger-card",
29
+ "data-state": state != null ? state : "default",
30
+ className: cn(tableLedgerCardVariants({ state }), className)
31
+ }, props), {
32
+ children: [
33
+ /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ "data-slot": "table-ledger-header",
37
+ className: cn(
38
+ "flex items-center gap-3 px-3.5 py-3",
39
+ // The header takes its own ground only when there are items under it,
40
+ // so it reads as their heading. A card with no rows — a drop target,
41
+ // a person who has had nothing yet — is one plain block, and tinting
42
+ // it would also paint over `drop-active`'s accent.
43
+ (rows == null ? void 0 : rows.length) ? state === "updated" ? "bg-accent-subtle" : "bg-surface-2/60" : void 0
44
+ ),
45
+ children: [
46
+ lead ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: lead }) : null,
47
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
48
+ person ? /* @__PURE__ */ jsx("div", { className: "truncate text-[15px] font-bold leading-tight", children: person }) : null,
49
+ meta ? /* @__PURE__ */ jsx("div", { className: "mt-0.5 truncate text-[12.5px] text-muted-foreground", children: meta }) : null
50
+ ] }),
51
+ total ? /* @__PURE__ */ jsx(
52
+ "div",
53
+ {
54
+ "data-slot": "table-ledger-total",
55
+ className: "shrink-0 text-[15px] font-bold tabular-nums",
56
+ children: total
57
+ }
58
+ ) : null
59
+ ]
60
+ }
61
+ ),
62
+ rows && rows.length > 0 ? /* @__PURE__ */ jsx("ul", { "data-slot": "table-ledger-rows", "aria-label": labels == null ? void 0 : labels.rows, className: "divide-y divide-border", children: rows.map((row, index) => {
63
+ var _a2;
64
+ return /* @__PURE__ */ jsxs(
65
+ "li",
66
+ {
67
+ className: "flex items-center gap-3 px-3.5 py-2.5 text-[14px]",
68
+ children: [
69
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: row.label }),
70
+ row.badge,
71
+ row.trailing ? /* @__PURE__ */ jsx("span", { className: "shrink-0 text-[12.5px] text-muted-foreground", children: row.trailing }) : /* @__PURE__ */ jsx("span", { className: "shrink-0 text-[14px] font-bold tabular-nums", children: row.amount })
72
+ ]
73
+ },
74
+ (_a2 = row.id) != null ? _a2 : index
75
+ );
76
+ }) }) : null
77
+ ]
78
+ })
79
+ );
80
+ }
81
+ );
82
+ TableLedgerCard.displayName = "TableLedgerCard";
83
+
84
+ export { TableLedgerCard, tableLedgerCardVariants };
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * TableTriggerBand — the way back to a live shared table from the venue's own
5
+ * pages: "You're at Table 18 · 3 people · 367 lei so far" (16-shared-table.html
6
+ * T0c), and the same band offering to start one when none is live (T0e).
7
+ *
8
+ * It is one target, not a card with a button in it. The frames draw a chevron
9
+ * under md and an "Open the table" button from md, but both mean "this band
10
+ * goes to the table", so the band is the link at both widths and `action`
11
+ * renders inside it as the wide screen's affordance — a span that looks like a
12
+ * button, `aria-hidden`, because the link already carries the name. A real
13
+ * button nested in a link is invalid HTML and gives a screen reader two
14
+ * controls where a reader sees one.
15
+ *
16
+ * `linkComponent` takes the app's router link (`next/link`); it falls back to
17
+ * `a`, so the design system imports no router.
18
+ */
19
+ type TableTriggerBandProps = {
20
+ /** "You're at Table 18", "Start a table". */
21
+ title: React.ReactNode;
22
+ /** "3 people · 367 lei so far"; desktop draws the longer "Adrian, Bruno and you · opened 19:42". */
23
+ meta?: React.ReactNode;
24
+ /** The avatar stack — an `AvatarGroup`, or nothing when no table is live. */
25
+ people?: React.ReactNode;
26
+ /**
27
+ * The wide screen's call to action. Decorative: the band is the control, so
28
+ * this must NOT be a real `button` — a button inside an anchor is invalid
29
+ * HTML. Pass `<Button asChild><span>…</span></Button>`.
30
+ */
31
+ action?: React.ReactNode;
32
+ href: string;
33
+ /** The app's link component. Defaults to `a`. */
34
+ linkComponent?: React.ElementType;
35
+ className?: string;
36
+ } & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "title" | "action">;
37
+ declare const TableTriggerBand: React.ForwardRefExoticComponent<{
38
+ /** "You're at Table 18", "Start a table". */
39
+ title: React.ReactNode;
40
+ /** "3 people · 367 lei so far"; desktop draws the longer "Adrian, Bruno and you · opened 19:42". */
41
+ meta?: React.ReactNode;
42
+ /** The avatar stack — an `AvatarGroup`, or nothing when no table is live. */
43
+ people?: React.ReactNode;
44
+ /**
45
+ * The wide screen's call to action. Decorative: the band is the control, so
46
+ * this must NOT be a real `button` — a button inside an anchor is invalid
47
+ * HTML. Pass `<Button asChild><span>…</span></Button>`.
48
+ */
49
+ action?: React.ReactNode;
50
+ href: string;
51
+ /** The app's link component. Defaults to `a`. */
52
+ linkComponent?: React.ElementType;
53
+ className?: string;
54
+ } & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "title" | "href" | "action"> & React.RefAttributes<HTMLAnchorElement>>;
55
+
56
+ export { TableTriggerBand, type TableTriggerBandProps };
@@ -0,0 +1,43 @@
1
+ import { cn } from '../chunk-FEK5XGZW.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from '../chunk-MMUBH76A.js';
3
+ import * as React from 'react';
4
+ import { ChevronRight } from 'lucide-react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var TableTriggerBand = React.forwardRef(
8
+ (_a, ref) => {
9
+ var _b = _a, { title, meta, people, action, href, linkComponent, className } = _b, props = __objRest(_b, ["title", "meta", "people", "action", "href", "linkComponent", "className"]);
10
+ const Link = linkComponent != null ? linkComponent : "a";
11
+ return /* @__PURE__ */ jsxs(
12
+ Link,
13
+ __spreadProps(__spreadValues({
14
+ ref,
15
+ href,
16
+ "data-slot": "table-trigger-band",
17
+ className: cn(
18
+ "flex items-center gap-3 rounded-2xl border border-primary bg-card px-3.5 py-3 transition-colors hover:bg-accent-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
19
+ className
20
+ )
21
+ }, props), {
22
+ children: [
23
+ people ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: people }) : null,
24
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
25
+ /* @__PURE__ */ jsx("div", { className: "truncate text-[15px] font-bold leading-tight", children: title }),
26
+ meta ? /* @__PURE__ */ jsx("div", { className: "mt-0.5 truncate text-[12.5px] text-muted-foreground", children: meta }) : null
27
+ ] }),
28
+ action ? /* @__PURE__ */ jsx("span", { "data-slot": "table-trigger-action", "aria-hidden": true, className: "hidden shrink-0 md:block", children: action }) : null,
29
+ /* @__PURE__ */ jsx(
30
+ ChevronRight,
31
+ {
32
+ "aria-hidden": true,
33
+ className: cn("size-5 shrink-0 text-muted-foreground", action && "md:hidden")
34
+ }
35
+ )
36
+ ]
37
+ })
38
+ );
39
+ }
40
+ );
41
+ TableTriggerBand.displayName = "TableTriggerBand";
42
+
43
+ export { TableTriggerBand };
@@ -3,11 +3,11 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const tagVariants: (props?: ({
6
- variant?: "default" | "destructive" | "outline" | "warning" | "success" | "primary" | "quiet" | null | undefined;
6
+ variant?: "primary" | "default" | "success" | "warning" | "destructive" | "outline" | "quiet" | null | undefined;
7
7
  size?: "default" | "sm" | "lg" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  declare const Tag: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & VariantProps<(props?: ({
10
- variant?: "default" | "destructive" | "outline" | "warning" | "success" | "primary" | "quiet" | null | undefined;
10
+ variant?: "primary" | "default" | "success" | "warning" | "destructive" | "outline" | "quiet" | null | undefined;
11
11
  size?: "default" | "sm" | "lg" | null | undefined;
12
12
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
13
13
  onRemove?: () => void;
@@ -22,8 +22,8 @@ import { VariantProps } from 'class-variance-authority';
22
22
  * Weights are 400 / 600 / 700. 500 is not in the system.
23
23
  */
24
24
  declare const textVariants: (props?: ({
25
- variant?: "h2" | "h3" | "label" | "body" | "caption" | "h1" | "h4" | "small" | "display" | "body-lg" | "body-sm" | "overline" | null | undefined;
26
- color?: "inherit" | "default" | "destructive" | "muted" | "primary" | "primary-foreground" | null | undefined;
25
+ variant?: "small" | "body" | "display" | "h2" | "h3" | "label" | "caption" | "h1" | "h4" | "body-lg" | "body-sm" | "overline" | null | undefined;
26
+ color?: "primary" | "default" | "inherit" | "destructive" | "muted" | "primary-foreground" | null | undefined;
27
27
  weight?: "bold" | "medium" | "normal" | "semibold" | null | undefined;
28
28
  leading?: "none" | "normal" | "tight" | "snug" | "relaxed" | "loose" | null | undefined;
29
29
  tracking?: "normal" | "tight" | "wide" | "wider" | null | undefined;
@@ -5,7 +5,7 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
5
5
  import { VariantProps } from 'class-variance-authority';
6
6
 
7
7
  declare const toggleVariants: (props?: ({
8
- variant?: "tab" | "default" | "outline" | "chip" | "segmented" | null | undefined;
8
+ variant?: "default" | "tab" | "outline" | "chip" | "segmented" | null | undefined;
9
9
  size?: "default" | "sm" | "lg" | null | undefined;
10
10
  } & class_variance_authority_types.ClassProp) | undefined) => string;
11
11
  declare function Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
@@ -1,8 +1,8 @@
1
- import { MenuItem } from '../chunk-VSRGEB36.js';
2
- import '../chunk-GESB7GCF.js';
1
+ import { MenuItem } from '../chunk-XNBDACL7.js';
2
+ import '../chunk-6W25S5CF.js';
3
3
  import { Separator } from '../chunk-NWZGSLPU.js';
4
4
  import { Skeleton } from '../chunk-XBBEX4SF.js';
5
- import '../chunk-ZU4NAYN7.js';
5
+ import '../chunk-NIAL4ZU2.js';
6
6
  import { cn } from '../chunk-FEK5XGZW.js';
7
7
  import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
8
8
  import { MapPin, Star, MessageSquareQuote } from 'lucide-react';
@@ -1,6 +1,6 @@
1
1
  import { Separator } from '../chunk-NWZGSLPU.js';
2
- import { Card } from '../chunk-FVSKGCK3.js';
3
2
  import { Skeleton } from '../chunk-XBBEX4SF.js';
3
+ import { Card } from '../chunk-FVSKGCK3.js';
4
4
  import '../chunk-ZLMRVBD7.js';
5
5
  import { cn } from '../chunk-FEK5XGZW.js';
6
6
  import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@bearmenu/ui",
3
- "version": "0.8.33",
4
- "packageManager": "pnpm@10.28.1",
3
+ "version": "0.8.35",
5
4
  "description": "BearMenu design system — shared UI tokens, primitives, and components",
6
5
  "license": "UNLICENSED",
7
6
  "repository": {
@@ -17,213 +16,20 @@
17
16
  "src"
18
17
  ],
19
18
  "exports": {
20
- "./components/accordion": "./src/components/accordion.tsx",
21
- "./components/alert": "./src/components/alert.tsx",
22
- "./components/alert-dialog": "./src/components/alert-dialog.tsx",
23
- "./components/aspect-ratio": "./src/components/aspect-ratio.tsx",
24
- "./components/avatar": "./src/components/avatar.tsx",
25
- "./components/badge": "./src/components/badge.tsx",
26
- "./components/banner": "./src/components/banner.tsx",
27
- "./components/booking-row": "./src/components/booking-row.tsx",
28
- "./components/booking-summary-card": "./src/components/booking-summary-card.tsx",
29
- "./components/breadcrumb": "./src/components/breadcrumb.tsx",
30
- "./components/button": "./src/components/button.tsx",
31
- "./components/button-group": "./src/components/button-group.tsx",
32
- "./components/calendar": "./src/components/calendar.tsx",
33
- "./components/card": "./src/components/card.tsx",
34
- "./components/carousel": "./src/components/carousel.tsx",
35
- "./components/category-deck": "./src/components/category-deck.tsx",
36
- "./components/checkbox": "./src/components/checkbox.tsx",
37
- "./components/circular-progress": "./src/components/circular-progress.tsx",
38
- "./components/coach-marks": "./src/components/coach-marks.tsx",
39
- "./components/collapsible": "./src/components/collapsible.tsx",
40
- "./components/combobox": "./src/components/combobox.tsx",
41
- "./components/command": "./src/components/command.tsx",
42
- "./components/concept-card": "./src/components/concept-card.tsx",
43
- "./components/concept-compare": "./src/components/concept-compare.tsx",
44
- "./components/concept-compare-rail": "./src/components/concept-compare-rail.tsx",
45
- "./components/concept-convergence": "./src/components/concept-convergence.tsx",
46
- "./components/convergence": "./src/components/convergence.tsx",
47
- "./components/coverflow": "./src/components/coverflow.tsx",
48
- "./components/currency-input": "./src/components/currency-input.tsx",
49
- "./components/date-input": "./src/components/date-input.tsx",
50
- "./components/day-rail-chip": "./src/components/day-rail-chip.tsx",
51
- "./components/description-list": "./src/components/description-list.tsx",
52
- "./components/dialog": "./src/components/dialog.tsx",
53
- "./components/doorway-tiles": "./src/components/doorway-tiles.tsx",
54
- "./components/drawer": "./src/components/drawer.tsx",
55
- "./components/drift-rail": "./src/components/drift-rail.tsx",
56
- "./components/dropdown-menu": "./src/components/dropdown-menu.tsx",
57
- "./components/empty-state": "./src/components/empty-state.tsx",
58
- "./components/event-card": "./src/components/event-card.tsx",
59
- "./components/event-compact-row": "./src/components/event-compact-row.tsx",
60
- "./components/event-day-header": "./src/components/event-day-header.tsx",
61
- "./components/event-day-separator": "./src/components/event-day-separator.tsx",
62
- "./components/event-detail-panel": "./src/components/event-detail-panel.tsx",
63
- "./components/event-hub-hero": "./src/components/event-hub-hero.tsx",
64
- "./components/event-index-row": "./src/components/event-index-row.tsx",
65
- "./components/event-list-row": "./src/components/event-list-row.tsx",
66
- "./components/event-list-row-wide": "./src/components/event-list-row-wide.tsx",
67
- "./components/event-poster-fallback": "./src/components/event-poster-fallback.tsx",
68
- "./components/event-tonight-strip": "./src/components/event-tonight-strip.tsx",
69
- "./components/event-types": "./src/components/event-types.ts",
70
- "./components/events-empty-state": "./src/components/events-empty-state.tsx",
71
- "./components/explainer-steps": "./src/components/explainer-steps.tsx",
72
- "./components/facet-group": "./src/components/facet-group.tsx",
73
- "./components/featured-rail-item": "./src/components/featured-rail-item.tsx",
74
- "./components/field": "./src/components/field.tsx",
75
- "./components/filter-category-row": "./src/components/filter-category-row.tsx",
76
- "./components/form": "./src/components/form.tsx",
77
- "./components/glass-ground": "./src/components/glass-ground.tsx",
78
- "./components/grade-atom": "./src/components/grade-atom.tsx",
79
- "./components/haptic-switch": "./src/components/haptic-switch.tsx",
80
- "./components/hold-countdown": "./src/components/hold-countdown.tsx",
81
- "./components/hub-surface": "./src/components/hub-surface.tsx",
82
- "./components/hue-chip": "./src/components/hue-chip.tsx",
83
- "./components/icon": "./src/components/icon.tsx",
84
- "./components/input": "./src/components/input.tsx",
85
- "./components/input-group": "./src/components/input-group.tsx",
86
- "./components/input-otp": "./src/components/input-otp.tsx",
87
- "./components/item": "./src/components/item.tsx",
88
- "./components/kbd": "./src/components/kbd.tsx",
89
- "./components/label": "./src/components/label.tsx",
90
- "./components/kitchen-dossier": "./src/components/kitchen-dossier.tsx",
91
- "./components/lazy-markdown": "./src/components/lazy-markdown.tsx",
92
- "./components/link-button": "./src/components/link-button.tsx",
93
- "./components/markdown-renderer": "./src/components/markdown-renderer.tsx",
94
- "./components/menu-dead-end": "./src/components/menu-dead-end.tsx",
95
- "./components/menu-family-block": "./src/components/menu-family-block.tsx",
96
- "./components/menu-family-card": "./src/components/menu-family-card.tsx",
97
- "./components/menu-field": "./src/components/menu-field.tsx",
98
- "./components/menu-filter-chips": "./src/components/menu-filter-chips.tsx",
99
- "./components/menu-group-rows": "./src/components/menu-group-rows.tsx",
100
- "./components/menu-hub-hero": "./src/components/menu-hub-hero.tsx",
101
- "./components/menu-index-header": "./src/components/menu-index-header.tsx",
102
- "./components/menu-index-list": "./src/components/menu-index-list.tsx",
103
- "./components/menu-intent-hero": "./src/components/menu-intent-hero.tsx",
104
- "./components/menu-item": "./src/components/menu-item.tsx",
105
- "./components/menu-kitchen-list": "./src/components/menu-kitchen-list.tsx",
106
- "./components/menu-mocks": "./src/components/menu-mocks.ts",
107
- "./components/menu-types": "./src/components/menu-types.ts",
108
- "./components/motion-icon": "./src/components/motion-icon.tsx",
109
- "./components/motion-icon-actions": "./src/components/motion-icon-actions.tsx",
110
- "./components/motion-icon-controls": "./src/components/motion-icon-controls.tsx",
111
- "./components/motion-icon-set": "./src/components/motion-icon-set.tsx",
112
- "./components/multi-select-combobox": "./src/components/multi-select-combobox.tsx",
113
- "./components/multi-select-menu": "./src/components/multi-select-menu.tsx",
114
- "./components/native-select": "./src/components/native-select.tsx",
115
- "./components/open-now-list": "./src/components/open-now-list.tsx",
116
- "./components/pagination": "./src/components/pagination.tsx",
117
- "./components/party-counter": "./src/components/party-counter.tsx",
118
- "./components/phone-frame": "./src/components/phone-frame.tsx",
119
- "./components/photo-ground": "./src/components/photo-ground.tsx",
120
- "./components/place-about-tab": "./src/components/place-about-tab.tsx",
121
- "./components/place-card": "./src/components/place-card.tsx",
122
- "./components/place-details-mobile": "./src/components/place-details-mobile.tsx",
123
- "./components/place-schedule-week": "./src/components/place-schedule-week.tsx",
124
- "./components/place-types": "./src/components/place-types.ts",
125
- "./components/popover": "./src/components/popover.tsx",
126
- "./components/poster-stack": "./src/components/poster-stack.tsx",
127
- "./components/poster-tape": "./src/components/poster-tape.tsx",
128
- "./components/poster-wall": "./src/components/poster-wall.tsx",
129
- "./components/progress": "./src/components/progress.tsx",
130
- "./components/qa-block": "./src/components/qa-block.tsx",
131
- "./components/quiet-stretch": "./src/components/quiet-stretch.tsx",
132
- "./components/radio-group": "./src/components/radio-group.tsx",
133
- "./components/rating": "./src/components/rating.tsx",
134
- "./components/scroll-area": "./src/components/scroll-area.tsx",
135
- "./components/scroll-fade": "./src/components/scroll-fade.tsx",
136
- "./components/search-bar": "./src/components/search-bar.tsx",
137
- "./components/searchable-select": "./src/components/searchable-select.tsx",
138
- "./components/section-header": "./src/components/section-header.tsx",
139
- "./components/segmented-nav": "./src/components/segmented-nav.tsx",
140
- "./components/select": "./src/components/select.tsx",
141
- "./components/selection-bar": "./src/components/selection-bar.tsx",
142
- "./components/separator": "./src/components/separator.tsx",
143
- "./components/sheet": "./src/components/sheet.tsx",
144
- "./components/signature-chip": "./src/components/signature-chip.tsx",
145
- "./components/skeleton": "./src/components/skeleton.tsx",
146
- "./components/skeleton-card": "./src/components/skeleton-card.tsx",
147
- "./components/slider": "./src/components/slider.tsx",
148
- "./components/sliding-panels": "./src/components/sliding-panels.tsx",
149
- "./components/sonner": "./src/components/sonner.tsx",
150
- "./components/sort-option-list": "./src/components/sort-option-list.tsx",
151
- "./components/spinner": "./src/components/spinner.tsx",
152
- "./components/stat-banner": "./src/components/stat-banner.tsx",
153
- "./components/stepper": "./src/components/stepper.tsx",
154
- "./components/sticky-container": "./src/components/sticky-container.tsx",
155
- "./components/story": "./src/components/story.tsx",
156
- "./components/switch": "./src/components/switch.tsx",
157
- "./components/table": "./src/components/table.tsx",
158
- "./components/tabs": "./src/components/tabs.tsx",
159
- "./components/tag": "./src/components/tag.tsx",
160
- "./components/tag-group": "./src/components/tag-group.tsx",
161
- "./components/text": "./src/components/text.tsx",
162
- "./components/textarea": "./src/components/textarea.tsx",
163
- "./components/time-slot": "./src/components/time-slot.tsx",
164
- "./components/timeline-day": "./src/components/timeline-day.tsx",
165
- "./components/timeline-hour": "./src/components/timeline-hour.tsx",
166
- "./components/timeline-hour-puck": "./src/components/timeline-hour-puck.tsx",
167
- "./components/toggle": "./src/components/toggle.tsx",
168
- "./components/toggle-group": "./src/components/toggle-group.tsx",
169
- "./components/tooltip": "./src/components/tooltip.tsx",
170
- "./components/top-comparison": "./src/components/top-comparison.tsx",
171
- "./components/top-cross-link": "./src/components/top-cross-link.tsx",
172
- "./components/top-ranking-entry": "./src/components/top-ranking-entry.tsx",
173
- "./components/top-ranking-hero": "./src/components/top-ranking-hero.tsx",
174
- "./components/top-ranking-legend": "./src/components/top-ranking-legend.tsx",
175
- "./components/top-types": "./src/components/top-types.ts",
176
- "./components/use-mobile": "./src/components/use-mobile.tsx",
177
- "./components/venue-events-block": "./src/components/venue-events-block.tsx",
178
- "./components/venue-grade-dimensions": "./src/components/venue-grade-dimensions.tsx",
179
- "./components/venue-quotes": "./src/components/venue-quotes.tsx",
180
- "./components/venue-wall": "./src/components/venue-wall.tsx",
181
- "./components/weekday-chip": "./src/components/weekday-chip.tsx",
182
- "./components/weekday-theme-banner": "./src/components/weekday-theme-banner.tsx",
183
- "./components/weekend-panel": "./src/components/weekend-panel.tsx",
184
19
  "./globals.css": "./src/globals.css",
185
- "./hooks/use-drag-swipe": "./src/hooks/use-drag-swipe.ts",
186
- "./hooks/use-haptic": "./src/hooks/use-haptic.ts",
187
- "./hooks/use-media-query": "./src/hooks/use-media-query.ts",
188
- "./hooks/use-mobile": "./src/hooks/use-mobile.ts",
189
- "./hooks/use-mounted-theme": "./src/hooks/use-mounted-theme.ts",
190
- "./hooks/use-sticky": "./src/hooks/use-sticky.ts",
191
- "./lib/card-hover": "./src/lib/card-hover.ts",
192
- "./lib/grade": "./src/lib/grade.ts",
193
- "./lib/icon-depth": "./src/lib/icon-depth.ts",
194
- "./lib/icon-registry": "./src/lib/icon-registry.ts",
195
- "./lib/motion": "./src/lib/motion.ts",
196
- "./lib/overlay-pill": "./src/lib/overlay-pill.ts",
197
- "./lib/utils": "./src/lib/utils.ts"
198
- },
199
- "publishConfig": {
200
- "exports": {
201
- "./globals.css": "./src/globals.css",
202
- "./components/*": {
203
- "types": "./dist/components/*.d.ts",
204
- "import": "./dist/components/*.js"
205
- },
206
- "./hooks/*": {
207
- "types": "./dist/hooks/*.d.ts",
208
- "import": "./dist/hooks/*.js"
209
- },
210
- "./lib/*": {
211
- "types": "./dist/lib/*.d.ts",
212
- "import": "./dist/lib/*.js"
213
- }
20
+ "./components/*": {
21
+ "types": "./dist/components/*.d.ts",
22
+ "import": "./dist/components/*.js"
23
+ },
24
+ "./hooks/*": {
25
+ "types": "./dist/hooks/*.d.ts",
26
+ "import": "./dist/hooks/*.js"
27
+ },
28
+ "./lib/*": {
29
+ "types": "./dist/lib/*.d.ts",
30
+ "import": "./dist/lib/*.js"
214
31
  }
215
32
  },
216
- "scripts": {
217
- "storybook": "storybook dev -p 6006",
218
- "build-storybook": "storybook build",
219
- "build": "tsup",
220
- "dev": "tsup --watch",
221
- "typecheck": "tsc --noEmit",
222
- "test": "vitest run",
223
- "test:watch": "vitest",
224
- "clean": "rm -rf dist",
225
- "prepublishOnly": "pnpm run build"
226
- },
227
33
  "peerDependencies": {
228
34
  "@hookform/resolvers": "^3.0.0 || ^5.0.0",
229
35
  "@radix-ui/react-accordion": "*",
@@ -332,5 +138,15 @@
332
138
  "vaul": "^1.1.2",
333
139
  "vitest": "^4.1.5",
334
140
  "zod": "^3.25.67"
141
+ },
142
+ "scripts": {
143
+ "storybook": "storybook dev -p 6006",
144
+ "build-storybook": "storybook build",
145
+ "build": "tsup",
146
+ "dev": "tsup --watch",
147
+ "typecheck": "tsc --noEmit",
148
+ "test": "vitest run",
149
+ "test:watch": "vitest",
150
+ "clean": "rm -rf dist"
335
151
  }
336
- }
152
+ }