@bearmenu/ui 0.1.1 → 0.5.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-2CUFS5LF.js → chunk-2BMJRXQX.js} +1 -1
- package/dist/chunk-HLQ2IRE7.js +279 -0
- package/dist/chunk-IQASCH2V.js +25 -0
- package/dist/{chunk-UXAYXRFN.js → chunk-QJ54Z7TC.js} +15 -1
- package/dist/{chunk-X6GATUI2.js → chunk-UISA4CIG.js} +1 -0
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/alert.d.ts +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.d.ts +9 -7
- package/dist/components/calendar.js +153 -39
- package/dist/components/card.d.ts +2 -1
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.js +1 -1
- package/dist/components/checkbox.js +3 -25
- package/dist/components/command.d.ts +13 -13
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/empty-state.js +1 -1
- package/dist/components/haptic-button.js +1 -1
- package/dist/components/link-button.js +1 -1
- package/dist/components/multi-select-combobox.js +1 -1
- package/dist/components/multi-select-menu.d.ts +26 -0
- package/dist/components/multi-select-menu.js +71 -0
- package/dist/components/pagination.js +1 -1
- package/dist/components/phone-frame.d.ts +17 -0
- package/dist/components/phone-frame.js +41 -0
- package/dist/components/place-about-tab.d.ts +17 -0
- package/dist/components/place-about-tab.js +6 -0
- package/dist/components/place-card.d.ts +17 -0
- package/dist/components/place-card.js +145 -0
- package/dist/components/place-details-mobile.d.ts +18 -0
- package/dist/components/place-details-mobile.js +187 -0
- package/dist/components/place-types.d.ts +145 -0
- package/dist/components/place-types.js +1 -0
- package/dist/components/search-bar.js +1 -1
- package/dist/components/searchable-select.js +1 -1
- package/dist/components/skeleton-card.js +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/sliding-panels.js +1 -1
- package/dist/components/sonner.js +11 -2
- package/dist/components/tabs.js +1 -1
- package/dist/components/text.d.ts +3 -3
- package/dist/components/toaster.js +1 -1
- package/package.json +28 -9
- package/src/components/accordion.stories.tsx +51 -0
- package/src/components/alert-dialog.stories.tsx +45 -0
- package/src/components/alert.stories.tsx +85 -0
- package/src/components/aspect-ratio.stories.tsx +47 -0
- package/src/components/avatar.stories.tsx +66 -0
- package/src/components/badge.stories.tsx +60 -0
- package/src/components/breadcrumb.stories.tsx +63 -0
- package/src/components/button.stories.tsx +115 -0
- package/src/components/button.tsx +1 -1
- package/src/components/calendar.stories.tsx +47 -0
- package/src/components/calendar.tsx +160 -40
- package/src/components/card.stories.tsx +72 -0
- package/src/components/card.tsx +13 -1
- package/src/components/carousel.stories.tsx +62 -0
- package/src/components/checkbox.stories.tsx +54 -0
- package/src/components/checkbox.tsx +1 -1
- package/src/components/collapsible.stories.tsx +34 -0
- package/src/components/command.stories.tsx +64 -0
- package/src/components/currency-input.stories.tsx +50 -0
- package/src/components/dialog.stories.tsx +75 -0
- package/src/components/drawer.stories.tsx +47 -0
- package/src/components/dropdown-menu.stories.tsx +64 -0
- package/src/components/dropdown-menu.tsx +1 -1
- package/src/components/empty-state.stories.tsx +67 -0
- package/src/components/form.stories.tsx +73 -0
- package/src/components/haptic-button.stories.tsx +41 -0
- package/src/components/input-otp.stories.tsx +42 -0
- package/src/components/input.stories.tsx +41 -0
- package/src/components/label.stories.tsx +35 -0
- package/src/components/markdown-renderer.stories.tsx +45 -0
- package/src/components/multi-select-combobox.stories.tsx +78 -0
- package/src/components/multi-select-menu.tsx +96 -0
- package/src/components/pagination.stories.tsx +48 -0
- package/src/components/phone-frame.stories.tsx +51 -0
- package/src/components/phone-frame.test.tsx +82 -0
- package/src/components/phone-frame.tsx +59 -0
- package/src/components/place-about-tab.stories.tsx +164 -0
- package/src/components/place-about-tab.test.tsx +325 -0
- package/src/components/place-about-tab.tsx +474 -0
- package/src/components/place-card.stories.tsx +120 -0
- package/src/components/place-card.test.tsx +187 -0
- package/src/components/place-card.tsx +187 -0
- package/src/components/place-details-mobile.tsx +251 -0
- package/src/components/place-types.ts +127 -0
- package/src/components/popover.stories.tsx +42 -0
- package/src/components/progress.stories.tsx +35 -0
- package/src/components/radio-group.stories.tsx +46 -0
- package/src/components/rating.stories.tsx +45 -0
- package/src/components/scroll-area.stories.tsx +48 -0
- package/src/components/search-bar.stories.tsx +92 -0
- package/src/components/searchable-select.stories.tsx +55 -0
- package/src/components/select.stories.tsx +92 -0
- package/src/components/separator.stories.tsx +33 -0
- package/src/components/sheet.stories.tsx +95 -0
- package/src/components/skeleton-card.stories.tsx +53 -0
- package/src/components/skeleton.stories.tsx +42 -0
- package/src/components/skeleton.tsx +1 -0
- package/src/components/slider.stories.tsx +27 -0
- package/src/components/sliding-panels.stories.tsx +68 -0
- package/src/components/sonner.tsx +17 -2
- package/src/components/sticky-container.stories.tsx +33 -0
- package/src/components/switch.stories.tsx +35 -0
- package/src/components/table.stories.tsx +60 -0
- package/src/components/tabs.stories.tsx +53 -0
- package/src/components/tabs.tsx +1 -1
- package/src/components/text.stories.tsx +82 -0
- package/src/components/textarea.stories.tsx +35 -0
- package/src/components/toast.stories.tsx +63 -0
- package/src/components/toggle-group.stories.tsx +60 -0
- package/src/components/toggle.stories.tsx +48 -0
- package/src/components/tooltip.stories.tsx +71 -0
- package/src/globals.css +21 -2
- package/src/test/setup.ts +9 -0
|
@@ -13,7 +13,7 @@ var buttonVariants = cva(
|
|
|
13
13
|
variant: {
|
|
14
14
|
default: "bg-primary backdrop-blur-sm text-primary-foreground shadow-lg hover:bg-primary/85 border border-primary/20 transition-colors duration-200",
|
|
15
15
|
destructive: "bg-destructive text-destructive-foreground shadow-lg hover:bg-destructive/90 hover:shadow-destructive/20 backdrop-blur-sm border border-destructive/20",
|
|
16
|
-
outline: "border border-border bg-
|
|
16
|
+
outline: "border border-border bg-sidebar backdrop-blur-md hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:border-sidebar-accent-foreground/20 hover:shadow-lg",
|
|
17
17
|
secondary: "bg-secondary text-secondary-foreground shadow-lg hover:bg-secondary/90 hover:shadow-secondary/20 backdrop-blur-sm border border-secondary/20",
|
|
18
18
|
ghost: "hover:bg-foreground/10 hover:text-foreground transition-colors duration-200",
|
|
19
19
|
link: "text-primary underline-offset-4 hover:underline hover:text-primary/80",
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { Card, CardHeader, CardTitle, CardContent } from './chunk-QJ54Z7TC.js';
|
|
2
|
+
import { Text } from './chunk-4KOMHDZD.js';
|
|
3
|
+
import { Badge } from './chunk-NKHH23YK.js';
|
|
4
|
+
import { cn } from './chunk-FEK5XGZW.js';
|
|
5
|
+
import { __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
|
|
6
|
+
import { Info, MapPin, Phone, Globe, Clock, UtensilsCrossed, CreditCard, Shield, Car, Building2 } from 'lucide-react';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
function Instagram(props) {
|
|
10
|
+
return /* @__PURE__ */ jsxs(
|
|
11
|
+
"svg",
|
|
12
|
+
__spreadProps(__spreadValues({
|
|
13
|
+
viewBox: "0 0 24 24",
|
|
14
|
+
fill: "none",
|
|
15
|
+
stroke: "currentColor",
|
|
16
|
+
strokeWidth: "2",
|
|
17
|
+
strokeLinecap: "round",
|
|
18
|
+
strokeLinejoin: "round"
|
|
19
|
+
}, props), {
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ jsx("rect", { width: "20", height: "20", x: "2", y: "2", rx: "5", ry: "5" }),
|
|
22
|
+
/* @__PURE__ */ jsx("path", { d: "M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z" }),
|
|
23
|
+
/* @__PURE__ */ jsx("line", { x1: "17.5", x2: "17.51", y1: "6.5", y2: "6.5" })
|
|
24
|
+
]
|
|
25
|
+
})
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
function Facebook(props) {
|
|
29
|
+
return /* @__PURE__ */ jsx(
|
|
30
|
+
"svg",
|
|
31
|
+
__spreadProps(__spreadValues({
|
|
32
|
+
viewBox: "0 0 24 24",
|
|
33
|
+
fill: "none",
|
|
34
|
+
stroke: "currentColor",
|
|
35
|
+
strokeWidth: "2",
|
|
36
|
+
strokeLinecap: "round",
|
|
37
|
+
strokeLinejoin: "round"
|
|
38
|
+
}, props), {
|
|
39
|
+
children: /* @__PURE__ */ jsx("path", { d: "M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z" })
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
function formatHour(h) {
|
|
44
|
+
return `${h.toString().padStart(2, "0")}:00`;
|
|
45
|
+
}
|
|
46
|
+
function humanizeEnum(value) {
|
|
47
|
+
return value.replace(/_/g, " ");
|
|
48
|
+
}
|
|
49
|
+
function PlaceAboutTab({
|
|
50
|
+
place,
|
|
51
|
+
labels,
|
|
52
|
+
mapSlot,
|
|
53
|
+
busynessSlot,
|
|
54
|
+
onLinkClick,
|
|
55
|
+
className
|
|
56
|
+
}) {
|
|
57
|
+
var _a, _b, _c;
|
|
58
|
+
const todayHours = place.hours && place.hours.length > 0 ? place.hours.map((slot) => `${formatHour(slot.opens_at)} - ${formatHour(slot.closes_at)}`) : null;
|
|
59
|
+
const formattedAddress = (_a = place.location) == null ? void 0 : _a.address;
|
|
60
|
+
const handleLinkClick = (kind, url) => {
|
|
61
|
+
if (onLinkClick && url) onLinkClick(kind, url);
|
|
62
|
+
};
|
|
63
|
+
const getAmenityLabel = (key) => labels.amenityLabels[key] || humanizeEnum(key);
|
|
64
|
+
const getPaymentLabel = (key) => labels.paymentLabels[key] || humanizeEnum(key);
|
|
65
|
+
const getAccessibilityLabel = (key) => labels.accessibilityLabels[key] || humanizeEnum(key);
|
|
66
|
+
const getParkingLabel = (key) => labels.parkingLabels[key] || humanizeEnum(key);
|
|
67
|
+
const getTypeLabel = (key) => labels.typeLabels[key] || humanizeEnum(key);
|
|
68
|
+
const getStatusLabel = (key) => labels.statusLabels[key] || humanizeEnum(key);
|
|
69
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4 pt-4 px-4", className), children: [
|
|
70
|
+
mapSlot,
|
|
71
|
+
(place.description || place.generative_summary || place.review_summary) && /* @__PURE__ */ jsxs(Card, { children: [
|
|
72
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
73
|
+
/* @__PURE__ */ jsx(Info, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
74
|
+
labels.description
|
|
75
|
+
] }) }),
|
|
76
|
+
/* @__PURE__ */ jsxs(CardContent, { className: "space-y-4", children: [
|
|
77
|
+
place.generative_summary && /* @__PURE__ */ jsxs("div", { children: [
|
|
78
|
+
/* @__PURE__ */ jsx(Text, { as: "p", variant: "body-sm", color: "muted", className: "mb-2", children: labels.overview }),
|
|
79
|
+
/* @__PURE__ */ jsx(Text, { as: "p", color: "default", children: place.generative_summary })
|
|
80
|
+
] }),
|
|
81
|
+
place.description && /* @__PURE__ */ jsxs("div", { children: [
|
|
82
|
+
/* @__PURE__ */ jsx(Text, { as: "p", variant: "body-sm", color: "muted", className: "mb-2", children: labels.description }),
|
|
83
|
+
/* @__PURE__ */ jsx(Text, { as: "p", color: "default", children: place.description })
|
|
84
|
+
] }),
|
|
85
|
+
place.review_summary && /* @__PURE__ */ jsxs("div", { children: [
|
|
86
|
+
/* @__PURE__ */ jsx(Text, { as: "p", variant: "body-sm", color: "muted", className: "mb-2", children: labels.whatPeopleSay }),
|
|
87
|
+
/* @__PURE__ */ jsx(Text, { as: "p", color: "default", children: place.review_summary })
|
|
88
|
+
] })
|
|
89
|
+
] })
|
|
90
|
+
] }),
|
|
91
|
+
/* @__PURE__ */ jsxs(Card, { children: [
|
|
92
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
93
|
+
/* @__PURE__ */ jsx(MapPin, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
94
|
+
labels.contactAndLocation
|
|
95
|
+
] }) }),
|
|
96
|
+
/* @__PURE__ */ jsxs(CardContent, { className: "space-y-4", children: [
|
|
97
|
+
formattedAddress && /* @__PURE__ */ jsxs("div", { children: [
|
|
98
|
+
/* @__PURE__ */ jsx(Text, { as: "p", variant: "body-sm", color: "muted", className: "mb-1", children: labels.address }),
|
|
99
|
+
/* @__PURE__ */ jsx(Text, { as: "p", color: "default", children: formattedAddress })
|
|
100
|
+
] }),
|
|
101
|
+
place.phone && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
102
|
+
/* @__PURE__ */ jsx(Phone, { className: "w-4 h-4 text-muted-foreground", "aria-hidden": "true" }),
|
|
103
|
+
/* @__PURE__ */ jsx(
|
|
104
|
+
"a",
|
|
105
|
+
{
|
|
106
|
+
href: `tel:${place.phone}`,
|
|
107
|
+
onClick: () => handleLinkClick("phone", place.phone),
|
|
108
|
+
className: "text-foreground hover:text-primary transition-colors",
|
|
109
|
+
children: place.phone
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
] }),
|
|
113
|
+
place.website_url && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
114
|
+
/* @__PURE__ */ jsx(Globe, { className: "w-4 h-4 text-muted-foreground", "aria-hidden": "true" }),
|
|
115
|
+
/* @__PURE__ */ jsx(
|
|
116
|
+
"a",
|
|
117
|
+
{
|
|
118
|
+
href: place.website_url,
|
|
119
|
+
target: "_blank",
|
|
120
|
+
rel: "noopener noreferrer",
|
|
121
|
+
onClick: () => handleLinkClick("website", place.website_url),
|
|
122
|
+
className: "text-foreground hover:text-primary transition-colors break-all",
|
|
123
|
+
children: place.website_url
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
] }),
|
|
127
|
+
((_b = place.socials) == null ? void 0 : _b.instagram_url) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
128
|
+
/* @__PURE__ */ jsx(Instagram, { className: "w-4 h-4 text-muted-foreground", "aria-hidden": "true" }),
|
|
129
|
+
/* @__PURE__ */ jsx(
|
|
130
|
+
"a",
|
|
131
|
+
{
|
|
132
|
+
href: place.socials.instagram_url,
|
|
133
|
+
target: "_blank",
|
|
134
|
+
rel: "noopener noreferrer",
|
|
135
|
+
onClick: () => {
|
|
136
|
+
var _a2;
|
|
137
|
+
return handleLinkClick("instagram", (_a2 = place.socials) == null ? void 0 : _a2.instagram_url);
|
|
138
|
+
},
|
|
139
|
+
className: "text-foreground hover:text-primary transition-colors",
|
|
140
|
+
children: labels.instagram
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
] }),
|
|
144
|
+
((_c = place.socials) == null ? void 0 : _c.facebook_url) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
145
|
+
/* @__PURE__ */ jsx(Facebook, { className: "w-4 h-4 text-muted-foreground", "aria-hidden": "true" }),
|
|
146
|
+
/* @__PURE__ */ jsx(
|
|
147
|
+
"a",
|
|
148
|
+
{
|
|
149
|
+
href: place.socials.facebook_url,
|
|
150
|
+
target: "_blank",
|
|
151
|
+
rel: "noopener noreferrer",
|
|
152
|
+
onClick: () => {
|
|
153
|
+
var _a2;
|
|
154
|
+
return handleLinkClick("facebook", (_a2 = place.socials) == null ? void 0 : _a2.facebook_url);
|
|
155
|
+
},
|
|
156
|
+
className: "text-foreground hover:text-primary transition-colors",
|
|
157
|
+
children: labels.facebook
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
] })
|
|
161
|
+
] })
|
|
162
|
+
] }),
|
|
163
|
+
todayHours && todayHours.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
164
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
165
|
+
/* @__PURE__ */ jsx(Clock, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
166
|
+
labels.todayHours
|
|
167
|
+
] }) }),
|
|
168
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
169
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
170
|
+
/* @__PURE__ */ jsx(
|
|
171
|
+
"span",
|
|
172
|
+
{
|
|
173
|
+
className: cn(
|
|
174
|
+
"w-2 h-2 rounded-full",
|
|
175
|
+
place.open_now ? "bg-green-500" : "bg-muted-foreground"
|
|
176
|
+
)
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
/* @__PURE__ */ jsx(
|
|
180
|
+
Text,
|
|
181
|
+
{
|
|
182
|
+
as: "span",
|
|
183
|
+
weight: "medium",
|
|
184
|
+
className: place.open_now ? "text-green-600 dark:text-green-400" : "",
|
|
185
|
+
children: place.open_now ? labels.statusOpen : labels.statusClosed
|
|
186
|
+
}
|
|
187
|
+
)
|
|
188
|
+
] }),
|
|
189
|
+
todayHours.map((range, index) => /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx(Text, { as: "span", color: "muted", children: range }) }, index))
|
|
190
|
+
] }) })
|
|
191
|
+
] }),
|
|
192
|
+
busynessSlot && place.busyness && place.busyness.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
193
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
194
|
+
/* @__PURE__ */ jsx(Clock, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
195
|
+
labels.typicalBusyness
|
|
196
|
+
] }) }),
|
|
197
|
+
/* @__PURE__ */ jsx(CardContent, { children: busynessSlot })
|
|
198
|
+
] }),
|
|
199
|
+
place.cuisines && place.cuisines.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
200
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
201
|
+
/* @__PURE__ */ jsx(UtensilsCrossed, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
202
|
+
labels.cuisines
|
|
203
|
+
] }) }),
|
|
204
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: place.cuisines.map((cuisine, index) => /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: cuisine.charAt(0).toUpperCase() + cuisine.slice(1) }, index)) }) })
|
|
205
|
+
] }),
|
|
206
|
+
place.amenities && place.amenities.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
207
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, { children: labels.amenities }) }),
|
|
208
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-2", children: place.amenities.map((amenity, index) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
209
|
+
/* @__PURE__ */ jsx(Text, { as: "span", color: "muted", children: "\u2022" }),
|
|
210
|
+
/* @__PURE__ */ jsx(Text, { as: "span", color: "default", children: getAmenityLabel(amenity) })
|
|
211
|
+
] }, index)) }) })
|
|
212
|
+
] }),
|
|
213
|
+
place.payment_options && place.payment_options.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
214
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
215
|
+
/* @__PURE__ */ jsx(CreditCard, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
216
|
+
labels.paymentOptions
|
|
217
|
+
] }) }),
|
|
218
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: place.payment_options.map((payment, index) => /* @__PURE__ */ jsx(Badge, { variant: "outline", children: getPaymentLabel(payment) }, index)) }) })
|
|
219
|
+
] }),
|
|
220
|
+
place.accessibility_features && place.accessibility_features.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
221
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
222
|
+
/* @__PURE__ */ jsx(Shield, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
223
|
+
labels.accessibility
|
|
224
|
+
] }) }),
|
|
225
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-2", children: place.accessibility_features.map((feature, index) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
226
|
+
/* @__PURE__ */ jsx(Text, { as: "span", color: "muted", children: "\u2022" }),
|
|
227
|
+
/* @__PURE__ */ jsx(Text, { as: "span", color: "default", children: getAccessibilityLabel(feature) })
|
|
228
|
+
] }, index)) }) })
|
|
229
|
+
] }),
|
|
230
|
+
place.parking_options && place.parking_options.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
231
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
232
|
+
/* @__PURE__ */ jsx(Car, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
233
|
+
labels.parking
|
|
234
|
+
] }) }),
|
|
235
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: place.parking_options.map((parking, index) => /* @__PURE__ */ jsx(Badge, { variant: "outline", children: getParkingLabel(parking) }, index)) }) })
|
|
236
|
+
] }),
|
|
237
|
+
place.landmarks && place.landmarks.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
238
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
239
|
+
/* @__PURE__ */ jsx(MapPin, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
240
|
+
labels.nearbyLandmarks
|
|
241
|
+
] }) }),
|
|
242
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "space-y-2", children: place.landmarks.map((landmark, index) => /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
|
|
243
|
+
/* @__PURE__ */ jsx(Text, { as: "span", color: "default", children: landmark.name }),
|
|
244
|
+
landmark.distance_meters !== void 0 && landmark.distance_meters !== null && /* @__PURE__ */ jsxs(Text, { as: "span", variant: "body-sm", color: "muted", children: [
|
|
245
|
+
(landmark.distance_meters / 1e3).toFixed(1),
|
|
246
|
+
" km"
|
|
247
|
+
] })
|
|
248
|
+
] }, index)) }) })
|
|
249
|
+
] }),
|
|
250
|
+
place.areas && place.areas.length > 0 && /* @__PURE__ */ jsxs(Card, { children: [
|
|
251
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, { className: "flex items-center gap-2", children: [
|
|
252
|
+
/* @__PURE__ */ jsx(Building2, { className: "w-5 h-5", "aria-hidden": "true" }),
|
|
253
|
+
labels.neighborhood
|
|
254
|
+
] }) }),
|
|
255
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: place.areas.map((area, index) => /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: area.name }, index)) }) })
|
|
256
|
+
] }),
|
|
257
|
+
(place.type || place.business_status) && /* @__PURE__ */ jsxs(Card, { children: [
|
|
258
|
+
/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, { children: labels.businessInformation }) }),
|
|
259
|
+
/* @__PURE__ */ jsxs(CardContent, { className: "space-y-2", children: [
|
|
260
|
+
place.type && /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
|
|
261
|
+
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", color: "muted", children: labels.type }),
|
|
262
|
+
/* @__PURE__ */ jsx(Text, { as: "span", color: "default", children: getTypeLabel(place.type) })
|
|
263
|
+
] }),
|
|
264
|
+
place.business_status && /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center", children: [
|
|
265
|
+
/* @__PURE__ */ jsx(Text, { as: "span", variant: "body-sm", color: "muted", children: labels.status }),
|
|
266
|
+
/* @__PURE__ */ jsx(
|
|
267
|
+
Badge,
|
|
268
|
+
{
|
|
269
|
+
variant: place.business_status === "operational" ? "default" : place.business_status === "closed_temporarily" ? "secondary" : "destructive",
|
|
270
|
+
children: getStatusLabel(place.business_status)
|
|
271
|
+
}
|
|
272
|
+
)
|
|
273
|
+
] })
|
|
274
|
+
] })
|
|
275
|
+
] })
|
|
276
|
+
] });
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export { PlaceAboutTab };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { cn } from './chunk-FEK5XGZW.js';
|
|
2
|
+
import { __objRest, __spreadProps, __spreadValues } from './chunk-3GWWZKX7.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
5
|
+
import { Check } from 'lucide-react';
|
|
6
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var Checkbox = React.forwardRef((_a, ref) => {
|
|
9
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
10
|
+
return /* @__PURE__ */ jsx(
|
|
11
|
+
CheckboxPrimitive.Root,
|
|
12
|
+
__spreadProps(__spreadValues({
|
|
13
|
+
ref,
|
|
14
|
+
className: cn(
|
|
15
|
+
"peer h-5 w-5 shrink-0 rounded-md border border-border bg-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary data-[state=checked]:shadow-lg data-[state=checked]:shadow-primary/20 data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary data-[state=indeterminate]:shadow-lg data-[state=indeterminate]:shadow-primary/20 hover:border-primary/40 hover:shadow-md",
|
|
16
|
+
className
|
|
17
|
+
)
|
|
18
|
+
}, props), {
|
|
19
|
+
children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5 animate-in zoom-in-50 duration-200" }) })
|
|
20
|
+
})
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
24
|
+
|
|
25
|
+
export { Checkbox };
|
|
@@ -58,6 +58,20 @@ var CardContent = React.forwardRef(
|
|
|
58
58
|
}
|
|
59
59
|
);
|
|
60
60
|
CardContent.displayName = "CardContent";
|
|
61
|
+
var CardAction = React.forwardRef(
|
|
62
|
+
(_a, ref) => {
|
|
63
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
65
|
+
"div",
|
|
66
|
+
__spreadValues({
|
|
67
|
+
ref,
|
|
68
|
+
"data-slot": "card-action",
|
|
69
|
+
className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className)
|
|
70
|
+
}, props)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
CardAction.displayName = "CardAction";
|
|
61
75
|
var CardFooter = React.forwardRef(
|
|
62
76
|
(_a, ref) => {
|
|
63
77
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
@@ -66,4 +80,4 @@ var CardFooter = React.forwardRef(
|
|
|
66
80
|
);
|
|
67
81
|
CardFooter.displayName = "CardFooter";
|
|
68
82
|
|
|
69
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
83
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
@@ -7,6 +7,7 @@ function Skeleton(_a) {
|
|
|
7
7
|
return /* @__PURE__ */ jsx(
|
|
8
8
|
"div",
|
|
9
9
|
__spreadValues({
|
|
10
|
+
"data-slot": "skeleton",
|
|
10
11
|
className: cn(
|
|
11
12
|
"animate-pulse rounded-xl glass border border-border/30 relative overflow-hidden",
|
|
12
13
|
"before:absolute before:inset-0 before:-translate-x-full before:animate-[shimmer_2s_infinite] before:bg-gradient-to-r before:from-transparent before:via-white/10 before:to-transparent",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buttonVariants } from '../chunk-
|
|
1
|
+
import { buttonVariants } from '../chunk-2BMJRXQX.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,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
6
|
-
variant?: "default" | "destructive" | "
|
|
6
|
+
variant?: "default" | "destructive" | "success" | "warning" | null | undefined;
|
|
7
7
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
|
|
8
8
|
declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
|
|
9
9
|
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?: "default" | "destructive" | "
|
|
7
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "glass" | "success" | "warning" | "overlay" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
10
10
|
}
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const buttonVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "glass" | "brown" | "antagonist" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { DayPicker } from 'react-day-picker';
|
|
3
|
+
import { DayPicker, DayButton } from 'react-day-picker';
|
|
4
|
+
import { Button } from './button.js';
|
|
5
|
+
import 'class-variance-authority/types';
|
|
6
|
+
import 'class-variance-authority';
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
8
|
+
declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React.ComponentProps<typeof DayPicker> & {
|
|
9
|
+
buttonVariant?: React.ComponentProps<typeof Button>["variant"];
|
|
10
|
+
}): react_jsx_runtime.JSX.Element;
|
|
11
|
+
declare function CalendarDayButton({ className, day, modifiers, ...props }: React.ComponentProps<typeof DayButton>): react_jsx_runtime.JSX.Element;
|
|
10
12
|
|
|
11
|
-
export { Calendar,
|
|
13
|
+
export { Calendar, CalendarDayButton };
|
|
@@ -1,56 +1,170 @@
|
|
|
1
|
-
import { buttonVariants } from '../chunk-
|
|
1
|
+
import { buttonVariants, Button } from '../chunk-2BMJRXQX.js';
|
|
2
2
|
import '../chunk-R47NEOSI.js';
|
|
3
3
|
import { cn } from '../chunk-FEK5XGZW.js';
|
|
4
|
-
import { __objRest, __spreadValues } from '../chunk-3GWWZKX7.js';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
4
|
+
import { __objRest, __spreadValues, __spreadProps } from '../chunk-3GWWZKX7.js';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from 'lucide-react';
|
|
7
|
+
import { getDefaultClassNames, DayPicker } from 'react-day-picker';
|
|
7
8
|
import { jsx } from 'react/jsx-runtime';
|
|
8
9
|
|
|
9
10
|
function Calendar(_a) {
|
|
10
|
-
var _b = _a, {
|
|
11
|
+
var _b = _a, {
|
|
12
|
+
className,
|
|
13
|
+
classNames,
|
|
14
|
+
showOutsideDays = true,
|
|
15
|
+
captionLayout = "label",
|
|
16
|
+
buttonVariant = "ghost",
|
|
17
|
+
formatters,
|
|
18
|
+
components
|
|
19
|
+
} = _b, props = __objRest(_b, [
|
|
20
|
+
"className",
|
|
21
|
+
"classNames",
|
|
22
|
+
"showOutsideDays",
|
|
23
|
+
"captionLayout",
|
|
24
|
+
"buttonVariant",
|
|
25
|
+
"formatters",
|
|
26
|
+
"components"
|
|
27
|
+
]);
|
|
28
|
+
const defaultClassNames = getDefaultClassNames();
|
|
11
29
|
return /* @__PURE__ */ jsx(
|
|
12
30
|
DayPicker,
|
|
13
31
|
__spreadValues({
|
|
14
32
|
showOutsideDays,
|
|
15
|
-
className: cn(
|
|
33
|
+
className: cn(
|
|
34
|
+
"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
|
|
35
|
+
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
36
|
+
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
37
|
+
className
|
|
38
|
+
),
|
|
39
|
+
captionLayout,
|
|
40
|
+
formatters: __spreadValues({
|
|
41
|
+
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
|
|
42
|
+
}, formatters),
|
|
16
43
|
classNames: __spreadValues({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
root: cn("w-fit", defaultClassNames.root),
|
|
45
|
+
months: cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
|
|
46
|
+
month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
47
|
+
nav: cn(
|
|
48
|
+
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
49
|
+
defaultClassNames.nav
|
|
50
|
+
),
|
|
51
|
+
button_previous: cn(
|
|
52
|
+
buttonVariants({ variant: buttonVariant }),
|
|
53
|
+
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
54
|
+
defaultClassNames.button_previous
|
|
55
|
+
),
|
|
56
|
+
button_next: cn(
|
|
57
|
+
buttonVariants({ variant: buttonVariant }),
|
|
58
|
+
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
59
|
+
defaultClassNames.button_next
|
|
60
|
+
),
|
|
61
|
+
month_caption: cn(
|
|
62
|
+
"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
|
|
63
|
+
defaultClassNames.month_caption
|
|
64
|
+
),
|
|
65
|
+
dropdowns: cn(
|
|
66
|
+
"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
67
|
+
defaultClassNames.dropdowns
|
|
68
|
+
),
|
|
69
|
+
dropdown_root: cn(
|
|
70
|
+
"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50",
|
|
71
|
+
defaultClassNames.dropdown_root
|
|
72
|
+
),
|
|
73
|
+
dropdown: cn("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
|
|
74
|
+
caption_label: cn(
|
|
75
|
+
"font-medium select-none",
|
|
76
|
+
captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
|
|
77
|
+
defaultClassNames.caption_label
|
|
78
|
+
),
|
|
79
|
+
table: "w-full border-collapse",
|
|
80
|
+
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
81
|
+
weekday: cn(
|
|
82
|
+
"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none",
|
|
83
|
+
defaultClassNames.weekday
|
|
84
|
+
),
|
|
85
|
+
week: cn("mt-2 flex w-full", defaultClassNames.week),
|
|
86
|
+
week_number_header: cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
|
|
87
|
+
week_number: cn(
|
|
88
|
+
"text-[0.8rem] text-muted-foreground select-none",
|
|
89
|
+
defaultClassNames.week_number
|
|
90
|
+
),
|
|
33
91
|
day: cn(
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
92
|
+
"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md",
|
|
93
|
+
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md",
|
|
94
|
+
defaultClassNames.day
|
|
95
|
+
),
|
|
96
|
+
range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
|
|
97
|
+
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
98
|
+
range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
|
|
99
|
+
today: cn(
|
|
100
|
+
"rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none",
|
|
101
|
+
defaultClassNames.today
|
|
102
|
+
),
|
|
103
|
+
outside: cn(
|
|
104
|
+
"text-muted-foreground aria-selected:text-muted-foreground",
|
|
105
|
+
defaultClassNames.outside
|
|
106
|
+
),
|
|
107
|
+
disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
108
|
+
hidden: cn("invisible", defaultClassNames.hidden)
|
|
44
109
|
}, classNames),
|
|
45
|
-
components: {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return /* @__PURE__ */ jsx(
|
|
110
|
+
components: __spreadValues({
|
|
111
|
+
Root: (_a2) => {
|
|
112
|
+
var _b2 = _a2, { className: className2, rootRef } = _b2, props2 = __objRest(_b2, ["className", "rootRef"]);
|
|
113
|
+
return /* @__PURE__ */ jsx("div", __spreadValues({ "data-slot": "calendar", ref: rootRef, className: cn(className2) }, props2));
|
|
114
|
+
},
|
|
115
|
+
Chevron: (_c) => {
|
|
116
|
+
var _d = _c, { className: className2, orientation } = _d, props2 = __objRest(_d, ["className", "orientation"]);
|
|
117
|
+
if (orientation === "left") {
|
|
118
|
+
return /* @__PURE__ */ jsx(ChevronLeftIcon, __spreadValues({ className: cn("size-4", className2) }, props2));
|
|
119
|
+
}
|
|
120
|
+
if (orientation === "right") {
|
|
121
|
+
return /* @__PURE__ */ jsx(ChevronRightIcon, __spreadValues({ className: cn("size-4", className2) }, props2));
|
|
122
|
+
}
|
|
123
|
+
return /* @__PURE__ */ jsx(ChevronDownIcon, __spreadValues({ className: cn("size-4", className2) }, props2));
|
|
124
|
+
},
|
|
125
|
+
DayButton: CalendarDayButton,
|
|
126
|
+
WeekNumber: (_e) => {
|
|
127
|
+
var _f = _e, { children } = _f, props2 = __objRest(_f, ["children"]);
|
|
128
|
+
return /* @__PURE__ */ jsx("td", __spreadProps(__spreadValues({}, props2), { children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
|
|
49
129
|
}
|
|
50
|
-
}
|
|
130
|
+
}, components)
|
|
131
|
+
}, props)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
function CalendarDayButton(_a) {
|
|
135
|
+
var _b = _a, {
|
|
136
|
+
className,
|
|
137
|
+
day,
|
|
138
|
+
modifiers
|
|
139
|
+
} = _b, props = __objRest(_b, [
|
|
140
|
+
"className",
|
|
141
|
+
"day",
|
|
142
|
+
"modifiers"
|
|
143
|
+
]);
|
|
144
|
+
const defaultClassNames = getDefaultClassNames();
|
|
145
|
+
const ref = React.useRef(null);
|
|
146
|
+
React.useEffect(() => {
|
|
147
|
+
var _a2;
|
|
148
|
+
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
149
|
+
}, [modifiers.focused]);
|
|
150
|
+
return /* @__PURE__ */ jsx(
|
|
151
|
+
Button,
|
|
152
|
+
__spreadValues({
|
|
153
|
+
ref,
|
|
154
|
+
variant: "ghost",
|
|
155
|
+
size: "icon",
|
|
156
|
+
"data-day": day.date.toLocaleDateString(),
|
|
157
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
158
|
+
"data-range-start": modifiers.range_start,
|
|
159
|
+
"data-range-end": modifiers.range_end,
|
|
160
|
+
"data-range-middle": modifiers.range_middle,
|
|
161
|
+
className: cn(
|
|
162
|
+
"group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70",
|
|
163
|
+
defaultClassNames.day,
|
|
164
|
+
className
|
|
165
|
+
)
|
|
51
166
|
}, props)
|
|
52
167
|
);
|
|
53
168
|
}
|
|
54
|
-
Calendar.displayName = "Calendar";
|
|
55
169
|
|
|
56
|
-
export { Calendar };
|
|
170
|
+
export { Calendar, CalendarDayButton };
|