@dododog/ui 0.3.0 → 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.
@@ -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 };
@@ -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 };
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunk5A3MVRZJ_js = require('../../chunk-5A3MVRZJ.js');
4
+ require('../../chunk-ADIDI7AJ.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "AnchorTabs", {
9
+ enumerable: true,
10
+ get: function () { return chunk5A3MVRZJ_js.AnchorTabs; }
11
+ });
@@ -0,0 +1,2 @@
1
+ export { AnchorTabs } from '../../chunk-PU4CWOWU.mjs';
2
+ import '../../chunk-IMKLN273.mjs';
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,7 +12,7 @@ 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 chunkVTELEOT7_js = require('./chunk-VTELEOT7.js');
15
+ var chunkGXKON34B_js = require('./chunk-GXKON34B.js');
14
16
  var chunkTZHT7NZU_js = require('./chunk-TZHT7NZU.js');
15
17
  var chunk36JNXXGH_js = require('./chunk-36JNXXGH.js');
16
18
  var chunkHS3MAW3G_js = require('./chunk-HS3MAW3G.js');
@@ -18,7 +20,7 @@ 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 chunkXHRDPJTF_js = require('./chunk-XHRDPJTF.js');
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,42 +28,41 @@ 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 chunkGXKON34B_js = require('./chunk-GXKON34B.js');
30
- var chunkODUY7NXD_js = require('./chunk-ODUY7NXD.js');
31
+ var chunkIRKM5UF4_js = require('./chunk-IRKM5UF4.js');
31
32
  var chunkYN4HPIRC_js = require('./chunk-YN4HPIRC.js');
33
+ var chunkODUY7NXD_js = require('./chunk-ODUY7NXD.js');
32
34
  var chunkMKOKWME3_js = require('./chunk-MKOKWME3.js');
33
35
  var chunkDLOHAW74_js = require('./chunk-DLOHAW74.js');
34
- var chunk77WKG2D7_js = require('./chunk-77WKG2D7.js');
35
36
  var chunkU3XWNFHH_js = require('./chunk-U3XWNFHH.js');
37
+ var chunk77WKG2D7_js = require('./chunk-77WKG2D7.js');
36
38
  var chunkW7DZZS6L_js = require('./chunk-W7DZZS6L.js');
37
- var chunkTE4WHZ4Q_js = require('./chunk-TE4WHZ4Q.js');
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');
41
- var chunkN2Q4Z2FU_js = require('./chunk-N2Q4Z2FU.js');
42
43
  var chunkS732LTPT_js = require('./chunk-S732LTPT.js');
44
+ var chunkN2Q4Z2FU_js = require('./chunk-N2Q4Z2FU.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');
47
- var chunkT4AT3YCT_js = require('./chunk-T4AT3YCT.js');
48
- var chunkAIA3NHCK_js = require('./chunk-AIA3NHCK.js');
48
+ var chunkIJIUUBFT_js = require('./chunk-IJIUUBFT.js');
49
49
  var chunkE24VNM6S_js = require('./chunk-E24VNM6S.js');
50
50
  var chunkXXC2YD3D_js = require('./chunk-XXC2YD3D.js');
51
+ var chunkAIA3NHCK_js = require('./chunk-AIA3NHCK.js');
52
+ var chunkT4AT3YCT_js = require('./chunk-T4AT3YCT.js');
51
53
  var chunkVWFY24XF_js = require('./chunk-VWFY24XF.js');
52
54
  var chunkT5FLQQP6_js = require('./chunk-T5FLQQP6.js');
53
- var chunkTDGU5Y2P_js = require('./chunk-TDGU5Y2P.js');
55
+ var chunkEY4ZIR3P_js = require('./chunk-EY4ZIR3P.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 chunkIJIUUBFT_js = require('./chunk-IJIUUBFT.js');
62
+ var chunkMY6BYO5F_js = require('./chunk-MY6BYO5F.js');
62
63
  var chunkMCF3EQTV_js = require('./chunk-MCF3EQTV.js');
63
64
  var chunkWBRVUWGC_js = require('./chunk-WBRVUWGC.js');
64
- var chunkEY4ZIR3P_js = require('./chunk-EY4ZIR3P.js');
65
+ var chunk5A3MVRZJ_js = require('./chunk-5A3MVRZJ.js');
65
66
  var chunkNHB2TI2B_js = require('./chunk-NHB2TI2B.js');
66
67
  var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
67
68
  var React = require('react');
@@ -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, "Toast", {
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 chunkVTELEOT7_js.toastVariants; }
565
+ get: function () { return chunkGXKON34B_js.RadioGroup; }
553
566
  });
554
567
  Object.defineProperty(exports, "Rating", {
555
568
  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, "Spinner", {
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 chunkXHRDPJTF_js.spinnerVariants; }
617
+ get: function () { return chunkTE4WHZ4Q_js.LoadingOverlay; }
609
618
  });
610
619
  Object.defineProperty(exports, "MegaMenu", {
611
620
  enumerable: true,
@@ -647,13 +656,9 @@ Object.defineProperty(exports, "promoBannerVariants", {
647
656
  enumerable: true,
648
657
  get: function () { return chunkPRDIS2VR_js.promoBannerVariants; }
649
658
  });
650
- Object.defineProperty(exports, "RadioGroup", {
651
- enumerable: true,
652
- get: function () { return chunkGXKON34B_js.RadioGroup; }
653
- });
654
- Object.defineProperty(exports, "HotelCard", {
659
+ Object.defineProperty(exports, "Header", {
655
660
  enumerable: true,
656
- get: function () { return chunkODUY7NXD_js.HotelCard; }
661
+ get: function () { return chunkIRKM5UF4_js.Header; }
657
662
  });
658
663
  Object.defineProperty(exports, "IconBadge", {
659
664
  enumerable: true,
@@ -663,6 +668,10 @@ Object.defineProperty(exports, "iconBadgeVariants", {
663
668
  enumerable: true,
664
669
  get: function () { return chunkYN4HPIRC_js.iconBadgeVariants; }
665
670
  });
671
+ Object.defineProperty(exports, "HotelCard", {
672
+ enumerable: true,
673
+ get: function () { return chunkODUY7NXD_js.HotelCard; }
674
+ });
666
675
  Object.defineProperty(exports, "ImageGallery", {
667
676
  enumerable: true,
668
677
  get: function () { return chunkMKOKWME3_js.ImageGallery; }
@@ -671,6 +680,10 @@ Object.defineProperty(exports, "ImageWithFallback", {
671
680
  enumerable: true,
672
681
  get: function () { return chunkDLOHAW74_js.ImageWithFallback; }
673
682
  });
683
+ Object.defineProperty(exports, "Lightbox", {
684
+ enumerable: true,
685
+ get: function () { return chunkU3XWNFHH_js.Lightbox; }
686
+ });
674
687
  Object.defineProperty(exports, "Input", {
675
688
  enumerable: true,
676
689
  get: function () { return chunk77WKG2D7_js.Input; }
@@ -679,17 +692,13 @@ Object.defineProperty(exports, "inputVariants", {
679
692
  enumerable: true,
680
693
  get: function () { return chunk77WKG2D7_js.inputVariants; }
681
694
  });
682
- Object.defineProperty(exports, "Lightbox", {
683
- enumerable: true,
684
- get: function () { return chunkU3XWNFHH_js.Lightbox; }
685
- });
686
695
  Object.defineProperty(exports, "LinkCard", {
687
696
  enumerable: true,
688
697
  get: function () { return chunkW7DZZS6L_js.LinkCard; }
689
698
  });
690
- Object.defineProperty(exports, "LoadingOverlay", {
699
+ Object.defineProperty(exports, "DualRangeSlider", {
691
700
  enumerable: true,
692
- get: function () { return chunkTE4WHZ4Q_js.LoadingOverlay; }
701
+ get: function () { return chunkTDGU5Y2P_js.DualRangeSlider; }
693
702
  });
694
703
  Object.defineProperty(exports, "EmptyState", {
695
704
  enumerable: true,
@@ -703,14 +712,14 @@ Object.defineProperty(exports, "FilterAccordion", {
703
712
  enumerable: true,
704
713
  get: function () { return chunk7W3TFPIF_js.FilterAccordion; }
705
714
  });
706
- Object.defineProperty(exports, "FilterPill", {
707
- enumerable: true,
708
- get: function () { return chunkN2Q4Z2FU_js.FilterPill; }
709
- });
710
715
  Object.defineProperty(exports, "FloatingDock", {
711
716
  enumerable: true,
712
717
  get: function () { return chunkS732LTPT_js.FloatingDock; }
713
718
  });
719
+ Object.defineProperty(exports, "FilterPill", {
720
+ enumerable: true,
721
+ get: function () { return chunkN2Q4Z2FU_js.FilterPill; }
722
+ });
714
723
  Object.defineProperty(exports, "Footer", {
715
724
  enumerable: true,
716
725
  get: function () { return chunkC4RZBOKH_js.Footer; }
@@ -719,17 +728,21 @@ 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
  });
730
- Object.defineProperty(exports, "Counter", {
735
+ Object.defineProperty(exports, "Checkbox", {
731
736
  enumerable: true,
732
- get: function () { return chunkT4AT3YCT_js.Counter; }
737
+ get: function () { return chunkIJIUUBFT_js.Checkbox; }
738
+ });
739
+ Object.defineProperty(exports, "DetailList", {
740
+ enumerable: true,
741
+ get: function () { return chunkE24VNM6S_js.DetailList; }
742
+ });
743
+ Object.defineProperty(exports, "Divider", {
744
+ enumerable: true,
745
+ get: function () { return chunkXXC2YD3D_js.Divider; }
733
746
  });
734
747
  Object.defineProperty(exports, "DatePickerInput", {
735
748
  enumerable: true,
@@ -739,13 +752,9 @@ Object.defineProperty(exports, "DateRangePicker", {
739
752
  enumerable: true,
740
753
  get: function () { return chunkAIA3NHCK_js.DateRangePicker; }
741
754
  });
742
- Object.defineProperty(exports, "DetailList", {
743
- enumerable: true,
744
- get: function () { return chunkE24VNM6S_js.DetailList; }
745
- });
746
- Object.defineProperty(exports, "Divider", {
755
+ Object.defineProperty(exports, "Counter", {
747
756
  enumerable: true,
748
- get: function () { return chunkXXC2YD3D_js.Divider; }
757
+ get: function () { return chunkT4AT3YCT_js.Counter; }
749
758
  });
750
759
  Object.defineProperty(exports, "Drawer", {
751
760
  enumerable: true,
@@ -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, "DualRangeSlider", {
767
+ Object.defineProperty(exports, "Avatar", {
759
768
  enumerable: true,
760
- get: function () { return chunkTDGU5Y2P_js.DualRangeSlider; }
769
+ get: function () { return chunkEY4ZIR3P_js.Avatar; }
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,9 +832,9 @@ Object.defineProperty(exports, "cardVariants", {
827
832
  enumerable: true,
828
833
  get: function () { return chunkZAUYE2EI_js.cardVariants; }
829
834
  });
830
- Object.defineProperty(exports, "Checkbox", {
835
+ Object.defineProperty(exports, "CardList", {
831
836
  enumerable: true,
832
- get: function () { return chunkIJIUUBFT_js.Checkbox; }
837
+ get: function () { return chunkMY6BYO5F_js.CardList; }
833
838
  });
834
839
  Object.defineProperty(exports, "Accordion", {
835
840
  enumerable: true,
@@ -839,9 +844,9 @@ Object.defineProperty(exports, "Alert", {
839
844
  enumerable: true,
840
845
  get: function () { return chunkWBRVUWGC_js.Alert; }
841
846
  });
842
- Object.defineProperty(exports, "Avatar", {
847
+ Object.defineProperty(exports, "AnchorTabs", {
843
848
  enumerable: true,
844
- get: function () { return chunkEY4ZIR3P_js.Avatar; }
849
+ get: function () { return chunk5A3MVRZJ_js.AnchorTabs; }
845
850
  });
846
851
  Object.defineProperty(exports, "Autocomplete", {
847
852
  enumerable: true,
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,7 +10,7 @@ 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 { Toast, toastVariants } from './chunk-YVTUUNAX.mjs';
13
+ export { RadioGroup } from './chunk-F2BUMJYW.mjs';
12
14
  export { Rating } from './chunk-SGDC4IVX.mjs';
13
15
  export { RoomTypeCard, RoomTypeCardSkeleton } from './chunk-XH2MVC4W.mjs';
14
16
  export { SearchBar } from './chunk-KQK7LFWM.mjs';
@@ -16,7 +18,7 @@ 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 { Spinner, spinnerVariants } from './chunk-NCSFXSOZ.mjs';
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,42 +26,41 @@ 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 { RadioGroup } from './chunk-F2BUMJYW.mjs';
28
- export { HotelCard } from './chunk-PXHZ4CXG.mjs';
29
+ export { Header } from './chunk-PPDKQ3FF.mjs';
29
30
  export { IconBadge, iconBadgeVariants } from './chunk-I4WCNTNP.mjs';
31
+ export { HotelCard } from './chunk-PXHZ4CXG.mjs';
30
32
  export { ImageGallery } from './chunk-QU6ZRLKO.mjs';
31
33
  export { ImageWithFallback } from './chunk-BUXVK2HE.mjs';
32
- export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
33
34
  export { Lightbox } from './chunk-GBWVIY3C.mjs';
35
+ export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
34
36
  export { LinkCard } from './chunk-UYDZKAGZ.mjs';
35
- export { LoadingOverlay } from './chunk-WVEJS2J2.mjs';
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';
39
- export { FilterPill } from './chunk-TNWMTKNR.mjs';
40
41
  export { FloatingDock } from './chunk-PBDPZTHK.mjs';
42
+ export { FilterPill } from './chunk-TNWMTKNR.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';
45
- export { Counter } from './chunk-LRNSVRUN.mjs';
46
- export { DatePickerInput, DateRangePicker } from './chunk-FL3GD5FJ.mjs';
46
+ export { Checkbox } from './chunk-EEIPCJQ2.mjs';
47
47
  export { DetailList } from './chunk-N6THLJIG.mjs';
48
48
  export { Divider } from './chunk-E4B6LXK7.mjs';
49
+ export { DatePickerInput, DateRangePicker } from './chunk-FL3GD5FJ.mjs';
50
+ export { Counter } from './chunk-LRNSVRUN.mjs';
49
51
  export { Drawer } from './chunk-ZLF7IL3Y.mjs';
50
52
  export { DropdownMenu } from './chunk-Q7BKR6O7.mjs';
51
- export { DualRangeSlider } from './chunk-ERL3WXNY.mjs';
53
+ export { Avatar } from './chunk-2POGTS27.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 { Checkbox } from './chunk-EEIPCJQ2.mjs';
60
+ export { CardList } from './chunk-RJWHPHHX.mjs';
60
61
  export { Accordion } from './chunk-NZ7GF6RF.mjs';
61
62
  export { Alert } from './chunk-BQWVWK74.mjs';
62
- export { Avatar } from './chunk-2POGTS27.mjs';
63
+ export { AnchorTabs } from './chunk-PU4CWOWU.mjs';
63
64
  export { Autocomplete, autocompleteInputVariants } from './chunk-B47HQHX3.mjs';
64
65
  import { cn } from './chunk-IMKLN273.mjs';
65
66
  export { cn } from './chunk-IMKLN273.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dododog/ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.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",