@dododog/ui 0.2.1 → 0.4.0
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-OK3E73OK.js → chunk-2XH74PQR.js} +14 -0
- package/dist/chunk-36JNXXGH.js +360 -0
- package/dist/chunk-5A3MVRZJ.js +109 -0
- package/dist/{chunk-KVVXKSMQ.mjs → chunk-7JYJ7ICL.mjs} +14 -0
- package/dist/{chunk-NWLJ7VQF.js → chunk-AIA3NHCK.js} +1 -2
- package/dist/{chunk-YSJAEDMG.js → chunk-E24VNM6S.js} +8 -5
- package/dist/{chunk-RQGC6RPI.mjs → chunk-FL3GD5FJ.mjs} +1 -2
- package/dist/{chunk-TNGW36OC.mjs → chunk-LRNSVRUN.mjs} +2 -0
- package/dist/{chunk-76DZXGKJ.mjs → chunk-N6THLJIG.mjs} +8 -5
- package/dist/chunk-PBDPZTHK.mjs +53 -0
- package/dist/chunk-PU4CWOWU.mjs +87 -0
- package/dist/chunk-S732LTPT.js +75 -0
- package/dist/{chunk-3BPC4LNH.js → chunk-T4AT3YCT.js} +2 -0
- package/dist/chunk-XH2MVC4W.mjs +337 -0
- package/dist/components/AnchorTabs/index.d.mts +41 -0
- package/dist/components/AnchorTabs/index.d.ts +41 -0
- package/dist/components/AnchorTabs/index.js +11 -0
- package/dist/components/AnchorTabs/index.mjs +2 -0
- package/dist/components/Counter/index.js +2 -2
- package/dist/components/Counter/index.mjs +1 -1
- package/dist/components/DateRangePicker/index.js +3 -3
- package/dist/components/DateRangePicker/index.mjs +1 -1
- package/dist/components/DetailList/index.d.mts +8 -2
- package/dist/components/DetailList/index.d.ts +8 -2
- package/dist/components/DetailList/index.js +2 -2
- package/dist/components/DetailList/index.mjs +1 -1
- package/dist/components/FloatingDock/index.d.mts +44 -0
- package/dist/components/FloatingDock/index.d.ts +44 -0
- package/dist/components/FloatingDock/index.js +11 -0
- package/dist/components/FloatingDock/index.mjs +2 -0
- package/dist/components/RoomTypeCard/index.d.mts +92 -0
- package/dist/components/RoomTypeCard/index.d.ts +92 -0
- package/dist/components/RoomTypeCard/index.js +16 -0
- package/dist/components/RoomTypeCard/index.mjs +3 -0
- package/dist/index.d.mts +125 -4
- package/dist/index.d.ts +125 -4
- package/dist/index.js +542 -102
- package/dist/index.mjs +426 -22
- package/dist/tailwind-preset.d.mts +11 -0
- package/dist/tailwind-preset.d.ts +11 -0
- package/dist/tailwind-preset.js +7 -7
- package/dist/tailwind-preset.mjs +1 -1
- package/dist/tokens/index.d.mts +11 -0
- package/dist/tokens/index.d.ts +11 -0
- package/dist/tokens/index.js +8 -8
- package/dist/tokens/index.mjs +1 -1
- package/package.json +16 -1
package/dist/index.mjs
CHANGED
|
@@ -1,62 +1,466 @@
|
|
|
1
|
+
export { Toast, toastVariants } from './chunk-YVTUUNAX.mjs';
|
|
2
|
+
export { Toggle } from './chunk-2AB5ZHY5.mjs';
|
|
3
|
+
export { Tooltip } from './chunk-2MJTZ6RR.mjs';
|
|
1
4
|
export { VerticalMarquee } from './chunk-JP5ZR2HI.mjs';
|
|
5
|
+
export { Spinner, spinnerVariants } from './chunk-NCSFXSOZ.mjs';
|
|
6
|
+
export { StatCard } from './chunk-O2W7NR33.mjs';
|
|
7
|
+
export { StatusBadge, statusBadgeVariants } from './chunk-FZ7UNXSC.mjs';
|
|
2
8
|
export { Stepper } from './chunk-2ASKBL63.mjs';
|
|
3
9
|
export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-DMCMWOBJ.mjs';
|
|
4
10
|
export { Tabs } from './chunk-VOZPGXQD.mjs';
|
|
5
11
|
export { Tag, tagVariants } from './chunk-WOG6V7OW.mjs';
|
|
6
12
|
export { Textarea, textareaVariants } from './chunk-ZZ4EWC53.mjs';
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
13
|
+
export { RadioGroup } from './chunk-F2BUMJYW.mjs';
|
|
14
|
+
export { Rating } from './chunk-SGDC4IVX.mjs';
|
|
15
|
+
export { RoomTypeCard, RoomTypeCardSkeleton } from './chunk-XH2MVC4W.mjs';
|
|
10
16
|
export { SearchBar } from './chunk-KQK7LFWM.mjs';
|
|
11
17
|
export { SegmentedControl } from './chunk-36Y7UU32.mjs';
|
|
12
18
|
export { Select, selectVariants } from './chunk-333YD5QI.mjs';
|
|
13
19
|
export { Sidebar } from './chunk-MPL35D5G.mjs';
|
|
14
20
|
export { Skeleton, SkeletonCircle, SkeletonImage, SkeletonText } from './chunk-PAHSQMXV.mjs';
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export { StatusBadge, statusBadgeVariants } from './chunk-FZ7UNXSC.mjs';
|
|
21
|
+
export { LoadingOverlay } from './chunk-WVEJS2J2.mjs';
|
|
22
|
+
export { MegaMenu } from './chunk-EUEM2D5M.mjs';
|
|
18
23
|
export { MobileMenu } from './chunk-R4DC7XPP.mjs';
|
|
19
24
|
export { Modal } from './chunk-74B2EGKT.mjs';
|
|
20
25
|
export { Pagination } from './chunk-XQVODPHL.mjs';
|
|
21
26
|
export { PriceDisplay } from './chunk-DGEXT7PN.mjs';
|
|
22
27
|
export { ProgressBar, progressBarVariants, progressFillVariants } from './chunk-UGYMWWKT.mjs';
|
|
23
28
|
export { PromoBanner, promoBannerVariants } from './chunk-FNDR3WOZ.mjs';
|
|
24
|
-
export {
|
|
25
|
-
export { Rating } from './chunk-SGDC4IVX.mjs';
|
|
29
|
+
export { Header } from './chunk-PPDKQ3FF.mjs';
|
|
26
30
|
export { IconBadge, iconBadgeVariants } from './chunk-I4WCNTNP.mjs';
|
|
31
|
+
export { HotelCard } from './chunk-PXHZ4CXG.mjs';
|
|
27
32
|
export { ImageGallery } from './chunk-QU6ZRLKO.mjs';
|
|
28
33
|
export { ImageWithFallback } from './chunk-BUXVK2HE.mjs';
|
|
29
|
-
export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
|
|
30
34
|
export { Lightbox } from './chunk-GBWVIY3C.mjs';
|
|
35
|
+
export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
|
|
31
36
|
export { LinkCard } from './chunk-UYDZKAGZ.mjs';
|
|
32
|
-
export {
|
|
33
|
-
export { MegaMenu } from './chunk-EUEM2D5M.mjs';
|
|
37
|
+
export { DualRangeSlider } from './chunk-ERL3WXNY.mjs';
|
|
34
38
|
export { EmptyState } from './chunk-OCUHCDAQ.mjs';
|
|
35
39
|
export { ErrorBoundary } from './chunk-5257MWFI.mjs';
|
|
36
40
|
export { FilterAccordion } from './chunk-VQVRKRSM.mjs';
|
|
41
|
+
export { FloatingDock } from './chunk-PBDPZTHK.mjs';
|
|
37
42
|
export { FilterPill } from './chunk-TNWMTKNR.mjs';
|
|
38
43
|
export { Footer } from './chunk-SZ3SV4SJ.mjs';
|
|
39
44
|
export { GuestPicker } from './chunk-EJ7LDW7E.mjs';
|
|
40
|
-
export {
|
|
41
|
-
export { HotelCard } from './chunk-PXHZ4CXG.mjs';
|
|
45
|
+
export { Carousel } from './chunk-OOPP4ES2.mjs';
|
|
42
46
|
export { Checkbox } from './chunk-EEIPCJQ2.mjs';
|
|
43
|
-
export {
|
|
44
|
-
export { DatePickerInput, DateRangePicker } from './chunk-RQGC6RPI.mjs';
|
|
45
|
-
export { DetailList } from './chunk-76DZXGKJ.mjs';
|
|
46
|
-
export { Drawer } from './chunk-ZLF7IL3Y.mjs';
|
|
47
|
+
export { DetailList } from './chunk-N6THLJIG.mjs';
|
|
47
48
|
export { Divider } from './chunk-E4B6LXK7.mjs';
|
|
48
|
-
export {
|
|
49
|
+
export { DatePickerInput, DateRangePicker } from './chunk-FL3GD5FJ.mjs';
|
|
50
|
+
export { Counter } from './chunk-LRNSVRUN.mjs';
|
|
51
|
+
export { Drawer } from './chunk-ZLF7IL3Y.mjs';
|
|
49
52
|
export { DropdownMenu } from './chunk-Q7BKR6O7.mjs';
|
|
53
|
+
export { Avatar } from './chunk-2POGTS27.mjs';
|
|
50
54
|
export { Badge, badgeVariants } from './chunk-XZU2SISM.mjs';
|
|
51
|
-
export { BottomNavBar } from './chunk-UQRQZLMQ.mjs';
|
|
52
55
|
export { Banner, bannerVariants } from './chunk-LFIZX2S6.mjs';
|
|
56
|
+
export { BottomNavBar } from './chunk-UQRQZLMQ.mjs';
|
|
53
57
|
export { Breadcrumb, breadcrumbVariants } from './chunk-UKCH6RYL.mjs';
|
|
54
|
-
export { Card, CardContent, CardDescription, CardImage, CardTitle, cardImageVariants, cardVariants } from './chunk-V5J2XLPD.mjs';
|
|
55
58
|
export { Button, buttonVariants } from './chunk-4U5MNA3B.mjs';
|
|
59
|
+
export { Card, CardContent, CardDescription, CardImage, CardTitle, cardImageVariants, cardVariants } from './chunk-V5J2XLPD.mjs';
|
|
56
60
|
export { CardList } from './chunk-RJWHPHHX.mjs';
|
|
57
|
-
export { Carousel } from './chunk-OOPP4ES2.mjs';
|
|
58
61
|
export { Accordion } from './chunk-NZ7GF6RF.mjs';
|
|
59
62
|
export { Alert } from './chunk-BQWVWK74.mjs';
|
|
63
|
+
export { AnchorTabs } from './chunk-PU4CWOWU.mjs';
|
|
60
64
|
export { Autocomplete, autocompleteInputVariants } from './chunk-B47HQHX3.mjs';
|
|
61
|
-
|
|
65
|
+
import { cn } from './chunk-IMKLN273.mjs';
|
|
62
66
|
export { cn } from './chunk-IMKLN273.mjs';
|
|
67
|
+
import * as React from 'react';
|
|
68
|
+
import { cva } from 'class-variance-authority';
|
|
69
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
70
|
+
|
|
71
|
+
var searchFieldVariants = cva(
|
|
72
|
+
"w-full border bg-white transition-all text-primary placeholder:text-text-muted",
|
|
73
|
+
{
|
|
74
|
+
variants: {
|
|
75
|
+
size: {
|
|
76
|
+
md: "pl-11 pr-11 py-3 text-sm rounded-xl",
|
|
77
|
+
lg: "pl-12 pr-12 py-4 text-base rounded-2xl",
|
|
78
|
+
xl: "pl-14 pr-14 py-5 text-lg rounded-2xl"
|
|
79
|
+
},
|
|
80
|
+
variant: {
|
|
81
|
+
default: "border-gray-200 focus:border-secondary focus:outline-none focus:ring-2 focus:ring-secondary/30",
|
|
82
|
+
hero: "border-white/20 bg-white/10 text-white placeholder:text-white/50 focus:bg-white/20 focus:outline-none focus:ring-2 focus:ring-white/30 focus:border-white/40 backdrop-blur-sm"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
defaultVariants: {
|
|
86
|
+
size: "lg",
|
|
87
|
+
variant: "default"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
var iconSizeMap = {
|
|
92
|
+
md: 18,
|
|
93
|
+
lg: 20,
|
|
94
|
+
xl: 22
|
|
95
|
+
};
|
|
96
|
+
var iconPositionMap = {
|
|
97
|
+
md: "left-3.5",
|
|
98
|
+
lg: "left-4",
|
|
99
|
+
xl: "left-4.5"
|
|
100
|
+
};
|
|
101
|
+
var clearPositionMap = {
|
|
102
|
+
md: "right-3",
|
|
103
|
+
lg: "right-3.5",
|
|
104
|
+
xl: "right-4"
|
|
105
|
+
};
|
|
106
|
+
var SearchIcon = ({ size = 20 }) => /* @__PURE__ */ jsxs(
|
|
107
|
+
"svg",
|
|
108
|
+
{
|
|
109
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
110
|
+
width: size,
|
|
111
|
+
height: size,
|
|
112
|
+
viewBox: "0 0 24 24",
|
|
113
|
+
fill: "none",
|
|
114
|
+
stroke: "currentColor",
|
|
115
|
+
strokeWidth: "2",
|
|
116
|
+
strokeLinecap: "round",
|
|
117
|
+
strokeLinejoin: "round",
|
|
118
|
+
"aria-hidden": "true",
|
|
119
|
+
children: [
|
|
120
|
+
/* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8" }),
|
|
121
|
+
/* @__PURE__ */ jsx("path", { d: "m21 21-4.3-4.3" })
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
var ClearIcon = () => /* @__PURE__ */ jsxs(
|
|
126
|
+
"svg",
|
|
127
|
+
{
|
|
128
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
129
|
+
width: "16",
|
|
130
|
+
height: "16",
|
|
131
|
+
viewBox: "0 0 24 24",
|
|
132
|
+
fill: "none",
|
|
133
|
+
stroke: "currentColor",
|
|
134
|
+
strokeWidth: "2",
|
|
135
|
+
strokeLinecap: "round",
|
|
136
|
+
strokeLinejoin: "round",
|
|
137
|
+
"aria-hidden": "true",
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
|
|
140
|
+
/* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
var SearchField = React.forwardRef(
|
|
145
|
+
({
|
|
146
|
+
className,
|
|
147
|
+
containerClassName,
|
|
148
|
+
size,
|
|
149
|
+
variant,
|
|
150
|
+
value,
|
|
151
|
+
onClear,
|
|
152
|
+
resultCount,
|
|
153
|
+
resultLabel,
|
|
154
|
+
...props
|
|
155
|
+
}, ref) => {
|
|
156
|
+
const hasValue = typeof value === "string" && value.length > 0;
|
|
157
|
+
const resolvedSize = size ?? "lg";
|
|
158
|
+
const iconSize = iconSizeMap[resolvedSize] ?? 20;
|
|
159
|
+
const iconPosition = iconPositionMap[resolvedSize] ?? "left-4";
|
|
160
|
+
const clearPosition = clearPositionMap[resolvedSize] ?? "right-3.5";
|
|
161
|
+
const isHero = variant === "hero";
|
|
162
|
+
const iconColor = isHero ? "text-white/60" : "text-text-muted";
|
|
163
|
+
const clearColor = isHero ? "text-white/60 hover:text-white" : "text-text-muted hover:text-primary";
|
|
164
|
+
const countColor = isHero ? "text-white/50" : "text-text-muted";
|
|
165
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("w-full", containerClassName), children: [
|
|
166
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
167
|
+
/* @__PURE__ */ jsx(
|
|
168
|
+
"div",
|
|
169
|
+
{
|
|
170
|
+
className: cn(
|
|
171
|
+
"absolute top-1/2 -translate-y-1/2 pointer-events-none",
|
|
172
|
+
iconPosition,
|
|
173
|
+
iconColor
|
|
174
|
+
),
|
|
175
|
+
children: /* @__PURE__ */ jsx(SearchIcon, { size: iconSize })
|
|
176
|
+
}
|
|
177
|
+
),
|
|
178
|
+
/* @__PURE__ */ jsx(
|
|
179
|
+
"input",
|
|
180
|
+
{
|
|
181
|
+
ref,
|
|
182
|
+
type: "text",
|
|
183
|
+
role: "searchbox",
|
|
184
|
+
className: cn(
|
|
185
|
+
searchFieldVariants({ size, variant }),
|
|
186
|
+
className
|
|
187
|
+
),
|
|
188
|
+
value,
|
|
189
|
+
...props
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
hasValue && onClear && /* @__PURE__ */ jsx(
|
|
193
|
+
"button",
|
|
194
|
+
{
|
|
195
|
+
type: "button",
|
|
196
|
+
onClick: onClear,
|
|
197
|
+
className: cn(
|
|
198
|
+
"absolute top-1/2 -translate-y-1/2 p-1.5 rounded-lg transition-colors",
|
|
199
|
+
clearPosition,
|
|
200
|
+
clearColor
|
|
201
|
+
),
|
|
202
|
+
"aria-label": "Effacer la recherche",
|
|
203
|
+
children: /* @__PURE__ */ jsx(ClearIcon, {})
|
|
204
|
+
}
|
|
205
|
+
)
|
|
206
|
+
] }),
|
|
207
|
+
hasValue && resultCount != null && resultLabel && /* @__PURE__ */ jsxs(
|
|
208
|
+
"p",
|
|
209
|
+
{
|
|
210
|
+
className: cn("mt-2 text-sm", countColor),
|
|
211
|
+
"aria-live": "polite",
|
|
212
|
+
"aria-atomic": "true",
|
|
213
|
+
children: [
|
|
214
|
+
resultCount,
|
|
215
|
+
" ",
|
|
216
|
+
resultLabel
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
)
|
|
220
|
+
] });
|
|
221
|
+
}
|
|
222
|
+
);
|
|
223
|
+
SearchField.displayName = "SearchField";
|
|
224
|
+
function PawIcon({ className }) {
|
|
225
|
+
return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, "aria-hidden": "true", children: [
|
|
226
|
+
/* @__PURE__ */ jsx("path", { d: "M10 5.172C10 3.782 8.423 2.679 6.5 3c-2.823.47-4.113 6.006-4 7 .08.703 1.725 1.722 3.656 1 1.261-.472 1.96-1.45 2.344-2.5" }),
|
|
227
|
+
/* @__PURE__ */ jsx("path", { d: "M14.267 5.172c0-1.39 1.577-2.493 3.5-2.172 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5" }),
|
|
228
|
+
/* @__PURE__ */ jsx("path", { d: "M8 14v.5" }),
|
|
229
|
+
/* @__PURE__ */ jsx("path", { d: "M16 14v.5" }),
|
|
230
|
+
/* @__PURE__ */ jsx("path", { d: "M11.25 16.25h1.5L12 17l-.75-.75Z" }),
|
|
231
|
+
/* @__PURE__ */ jsx("path", { d: "M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444c0-1.061-.162-2.2-.493-3.309m-9.243-6.082A8.801 8.801 0 0 1 12 5c.78 0 1.5.108 2.161.306" })
|
|
232
|
+
] });
|
|
233
|
+
}
|
|
234
|
+
function CheckIcon({ className }) {
|
|
235
|
+
return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "17", height: "17", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", className, "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" }) });
|
|
236
|
+
}
|
|
237
|
+
var MD_COLS = {
|
|
238
|
+
1: "md:grid-cols-1",
|
|
239
|
+
2: "md:grid-cols-2",
|
|
240
|
+
3: "md:grid-cols-3",
|
|
241
|
+
4: "md:grid-cols-4"
|
|
242
|
+
};
|
|
243
|
+
function DogFriendlyPanel({
|
|
244
|
+
title = "Voyager avec votre chien",
|
|
245
|
+
confirmed = false,
|
|
246
|
+
confirmedLabel = "Confirm\xE9 par l'\xE9tablissement",
|
|
247
|
+
unconfirmedLabel = "Informations \xE0 confirmer",
|
|
248
|
+
stats,
|
|
249
|
+
perks,
|
|
250
|
+
className,
|
|
251
|
+
...props
|
|
252
|
+
}) {
|
|
253
|
+
const mdCols = MD_COLS[Math.min(stats.length, 4)] ?? "md:grid-cols-4";
|
|
254
|
+
return /* @__PURE__ */ jsxs(
|
|
255
|
+
"section",
|
|
256
|
+
{
|
|
257
|
+
className: cn(
|
|
258
|
+
"rounded-2xl border border-secondary/25 bg-gradient-to-b from-secondary/[0.06] to-transparent p-4 md:p-6",
|
|
259
|
+
className
|
|
260
|
+
),
|
|
261
|
+
...props,
|
|
262
|
+
children: [
|
|
263
|
+
/* @__PURE__ */ jsxs("header", { className: "mb-4 flex items-center gap-3", children: [
|
|
264
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-secondary text-white", children: /* @__PURE__ */ jsx(PawIcon, { className: "h-6 w-6" }) }),
|
|
265
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
266
|
+
/* @__PURE__ */ jsx("h3", { className: "font-heading text-lg font-bold leading-tight text-primary", children: title }),
|
|
267
|
+
/* @__PURE__ */ jsxs(
|
|
268
|
+
"p",
|
|
269
|
+
{
|
|
270
|
+
className: cn(
|
|
271
|
+
"mt-0.5 inline-flex items-center gap-1 text-xs font-medium",
|
|
272
|
+
confirmed ? "text-accent-dark" : "text-text-muted"
|
|
273
|
+
),
|
|
274
|
+
children: [
|
|
275
|
+
confirmed ? /* @__PURE__ */ jsx(CheckIcon, { className: "h-3.5 w-3.5" }) : null,
|
|
276
|
+
confirmed ? confirmedLabel : unconfirmedLabel
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
)
|
|
280
|
+
] })
|
|
281
|
+
] }),
|
|
282
|
+
stats.length > 0 ? /* @__PURE__ */ jsx("div", { className: cn("mb-3 grid grid-cols-2 gap-2.5", mdCols), children: stats.map((stat) => /* @__PURE__ */ jsxs(
|
|
283
|
+
"div",
|
|
284
|
+
{
|
|
285
|
+
className: "rounded-xl border border-secondary/15 bg-white px-3 py-2.5",
|
|
286
|
+
children: [
|
|
287
|
+
/* @__PURE__ */ jsx("div", { className: "mb-0.5 text-[11px] uppercase tracking-wide text-text-muted", children: stat.label }),
|
|
288
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-primary", children: stat.value }),
|
|
289
|
+
stat.note ? /* @__PURE__ */ jsx("div", { className: "text-xs text-text-secondary", children: stat.note }) : null
|
|
290
|
+
]
|
|
291
|
+
},
|
|
292
|
+
stat.label
|
|
293
|
+
)) }) : null,
|
|
294
|
+
perks && perks.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-2 md:grid md:grid-cols-3 md:gap-x-7 md:gap-y-2.5", children: perks.map((perk) => /* @__PURE__ */ jsxs(
|
|
295
|
+
"li",
|
|
296
|
+
{
|
|
297
|
+
className: "flex items-center gap-2.5 text-sm text-primary",
|
|
298
|
+
children: [
|
|
299
|
+
/* @__PURE__ */ jsx(CheckIcon, { className: "h-[17px] w-[17px] shrink-0 text-accent" }),
|
|
300
|
+
perk
|
|
301
|
+
]
|
|
302
|
+
},
|
|
303
|
+
perk
|
|
304
|
+
)) }) : null
|
|
305
|
+
]
|
|
306
|
+
}
|
|
307
|
+
);
|
|
308
|
+
}
|
|
309
|
+
function CheckIcon2({ className }) {
|
|
310
|
+
return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", className, "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" }) });
|
|
311
|
+
}
|
|
312
|
+
function formatScore(score) {
|
|
313
|
+
return score.toFixed(1).replace(".", ",");
|
|
314
|
+
}
|
|
315
|
+
function scoreBadgeClass(score) {
|
|
316
|
+
return score >= 8 ? "bg-primary" : "bg-rating-mid";
|
|
317
|
+
}
|
|
318
|
+
function ReviewSummary({
|
|
319
|
+
score,
|
|
320
|
+
scoreLabel,
|
|
321
|
+
count,
|
|
322
|
+
title = "Avis des voyageurs",
|
|
323
|
+
countLabel = "avis v\xE9rifi\xE9s",
|
|
324
|
+
sources,
|
|
325
|
+
subScores,
|
|
326
|
+
reviews,
|
|
327
|
+
onSeeAll,
|
|
328
|
+
seeAllLabel,
|
|
329
|
+
emptyLabel = "Peu d'avis v\xE9rifi\xE9s pour le moment",
|
|
330
|
+
className,
|
|
331
|
+
...props
|
|
332
|
+
}) {
|
|
333
|
+
const hasReviews = Boolean(reviews && reviews.length > 0);
|
|
334
|
+
const isEmpty = score == null && !hasReviews;
|
|
335
|
+
return /* @__PURE__ */ jsxs(
|
|
336
|
+
"section",
|
|
337
|
+
{
|
|
338
|
+
className: cn(
|
|
339
|
+
"border-y border-sand-dark bg-surface-2 px-4 py-6 md:px-6 md:py-8",
|
|
340
|
+
className
|
|
341
|
+
),
|
|
342
|
+
...props,
|
|
343
|
+
children: [
|
|
344
|
+
/* @__PURE__ */ jsx("h2", { className: "mb-3 font-heading text-2xl font-bold tracking-tight text-primary", children: title }),
|
|
345
|
+
isEmpty ? /* @__PURE__ */ jsx("p", { className: "text-sm text-text-secondary", children: emptyLabel }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
346
|
+
score != null ? /* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-baseline gap-2", children: [
|
|
347
|
+
/* @__PURE__ */ jsx("span", { className: "font-heading text-4xl font-bold leading-none text-primary", children: formatScore(score) }),
|
|
348
|
+
/* @__PURE__ */ jsx("span", { className: "text-lg font-medium text-text-muted", children: "/ 10" })
|
|
349
|
+
] }) : null,
|
|
350
|
+
scoreLabel ? /* @__PURE__ */ jsx("div", { className: "font-heading text-lg font-bold text-primary", children: scoreLabel }) : null,
|
|
351
|
+
count != null ? /* @__PURE__ */ jsxs("div", { className: "mb-4 mt-1 text-sm text-text-secondary", children: [
|
|
352
|
+
count.toLocaleString("fr-FR"),
|
|
353
|
+
" ",
|
|
354
|
+
countLabel,
|
|
355
|
+
sources && sources.length > 0 ? /* @__PURE__ */ jsxs("span", { className: "text-text-muted", children: [
|
|
356
|
+
" \xB7 ",
|
|
357
|
+
sources.join(" \xB7 ")
|
|
358
|
+
] }) : null
|
|
359
|
+
] }) : null,
|
|
360
|
+
subScores && subScores.length > 0 ? /* @__PURE__ */ jsx("div", { className: "mb-5 flex border-y border-sand-dark", children: subScores.map((sub) => /* @__PURE__ */ jsxs(
|
|
361
|
+
"div",
|
|
362
|
+
{
|
|
363
|
+
className: "flex-1 border-l border-sand-dark px-1 py-3 text-center first:border-l-0",
|
|
364
|
+
children: [
|
|
365
|
+
/* @__PURE__ */ jsx("div", { className: "font-heading text-lg font-bold text-primary", children: formatScore(sub.value) }),
|
|
366
|
+
/* @__PURE__ */ jsx("div", { className: "mt-0.5 text-xs text-text-secondary", children: sub.label })
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
sub.label
|
|
370
|
+
)) }) : null,
|
|
371
|
+
hasReviews ? /* @__PURE__ */ jsx("ul", { className: "-mx-4 flex gap-3 overflow-x-auto px-4 pb-1 [scrollbar-width:none] md:mx-0 md:px-0 [&::-webkit-scrollbar]:hidden", children: reviews.map((review, index) => /* @__PURE__ */ jsxs(
|
|
372
|
+
"li",
|
|
373
|
+
{
|
|
374
|
+
className: "flex w-[280px] shrink-0 flex-col rounded-2xl border border-sand-dark bg-white p-4",
|
|
375
|
+
children: [
|
|
376
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-2 inline-flex items-center gap-2", children: [
|
|
377
|
+
/* @__PURE__ */ jsx(
|
|
378
|
+
"span",
|
|
379
|
+
{
|
|
380
|
+
className: cn(
|
|
381
|
+
"rounded-lg px-2 py-1 text-xs font-bold text-white",
|
|
382
|
+
scoreBadgeClass(review.score)
|
|
383
|
+
),
|
|
384
|
+
children: formatScore(review.score)
|
|
385
|
+
}
|
|
386
|
+
),
|
|
387
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-primary", children: review.scoreLabel })
|
|
388
|
+
] }),
|
|
389
|
+
/* @__PURE__ */ jsx("p", { className: "m-0 text-sm leading-relaxed text-primary", children: review.text }),
|
|
390
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-3.5", children: [
|
|
391
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-primary", children: review.author }),
|
|
392
|
+
review.meta ? /* @__PURE__ */ jsx("div", { className: "text-xs text-text-muted", children: review.meta }) : null,
|
|
393
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-1.5 flex flex-wrap items-center gap-x-2.5 gap-y-1", children: [
|
|
394
|
+
review.verified ? /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-xs text-accent-dark", children: [
|
|
395
|
+
/* @__PURE__ */ jsx(CheckIcon2, { className: "h-3 w-3" }),
|
|
396
|
+
"Avis v\xE9rifi\xE9"
|
|
397
|
+
] }) : null,
|
|
398
|
+
review.translatedFrom ? /* @__PURE__ */ jsxs("span", { className: "text-xs italic text-text-muted", children: [
|
|
399
|
+
"Traduit de ",
|
|
400
|
+
review.translatedFrom
|
|
401
|
+
] }) : null
|
|
402
|
+
] })
|
|
403
|
+
] })
|
|
404
|
+
]
|
|
405
|
+
},
|
|
406
|
+
`${review.author}-${index}`
|
|
407
|
+
)) }) : null,
|
|
408
|
+
onSeeAll ? /* @__PURE__ */ jsx(
|
|
409
|
+
"button",
|
|
410
|
+
{
|
|
411
|
+
type: "button",
|
|
412
|
+
onClick: onSeeAll,
|
|
413
|
+
className: "mt-4 w-full rounded-full border-[1.5px] border-primary bg-transparent px-4 py-3 text-sm font-semibold text-primary transition-colors hover:bg-primary hover:text-white",
|
|
414
|
+
children: seeAllLabel ?? (count != null ? `Afficher les ${count.toLocaleString("fr-FR")} avis` : "Afficher tous les avis")
|
|
415
|
+
}
|
|
416
|
+
) : null
|
|
417
|
+
] })
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
function MobileBookingBar({
|
|
423
|
+
price,
|
|
424
|
+
meta,
|
|
425
|
+
reassurance,
|
|
426
|
+
ctaLabel = "R\xE9server",
|
|
427
|
+
onReserve,
|
|
428
|
+
disabled = false,
|
|
429
|
+
className,
|
|
430
|
+
...props
|
|
431
|
+
}) {
|
|
432
|
+
return /* @__PURE__ */ jsxs(
|
|
433
|
+
"div",
|
|
434
|
+
{
|
|
435
|
+
className: cn(
|
|
436
|
+
"sticky bottom-0 z-50 flex items-center justify-between gap-3 border-t border-sand-dark bg-white/95 px-4 pt-3 shadow-[0_-4px_20px_rgba(29,34,48,0.08)] backdrop-blur pb-[calc(env(safe-area-inset-bottom)+0.75rem)]",
|
|
437
|
+
className
|
|
438
|
+
),
|
|
439
|
+
...props,
|
|
440
|
+
children: [
|
|
441
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
442
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-1.5", children: [
|
|
443
|
+
/* @__PURE__ */ jsx("span", { className: "font-heading text-xl font-bold text-primary", children: price }),
|
|
444
|
+
meta ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-text-muted", children: meta }) : null
|
|
445
|
+
] }),
|
|
446
|
+
reassurance ? /* @__PURE__ */ jsx("div", { className: "text-[11px] text-text-muted", children: reassurance }) : null
|
|
447
|
+
] }),
|
|
448
|
+
/* @__PURE__ */ jsx(
|
|
449
|
+
"button",
|
|
450
|
+
{
|
|
451
|
+
type: "button",
|
|
452
|
+
onClick: onReserve,
|
|
453
|
+
disabled,
|
|
454
|
+
className: cn(
|
|
455
|
+
"shrink-0 rounded-full px-6 py-3 text-[15px] font-semibold text-white transition-colors",
|
|
456
|
+
disabled ? "cursor-not-allowed bg-text-muted" : "bg-secondary shadow-[0_4px_12px_rgba(242,124,84,0.35)] hover:bg-secondary-dark"
|
|
457
|
+
),
|
|
458
|
+
children: ctaLabel
|
|
459
|
+
}
|
|
460
|
+
)
|
|
461
|
+
]
|
|
462
|
+
}
|
|
463
|
+
);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export { DogFriendlyPanel, MobileBookingBar, ReviewSummary, SearchField, searchFieldVariants };
|
|
@@ -29,6 +29,17 @@ declare const dododogPreset: {
|
|
|
29
29
|
readonly secondary: "#6b7280";
|
|
30
30
|
readonly muted: "#9ca3af";
|
|
31
31
|
};
|
|
32
|
+
readonly ink: {
|
|
33
|
+
readonly DEFAULT: "#1d2230";
|
|
34
|
+
readonly soft: "#3b4559";
|
|
35
|
+
};
|
|
36
|
+
readonly surface: {
|
|
37
|
+
readonly 1: "#fdfcf9";
|
|
38
|
+
readonly 2: "#f7f3ec";
|
|
39
|
+
};
|
|
40
|
+
readonly positive: "#047857";
|
|
41
|
+
readonly danger: "#a8473b";
|
|
42
|
+
readonly "rating-mid": "#f5b301";
|
|
32
43
|
readonly white: "#ffffff";
|
|
33
44
|
readonly black: "#000000";
|
|
34
45
|
};
|
|
@@ -29,6 +29,17 @@ declare const dododogPreset: {
|
|
|
29
29
|
readonly secondary: "#6b7280";
|
|
30
30
|
readonly muted: "#9ca3af";
|
|
31
31
|
};
|
|
32
|
+
readonly ink: {
|
|
33
|
+
readonly DEFAULT: "#1d2230";
|
|
34
|
+
readonly soft: "#3b4559";
|
|
35
|
+
};
|
|
36
|
+
readonly surface: {
|
|
37
|
+
readonly 1: "#fdfcf9";
|
|
38
|
+
readonly 2: "#f7f3ec";
|
|
39
|
+
};
|
|
40
|
+
readonly positive: "#047857";
|
|
41
|
+
readonly danger: "#a8473b";
|
|
42
|
+
readonly "rating-mid": "#f5b301";
|
|
32
43
|
readonly white: "#ffffff";
|
|
33
44
|
readonly black: "#000000";
|
|
34
45
|
};
|
package/dist/tailwind-preset.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk2XH74PQR_js = require('./chunk-2XH74PQR.js');
|
|
4
4
|
|
|
5
5
|
// src/tailwind-preset.ts
|
|
6
6
|
var dododogPreset = {
|
|
7
7
|
theme: {
|
|
8
8
|
extend: {
|
|
9
|
-
colors:
|
|
10
|
-
fontFamily:
|
|
11
|
-
fontSize:
|
|
12
|
-
boxShadow:
|
|
13
|
-
keyframes:
|
|
14
|
-
animation:
|
|
9
|
+
colors: chunk2XH74PQR_js.colors,
|
|
10
|
+
fontFamily: chunk2XH74PQR_js.fontFamily,
|
|
11
|
+
fontSize: chunk2XH74PQR_js.fontSize,
|
|
12
|
+
boxShadow: chunk2XH74PQR_js.boxShadow,
|
|
13
|
+
keyframes: chunk2XH74PQR_js.keyframes,
|
|
14
|
+
animation: chunk2XH74PQR_js.animation
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
};
|
package/dist/tailwind-preset.mjs
CHANGED
package/dist/tokens/index.d.mts
CHANGED
|
@@ -26,6 +26,17 @@ declare const colors: {
|
|
|
26
26
|
readonly secondary: "#6b7280";
|
|
27
27
|
readonly muted: "#9ca3af";
|
|
28
28
|
};
|
|
29
|
+
readonly ink: {
|
|
30
|
+
readonly DEFAULT: "#1d2230";
|
|
31
|
+
readonly soft: "#3b4559";
|
|
32
|
+
};
|
|
33
|
+
readonly surface: {
|
|
34
|
+
readonly 1: "#fdfcf9";
|
|
35
|
+
readonly 2: "#f7f3ec";
|
|
36
|
+
};
|
|
37
|
+
readonly positive: "#047857";
|
|
38
|
+
readonly danger: "#a8473b";
|
|
39
|
+
readonly "rating-mid": "#f5b301";
|
|
29
40
|
readonly white: "#ffffff";
|
|
30
41
|
readonly black: "#000000";
|
|
31
42
|
};
|
package/dist/tokens/index.d.ts
CHANGED
|
@@ -26,6 +26,17 @@ declare const colors: {
|
|
|
26
26
|
readonly secondary: "#6b7280";
|
|
27
27
|
readonly muted: "#9ca3af";
|
|
28
28
|
};
|
|
29
|
+
readonly ink: {
|
|
30
|
+
readonly DEFAULT: "#1d2230";
|
|
31
|
+
readonly soft: "#3b4559";
|
|
32
|
+
};
|
|
33
|
+
readonly surface: {
|
|
34
|
+
readonly 1: "#fdfcf9";
|
|
35
|
+
readonly 2: "#f7f3ec";
|
|
36
|
+
};
|
|
37
|
+
readonly positive: "#047857";
|
|
38
|
+
readonly danger: "#a8473b";
|
|
39
|
+
readonly "rating-mid": "#f5b301";
|
|
29
40
|
readonly white: "#ffffff";
|
|
30
41
|
readonly black: "#000000";
|
|
31
42
|
};
|
package/dist/tokens/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk2XH74PQR_js = require('../chunk-2XH74PQR.js');
|
|
4
4
|
|
|
5
5
|
// src/tokens/spacing.ts
|
|
6
6
|
var spacing = {
|
|
@@ -54,31 +54,31 @@ var borderRadius = {
|
|
|
54
54
|
|
|
55
55
|
Object.defineProperty(exports, "animation", {
|
|
56
56
|
enumerable: true,
|
|
57
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunk2XH74PQR_js.animation; }
|
|
58
58
|
});
|
|
59
59
|
Object.defineProperty(exports, "boxShadow", {
|
|
60
60
|
enumerable: true,
|
|
61
|
-
get: function () { return
|
|
61
|
+
get: function () { return chunk2XH74PQR_js.boxShadow; }
|
|
62
62
|
});
|
|
63
63
|
Object.defineProperty(exports, "colors", {
|
|
64
64
|
enumerable: true,
|
|
65
|
-
get: function () { return
|
|
65
|
+
get: function () { return chunk2XH74PQR_js.colors; }
|
|
66
66
|
});
|
|
67
67
|
Object.defineProperty(exports, "fontFamily", {
|
|
68
68
|
enumerable: true,
|
|
69
|
-
get: function () { return
|
|
69
|
+
get: function () { return chunk2XH74PQR_js.fontFamily; }
|
|
70
70
|
});
|
|
71
71
|
Object.defineProperty(exports, "fontSize", {
|
|
72
72
|
enumerable: true,
|
|
73
|
-
get: function () { return
|
|
73
|
+
get: function () { return chunk2XH74PQR_js.fontSize; }
|
|
74
74
|
});
|
|
75
75
|
Object.defineProperty(exports, "keyframes", {
|
|
76
76
|
enumerable: true,
|
|
77
|
-
get: function () { return
|
|
77
|
+
get: function () { return chunk2XH74PQR_js.keyframes; }
|
|
78
78
|
});
|
|
79
79
|
Object.defineProperty(exports, "typography", {
|
|
80
80
|
enumerable: true,
|
|
81
|
-
get: function () { return
|
|
81
|
+
get: function () { return chunk2XH74PQR_js.typography; }
|
|
82
82
|
});
|
|
83
83
|
exports.borderRadius = borderRadius;
|
|
84
84
|
exports.spacing = spacing;
|
package/dist/tokens/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { animation, boxShadow, colors, fontFamily, fontSize, keyframes, typography } from '../chunk-
|
|
1
|
+
export { animation, boxShadow, colors, fontFamily, fontSize, keyframes, typography } from '../chunk-7JYJ7ICL.mjs';
|
|
2
2
|
|
|
3
3
|
// src/tokens/spacing.ts
|
|
4
4
|
var spacing = {
|