@dododog/ui 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/components/Accordion/index.d.mts +24 -0
  2. package/dist/components/Accordion/index.d.ts +24 -0
  3. package/dist/components/Alert/index.d.mts +40 -0
  4. package/dist/components/Alert/index.d.ts +40 -0
  5. package/dist/components/AnchorTabs/index.d.mts +59 -0
  6. package/dist/components/AnchorTabs/index.d.ts +59 -0
  7. package/dist/components/Autocomplete/index.d.mts +27 -0
  8. package/dist/components/Autocomplete/index.d.ts +27 -0
  9. package/dist/components/Avatar/index.d.mts +13 -0
  10. package/dist/components/Avatar/index.d.ts +13 -0
  11. package/dist/components/Badge/index.d.mts +13 -0
  12. package/dist/components/Badge/index.d.ts +13 -0
  13. package/dist/components/Banner/index.d.mts +19 -0
  14. package/dist/components/Banner/index.d.ts +19 -0
  15. package/dist/components/BottomNavBar/index.d.mts +17 -0
  16. package/dist/components/BottomNavBar/index.d.ts +17 -0
  17. package/dist/components/Breadcrumb/index.d.mts +23 -0
  18. package/dist/components/Breadcrumb/index.d.ts +23 -0
  19. package/dist/components/Button/index.d.mts +17 -0
  20. package/dist/components/Button/index.d.ts +17 -0
  21. package/dist/components/Card/index.d.mts +30 -0
  22. package/dist/components/Card/index.d.ts +30 -0
  23. package/dist/components/CardList/index.d.mts +30 -0
  24. package/dist/components/CardList/index.d.ts +30 -0
  25. package/dist/components/Carousel/index.d.mts +15 -0
  26. package/dist/components/Carousel/index.d.ts +15 -0
  27. package/dist/components/Checkbox/index.d.mts +16 -0
  28. package/dist/components/Checkbox/index.d.ts +16 -0
  29. package/dist/components/Counter/index.d.mts +14 -0
  30. package/dist/components/Counter/index.d.ts +14 -0
  31. package/dist/components/DateRangePicker/index.d.mts +26 -0
  32. package/dist/components/DateRangePicker/index.d.ts +26 -0
  33. package/dist/components/DetailList/index.d.mts +23 -0
  34. package/dist/components/DetailList/index.d.ts +23 -0
  35. package/dist/components/Divider/index.d.mts +10 -0
  36. package/dist/components/Divider/index.d.ts +10 -0
  37. package/dist/components/Drawer/index.d.mts +13 -0
  38. package/dist/components/Drawer/index.d.ts +13 -0
  39. package/dist/components/DropdownMenu/index.d.mts +19 -0
  40. package/dist/components/DropdownMenu/index.d.ts +19 -0
  41. package/dist/components/DualRangeSlider/index.d.mts +26 -0
  42. package/dist/components/DualRangeSlider/index.d.ts +26 -0
  43. package/dist/components/EmptyState/index.d.mts +12 -0
  44. package/dist/components/EmptyState/index.d.ts +12 -0
  45. package/dist/components/ErrorBoundary/index.d.mts +21 -0
  46. package/dist/components/ErrorBoundary/index.d.ts +21 -0
  47. package/dist/components/FilterAccordion/index.d.mts +16 -0
  48. package/dist/components/FilterAccordion/index.d.ts +16 -0
  49. package/dist/components/FilterPill/index.d.mts +19 -0
  50. package/dist/components/FilterPill/index.d.ts +19 -0
  51. package/dist/components/FloatingDock/index.d.mts +65 -0
  52. package/dist/components/FloatingDock/index.d.ts +65 -0
  53. package/dist/components/Footer/index.d.mts +46 -0
  54. package/dist/components/Footer/index.d.ts +46 -0
  55. package/dist/components/GuestPicker/index.d.mts +31 -0
  56. package/dist/components/GuestPicker/index.d.ts +31 -0
  57. package/dist/components/Header/index.d.mts +37 -0
  58. package/dist/components/Header/index.d.ts +37 -0
  59. package/dist/components/HotelCard/index.d.mts +45 -0
  60. package/dist/components/HotelCard/index.d.ts +45 -0
  61. package/dist/components/IconBadge/index.d.mts +14 -0
  62. package/dist/components/IconBadge/index.d.ts +14 -0
  63. package/dist/components/ImageGallery/index.d.mts +16 -0
  64. package/dist/components/ImageGallery/index.d.ts +16 -0
  65. package/dist/components/ImageWithFallback/index.d.mts +17 -0
  66. package/dist/components/ImageWithFallback/index.d.ts +17 -0
  67. package/dist/components/Input/index.d.mts +18 -0
  68. package/dist/components/Input/index.d.ts +18 -0
  69. package/dist/components/Lightbox/index.d.mts +15 -0
  70. package/dist/components/Lightbox/index.d.ts +15 -0
  71. package/dist/components/LinkCard/index.d.mts +12 -0
  72. package/dist/components/LinkCard/index.d.ts +12 -0
  73. package/dist/components/LoadingOverlay/index.d.mts +12 -0
  74. package/dist/components/LoadingOverlay/index.d.ts +12 -0
  75. package/dist/components/MegaMenu/index.d.mts +52 -0
  76. package/dist/components/MegaMenu/index.d.ts +52 -0
  77. package/dist/components/MobileMenu/index.d.mts +35 -0
  78. package/dist/components/MobileMenu/index.d.ts +35 -0
  79. package/dist/components/Modal/index.d.mts +12 -0
  80. package/dist/components/Modal/index.d.ts +12 -0
  81. package/dist/components/Pagination/index.d.mts +13 -0
  82. package/dist/components/Pagination/index.d.ts +13 -0
  83. package/dist/components/PriceDisplay/index.d.mts +14 -0
  84. package/dist/components/PriceDisplay/index.d.ts +14 -0
  85. package/dist/components/ProgressBar/index.d.mts +19 -0
  86. package/dist/components/ProgressBar/index.d.ts +19 -0
  87. package/dist/components/PromoBanner/index.d.mts +39 -0
  88. package/dist/components/PromoBanner/index.d.ts +39 -0
  89. package/dist/components/RadioGroup/index.d.mts +21 -0
  90. package/dist/components/RadioGroup/index.d.ts +21 -0
  91. package/dist/components/Rating/index.d.mts +12 -0
  92. package/dist/components/Rating/index.d.ts +12 -0
  93. package/dist/components/RoomTypeCard/index.d.mts +102 -0
  94. package/dist/components/RoomTypeCard/index.d.ts +102 -0
  95. package/dist/components/SearchBar/index.d.mts +20 -0
  96. package/dist/components/SearchBar/index.d.ts +20 -0
  97. package/dist/components/SegmentedControl/index.d.mts +15 -0
  98. package/dist/components/SegmentedControl/index.d.ts +15 -0
  99. package/dist/components/Select/index.d.mts +26 -0
  100. package/dist/components/Select/index.d.ts +26 -0
  101. package/dist/components/Sidebar/index.d.mts +19 -0
  102. package/dist/components/Sidebar/index.d.ts +19 -0
  103. package/dist/components/SignInCallout/index.d.mts +26 -0
  104. package/dist/components/SignInCallout/index.d.ts +26 -0
  105. package/dist/components/Skeleton/index.d.mts +31 -0
  106. package/dist/components/Skeleton/index.d.ts +31 -0
  107. package/dist/components/Spinner/index.d.mts +13 -0
  108. package/dist/components/Spinner/index.d.ts +13 -0
  109. package/dist/components/StatCard/index.d.mts +15 -0
  110. package/dist/components/StatCard/index.d.ts +15 -0
  111. package/dist/components/StatusBadge/index.d.mts +16 -0
  112. package/dist/components/StatusBadge/index.d.ts +16 -0
  113. package/dist/components/Stepper/index.d.mts +16 -0
  114. package/dist/components/Stepper/index.d.ts +16 -0
  115. package/dist/components/Switch/index.d.mts +22 -0
  116. package/dist/components/Switch/index.d.ts +22 -0
  117. package/dist/components/Tabs/index.d.mts +18 -0
  118. package/dist/components/Tabs/index.d.ts +18 -0
  119. package/dist/components/Tag/index.d.mts +15 -0
  120. package/dist/components/Tag/index.d.ts +15 -0
  121. package/dist/components/Textarea/index.d.mts +16 -0
  122. package/dist/components/Textarea/index.d.ts +16 -0
  123. package/dist/components/Toast/index.d.mts +16 -0
  124. package/dist/components/Toast/index.d.ts +16 -0
  125. package/dist/components/Toggle/index.d.mts +13 -0
  126. package/dist/components/Toggle/index.d.ts +13 -0
  127. package/dist/components/Tooltip/index.d.mts +11 -0
  128. package/dist/components/Tooltip/index.d.ts +11 -0
  129. package/dist/components/VerticalMarquee/index.d.mts +16 -0
  130. package/dist/components/VerticalMarquee/index.d.ts +16 -0
  131. package/dist/index.d.mts +189 -0
  132. package/dist/index.d.ts +189 -0
  133. package/dist/index.js +54 -54
  134. package/dist/index.mjs +12 -12
  135. package/dist/tailwind-preset.d.mts +170 -0
  136. package/dist/tailwind-preset.d.ts +170 -0
  137. package/dist/tokens/index.d.mts +219 -0
  138. package/dist/tokens/index.d.ts +219 -0
  139. package/dist/typography-BUlhEnfy.d.mts +16 -0
  140. package/dist/typography-BUlhEnfy.d.ts +16 -0
  141. package/dist/utils/index.d.mts +5 -0
  142. package/dist/utils/index.d.ts +5 -0
  143. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ interface CarouselProps {
4
+ children: React.ReactNode[];
5
+ className?: string;
6
+ /** Show dot indicators. Default: true */
7
+ showDots?: boolean;
8
+ /** Show prev/next arrows. Default: true */
9
+ showArrows?: boolean;
10
+ /** Auto-play interval in ms. 0 = disabled. Default: 0 */
11
+ autoPlay?: number;
12
+ }
13
+ declare const Carousel: React.ForwardRefExoticComponent<CarouselProps & React.RefAttributes<HTMLDivElement>>;
14
+
15
+ export { Carousel, type CarouselProps };
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ interface CarouselProps {
4
+ children: React.ReactNode[];
5
+ className?: string;
6
+ /** Show dot indicators. Default: true */
7
+ showDots?: boolean;
8
+ /** Show prev/next arrows. Default: true */
9
+ showArrows?: boolean;
10
+ /** Auto-play interval in ms. 0 = disabled. Default: 0 */
11
+ autoPlay?: number;
12
+ }
13
+ declare const Carousel: React.ForwardRefExoticComponent<CarouselProps & React.RefAttributes<HTMLDivElement>>;
14
+
15
+ export { Carousel, type CarouselProps };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface CheckboxProps {
4
+ label?: React.ReactNode;
5
+ description?: string;
6
+ error?: string;
7
+ required?: boolean;
8
+ checked?: boolean;
9
+ onChange?: (checked: boolean) => void;
10
+ disabled?: boolean;
11
+ className?: string;
12
+ name?: string;
13
+ }
14
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
15
+
16
+ export { Checkbox, type CheckboxProps };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface CheckboxProps {
4
+ label?: React.ReactNode;
5
+ description?: string;
6
+ error?: string;
7
+ required?: boolean;
8
+ checked?: boolean;
9
+ onChange?: (checked: boolean) => void;
10
+ disabled?: boolean;
11
+ className?: string;
12
+ name?: string;
13
+ }
14
+ declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
15
+
16
+ export { Checkbox, type CheckboxProps };
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+
3
+ interface CounterProps {
4
+ value: number;
5
+ onChange?: (value: number) => void;
6
+ min?: number;
7
+ max?: number;
8
+ label?: string;
9
+ subtitle?: string;
10
+ className?: string;
11
+ }
12
+ declare const Counter: React.ForwardRefExoticComponent<CounterProps & React.RefAttributes<HTMLDivElement>>;
13
+
14
+ export { Counter, type CounterProps };
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+
3
+ interface CounterProps {
4
+ value: number;
5
+ onChange?: (value: number) => void;
6
+ min?: number;
7
+ max?: number;
8
+ label?: string;
9
+ subtitle?: string;
10
+ className?: string;
11
+ }
12
+ declare const Counter: React.ForwardRefExoticComponent<CounterProps & React.RefAttributes<HTMLDivElement>>;
13
+
14
+ export { Counter, type CounterProps };
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ interface DateRangePickerProps {
5
+ checkIn: Date | null;
6
+ checkOut: Date | null;
7
+ onCheckInChange: (date: Date | null) => void;
8
+ onCheckOutChange: (date: Date | null) => void;
9
+ isOpen: boolean;
10
+ onClose: () => void;
11
+ position?: "left" | "center" | "right";
12
+ minWidth?: number;
13
+ }
14
+ interface DatePickerInputProps {
15
+ label: string;
16
+ value: Date | null;
17
+ placeholder?: string;
18
+ isActive: boolean;
19
+ onClick: () => void;
20
+ onClear?: () => void;
21
+ showClear?: boolean;
22
+ }
23
+ declare function DatePickerInput({ label, value, placeholder, isActive, onClick, onClear, showClear, }: DatePickerInputProps): react_jsx_runtime.JSX.Element;
24
+ declare const DateRangePicker: React.ForwardRefExoticComponent<DateRangePickerProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { DatePickerInput, type DatePickerInputProps, DateRangePicker, type DateRangePickerProps };
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ interface DateRangePickerProps {
5
+ checkIn: Date | null;
6
+ checkOut: Date | null;
7
+ onCheckInChange: (date: Date | null) => void;
8
+ onCheckOutChange: (date: Date | null) => void;
9
+ isOpen: boolean;
10
+ onClose: () => void;
11
+ position?: "left" | "center" | "right";
12
+ minWidth?: number;
13
+ }
14
+ interface DatePickerInputProps {
15
+ label: string;
16
+ value: Date | null;
17
+ placeholder?: string;
18
+ isActive: boolean;
19
+ onClick: () => void;
20
+ onClear?: () => void;
21
+ showClear?: boolean;
22
+ }
23
+ declare function DatePickerInput({ label, value, placeholder, isActive, onClick, onClear, showClear, }: DatePickerInputProps): react_jsx_runtime.JSX.Element;
24
+ declare const DateRangePicker: React.ForwardRefExoticComponent<DateRangePickerProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { DatePickerInput, type DatePickerInputProps, DateRangePicker, type DateRangePickerProps };
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+
3
+ interface DetailItem {
4
+ label: string;
5
+ value: React.ReactNode;
6
+ icon?: React.ReactNode;
7
+ }
8
+ interface DetailListProps extends React.HTMLAttributes<HTMLDListElement> {
9
+ items: DetailItem[];
10
+ /**
11
+ * Layout direction. Default: "vertical".
12
+ * - "vertical" : label à gauche, valeur à droite (une ligne) ;
13
+ * - "horizontal" : items en colonnes côte à côte ;
14
+ * - "stacked" : icône + label en titre, valeur en dessous — pour les
15
+ * valeurs longues sur mobile (lisibilité).
16
+ */
17
+ direction?: "vertical" | "horizontal" | "stacked";
18
+ /** Show dividers between items. Default: true */
19
+ dividers?: boolean;
20
+ }
21
+ declare const DetailList: React.ForwardRefExoticComponent<DetailListProps & React.RefAttributes<HTMLDListElement>>;
22
+
23
+ export { type DetailItem, DetailList, type DetailListProps };
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+
3
+ interface DetailItem {
4
+ label: string;
5
+ value: React.ReactNode;
6
+ icon?: React.ReactNode;
7
+ }
8
+ interface DetailListProps extends React.HTMLAttributes<HTMLDListElement> {
9
+ items: DetailItem[];
10
+ /**
11
+ * Layout direction. Default: "vertical".
12
+ * - "vertical" : label à gauche, valeur à droite (une ligne) ;
13
+ * - "horizontal" : items en colonnes côte à côte ;
14
+ * - "stacked" : icône + label en titre, valeur en dessous — pour les
15
+ * valeurs longues sur mobile (lisibilité).
16
+ */
17
+ direction?: "vertical" | "horizontal" | "stacked";
18
+ /** Show dividers between items. Default: true */
19
+ dividers?: boolean;
20
+ }
21
+ declare const DetailList: React.ForwardRefExoticComponent<DetailListProps & React.RefAttributes<HTMLDListElement>>;
22
+
23
+ export { type DetailItem, DetailList, type DetailListProps };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+
3
+ interface DividerProps {
4
+ orientation?: "horizontal" | "vertical";
5
+ label?: string;
6
+ className?: string;
7
+ }
8
+ declare const Divider: React.ForwardRefExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement>>;
9
+
10
+ export { Divider, type DividerProps };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+
3
+ interface DividerProps {
4
+ orientation?: "horizontal" | "vertical";
5
+ label?: string;
6
+ className?: string;
7
+ }
8
+ declare const Divider: React.ForwardRefExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement>>;
9
+
10
+ export { Divider, type DividerProps };
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+
3
+ interface DrawerProps {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ children: React.ReactNode;
7
+ side?: "left" | "right";
8
+ title?: string;
9
+ className?: string;
10
+ }
11
+ declare const Drawer: React.ForwardRefExoticComponent<DrawerProps & React.RefAttributes<HTMLDivElement>>;
12
+
13
+ export { Drawer, type DrawerProps };
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+
3
+ interface DrawerProps {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ children: React.ReactNode;
7
+ side?: "left" | "right";
8
+ title?: string;
9
+ className?: string;
10
+ }
11
+ declare const Drawer: React.ForwardRefExoticComponent<DrawerProps & React.RefAttributes<HTMLDivElement>>;
12
+
13
+ export { Drawer, type DrawerProps };
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+
3
+ interface DropdownMenuItem {
4
+ id: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ disabled?: boolean;
8
+ destructive?: boolean;
9
+ }
10
+ interface DropdownMenuProps {
11
+ trigger: React.ReactNode;
12
+ items: DropdownMenuItem[];
13
+ onSelect: (id: string) => void;
14
+ align?: "left" | "right";
15
+ className?: string;
16
+ }
17
+ declare const DropdownMenu: React.ForwardRefExoticComponent<DropdownMenuProps & React.RefAttributes<HTMLDivElement>>;
18
+
19
+ export { DropdownMenu, type DropdownMenuItem, type DropdownMenuProps };
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+
3
+ interface DropdownMenuItem {
4
+ id: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ disabled?: boolean;
8
+ destructive?: boolean;
9
+ }
10
+ interface DropdownMenuProps {
11
+ trigger: React.ReactNode;
12
+ items: DropdownMenuItem[];
13
+ onSelect: (id: string) => void;
14
+ align?: "left" | "right";
15
+ className?: string;
16
+ }
17
+ declare const DropdownMenu: React.ForwardRefExoticComponent<DropdownMenuProps & React.RefAttributes<HTMLDivElement>>;
18
+
19
+ export { DropdownMenu, type DropdownMenuItem, type DropdownMenuProps };
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+
3
+ interface DualRangeSliderProps {
4
+ /** Minimum possible value */
5
+ min: number;
6
+ /** Maximum possible value */
7
+ max: number;
8
+ /** Step increment */
9
+ step?: number;
10
+ /** Current minimum value */
11
+ valueMin: number;
12
+ /** Current maximum value */
13
+ valueMax: number;
14
+ /** Called when the minimum thumb changes */
15
+ onChangeMin: (value: number) => void;
16
+ /** Called when the maximum thumb changes */
17
+ onChangeMax: (value: number) => void;
18
+ /** Format the label below the slider (e.g. `v => \`${v}€\``) */
19
+ formatLabel?: (value: number, type: "min" | "max") => string;
20
+ /** Minimum gap between the two thumbs (in step units). Defaults to `step`. */
21
+ minGap?: number;
22
+ className?: string;
23
+ }
24
+ declare const DualRangeSlider: React.ForwardRefExoticComponent<DualRangeSliderProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { DualRangeSlider, type DualRangeSliderProps };
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+
3
+ interface DualRangeSliderProps {
4
+ /** Minimum possible value */
5
+ min: number;
6
+ /** Maximum possible value */
7
+ max: number;
8
+ /** Step increment */
9
+ step?: number;
10
+ /** Current minimum value */
11
+ valueMin: number;
12
+ /** Current maximum value */
13
+ valueMax: number;
14
+ /** Called when the minimum thumb changes */
15
+ onChangeMin: (value: number) => void;
16
+ /** Called when the maximum thumb changes */
17
+ onChangeMax: (value: number) => void;
18
+ /** Format the label below the slider (e.g. `v => \`${v}€\``) */
19
+ formatLabel?: (value: number, type: "min" | "max") => string;
20
+ /** Minimum gap between the two thumbs (in step units). Defaults to `step`. */
21
+ minGap?: number;
22
+ className?: string;
23
+ }
24
+ declare const DualRangeSlider: React.ForwardRefExoticComponent<DualRangeSliderProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { DualRangeSlider, type DualRangeSliderProps };
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+
3
+ interface EmptyStateProps {
4
+ icon: React.ReactNode;
5
+ title: string;
6
+ description: string;
7
+ action?: React.ReactNode;
8
+ className?: string;
9
+ }
10
+ declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
11
+
12
+ export { EmptyState, type EmptyStateProps };
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+
3
+ interface EmptyStateProps {
4
+ icon: React.ReactNode;
5
+ title: string;
6
+ description: string;
7
+ action?: React.ReactNode;
8
+ className?: string;
9
+ }
10
+ declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
11
+
12
+ export { EmptyState, type EmptyStateProps };
@@ -0,0 +1,21 @@
1
+ import { Component, ReactNode } from 'react';
2
+
3
+ interface ErrorBoundaryProps {
4
+ children: ReactNode;
5
+ fallback?: ReactNode;
6
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
7
+ className?: string;
8
+ }
9
+ interface ErrorBoundaryState {
10
+ hasError: boolean;
11
+ error?: Error;
12
+ }
13
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
14
+ constructor(props: ErrorBoundaryProps);
15
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
16
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
17
+ handleRetry: () => void;
18
+ render(): ReactNode;
19
+ }
20
+
21
+ export { ErrorBoundary, type ErrorBoundaryProps };
@@ -0,0 +1,21 @@
1
+ import { Component, ReactNode } from 'react';
2
+
3
+ interface ErrorBoundaryProps {
4
+ children: ReactNode;
5
+ fallback?: ReactNode;
6
+ onError?: (error: Error, errorInfo: React.ErrorInfo) => void;
7
+ className?: string;
8
+ }
9
+ interface ErrorBoundaryState {
10
+ hasError: boolean;
11
+ error?: Error;
12
+ }
13
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
14
+ constructor(props: ErrorBoundaryProps);
15
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
16
+ componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
17
+ handleRetry: () => void;
18
+ render(): ReactNode;
19
+ }
20
+
21
+ export { ErrorBoundary, type ErrorBoundaryProps };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface FilterAccordionItemData {
4
+ key: string;
5
+ title: string;
6
+ content: React.ReactNode;
7
+ }
8
+ interface FilterAccordionProps {
9
+ items: FilterAccordionItemData[];
10
+ /** Keys of sections open by default */
11
+ defaultOpenKeys?: string[];
12
+ className?: string;
13
+ }
14
+ declare const FilterAccordion: React.ForwardRefExoticComponent<FilterAccordionProps & React.RefAttributes<HTMLDivElement>>;
15
+
16
+ export { FilterAccordion, type FilterAccordionItemData, type FilterAccordionProps };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface FilterAccordionItemData {
4
+ key: string;
5
+ title: string;
6
+ content: React.ReactNode;
7
+ }
8
+ interface FilterAccordionProps {
9
+ items: FilterAccordionItemData[];
10
+ /** Keys of sections open by default */
11
+ defaultOpenKeys?: string[];
12
+ className?: string;
13
+ }
14
+ declare const FilterAccordion: React.ForwardRefExoticComponent<FilterAccordionProps & React.RefAttributes<HTMLDivElement>>;
15
+
16
+ export { FilterAccordion, type FilterAccordionItemData, type FilterAccordionProps };
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+
3
+ interface FilterPillProps {
4
+ label: string;
5
+ isActive?: boolean;
6
+ count?: number;
7
+ onClear?: () => void;
8
+ children?: React.ReactNode;
9
+ className?: string;
10
+ /**
11
+ * Mode TOGGLE (additif) : quand fourni, le clic bascule le filtre au lieu
12
+ * d'ouvrir un dropdown — le chevron disparaît et l'état est exposé via
13
+ * `aria-pressed`. Utilisé par les filtres de la section chambres (fiche V2).
14
+ */
15
+ onToggle?: () => void;
16
+ }
17
+ declare const FilterPill: React.ForwardRefExoticComponent<FilterPillProps & React.RefAttributes<HTMLDivElement>>;
18
+
19
+ export { FilterPill, type FilterPillProps };
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+
3
+ interface FilterPillProps {
4
+ label: string;
5
+ isActive?: boolean;
6
+ count?: number;
7
+ onClear?: () => void;
8
+ children?: React.ReactNode;
9
+ className?: string;
10
+ /**
11
+ * Mode TOGGLE (additif) : quand fourni, le clic bascule le filtre au lieu
12
+ * d'ouvrir un dropdown — le chevron disparaît et l'état est exposé via
13
+ * `aria-pressed`. Utilisé par les filtres de la section chambres (fiche V2).
14
+ */
15
+ onToggle?: () => void;
16
+ }
17
+ declare const FilterPill: React.ForwardRefExoticComponent<FilterPillProps & React.RefAttributes<HTMLDivElement>>;
18
+
19
+ export { FilterPill, type FilterPillProps };
@@ -0,0 +1,65 @@
1
+ import * as React from 'react';
2
+
3
+ /** Sous-item d'un menu de dock (ex: choix de carte). Rendu en `<a href>` crawlable. */
4
+ interface FloatingDockMenuItem {
5
+ /** Identifiant stable. */
6
+ key: string;
7
+ /** Libellé affiché dans le menu. */
8
+ label: string;
9
+ /** Icône (dimensionnée par l'appelant). */
10
+ icon: React.ReactNode;
11
+ /** Destination (crawlable même si `onNavigate` intercepte). */
12
+ href: string;
13
+ /** Marque l'entrée comme courante (surbrillance). */
14
+ isActive?: boolean;
15
+ }
16
+ interface FloatingDockItem {
17
+ /** Identifiant stable de l'item. */
18
+ key: string;
19
+ /** Libellé affiché quand l'item est actif (et pour l'accessibilité). */
20
+ label: string;
21
+ /** Icône (ex: `<Search className="w-5 h-5" />`), dimensionnée par l'appelant. */
22
+ icon: React.ReactNode;
23
+ /** Destination. Rendu comme `<a href>` (crawlable) même si `onNavigate` intercepte. */
24
+ href: string;
25
+ /** Item courant → bulle colorée + label visible. */
26
+ isActive?: boolean;
27
+ /**
28
+ * Sous-menu optionnel. Quand fourni, l'item devient un déclencheur : le tap
29
+ * ouvre un petit popover AU-DESSUS du dock listant ces entrées (au lieu de
30
+ * naviguer). `href` sert de repli crawlable/accessible.
31
+ */
32
+ menuItems?: FloatingDockMenuItem[];
33
+ }
34
+ interface FloatingDockProps {
35
+ /** Items de navigation (3 à 5 recommandés). */
36
+ items: FloatingDockItem[];
37
+ /** Classes supplémentaires appliquées à la pilule `<nav>`. */
38
+ className?: string;
39
+ /** Libellé ARIA de la navigation. */
40
+ ariaLabel?: string;
41
+ /**
42
+ * Intercepte le clic d'un item ou d'un sous-item (ex: navigation client Next,
43
+ * redirection login). Quand fourni, le `preventDefault` par défaut est appliqué
44
+ * avant l'appel — l'appelant gère lui-même la navigation.
45
+ */
46
+ onNavigate?: (item: FloatingDockItem | FloatingDockMenuItem) => void;
47
+ }
48
+ /**
49
+ * Barre de navigation flottante mobile — « dock » à bulle active.
50
+ *
51
+ * Présentation pure : l'îlot (pilule blanche arrondie, ombre douce, bulle
52
+ * colorée + label pour l'item actif) est rendu ici. Le positionnement `fixed`,
53
+ * le safe-area iOS, le masquage au scroll et la logique d'auth restent à la
54
+ * charge de l'appelant, via le wrapper englobant et `onNavigate`.
55
+ *
56
+ * - Item inactif : icône seule, cible tap 44px minimum.
57
+ * - Item actif : bulle colorée (token `secondary`) + label qui apparaît via une
58
+ * transition de largeur.
59
+ * - Item avec `menuItems` : agit comme déclencheur d'un popover ouvrant AU-DESSUS
60
+ * du dock (choix de sous-destinations). Ferme au tap extérieur / Échap.
61
+ * - Rendu en `<a href>` (crawlable / accessible), interceptable par `onNavigate`.
62
+ */
63
+ declare const FloatingDock: React.ForwardRefExoticComponent<FloatingDockProps & React.RefAttributes<HTMLElement>>;
64
+
65
+ export { FloatingDock, type FloatingDockItem, type FloatingDockMenuItem, type FloatingDockProps };
@@ -0,0 +1,65 @@
1
+ import * as React from 'react';
2
+
3
+ /** Sous-item d'un menu de dock (ex: choix de carte). Rendu en `<a href>` crawlable. */
4
+ interface FloatingDockMenuItem {
5
+ /** Identifiant stable. */
6
+ key: string;
7
+ /** Libellé affiché dans le menu. */
8
+ label: string;
9
+ /** Icône (dimensionnée par l'appelant). */
10
+ icon: React.ReactNode;
11
+ /** Destination (crawlable même si `onNavigate` intercepte). */
12
+ href: string;
13
+ /** Marque l'entrée comme courante (surbrillance). */
14
+ isActive?: boolean;
15
+ }
16
+ interface FloatingDockItem {
17
+ /** Identifiant stable de l'item. */
18
+ key: string;
19
+ /** Libellé affiché quand l'item est actif (et pour l'accessibilité). */
20
+ label: string;
21
+ /** Icône (ex: `<Search className="w-5 h-5" />`), dimensionnée par l'appelant. */
22
+ icon: React.ReactNode;
23
+ /** Destination. Rendu comme `<a href>` (crawlable) même si `onNavigate` intercepte. */
24
+ href: string;
25
+ /** Item courant → bulle colorée + label visible. */
26
+ isActive?: boolean;
27
+ /**
28
+ * Sous-menu optionnel. Quand fourni, l'item devient un déclencheur : le tap
29
+ * ouvre un petit popover AU-DESSUS du dock listant ces entrées (au lieu de
30
+ * naviguer). `href` sert de repli crawlable/accessible.
31
+ */
32
+ menuItems?: FloatingDockMenuItem[];
33
+ }
34
+ interface FloatingDockProps {
35
+ /** Items de navigation (3 à 5 recommandés). */
36
+ items: FloatingDockItem[];
37
+ /** Classes supplémentaires appliquées à la pilule `<nav>`. */
38
+ className?: string;
39
+ /** Libellé ARIA de la navigation. */
40
+ ariaLabel?: string;
41
+ /**
42
+ * Intercepte le clic d'un item ou d'un sous-item (ex: navigation client Next,
43
+ * redirection login). Quand fourni, le `preventDefault` par défaut est appliqué
44
+ * avant l'appel — l'appelant gère lui-même la navigation.
45
+ */
46
+ onNavigate?: (item: FloatingDockItem | FloatingDockMenuItem) => void;
47
+ }
48
+ /**
49
+ * Barre de navigation flottante mobile — « dock » à bulle active.
50
+ *
51
+ * Présentation pure : l'îlot (pilule blanche arrondie, ombre douce, bulle
52
+ * colorée + label pour l'item actif) est rendu ici. Le positionnement `fixed`,
53
+ * le safe-area iOS, le masquage au scroll et la logique d'auth restent à la
54
+ * charge de l'appelant, via le wrapper englobant et `onNavigate`.
55
+ *
56
+ * - Item inactif : icône seule, cible tap 44px minimum.
57
+ * - Item actif : bulle colorée (token `secondary`) + label qui apparaît via une
58
+ * transition de largeur.
59
+ * - Item avec `menuItems` : agit comme déclencheur d'un popover ouvrant AU-DESSUS
60
+ * du dock (choix de sous-destinations). Ferme au tap extérieur / Échap.
61
+ * - Rendu en `<a href>` (crawlable / accessible), interceptable par `onNavigate`.
62
+ */
63
+ declare const FloatingDock: React.ForwardRefExoticComponent<FloatingDockProps & React.RefAttributes<HTMLElement>>;
64
+
65
+ export { FloatingDock, type FloatingDockItem, type FloatingDockMenuItem, type FloatingDockProps };