@bearmenu/ui 0.8.24 → 0.8.26
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-5LTILG3L.js → chunk-5HHRVJOT.js} +14 -1
- package/dist/{chunk-SDWN6L4O.js → chunk-AHHDC7ML.js} +1 -1
- package/dist/{chunk-I4RUOAU7.js → chunk-AHL45DD2.js} +11 -38
- package/dist/{chunk-TIQNM4XD.js → chunk-F3XK34DV.js} +25 -1
- package/dist/{chunk-5XREWOBB.js → chunk-IEIJP73R.js} +14 -1
- package/dist/chunk-L3CDXVEP.js +56 -0
- package/dist/{chunk-BKKQ7GCZ.js → chunk-QG6I2ILT.js} +1 -1
- package/dist/{chunk-CZK2MRS2.js → chunk-VEFKZIK6.js} +13 -3
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/banner.d.ts +36 -0
- package/dist/components/banner.js +29 -0
- package/dist/components/booking-row.d.ts +60 -0
- package/dist/components/booking-row.js +103 -0
- package/dist/components/booking-summary-card.d.ts +38 -0
- package/dist/components/booking-summary-card.js +67 -0
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.d.ts +17 -3
- package/dist/components/calendar.js +100 -12
- package/dist/components/carousel.js +1 -1
- package/dist/components/checkbox.d.ts +9 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/coach-marks.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/concept-convergence.js +2 -2
- package/dist/components/currency-input.js +1 -1
- package/dist/components/date-input.js +1 -1
- package/dist/components/drift-rail.d.ts +2 -29
- package/dist/components/drift-rail.js +1 -3
- package/dist/components/empty-state.js +1 -1
- package/dist/components/event-card.js +1 -1
- package/dist/components/event-compact-row.js +1 -1
- package/dist/components/event-detail-panel.js +2 -2
- package/dist/components/event-index-row.js +1 -1
- package/dist/components/event-list-row-wide.js +3 -3
- package/dist/components/event-list-row.js +2 -2
- package/dist/components/field.d.ts +15 -1
- package/dist/components/field.js +62 -21
- package/dist/components/filter-category-row.js +1 -1
- package/dist/components/hold-countdown.d.ts +43 -0
- package/dist/components/hold-countdown.js +90 -0
- package/dist/components/input.d.ts +1 -0
- package/dist/components/input.js +1 -1
- package/dist/components/link-button.js +1 -1
- package/dist/components/menu-family-block.js +1 -1
- package/dist/components/menu-index-list.js +1 -1
- package/dist/components/menu-item.js +3 -3
- package/dist/components/motion-icon-set.d.ts +2 -1
- package/dist/components/motion-icon-set.js +27 -1
- package/dist/components/multi-select-combobox.js +3 -3
- package/dist/components/multi-select-menu.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/party-counter.d.ts +36 -0
- package/dist/components/party-counter.js +61 -0
- package/dist/components/place-card.js +1 -1
- package/dist/components/place-details-mobile.js +1 -1
- package/dist/components/poster-tape.d.ts +2 -15
- package/dist/components/poster-tape.js +3 -12
- package/dist/components/searchable-select.js +1 -1
- package/dist/components/signature-chip.js +2 -2
- package/dist/components/sliding-panels.js +1 -1
- package/dist/components/textarea.d.ts +10 -3
- package/dist/components/textarea.js +21 -6
- package/dist/components/time-slot.d.ts +73 -0
- package/dist/components/time-slot.js +106 -0
- package/dist/components/toggle-group.js +15 -2
- package/dist/components/toggle.d.ts +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/top-ranking-entry.js +3 -3
- package/dist/components/weekday-chip.d.ts +33 -0
- package/dist/components/weekday-chip.js +48 -0
- package/package.json +207 -23
- package/src/components/badge.stories.tsx +17 -0
- package/src/components/badge.tsx +15 -0
- package/src/components/banner.stories.tsx +36 -0
- package/src/components/banner.tsx +58 -0
- package/src/components/booking-details-primitives.test.tsx +75 -0
- package/src/components/booking-primitives.test.tsx +180 -0
- package/src/components/booking-row.stories.tsx +66 -0
- package/src/components/booking-row.tsx +168 -0
- package/src/components/booking-summary-card.stories.tsx +41 -0
- package/src/components/booking-summary-card.tsx +109 -0
- package/src/components/button.stories.tsx +23 -0
- package/src/components/button.tsx +13 -0
- package/src/components/calendar.stories.tsx +27 -0
- package/src/components/calendar.tsx +110 -3
- package/src/components/checkbox.tsx +49 -23
- package/src/components/drift-rail.stories.tsx +1 -29
- package/src/components/drift-rail.tsx +4 -71
- package/src/components/field.stories.tsx +51 -1
- package/src/components/field.tsx +68 -9
- package/src/components/hold-countdown.stories.tsx +68 -0
- package/src/components/hold-countdown.tsx +140 -0
- package/src/components/input.tsx +13 -2
- package/src/components/motion-icon-set.stories.tsx +2 -0
- package/src/components/motion-icon-set.tsx +42 -0
- package/src/components/party-counter.stories.tsx +57 -0
- package/src/components/party-counter.tsx +93 -0
- package/src/components/poster-tape.stories.tsx +0 -29
- package/src/components/poster-tape.tsx +5 -21
- package/src/components/textarea.tsx +25 -7
- package/src/components/time-slot.stories.tsx +85 -0
- package/src/components/time-slot.tsx +186 -0
- package/src/components/toggle-group.stories.tsx +27 -0
- package/src/components/toggle-group.tsx +14 -1
- package/src/components/toggle.tsx +24 -0
- package/src/components/weekday-chip.stories.tsx +54 -0
- package/src/components/weekday-chip.tsx +75 -0
- package/dist/chunk-NMEVJT5Q.js +0 -26
- package/src/components/drift-rail.test.tsx +0 -125
- package/src/components/poster-tape.test.tsx +0 -42
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import { cn } from '../chunk-FEK5XGZW.js';
|
|
2
2
|
import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
4
5
|
import { jsx } from 'react/jsx-runtime';
|
|
5
6
|
|
|
7
|
+
var textareaVariants = cva(
|
|
8
|
+
"flex min-h-20 w-full rounded-xl border border-border bg-input/50 px-4 py-3 text-base transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:bg-input disabled:cursor-not-allowed disabled:opacity-50 resize-y aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive/40",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
/**
|
|
12
|
+
* The booking flow's note field (booking flow.html, `.in.ta`): the
|
|
13
|
+
* `Input` booking appearance's ground, radius and type, 66px tall with
|
|
14
|
+
* a 12px × 13px inset.
|
|
15
|
+
*/
|
|
16
|
+
appearance: {
|
|
17
|
+
default: "",
|
|
18
|
+
booking: "min-h-[66px] rounded-[11px] bg-card px-[13px] py-3 text-[14px] leading-[1.4] focus-visible:bg-card aria-invalid:border-[oklch(0.52_0.16_25)] dark:aria-invalid:border-destructive"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: { appearance: "default" }
|
|
22
|
+
}
|
|
23
|
+
);
|
|
6
24
|
var Textarea = React.forwardRef(
|
|
7
25
|
(_a, ref) => {
|
|
8
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
26
|
+
var _b = _a, { className, appearance } = _b, props = __objRest(_b, ["className", "appearance"]);
|
|
9
27
|
return /* @__PURE__ */ jsx(
|
|
10
28
|
"textarea",
|
|
11
29
|
__spreadValues({
|
|
12
30
|
"data-slot": "textarea",
|
|
13
|
-
className: cn(
|
|
14
|
-
"flex min-h-20 w-full rounded-xl border border-border bg-input/50 px-4 py-3 text-base transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:bg-input disabled:cursor-not-allowed disabled:opacity-50 resize-y aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive/40",
|
|
15
|
-
className
|
|
16
|
-
),
|
|
31
|
+
className: cn(textareaVariants({ appearance }), className),
|
|
17
32
|
ref
|
|
18
33
|
}, props)
|
|
19
34
|
);
|
|
@@ -21,4 +36,4 @@ var Textarea = React.forwardRef(
|
|
|
21
36
|
);
|
|
22
37
|
Textarea.displayName = "Textarea";
|
|
23
38
|
|
|
24
|
-
export { Textarea };
|
|
39
|
+
export { Textarea, textareaVariants };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* TimeSlot and TimeSlotGroups — the bookable times in the booking flow's
|
|
6
|
+
* "When are you coming?" screen, the reserve panel on the venue page, and
|
|
7
|
+
* "Change party size".
|
|
8
|
+
*
|
|
9
|
+
* Measured from the booking design (`.tsl`, `.tgrid`, `.grouplbl`):
|
|
10
|
+
* - A slot is a card with a 1px hairline, 11px radius, 8px × 4px inset,
|
|
11
|
+
* centred. The time in mono at 14.5px bold, line-height 1. An optional
|
|
12
|
+
* meta line under it at 9.5px, 3px apart — "Popular", "2 left" in accent,
|
|
13
|
+
* "Waitlist" muted.
|
|
14
|
+
* - Selected fills with `--gradient-primary`, white type, the meta at 80%.
|
|
15
|
+
* - Unavailable fades to 32% with the time struck through.
|
|
16
|
+
* - Groups are "Early / Evening / Late": a mono 10px small-caps label
|
|
17
|
+
* (0.08em tracking, 14px above, 7px below) over a three-column grid with
|
|
18
|
+
* 7px gaps.
|
|
19
|
+
*
|
|
20
|
+
* A slot is a button with `aria-pressed`: one of many times, picked once.
|
|
21
|
+
*/
|
|
22
|
+
type TimeSlotTone = "default" | "waitlist";
|
|
23
|
+
type TimeSlotProps = {
|
|
24
|
+
/** The time as displayed, already formatted in the venue's timezone — "19:30". */
|
|
25
|
+
time: string;
|
|
26
|
+
/** "Popular", "2 left", "Waitlist" — already localised. */
|
|
27
|
+
meta?: string;
|
|
28
|
+
/** `waitlist` renders the meta muted: the slot books onto the list, not a table. */
|
|
29
|
+
tone?: TimeSlotTone;
|
|
30
|
+
selected?: boolean;
|
|
31
|
+
/** Taken or past: faded and struck through, not clickable. */
|
|
32
|
+
unavailable?: boolean;
|
|
33
|
+
onSelect?: () => void;
|
|
34
|
+
/** Full accessible name, when the visible text is not enough ("19:30, popular"). */
|
|
35
|
+
"aria-label"?: string;
|
|
36
|
+
className?: string;
|
|
37
|
+
};
|
|
38
|
+
declare function TimeSlot({ time, meta, tone, selected, unavailable, onSelect, "aria-label": ariaLabel, className, }: TimeSlotProps): react_jsx_runtime.JSX.Element;
|
|
39
|
+
type TimeSlotGroup = {
|
|
40
|
+
/** Stable key — "early", "evening", "late". */
|
|
41
|
+
key: string;
|
|
42
|
+
/** "Early", "Evening", "Late" — already localised; rendered small-caps. */
|
|
43
|
+
label: string;
|
|
44
|
+
slots: (TimeSlotProps & {
|
|
45
|
+
key: string;
|
|
46
|
+
})[];
|
|
47
|
+
};
|
|
48
|
+
type TimeSlotGroupsProps = {
|
|
49
|
+
groups: TimeSlotGroup[];
|
|
50
|
+
/** Columns in each group's grid. The design uses 3 everywhere; 2 only in very narrow panels. */
|
|
51
|
+
columns?: 2 | 3;
|
|
52
|
+
className?: string;
|
|
53
|
+
};
|
|
54
|
+
declare function TimeSlotGroupLabel({ children, className, }: {
|
|
55
|
+
children: React.ReactNode;
|
|
56
|
+
className?: string;
|
|
57
|
+
}): react_jsx_runtime.JSX.Element;
|
|
58
|
+
declare function TimeSlotGroups({ groups, columns, className }: TimeSlotGroupsProps): react_jsx_runtime.JSX.Element;
|
|
59
|
+
type TimeSlotGroupsSkeletonProps = {
|
|
60
|
+
/** The label above the grid while times load — "Checking availability for 4…". */
|
|
61
|
+
label: string;
|
|
62
|
+
rows?: number;
|
|
63
|
+
columns?: 2 | 3;
|
|
64
|
+
className?: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* The grid while times load (S1). Same cells, same gaps, so nothing jumps when
|
|
68
|
+
* the real times land: a slot's footprint with a dashed hairline at 60%, a
|
|
69
|
+
* soft bar in place of the time. The label says what is being checked.
|
|
70
|
+
*/
|
|
71
|
+
declare function TimeSlotGroupsSkeleton({ label, rows, columns, className, }: TimeSlotGroupsSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
72
|
+
|
|
73
|
+
export { TimeSlot, type TimeSlotGroup, TimeSlotGroupLabel, TimeSlotGroups, type TimeSlotGroupsProps, TimeSlotGroupsSkeleton, type TimeSlotGroupsSkeletonProps, type TimeSlotProps, type TimeSlotTone };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Skeleton } from '../chunk-XBBEX4SF.js';
|
|
2
|
+
import { cn } from '../chunk-FEK5XGZW.js';
|
|
3
|
+
import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function TimeSlot({
|
|
7
|
+
time,
|
|
8
|
+
meta,
|
|
9
|
+
tone = "default",
|
|
10
|
+
selected,
|
|
11
|
+
unavailable,
|
|
12
|
+
onSelect,
|
|
13
|
+
"aria-label": ariaLabel,
|
|
14
|
+
className
|
|
15
|
+
}) {
|
|
16
|
+
return /* @__PURE__ */ jsxs(
|
|
17
|
+
"button",
|
|
18
|
+
{
|
|
19
|
+
type: "button",
|
|
20
|
+
"data-slot": "time-slot",
|
|
21
|
+
"aria-pressed": selected ? true : false,
|
|
22
|
+
"aria-label": ariaLabel,
|
|
23
|
+
disabled: unavailable,
|
|
24
|
+
onClick: onSelect,
|
|
25
|
+
className: cn(
|
|
26
|
+
// Content sits at the top: a slot without a meta line in a row with
|
|
27
|
+
// one is stretched by the grid, and the time must not drop to the middle.
|
|
28
|
+
"flex w-full cursor-pointer flex-col items-center justify-start rounded-[11px] border px-1 py-2 text-center leading-[1.2]",
|
|
29
|
+
"transition-[border-color,filter] duration-150 motion-reduce:transition-none",
|
|
30
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
31
|
+
selected ? "border-transparent bg-[image:var(--gradient-primary)] text-white hover:brightness-[0.94]" : "border-border bg-card text-foreground hover:border-accent/50",
|
|
32
|
+
unavailable && "cursor-not-allowed opacity-[0.32] hover:border-border"
|
|
33
|
+
),
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ jsx(
|
|
36
|
+
"b",
|
|
37
|
+
{
|
|
38
|
+
className: cn(
|
|
39
|
+
"block font-mono text-[14.5px] leading-none font-bold tabular-nums",
|
|
40
|
+
unavailable && "line-through"
|
|
41
|
+
),
|
|
42
|
+
children: time
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
meta && /* @__PURE__ */ jsx(
|
|
46
|
+
"span",
|
|
47
|
+
{
|
|
48
|
+
className: cn(
|
|
49
|
+
"mt-[3px] block text-[9.5px] leading-[1.2]",
|
|
50
|
+
selected ? "text-white/80" : tone === "waitlist" ? "text-muted-foreground" : "text-accent"
|
|
51
|
+
),
|
|
52
|
+
children: meta
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
var GRID_COLUMNS = { 2: "grid-cols-2", 3: "grid-cols-3" };
|
|
60
|
+
function TimeSlotGroupLabel({
|
|
61
|
+
children,
|
|
62
|
+
className
|
|
63
|
+
}) {
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
65
|
+
"div",
|
|
66
|
+
{
|
|
67
|
+
className: cn(
|
|
68
|
+
"mb-[7px] font-mono text-[10px] leading-none font-semibold tracking-[0.08em] text-muted-foreground uppercase",
|
|
69
|
+
className
|
|
70
|
+
),
|
|
71
|
+
children
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
function TimeSlotGroups({ groups, columns = 3, className }) {
|
|
76
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "time-slot-groups", className, children: groups.map((group) => (
|
|
77
|
+
// 14px between groups; the first sits flush with whatever is above.
|
|
78
|
+
/* @__PURE__ */ jsxs("section", { "aria-label": group.label, className: "[&+&]:mt-3.5", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(TimeSlotGroupLabel, { children: group.label }),
|
|
80
|
+
/* @__PURE__ */ jsx("div", { className: cn("grid gap-[7px]", GRID_COLUMNS[columns]), children: group.slots.map((_a) => {
|
|
81
|
+
var _b = _a, { key } = _b, slot = __objRest(_b, ["key"]);
|
|
82
|
+
return /* @__PURE__ */ jsx(TimeSlot, __spreadValues({}, slot), key);
|
|
83
|
+
}) })
|
|
84
|
+
] }, group.key)
|
|
85
|
+
)) });
|
|
86
|
+
}
|
|
87
|
+
function TimeSlotGroupsSkeleton({
|
|
88
|
+
label,
|
|
89
|
+
rows = 3,
|
|
90
|
+
columns = 3,
|
|
91
|
+
className
|
|
92
|
+
}) {
|
|
93
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "time-slot-groups-skeleton", role: "status", "aria-live": "polite", className, children: [
|
|
94
|
+
/* @__PURE__ */ jsx(TimeSlotGroupLabel, { children: label }),
|
|
95
|
+
/* @__PURE__ */ jsx("div", { className: cn("grid gap-[7px]", GRID_COLUMNS[columns]), "aria-hidden": true, children: Array.from({ length: rows * columns }, (_, index) => /* @__PURE__ */ jsx(
|
|
96
|
+
"span",
|
|
97
|
+
{
|
|
98
|
+
className: "block rounded-[11px] border border-dashed border-border bg-card px-1 py-2 opacity-60 dark:opacity-100",
|
|
99
|
+
children: /* @__PURE__ */ jsx(Skeleton, { className: "mx-auto h-[17px] w-[90%] rounded-md" })
|
|
100
|
+
},
|
|
101
|
+
index
|
|
102
|
+
)) })
|
|
103
|
+
] });
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export { TimeSlot, TimeSlotGroupLabel, TimeSlotGroups, TimeSlotGroupsSkeleton };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { toggleVariants } from '../chunk-
|
|
1
|
+
import { toggleVariants } from '../chunk-F3XK34DV.js';
|
|
2
2
|
import { cn } from '../chunk-FEK5XGZW.js';
|
|
3
3
|
import { __objRest, __spreadProps, __spreadValues } from '../chunk-MMUBH76A.js';
|
|
4
4
|
import * as React from 'react';
|
|
@@ -32,6 +32,12 @@ function ToggleGroup(_a) {
|
|
|
32
32
|
// The segmented control's capsule: muted ground, the on cell a raised
|
|
33
33
|
// card inside it (see `toggleVariants.segmented`). 44px tall.
|
|
34
34
|
"data-[variant=segmented]:gap-0.5 data-[variant=segmented]:rounded-full data-[variant=segmented]:bg-muted data-[variant=segmented]:p-0.5",
|
|
35
|
+
// Chips wrap onto as many rows as they need, 7px apart.
|
|
36
|
+
"data-[variant=chip]:flex-wrap data-[variant=chip]:gap-[7px] data-[variant=chip]:rounded-none",
|
|
37
|
+
// The tab bar spans its container: a muted capsule, 4px inset.
|
|
38
|
+
// Dark swaps the steps: the track takes the card, the ON tab the
|
|
39
|
+
// lighter `surface-2`, so the tab still reads as raised.
|
|
40
|
+
"data-[variant=tab]:w-full data-[variant=tab]:gap-1 data-[variant=tab]:rounded-full data-[variant=tab]:bg-surface-2 data-[variant=tab]:p-1 dark:data-[variant=tab]:bg-card",
|
|
35
41
|
className
|
|
36
42
|
)
|
|
37
43
|
}, props), {
|
|
@@ -65,7 +71,14 @@ function ToggleGroupItem(_a) {
|
|
|
65
71
|
size: context.size || size
|
|
66
72
|
}),
|
|
67
73
|
"min-w-0 flex-1 shrink-0 shadow-none focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l",
|
|
68
|
-
resolved === "segmented" ? "rounded-full px-0 data-[state=on]:shadow-[var(--shadow-card)]" :
|
|
74
|
+
resolved === "segmented" ? "rounded-full px-0 data-[state=on]:shadow-[var(--shadow-card)]" : (
|
|
75
|
+
// Tabs and chips size themselves (`toggleVariants`' compounds);
|
|
76
|
+
// the item's own rounding must not square them off.
|
|
77
|
+
resolved === "tab" ? "rounded-full" : resolved === "chip" ? (
|
|
78
|
+
// A chip keeps its own width, so the row can wrap.
|
|
79
|
+
"flex-none rounded-full"
|
|
80
|
+
) : "rounded-none first:rounded-l-md last:rounded-r-md"
|
|
81
|
+
),
|
|
69
82
|
className
|
|
70
83
|
)
|
|
71
84
|
}, props), {
|
|
@@ -5,7 +5,7 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
|
5
5
|
import { VariantProps } from 'class-variance-authority';
|
|
6
6
|
|
|
7
7
|
declare const toggleVariants: (props?: ({
|
|
8
|
-
variant?: "default" | "outline" | "segmented" | null | undefined;
|
|
8
|
+
variant?: "tab" | "default" | "outline" | "chip" | "segmented" | null | undefined;
|
|
9
9
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
10
10
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
11
11
|
declare function Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { MenuItem } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
import { MenuItem } from '../chunk-AHHDC7ML.js';
|
|
2
|
+
import '../chunk-QG6I2ILT.js';
|
|
3
3
|
import { Separator } from '../chunk-NWZGSLPU.js';
|
|
4
4
|
import { Skeleton } from '../chunk-XBBEX4SF.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-IEIJP73R.js';
|
|
6
6
|
import { cn } from '../chunk-FEK5XGZW.js';
|
|
7
7
|
import { __objRest, __spreadValues } from '../chunk-MMUBH76A.js';
|
|
8
8
|
import { MapPin, Star, MessageSquareQuote } from 'lucide-react';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WeekdayChip — one day in the booking flow's week rail on mobile
|
|
5
|
+
* ("MON 10 · TUE 11 · … · SUN 16" in "When are you coming?").
|
|
6
|
+
*
|
|
7
|
+
* Not `DayRailChip`: that one is the events timeline's day, with a single-line
|
|
8
|
+
* label and an event count. This one is a date picker's day — weekday stacked
|
|
9
|
+
* over the date, no count — and the rail shares the width equally.
|
|
10
|
+
*
|
|
11
|
+
* Measured from the booking design (`.dchip`): flexes to an equal share, 1px
|
|
12
|
+
* hairline, 11px radius, 7px vertical inset, centred. The weekday at 10px
|
|
13
|
+
* uppercase, 0.05em tracking, muted; the date at 15px bold, tabular, 2px
|
|
14
|
+
* below. Selected fills with `--gradient-primary`, white type, the weekday at
|
|
15
|
+
* 75%. A day that cannot be booked (closed, past the window) fades to 40% and
|
|
16
|
+
* is disabled.
|
|
17
|
+
*/
|
|
18
|
+
type WeekdayChipProps = {
|
|
19
|
+
/** "Mon", "Tue" — already localised; rendered uppercase. */
|
|
20
|
+
weekday: string;
|
|
21
|
+
/** Day of month as displayed — "14". */
|
|
22
|
+
day: string;
|
|
23
|
+
selected?: boolean;
|
|
24
|
+
/** Closed that day or outside the booking window. */
|
|
25
|
+
unavailable?: boolean;
|
|
26
|
+
onSelect?: () => void;
|
|
27
|
+
/** The full date for assistive tech — "Friday 14 August". */
|
|
28
|
+
"aria-label"?: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
};
|
|
31
|
+
declare function WeekdayChip({ weekday, day, selected, unavailable, onSelect, "aria-label": ariaLabel, className, }: WeekdayChipProps): react_jsx_runtime.JSX.Element;
|
|
32
|
+
|
|
33
|
+
export { WeekdayChip, type WeekdayChipProps };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { cn } from '../chunk-FEK5XGZW.js';
|
|
2
|
+
import '../chunk-MMUBH76A.js';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function WeekdayChip({
|
|
6
|
+
weekday,
|
|
7
|
+
day,
|
|
8
|
+
selected,
|
|
9
|
+
unavailable,
|
|
10
|
+
onSelect,
|
|
11
|
+
"aria-label": ariaLabel,
|
|
12
|
+
className
|
|
13
|
+
}) {
|
|
14
|
+
return /* @__PURE__ */ jsxs(
|
|
15
|
+
"button",
|
|
16
|
+
{
|
|
17
|
+
type: "button",
|
|
18
|
+
"data-slot": "weekday-chip",
|
|
19
|
+
"aria-pressed": selected ? true : false,
|
|
20
|
+
"aria-label": ariaLabel,
|
|
21
|
+
disabled: unavailable,
|
|
22
|
+
onClick: onSelect,
|
|
23
|
+
className: cn(
|
|
24
|
+
"min-w-0 flex-1 cursor-pointer rounded-[11px] border py-[7px] text-center leading-[1.2]",
|
|
25
|
+
"transition-[border-color,filter] duration-150 motion-reduce:transition-none",
|
|
26
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
27
|
+
selected ? "border-transparent bg-[image:var(--gradient-primary)] text-white" : "border-border bg-card text-foreground hover:border-accent/50",
|
|
28
|
+
unavailable && "cursor-not-allowed opacity-40 hover:border-border",
|
|
29
|
+
className
|
|
30
|
+
),
|
|
31
|
+
children: [
|
|
32
|
+
/* @__PURE__ */ jsx(
|
|
33
|
+
"span",
|
|
34
|
+
{
|
|
35
|
+
className: cn(
|
|
36
|
+
"block text-[10px] tracking-[0.05em] uppercase",
|
|
37
|
+
selected ? "text-white/75" : "text-muted-foreground"
|
|
38
|
+
),
|
|
39
|
+
children: weekday
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-[15px] font-bold tabular-nums", children: day })
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { WeekdayChip };
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bearmenu/ui",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.26",
|
|
4
|
+
"packageManager": "pnpm@10.28.1",
|
|
4
5
|
"description": "BearMenu design system — shared UI tokens, primitives, and components",
|
|
5
6
|
"license": "UNLICENSED",
|
|
6
7
|
"repository": {
|
|
@@ -16,20 +17,213 @@
|
|
|
16
17
|
"src"
|
|
17
18
|
],
|
|
18
19
|
"exports": {
|
|
20
|
+
"./components/accordion": "./src/components/accordion.tsx",
|
|
21
|
+
"./components/alert": "./src/components/alert.tsx",
|
|
22
|
+
"./components/alert-dialog": "./src/components/alert-dialog.tsx",
|
|
23
|
+
"./components/aspect-ratio": "./src/components/aspect-ratio.tsx",
|
|
24
|
+
"./components/avatar": "./src/components/avatar.tsx",
|
|
25
|
+
"./components/badge": "./src/components/badge.tsx",
|
|
26
|
+
"./components/banner": "./src/components/banner.tsx",
|
|
27
|
+
"./components/booking-row": "./src/components/booking-row.tsx",
|
|
28
|
+
"./components/booking-summary-card": "./src/components/booking-summary-card.tsx",
|
|
29
|
+
"./components/breadcrumb": "./src/components/breadcrumb.tsx",
|
|
30
|
+
"./components/button": "./src/components/button.tsx",
|
|
31
|
+
"./components/button-group": "./src/components/button-group.tsx",
|
|
32
|
+
"./components/calendar": "./src/components/calendar.tsx",
|
|
33
|
+
"./components/card": "./src/components/card.tsx",
|
|
34
|
+
"./components/carousel": "./src/components/carousel.tsx",
|
|
35
|
+
"./components/category-deck": "./src/components/category-deck.tsx",
|
|
36
|
+
"./components/checkbox": "./src/components/checkbox.tsx",
|
|
37
|
+
"./components/circular-progress": "./src/components/circular-progress.tsx",
|
|
38
|
+
"./components/coach-marks": "./src/components/coach-marks.tsx",
|
|
39
|
+
"./components/collapsible": "./src/components/collapsible.tsx",
|
|
40
|
+
"./components/combobox": "./src/components/combobox.tsx",
|
|
41
|
+
"./components/command": "./src/components/command.tsx",
|
|
42
|
+
"./components/concept-card": "./src/components/concept-card.tsx",
|
|
43
|
+
"./components/concept-compare": "./src/components/concept-compare.tsx",
|
|
44
|
+
"./components/concept-compare-rail": "./src/components/concept-compare-rail.tsx",
|
|
45
|
+
"./components/concept-convergence": "./src/components/concept-convergence.tsx",
|
|
46
|
+
"./components/convergence": "./src/components/convergence.tsx",
|
|
47
|
+
"./components/coverflow": "./src/components/coverflow.tsx",
|
|
48
|
+
"./components/currency-input": "./src/components/currency-input.tsx",
|
|
49
|
+
"./components/date-input": "./src/components/date-input.tsx",
|
|
50
|
+
"./components/day-rail-chip": "./src/components/day-rail-chip.tsx",
|
|
51
|
+
"./components/description-list": "./src/components/description-list.tsx",
|
|
52
|
+
"./components/dialog": "./src/components/dialog.tsx",
|
|
53
|
+
"./components/doorway-tiles": "./src/components/doorway-tiles.tsx",
|
|
54
|
+
"./components/drawer": "./src/components/drawer.tsx",
|
|
55
|
+
"./components/drift-rail": "./src/components/drift-rail.tsx",
|
|
56
|
+
"./components/dropdown-menu": "./src/components/dropdown-menu.tsx",
|
|
57
|
+
"./components/empty-state": "./src/components/empty-state.tsx",
|
|
58
|
+
"./components/event-card": "./src/components/event-card.tsx",
|
|
59
|
+
"./components/event-compact-row": "./src/components/event-compact-row.tsx",
|
|
60
|
+
"./components/event-day-header": "./src/components/event-day-header.tsx",
|
|
61
|
+
"./components/event-day-separator": "./src/components/event-day-separator.tsx",
|
|
62
|
+
"./components/event-detail-panel": "./src/components/event-detail-panel.tsx",
|
|
63
|
+
"./components/event-hub-hero": "./src/components/event-hub-hero.tsx",
|
|
64
|
+
"./components/event-index-row": "./src/components/event-index-row.tsx",
|
|
65
|
+
"./components/event-list-row": "./src/components/event-list-row.tsx",
|
|
66
|
+
"./components/event-list-row-wide": "./src/components/event-list-row-wide.tsx",
|
|
67
|
+
"./components/event-poster-fallback": "./src/components/event-poster-fallback.tsx",
|
|
68
|
+
"./components/event-tonight-strip": "./src/components/event-tonight-strip.tsx",
|
|
69
|
+
"./components/event-types": "./src/components/event-types.ts",
|
|
70
|
+
"./components/events-empty-state": "./src/components/events-empty-state.tsx",
|
|
71
|
+
"./components/explainer-steps": "./src/components/explainer-steps.tsx",
|
|
72
|
+
"./components/facet-group": "./src/components/facet-group.tsx",
|
|
73
|
+
"./components/featured-rail-item": "./src/components/featured-rail-item.tsx",
|
|
74
|
+
"./components/field": "./src/components/field.tsx",
|
|
75
|
+
"./components/filter-category-row": "./src/components/filter-category-row.tsx",
|
|
76
|
+
"./components/form": "./src/components/form.tsx",
|
|
77
|
+
"./components/glass-ground": "./src/components/glass-ground.tsx",
|
|
78
|
+
"./components/grade-atom": "./src/components/grade-atom.tsx",
|
|
79
|
+
"./components/haptic-switch": "./src/components/haptic-switch.tsx",
|
|
80
|
+
"./components/hold-countdown": "./src/components/hold-countdown.tsx",
|
|
81
|
+
"./components/hub-surface": "./src/components/hub-surface.tsx",
|
|
82
|
+
"./components/hue-chip": "./src/components/hue-chip.tsx",
|
|
83
|
+
"./components/icon": "./src/components/icon.tsx",
|
|
84
|
+
"./components/input": "./src/components/input.tsx",
|
|
85
|
+
"./components/input-group": "./src/components/input-group.tsx",
|
|
86
|
+
"./components/input-otp": "./src/components/input-otp.tsx",
|
|
87
|
+
"./components/item": "./src/components/item.tsx",
|
|
88
|
+
"./components/kbd": "./src/components/kbd.tsx",
|
|
89
|
+
"./components/label": "./src/components/label.tsx",
|
|
90
|
+
"./components/kitchen-dossier": "./src/components/kitchen-dossier.tsx",
|
|
91
|
+
"./components/lazy-markdown": "./src/components/lazy-markdown.tsx",
|
|
92
|
+
"./components/link-button": "./src/components/link-button.tsx",
|
|
93
|
+
"./components/markdown-renderer": "./src/components/markdown-renderer.tsx",
|
|
94
|
+
"./components/menu-dead-end": "./src/components/menu-dead-end.tsx",
|
|
95
|
+
"./components/menu-family-block": "./src/components/menu-family-block.tsx",
|
|
96
|
+
"./components/menu-family-card": "./src/components/menu-family-card.tsx",
|
|
97
|
+
"./components/menu-field": "./src/components/menu-field.tsx",
|
|
98
|
+
"./components/menu-filter-chips": "./src/components/menu-filter-chips.tsx",
|
|
99
|
+
"./components/menu-group-rows": "./src/components/menu-group-rows.tsx",
|
|
100
|
+
"./components/menu-hub-hero": "./src/components/menu-hub-hero.tsx",
|
|
101
|
+
"./components/menu-index-header": "./src/components/menu-index-header.tsx",
|
|
102
|
+
"./components/menu-index-list": "./src/components/menu-index-list.tsx",
|
|
103
|
+
"./components/menu-intent-hero": "./src/components/menu-intent-hero.tsx",
|
|
104
|
+
"./components/menu-item": "./src/components/menu-item.tsx",
|
|
105
|
+
"./components/menu-kitchen-list": "./src/components/menu-kitchen-list.tsx",
|
|
106
|
+
"./components/menu-mocks": "./src/components/menu-mocks.ts",
|
|
107
|
+
"./components/menu-types": "./src/components/menu-types.ts",
|
|
108
|
+
"./components/motion-icon": "./src/components/motion-icon.tsx",
|
|
109
|
+
"./components/motion-icon-actions": "./src/components/motion-icon-actions.tsx",
|
|
110
|
+
"./components/motion-icon-controls": "./src/components/motion-icon-controls.tsx",
|
|
111
|
+
"./components/motion-icon-set": "./src/components/motion-icon-set.tsx",
|
|
112
|
+
"./components/multi-select-combobox": "./src/components/multi-select-combobox.tsx",
|
|
113
|
+
"./components/multi-select-menu": "./src/components/multi-select-menu.tsx",
|
|
114
|
+
"./components/native-select": "./src/components/native-select.tsx",
|
|
115
|
+
"./components/open-now-list": "./src/components/open-now-list.tsx",
|
|
116
|
+
"./components/pagination": "./src/components/pagination.tsx",
|
|
117
|
+
"./components/party-counter": "./src/components/party-counter.tsx",
|
|
118
|
+
"./components/phone-frame": "./src/components/phone-frame.tsx",
|
|
119
|
+
"./components/photo-ground": "./src/components/photo-ground.tsx",
|
|
120
|
+
"./components/place-about-tab": "./src/components/place-about-tab.tsx",
|
|
121
|
+
"./components/place-card": "./src/components/place-card.tsx",
|
|
122
|
+
"./components/place-details-mobile": "./src/components/place-details-mobile.tsx",
|
|
123
|
+
"./components/place-schedule-week": "./src/components/place-schedule-week.tsx",
|
|
124
|
+
"./components/place-types": "./src/components/place-types.ts",
|
|
125
|
+
"./components/popover": "./src/components/popover.tsx",
|
|
126
|
+
"./components/poster-stack": "./src/components/poster-stack.tsx",
|
|
127
|
+
"./components/poster-tape": "./src/components/poster-tape.tsx",
|
|
128
|
+
"./components/poster-wall": "./src/components/poster-wall.tsx",
|
|
129
|
+
"./components/progress": "./src/components/progress.tsx",
|
|
130
|
+
"./components/qa-block": "./src/components/qa-block.tsx",
|
|
131
|
+
"./components/quiet-stretch": "./src/components/quiet-stretch.tsx",
|
|
132
|
+
"./components/radio-group": "./src/components/radio-group.tsx",
|
|
133
|
+
"./components/rating": "./src/components/rating.tsx",
|
|
134
|
+
"./components/scroll-area": "./src/components/scroll-area.tsx",
|
|
135
|
+
"./components/scroll-fade": "./src/components/scroll-fade.tsx",
|
|
136
|
+
"./components/search-bar": "./src/components/search-bar.tsx",
|
|
137
|
+
"./components/searchable-select": "./src/components/searchable-select.tsx",
|
|
138
|
+
"./components/section-header": "./src/components/section-header.tsx",
|
|
139
|
+
"./components/segmented-nav": "./src/components/segmented-nav.tsx",
|
|
140
|
+
"./components/select": "./src/components/select.tsx",
|
|
141
|
+
"./components/selection-bar": "./src/components/selection-bar.tsx",
|
|
142
|
+
"./components/separator": "./src/components/separator.tsx",
|
|
143
|
+
"./components/sheet": "./src/components/sheet.tsx",
|
|
144
|
+
"./components/signature-chip": "./src/components/signature-chip.tsx",
|
|
145
|
+
"./components/skeleton": "./src/components/skeleton.tsx",
|
|
146
|
+
"./components/skeleton-card": "./src/components/skeleton-card.tsx",
|
|
147
|
+
"./components/slider": "./src/components/slider.tsx",
|
|
148
|
+
"./components/sliding-panels": "./src/components/sliding-panels.tsx",
|
|
149
|
+
"./components/sonner": "./src/components/sonner.tsx",
|
|
150
|
+
"./components/sort-option-list": "./src/components/sort-option-list.tsx",
|
|
151
|
+
"./components/spinner": "./src/components/spinner.tsx",
|
|
152
|
+
"./components/stat-banner": "./src/components/stat-banner.tsx",
|
|
153
|
+
"./components/stepper": "./src/components/stepper.tsx",
|
|
154
|
+
"./components/sticky-container": "./src/components/sticky-container.tsx",
|
|
155
|
+
"./components/story": "./src/components/story.tsx",
|
|
156
|
+
"./components/switch": "./src/components/switch.tsx",
|
|
157
|
+
"./components/table": "./src/components/table.tsx",
|
|
158
|
+
"./components/tabs": "./src/components/tabs.tsx",
|
|
159
|
+
"./components/tag": "./src/components/tag.tsx",
|
|
160
|
+
"./components/tag-group": "./src/components/tag-group.tsx",
|
|
161
|
+
"./components/text": "./src/components/text.tsx",
|
|
162
|
+
"./components/textarea": "./src/components/textarea.tsx",
|
|
163
|
+
"./components/time-slot": "./src/components/time-slot.tsx",
|
|
164
|
+
"./components/timeline-day": "./src/components/timeline-day.tsx",
|
|
165
|
+
"./components/timeline-hour": "./src/components/timeline-hour.tsx",
|
|
166
|
+
"./components/timeline-hour-puck": "./src/components/timeline-hour-puck.tsx",
|
|
167
|
+
"./components/toggle": "./src/components/toggle.tsx",
|
|
168
|
+
"./components/toggle-group": "./src/components/toggle-group.tsx",
|
|
169
|
+
"./components/tooltip": "./src/components/tooltip.tsx",
|
|
170
|
+
"./components/top-comparison": "./src/components/top-comparison.tsx",
|
|
171
|
+
"./components/top-cross-link": "./src/components/top-cross-link.tsx",
|
|
172
|
+
"./components/top-ranking-entry": "./src/components/top-ranking-entry.tsx",
|
|
173
|
+
"./components/top-ranking-hero": "./src/components/top-ranking-hero.tsx",
|
|
174
|
+
"./components/top-ranking-legend": "./src/components/top-ranking-legend.tsx",
|
|
175
|
+
"./components/top-types": "./src/components/top-types.ts",
|
|
176
|
+
"./components/use-mobile": "./src/components/use-mobile.tsx",
|
|
177
|
+
"./components/venue-events-block": "./src/components/venue-events-block.tsx",
|
|
178
|
+
"./components/venue-grade-dimensions": "./src/components/venue-grade-dimensions.tsx",
|
|
179
|
+
"./components/venue-quotes": "./src/components/venue-quotes.tsx",
|
|
180
|
+
"./components/venue-wall": "./src/components/venue-wall.tsx",
|
|
181
|
+
"./components/weekday-chip": "./src/components/weekday-chip.tsx",
|
|
182
|
+
"./components/weekday-theme-banner": "./src/components/weekday-theme-banner.tsx",
|
|
183
|
+
"./components/weekend-panel": "./src/components/weekend-panel.tsx",
|
|
19
184
|
"./globals.css": "./src/globals.css",
|
|
20
|
-
"./
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"./hooks
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"./lib
|
|
29
|
-
|
|
30
|
-
|
|
185
|
+
"./hooks/use-drag-swipe": "./src/hooks/use-drag-swipe.ts",
|
|
186
|
+
"./hooks/use-haptic": "./src/hooks/use-haptic.ts",
|
|
187
|
+
"./hooks/use-media-query": "./src/hooks/use-media-query.ts",
|
|
188
|
+
"./hooks/use-mobile": "./src/hooks/use-mobile.ts",
|
|
189
|
+
"./hooks/use-mounted-theme": "./src/hooks/use-mounted-theme.ts",
|
|
190
|
+
"./hooks/use-sticky": "./src/hooks/use-sticky.ts",
|
|
191
|
+
"./lib/card-hover": "./src/lib/card-hover.ts",
|
|
192
|
+
"./lib/grade": "./src/lib/grade.ts",
|
|
193
|
+
"./lib/icon-depth": "./src/lib/icon-depth.ts",
|
|
194
|
+
"./lib/icon-registry": "./src/lib/icon-registry.ts",
|
|
195
|
+
"./lib/motion": "./src/lib/motion.ts",
|
|
196
|
+
"./lib/overlay-pill": "./src/lib/overlay-pill.ts",
|
|
197
|
+
"./lib/utils": "./src/lib/utils.ts"
|
|
198
|
+
},
|
|
199
|
+
"publishConfig": {
|
|
200
|
+
"exports": {
|
|
201
|
+
"./globals.css": "./src/globals.css",
|
|
202
|
+
"./components/*": {
|
|
203
|
+
"types": "./dist/components/*.d.ts",
|
|
204
|
+
"import": "./dist/components/*.js"
|
|
205
|
+
},
|
|
206
|
+
"./hooks/*": {
|
|
207
|
+
"types": "./dist/hooks/*.d.ts",
|
|
208
|
+
"import": "./dist/hooks/*.js"
|
|
209
|
+
},
|
|
210
|
+
"./lib/*": {
|
|
211
|
+
"types": "./dist/lib/*.d.ts",
|
|
212
|
+
"import": "./dist/lib/*.js"
|
|
213
|
+
}
|
|
31
214
|
}
|
|
32
215
|
},
|
|
216
|
+
"scripts": {
|
|
217
|
+
"storybook": "storybook dev -p 6006",
|
|
218
|
+
"build-storybook": "storybook build",
|
|
219
|
+
"build": "tsup",
|
|
220
|
+
"dev": "tsup --watch",
|
|
221
|
+
"typecheck": "tsc --noEmit",
|
|
222
|
+
"test": "vitest run",
|
|
223
|
+
"test:watch": "vitest",
|
|
224
|
+
"clean": "rm -rf dist",
|
|
225
|
+
"prepublishOnly": "pnpm run build"
|
|
226
|
+
},
|
|
33
227
|
"peerDependencies": {
|
|
34
228
|
"@hookform/resolvers": "^3.0.0 || ^5.0.0",
|
|
35
229
|
"@radix-ui/react-accordion": "*",
|
|
@@ -138,15 +332,5 @@
|
|
|
138
332
|
"vaul": "^1.1.2",
|
|
139
333
|
"vitest": "^4.1.5",
|
|
140
334
|
"zod": "^3.25.67"
|
|
141
|
-
},
|
|
142
|
-
"scripts": {
|
|
143
|
-
"storybook": "storybook dev -p 6006",
|
|
144
|
-
"build-storybook": "storybook build",
|
|
145
|
-
"build": "tsup",
|
|
146
|
-
"dev": "tsup --watch",
|
|
147
|
-
"typecheck": "tsc --noEmit",
|
|
148
|
-
"test": "vitest run",
|
|
149
|
-
"test:watch": "vitest",
|
|
150
|
-
"clean": "rm -rf dist"
|
|
151
335
|
}
|
|
152
|
-
}
|
|
336
|
+
}
|