@bearmenu/ui 0.8.49 → 0.8.51

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 (56) hide show
  1. package/dist/{chunk-QY66ME5B.js → chunk-CZ2HC7WY.js} +24 -6
  2. package/dist/components/alert.d.ts +2 -2
  3. package/dist/components/badge.d.ts +1 -1
  4. package/dist/components/banner.d.ts +1 -1
  5. package/dist/components/button.d.ts +2 -2
  6. package/dist/components/card.d.ts +2 -2
  7. package/dist/components/command.d.ts +15 -15
  8. package/dist/components/concept-compare.d.ts +1 -1
  9. package/dist/components/doorway-tiles.d.ts +1 -1
  10. package/dist/components/empty-state.d.ts +2 -2
  11. package/dist/components/event-detail-panel.d.ts +12 -2
  12. package/dist/components/event-detail-panel.js +15 -3
  13. package/dist/components/grade-atom.d.ts +1 -1
  14. package/dist/components/kitchen-dossier.d.ts +1 -1
  15. package/dist/components/menu-dead-end.d.ts +1 -1
  16. package/dist/components/menu-family-block.d.ts +2 -2
  17. package/dist/components/menu-family-block.js +3 -1
  18. package/dist/components/menu-family-card.d.ts +1 -1
  19. package/dist/components/menu-filter-chips.d.ts +1 -1
  20. package/dist/components/menu-group-rows.d.ts +1 -1
  21. package/dist/components/menu-index-header.d.ts +1 -1
  22. package/dist/components/menu-index-list.d.ts +1 -1
  23. package/dist/components/menu-intent-hero.d.ts +1 -1
  24. package/dist/components/menu-item.d.ts +1 -1
  25. package/dist/components/menu-kitchen-list.d.ts +9 -2
  26. package/dist/components/menu-kitchen-list.js +3 -1
  27. package/dist/components/menu-mocks.d.ts +1 -1
  28. package/dist/components/menu-types.d.ts +1 -1
  29. package/dist/components/open-now-list.d.ts +1 -1
  30. package/dist/components/place-about-tab.d.ts +1 -1
  31. package/dist/components/place-card.d.ts +1 -1
  32. package/dist/components/place-details-mobile.d.ts +1 -1
  33. package/dist/components/place-schedule-week.d.ts +1 -1
  34. package/dist/components/place-types.d.ts +1 -1
  35. package/dist/components/qa-block.d.ts +1 -1
  36. package/dist/components/sliding-panels.d.ts +6 -0
  37. package/dist/components/sliding-panels.js +13 -3
  38. package/dist/components/spinner.d.ts +2 -2
  39. package/dist/components/tag.d.ts +2 -2
  40. package/dist/components/text.d.ts +2 -2
  41. package/dist/components/top-comparison.d.ts +1 -1
  42. package/dist/components/top-cross-link.d.ts +1 -1
  43. package/dist/components/top-ranking-entry.d.ts +1 -1
  44. package/dist/components/top-ranking-hero.d.ts +1 -1
  45. package/dist/components/top-types.d.ts +1 -1
  46. package/dist/components/venue-grade-dimensions.d.ts +1 -1
  47. package/dist/components/venue-quotes.d.ts +1 -1
  48. package/dist/components/venue-wall.d.ts +1 -1
  49. package/dist/{place-types-DCVqWmk_.d.ts → place-types-Dzy6FH67.d.ts} +1 -1
  50. package/package.json +23 -217
  51. package/src/components/event-detail-panel.test.tsx +35 -0
  52. package/src/components/event-detail-panel.tsx +32 -10
  53. package/src/components/menu-kitchen-list.test.tsx +39 -0
  54. package/src/components/menu-kitchen-list.tsx +36 -7
  55. package/src/components/sliding-panels.test.tsx +26 -4
  56. package/src/components/sliding-panels.tsx +15 -4
@@ -1,8 +1,10 @@
1
+ import { GradeAtom } from './chunk-YE4ZQUTI.js';
2
+ import { showsGradeAtom } from './chunk-I5V446BX.js';
1
3
  import { Separator } from './chunk-NWZGSLPU.js';
2
4
  import { Skeleton } from './chunk-XBBEX4SF.js';
3
5
  import { cn } from './chunk-FEK5XGZW.js';
4
6
  import { __objRest, __spreadValues } from './chunk-MMUBH76A.js';
5
- import { Star, Clock, Check, MessageSquare, ChevronRight } from 'lucide-react';
7
+ import { Clock, Check, MessageSquare, ChevronRight, Star } from 'lucide-react';
6
8
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
9
 
8
10
  function DefaultLink(_a) {
@@ -41,6 +43,25 @@ function MenuKitchenList({
41
43
  )
42
44
  ] });
43
45
  }
46
+ function gradeShown(place, labels) {
47
+ var _a;
48
+ return labels.grade !== void 0 && showsGradeAtom((_a = place.reviews_digest) == null ? void 0 : _a.grade, "xs");
49
+ }
50
+ function KitchenRating({
51
+ place,
52
+ labels
53
+ }) {
54
+ var _a;
55
+ const grade = (_a = place.reviews_digest) == null ? void 0 : _a.grade;
56
+ if (labels.grade && showsGradeAtom(grade, "xs")) {
57
+ return /* @__PURE__ */ jsx(GradeAtom, { grade, labels: labels.grade, size: "xs", className: "shrink-0" });
58
+ }
59
+ if (!place.rating) return null;
60
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
61
+ /* @__PURE__ */ jsx(Star, { className: "h-[11px] w-[11px] shrink-0", "aria-hidden": true }),
62
+ place.rating.rating
63
+ ] });
64
+ }
44
65
  function KitchenRow({
45
66
  kitchen,
46
67
  labels,
@@ -99,11 +120,8 @@ function KitchenRow({
99
120
  children: [
100
121
  /* @__PURE__ */ jsx("span", { className: "truncate text-[14.5px] font-bold tracking-[-0.01em] lg:line-clamp-2 lg:whitespace-normal lg:text-[15.5px] lg:leading-tight", children: place.name }),
101
122
  /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 truncate text-xs text-muted-foreground", children: [
102
- place.rating && /* @__PURE__ */ jsxs(Fragment, { children: [
103
- /* @__PURE__ */ jsx(Star, { className: "h-[11px] w-[11px] shrink-0", "aria-hidden": true }),
104
- place.rating.rating,
105
- kitchen.metaLabel && " \xB7 "
106
- ] }),
123
+ /* @__PURE__ */ jsx(KitchenRating, { place, labels }),
124
+ kitchen.metaLabel && (gradeShown(place, labels) || place.rating) && " \xB7 ",
107
125
  kitchen.metaLabel
108
126
  ] }),
109
127
  kitchen.hoursLabel && /* @__PURE__ */ jsxs(
@@ -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?: "success" | "warning" | "default" | "destructive" | null | undefined;
6
+ variant?: "default" | "destructive" | "warning" | "success" | 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?: "success" | "warning" | "default" | "destructive" | null | undefined;
9
+ variant?: "default" | "destructive" | "warning" | "success" | 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?: "secondary" | "success" | "warning" | "default" | "destructive" | "outline" | "glass" | "overlay" | "brown" | "code" | "onPrimary" | "confirmed" | "pending" | "completed" | "assignee" | "softSuccess" | "softWarning" | "softDestructive" | "softNeutral" | null | undefined;
7
+ variant?: "code" | "default" | "destructive" | "outline" | "secondary" | "glass" | "overlay" | "brown" | "warning" | "success" | "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?: "warning" | "destructive" | "info" | null | undefined;
34
+ tone?: "destructive" | "warning" | "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" | "secondary" | "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;
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;
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?: "outline" | "glass" | "section" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
6
+ variant?: "section" | "outline" | "glass" | "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?: "outline" | "glass" | "section" | "muted" | "surface" | "elevated" | "elevatedPanel" | null | undefined;
11
+ variant?: "section" | "outline" | "glass" | "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>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
7
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
8
8
  ref?: React.Ref<HTMLDivElement>;
9
9
  } & {
10
10
  asChild?: boolean;
11
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
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,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
- }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "value" | "onChange" | "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>>;
35
35
  declare const CommandList: React.ForwardRefExoticComponent<Omit<{
36
36
  children?: React.ReactNode;
37
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
37
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
38
38
  ref?: React.Ref<HTMLDivElement>;
39
39
  } & {
40
40
  asChild?: boolean;
41
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
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<{
45
45
  children?: React.ReactNode;
46
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
46
+ } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
47
47
  ref?: React.Ref<HTMLDivElement>;
48
48
  } & {
49
49
  asChild?: boolean;
50
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & 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
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
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
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
57
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
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>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
63
+ } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
64
64
  ref?: React.Ref<HTMLDivElement>;
65
65
  } & {
66
66
  asChild?: boolean;
67
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key">, "value" | "heading"> & {
67
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "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>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
72
+ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
73
73
  ref?: React.Ref<HTMLDivElement>;
74
74
  } & {
75
75
  asChild?: boolean;
76
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key"> & {
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<{
80
80
  children?: React.ReactNode;
81
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement> | "key"> & {
81
+ } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
82
82
  ref?: React.Ref<HTMLDivElement>;
83
83
  } & {
84
84
  asChild?: boolean;
85
- }, keyof React.HTMLAttributes<HTMLDivElement> | "asChild" | "key">, "value" | "onSelect" | "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,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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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, "icon" | "variant"> & React.RefAttributes<HTMLDivElement>>;
57
- declare const ErrorEmptyState: React.ForwardRefExoticComponent<Omit<EmptyStateProps, "icon" | "variant"> & 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>>;
58
58
 
59
59
  export { EmptyState, ErrorEmptyState, SearchEmptyState };
@@ -1,6 +1,8 @@
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
4
  import { EventPreview, EventFormatters } from './event-types.js';
5
+ import '../lib/grade.js';
4
6
 
5
7
  /**
6
8
  * EventDetailPanel — the BODY of the event detail sheet, and the body the
@@ -51,7 +53,13 @@ type EventDetailVenue = {
51
53
  name: string;
52
54
  /** Address line, e.g. "Str. Iuliu Maniu 5". */
53
55
  address?: string;
54
- /** e.g. "4.7" — rendered with a star. */
56
+ /**
57
+ * The venue's BearMenu grade. Shown as the grade pill in the rating's place
58
+ * when `labels.grade` is given; the star `ratingLabel` then stays only for a
59
+ * venue without a grade.
60
+ */
61
+ grade?: PlaceGrade;
62
+ /** e.g. "4.7" — Google's rating, rendered with a star. The fallback for an ungraded venue. */
55
63
  ratingLabel?: string;
56
64
  /** e.g. "open until 20:00" — appended to the meta row when given. */
57
65
  openLabel?: string;
@@ -66,6 +74,8 @@ type EventDetailVenue = {
66
74
  href?: string;
67
75
  };
68
76
  type EventDetailPanelLabels = {
77
+ /** The venue's grade pill. Optional: without it the venue shows the star, as before. */
78
+ grade?: GradeAtomLabels;
69
79
  free: string;
70
80
  liveNow: string;
71
81
  /** The ended chip, e.g. "Ended". */
@@ -208,7 +218,7 @@ type EventDetailChipRowProps = Pick<EventDetailPanelProps, "event" | "formatters
208
218
  declare function EventDetailChipRow({ event, labels, formatters, status, soonLabel, hype, tags, className, }: EventDetailChipRowProps): react_jsx_runtime.JSX.Element;
209
219
  type EventDetailVenueCardProps = {
210
220
  venue: EventDetailVenue;
211
- labels: Pick<EventDetailPanelLabels, "venueNoPage">;
221
+ labels: Pick<EventDetailPanelLabels, "venueNoPage" | "grade">;
212
222
  linkComponent?: React.ComponentType<EventDetailPanelLinkProps>;
213
223
  /** Thumbnail size in px: 52 in the sheet, 64 on the page. */
214
224
  thumbnailSize?: 52 | 64;
@@ -1,3 +1,5 @@
1
+ import { GradeAtom } from '../chunk-YE4ZQUTI.js';
2
+ import { showsGradeAtom } from '../chunk-I5V446BX.js';
1
3
  import { resolveEventEntryFee } from '../chunk-DNSXMHYX.js';
2
4
  import { Separator } from '../chunk-NWZGSLPU.js';
3
5
  import { EventPosterFallback } from '../chunk-FDITZ2VM.js';
@@ -463,7 +465,9 @@ function EventDetailVenueCard({
463
465
  action,
464
466
  className
465
467
  }) {
466
- const meta = venue.href && (venue.address || venue.ratingLabel || venue.openLabel);
468
+ const showGrade = labels.grade !== void 0 && showsGradeAtom(venue.grade, "xs");
469
+ const hasRating = showGrade || Boolean(venue.ratingLabel);
470
+ const meta = venue.href && (venue.address || hasRating || venue.openLabel);
467
471
  const main = /* @__PURE__ */ jsxs(Fragment, { children: [
468
472
  /* @__PURE__ */ jsxs(
469
473
  "div",
@@ -501,8 +505,16 @@ function EventDetailVenueCard({
501
505
  /* @__PURE__ */ jsx("div", { className: "truncate text-sm font-bold", children: venue.name }),
502
506
  venue.href ? meta && /* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-x-1.5 text-xs text-muted-foreground", children: [
503
507
  venue.address && /* @__PURE__ */ jsx("span", { className: "truncate", children: venue.address }),
504
- venue.address && venue.ratingLabel && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-border", children: "\xB7" }),
505
- venue.ratingLabel && /* @__PURE__ */ jsxs("span", { className: "inline-flex shrink-0 items-center gap-1", children: [
508
+ venue.address && hasRating && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-border", children: "\xB7" }),
509
+ showGrade && labels.grade && venue.grade ? /* @__PURE__ */ jsx(
510
+ GradeAtom,
511
+ {
512
+ grade: venue.grade,
513
+ labels: labels.grade,
514
+ size: "xs",
515
+ className: "shrink-0"
516
+ }
517
+ ) : venue.ratingLabel && /* @__PURE__ */ jsxs("span", { className: "inline-flex shrink-0 items-center gap-1", children: [
506
518
  /* @__PURE__ */ jsx(Star, { className: "h-[11px] w-[11px]", "aria-hidden": true }),
507
519
  venue.ratingLabel
508
520
  ] }),
@@ -1,3 +1,3 @@
1
1
  import 'react/jsx-runtime';
2
2
  import '../lib/grade.js';
3
- export { G as GradeAtom, h as GradeAtomLabels, i as GradeAtomProps, j as GradeAtomSize } from '../place-types-DCVqWmk_.js';
3
+ export { i as GradeAtom, G as GradeAtomLabels, j as GradeAtomProps, k as GradeAtomSize } from '../place-types-Dzy6FH67.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, a as PlaceGradeDimensions } from '../place-types-DCVqWmk_.js';
4
+ import { P as PlacePreview, C as CitedText, b as PlaceGradeDimensions } from '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,9 +1,9 @@
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 'react';
5
- import '../place-types-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.js';
6
5
  import '../lib/grade.js';
6
+ import 'react';
7
7
 
8
8
  /**
9
9
  * MenuFamilyBlock — the cuisines index's family card. One photograph is the ground.
@@ -1,5 +1,7 @@
1
- import { MenuKitchenList } from '../chunk-QY66ME5B.js';
1
+ import { MenuKitchenList } from '../chunk-CZ2HC7WY.js';
2
2
  import { HueChip } from '../chunk-6VOWT4YR.js';
3
+ import '../chunk-YE4ZQUTI.js';
4
+ import '../chunk-I5V446BX.js';
3
5
  import { Separator } from '../chunk-NWZGSLPU.js';
4
6
  import { PhotoGround, PHOTO_GROUND } from '../chunk-SWD6CJ35.js';
5
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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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
3
  import { MenuItemPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
4
- import '../place-types-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { G as GradeAtomLabels } from '../place-types-Dzy6FH67.js';
2
3
  import { MenuKitchenPreview, MenuLinkComponent, MenuLinkProps } from './menu-types.js';
3
- import 'react';
4
- import '../place-types-DCVqWmk_.js';
5
4
  import '../lib/grade.js';
5
+ import 'react';
6
6
 
7
7
  /**
8
8
  * MenuKitchenList — the intent page's spine.
@@ -53,6 +53,13 @@ type MenuKitchenListLabels = {
53
53
  openNow: string;
54
54
  /** Reveals the next page of rows, e.g. "Show 10 more". */
55
55
  showMore?: string;
56
+ /**
57
+ * The grade pill's labels. With them, a graded venue shows its BearMenu
58
+ * grade where the Google star was; the star stays only for a venue with no
59
+ * grade. Optional so existing callers keep compiling — without it every row
60
+ * shows the star, as before.
61
+ */
62
+ grade?: GradeAtomLabels;
56
63
  };
57
64
  /**
58
65
  * `wide` (default): the intent page's full-width list — from `lg` the venue
@@ -1,4 +1,6 @@
1
- export { MenuKitchenList, MenuKitchenListSkeleton } from '../chunk-QY66ME5B.js';
1
+ export { MenuKitchenList, MenuKitchenListSkeleton } from '../chunk-CZ2HC7WY.js';
2
+ import '../chunk-YE4ZQUTI.js';
3
+ import '../chunk-I5V446BX.js';
2
4
  import '../chunk-NWZGSLPU.js';
3
5
  import '../chunk-XBBEX4SF.js';
4
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-DCVqWmk_.js';
3
+ import { P as PlacePreview } from '../place-types-Dzy6FH67.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-DCVqWmk_.js';
2
+ import { M as MenuSizeAndPrice, P as PlacePreview } from '../place-types-Dzy6FH67.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-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.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, b as PlaceAboutTabLabels, c as PlaceLinkKind } from '../place-types-DCVqWmk_.js';
2
+ import { P as PlacePreview, c as PlaceAboutTabLabels, d as PlaceLinkKind } from '../place-types-Dzy6FH67.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, d as PlaceCardLabels } from '../place-types-DCVqWmk_.js';
4
+ import { P as PlacePreview, e as PlaceCardLabels } from '../place-types-Dzy6FH67.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, e as PlaceDetailsMobileLabels } from '../place-types-DCVqWmk_.js';
2
+ import { P as PlacePreview, f as PlaceDetailsMobileLabels } from '../place-types-Dzy6FH67.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 { f as PlaceSchedule, g as PlaceScheduleWeekLabels } from '../place-types-DCVqWmk_.js';
2
+ import { g as PlaceSchedule, h as PlaceScheduleWeekLabels } from '../place-types-Dzy6FH67.js';
3
3
  import '../lib/grade.js';
4
4
 
5
5
  interface PlaceScheduleWeekProps {
@@ -1,3 +1,3 @@
1
- export { C as CitedText, k as CitedValue, M as MenuSizeAndPrice, b as PlaceAboutTabLabels, d as PlaceCardLabels, e as PlaceDetailsMobileLabels, l as PlaceGrade, a as PlaceGradeDimensions, m as PlaceHourBlock, c as PlaceLinkKind, n as PlaceMustTry, P as PlacePreview, o as PlacePriceRange, p as PlaceReviewsDigest, f as PlaceSchedule, g as PlaceScheduleWeekLabels, W as WeekdayKey } from '../place-types-DCVqWmk_.js';
1
+ export { C as CitedText, l as CitedValue, M as MenuSizeAndPrice, c as PlaceAboutTabLabels, e as PlaceCardLabels, f as PlaceDetailsMobileLabels, a as PlaceGrade, b as PlaceGradeDimensions, m as PlaceHourBlock, d as PlaceLinkKind, n as PlaceMustTry, P as PlacePreview, o as PlacePriceRange, p as PlaceReviewsDigest, g as PlaceSchedule, h as PlaceScheduleWeekLabels, W as WeekdayKey } from '../place-types-Dzy6FH67.js';
2
2
  import 'react/jsx-runtime';
3
3
  import '../lib/grade.js';
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { QaItem } from './menu-types.js';
3
3
  import 'react';
4
- import '../place-types-DCVqWmk_.js';
4
+ import '../place-types-Dzy6FH67.js';
5
5
  import '../lib/grade.js';
6
6
 
7
7
  /**
@@ -5,7 +5,13 @@ interface Panel {
5
5
  id: string;
6
6
  content: React.ReactNode;
7
7
  showBackButton?: boolean;
8
+ /** Heading shown next to the back button (the panel's title, not the button's name). */
8
9
  backButtonLabel?: string;
10
+ /**
11
+ * Accessible name of the icon-only back button, localized by the caller.
12
+ * Falls back to "Back"; without a name screen readers announce only "button".
13
+ */
14
+ backAriaLabel?: string;
9
15
  onBack?: () => void;
10
16
  parentId?: string;
11
17
  }
@@ -56,11 +56,12 @@ var SlidingPanels = ({
56
56
  {
57
57
  "data-slot": "sliding-panels",
58
58
  className: cn(
59
- "relative overflow-clip transition-[height] duration-500 ease-[cubic-bezier(0.32,0.72,0,1)]",
59
+ "relative overflow-clip transition-[height] duration-500 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:transition-none",
60
60
  className
61
61
  ),
62
62
  style: { height: containerHeight, overflowClipMargin: "8px" },
63
63
  children: panels.map((panel, index) => {
64
+ var _a;
64
65
  const isActive = panel.id === currentPanel;
65
66
  const isLeft = usesTreeModel ? activeAncestors.has(panel.id) : index < currentIndex;
66
67
  const isRight = !isActive && !isLeft;
@@ -73,7 +74,7 @@ var SlidingPanels = ({
73
74
  "data-slot": "sliding-panel",
74
75
  "data-state": isActive ? "active" : "inactive",
75
76
  className: cn(
76
- "absolute top-0 left-0 w-full transition-transform duration-500 ease-[cubic-bezier(0.32,0.72,0,1)]",
77
+ "absolute top-0 left-0 w-full transition-transform duration-500 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:transition-none",
77
78
  isActive && "translate-x-0",
78
79
  isLeft && "-translate-x-[calc(100%+8px)]",
79
80
  isRight && "translate-x-[calc(100%+8px)]"
@@ -82,7 +83,16 @@ var SlidingPanels = ({
82
83
  "aria-hidden": !isActive,
83
84
  children: [
84
85
  panel.showBackButton && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-4", children: [
85
- /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", onClick: handleBack, children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" }) }),
86
+ /* @__PURE__ */ jsx(
87
+ Button,
88
+ {
89
+ variant: "ghost",
90
+ size: "icon",
91
+ onClick: handleBack,
92
+ "aria-label": (_a = panel.backAriaLabel) != null ? _a : "Back",
93
+ children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4", "aria-hidden": true })
94
+ }
95
+ ),
86
96
  panel.backButtonLabel && /* @__PURE__ */ jsx("h3", { className: "font-semibold", children: panel.backButtonLabel })
87
97
  ] }),
88
98
  panel.content