@bearmenu/ui 0.8.55 → 0.8.56

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 (63) hide show
  1. package/dist/{chunk-CZ2HC7WY.js → chunk-EGN5DOLQ.js} +2 -2
  2. package/dist/{chunk-YE4ZQUTI.js → chunk-QOXXIYDG.js} +14 -2
  3. package/dist/{chunk-I5V446BX.js → chunk-TDTLEDX6.js} +1 -1
  4. package/dist/{chunk-CBBECMBD.js → chunk-WBTSOARU.js} +55 -2
  5. package/dist/components/alert.d.ts +2 -2
  6. package/dist/components/badge.d.ts +1 -1
  7. package/dist/components/banner.d.ts +1 -1
  8. package/dist/components/button.d.ts +2 -2
  9. package/dist/components/card.d.ts +2 -2
  10. package/dist/components/command.d.ts +15 -15
  11. package/dist/components/concept-compare.d.ts +1 -1
  12. package/dist/components/doorway-tiles.d.ts +1 -1
  13. package/dist/components/empty-state.d.ts +2 -2
  14. package/dist/components/event-detail-panel.d.ts +1 -1
  15. package/dist/components/event-detail-panel.js +2 -2
  16. package/dist/components/grade-atom.d.ts +1 -1
  17. package/dist/components/grade-atom.js +2 -2
  18. package/dist/components/kitchen-dossier.d.ts +1 -1
  19. package/dist/components/menu-dead-end.d.ts +1 -1
  20. package/dist/components/menu-family-block.d.ts +1 -1
  21. package/dist/components/menu-family-block.js +3 -3
  22. package/dist/components/menu-family-card.d.ts +1 -1
  23. package/dist/components/menu-filter-chips.d.ts +1 -1
  24. package/dist/components/menu-group-rows.d.ts +1 -1
  25. package/dist/components/menu-index-header.d.ts +1 -1
  26. package/dist/components/menu-index-list.d.ts +1 -1
  27. package/dist/components/menu-intent-hero.d.ts +1 -1
  28. package/dist/components/menu-item.d.ts +34 -1
  29. package/dist/components/menu-item.js +3 -1
  30. package/dist/components/menu-kitchen-list.d.ts +1 -1
  31. package/dist/components/menu-kitchen-list.js +3 -3
  32. package/dist/components/menu-mocks.d.ts +1 -1
  33. package/dist/components/menu-types.d.ts +1 -1
  34. package/dist/components/open-now-list.d.ts +1 -1
  35. package/dist/components/place-about-tab.d.ts +1 -1
  36. package/dist/components/place-card.d.ts +1 -1
  37. package/dist/components/place-card.js +2 -2
  38. package/dist/components/place-details-mobile.d.ts +1 -1
  39. package/dist/components/place-schedule-week.d.ts +1 -1
  40. package/dist/components/place-types.d.ts +1 -1
  41. package/dist/components/qa-block.d.ts +1 -1
  42. package/dist/components/spinner.d.ts +2 -2
  43. package/dist/components/tag.d.ts +2 -2
  44. package/dist/components/text.d.ts +2 -2
  45. package/dist/components/top-comparison.d.ts +1 -1
  46. package/dist/components/top-cross-link.d.ts +1 -1
  47. package/dist/components/top-ranking-entry.d.ts +1 -1
  48. package/dist/components/top-ranking-entry.js +3 -1
  49. package/dist/components/top-ranking-hero.d.ts +1 -1
  50. package/dist/components/top-types.d.ts +1 -1
  51. package/dist/components/venue-grade-dimensions.d.ts +1 -1
  52. package/dist/components/venue-quotes.d.ts +1 -1
  53. package/dist/components/venue-wall.d.ts +1 -1
  54. package/dist/lib/grade.d.ts +1 -1
  55. package/dist/lib/grade.js +1 -1
  56. package/dist/{place-types-Dzy6FH67.d.ts → place-types-CjB4JlH0.d.ts} +2 -2
  57. package/package.json +1 -1
  58. package/src/components/grade-atom.test.tsx +15 -0
  59. package/src/components/grade-atom.tsx +15 -3
  60. package/src/components/menu-item.stories.tsx +108 -0
  61. package/src/components/menu-item.test.tsx +100 -0
  62. package/src/components/menu-item.tsx +89 -6
  63. package/src/lib/grade.ts +2 -2
@@ -1,5 +1,5 @@
1
- import { GradeAtom } from './chunk-YE4ZQUTI.js';
2
- import { showsGradeAtom } from './chunk-I5V446BX.js';
1
+ import { GradeAtom } from './chunk-QOXXIYDG.js';
2
+ import { showsGradeAtom } from './chunk-TDTLEDX6.js';
3
3
  import { Separator } from './chunk-NWZGSLPU.js';
4
4
  import { Skeleton } from './chunk-XBBEX4SF.js';
5
5
  import { cn } from './chunk-FEK5XGZW.js';
@@ -1,4 +1,4 @@
1
- import { shouldShowGradeNumber, resolveGradeBand, formatGrade } from './chunk-I5V446BX.js';
1
+ import { shouldShowGradeNumber, resolveGradeBand, formatGrade } from './chunk-TDTLEDX6.js';
2
2
  import { cn } from './chunk-FEK5XGZW.js';
3
3
  import { Info, ShieldAlert } from 'lucide-react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -22,6 +22,18 @@ var BAND_CLASSES_PHOTO = {
22
22
  weak: { ring: "ring-rose-400/70", num: "text-rose-200" }
23
23
  };
24
24
  var SIZE = {
25
+ // Inline in a line of text (a menu row's name or venue line): 18px fits a
26
+ // 15px name and a 12px venue line without making either taller, which the
27
+ // 24px xs did (Adrian, 2026-11-09). Number only, like xs.
28
+ "2xs": {
29
+ box: "h-[18px] px-1 rounded",
30
+ minW: "min-w-7",
31
+ num: "text-2xs",
32
+ desc: "text-2xs",
33
+ gap: "gap-0.5",
34
+ shield: "h-2.5 w-2.5",
35
+ showDesc: false
36
+ },
25
37
  xs: {
26
38
  box: "h-6 px-1.5 rounded-md",
27
39
  minW: "min-w-9",
@@ -73,7 +85,7 @@ function GradeAtom({
73
85
  const sz = SIZE[size];
74
86
  const infoGlyph = showInfo ? /* @__PURE__ */ jsx(Info, { className: cn("shrink-0 opacity-70", sz.shield), "aria-hidden": true }) : null;
75
87
  if (!shouldShowGradeNumber(grade)) {
76
- if (size === "xs") return null;
88
+ if (size === "xs" || size === "2xs") return null;
77
89
  return /* @__PURE__ */ jsxs(
78
90
  "span",
79
91
  {
@@ -16,7 +16,7 @@ function shouldShowGradeNumber(grade) {
16
16
  }
17
17
  function showsGradeAtom(grade, size) {
18
18
  if ((grade == null ? void 0 : grade.overall) == null) return false;
19
- return size !== "xs" || shouldShowGradeNumber(grade);
19
+ return size !== "xs" && size !== "2xs" || shouldShowGradeNumber(grade);
20
20
  }
21
21
  function resolveDimensionTone(score) {
22
22
  if (score >= 75) return "strong";
@@ -1,9 +1,11 @@
1
1
  import { SignatureChip } from './chunk-6PQINSAA.js';
2
+ import { GradeAtom } from './chunk-QOXXIYDG.js';
3
+ import { showsGradeAtom } from './chunk-TDTLEDX6.js';
2
4
  import { cn } from './chunk-FEK5XGZW.js';
3
5
  import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
4
6
  import { memo } from 'react';
5
7
  import { Star, ThumbsUp, MessageSquareQuote } from 'lucide-react';
6
- import { jsxs, jsx } from 'react/jsx-runtime';
8
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
9
 
8
10
  function DefaultLink(_a) {
9
11
  var _b = _a, { href } = _b, props = __objRest(_b, ["href"]);
@@ -83,6 +85,10 @@ var MenuItem = memo(function MenuItem2({
83
85
  formatRating = (score) => score.toFixed(1),
84
86
  markGradient,
85
87
  venueName,
88
+ venueStatus,
89
+ venueDetail,
90
+ venueGrade,
91
+ nameGrade,
86
92
  subtitle,
87
93
  href,
88
94
  linkLabel,
@@ -184,6 +190,16 @@ var MenuItem = memo(function MenuItem2({
184
190
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
185
191
  /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-1.5", children: [
186
192
  /* @__PURE__ */ jsx("h3", { className: "text-[15px] font-semibold leading-snug text-foreground", children: item.name }),
193
+ nameGrade && showsGradeAtom(nameGrade.grade, "2xs") && /* @__PURE__ */ jsx(
194
+ GradeAtom,
195
+ {
196
+ grade: nameGrade.grade,
197
+ labels: nameGrade.labels,
198
+ size: "2xs",
199
+ hideDescriptor: true,
200
+ className: "shrink-0 self-center"
201
+ }
202
+ ),
187
203
  showSignatureBadge && /* @__PURE__ */ jsx(
188
204
  SignatureChip,
189
205
  {
@@ -193,7 +209,44 @@ var MenuItem = memo(function MenuItem2({
193
209
  }
194
210
  )
195
211
  ] }),
196
- venueName && /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate text-[12px] font-medium text-foreground/70", children: venueName }),
212
+ venueName && /* @__PURE__ */ jsxs("p", { className: "mt-0.5 flex min-w-0 items-center gap-1.5 text-[12px]", children: [
213
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate font-semibold text-foreground", children: venueName }),
214
+ venueGrade && showsGradeAtom(venueGrade.grade, "2xs") && /* @__PURE__ */ jsx(
215
+ GradeAtom,
216
+ {
217
+ grade: venueGrade.grade,
218
+ labels: venueGrade.labels,
219
+ size: "2xs",
220
+ hideDescriptor: true,
221
+ className: "shrink-0"
222
+ }
223
+ ),
224
+ venueDetail && /* @__PURE__ */ jsxs(Fragment, { children: [
225
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-muted-foreground", children: "\xB7" }),
226
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 font-normal text-muted-foreground", children: venueDetail })
227
+ ] }),
228
+ venueStatus && /* @__PURE__ */ jsxs(
229
+ "span",
230
+ {
231
+ "data-slot": "venue-status",
232
+ "data-tone": venueStatus.tone,
233
+ className: "inline-flex shrink-0 items-center gap-1 font-normal text-muted-foreground",
234
+ children: [
235
+ /* @__PURE__ */ jsx(
236
+ "span",
237
+ {
238
+ "aria-hidden": true,
239
+ className: cn(
240
+ "size-1.5 shrink-0 rounded-full",
241
+ venueStatus.tone === "open" ? "bg-success" : "bg-muted-foreground"
242
+ )
243
+ }
244
+ ),
245
+ venueStatus.label
246
+ ]
247
+ }
248
+ )
249
+ ] }),
197
250
  subtitle ? /* @__PURE__ */ jsx("p", { className: "mt-0.5 line-clamp-2 text-xs italic leading-snug text-muted-foreground", children: subtitle }) : item.description && /* @__PURE__ */ jsx(
198
251
  "p",
199
252
  {
@@ -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" | "destructive" | "warning" | "success" | null | undefined;
6
+ variant?: "success" | "warning" | "default" | "destructive" | 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" | "destructive" | "warning" | "success" | null | undefined;
9
+ variant?: "success" | "warning" | "default" | "destructive" | 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,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?: "code" | "default" | "destructive" | "outline" | "secondary" | "glass" | "overlay" | "brown" | "warning" | "success" | "onPrimary" | "confirmed" | "pending" | "completed" | "assignee" | "softSuccess" | "softWarning" | "softDestructive" | "softNeutral" | null | undefined;
7
+ variant?: "secondary" | "success" | "warning" | "default" | "destructive" | "outline" | "glass" | "overlay" | "brown" | "code" | "onPrimary" | "confirmed" | "pending" | "completed" | "assignee" | "softSuccess" | "softWarning" | "softDestructive" | "softNeutral" | null | undefined;
8
8
  size?: "status" | "chip" | null | undefined;
9
9
  live?: boolean | null | undefined;
10
10
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -31,7 +31,7 @@ import { VariantProps } from 'class-variance-authority';
31
31
  * right edge, centred on the text, and never wraps under it.
32
32
  */
33
33
  declare const bannerVariants: (props?: ({
34
- tone?: "destructive" | "warning" | "info" | null | undefined;
34
+ tone?: "warning" | "destructive" | "info" | null | undefined;
35
35
  } & class_variance_authority_types.ClassProp) | undefined) => string;
36
36
  type BannerProps = Omit<React.HTMLAttributes<HTMLDivElement>, "title"> & VariantProps<typeof bannerVariants> & {
37
37
  /**
@@ -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?: "secondary" | "link" | "warning" | "default" | "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> {
@@ -3,12 +3,12 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const cardVariants: (props?: ({
6
- variant?: "section" | "outline" | "glass" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
6
+ variant?: "outline" | "glass" | "section" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
7
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?: "section" | "outline" | "glass" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
11
+ variant?: "outline" | "glass" | "section" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
12
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>>;
@@ -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>>, "onChange" | "value" | "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">, "heading" | "value"> & {
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">, "onSelect" | "value" | "disabled"> & {
86
86
  disabled?: boolean;
87
87
  onSelect?: (value: string) => void;
88
88
  value?: string;
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuConceptPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuLinkComponent } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -53,7 +53,7 @@ interface EmptyStateProps {
53
53
  * louder than a load failure the user can retry.
54
54
  */
55
55
  declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
56
- declare const SearchEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "variant" | "icon"> & React.RefAttributes<HTMLDivElement>>;
57
- declare const ErrorEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "variant" | "icon"> & React.RefAttributes<HTMLDivElement>>;
56
+ declare const SearchEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "icon" | "variant"> & React.RefAttributes<HTMLDivElement>>;
57
+ declare const ErrorEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "icon" | "variant"> & React.RefAttributes<HTMLDivElement>>;
58
58
 
59
59
  export { EmptyState, ErrorEmptyState, SearchEmptyState };
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { G as GradeAtomLabels, a as PlaceGrade } from '../place-types-Dzy6FH67.js';
3
+ import { G as GradeAtomLabels, a as PlaceGrade } from '../place-types-CjB4JlH0.js';
4
4
  import { EventPreview, EventFormatters } from './event-types.js';
5
5
  import '../lib/grade.js';
6
6
 
@@ -1,5 +1,5 @@
1
- import { GradeAtom } from '../chunk-YE4ZQUTI.js';
2
- import { showsGradeAtom } from '../chunk-I5V446BX.js';
1
+ import { GradeAtom } from '../chunk-QOXXIYDG.js';
2
+ import { showsGradeAtom } from '../chunk-TDTLEDX6.js';
3
3
  import { resolveEventEntryFee } from '../chunk-DNSXMHYX.js';
4
4
  import { Separator } from '../chunk-NWZGSLPU.js';
5
5
  import { EventPosterFallback } from '../chunk-FDITZ2VM.js';
@@ -1,3 +1,3 @@
1
1
  import 'react/jsx-runtime';
2
2
  import '../lib/grade.js';
3
- export { i as GradeAtom, G as GradeAtomLabels, j as GradeAtomProps, k as GradeAtomSize } from '../place-types-Dzy6FH67.js';
3
+ export { i as GradeAtom, G as GradeAtomLabels, j as GradeAtomProps, k as GradeAtomSize } from '../place-types-CjB4JlH0.js';
@@ -1,4 +1,4 @@
1
- export { GradeAtom } from '../chunk-YE4ZQUTI.js';
2
- import '../chunk-I5V446BX.js';
1
+ export { GradeAtom } from '../chunk-QOXXIYDG.js';
2
+ import '../chunk-TDTLEDX6.js';
3
3
  import '../chunk-FEK5XGZW.js';
4
4
  import '../chunk-MMUBH76A.js';
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { MenuVenueSignature, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
4
- import { P as PlacePreview, C as CitedText, b as PlaceGradeDimensions } from '../place-types-Dzy6FH67.js';
4
+ import { P as PlacePreview, C as CitedText, b as PlaceGradeDimensions } from '../place-types-CjB4JlH0.js';
5
5
  import { VenueGradeDimensionKey } from './venue-grade-dimensions.js';
6
6
  import '../lib/grade.js';
7
7
 
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuLinkComponent, MenuLoosenOption } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuKitchenListLabels } from './menu-kitchen-list.js';
3
3
  import { MenuFamilyBlockPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
  import 'react';
7
7
 
@@ -1,7 +1,7 @@
1
- import { MenuKitchenList } from '../chunk-CZ2HC7WY.js';
1
+ import { MenuKitchenList } from '../chunk-EGN5DOLQ.js';
2
2
  import { HueChip } from '../chunk-6VOWT4YR.js';
3
- import '../chunk-YE4ZQUTI.js';
4
- import '../chunk-I5V446BX.js';
3
+ import '../chunk-QOXXIYDG.js';
4
+ import '../chunk-TDTLEDX6.js';
5
5
  import { Separator } from '../chunk-NWZGSLPU.js';
6
6
  import { PhotoGround, PHOTO_GROUND } from '../chunk-SWD6CJ35.js';
7
7
  import { Skeleton } from '../chunk-XBBEX4SF.js';
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuFamilyPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuFilterChip } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuLinkComponent, MenuLinkProps } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuIndexEntry, MenuLinkComponent } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  type MenuIndexHeaderProps = {
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuIndexEntry, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuIntentFigure, MenuLinkComponent } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { a as PlaceGrade, G as GradeAtomLabels } from '../place-types-CjB4JlH0.js';
3
4
  import { MenuItemPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
4
- import '../place-types-Dzy6FH67.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -134,6 +134,39 @@ type MenuItemProps = {
134
134
  * default.
135
135
  */
136
136
  venueName?: string;
137
+ /**
138
+ * Whether the venue is open, on the venue line after its name: a dot
139
+ * (`open` in the success green, `closed` muted) and the caller's words, e.g.
140
+ * "Closes at 23:00" / "Opens at 09:00". Only with `venueName`.
141
+ */
142
+ venueStatus?: {
143
+ tone: "open" | "closed";
144
+ label: string;
145
+ };
146
+ /**
147
+ * A short detail about the venue, muted after its name and grade: its
148
+ * neighbourhood, say. Only with `venueName`.
149
+ */
150
+ venueDetail?: string;
151
+ /**
152
+ * The venue's grade, drawn as `<GradeAtom size="2xs">` (inline, 18px) beside its name. Only
153
+ * a grade with a number shows: the xs atom draws nothing for the soft
154
+ * "worth exploring" state (see `showsGradeAtom`).
155
+ */
156
+ venueGrade?: {
157
+ grade: PlaceGrade;
158
+ labels: GradeAtomLabels;
159
+ };
160
+ /**
161
+ * A grade beside the row's NAME, for rows where the name is the place (the
162
+ * map's Drinks list leads with the bar, and its venue line says what the
163
+ * bar is praised for). Use it instead of `venueGrade` there, so the grade
164
+ * never sits beside "Praised for cocktails". Same rule: only with a number.
165
+ */
166
+ nameGrade?: {
167
+ grade: PlaceGrade;
168
+ labels: GradeAtomLabels;
169
+ };
137
170
  /**
138
171
  * Explicit subtitle, in italic, in place of the description. Used where the
139
172
  * reviewer's reason IS the row's content rather than the payoff for tapping.
@@ -1,5 +1,7 @@
1
- export { ExternalRatingSignal, MentionSignal, MenuItem } from '../chunk-CBBECMBD.js';
1
+ export { ExternalRatingSignal, MentionSignal, MenuItem } from '../chunk-WBTSOARU.js';
2
2
  import '../chunk-6PQINSAA.js';
3
+ import '../chunk-QOXXIYDG.js';
4
+ import '../chunk-TDTLEDX6.js';
3
5
  import '../chunk-RYPPN2GZ.js';
4
6
  import '../chunk-FEK5XGZW.js';
5
7
  import '../chunk-MMUBH76A.js';
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { G as GradeAtomLabels } from '../place-types-Dzy6FH67.js';
2
+ import { G as GradeAtomLabels } from '../place-types-CjB4JlH0.js';
3
3
  import { MenuKitchenPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
4
4
  import '../lib/grade.js';
5
5
  import 'react';
@@ -1,6 +1,6 @@
1
- export { MenuKitchenList, MenuKitchenListSkeleton } from '../chunk-CZ2HC7WY.js';
2
- import '../chunk-YE4ZQUTI.js';
3
- import '../chunk-I5V446BX.js';
1
+ export { MenuKitchenList, MenuKitchenListSkeleton } from '../chunk-EGN5DOLQ.js';
2
+ import '../chunk-QOXXIYDG.js';
3
+ import '../chunk-TDTLEDX6.js';
4
4
  import '../chunk-NWZGSLPU.js';
5
5
  import '../chunk-XBBEX4SF.js';
6
6
  import '../chunk-FEK5XGZW.js';
@@ -1,6 +1,6 @@
1
1
  import { MenuFamilyBlockPreview, MenuConceptPreview, MenuFamilyPreview, MenuFilterChip, MenuIndexEntry, MenuIntentFigure, MenuItemPreview, MenuKitchenPreview, MenuLoosenOption, QaItem, MenuVenuePreview } from './menu-types.js';
2
2
  import { DoorwayTile } from './doorway-tiles.js';
3
- import { P as PlacePreview } from '../place-types-Dzy6FH67.js';
3
+ import { P as PlacePreview } from '../place-types-CjB4JlH0.js';
4
4
  import 'react';
5
5
  import 'react/jsx-runtime';
6
6
  import '../lib/grade.js';
@@ -1,5 +1,5 @@
1
1
  import { ComponentType, CSSProperties, ReactNode } from 'react';
2
- import { M as MenuSizeAndPrice, P as PlacePreview } from '../place-types-Dzy6FH67.js';
2
+ import { M as MenuSizeAndPrice, P as PlacePreview } from '../place-types-CjB4JlH0.js';
3
3
  import 'react/jsx-runtime';
4
4
  import '../lib/grade.js';
5
5
 
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { MenuVenuePreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-Dzy6FH67.js';
4
+ import '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { P as PlacePreview, c as PlaceAboutTabLabels, d as PlaceLinkKind } from '../place-types-Dzy6FH67.js';
2
+ import { P as PlacePreview, c as PlaceAboutTabLabels, d as PlaceLinkKind } from '../place-types-CjB4JlH0.js';
3
3
  import '../lib/grade.js';
4
4
 
5
5
  interface PlaceAboutTabProps {
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
3
  import { ReactNode, MouseEvent } from 'react';
4
- import { P as PlacePreview, e as PlaceCardLabels } from '../place-types-Dzy6FH67.js';
4
+ import { P as PlacePreview, e as PlaceCardLabels } from '../place-types-CjB4JlH0.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,8 +1,8 @@
1
1
  import { HOVER_IMAGE_MOTION, HOVER_IMAGE_WRAPPER, HOVER_MOTION, HOVER_LIFT_GRID_GROUP } from '../chunk-XCB3F6SF.js';
2
2
  import { NEUTRAL_ICON_FILTER } from '../chunk-LQWGZIYA.js';
3
3
  import { OVERLAY_PILL } from '../chunk-EZG2NELX.js';
4
- import { GradeAtom } from '../chunk-YE4ZQUTI.js';
5
- import { showsGradeAtom } from '../chunk-I5V446BX.js';
4
+ import { GradeAtom } from '../chunk-QOXXIYDG.js';
5
+ import { showsGradeAtom } from '../chunk-TDTLEDX6.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';
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { P as PlacePreview, f as PlaceDetailsMobileLabels } from '../place-types-Dzy6FH67.js';
2
+ import { P as PlacePreview, f as PlaceDetailsMobileLabels } from '../place-types-CjB4JlH0.js';
3
3
  import '../lib/grade.js';
4
4
 
5
5
  interface PlaceDetailsMobileProps {
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { g as PlaceSchedule, h as PlaceScheduleWeekLabels } from '../place-types-Dzy6FH67.js';
2
+ import { g as PlaceSchedule, h as PlaceScheduleWeekLabels } from '../place-types-CjB4JlH0.js';
3
3
  import '../lib/grade.js';
4
4
 
5
5
  interface PlaceScheduleWeekProps {