@dododog/ui 0.3.0 → 0.5.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-5A3MVRZJ.js +109 -0
- package/dist/chunk-PU4CWOWU.mjs +87 -0
- package/dist/{chunk-XH2MVC4W.mjs → chunk-QJDKVDK2.mjs} +21 -2
- package/dist/{chunk-36JNXXGH.js → chunk-YDTBGEAB.js} +21 -2
- 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/RoomTypeCard/index.d.mts +10 -0
- package/dist/components/RoomTypeCard/index.d.ts +10 -0
- package/dist/components/RoomTypeCard/index.js +3 -3
- package/dist/components/RoomTypeCard/index.mjs +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +57 -52
- package/dist/index.mjs +13 -12
- package/package.json +6 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n.default = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
|
+
|
|
27
|
+
var AnchorTabs = React__namespace.forwardRef(
|
|
28
|
+
({ items, className, ariaLabel = "Navigation dans la fiche", offsetTop = 96, onActiveChange }, ref) => {
|
|
29
|
+
const [activeKey, setActiveKey] = React__namespace.useState(items[0]?.key ?? "");
|
|
30
|
+
React__namespace.useEffect(() => {
|
|
31
|
+
if (items.length === 0) return;
|
|
32
|
+
const ids = items.map((i) => i.key);
|
|
33
|
+
let raf = 0;
|
|
34
|
+
const update = () => {
|
|
35
|
+
raf = 0;
|
|
36
|
+
let current = ids[0];
|
|
37
|
+
let bestTop = -Infinity;
|
|
38
|
+
for (const id of ids) {
|
|
39
|
+
const el = document.getElementById(id);
|
|
40
|
+
if (!el) continue;
|
|
41
|
+
const top = el.getBoundingClientRect().top - offsetTop;
|
|
42
|
+
if (top <= 1 && top > bestTop) {
|
|
43
|
+
bestTop = top;
|
|
44
|
+
current = id;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
setActiveKey((prev) => prev === current ? prev : current);
|
|
48
|
+
};
|
|
49
|
+
const onScroll = () => {
|
|
50
|
+
if (raf) return;
|
|
51
|
+
raf = window.requestAnimationFrame(update);
|
|
52
|
+
};
|
|
53
|
+
update();
|
|
54
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
55
|
+
window.addEventListener("resize", onScroll);
|
|
56
|
+
return () => {
|
|
57
|
+
window.removeEventListener("scroll", onScroll);
|
|
58
|
+
window.removeEventListener("resize", onScroll);
|
|
59
|
+
if (raf) window.cancelAnimationFrame(raf);
|
|
60
|
+
};
|
|
61
|
+
}, [items, offsetTop]);
|
|
62
|
+
React__namespace.useEffect(() => {
|
|
63
|
+
if (activeKey) onActiveChange?.(activeKey);
|
|
64
|
+
}, [activeKey, onActiveChange]);
|
|
65
|
+
const handleClick = (event, key) => {
|
|
66
|
+
const el = typeof document !== "undefined" ? document.getElementById(key) : null;
|
|
67
|
+
if (!el) return;
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
const y = el.getBoundingClientRect().top + window.scrollY - offsetTop;
|
|
70
|
+
const prefersReducedMotion = typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
71
|
+
window.scrollTo({ top: y, behavior: prefersReducedMotion ? "auto" : "smooth" });
|
|
72
|
+
setActiveKey(key);
|
|
73
|
+
};
|
|
74
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
75
|
+
"nav",
|
|
76
|
+
{
|
|
77
|
+
ref,
|
|
78
|
+
"aria-label": ariaLabel,
|
|
79
|
+
className: chunkADIDI7AJ_js.cn(
|
|
80
|
+
"flex items-stretch gap-1 overflow-x-auto border-b border-sand-dark bg-white",
|
|
81
|
+
className
|
|
82
|
+
),
|
|
83
|
+
children: items.map((item) => {
|
|
84
|
+
const isActive = item.key === activeKey;
|
|
85
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
+
"a",
|
|
87
|
+
{
|
|
88
|
+
href: `#${item.key}`,
|
|
89
|
+
"aria-current": isActive ? "location" : void 0,
|
|
90
|
+
onClick: (event) => handleClick(event, item.key),
|
|
91
|
+
className: chunkADIDI7AJ_js.cn(
|
|
92
|
+
// Cible tactile >= 44px (min-h-[44px] + flex centré) ; transition
|
|
93
|
+
// limitée aux couleurs (150-300ms, sans reflow) ; press feedback
|
|
94
|
+
// via opacité (transform/opacity, aucun layout shift).
|
|
95
|
+
"flex min-h-[44px] items-center whitespace-nowrap border-b-2 px-4 text-sm outline-none transition-colors duration-200 -mb-px active:opacity-70 focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-2",
|
|
96
|
+
isActive ? "border-secondary font-semibold text-primary" : "border-transparent font-medium text-text-secondary hover:border-gray-300 hover:text-primary"
|
|
97
|
+
),
|
|
98
|
+
children: item.label
|
|
99
|
+
},
|
|
100
|
+
item.key
|
|
101
|
+
);
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
AnchorTabs.displayName = "AnchorTabs";
|
|
108
|
+
|
|
109
|
+
exports.AnchorTabs = AnchorTabs;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { cn } from './chunk-IMKLN273.mjs';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var AnchorTabs = React.forwardRef(
|
|
6
|
+
({ items, className, ariaLabel = "Navigation dans la fiche", offsetTop = 96, onActiveChange }, ref) => {
|
|
7
|
+
const [activeKey, setActiveKey] = React.useState(items[0]?.key ?? "");
|
|
8
|
+
React.useEffect(() => {
|
|
9
|
+
if (items.length === 0) return;
|
|
10
|
+
const ids = items.map((i) => i.key);
|
|
11
|
+
let raf = 0;
|
|
12
|
+
const update = () => {
|
|
13
|
+
raf = 0;
|
|
14
|
+
let current = ids[0];
|
|
15
|
+
let bestTop = -Infinity;
|
|
16
|
+
for (const id of ids) {
|
|
17
|
+
const el = document.getElementById(id);
|
|
18
|
+
if (!el) continue;
|
|
19
|
+
const top = el.getBoundingClientRect().top - offsetTop;
|
|
20
|
+
if (top <= 1 && top > bestTop) {
|
|
21
|
+
bestTop = top;
|
|
22
|
+
current = id;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
setActiveKey((prev) => prev === current ? prev : current);
|
|
26
|
+
};
|
|
27
|
+
const onScroll = () => {
|
|
28
|
+
if (raf) return;
|
|
29
|
+
raf = window.requestAnimationFrame(update);
|
|
30
|
+
};
|
|
31
|
+
update();
|
|
32
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
33
|
+
window.addEventListener("resize", onScroll);
|
|
34
|
+
return () => {
|
|
35
|
+
window.removeEventListener("scroll", onScroll);
|
|
36
|
+
window.removeEventListener("resize", onScroll);
|
|
37
|
+
if (raf) window.cancelAnimationFrame(raf);
|
|
38
|
+
};
|
|
39
|
+
}, [items, offsetTop]);
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
if (activeKey) onActiveChange?.(activeKey);
|
|
42
|
+
}, [activeKey, onActiveChange]);
|
|
43
|
+
const handleClick = (event, key) => {
|
|
44
|
+
const el = typeof document !== "undefined" ? document.getElementById(key) : null;
|
|
45
|
+
if (!el) return;
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
const y = el.getBoundingClientRect().top + window.scrollY - offsetTop;
|
|
48
|
+
const prefersReducedMotion = typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
49
|
+
window.scrollTo({ top: y, behavior: prefersReducedMotion ? "auto" : "smooth" });
|
|
50
|
+
setActiveKey(key);
|
|
51
|
+
};
|
|
52
|
+
return /* @__PURE__ */ jsx(
|
|
53
|
+
"nav",
|
|
54
|
+
{
|
|
55
|
+
ref,
|
|
56
|
+
"aria-label": ariaLabel,
|
|
57
|
+
className: cn(
|
|
58
|
+
"flex items-stretch gap-1 overflow-x-auto border-b border-sand-dark bg-white",
|
|
59
|
+
className
|
|
60
|
+
),
|
|
61
|
+
children: items.map((item) => {
|
|
62
|
+
const isActive = item.key === activeKey;
|
|
63
|
+
return /* @__PURE__ */ jsx(
|
|
64
|
+
"a",
|
|
65
|
+
{
|
|
66
|
+
href: `#${item.key}`,
|
|
67
|
+
"aria-current": isActive ? "location" : void 0,
|
|
68
|
+
onClick: (event) => handleClick(event, item.key),
|
|
69
|
+
className: cn(
|
|
70
|
+
// Cible tactile >= 44px (min-h-[44px] + flex centré) ; transition
|
|
71
|
+
// limitée aux couleurs (150-300ms, sans reflow) ; press feedback
|
|
72
|
+
// via opacité (transform/opacity, aucun layout shift).
|
|
73
|
+
"flex min-h-[44px] items-center whitespace-nowrap border-b-2 px-4 text-sm outline-none transition-colors duration-200 -mb-px active:opacity-70 focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-2",
|
|
74
|
+
isActive ? "border-secondary font-semibold text-primary" : "border-transparent font-medium text-text-secondary hover:border-gray-300 hover:text-primary"
|
|
75
|
+
),
|
|
76
|
+
children: item.label
|
|
77
|
+
},
|
|
78
|
+
item.key
|
|
79
|
+
);
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
AnchorTabs.displayName = "AnchorTabs";
|
|
86
|
+
|
|
87
|
+
export { AnchorTabs };
|
|
@@ -87,9 +87,13 @@ function RateRow({
|
|
|
87
87
|
rate,
|
|
88
88
|
selected,
|
|
89
89
|
onSelect,
|
|
90
|
+
onReserve,
|
|
90
91
|
selectLabel,
|
|
92
|
+
reserveLabel,
|
|
93
|
+
ctaNote,
|
|
91
94
|
withTopBorder
|
|
92
95
|
}) {
|
|
96
|
+
const showReserveCta = selected && !!onReserve;
|
|
93
97
|
return /* @__PURE__ */ jsxs(
|
|
94
98
|
"div",
|
|
95
99
|
{
|
|
@@ -110,7 +114,15 @@ function RateRow({
|
|
|
110
114
|
rate.originalTotal && rate.originalTotal > rate.totalPrice && /* @__PURE__ */ jsx("div", { className: "text-[11px] text-text-muted line-through leading-none", children: formatPrice(rate.originalTotal) }),
|
|
111
115
|
/* @__PURE__ */ jsx("div", { className: "font-heading text-lg font-bold text-primary leading-tight", children: formatPrice(rate.totalPrice) }),
|
|
112
116
|
rate.totalLabel && /* @__PURE__ */ jsx("div", { className: "text-[11px] text-text-muted", children: rate.totalLabel }),
|
|
113
|
-
/* @__PURE__ */ jsx(
|
|
117
|
+
showReserveCta ? /* @__PURE__ */ jsx(
|
|
118
|
+
"button",
|
|
119
|
+
{
|
|
120
|
+
type: "button",
|
|
121
|
+
onClick: () => onReserve?.(rate.id),
|
|
122
|
+
className: "mt-1.5 text-[13px] font-semibold px-5 py-1.5 rounded-full bg-secondary text-white transition-colors hover:bg-secondary-dark focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-1",
|
|
123
|
+
children: reserveLabel
|
|
124
|
+
}
|
|
125
|
+
) : /* @__PURE__ */ jsx(
|
|
114
126
|
"button",
|
|
115
127
|
{
|
|
116
128
|
type: "button",
|
|
@@ -122,7 +134,8 @@ function RateRow({
|
|
|
122
134
|
),
|
|
123
135
|
children: selected ? "S\xE9lectionn\xE9" : selectLabel
|
|
124
136
|
}
|
|
125
|
-
)
|
|
137
|
+
),
|
|
138
|
+
showReserveCta && ctaNote && /* @__PURE__ */ jsx("div", { className: "mt-1 text-[11px] leading-tight text-text-muted", children: ctaNote })
|
|
126
139
|
] })
|
|
127
140
|
]
|
|
128
141
|
}
|
|
@@ -134,6 +147,9 @@ var RoomTypeCard = React.forwardRef(
|
|
|
134
147
|
rates,
|
|
135
148
|
selectedRateId,
|
|
136
149
|
onSelectRate,
|
|
150
|
+
onReserveRate,
|
|
151
|
+
reserveLabel = "R\xE9server",
|
|
152
|
+
ctaNote,
|
|
137
153
|
initialVisibleRates = 2,
|
|
138
154
|
selectLabel = "Choisir",
|
|
139
155
|
variant = "default",
|
|
@@ -266,7 +282,10 @@ var RoomTypeCard = React.forwardRef(
|
|
|
266
282
|
rate,
|
|
267
283
|
selected: rate.id === selectedRateId,
|
|
268
284
|
onSelect: onSelectRate,
|
|
285
|
+
onReserve: onReserveRate,
|
|
269
286
|
selectLabel,
|
|
287
|
+
reserveLabel,
|
|
288
|
+
ctaNote,
|
|
270
289
|
withTopBorder: i > 0
|
|
271
290
|
},
|
|
272
291
|
rate.id
|
|
@@ -109,9 +109,13 @@ function RateRow({
|
|
|
109
109
|
rate,
|
|
110
110
|
selected,
|
|
111
111
|
onSelect,
|
|
112
|
+
onReserve,
|
|
112
113
|
selectLabel,
|
|
114
|
+
reserveLabel,
|
|
115
|
+
ctaNote,
|
|
113
116
|
withTopBorder
|
|
114
117
|
}) {
|
|
118
|
+
const showReserveCta = selected && !!onReserve;
|
|
115
119
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
116
120
|
"div",
|
|
117
121
|
{
|
|
@@ -132,7 +136,15 @@ function RateRow({
|
|
|
132
136
|
rate.originalTotal && rate.originalTotal > rate.totalPrice && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] text-text-muted line-through leading-none", children: formatPrice(rate.originalTotal) }),
|
|
133
137
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-heading text-lg font-bold text-primary leading-tight", children: formatPrice(rate.totalPrice) }),
|
|
134
138
|
rate.totalLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] text-text-muted", children: rate.totalLabel }),
|
|
135
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
139
|
+
showReserveCta ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
140
|
+
"button",
|
|
141
|
+
{
|
|
142
|
+
type: "button",
|
|
143
|
+
onClick: () => onReserve?.(rate.id),
|
|
144
|
+
className: "mt-1.5 text-[13px] font-semibold px-5 py-1.5 rounded-full bg-secondary text-white transition-colors hover:bg-secondary-dark focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-1",
|
|
145
|
+
children: reserveLabel
|
|
146
|
+
}
|
|
147
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
136
148
|
"button",
|
|
137
149
|
{
|
|
138
150
|
type: "button",
|
|
@@ -144,7 +156,8 @@ function RateRow({
|
|
|
144
156
|
),
|
|
145
157
|
children: selected ? "S\xE9lectionn\xE9" : selectLabel
|
|
146
158
|
}
|
|
147
|
-
)
|
|
159
|
+
),
|
|
160
|
+
showReserveCta && ctaNote && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-[11px] leading-tight text-text-muted", children: ctaNote })
|
|
148
161
|
] })
|
|
149
162
|
]
|
|
150
163
|
}
|
|
@@ -156,6 +169,9 @@ var RoomTypeCard = React__namespace.forwardRef(
|
|
|
156
169
|
rates,
|
|
157
170
|
selectedRateId,
|
|
158
171
|
onSelectRate,
|
|
172
|
+
onReserveRate,
|
|
173
|
+
reserveLabel = "R\xE9server",
|
|
174
|
+
ctaNote,
|
|
159
175
|
initialVisibleRates = 2,
|
|
160
176
|
selectLabel = "Choisir",
|
|
161
177
|
variant = "default",
|
|
@@ -288,7 +304,10 @@ var RoomTypeCard = React__namespace.forwardRef(
|
|
|
288
304
|
rate,
|
|
289
305
|
selected: rate.id === selectedRateId,
|
|
290
306
|
onSelect: onSelectRate,
|
|
307
|
+
onReserve: onReserveRate,
|
|
291
308
|
selectLabel,
|
|
309
|
+
reserveLabel,
|
|
310
|
+
ctaNote,
|
|
292
311
|
withTopBorder: i > 0
|
|
293
312
|
},
|
|
294
313
|
rate.id
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface AnchorTabItem {
|
|
4
|
+
/**
|
|
5
|
+
* Identifiant de la section cible : doit correspondre à l'attribut `id` de
|
|
6
|
+
* l'élément de section dans le DOM (le lien pointe sur `#{key}`).
|
|
7
|
+
*/
|
|
8
|
+
key: string;
|
|
9
|
+
/** Libellé affiché de l'onglet. */
|
|
10
|
+
label: string;
|
|
11
|
+
}
|
|
12
|
+
interface AnchorTabsProps {
|
|
13
|
+
/** Onglets d'ancrage, dans l'ordre d'apparition des sections. */
|
|
14
|
+
items: AnchorTabItem[];
|
|
15
|
+
/** Classes supplémentaires appliquées à la barre `<nav>`. */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Libellé ARIA de la navigation. */
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Décalage (px) réservé en haut de page pour le scroll-spy ET le défilement
|
|
21
|
+
* au clic (barre sticky / header). Défaut : 96.
|
|
22
|
+
*/
|
|
23
|
+
offsetTop?: number;
|
|
24
|
+
/** Notifié à chaque changement de section active (scroll ou clic). */
|
|
25
|
+
onActiveChange?: (key: string) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Barre d'onglets d'ancrage (desktop) avec scroll-spy.
|
|
29
|
+
*
|
|
30
|
+
* Présente une rangée de liens `<a href="#{key}">` ; l'onglet dont la section
|
|
31
|
+
* est actuellement en haut du viewport (au-delà de `offsetTop`) est souligné.
|
|
32
|
+
* Le composant observe le défilement de la fenêtre (via `requestAnimationFrame`)
|
|
33
|
+
* pour déterminer la section courante et défile en douceur au clic.
|
|
34
|
+
*
|
|
35
|
+
* Les sections cibles doivent porter l'`id` correspondant à chaque `key`. Le
|
|
36
|
+
* positionnement (sticky, largeur, visibilité responsive) reste à la charge de
|
|
37
|
+
* l'appelant via `className`.
|
|
38
|
+
*/
|
|
39
|
+
declare const AnchorTabs: React.ForwardRefExoticComponent<AnchorTabsProps & React.RefAttributes<HTMLElement>>;
|
|
40
|
+
|
|
41
|
+
export { type AnchorTabItem, AnchorTabs, type AnchorTabsProps };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface AnchorTabItem {
|
|
4
|
+
/**
|
|
5
|
+
* Identifiant de la section cible : doit correspondre à l'attribut `id` de
|
|
6
|
+
* l'élément de section dans le DOM (le lien pointe sur `#{key}`).
|
|
7
|
+
*/
|
|
8
|
+
key: string;
|
|
9
|
+
/** Libellé affiché de l'onglet. */
|
|
10
|
+
label: string;
|
|
11
|
+
}
|
|
12
|
+
interface AnchorTabsProps {
|
|
13
|
+
/** Onglets d'ancrage, dans l'ordre d'apparition des sections. */
|
|
14
|
+
items: AnchorTabItem[];
|
|
15
|
+
/** Classes supplémentaires appliquées à la barre `<nav>`. */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Libellé ARIA de la navigation. */
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Décalage (px) réservé en haut de page pour le scroll-spy ET le défilement
|
|
21
|
+
* au clic (barre sticky / header). Défaut : 96.
|
|
22
|
+
*/
|
|
23
|
+
offsetTop?: number;
|
|
24
|
+
/** Notifié à chaque changement de section active (scroll ou clic). */
|
|
25
|
+
onActiveChange?: (key: string) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Barre d'onglets d'ancrage (desktop) avec scroll-spy.
|
|
29
|
+
*
|
|
30
|
+
* Présente une rangée de liens `<a href="#{key}">` ; l'onglet dont la section
|
|
31
|
+
* est actuellement en haut du viewport (au-delà de `offsetTop`) est souligné.
|
|
32
|
+
* Le composant observe le défilement de la fenêtre (via `requestAnimationFrame`)
|
|
33
|
+
* pour déterminer la section courante et défile en douceur au clic.
|
|
34
|
+
*
|
|
35
|
+
* Les sections cibles doivent porter l'`id` correspondant à chaque `key`. Le
|
|
36
|
+
* positionnement (sticky, largeur, visibilité responsive) reste à la charge de
|
|
37
|
+
* l'appelant via `className`.
|
|
38
|
+
*/
|
|
39
|
+
declare const AnchorTabs: React.ForwardRefExoticComponent<AnchorTabsProps & React.RefAttributes<HTMLElement>>;
|
|
40
|
+
|
|
41
|
+
export { type AnchorTabItem, AnchorTabs, type AnchorTabsProps };
|
|
@@ -53,6 +53,16 @@ interface RoomTypeCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
53
53
|
/** id de la formule actuellement sélectionnée */
|
|
54
54
|
selectedRateId?: string;
|
|
55
55
|
onSelectRate?: (rateId: string) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Callback de réservation directe (pattern Expedia) : quand fourni, la formule
|
|
58
|
+
* sélectionnée affiche un bouton PLEIN « Réserver » qui l'appelle. Absent →
|
|
59
|
+
* comportement historique préservé (bouton « Sélectionné », API additive).
|
|
60
|
+
*/
|
|
61
|
+
onReserveRate?: (rateId: string) => void;
|
|
62
|
+
/** Libellé du CTA de réservation directe (défaut « Réserver »). */
|
|
63
|
+
reserveLabel?: string;
|
|
64
|
+
/** Note grise sous le CTA « Réserver » (ex: « Le montant ne vous sera pas encore facturé »). */
|
|
65
|
+
ctaNote?: string;
|
|
56
66
|
/** Nombre de formules visibles avant le bouton "X autres formules" (défaut 2) */
|
|
57
67
|
initialVisibleRates?: number;
|
|
58
68
|
selectLabel?: string;
|
|
@@ -53,6 +53,16 @@ interface RoomTypeCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
53
53
|
/** id de la formule actuellement sélectionnée */
|
|
54
54
|
selectedRateId?: string;
|
|
55
55
|
onSelectRate?: (rateId: string) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Callback de réservation directe (pattern Expedia) : quand fourni, la formule
|
|
58
|
+
* sélectionnée affiche un bouton PLEIN « Réserver » qui l'appelle. Absent →
|
|
59
|
+
* comportement historique préservé (bouton « Sélectionné », API additive).
|
|
60
|
+
*/
|
|
61
|
+
onReserveRate?: (rateId: string) => void;
|
|
62
|
+
/** Libellé du CTA de réservation directe (défaut « Réserver »). */
|
|
63
|
+
reserveLabel?: string;
|
|
64
|
+
/** Note grise sous le CTA « Réserver » (ex: « Le montant ne vous sera pas encore facturé »). */
|
|
65
|
+
ctaNote?: string;
|
|
56
66
|
/** Nombre de formules visibles avant le bouton "X autres formules" (défaut 2) */
|
|
57
67
|
initialVisibleRates?: number;
|
|
58
68
|
selectLabel?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYDTBGEAB_js = require('../../chunk-YDTBGEAB.js');
|
|
4
4
|
require('../../chunk-NCU5PY34.js');
|
|
5
5
|
require('../../chunk-ADIDI7AJ.js');
|
|
6
6
|
|
|
@@ -8,9 +8,9 @@ require('../../chunk-ADIDI7AJ.js');
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "RoomTypeCard", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkYDTBGEAB_js.RoomTypeCard; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "RoomTypeCardSkeleton", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkYDTBGEAB_js.RoomTypeCardSkeleton; }
|
|
16
16
|
});
|
package/dist/index.d.mts
CHANGED
|
@@ -25,6 +25,7 @@ export { FloatingDock, FloatingDockItem, FloatingDockProps } from './components/
|
|
|
25
25
|
export { SegmentedControl, SegmentedControlOption, SegmentedControlProps } from './components/SegmentedControl/index.mjs';
|
|
26
26
|
export { Drawer, DrawerProps } from './components/Drawer/index.mjs';
|
|
27
27
|
export { TabItem, Tabs, TabsProps } from './components/Tabs/index.mjs';
|
|
28
|
+
export { AnchorTabItem, AnchorTabs, AnchorTabsProps } from './components/AnchorTabs/index.mjs';
|
|
28
29
|
export { FilterPill, FilterPillProps } from './components/FilterPill/index.mjs';
|
|
29
30
|
export { Avatar, AvatarProps } from './components/Avatar/index.mjs';
|
|
30
31
|
export { Tooltip, TooltipProps } from './components/Tooltip/index.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export { FloatingDock, FloatingDockItem, FloatingDockProps } from './components/
|
|
|
25
25
|
export { SegmentedControl, SegmentedControlOption, SegmentedControlProps } from './components/SegmentedControl/index.js';
|
|
26
26
|
export { Drawer, DrawerProps } from './components/Drawer/index.js';
|
|
27
27
|
export { TabItem, Tabs, TabsProps } from './components/Tabs/index.js';
|
|
28
|
+
export { AnchorTabItem, AnchorTabs, AnchorTabsProps } from './components/AnchorTabs/index.js';
|
|
28
29
|
export { FilterPill, FilterPillProps } from './components/FilterPill/index.js';
|
|
29
30
|
export { Avatar, AvatarProps } from './components/Avatar/index.js';
|
|
30
31
|
export { Tooltip, TooltipProps } from './components/Tooltip/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunkVTELEOT7_js = require('./chunk-VTELEOT7.js');
|
|
3
4
|
var chunkDTIYZ3TQ_js = require('./chunk-DTIYZ3TQ.js');
|
|
4
5
|
var chunkE6ZNND75_js = require('./chunk-E6ZNND75.js');
|
|
5
6
|
var chunkN3JU7JS7_js = require('./chunk-N3JU7JS7.js');
|
|
7
|
+
var chunkXHRDPJTF_js = require('./chunk-XHRDPJTF.js');
|
|
6
8
|
var chunkTT7L3ZU7_js = require('./chunk-TT7L3ZU7.js');
|
|
7
9
|
var chunkDFXXGKMI_js = require('./chunk-DFXXGKMI.js');
|
|
8
10
|
var chunk3VU6TPAT_js = require('./chunk-3VU6TPAT.js');
|
|
@@ -10,15 +12,15 @@ var chunkI4S3R6C6_js = require('./chunk-I4S3R6C6.js');
|
|
|
10
12
|
var chunk762LQMWP_js = require('./chunk-762LQMWP.js');
|
|
11
13
|
var chunk7IJOHVNJ_js = require('./chunk-7IJOHVNJ.js');
|
|
12
14
|
var chunkL7OYR6U3_js = require('./chunk-L7OYR6U3.js');
|
|
13
|
-
var
|
|
15
|
+
var chunkGXKON34B_js = require('./chunk-GXKON34B.js');
|
|
14
16
|
var chunkTZHT7NZU_js = require('./chunk-TZHT7NZU.js');
|
|
15
|
-
var
|
|
17
|
+
var chunkYDTBGEAB_js = require('./chunk-YDTBGEAB.js');
|
|
16
18
|
var chunkHS3MAW3G_js = require('./chunk-HS3MAW3G.js');
|
|
17
19
|
var chunkQWDKSY6Y_js = require('./chunk-QWDKSY6Y.js');
|
|
18
20
|
var chunk3R7PT3JG_js = require('./chunk-3R7PT3JG.js');
|
|
19
21
|
var chunkDS4LM7OS_js = require('./chunk-DS4LM7OS.js');
|
|
20
22
|
var chunkNCU5PY34_js = require('./chunk-NCU5PY34.js');
|
|
21
|
-
var
|
|
23
|
+
var chunkTE4WHZ4Q_js = require('./chunk-TE4WHZ4Q.js');
|
|
22
24
|
var chunkHN6B4TAW_js = require('./chunk-HN6B4TAW.js');
|
|
23
25
|
var chunkKZSGVMUG_js = require('./chunk-KZSGVMUG.js');
|
|
24
26
|
var chunkNBDPT3XQ_js = require('./chunk-NBDPT3XQ.js');
|
|
@@ -26,7 +28,7 @@ var chunkSCGN5H6D_js = require('./chunk-SCGN5H6D.js');
|
|
|
26
28
|
var chunk6ASRTUXO_js = require('./chunk-6ASRTUXO.js');
|
|
27
29
|
var chunkPG4I4NWO_js = require('./chunk-PG4I4NWO.js');
|
|
28
30
|
var chunkPRDIS2VR_js = require('./chunk-PRDIS2VR.js');
|
|
29
|
-
var
|
|
31
|
+
var chunkIRKM5UF4_js = require('./chunk-IRKM5UF4.js');
|
|
30
32
|
var chunkODUY7NXD_js = require('./chunk-ODUY7NXD.js');
|
|
31
33
|
var chunkYN4HPIRC_js = require('./chunk-YN4HPIRC.js');
|
|
32
34
|
var chunkMKOKWME3_js = require('./chunk-MKOKWME3.js');
|
|
@@ -34,7 +36,7 @@ var chunkDLOHAW74_js = require('./chunk-DLOHAW74.js');
|
|
|
34
36
|
var chunk77WKG2D7_js = require('./chunk-77WKG2D7.js');
|
|
35
37
|
var chunkU3XWNFHH_js = require('./chunk-U3XWNFHH.js');
|
|
36
38
|
var chunkW7DZZS6L_js = require('./chunk-W7DZZS6L.js');
|
|
37
|
-
var
|
|
39
|
+
var chunkTDGU5Y2P_js = require('./chunk-TDGU5Y2P.js');
|
|
38
40
|
var chunkIEHX4DU6_js = require('./chunk-IEHX4DU6.js');
|
|
39
41
|
var chunkS5TLUDNM_js = require('./chunk-S5TLUDNM.js');
|
|
40
42
|
var chunk7W3TFPIF_js = require('./chunk-7W3TFPIF.js');
|
|
@@ -42,27 +44,26 @@ var chunkN2Q4Z2FU_js = require('./chunk-N2Q4Z2FU.js');
|
|
|
42
44
|
var chunkS732LTPT_js = require('./chunk-S732LTPT.js');
|
|
43
45
|
var chunkC4RZBOKH_js = require('./chunk-C4RZBOKH.js');
|
|
44
46
|
var chunkKOO5ZXLD_js = require('./chunk-KOO5ZXLD.js');
|
|
45
|
-
var chunkIRKM5UF4_js = require('./chunk-IRKM5UF4.js');
|
|
46
47
|
var chunkP7GAKOCX_js = require('./chunk-P7GAKOCX.js');
|
|
48
|
+
var chunkIJIUUBFT_js = require('./chunk-IJIUUBFT.js');
|
|
47
49
|
var chunkT4AT3YCT_js = require('./chunk-T4AT3YCT.js');
|
|
48
50
|
var chunkAIA3NHCK_js = require('./chunk-AIA3NHCK.js');
|
|
49
51
|
var chunkE24VNM6S_js = require('./chunk-E24VNM6S.js');
|
|
50
52
|
var chunkXXC2YD3D_js = require('./chunk-XXC2YD3D.js');
|
|
51
53
|
var chunkVWFY24XF_js = require('./chunk-VWFY24XF.js');
|
|
52
54
|
var chunkT5FLQQP6_js = require('./chunk-T5FLQQP6.js');
|
|
53
|
-
var
|
|
55
|
+
var chunk5A3MVRZJ_js = require('./chunk-5A3MVRZJ.js');
|
|
54
56
|
var chunkZ5S7LHMY_js = require('./chunk-Z5S7LHMY.js');
|
|
55
|
-
var chunkPND5YKFN_js = require('./chunk-PND5YKFN.js');
|
|
56
57
|
var chunk6EG6EAHW_js = require('./chunk-6EG6EAHW.js');
|
|
58
|
+
var chunkPND5YKFN_js = require('./chunk-PND5YKFN.js');
|
|
57
59
|
var chunkH3JNRTAI_js = require('./chunk-H3JNRTAI.js');
|
|
58
60
|
var chunkYZTVHCLK_js = require('./chunk-YZTVHCLK.js');
|
|
59
|
-
var chunkMY6BYO5F_js = require('./chunk-MY6BYO5F.js');
|
|
60
61
|
var chunkZAUYE2EI_js = require('./chunk-ZAUYE2EI.js');
|
|
61
|
-
var
|
|
62
|
-
var chunkMCF3EQTV_js = require('./chunk-MCF3EQTV.js');
|
|
62
|
+
var chunkMY6BYO5F_js = require('./chunk-MY6BYO5F.js');
|
|
63
63
|
var chunkWBRVUWGC_js = require('./chunk-WBRVUWGC.js');
|
|
64
|
-
var
|
|
64
|
+
var chunkMCF3EQTV_js = require('./chunk-MCF3EQTV.js');
|
|
65
65
|
var chunkNHB2TI2B_js = require('./chunk-NHB2TI2B.js');
|
|
66
|
+
var chunkEY4ZIR3P_js = require('./chunk-EY4ZIR3P.js');
|
|
66
67
|
var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
|
|
67
68
|
var React = require('react');
|
|
68
69
|
var classVarianceAuthority = require('class-variance-authority');
|
|
@@ -483,6 +484,14 @@ function MobileBookingBar({
|
|
|
483
484
|
);
|
|
484
485
|
}
|
|
485
486
|
|
|
487
|
+
Object.defineProperty(exports, "Toast", {
|
|
488
|
+
enumerable: true,
|
|
489
|
+
get: function () { return chunkVTELEOT7_js.Toast; }
|
|
490
|
+
});
|
|
491
|
+
Object.defineProperty(exports, "toastVariants", {
|
|
492
|
+
enumerable: true,
|
|
493
|
+
get: function () { return chunkVTELEOT7_js.toastVariants; }
|
|
494
|
+
});
|
|
486
495
|
Object.defineProperty(exports, "Toggle", {
|
|
487
496
|
enumerable: true,
|
|
488
497
|
get: function () { return chunkDTIYZ3TQ_js.Toggle; }
|
|
@@ -495,6 +504,14 @@ Object.defineProperty(exports, "VerticalMarquee", {
|
|
|
495
504
|
enumerable: true,
|
|
496
505
|
get: function () { return chunkN3JU7JS7_js.VerticalMarquee; }
|
|
497
506
|
});
|
|
507
|
+
Object.defineProperty(exports, "Spinner", {
|
|
508
|
+
enumerable: true,
|
|
509
|
+
get: function () { return chunkXHRDPJTF_js.Spinner; }
|
|
510
|
+
});
|
|
511
|
+
Object.defineProperty(exports, "spinnerVariants", {
|
|
512
|
+
enumerable: true,
|
|
513
|
+
get: function () { return chunkXHRDPJTF_js.spinnerVariants; }
|
|
514
|
+
});
|
|
498
515
|
Object.defineProperty(exports, "StatCard", {
|
|
499
516
|
enumerable: true,
|
|
500
517
|
get: function () { return chunkTT7L3ZU7_js.StatCard; }
|
|
@@ -543,13 +560,9 @@ Object.defineProperty(exports, "textareaVariants", {
|
|
|
543
560
|
enumerable: true,
|
|
544
561
|
get: function () { return chunkL7OYR6U3_js.textareaVariants; }
|
|
545
562
|
});
|
|
546
|
-
Object.defineProperty(exports, "
|
|
547
|
-
enumerable: true,
|
|
548
|
-
get: function () { return chunkVTELEOT7_js.Toast; }
|
|
549
|
-
});
|
|
550
|
-
Object.defineProperty(exports, "toastVariants", {
|
|
563
|
+
Object.defineProperty(exports, "RadioGroup", {
|
|
551
564
|
enumerable: true,
|
|
552
|
-
get: function () { return
|
|
565
|
+
get: function () { return chunkGXKON34B_js.RadioGroup; }
|
|
553
566
|
});
|
|
554
567
|
Object.defineProperty(exports, "Rating", {
|
|
555
568
|
enumerable: true,
|
|
@@ -557,11 +570,11 @@ Object.defineProperty(exports, "Rating", {
|
|
|
557
570
|
});
|
|
558
571
|
Object.defineProperty(exports, "RoomTypeCard", {
|
|
559
572
|
enumerable: true,
|
|
560
|
-
get: function () { return
|
|
573
|
+
get: function () { return chunkYDTBGEAB_js.RoomTypeCard; }
|
|
561
574
|
});
|
|
562
575
|
Object.defineProperty(exports, "RoomTypeCardSkeleton", {
|
|
563
576
|
enumerable: true,
|
|
564
|
-
get: function () { return
|
|
577
|
+
get: function () { return chunkYDTBGEAB_js.RoomTypeCardSkeleton; }
|
|
565
578
|
});
|
|
566
579
|
Object.defineProperty(exports, "SearchBar", {
|
|
567
580
|
enumerable: true,
|
|
@@ -599,13 +612,9 @@ Object.defineProperty(exports, "SkeletonText", {
|
|
|
599
612
|
enumerable: true,
|
|
600
613
|
get: function () { return chunkNCU5PY34_js.SkeletonText; }
|
|
601
614
|
});
|
|
602
|
-
Object.defineProperty(exports, "
|
|
603
|
-
enumerable: true,
|
|
604
|
-
get: function () { return chunkXHRDPJTF_js.Spinner; }
|
|
605
|
-
});
|
|
606
|
-
Object.defineProperty(exports, "spinnerVariants", {
|
|
615
|
+
Object.defineProperty(exports, "LoadingOverlay", {
|
|
607
616
|
enumerable: true,
|
|
608
|
-
get: function () { return
|
|
617
|
+
get: function () { return chunkTE4WHZ4Q_js.LoadingOverlay; }
|
|
609
618
|
});
|
|
610
619
|
Object.defineProperty(exports, "MegaMenu", {
|
|
611
620
|
enumerable: true,
|
|
@@ -647,9 +656,9 @@ Object.defineProperty(exports, "promoBannerVariants", {
|
|
|
647
656
|
enumerable: true,
|
|
648
657
|
get: function () { return chunkPRDIS2VR_js.promoBannerVariants; }
|
|
649
658
|
});
|
|
650
|
-
Object.defineProperty(exports, "
|
|
659
|
+
Object.defineProperty(exports, "Header", {
|
|
651
660
|
enumerable: true,
|
|
652
|
-
get: function () { return
|
|
661
|
+
get: function () { return chunkIRKM5UF4_js.Header; }
|
|
653
662
|
});
|
|
654
663
|
Object.defineProperty(exports, "HotelCard", {
|
|
655
664
|
enumerable: true,
|
|
@@ -687,9 +696,9 @@ Object.defineProperty(exports, "LinkCard", {
|
|
|
687
696
|
enumerable: true,
|
|
688
697
|
get: function () { return chunkW7DZZS6L_js.LinkCard; }
|
|
689
698
|
});
|
|
690
|
-
Object.defineProperty(exports, "
|
|
699
|
+
Object.defineProperty(exports, "DualRangeSlider", {
|
|
691
700
|
enumerable: true,
|
|
692
|
-
get: function () { return
|
|
701
|
+
get: function () { return chunkTDGU5Y2P_js.DualRangeSlider; }
|
|
693
702
|
});
|
|
694
703
|
Object.defineProperty(exports, "EmptyState", {
|
|
695
704
|
enumerable: true,
|
|
@@ -719,14 +728,14 @@ Object.defineProperty(exports, "GuestPicker", {
|
|
|
719
728
|
enumerable: true,
|
|
720
729
|
get: function () { return chunkKOO5ZXLD_js.GuestPicker; }
|
|
721
730
|
});
|
|
722
|
-
Object.defineProperty(exports, "Header", {
|
|
723
|
-
enumerable: true,
|
|
724
|
-
get: function () { return chunkIRKM5UF4_js.Header; }
|
|
725
|
-
});
|
|
726
731
|
Object.defineProperty(exports, "Carousel", {
|
|
727
732
|
enumerable: true,
|
|
728
733
|
get: function () { return chunkP7GAKOCX_js.Carousel; }
|
|
729
734
|
});
|
|
735
|
+
Object.defineProperty(exports, "Checkbox", {
|
|
736
|
+
enumerable: true,
|
|
737
|
+
get: function () { return chunkIJIUUBFT_js.Checkbox; }
|
|
738
|
+
});
|
|
730
739
|
Object.defineProperty(exports, "Counter", {
|
|
731
740
|
enumerable: true,
|
|
732
741
|
get: function () { return chunkT4AT3YCT_js.Counter; }
|
|
@@ -755,9 +764,9 @@ Object.defineProperty(exports, "DropdownMenu", {
|
|
|
755
764
|
enumerable: true,
|
|
756
765
|
get: function () { return chunkT5FLQQP6_js.DropdownMenu; }
|
|
757
766
|
});
|
|
758
|
-
Object.defineProperty(exports, "
|
|
767
|
+
Object.defineProperty(exports, "AnchorTabs", {
|
|
759
768
|
enumerable: true,
|
|
760
|
-
get: function () { return
|
|
769
|
+
get: function () { return chunk5A3MVRZJ_js.AnchorTabs; }
|
|
761
770
|
});
|
|
762
771
|
Object.defineProperty(exports, "Badge", {
|
|
763
772
|
enumerable: true,
|
|
@@ -767,10 +776,6 @@ Object.defineProperty(exports, "badgeVariants", {
|
|
|
767
776
|
enumerable: true,
|
|
768
777
|
get: function () { return chunkZ5S7LHMY_js.badgeVariants; }
|
|
769
778
|
});
|
|
770
|
-
Object.defineProperty(exports, "BottomNavBar", {
|
|
771
|
-
enumerable: true,
|
|
772
|
-
get: function () { return chunkPND5YKFN_js.BottomNavBar; }
|
|
773
|
-
});
|
|
774
779
|
Object.defineProperty(exports, "Banner", {
|
|
775
780
|
enumerable: true,
|
|
776
781
|
get: function () { return chunk6EG6EAHW_js.Banner; }
|
|
@@ -779,6 +784,10 @@ Object.defineProperty(exports, "bannerVariants", {
|
|
|
779
784
|
enumerable: true,
|
|
780
785
|
get: function () { return chunk6EG6EAHW_js.bannerVariants; }
|
|
781
786
|
});
|
|
787
|
+
Object.defineProperty(exports, "BottomNavBar", {
|
|
788
|
+
enumerable: true,
|
|
789
|
+
get: function () { return chunkPND5YKFN_js.BottomNavBar; }
|
|
790
|
+
});
|
|
782
791
|
Object.defineProperty(exports, "Breadcrumb", {
|
|
783
792
|
enumerable: true,
|
|
784
793
|
get: function () { return chunkH3JNRTAI_js.Breadcrumb; }
|
|
@@ -795,10 +804,6 @@ Object.defineProperty(exports, "buttonVariants", {
|
|
|
795
804
|
enumerable: true,
|
|
796
805
|
get: function () { return chunkYZTVHCLK_js.buttonVariants; }
|
|
797
806
|
});
|
|
798
|
-
Object.defineProperty(exports, "CardList", {
|
|
799
|
-
enumerable: true,
|
|
800
|
-
get: function () { return chunkMY6BYO5F_js.CardList; }
|
|
801
|
-
});
|
|
802
807
|
Object.defineProperty(exports, "Card", {
|
|
803
808
|
enumerable: true,
|
|
804
809
|
get: function () { return chunkZAUYE2EI_js.Card; }
|
|
@@ -827,21 +832,17 @@ Object.defineProperty(exports, "cardVariants", {
|
|
|
827
832
|
enumerable: true,
|
|
828
833
|
get: function () { return chunkZAUYE2EI_js.cardVariants; }
|
|
829
834
|
});
|
|
830
|
-
Object.defineProperty(exports, "
|
|
831
|
-
enumerable: true,
|
|
832
|
-
get: function () { return chunkIJIUUBFT_js.Checkbox; }
|
|
833
|
-
});
|
|
834
|
-
Object.defineProperty(exports, "Accordion", {
|
|
835
|
+
Object.defineProperty(exports, "CardList", {
|
|
835
836
|
enumerable: true,
|
|
836
|
-
get: function () { return
|
|
837
|
+
get: function () { return chunkMY6BYO5F_js.CardList; }
|
|
837
838
|
});
|
|
838
839
|
Object.defineProperty(exports, "Alert", {
|
|
839
840
|
enumerable: true,
|
|
840
841
|
get: function () { return chunkWBRVUWGC_js.Alert; }
|
|
841
842
|
});
|
|
842
|
-
Object.defineProperty(exports, "
|
|
843
|
+
Object.defineProperty(exports, "Accordion", {
|
|
843
844
|
enumerable: true,
|
|
844
|
-
get: function () { return
|
|
845
|
+
get: function () { return chunkMCF3EQTV_js.Accordion; }
|
|
845
846
|
});
|
|
846
847
|
Object.defineProperty(exports, "Autocomplete", {
|
|
847
848
|
enumerable: true,
|
|
@@ -851,6 +852,10 @@ Object.defineProperty(exports, "autocompleteInputVariants", {
|
|
|
851
852
|
enumerable: true,
|
|
852
853
|
get: function () { return chunkNHB2TI2B_js.autocompleteInputVariants; }
|
|
853
854
|
});
|
|
855
|
+
Object.defineProperty(exports, "Avatar", {
|
|
856
|
+
enumerable: true,
|
|
857
|
+
get: function () { return chunkEY4ZIR3P_js.Avatar; }
|
|
858
|
+
});
|
|
854
859
|
Object.defineProperty(exports, "cn", {
|
|
855
860
|
enumerable: true,
|
|
856
861
|
get: function () { return chunkADIDI7AJ_js.cn; }
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
export { Toast, toastVariants } from './chunk-YVTUUNAX.mjs';
|
|
1
2
|
export { Toggle } from './chunk-2AB5ZHY5.mjs';
|
|
2
3
|
export { Tooltip } from './chunk-2MJTZ6RR.mjs';
|
|
3
4
|
export { VerticalMarquee } from './chunk-JP5ZR2HI.mjs';
|
|
5
|
+
export { Spinner, spinnerVariants } from './chunk-NCSFXSOZ.mjs';
|
|
4
6
|
export { StatCard } from './chunk-O2W7NR33.mjs';
|
|
5
7
|
export { StatusBadge, statusBadgeVariants } from './chunk-FZ7UNXSC.mjs';
|
|
6
8
|
export { Stepper } from './chunk-2ASKBL63.mjs';
|
|
@@ -8,15 +10,15 @@ export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-DMCMWO
|
|
|
8
10
|
export { Tabs } from './chunk-VOZPGXQD.mjs';
|
|
9
11
|
export { Tag, tagVariants } from './chunk-WOG6V7OW.mjs';
|
|
10
12
|
export { Textarea, textareaVariants } from './chunk-ZZ4EWC53.mjs';
|
|
11
|
-
export {
|
|
13
|
+
export { RadioGroup } from './chunk-F2BUMJYW.mjs';
|
|
12
14
|
export { Rating } from './chunk-SGDC4IVX.mjs';
|
|
13
|
-
export { RoomTypeCard, RoomTypeCardSkeleton } from './chunk-
|
|
15
|
+
export { RoomTypeCard, RoomTypeCardSkeleton } from './chunk-QJDKVDK2.mjs';
|
|
14
16
|
export { SearchBar } from './chunk-KQK7LFWM.mjs';
|
|
15
17
|
export { SegmentedControl } from './chunk-36Y7UU32.mjs';
|
|
16
18
|
export { Select, selectVariants } from './chunk-333YD5QI.mjs';
|
|
17
19
|
export { Sidebar } from './chunk-MPL35D5G.mjs';
|
|
18
20
|
export { Skeleton, SkeletonCircle, SkeletonImage, SkeletonText } from './chunk-PAHSQMXV.mjs';
|
|
19
|
-
export {
|
|
21
|
+
export { LoadingOverlay } from './chunk-WVEJS2J2.mjs';
|
|
20
22
|
export { MegaMenu } from './chunk-EUEM2D5M.mjs';
|
|
21
23
|
export { MobileMenu } from './chunk-R4DC7XPP.mjs';
|
|
22
24
|
export { Modal } from './chunk-74B2EGKT.mjs';
|
|
@@ -24,7 +26,7 @@ export { Pagination } from './chunk-XQVODPHL.mjs';
|
|
|
24
26
|
export { PriceDisplay } from './chunk-DGEXT7PN.mjs';
|
|
25
27
|
export { ProgressBar, progressBarVariants, progressFillVariants } from './chunk-UGYMWWKT.mjs';
|
|
26
28
|
export { PromoBanner, promoBannerVariants } from './chunk-FNDR3WOZ.mjs';
|
|
27
|
-
export {
|
|
29
|
+
export { Header } from './chunk-PPDKQ3FF.mjs';
|
|
28
30
|
export { HotelCard } from './chunk-PXHZ4CXG.mjs';
|
|
29
31
|
export { IconBadge, iconBadgeVariants } from './chunk-I4WCNTNP.mjs';
|
|
30
32
|
export { ImageGallery } from './chunk-QU6ZRLKO.mjs';
|
|
@@ -32,7 +34,7 @@ export { ImageWithFallback } from './chunk-BUXVK2HE.mjs';
|
|
|
32
34
|
export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
|
|
33
35
|
export { Lightbox } from './chunk-GBWVIY3C.mjs';
|
|
34
36
|
export { LinkCard } from './chunk-UYDZKAGZ.mjs';
|
|
35
|
-
export {
|
|
37
|
+
export { DualRangeSlider } from './chunk-ERL3WXNY.mjs';
|
|
36
38
|
export { EmptyState } from './chunk-OCUHCDAQ.mjs';
|
|
37
39
|
export { ErrorBoundary } from './chunk-5257MWFI.mjs';
|
|
38
40
|
export { FilterAccordion } from './chunk-VQVRKRSM.mjs';
|
|
@@ -40,27 +42,26 @@ export { FilterPill } from './chunk-TNWMTKNR.mjs';
|
|
|
40
42
|
export { FloatingDock } from './chunk-PBDPZTHK.mjs';
|
|
41
43
|
export { Footer } from './chunk-SZ3SV4SJ.mjs';
|
|
42
44
|
export { GuestPicker } from './chunk-EJ7LDW7E.mjs';
|
|
43
|
-
export { Header } from './chunk-PPDKQ3FF.mjs';
|
|
44
45
|
export { Carousel } from './chunk-OOPP4ES2.mjs';
|
|
46
|
+
export { Checkbox } from './chunk-EEIPCJQ2.mjs';
|
|
45
47
|
export { Counter } from './chunk-LRNSVRUN.mjs';
|
|
46
48
|
export { DatePickerInput, DateRangePicker } from './chunk-FL3GD5FJ.mjs';
|
|
47
49
|
export { DetailList } from './chunk-N6THLJIG.mjs';
|
|
48
50
|
export { Divider } from './chunk-E4B6LXK7.mjs';
|
|
49
51
|
export { Drawer } from './chunk-ZLF7IL3Y.mjs';
|
|
50
52
|
export { DropdownMenu } from './chunk-Q7BKR6O7.mjs';
|
|
51
|
-
export {
|
|
53
|
+
export { AnchorTabs } from './chunk-PU4CWOWU.mjs';
|
|
52
54
|
export { Badge, badgeVariants } from './chunk-XZU2SISM.mjs';
|
|
53
|
-
export { BottomNavBar } from './chunk-UQRQZLMQ.mjs';
|
|
54
55
|
export { Banner, bannerVariants } from './chunk-LFIZX2S6.mjs';
|
|
56
|
+
export { BottomNavBar } from './chunk-UQRQZLMQ.mjs';
|
|
55
57
|
export { Breadcrumb, breadcrumbVariants } from './chunk-UKCH6RYL.mjs';
|
|
56
58
|
export { Button, buttonVariants } from './chunk-4U5MNA3B.mjs';
|
|
57
|
-
export { CardList } from './chunk-RJWHPHHX.mjs';
|
|
58
59
|
export { Card, CardContent, CardDescription, CardImage, CardTitle, cardImageVariants, cardVariants } from './chunk-V5J2XLPD.mjs';
|
|
59
|
-
export {
|
|
60
|
-
export { Accordion } from './chunk-NZ7GF6RF.mjs';
|
|
60
|
+
export { CardList } from './chunk-RJWHPHHX.mjs';
|
|
61
61
|
export { Alert } from './chunk-BQWVWK74.mjs';
|
|
62
|
-
export {
|
|
62
|
+
export { Accordion } from './chunk-NZ7GF6RF.mjs';
|
|
63
63
|
export { Autocomplete, autocompleteInputVariants } from './chunk-B47HQHX3.mjs';
|
|
64
|
+
export { Avatar } from './chunk-2POGTS27.mjs';
|
|
64
65
|
import { cn } from './chunk-IMKLN273.mjs';
|
|
65
66
|
export { cn } from './chunk-IMKLN273.mjs';
|
|
66
67
|
import * as React from 'react';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dododog/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "React UI component library for DodoDog — pet-friendly travel platform",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,6 +28,11 @@
|
|
|
28
28
|
"import": "./dist/components/Accordion/index.mjs",
|
|
29
29
|
"require": "./dist/components/Accordion/index.js"
|
|
30
30
|
},
|
|
31
|
+
"./anchor-tabs": {
|
|
32
|
+
"types": "./dist/components/AnchorTabs/index.d.ts",
|
|
33
|
+
"import": "./dist/components/AnchorTabs/index.mjs",
|
|
34
|
+
"require": "./dist/components/AnchorTabs/index.js"
|
|
35
|
+
},
|
|
31
36
|
"./alert": {
|
|
32
37
|
"types": "./dist/components/Alert/index.d.ts",
|
|
33
38
|
"import": "./dist/components/Alert/index.mjs",
|