@bearmenu/ui 0.8.11 → 0.8.12

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-H3ZZDX5L.js → chunk-7A42J73Q.js} +1 -1
  2. package/dist/{chunk-5RWTOT5Y.js → chunk-CNJQUHCU.js} +11 -1
  3. package/dist/{chunk-JS3EINZD.js → chunk-VAXOQS7W.js} +12 -0
  4. package/dist/{chunk-AKQ57NXY.js → chunk-ZQ53AGML.js} +2 -2
  5. package/dist/components/alert-dialog.js +1 -1
  6. package/dist/components/alert.d.ts +2 -2
  7. package/dist/components/avatar.d.ts +3 -3
  8. package/dist/components/badge.d.ts +1 -1
  9. package/dist/components/button.d.ts +2 -2
  10. package/dist/components/button.js +1 -1
  11. package/dist/components/calendar.js +1 -1
  12. package/dist/components/card.d.ts +4 -4
  13. package/dist/components/carousel.js +1 -1
  14. package/dist/components/combobox.js +1 -1
  15. package/dist/components/command.d.ts +8 -8
  16. package/dist/components/concept-compare-rail.js +2 -2
  17. package/dist/components/concept-compare.d.ts +1 -1
  18. package/dist/components/concept-compare.js +28 -7
  19. package/dist/components/concept-convergence.js +1 -1
  20. package/dist/components/date-input.d.ts +1 -1
  21. package/dist/components/dialog.d.ts +2 -2
  22. package/dist/components/empty-state.js +1 -1
  23. package/dist/components/event-detail-panel.js +1 -1
  24. package/dist/components/event-list-row-wide.js +1 -1
  25. package/dist/components/haptic-button.js +1 -1
  26. package/dist/components/input-group.d.ts +4 -4
  27. package/dist/components/input.d.ts +2 -2
  28. package/dist/components/item.d.ts +19 -9
  29. package/dist/components/item.js +15 -10
  30. package/dist/components/kbd.d.ts +2 -2
  31. package/dist/components/kitchen-dossier.d.ts +2 -0
  32. package/dist/components/kitchen-dossier.js +25 -18
  33. package/dist/components/link-button.js +1 -1
  34. package/dist/components/menu-family-block.d.ts +15 -9
  35. package/dist/components/menu-family-block.js +62 -59
  36. package/dist/components/menu-family-card.js +1 -1
  37. package/dist/components/menu-family-tiles.d.ts +19 -0
  38. package/dist/components/menu-family-tiles.js +57 -0
  39. package/dist/components/menu-hub-hero.js +8 -6
  40. package/dist/components/menu-index-list.d.ts +31 -12
  41. package/dist/components/menu-index-list.js +68 -31
  42. package/dist/components/menu-intent-hero.d.ts +1 -1
  43. package/dist/components/menu-mocks.d.ts +10 -3
  44. package/dist/components/menu-mocks.js +21 -9
  45. package/dist/components/menu-types.d.ts +33 -10
  46. package/dist/components/multi-select-combobox.js +1 -1
  47. package/dist/components/native-select.d.ts +2 -2
  48. package/dist/components/pagination.js +1 -1
  49. package/dist/components/photo-ground.d.ts +7 -1
  50. package/dist/components/photo-ground.js +1 -1
  51. package/dist/components/searchable-select.js +1 -1
  52. package/dist/components/select.d.ts +1 -1
  53. package/dist/components/sliding-panels.js +1 -1
  54. package/dist/components/snap-rail.d.ts +2 -2
  55. package/dist/components/spinner.d.ts +4 -4
  56. package/dist/components/tag.d.ts +4 -4
  57. package/dist/components/text.d.ts +3 -3
  58. package/dist/components/toggle.d.ts +1 -1
  59. package/dist/components/venue-grade-dimensions.js +1 -1
  60. package/dist/components/weekday-theme-banner.d.ts +24 -3
  61. package/dist/components/weekday-theme-banner.js +62 -14
  62. package/package.json +1 -1
  63. package/src/components/button.stories.tsx +25 -2
  64. package/src/components/button.tsx +12 -0
  65. package/src/components/colour-dictionary.stories.tsx +1 -1
  66. package/src/components/concept-compare.tsx +40 -9
  67. package/src/components/item.tsx +69 -45
  68. package/src/components/kitchen-dossier.tsx +45 -24
  69. package/src/components/menu-family-block.tsx +86 -79
  70. package/src/components/menu-family-tiles.stories.tsx +54 -0
  71. package/src/components/menu-family-tiles.test.tsx +30 -0
  72. package/src/components/menu-family-tiles.tsx +132 -0
  73. package/src/components/menu-hub-hero.tsx +13 -7
  74. package/src/components/menu-index-list.stories.tsx +6 -1
  75. package/src/components/menu-index-list.tsx +101 -54
  76. package/src/components/menu-intent-hero.tsx +1 -1
  77. package/src/components/menu-mocks.ts +32 -9
  78. package/src/components/menu-types.ts +32 -9
  79. package/src/components/photo-ground.tsx +13 -1
  80. package/src/components/venue-grade-dimensions.tsx +9 -2
  81. package/src/components/weekday-theme-banner.stories.tsx +43 -4
  82. package/src/components/weekday-theme-banner.tsx +94 -17
  83. package/dist/components/menu-intent-tiles.d.ts +0 -31
  84. package/dist/components/menu-intent-tiles.js +0 -50
  85. package/src/components/menu-intent-tiles.stories.tsx +0 -54
  86. package/src/components/menu-intent-tiles.tsx +0 -76
@@ -1,5 +1,5 @@
1
1
  import { SnapRail, SnapRailDots } from './chunk-DTXNDLSE.js';
2
- import { PhotoGround } from './chunk-5RWTOT5Y.js';
2
+ import { PhotoGround } from './chunk-CNJQUHCU.js';
3
3
  import { cn } from './chunk-FEK5XGZW.js';
4
4
  import * as React from 'react';
5
5
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -14,6 +14,7 @@ function PhotoGround({
14
14
  overlay,
15
15
  overlayClassName,
16
16
  loading = "lazy",
17
+ glyphClassName,
17
18
  className
18
19
  }) {
19
20
  const initialOf = (index) => {
@@ -39,7 +40,16 @@ function PhotoGround({
39
40
  /* Never a grey box: the ground with the venue's initial. A missing
40
41
  photograph is not a broken image, and drawing one as a placeholder
41
42
  makes a real city look unfinished. */
42
- /* @__PURE__ */ jsx("span", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "font-serif text-[64px] font-semibold leading-none text-white/15", children: initialOf(index) }) })
43
+ /* @__PURE__ */ jsx("span", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx(
44
+ "span",
45
+ {
46
+ className: cn(
47
+ "font-serif text-[64px] font-semibold leading-none text-white/15",
48
+ glyphClassName
49
+ ),
50
+ children: initialOf(index)
51
+ }
52
+ ) })
43
53
  ) }, index);
44
54
  };
45
55
  return /* @__PURE__ */ jsxs("span", { "aria-hidden": true, className: cn("absolute inset-0 block", PHOTO_GROUND, className), children: [
@@ -33,6 +33,16 @@ var buttonVariants = cva(
33
33
  * reverse, if the two are ever unified.
34
34
  */
35
35
  overlay: "bg-black/50 text-white hover:bg-black/65 focus-visible:ring-white/70",
36
+ /**
37
+ * The LABELLED action on a photo surface — "Open the menu", "See all
38
+ * 46 bars", "How we read menus" — where `overlay` is the unlabelled
39
+ * chrome. Glass on the ink: translucent white with a hairline, white
40
+ * type. Same reasoning as `overlay`: not theme-aware, because it
41
+ * contrasts with the photograph, not the canvas. Pair with `size="pill"`.
42
+ * Icons trail, never lead: `ArrowRight` when it navigates to a page,
43
+ * `ChevronRight` when it opens a sheet or drawer.
44
+ */
45
+ ink: "border border-white/20 bg-white/[0.16] text-white hover:bg-white/25 focus-visible:ring-white/70 focus-visible:ring-offset-0",
36
46
  brown: "bg-brown text-brown-foreground shadow-sm hover:bg-brown/85 hover:shadow",
37
47
  antagonist: "bg-primary-foreground text-primary shadow-sm hover:bg-accent hover:text-accent-foreground border border-border hover:border-accent"
38
48
  },
@@ -41,6 +51,8 @@ var buttonVariants = cva(
41
51
  sm: "h-9 rounded-lg px-4",
42
52
  default: "h-11 px-6 py-2",
43
53
  lg: "h-12 rounded-2xl px-8",
54
+ /** The `ink` action's shape. Owns the radius so no variant fights it. */
55
+ pill: "h-11 rounded-full px-5 text-[13.5px] font-bold",
44
56
  icon: "h-11 w-11 rounded-full",
45
57
  "icon-xs": "h-8 w-8 rounded-full [&_svg]:size-3.5",
46
58
  "icon-sm": "h-9 w-9 rounded-full",
@@ -38,11 +38,11 @@ function VenueGradeDimensions({
38
38
  "div",
39
39
  {
40
40
  "aria-hidden": true,
41
- className: "relative block h-[3px] overflow-hidden rounded-full bg-muted",
41
+ className: "relative block h-[3px] overflow-hidden rounded-full bg-current/15",
42
42
  children: /* @__PURE__ */ jsx(
43
43
  "span",
44
44
  {
45
- className: "absolute inset-y-0 left-0 rounded-full bg-[var(--gradient-primary,currentColor)]",
45
+ className: "absolute inset-y-0 left-0 rounded-full bg-current bg-[image:var(--gradient-primary)]",
46
46
  style: { width: `${Math.min(100, Math.max(0, value))}%` }
47
47
  }
48
48
  )
@@ -1,4 +1,4 @@
1
- import { buttonVariants } from '../chunk-JS3EINZD.js';
1
+ import { buttonVariants } from '../chunk-VAXOQS7W.js';
2
2
  import '../chunk-R47NEOSI.js';
3
3
  import { cn } from '../chunk-FEK5XGZW.js';
4
4
  import { __objRest, __spreadProps, __spreadValues } from '../chunk-3GWWZKX7.js';
@@ -3,10 +3,10 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const alertVariants: (props?: ({
6
- variant?: "default" | "success" | "warning" | "destructive" | null | undefined;
6
+ variant?: "default" | "destructive" | "success" | "warning" | null | undefined;
7
7
  } & class_variance_authority_types.ClassProp) | undefined) => string;
8
8
  declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
9
- variant?: "default" | "success" | "warning" | "destructive" | null | undefined;
9
+ variant?: "default" | "destructive" | "success" | "warning" | null | undefined;
10
10
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
11
11
  declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
12
12
  declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
@@ -4,11 +4,11 @@ import * as AvatarPrimitive from '@radix-ui/react-avatar';
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare const avatarVariants: (props?: ({
7
- size?: "xs" | "sm" | "default" | "lg" | "xl" | null | undefined;
7
+ size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  type AvatarSize = NonNullable<VariantProps<typeof avatarVariants>["size"]>;
10
10
  declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React.RefAttributes<HTMLSpanElement>, "ref"> & VariantProps<(props?: ({
11
- size?: "xs" | "sm" | "default" | "lg" | "xl" | null | undefined;
11
+ size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
12
12
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLSpanElement>>;
13
13
  declare const AvatarImage: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React.RefAttributes<HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
14
14
  declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
@@ -17,7 +17,7 @@ declare const AvatarBadge: React.ForwardRefExoticComponent<React.HTMLAttributes<
17
17
  tone?: "success" | "warning" | "destructive" | "muted";
18
18
  } & React.RefAttributes<HTMLSpanElement>>;
19
19
  declare const avatarGroupOverflowVariants: (props?: ({
20
- size?: "xs" | "sm" | "default" | "lg" | "xl" | null | undefined;
20
+ size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
21
21
  } & class_variance_authority_types.ClassProp) | undefined) => string;
22
22
  declare const AvatarGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
23
23
  max?: number;
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare const badgeVariants: (props?: ({
7
- variant?: "default" | "success" | "warning" | "destructive" | "outline" | "secondary" | "glass" | "overlay" | "brown" | null | undefined;
7
+ variant?: "default" | "destructive" | "outline" | "secondary" | "glass" | "overlay" | "brown" | "success" | "warning" | null | undefined;
8
8
  live?: boolean | null | undefined;
9
9
  } & class_variance_authority_types.ClassProp) | undefined) => string;
10
10
  interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
@@ -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?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | "glass" | "overlay" | "brown" | "antagonist" | null | undefined;
7
- size?: "xs" | "sm" | "default" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "glass" | "overlay" | "ink" | "brown" | "antagonist" | null | undefined;
7
+ size?: "default" | "xs" | "sm" | "lg" | "pill" | "icon" | "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,4 +1,4 @@
1
- export { Button, buttonVariants } from '../chunk-JS3EINZD.js';
1
+ export { Button, buttonVariants } from '../chunk-VAXOQS7W.js';
2
2
  import '../chunk-R47NEOSI.js';
3
3
  import '../chunk-FEK5XGZW.js';
4
4
  import '../chunk-3GWWZKX7.js';
@@ -1,4 +1,4 @@
1
- import { buttonVariants, Button } from '../chunk-JS3EINZD.js';
1
+ import { buttonVariants, Button } from '../chunk-VAXOQS7W.js';
2
2
  import '../chunk-R47NEOSI.js';
3
3
  import { cn } from '../chunk-FEK5XGZW.js';
4
4
  import { __objRest, __spreadValues, __spreadProps } from '../chunk-3GWWZKX7.js';
@@ -3,13 +3,13 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const cardVariants: (props?: ({
6
- variant?: "muted" | "outline" | "glass" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
7
- size?: "sm" | "default" | "lg" | null | undefined;
6
+ variant?: "outline" | "glass" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
7
+ size?: "default" | "sm" | "lg" | null | undefined;
8
8
  interactive?: boolean | null | undefined;
9
9
  } & class_variance_authority_types.ClassProp) | undefined) => string;
10
10
  declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
11
- variant?: "muted" | "outline" | "glass" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
12
- size?: "sm" | "default" | "lg" | null | undefined;
11
+ variant?: "outline" | "glass" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
12
+ size?: "default" | "sm" | "lg" | null | undefined;
13
13
  interactive?: boolean | null | undefined;
14
14
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
15
15
  declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { Button } from '../chunk-JS3EINZD.js';
1
+ import { Button } from '../chunk-VAXOQS7W.js';
2
2
  import '../chunk-R47NEOSI.js';
3
3
  import { cn } from '../chunk-FEK5XGZW.js';
4
4
  import { __objRest, __spreadProps, __spreadValues } from '../chunk-3GWWZKX7.js';
@@ -1,7 +1,7 @@
1
1
  import { Popover, PopoverTrigger, PopoverContent } from '../chunk-66MAPLXS.js';
2
2
  import { Command, CommandInput, CommandList, CommandLoading, CommandEmpty, CommandGroup, CommandItem } from '../chunk-XNA2INVQ.js';
3
3
  import '../chunk-FRPPIXMY.js';
4
- import { Button } from '../chunk-JS3EINZD.js';
4
+ import { Button } from '../chunk-VAXOQS7W.js';
5
5
  import '../chunk-R47NEOSI.js';
6
6
  import { cn } from '../chunk-FEK5XGZW.js';
7
7
  import '../chunk-3GWWZKX7.js';
@@ -8,7 +8,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
8
8
  ref?: React.Ref<HTMLDivElement>;
9
9
  } & {
10
10
  asChild?: boolean;
11
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
11
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
12
12
  label?: string;
13
13
  shouldFilter?: boolean;
14
14
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -28,7 +28,7 @@ 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" | "value" | "type"> & {
31
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
32
32
  value?: string;
33
33
  onValueChange?: (search: string) => void;
34
34
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -38,7 +38,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
38
38
  ref?: React.Ref<HTMLDivElement>;
39
39
  } & {
40
40
  asChild?: boolean;
41
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
41
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
42
42
  label?: string;
43
43
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
44
44
  declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
@@ -47,14 +47,14 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
47
47
  ref?: React.Ref<HTMLDivElement>;
48
48
  } & {
49
49
  asChild?: boolean;
50
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
50
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
51
51
  declare const CommandLoading: React.ForwardRefExoticComponent<Omit<{
52
52
  children?: React.ReactNode;
53
53
  } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
54
54
  ref?: React.Ref<HTMLDivElement>;
55
55
  } & {
56
56
  asChild?: boolean;
57
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
57
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
58
58
  progress?: number;
59
59
  label?: string;
60
60
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -64,7 +64,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
64
64
  ref?: React.Ref<HTMLDivElement>;
65
65
  } & {
66
66
  asChild?: boolean;
67
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "heading" | "value"> & {
67
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "heading" | "value"> & {
68
68
  heading?: React.ReactNode;
69
69
  value?: string;
70
70
  forceMount?: boolean;
@@ -73,7 +73,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
73
73
  ref?: React.Ref<HTMLDivElement>;
74
74
  } & {
75
75
  asChild?: boolean;
76
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
76
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
77
77
  alwaysRender?: boolean;
78
78
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
79
79
  declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
@@ -82,7 +82,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
82
82
  ref?: React.Ref<HTMLDivElement>;
83
83
  } & {
84
84
  asChild?: boolean;
85
- }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "value" | "disabled"> & {
85
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "disabled" | "value"> & {
86
86
  disabled?: boolean;
87
87
  onSelect?: (value: string) => void;
88
88
  value?: string;
@@ -1,5 +1,5 @@
1
- export { ConceptCompareRail } from '../chunk-H3ZZDX5L.js';
1
+ export { ConceptCompareRail } from '../chunk-7A42J73Q.js';
2
2
  import '../chunk-DTXNDLSE.js';
3
- import '../chunk-5RWTOT5Y.js';
3
+ import '../chunk-CNJQUHCU.js';
4
4
  import '../chunk-FEK5XGZW.js';
5
5
  import '../chunk-3GWWZKX7.js';
@@ -69,7 +69,7 @@ type ConceptCompareFigure = {
69
69
  type ConceptCompareLabels = {
70
70
  /** Small caps kicker, e.g. "DISH CONCEPT". */
71
71
  kind: string;
72
- /** The badge on the lowest-priced room, e.g. "CHEAPEST". */
72
+ /** The badge on the lowest-priced room, e.g. "CHEAPEST" — the fallback when a row carries no `badge`. */
73
73
  cheapest: string;
74
74
  /** The badge on every other room, e.g. "#2". Defaults to `#${rank}`. */
75
75
  rank?: (rank: number) => string;
@@ -1,7 +1,7 @@
1
1
  import { Separator } from '../chunk-WSRWFA6K.js';
2
- import { ConceptCompareRail } from '../chunk-H3ZZDX5L.js';
2
+ import { ConceptCompareRail } from '../chunk-7A42J73Q.js';
3
3
  import '../chunk-DTXNDLSE.js';
4
- import { PhotoGround, PHOTO_GROUND } from '../chunk-5RWTOT5Y.js';
4
+ import { PhotoGround, PHOTO_GROUND } from '../chunk-CNJQUHCU.js';
5
5
  import { Skeleton } from '../chunk-QXHMPJ35.js';
6
6
  import { cn } from '../chunk-FEK5XGZW.js';
7
7
  import { __objRest, __spreadValues } from '../chunk-3GWWZKX7.js';
@@ -106,8 +106,11 @@ function ConceptCompare({
106
106
  actions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 [&>*]:w-full lg:[&>*]:w-auto", children: actions })
107
107
  ] }) : void 0,
108
108
  children: rooms.map((room, index) => {
109
+ var _a2, _b2;
109
110
  const href = hrefs == null ? void 0 : hrefs[room.place_slug];
110
- const isCheapest = room.price === cheapest;
111
+ const badge = (_a2 = room.badge) != null ? _a2 : room.price === cheapest ? labels.cheapest : rankOf(index + 1);
112
+ const isCheapest = badge === labels.cheapest;
113
+ const lead = (_b2 = room.lead) != null ? _b2 : isCheapest ? "price" : void 0;
111
114
  const roomClass = cn(
112
115
  /* Transparent on the phone — the card behind it is the room's
113
116
  photograph — with only its scrim and its line. A photograph of
@@ -140,14 +143,23 @@ function ConceptCompare({
140
143
  ),
141
144
  children: [
142
145
  isCheapest && /* @__PURE__ */ jsx(ArrowDown, { className: "h-3 w-3 shrink-0", "aria-hidden": true }),
143
- isCheapest ? labels.cheapest : rankOf(index + 1)
146
+ badge
144
147
  ]
145
148
  }
146
149
  ),
147
150
  /* @__PURE__ */ jsxs("span", { className: "mt-2.5 flex items-center gap-1.5 text-white", children: [
148
151
  /* @__PURE__ */ jsx(MapPin, { className: "h-3.5 w-3.5 shrink-0 text-white/70", "aria-hidden": true }),
149
152
  /* @__PURE__ */ jsx("b", { className: "min-w-0 flex-1 truncate text-[15px] font-bold leading-tight", children: room.place_name }),
150
- room.rating !== void 0 && /* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-1 text-[12px] text-white/70", children: [
153
+ room.grade ? /* @__PURE__ */ jsx(
154
+ "span",
155
+ {
156
+ className: cn(
157
+ "shrink-0 text-[14px] font-extrabold leading-none tabular-nums text-[oklch(0.82_0.15_85)]",
158
+ lead === "grade" && "text-[16px]"
159
+ ),
160
+ children: room.grade
161
+ }
162
+ ) : room.rating !== void 0 && /* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-1 text-[12px] text-white/70", children: [
151
163
  /* @__PURE__ */ jsx(Star, { className: "h-3 w-3 shrink-0", "aria-hidden": true }),
152
164
  /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: room.rating })
153
165
  ] })
@@ -155,7 +167,7 @@ function ConceptCompare({
155
167
  room.place_area && /* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-[12px] text-white/70", children: room.place_area }),
156
168
  /* @__PURE__ */ jsx("span", { className: "mt-2 block truncate font-serif text-[14px] text-white/90", children: room.alias }),
157
169
  /* @__PURE__ */ jsx(Separator, { className: "my-2.5 via-white/20" }),
158
- /* @__PURE__ */ jsxs("span", { className: "flex items-baseline gap-2", children: [
170
+ /* @__PURE__ */ jsxs("span", { className: "flex flex-wrap items-baseline gap-x-2 gap-y-1", children: [
159
171
  /* @__PURE__ */ jsx(
160
172
  "b",
161
173
  {
@@ -166,7 +178,16 @@ function ConceptCompare({
166
178
  children: formatPrice(room.price)
167
179
  }
168
180
  ),
169
- room.mentions !== void 0 && room.mentions > 0 && /* @__PURE__ */ jsx("span", { className: "text-[11.5px] text-white/65", children: labels.mentions(room.mentions) })
181
+ room.mentions !== void 0 && room.mentions > 0 && /* @__PURE__ */ jsx(
182
+ "span",
183
+ {
184
+ className: cn(
185
+ "text-[11.5px]",
186
+ lead === "mentions" ? "font-bold text-white" : "text-white/65"
187
+ ),
188
+ children: labels.mentions(room.mentions)
189
+ }
190
+ )
170
191
  ] })
171
192
  ] });
172
193
  return href ? /* @__PURE__ */ jsx(
@@ -1,4 +1,4 @@
1
- import { PhotoGround } from '../chunk-5RWTOT5Y.js';
1
+ import { PhotoGround } from '../chunk-CNJQUHCU.js';
2
2
  import { Convergence } from '../chunk-MZL7CGCL.js';
3
3
  import '../chunk-LEAYBICI.js';
4
4
  import { Badge } from '../chunk-2CXU5WZO.js';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- declare const DateInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & {
3
+ declare const DateInput: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> & {
4
4
  /** Native input type. Defaults to "date". */
5
5
  type?: "date" | "datetime-local" | "time" | "month" | "week";
6
6
  size?: "sm" | "default" | "lg";
@@ -10,11 +10,11 @@ declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
10
10
  declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
11
11
  declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
12
  declare const dialogContentVariants: (props?: ({
13
- size?: "sm" | "default" | "lg" | "xl" | "full" | null | undefined;
13
+ size?: "default" | "sm" | "lg" | "xl" | "full" | null | undefined;
14
14
  scrollBehavior?: "inside" | "outside" | null | undefined;
15
15
  } & class_variance_authority_types.ClassProp) | undefined) => string;
16
16
  declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & VariantProps<(props?: ({
17
- size?: "sm" | "default" | "lg" | "xl" | "full" | null | undefined;
17
+ size?: "default" | "sm" | "lg" | "xl" | "full" | null | undefined;
18
18
  scrollBehavior?: "inside" | "outside" | null | undefined;
19
19
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
20
20
  showCloseButton?: boolean;
@@ -1,4 +1,4 @@
1
- import { Button } from '../chunk-JS3EINZD.js';
1
+ import { Button } from '../chunk-VAXOQS7W.js';
2
2
  import '../chunk-R47NEOSI.js';
3
3
  import { Text } from '../chunk-7BWTYWM3.js';
4
4
  import { cn } from '../chunk-FEK5XGZW.js';
@@ -2,7 +2,7 @@ import { resolveEventEntryFee } from '../chunk-DNSXMHYX.js';
2
2
  import { Separator } from '../chunk-WSRWFA6K.js';
3
3
  import { EventPosterFallback } from '../chunk-FDITZ2VM.js';
4
4
  import { Skeleton } from '../chunk-QXHMPJ35.js';
5
- import { Button } from '../chunk-JS3EINZD.js';
5
+ import { Button } from '../chunk-VAXOQS7W.js';
6
6
  import '../chunk-R47NEOSI.js';
7
7
  import { cn } from '../chunk-FEK5XGZW.js';
8
8
  import { __spreadProps, __spreadValues, __objRest } from '../chunk-3GWWZKX7.js';
@@ -3,7 +3,7 @@ import { Tag } from '../chunk-ZDAHKI3A.js';
3
3
  import { Separator } from '../chunk-WSRWFA6K.js';
4
4
  import { EventPosterFallback } from '../chunk-FDITZ2VM.js';
5
5
  import { Skeleton } from '../chunk-QXHMPJ35.js';
6
- import { buttonVariants } from '../chunk-JS3EINZD.js';
6
+ import { buttonVariants } from '../chunk-VAXOQS7W.js';
7
7
  import '../chunk-R47NEOSI.js';
8
8
  import { cn } from '../chunk-FEK5XGZW.js';
9
9
  import { __objRest, __spreadValues } from '../chunk-3GWWZKX7.js';
@@ -1,4 +1,4 @@
1
- import { Button } from '../chunk-JS3EINZD.js';
1
+ import { Button } from '../chunk-VAXOQS7W.js';
2
2
  import { useHaptic } from '../chunk-R47NEOSI.js';
3
3
  import '../chunk-FEK5XGZW.js';
4
4
  import { __objRest, __spreadProps, __spreadValues } from '../chunk-3GWWZKX7.js';
@@ -3,12 +3,12 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const inputGroupVariants: (props?: ({
6
- size?: "sm" | "default" | "lg" | null | undefined;
7
- shape?: "rounded" | "pill" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | null | undefined;
7
+ shape?: "pill" | "rounded" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  declare const InputGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
10
- size?: "sm" | "default" | "lg" | null | undefined;
11
- shape?: "rounded" | "pill" | null | undefined;
10
+ size?: "default" | "sm" | "lg" | null | undefined;
11
+ shape?: "pill" | "rounded" | null | undefined;
12
12
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
13
13
  declare const InputGroupInput: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
14
14
  declare const InputGroupAddon: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
@@ -3,8 +3,8 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const inputVariants: (props?: ({
6
- size?: "sm" | "default" | "lg" | null | undefined;
7
- shape?: "rounded" | "pill" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | null | undefined;
7
+ shape?: "pill" | "rounded" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
10
10
  }
@@ -3,21 +3,31 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const itemVariants: (props?: ({
6
- variant?: "default" | "muted" | "outline" | null | undefined;
7
- size?: "sm" | "default" | "lg" | null | undefined;
6
+ variant?: "default" | "outline" | "muted" | null | undefined;
7
+ size?: "default" | "sm" | "lg" | null | undefined;
8
8
  interactive?: boolean | null | undefined;
9
9
  } & class_variance_authority_types.ClassProp) | undefined) => string;
10
10
  declare const Item: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
11
- variant?: "default" | "muted" | "outline" | null | undefined;
12
- size?: "sm" | "default" | "lg" | null | undefined;
11
+ variant?: "default" | "outline" | "muted" | null | undefined;
12
+ size?: "default" | "sm" | "lg" | null | undefined;
13
13
  interactive?: boolean | null | undefined;
14
14
  } & class_variance_authority_types.ClassProp) | undefined) => string> & {
15
15
  asChild?: boolean;
16
16
  } & React.RefAttributes<HTMLDivElement>>;
17
- declare const ItemMedia: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
18
- declare const ItemContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
19
- declare const ItemTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
20
- declare const ItemDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
21
- declare const ItemActions: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
17
+ declare const ItemMedia: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
18
+ asChild?: boolean;
19
+ } & React.RefAttributes<HTMLDivElement>>;
20
+ declare const ItemContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
21
+ asChild?: boolean;
22
+ } & React.RefAttributes<HTMLDivElement>>;
23
+ declare const ItemTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
24
+ asChild?: boolean;
25
+ } & React.RefAttributes<HTMLDivElement>>;
26
+ declare const ItemDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
27
+ asChild?: boolean;
28
+ } & React.RefAttributes<HTMLDivElement>>;
29
+ declare const ItemActions: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
30
+ asChild?: boolean;
31
+ } & React.RefAttributes<HTMLDivElement>>;
22
32
 
23
33
  export { Item, ItemActions, ItemContent, ItemDescription, ItemMedia, ItemTitle, itemVariants };
@@ -48,9 +48,10 @@ var Item = React.forwardRef(
48
48
  Item.displayName = "Item";
49
49
  var ItemMedia = React.forwardRef(
50
50
  (_a, ref) => {
51
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
51
+ var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
52
+ const Comp = asChild ? Slot : "div";
52
53
  return /* @__PURE__ */ jsx(
53
- "div",
54
+ Comp,
54
55
  __spreadValues({
55
56
  ref,
56
57
  "data-slot": "item-media",
@@ -62,9 +63,10 @@ var ItemMedia = React.forwardRef(
62
63
  ItemMedia.displayName = "ItemMedia";
63
64
  var ItemContent = React.forwardRef(
64
65
  (_a, ref) => {
65
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
66
+ var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
67
+ const Comp = asChild ? Slot : "div";
66
68
  return /* @__PURE__ */ jsx(
67
- "div",
69
+ Comp,
68
70
  __spreadValues({
69
71
  ref,
70
72
  "data-slot": "item-content",
@@ -76,9 +78,10 @@ var ItemContent = React.forwardRef(
76
78
  ItemContent.displayName = "ItemContent";
77
79
  var ItemTitle = React.forwardRef(
78
80
  (_a, ref) => {
79
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
81
+ var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
82
+ const Comp = asChild ? Slot : "div";
80
83
  return /* @__PURE__ */ jsx(
81
- "div",
84
+ Comp,
82
85
  __spreadValues({
83
86
  ref,
84
87
  "data-slot": "item-title",
@@ -90,9 +93,10 @@ var ItemTitle = React.forwardRef(
90
93
  ItemTitle.displayName = "ItemTitle";
91
94
  var ItemDescription = React.forwardRef(
92
95
  (_a, ref) => {
93
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
96
+ var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
97
+ const Comp = asChild ? Slot : "div";
94
98
  return /* @__PURE__ */ jsx(
95
- "div",
99
+ Comp,
96
100
  __spreadValues({
97
101
  ref,
98
102
  "data-slot": "item-description",
@@ -104,9 +108,10 @@ var ItemDescription = React.forwardRef(
104
108
  ItemDescription.displayName = "ItemDescription";
105
109
  var ItemActions = React.forwardRef(
106
110
  (_a, ref) => {
107
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
111
+ var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
112
+ const Comp = asChild ? Slot : "div";
108
113
  return /* @__PURE__ */ jsx(
109
- "div",
114
+ Comp,
110
115
  __spreadValues({
111
116
  ref,
112
117
  "data-slot": "item-actions",
@@ -3,10 +3,10 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const kbdVariants: (props?: ({
6
- size?: "sm" | "default" | "lg" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | null | undefined;
7
7
  } & class_variance_authority_types.ClassProp) | undefined) => string;
8
8
  declare const Kbd: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & VariantProps<(props?: ({
9
- size?: "sm" | "default" | "lg" | null | undefined;
9
+ size?: "default" | "sm" | "lg" | null | undefined;
10
10
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLElement>>;
11
11
  declare const KbdGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
12
12
 
@@ -56,6 +56,8 @@ type KitchenDossierLabels = {
56
56
  next: string;
57
57
  /** Dimension key → translated label. */
58
58
  dimensions: Partial<Record<VenueGradeDimensionKey, string>>;
59
+ /** Beside the grade in the title row, e.g. "/10". Omit for the bare numeral. */
60
+ gradeUnit?: string;
59
61
  };
60
62
  type KitchenDossierProps = {
61
63
  place: PlacePreview;