@bearmenu/ui 0.7.0 → 0.8.1
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.
- package/dist/{chunk-4JOV7FXW.js → chunk-2DEIXTBN.js} +1 -1
- package/dist/{chunk-UUJVXN2O.js → chunk-66MAPLXS.js} +3 -1
- package/dist/{chunk-Y5D5LP4A.js → chunk-7BWTYWM3.js} +14 -3
- package/dist/{chunk-ZFNOCP6W.js → chunk-H3BV4VAG.js} +15 -1
- package/dist/chunk-LEAYBICI.js +84 -0
- package/dist/{chunk-TL4YU2O5.js → chunk-UKBNQO6Q.js} +2 -2
- package/dist/{chunk-UX6SWAKH.js → chunk-UZ3PCIE5.js} +119 -28
- package/dist/{chunk-YLNYXPIH.js → chunk-VBA45GLP.js} +1 -1
- package/dist/{chunk-A5ONAJCE.js → chunk-VG3PND3D.js} +1 -1
- package/dist/{chunk-ZBBUKXM5.js → chunk-X3WMRKOW.js} +1 -1
- package/dist/{chunk-HCM6LKM5.js → chunk-XNA2INVQ.js} +2 -2
- package/dist/{chunk-AV777R4G.js → chunk-YYGB4G4Q.js} +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/alert.d.ts +2 -2
- package/dist/components/alert.js +1 -1
- package/dist/components/avatar.d.ts +10 -1
- package/dist/components/avatar.js +41 -14
- package/dist/components/badge.d.ts +11 -2
- package/dist/components/badge.js +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +3 -3
- package/dist/components/card.d.ts +2 -2
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.js +1 -1
- package/dist/components/circular-progress.js +1 -1
- package/dist/components/combobox.js +3 -3
- package/dist/components/command.d.ts +15 -15
- package/dist/components/command.js +1 -1
- package/dist/components/currency-input.js +2 -2
- package/dist/components/date-input.d.ts +1 -1
- package/dist/components/date-input.js +1 -1
- package/dist/components/description-list.js +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/empty-state.js +2 -2
- package/dist/components/field.js +2 -2
- package/dist/components/filter-category-row.js +2 -2
- package/dist/components/form.js +1 -1
- package/dist/components/haptic-button.js +1 -1
- package/dist/components/input-group.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/item.d.ts +2 -2
- package/dist/components/item.js +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/link-button.js +1 -1
- package/dist/components/multi-select-combobox.js +4 -4
- package/dist/components/pagination.js +1 -1
- package/dist/components/place-about-tab.d.ts +17 -1
- package/dist/components/place-about-tab.js +4 -4
- package/dist/components/place-card.js +2 -2
- package/dist/components/place-details-mobile.js +7 -7
- package/dist/components/place-schedule-week.js +2 -2
- package/dist/components/popover.js +1 -1
- package/dist/components/searchable-select.js +3 -3
- package/dist/components/select.js +2 -2
- package/dist/components/selection-bar.js +1 -1
- package/dist/components/sheet.d.ts +23 -0
- package/dist/components/sheet.js +51 -14
- package/dist/components/sliding-panels.js +5 -1
- package/dist/components/sonner.js +2 -2
- package/dist/components/spinner.d.ts +2 -2
- package/dist/components/stepper.js +4 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +3 -26
- package/dist/components/tag-group.js +1 -1
- package/dist/components/tag.d.ts +2 -2
- package/dist/components/tag.js +1 -1
- package/dist/components/text.d.ts +21 -3
- package/dist/components/text.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/lib/card-hover.d.ts +75 -0
- package/dist/lib/card-hover.js +18 -0
- package/dist/lib/motion.d.ts +83 -0
- package/dist/lib/motion.js +2 -0
- package/package.json +1 -1
- package/src/components/accordion.tsx +1 -1
- package/src/components/avatar.stories.tsx +59 -26
- package/src/components/avatar.test.tsx +129 -0
- package/src/components/avatar.tsx +93 -37
- package/src/components/badge.tsx +15 -3
- package/src/components/breadcrumb.tsx +1 -1
- package/src/components/button.tsx +16 -1
- package/src/components/calendar.tsx +2 -2
- package/src/components/circular-progress.tsx +1 -1
- package/src/components/command.tsx +2 -2
- package/src/components/currency-input.tsx +1 -1
- package/src/components/description-list.tsx +1 -1
- package/src/components/dropdown-menu.tsx +1 -1
- package/src/components/field.tsx +1 -1
- package/src/components/input-group.tsx +1 -1
- package/src/components/input.tsx +1 -1
- package/src/components/item.tsx +1 -1
- package/src/components/kbd.tsx +1 -1
- package/src/components/label.tsx +1 -1
- package/src/components/place-about-tab.tsx +131 -18
- package/src/components/place-card.tsx +1 -1
- package/src/components/place-details-mobile.tsx +2 -2
- package/src/components/popover.tsx +9 -1
- package/src/components/select.tsx +2 -2
- package/src/components/selection-bar.tsx +1 -1
- package/src/components/sheet.tsx +72 -12
- package/src/components/sliding-panels.stories.tsx +70 -0
- package/src/components/sliding-panels.test.tsx +116 -0
- package/src/components/sliding-panels.tsx +14 -0
- package/src/components/sonner.tsx +2 -2
- package/src/components/stepper.tsx +4 -1
- package/src/components/table.tsx +1 -1
- package/src/components/tabs.tsx +1 -1
- package/src/components/tag-group.tsx +1 -1
- package/src/components/tag.tsx +1 -1
- package/src/components/text.test.tsx +37 -3
- package/src/components/text.tsx +32 -3
- package/src/components/toggle.tsx +1 -1
- package/src/globals.css +53 -11
- package/src/lib/card-hover.ts +87 -0
- package/dist/chunk-EBAMCZDW.js +0 -112
- package/dist/chunk-VQNDZVI7.js +0 -106
- package/dist/components/toast.d.ts +0 -18
- package/dist/components/toast.js +0 -3
- package/dist/components/toaster.d.ts +0 -5
- package/dist/components/toaster.js +0 -25
- package/dist/components/use-toast.d.ts +0 -42
- package/dist/components/use-toast.js +0 -2
- package/src/components/toast.stories.tsx +0 -63
- package/src/components/toast.tsx +0 -130
- package/src/components/toaster.tsx +0 -31
- package/src/components/use-toast.ts +0 -180
|
@@ -6,7 +6,7 @@ import { cva } from 'class-variance-authority';
|
|
|
6
6
|
import { jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var labelVariants = cva(
|
|
9
|
-
"text-sm font-
|
|
9
|
+
"text-sm font-semibold leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 transition-all duration-200"
|
|
10
10
|
);
|
|
11
11
|
var Label = React.forwardRef((_a, ref) => {
|
|
12
12
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
@@ -9,7 +9,7 @@ var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
|
9
9
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
10
10
|
var PopoverClose = PopoverPrimitive.Close;
|
|
11
11
|
var PopoverContent = React.forwardRef((_a, ref) => {
|
|
12
|
-
var _b = _a, { className, align = "center", sideOffset = 4 } = _b, props = __objRest(_b, ["className", "align", "sideOffset"]);
|
|
12
|
+
var _b = _a, { className, align = "center", sideOffset = 4, collisionPadding = 12 } = _b, props = __objRest(_b, ["className", "align", "sideOffset", "collisionPadding"]);
|
|
13
13
|
return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
14
14
|
PopoverPrimitive.Content,
|
|
15
15
|
__spreadValues({
|
|
@@ -17,8 +17,10 @@ var PopoverContent = React.forwardRef((_a, ref) => {
|
|
|
17
17
|
"data-slot": "popover-content",
|
|
18
18
|
align,
|
|
19
19
|
sideOffset,
|
|
20
|
+
collisionPadding,
|
|
20
21
|
className: cn(
|
|
21
22
|
"z-50 w-72 rounded-xl border border-border bg-popover p-4 text-popover-foreground shadow-xl outline-none",
|
|
23
|
+
"max-h-[var(--radix-popover-content-available-height)] overflow-y-auto overscroll-contain",
|
|
22
24
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
23
25
|
className
|
|
24
26
|
)
|
|
@@ -11,12 +11,19 @@ var textVariants = cva("", {
|
|
|
11
11
|
h2: "text-2xl font-semibold tracking-tight",
|
|
12
12
|
h3: "text-xl font-semibold",
|
|
13
13
|
h4: "text-lg font-semibold leading-none tracking-tight",
|
|
14
|
+
/** @deprecated Now identical to `body`. Use `body`. */
|
|
14
15
|
"body-lg": "text-base leading-relaxed",
|
|
15
|
-
body:
|
|
16
|
+
// `leading-relaxed`, absorbing what `body-lg` was: 16px is the prose size
|
|
17
|
+
// and prose wants relaxed leading. Two variants differing only in
|
|
18
|
+
// line-height forced every author to choose between two names for one
|
|
19
|
+
// role, and the two apps duly diverged onto different ones.
|
|
20
|
+
body: "text-base leading-relaxed",
|
|
16
21
|
"body-sm": "text-sm leading-relaxed",
|
|
22
|
+
/** @deprecated Use `body-sm` + `color="muted"` — same size, second name. */
|
|
17
23
|
small: "text-sm text-muted-foreground",
|
|
18
24
|
caption: "text-xs leading-normal text-muted-foreground",
|
|
19
|
-
|
|
25
|
+
// 600, not 500 — see the weight scale below.
|
|
26
|
+
label: "text-sm font-semibold",
|
|
20
27
|
overline: "text-xs font-semibold uppercase tracking-wider"
|
|
21
28
|
},
|
|
22
29
|
color: {
|
|
@@ -27,9 +34,13 @@ var textVariants = cva("", {
|
|
|
27
34
|
"primary-foreground": "text-primary-foreground",
|
|
28
35
|
inherit: ""
|
|
29
36
|
},
|
|
37
|
+
// Three weights: 400 / 600 / 700. A fourth step is not a hierarchy level,
|
|
38
|
+
// it is noise — 500 against 600 is indistinguishable at body sizes while
|
|
39
|
+
// still counting as a separate treatment when you audit a screen.
|
|
30
40
|
weight: {
|
|
31
41
|
normal: "font-normal",
|
|
32
|
-
|
|
42
|
+
/** @deprecated Alias for `semibold`. 500 is not in the 3-weight system. */
|
|
43
|
+
medium: "font-semibold",
|
|
33
44
|
semibold: "font-semibold",
|
|
34
45
|
bold: "font-bold"
|
|
35
46
|
},
|
|
@@ -8,7 +8,7 @@ import { Loader2 } from 'lucide-react';
|
|
|
8
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
9
|
|
|
10
10
|
var buttonVariants = cva(
|
|
11
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-
|
|
11
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer [@media(pointer:coarse)]:active:scale-95",
|
|
12
12
|
{
|
|
13
13
|
variants: {
|
|
14
14
|
variant: {
|
|
@@ -19,6 +19,20 @@ var buttonVariants = cva(
|
|
|
19
19
|
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
20
20
|
link: "text-primary underline-offset-4 hover:underline",
|
|
21
21
|
glass: "glass glass-hover text-foreground",
|
|
22
|
+
/**
|
|
23
|
+
* Chrome sitting ON a photo — share, close, favourite over a hero or
|
|
24
|
+
* card image. `glass` is the wrong tool there: it resolves
|
|
25
|
+
* `text-foreground`, which is near-black in light mode and disappears
|
|
26
|
+
* into a dark photo.
|
|
27
|
+
*
|
|
28
|
+
* Deliberately NOT theme-aware, and so deliberately different from
|
|
29
|
+
* `Badge`'s `overlay` (`bg-foreground/70 text-background`, which
|
|
30
|
+
* inverts). A photo is equally a photo in both themes — this chrome has
|
|
31
|
+
* to contrast with the image beneath it, not with the app canvas, so it
|
|
32
|
+
* stays dark-on-light-glyph either way. Reconcile Badge to this, not the
|
|
33
|
+
* reverse, if the two are ever unified.
|
|
34
|
+
*/
|
|
35
|
+
overlay: "bg-black/40 text-white backdrop-blur-sm hover:bg-black/60 focus-visible:ring-white/70",
|
|
22
36
|
brown: "bg-brown text-brown-foreground shadow-sm hover:bg-brown/85 hover:shadow",
|
|
23
37
|
antagonist: "bg-primary-foreground text-primary shadow-sm hover:bg-accent hover:text-accent-foreground border border-border hover:border-accent"
|
|
24
38
|
},
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { __spreadValues } from './chunk-3GWWZKX7.js';
|
|
2
|
+
|
|
3
|
+
// src/lib/motion.ts
|
|
4
|
+
var duration = {
|
|
5
|
+
instant: 0.12,
|
|
6
|
+
quick: 0.18,
|
|
7
|
+
standard: 0.26,
|
|
8
|
+
deliberate: 0.36,
|
|
9
|
+
narrative: 0.5,
|
|
10
|
+
exitQuick: 0.11,
|
|
11
|
+
exitStandard: 0.21
|
|
12
|
+
};
|
|
13
|
+
var ease = {
|
|
14
|
+
enter: [0, 0, 0.2, 1],
|
|
15
|
+
standard: [0.4, 0, 0.2, 1],
|
|
16
|
+
exit: [0.55, 0, 1, 0.45]
|
|
17
|
+
};
|
|
18
|
+
var springSnappy = {
|
|
19
|
+
type: "spring",
|
|
20
|
+
damping: 30,
|
|
21
|
+
stiffness: 380
|
|
22
|
+
};
|
|
23
|
+
var springSmooth = {
|
|
24
|
+
type: "spring",
|
|
25
|
+
damping: 30,
|
|
26
|
+
stiffness: 220
|
|
27
|
+
};
|
|
28
|
+
var springSoft = {
|
|
29
|
+
type: "spring",
|
|
30
|
+
damping: 35,
|
|
31
|
+
stiffness: 140
|
|
32
|
+
};
|
|
33
|
+
var springGentle = springSoft;
|
|
34
|
+
var archetype = {
|
|
35
|
+
/** Drawer / Sheet / Dialog entrance. Surface arrives first; content layers after. */
|
|
36
|
+
surfaceOpen: __spreadValues({}, springSmooth),
|
|
37
|
+
surfaceClose: { duration: duration.exitStandard, ease: ease.exit },
|
|
38
|
+
/** First-reveal stagger for card grids. Per-item spring. Cap stagger at 8 items. */
|
|
39
|
+
listReveal: __spreadValues({}, springSoft),
|
|
40
|
+
listRevealStagger: 0.04,
|
|
41
|
+
listRevealMaxItems: 8,
|
|
42
|
+
/** Tab content swap, skeleton → data swap. Opacity-only — no transform. */
|
|
43
|
+
contentSwap: { duration: duration.quick, ease: ease.standard },
|
|
44
|
+
contentSwapExit: { duration: duration.exitQuick, ease: ease.exit },
|
|
45
|
+
/** Bottom-sheet / side-drawer entry. */
|
|
46
|
+
edgeEnter: __spreadValues({}, springSmooth),
|
|
47
|
+
edgeExit: { duration: duration.exitStandard, ease: ease.exit },
|
|
48
|
+
/** Card / button tap feedback. */
|
|
49
|
+
pressResponse: { duration: duration.instant, ease: ease.enter },
|
|
50
|
+
/** Active tab pill, active filter chip — use with Framer Motion `layoutId`. */
|
|
51
|
+
indicatorMorph: __spreadValues({}, springSnappy),
|
|
52
|
+
/** Image enter — slight scale on load. */
|
|
53
|
+
imageEnter: { duration: 0.3, ease: ease.standard }
|
|
54
|
+
};
|
|
55
|
+
var stagger = {
|
|
56
|
+
tight: 0.03,
|
|
57
|
+
standard: 0.04,
|
|
58
|
+
loose: 0.06
|
|
59
|
+
};
|
|
60
|
+
var listRevealVariants = {
|
|
61
|
+
container: {
|
|
62
|
+
hidden: { opacity: 1 },
|
|
63
|
+
show: {
|
|
64
|
+
opacity: 1,
|
|
65
|
+
transition: { staggerChildren: stagger.standard }
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
item: {
|
|
69
|
+
hidden: { opacity: 0, y: 8 },
|
|
70
|
+
show: { opacity: 1, y: 0, transition: archetype.listReveal }
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var contentSwapVariants = {
|
|
74
|
+
hidden: { opacity: 0, y: 6 },
|
|
75
|
+
show: { opacity: 1, y: 0, transition: archetype.contentSwap },
|
|
76
|
+
exit: { opacity: 0, y: -4, transition: archetype.contentSwapExit }
|
|
77
|
+
};
|
|
78
|
+
var skeletonSwapVariants = {
|
|
79
|
+
hidden: { opacity: 0 },
|
|
80
|
+
show: { opacity: 1, transition: archetype.contentSwap },
|
|
81
|
+
exit: { opacity: 0, transition: archetype.contentSwapExit }
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { archetype, contentSwapVariants, duration, ease, listRevealVariants, skeletonSwapVariants, springGentle, springSmooth, springSnappy, springSoft, stagger };
|
|
@@ -32,8 +32,8 @@ var badgeVariants = cva(
|
|
|
32
32
|
}
|
|
33
33
|
);
|
|
34
34
|
function Badge(_a) {
|
|
35
|
-
var _b = _a, { className, variant, live } = _b, props = __objRest(_b, ["className", "variant", "live"]);
|
|
36
|
-
return /* @__PURE__ */ jsx(
|
|
35
|
+
var _b = _a, { className, variant, live, as: Tag = "div" } = _b, props = __objRest(_b, ["className", "variant", "live", "as"]);
|
|
36
|
+
return /* @__PURE__ */ jsx(Tag, __spreadValues({ "data-slot": "badge", className: cn(badgeVariants({ variant, live }), className) }, props));
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export { Badge, badgeVariants };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Tag } from './chunk-
|
|
1
|
+
import { Tag } from './chunk-VBA45GLP.js';
|
|
2
2
|
import { Separator } from './chunk-WSRWFA6K.js';
|
|
3
|
-
import { PlaceScheduleWeek } from './chunk-
|
|
4
|
-
import { Text } from './chunk-
|
|
3
|
+
import { PlaceScheduleWeek } from './chunk-VG3PND3D.js';
|
|
4
|
+
import { Text } from './chunk-7BWTYWM3.js';
|
|
5
5
|
import { cn } from './chunk-FEK5XGZW.js';
|
|
6
6
|
import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
|
|
7
7
|
import { Fragment } from 'react';
|
|
@@ -42,11 +42,38 @@ function Facebook(props) {
|
|
|
42
42
|
})
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
|
+
var SECTION_ORDER = [
|
|
46
|
+
"hours",
|
|
47
|
+
"contact",
|
|
48
|
+
"ordering",
|
|
49
|
+
"busyness",
|
|
50
|
+
"amenities",
|
|
51
|
+
"accessibility",
|
|
52
|
+
"payment",
|
|
53
|
+
"parking",
|
|
54
|
+
"reputation",
|
|
55
|
+
"cuisines",
|
|
56
|
+
"landmarks",
|
|
57
|
+
"description"
|
|
58
|
+
];
|
|
59
|
+
function sectionRank(key) {
|
|
60
|
+
const i = SECTION_ORDER.indexOf(key);
|
|
61
|
+
return i === -1 ? Number.MAX_SAFE_INTEGER : i;
|
|
62
|
+
}
|
|
45
63
|
function humanizeEnum(value) {
|
|
46
64
|
return value.replace(/_/g, " ");
|
|
47
65
|
}
|
|
48
66
|
function SectionHeading({ children }) {
|
|
49
|
-
return /* @__PURE__ */ jsx(
|
|
67
|
+
return /* @__PURE__ */ jsx(
|
|
68
|
+
Text,
|
|
69
|
+
{
|
|
70
|
+
as: "h3",
|
|
71
|
+
variant: "body-sm",
|
|
72
|
+
weight: "semibold",
|
|
73
|
+
className: "text-foreground",
|
|
74
|
+
children
|
|
75
|
+
}
|
|
76
|
+
);
|
|
50
77
|
}
|
|
51
78
|
function Divider() {
|
|
52
79
|
return /* @__PURE__ */ jsx(Separator, { className: "mx-4 w-auto" });
|
|
@@ -78,6 +105,8 @@ function PlaceAboutTab({
|
|
|
78
105
|
labels,
|
|
79
106
|
mapSlot,
|
|
80
107
|
busynessSlot,
|
|
108
|
+
orderingSlot,
|
|
109
|
+
reputationSlot,
|
|
81
110
|
onLinkClick,
|
|
82
111
|
className
|
|
83
112
|
}) {
|
|
@@ -99,7 +128,9 @@ function PlaceAboutTab({
|
|
|
99
128
|
((_a = place.location) == null ? void 0 : _a.address) || place.phone || place.website_url || ((_b = place.socials) == null ? void 0 : _b.instagram_url) || ((_c = place.socials) == null ? void 0 : _c.facebook_url)
|
|
100
129
|
);
|
|
101
130
|
const hasSchedule = Boolean(place.schedule);
|
|
102
|
-
const hasBusyness = Boolean(
|
|
131
|
+
const hasBusyness = Boolean(
|
|
132
|
+
busynessSlot && place.busyness && place.busyness.length > 0
|
|
133
|
+
);
|
|
103
134
|
const hasCuisines = ((_e = (_d = place.cuisines) == null ? void 0 : _d.length) != null ? _e : 0) > 0;
|
|
104
135
|
const hasAmenities = ((_g = (_f = place.amenities) == null ? void 0 : _f.length) != null ? _g : 0) > 0;
|
|
105
136
|
const hasPayment = ((_i = (_h = place.payment_options) == null ? void 0 : _h.length) != null ? _i : 0) > 0;
|
|
@@ -139,7 +170,16 @@ function PlaceAboutTab({
|
|
|
139
170
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2.5", children: [
|
|
140
171
|
((_p = place.location) == null ? void 0 : _p.address) && /* @__PURE__ */ jsxs("div", { children: [
|
|
141
172
|
/* @__PURE__ */ jsx(Text, { as: "p", variant: "body-sm", color: "muted", children: place.location.address }),
|
|
142
|
-
neighborhood && /* @__PURE__ */ jsx(
|
|
173
|
+
neighborhood && /* @__PURE__ */ jsx(
|
|
174
|
+
Text,
|
|
175
|
+
{
|
|
176
|
+
as: "p",
|
|
177
|
+
variant: "body-sm",
|
|
178
|
+
color: "muted",
|
|
179
|
+
className: "mt-0.5",
|
|
180
|
+
children: neighborhood
|
|
181
|
+
}
|
|
182
|
+
)
|
|
143
183
|
] }),
|
|
144
184
|
place.phone && /* @__PURE__ */ jsxs(
|
|
145
185
|
"a",
|
|
@@ -148,7 +188,13 @@ function PlaceAboutTab({
|
|
|
148
188
|
onClick: () => handleLinkClick("phone", place.phone),
|
|
149
189
|
className: "flex items-center gap-2 text-foreground hover:text-primary transition-colors",
|
|
150
190
|
children: [
|
|
151
|
-
/* @__PURE__ */ jsx(
|
|
191
|
+
/* @__PURE__ */ jsx(
|
|
192
|
+
Phone,
|
|
193
|
+
{
|
|
194
|
+
className: "w-4 h-4 text-muted-foreground shrink-0",
|
|
195
|
+
"aria-hidden": true
|
|
196
|
+
}
|
|
197
|
+
),
|
|
152
198
|
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", children: place.phone })
|
|
153
199
|
]
|
|
154
200
|
}
|
|
@@ -162,7 +208,13 @@ function PlaceAboutTab({
|
|
|
162
208
|
onClick: () => handleLinkClick("website", place.website_url),
|
|
163
209
|
className: "flex items-center gap-2 text-foreground hover:text-primary transition-colors break-all",
|
|
164
210
|
children: [
|
|
165
|
-
/* @__PURE__ */ jsx(
|
|
211
|
+
/* @__PURE__ */ jsx(
|
|
212
|
+
Globe,
|
|
213
|
+
{
|
|
214
|
+
className: "w-4 h-4 text-muted-foreground shrink-0",
|
|
215
|
+
"aria-hidden": true
|
|
216
|
+
}
|
|
217
|
+
),
|
|
166
218
|
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", className: "break-all", children: place.website_url })
|
|
167
219
|
]
|
|
168
220
|
}
|
|
@@ -179,7 +231,13 @@ function PlaceAboutTab({
|
|
|
179
231
|
},
|
|
180
232
|
className: "flex items-center gap-2 text-foreground hover:text-primary transition-colors",
|
|
181
233
|
children: [
|
|
182
|
-
/* @__PURE__ */ jsx(
|
|
234
|
+
/* @__PURE__ */ jsx(
|
|
235
|
+
Instagram,
|
|
236
|
+
{
|
|
237
|
+
className: "w-4 h-4 text-muted-foreground shrink-0",
|
|
238
|
+
"aria-hidden": true
|
|
239
|
+
}
|
|
240
|
+
),
|
|
183
241
|
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", children: labels.instagram })
|
|
184
242
|
]
|
|
185
243
|
}
|
|
@@ -196,7 +254,13 @@ function PlaceAboutTab({
|
|
|
196
254
|
},
|
|
197
255
|
className: "flex items-center gap-2 text-foreground hover:text-primary transition-colors",
|
|
198
256
|
children: [
|
|
199
|
-
/* @__PURE__ */ jsx(
|
|
257
|
+
/* @__PURE__ */ jsx(
|
|
258
|
+
Facebook,
|
|
259
|
+
{
|
|
260
|
+
className: "w-4 h-4 text-muted-foreground shrink-0",
|
|
261
|
+
"aria-hidden": true
|
|
262
|
+
}
|
|
263
|
+
),
|
|
200
264
|
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", children: labels.facebook })
|
|
201
265
|
]
|
|
202
266
|
}
|
|
@@ -242,7 +306,9 @@ function PlaceAboutTab({
|
|
|
242
306
|
/* @__PURE__ */ jsx(
|
|
243
307
|
ChipRow,
|
|
244
308
|
{
|
|
245
|
-
items: place.cuisines.map(
|
|
309
|
+
items: place.cuisines.map(
|
|
310
|
+
(c) => c.charAt(0).toUpperCase() + c.slice(1)
|
|
311
|
+
)
|
|
246
312
|
}
|
|
247
313
|
)
|
|
248
314
|
] })
|
|
@@ -271,7 +337,12 @@ function PlaceAboutTab({
|
|
|
271
337
|
key: "accessibility",
|
|
272
338
|
node: /* @__PURE__ */ jsxs("section", { className: "px-4 space-y-2", children: [
|
|
273
339
|
/* @__PURE__ */ jsx(SectionHeading, { children: labels.accessibility }),
|
|
274
|
-
/* @__PURE__ */ jsx(
|
|
340
|
+
/* @__PURE__ */ jsx(
|
|
341
|
+
ChecklistGrid,
|
|
342
|
+
{
|
|
343
|
+
items: place.accessibility_features.map(getAccessibilityLabel)
|
|
344
|
+
}
|
|
345
|
+
)
|
|
275
346
|
] })
|
|
276
347
|
});
|
|
277
348
|
}
|
|
@@ -289,25 +360,45 @@ function PlaceAboutTab({
|
|
|
289
360
|
key: "landmarks",
|
|
290
361
|
node: /* @__PURE__ */ jsxs("section", { className: "px-4 space-y-2", children: [
|
|
291
362
|
/* @__PURE__ */ jsx(SectionHeading, { children: labels.nearbyLandmarks }),
|
|
292
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: place.landmarks.map((landmark, i) => /* @__PURE__ */ jsxs(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
as: "span",
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
363
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: place.landmarks.map((landmark, i) => /* @__PURE__ */ jsxs(
|
|
364
|
+
"div",
|
|
365
|
+
{
|
|
366
|
+
className: "flex justify-between items-baseline gap-3",
|
|
367
|
+
children: [
|
|
368
|
+
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", children: landmark.name }),
|
|
369
|
+
landmark.distance_meters != null && /* @__PURE__ */ jsxs(
|
|
370
|
+
Text,
|
|
371
|
+
{
|
|
372
|
+
as: "span",
|
|
373
|
+
variant: "body-sm",
|
|
374
|
+
color: "muted",
|
|
375
|
+
className: "tabular-nums shrink-0",
|
|
376
|
+
children: [
|
|
377
|
+
(landmark.distance_meters / 1e3).toFixed(1),
|
|
378
|
+
" km"
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
)
|
|
382
|
+
]
|
|
383
|
+
},
|
|
384
|
+
i
|
|
385
|
+
)) })
|
|
308
386
|
] })
|
|
309
387
|
});
|
|
310
388
|
}
|
|
389
|
+
if (orderingSlot) {
|
|
390
|
+
sections.push({
|
|
391
|
+
key: "ordering",
|
|
392
|
+
node: /* @__PURE__ */ jsx("section", { className: "px-4", children: orderingSlot })
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
if (reputationSlot) {
|
|
396
|
+
sections.push({
|
|
397
|
+
key: "reputation",
|
|
398
|
+
node: /* @__PURE__ */ jsx("section", { className: "px-4", children: reputationSlot })
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
sections.sort((a, b) => sectionRank(a.key) - sectionRank(b.key));
|
|
311
402
|
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-6 pt-4", className), children: [
|
|
312
403
|
mapSlot,
|
|
313
404
|
sections.map((s, i) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -6,7 +6,7 @@ import { cva } from 'class-variance-authority';
|
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var tagVariants = cva(
|
|
9
|
-
"inline-flex items-center gap-1 rounded-full border text-xs font-
|
|
9
|
+
"inline-flex items-center gap-1 rounded-full border text-xs font-semibold transition-colors",
|
|
10
10
|
{
|
|
11
11
|
variants: {
|
|
12
12
|
variant: {
|
|
@@ -5,7 +5,7 @@ import { cva } from 'class-variance-authority';
|
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
var toggleVariants = cva(
|
|
8
|
-
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-
|
|
8
|
+
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-semibold hover:bg-accent/50 hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 transition-colors aria-invalid:ring-2 aria-invalid:ring-destructive/40 whitespace-nowrap",
|
|
9
9
|
{
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
@@ -36,7 +36,7 @@ var CommandDialog = (_a) => {
|
|
|
36
36
|
/* @__PURE__ */ jsx(DialogTitle, { children: title }),
|
|
37
37
|
/* @__PURE__ */ jsx(DialogDescription, { children: description })
|
|
38
38
|
] }),
|
|
39
|
-
/* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-
|
|
39
|
+
/* @__PURE__ */ jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children })
|
|
40
40
|
] }) }));
|
|
41
41
|
};
|
|
42
42
|
var CommandInput = React.forwardRef((_a, ref) => {
|
|
@@ -96,7 +96,7 @@ var CommandGroup = React.forwardRef((_a, ref) => {
|
|
|
96
96
|
__spreadValues({
|
|
97
97
|
ref,
|
|
98
98
|
className: cn(
|
|
99
|
-
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-
|
|
99
|
+
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
100
100
|
className
|
|
101
101
|
)
|
|
102
102
|
}, props)
|
|
@@ -5,7 +5,7 @@ import { cva } from 'class-variance-authority';
|
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
var inputVariants = cva(
|
|
8
|
-
"flex w-full border border-border bg-input/50 text-base transition-colors file:border-0 file:bg-transparent file:text-sm file:font-
|
|
8
|
+
"flex w-full border border-border bg-input/50 text-base transition-colors file:border-0 file:bg-transparent file:text-sm file:font-semibold file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:bg-input disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive/40",
|
|
9
9
|
{
|
|
10
10
|
variants: {
|
|
11
11
|
size: {
|
|
@@ -26,7 +26,7 @@ var AccordionTrigger = React.forwardRef((_a, ref) => {
|
|
|
26
26
|
ref,
|
|
27
27
|
"data-slot": "accordion-trigger",
|
|
28
28
|
className: cn(
|
|
29
|
-
"flex flex-1 cursor-pointer items-center justify-between py-4 text-sm font-
|
|
29
|
+
"flex flex-1 cursor-pointer items-center justify-between py-4 text-sm font-semibold text-foreground transition-colors hover:text-foreground/80",
|
|
30
30
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-sm",
|
|
31
31
|
"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
32
32
|
"[&[data-state=open]>svg]:rotate-180",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buttonVariants } from '../chunk-
|
|
1
|
+
import { buttonVariants } from '../chunk-H3BV4VAG.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" | "destructive" | "
|
|
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?: "default" | "destructive" | "
|
|
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>>;
|
package/dist/components/alert.js
CHANGED
|
@@ -6,6 +6,7 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
6
6
|
declare const avatarVariants: (props?: ({
|
|
7
7
|
size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
type AvatarSize = NonNullable<VariantProps<typeof avatarVariants>["size"]>;
|
|
9
10
|
declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React.RefAttributes<HTMLSpanElement>, "ref"> & VariantProps<(props?: ({
|
|
10
11
|
size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
|
|
11
12
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -15,9 +16,17 @@ declare const AvatarBadge: React.ForwardRefExoticComponent<React.HTMLAttributes<
|
|
|
15
16
|
placement?: "top-right" | "bottom-right";
|
|
16
17
|
tone?: "success" | "warning" | "destructive" | "muted";
|
|
17
18
|
} & React.RefAttributes<HTMLSpanElement>>;
|
|
19
|
+
declare const avatarGroupOverflowVariants: (props?: ({
|
|
20
|
+
size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
|
|
21
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
18
22
|
declare const AvatarGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
19
23
|
max?: number;
|
|
20
24
|
spacing?: "tight" | "default" | "loose";
|
|
25
|
+
/**
|
|
26
|
+
* Size for the whole group: sets the "+N" overflow chip and is inherited by
|
|
27
|
+
* child `Avatar`s that don't set their own `size`. Defaults to "default".
|
|
28
|
+
*/
|
|
29
|
+
size?: AvatarSize;
|
|
21
30
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
22
31
|
|
|
23
|
-
export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarImage, avatarVariants };
|
|
32
|
+
export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarImage, type AvatarSize, avatarGroupOverflowVariants, avatarVariants };
|