@dododog/ui 0.9.0 → 0.9.2
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-3JM2X4I2.js → chunk-SATQIPV5.js} +65 -1
- package/dist/{chunk-BFGRWOQM.mjs → chunk-ZEHZPS2P.mjs} +65 -1
- package/dist/components/Accordion/index.d.mts +24 -0
- package/dist/components/Accordion/index.d.ts +24 -0
- package/dist/components/Alert/index.d.mts +40 -0
- package/dist/components/Alert/index.d.ts +40 -0
- package/dist/components/AnchorTabs/index.d.mts +59 -0
- package/dist/components/AnchorTabs/index.d.ts +59 -0
- package/dist/components/Autocomplete/index.d.mts +27 -0
- package/dist/components/Autocomplete/index.d.ts +27 -0
- package/dist/components/Avatar/index.d.mts +13 -0
- package/dist/components/Avatar/index.d.ts +13 -0
- package/dist/components/Badge/index.d.mts +13 -0
- package/dist/components/Badge/index.d.ts +13 -0
- package/dist/components/Banner/index.d.mts +19 -0
- package/dist/components/Banner/index.d.ts +19 -0
- package/dist/components/BottomNavBar/index.d.mts +17 -0
- package/dist/components/BottomNavBar/index.d.ts +17 -0
- package/dist/components/Breadcrumb/index.d.mts +23 -0
- package/dist/components/Breadcrumb/index.d.ts +23 -0
- package/dist/components/Button/index.d.mts +17 -0
- package/dist/components/Button/index.d.ts +17 -0
- package/dist/components/Card/index.d.mts +30 -0
- package/dist/components/Card/index.d.ts +30 -0
- package/dist/components/CardList/index.d.mts +30 -0
- package/dist/components/CardList/index.d.ts +30 -0
- package/dist/components/Carousel/index.d.mts +15 -0
- package/dist/components/Carousel/index.d.ts +15 -0
- package/dist/components/Checkbox/index.d.mts +16 -0
- package/dist/components/Checkbox/index.d.ts +16 -0
- package/dist/components/Counter/index.d.mts +14 -0
- package/dist/components/Counter/index.d.ts +14 -0
- package/dist/components/DateRangePicker/index.d.mts +26 -0
- package/dist/components/DateRangePicker/index.d.ts +26 -0
- package/dist/components/DetailList/index.d.mts +23 -0
- package/dist/components/DetailList/index.d.ts +23 -0
- package/dist/components/Divider/index.d.mts +10 -0
- package/dist/components/Divider/index.d.ts +10 -0
- package/dist/components/Drawer/index.d.mts +13 -0
- package/dist/components/Drawer/index.d.ts +13 -0
- package/dist/components/DropdownMenu/index.d.mts +19 -0
- package/dist/components/DropdownMenu/index.d.ts +19 -0
- package/dist/components/DualRangeSlider/index.d.mts +26 -0
- package/dist/components/DualRangeSlider/index.d.ts +26 -0
- package/dist/components/EmptyState/index.d.mts +12 -0
- package/dist/components/EmptyState/index.d.ts +12 -0
- package/dist/components/ErrorBoundary/index.d.mts +21 -0
- package/dist/components/ErrorBoundary/index.d.ts +21 -0
- package/dist/components/FilterAccordion/index.d.mts +16 -0
- package/dist/components/FilterAccordion/index.d.ts +16 -0
- package/dist/components/FilterPill/index.d.mts +19 -0
- package/dist/components/FilterPill/index.d.ts +19 -0
- package/dist/components/FloatingDock/index.d.mts +65 -0
- package/dist/components/FloatingDock/index.d.ts +65 -0
- package/dist/components/Footer/index.d.mts +46 -0
- package/dist/components/Footer/index.d.ts +46 -0
- package/dist/components/GuestPicker/index.d.mts +31 -0
- package/dist/components/GuestPicker/index.d.ts +31 -0
- package/dist/components/Header/index.d.mts +37 -0
- package/dist/components/Header/index.d.ts +37 -0
- package/dist/components/HotelCard/index.d.mts +45 -0
- package/dist/components/HotelCard/index.d.ts +45 -0
- package/dist/components/IconBadge/index.d.mts +14 -0
- package/dist/components/IconBadge/index.d.ts +14 -0
- package/dist/components/ImageGallery/index.d.mts +16 -0
- package/dist/components/ImageGallery/index.d.ts +16 -0
- package/dist/components/ImageWithFallback/index.d.mts +17 -0
- package/dist/components/ImageWithFallback/index.d.ts +17 -0
- package/dist/components/Input/index.d.mts +18 -0
- package/dist/components/Input/index.d.ts +18 -0
- package/dist/components/Lightbox/index.d.mts +15 -0
- package/dist/components/Lightbox/index.d.ts +15 -0
- package/dist/components/LinkCard/index.d.mts +12 -0
- package/dist/components/LinkCard/index.d.ts +12 -0
- package/dist/components/LoadingOverlay/index.d.mts +12 -0
- package/dist/components/LoadingOverlay/index.d.ts +12 -0
- package/dist/components/MegaMenu/index.d.mts +52 -0
- package/dist/components/MegaMenu/index.d.ts +52 -0
- package/dist/components/MobileMenu/index.d.mts +35 -0
- package/dist/components/MobileMenu/index.d.ts +35 -0
- package/dist/components/Modal/index.d.mts +12 -0
- package/dist/components/Modal/index.d.ts +12 -0
- package/dist/components/Pagination/index.d.mts +13 -0
- package/dist/components/Pagination/index.d.ts +13 -0
- package/dist/components/PriceDisplay/index.d.mts +14 -0
- package/dist/components/PriceDisplay/index.d.ts +14 -0
- package/dist/components/ProgressBar/index.d.mts +19 -0
- package/dist/components/ProgressBar/index.d.ts +19 -0
- package/dist/components/PromoBanner/index.d.mts +39 -0
- package/dist/components/PromoBanner/index.d.ts +39 -0
- package/dist/components/RadioGroup/index.d.mts +21 -0
- package/dist/components/RadioGroup/index.d.ts +21 -0
- package/dist/components/Rating/index.d.mts +12 -0
- package/dist/components/Rating/index.d.ts +12 -0
- package/dist/components/RoomTypeCard/index.d.mts +126 -0
- package/dist/components/RoomTypeCard/index.d.ts +126 -0
- package/dist/components/RoomTypeCard/index.js +3 -3
- package/dist/components/RoomTypeCard/index.mjs +1 -1
- package/dist/components/SearchBar/index.d.mts +20 -0
- package/dist/components/SearchBar/index.d.ts +20 -0
- package/dist/components/SegmentedControl/index.d.mts +15 -0
- package/dist/components/SegmentedControl/index.d.ts +15 -0
- package/dist/components/Select/index.d.mts +26 -0
- package/dist/components/Select/index.d.ts +26 -0
- package/dist/components/Sidebar/index.d.mts +19 -0
- package/dist/components/Sidebar/index.d.ts +19 -0
- package/dist/components/SignInCallout/index.d.mts +26 -0
- package/dist/components/SignInCallout/index.d.ts +26 -0
- package/dist/components/Skeleton/index.d.mts +31 -0
- package/dist/components/Skeleton/index.d.ts +31 -0
- package/dist/components/Spinner/index.d.mts +13 -0
- package/dist/components/Spinner/index.d.ts +13 -0
- package/dist/components/StatCard/index.d.mts +15 -0
- package/dist/components/StatCard/index.d.ts +15 -0
- package/dist/components/StatusBadge/index.d.mts +16 -0
- package/dist/components/StatusBadge/index.d.ts +16 -0
- package/dist/components/Stepper/index.d.mts +16 -0
- package/dist/components/Stepper/index.d.ts +16 -0
- package/dist/components/Switch/index.d.mts +22 -0
- package/dist/components/Switch/index.d.ts +22 -0
- package/dist/components/Tabs/index.d.mts +18 -0
- package/dist/components/Tabs/index.d.ts +18 -0
- package/dist/components/Tag/index.d.mts +15 -0
- package/dist/components/Tag/index.d.ts +15 -0
- package/dist/components/Textarea/index.d.mts +16 -0
- package/dist/components/Textarea/index.d.ts +16 -0
- package/dist/components/Toast/index.d.mts +16 -0
- package/dist/components/Toast/index.d.ts +16 -0
- package/dist/components/Toggle/index.d.mts +13 -0
- package/dist/components/Toggle/index.d.ts +13 -0
- package/dist/components/Tooltip/index.d.mts +11 -0
- package/dist/components/Tooltip/index.d.ts +11 -0
- package/dist/components/VerticalMarquee/index.d.mts +16 -0
- package/dist/components/VerticalMarquee/index.d.ts +16 -0
- package/dist/index.d.mts +189 -0
- package/dist/index.d.ts +189 -0
- package/dist/index.js +37 -37
- package/dist/index.mjs +9 -9
- package/dist/tailwind-preset.d.mts +170 -0
- package/dist/tailwind-preset.d.ts +170 -0
- package/dist/tokens/index.d.mts +219 -0
- package/dist/tokens/index.d.ts +219 -0
- package/dist/typography-BUlhEnfy.d.mts +16 -0
- package/dist/typography-BUlhEnfy.d.ts +16 -0
- package/dist/utils/index.d.mts +5 -0
- package/dist/utils/index.d.ts +5 -0
- package/package.json +1 -1
|
@@ -79,6 +79,12 @@ function GalleryIcon({ className }) {
|
|
|
79
79
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" })
|
|
80
80
|
] });
|
|
81
81
|
}
|
|
82
|
+
function CardIcon({ className }) {
|
|
83
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, "aria-hidden": "true", children: [
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "20", height: "14", x: "2", y: "5", rx: "2" }),
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 10h20" })
|
|
86
|
+
] });
|
|
87
|
+
}
|
|
82
88
|
function formatPrice(price) {
|
|
83
89
|
return new Intl.NumberFormat("fr-FR", {
|
|
84
90
|
style: "currency",
|
|
@@ -116,6 +122,8 @@ function RateRow({
|
|
|
116
122
|
withTopBorder
|
|
117
123
|
}) {
|
|
118
124
|
const showReserveCta = selected && !!onReserve;
|
|
125
|
+
const [showDetails, setShowDetails] = React__namespace.useState(false);
|
|
126
|
+
const hasDetails = (rate.details?.length ?? 0) > 0 || (rate.amenities?.length ?? 0) > 0;
|
|
119
127
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
120
128
|
"div",
|
|
121
129
|
{
|
|
@@ -126,10 +134,66 @@ function RateRow({
|
|
|
126
134
|
children: [
|
|
127
135
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
128
136
|
rate.mealLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[13px] font-medium text-primary", children: rate.mealLabel }),
|
|
129
|
-
/* @__PURE__ */ jsxRuntime.
|
|
137
|
+
(rate.bedding || rate.paymentLabel) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
138
|
+
rate.bedding && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-text-secondary", children: [
|
|
139
|
+
/* @__PURE__ */ jsxRuntime.jsx(BedIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
|
|
140
|
+
rate.bedding
|
|
141
|
+
] }),
|
|
142
|
+
rate.paymentLabel && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded-full bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-700", children: [
|
|
143
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardIcon, { className: "w-3 h-3 flex-shrink-0" }),
|
|
144
|
+
rate.paymentLabel
|
|
145
|
+
] })
|
|
146
|
+
] }),
|
|
147
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsxRuntime.jsx(CancellationChip, { cancellation: rate.cancellation }) }),
|
|
130
148
|
rate.dogFeeLabel && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 inline-flex items-start gap-1.5 text-xs font-medium text-secondary", children: [
|
|
131
149
|
/* @__PURE__ */ jsxRuntime.jsx(DogIcon, { className: "w-3.5 h-3.5 mt-[1px] flex-shrink-0" }),
|
|
132
150
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: rate.dogFeeLabel })
|
|
151
|
+
] }),
|
|
152
|
+
hasDetails && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
153
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
154
|
+
"button",
|
|
155
|
+
{
|
|
156
|
+
type: "button",
|
|
157
|
+
onClick: () => setShowDetails((v) => !v),
|
|
158
|
+
"aria-expanded": showDetails,
|
|
159
|
+
className: "mt-1.5 inline-flex items-center gap-1 text-[12px] font-medium text-secondary",
|
|
160
|
+
children: [
|
|
161
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
162
|
+
ChevronDownIcon,
|
|
163
|
+
{
|
|
164
|
+
className: chunkADIDI7AJ_js.cn(
|
|
165
|
+
"w-3.5 h-3.5 transition-transform",
|
|
166
|
+
showDetails && "rotate-180"
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
),
|
|
170
|
+
showDetails ? "Masquer le d\xE9tail" : "Voir le d\xE9tail"
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
),
|
|
174
|
+
showDetails && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded-lg bg-sand-light px-3 py-2.5", children: [
|
|
175
|
+
rate.details && rate.details.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "space-y-1.5", children: rate.details.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs leading-snug", children: [
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "font-medium text-text-secondary", children: d.label }),
|
|
177
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-text-muted", children: d.value })
|
|
178
|
+
] }, i)) }),
|
|
179
|
+
rate.amenities && rate.amenities.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
180
|
+
"div",
|
|
181
|
+
{
|
|
182
|
+
className: chunkADIDI7AJ_js.cn(
|
|
183
|
+
"flex flex-wrap gap-1.5",
|
|
184
|
+
rate.details && rate.details.length > 0 && "mt-2.5"
|
|
185
|
+
),
|
|
186
|
+
children: rate.amenities.map((a, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
187
|
+
"span",
|
|
188
|
+
{
|
|
189
|
+
className: "rounded-full bg-white px-2 py-1 text-[11px] text-text-muted",
|
|
190
|
+
children: a
|
|
191
|
+
},
|
|
192
|
+
i
|
|
193
|
+
))
|
|
194
|
+
}
|
|
195
|
+
)
|
|
196
|
+
] })
|
|
133
197
|
] })
|
|
134
198
|
] }),
|
|
135
199
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2.5 flex items-end justify-between gap-3", children: [
|
|
@@ -57,6 +57,12 @@ function GalleryIcon({ className }) {
|
|
|
57
57
|
/* @__PURE__ */ jsx("path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" })
|
|
58
58
|
] });
|
|
59
59
|
}
|
|
60
|
+
function CardIcon({ className }) {
|
|
61
|
+
return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className, "aria-hidden": "true", children: [
|
|
62
|
+
/* @__PURE__ */ jsx("rect", { width: "20", height: "14", x: "2", y: "5", rx: "2" }),
|
|
63
|
+
/* @__PURE__ */ jsx("path", { d: "M2 10h20" })
|
|
64
|
+
] });
|
|
65
|
+
}
|
|
60
66
|
function formatPrice(price) {
|
|
61
67
|
return new Intl.NumberFormat("fr-FR", {
|
|
62
68
|
style: "currency",
|
|
@@ -94,6 +100,8 @@ function RateRow({
|
|
|
94
100
|
withTopBorder
|
|
95
101
|
}) {
|
|
96
102
|
const showReserveCta = selected && !!onReserve;
|
|
103
|
+
const [showDetails, setShowDetails] = React.useState(false);
|
|
104
|
+
const hasDetails = (rate.details?.length ?? 0) > 0 || (rate.amenities?.length ?? 0) > 0;
|
|
97
105
|
return /* @__PURE__ */ jsxs(
|
|
98
106
|
"div",
|
|
99
107
|
{
|
|
@@ -104,10 +112,66 @@ function RateRow({
|
|
|
104
112
|
children: [
|
|
105
113
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
106
114
|
rate.mealLabel && /* @__PURE__ */ jsx("div", { className: "text-[13px] font-medium text-primary", children: rate.mealLabel }),
|
|
107
|
-
/* @__PURE__ */
|
|
115
|
+
(rate.bedding || rate.paymentLabel) && /* @__PURE__ */ jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
116
|
+
rate.bedding && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-text-secondary", children: [
|
|
117
|
+
/* @__PURE__ */ jsx(BedIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
|
|
118
|
+
rate.bedding
|
|
119
|
+
] }),
|
|
120
|
+
rate.paymentLabel && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 rounded-full bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-700", children: [
|
|
121
|
+
/* @__PURE__ */ jsx(CardIcon, { className: "w-3 h-3 flex-shrink-0" }),
|
|
122
|
+
rate.paymentLabel
|
|
123
|
+
] })
|
|
124
|
+
] }),
|
|
125
|
+
/* @__PURE__ */ jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsx(CancellationChip, { cancellation: rate.cancellation }) }),
|
|
108
126
|
rate.dogFeeLabel && /* @__PURE__ */ jsxs("div", { className: "mt-1 inline-flex items-start gap-1.5 text-xs font-medium text-secondary", children: [
|
|
109
127
|
/* @__PURE__ */ jsx(DogIcon, { className: "w-3.5 h-3.5 mt-[1px] flex-shrink-0" }),
|
|
110
128
|
/* @__PURE__ */ jsx("span", { children: rate.dogFeeLabel })
|
|
129
|
+
] }),
|
|
130
|
+
hasDetails && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
131
|
+
/* @__PURE__ */ jsxs(
|
|
132
|
+
"button",
|
|
133
|
+
{
|
|
134
|
+
type: "button",
|
|
135
|
+
onClick: () => setShowDetails((v) => !v),
|
|
136
|
+
"aria-expanded": showDetails,
|
|
137
|
+
className: "mt-1.5 inline-flex items-center gap-1 text-[12px] font-medium text-secondary",
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ jsx(
|
|
140
|
+
ChevronDownIcon,
|
|
141
|
+
{
|
|
142
|
+
className: cn(
|
|
143
|
+
"w-3.5 h-3.5 transition-transform",
|
|
144
|
+
showDetails && "rotate-180"
|
|
145
|
+
)
|
|
146
|
+
}
|
|
147
|
+
),
|
|
148
|
+
showDetails ? "Masquer le d\xE9tail" : "Voir le d\xE9tail"
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
showDetails && /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded-lg bg-sand-light px-3 py-2.5", children: [
|
|
153
|
+
rate.details && rate.details.length > 0 && /* @__PURE__ */ jsx("dl", { className: "space-y-1.5", children: rate.details.map((d, i) => /* @__PURE__ */ jsxs("div", { className: "text-xs leading-snug", children: [
|
|
154
|
+
/* @__PURE__ */ jsx("dt", { className: "font-medium text-text-secondary", children: d.label }),
|
|
155
|
+
/* @__PURE__ */ jsx("dd", { className: "text-text-muted", children: d.value })
|
|
156
|
+
] }, i)) }),
|
|
157
|
+
rate.amenities && rate.amenities.length > 0 && /* @__PURE__ */ jsx(
|
|
158
|
+
"div",
|
|
159
|
+
{
|
|
160
|
+
className: cn(
|
|
161
|
+
"flex flex-wrap gap-1.5",
|
|
162
|
+
rate.details && rate.details.length > 0 && "mt-2.5"
|
|
163
|
+
),
|
|
164
|
+
children: rate.amenities.map((a, i) => /* @__PURE__ */ jsx(
|
|
165
|
+
"span",
|
|
166
|
+
{
|
|
167
|
+
className: "rounded-full bg-white px-2 py-1 text-[11px] text-text-muted",
|
|
168
|
+
children: a
|
|
169
|
+
},
|
|
170
|
+
i
|
|
171
|
+
))
|
|
172
|
+
}
|
|
173
|
+
)
|
|
174
|
+
] })
|
|
111
175
|
] })
|
|
112
176
|
] }),
|
|
113
177
|
/* @__PURE__ */ jsxs("div", { className: "mt-2.5 flex items-end justify-between gap-3", children: [
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface AccordionItemData {
|
|
4
|
+
key: string;
|
|
5
|
+
title: string;
|
|
6
|
+
content: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
interface AccordionProps {
|
|
9
|
+
items: AccordionItemData[];
|
|
10
|
+
defaultOpenIndex?: number | null;
|
|
11
|
+
/** Open multiple items by default (requires `allowMultiple`). Takes precedence over `defaultOpenIndex`. */
|
|
12
|
+
defaultOpenIndexes?: number[];
|
|
13
|
+
allowMultiple?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
interface AccordionItemProps {
|
|
18
|
+
title: string;
|
|
19
|
+
isOpen: boolean;
|
|
20
|
+
onToggle: () => void;
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { Accordion, type AccordionItemData, type AccordionItemProps, type AccordionProps };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface AccordionItemData {
|
|
4
|
+
key: string;
|
|
5
|
+
title: string;
|
|
6
|
+
content: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
interface AccordionProps {
|
|
9
|
+
items: AccordionItemData[];
|
|
10
|
+
defaultOpenIndex?: number | null;
|
|
11
|
+
/** Open multiple items by default (requires `allowMultiple`). Takes precedence over `defaultOpenIndex`. */
|
|
12
|
+
defaultOpenIndexes?: number[];
|
|
13
|
+
allowMultiple?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
interface AccordionItemProps {
|
|
18
|
+
title: string;
|
|
19
|
+
isOpen: boolean;
|
|
20
|
+
onToggle: () => void;
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { Accordion, type AccordionItemData, type AccordionItemProps, type AccordionProps };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
declare const variantStyles: {
|
|
4
|
+
warning: {
|
|
5
|
+
container: string;
|
|
6
|
+
icon: string;
|
|
7
|
+
dismiss: string;
|
|
8
|
+
retry: string;
|
|
9
|
+
};
|
|
10
|
+
error: {
|
|
11
|
+
container: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
dismiss: string;
|
|
14
|
+
retry: string;
|
|
15
|
+
};
|
|
16
|
+
success: {
|
|
17
|
+
container: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
dismiss: string;
|
|
20
|
+
retry: string;
|
|
21
|
+
};
|
|
22
|
+
info: {
|
|
23
|
+
container: string;
|
|
24
|
+
icon: string;
|
|
25
|
+
dismiss: string;
|
|
26
|
+
retry: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
interface AlertProps {
|
|
30
|
+
message: string;
|
|
31
|
+
variant?: keyof typeof variantStyles;
|
|
32
|
+
onDismiss?: () => void;
|
|
33
|
+
onRetry?: () => void;
|
|
34
|
+
retryLabel?: string;
|
|
35
|
+
isRetrying?: boolean;
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
|
|
40
|
+
export { Alert, type AlertProps };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
declare const variantStyles: {
|
|
4
|
+
warning: {
|
|
5
|
+
container: string;
|
|
6
|
+
icon: string;
|
|
7
|
+
dismiss: string;
|
|
8
|
+
retry: string;
|
|
9
|
+
};
|
|
10
|
+
error: {
|
|
11
|
+
container: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
dismiss: string;
|
|
14
|
+
retry: string;
|
|
15
|
+
};
|
|
16
|
+
success: {
|
|
17
|
+
container: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
dismiss: string;
|
|
20
|
+
retry: string;
|
|
21
|
+
};
|
|
22
|
+
info: {
|
|
23
|
+
container: string;
|
|
24
|
+
icon: string;
|
|
25
|
+
dismiss: string;
|
|
26
|
+
retry: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
interface AlertProps {
|
|
30
|
+
message: string;
|
|
31
|
+
variant?: keyof typeof variantStyles;
|
|
32
|
+
onDismiss?: () => void;
|
|
33
|
+
onRetry?: () => void;
|
|
34
|
+
retryLabel?: string;
|
|
35
|
+
isRetrying?: boolean;
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
39
|
+
|
|
40
|
+
export { Alert, type AlertProps };
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
* Épingle la barre (position fixed) tant qu'au moins une des sections
|
|
28
|
+
* ancrées reste dans le viewport — au-delà de la portée d'un simple
|
|
29
|
+
* `position: sticky` limité au parent. Un espace réservé conserve la
|
|
30
|
+
* hauteur de la barre (aucun layout shift).
|
|
31
|
+
*/
|
|
32
|
+
pinWhileSectionsVisible?: boolean;
|
|
33
|
+
/** Ordonnée (px) de l'épinglage sous le header. Défaut : 72. */
|
|
34
|
+
pinTop?: number;
|
|
35
|
+
/** Classes du conteneur/sentinelle (ex. `hidden lg:block`). */
|
|
36
|
+
containerClassName?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Présentation de la barre :
|
|
39
|
+
* - `underline` (défaut) : rangée d'onglets sur fond blanc, actif souligné ;
|
|
40
|
+
* - `pills` : chips arrondies posées sur le fond de page (pattern
|
|
41
|
+
* FilterPill) — actif rempli `primary`, inactifs en pill blanche bordée.
|
|
42
|
+
*/
|
|
43
|
+
variant?: "underline" | "pills";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Barre d'onglets d'ancrage (desktop) avec scroll-spy.
|
|
47
|
+
*
|
|
48
|
+
* Présente une rangée de liens `<a href="#{key}">` ; l'onglet dont la section
|
|
49
|
+
* est actuellement en haut du viewport (au-delà de `offsetTop`) est souligné.
|
|
50
|
+
* Le composant observe le défilement de la fenêtre (via `requestAnimationFrame`)
|
|
51
|
+
* pour déterminer la section courante et défile en douceur au clic.
|
|
52
|
+
*
|
|
53
|
+
* Les sections cibles doivent porter l'`id` correspondant à chaque `key`. Le
|
|
54
|
+
* positionnement (sticky, largeur, visibilité responsive) reste à la charge de
|
|
55
|
+
* l'appelant via `className`.
|
|
56
|
+
*/
|
|
57
|
+
declare const AnchorTabs: React.ForwardRefExoticComponent<AnchorTabsProps & React.RefAttributes<HTMLElement>>;
|
|
58
|
+
|
|
59
|
+
export { type AnchorTabItem, AnchorTabs, type AnchorTabsProps };
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
* Épingle la barre (position fixed) tant qu'au moins une des sections
|
|
28
|
+
* ancrées reste dans le viewport — au-delà de la portée d'un simple
|
|
29
|
+
* `position: sticky` limité au parent. Un espace réservé conserve la
|
|
30
|
+
* hauteur de la barre (aucun layout shift).
|
|
31
|
+
*/
|
|
32
|
+
pinWhileSectionsVisible?: boolean;
|
|
33
|
+
/** Ordonnée (px) de l'épinglage sous le header. Défaut : 72. */
|
|
34
|
+
pinTop?: number;
|
|
35
|
+
/** Classes du conteneur/sentinelle (ex. `hidden lg:block`). */
|
|
36
|
+
containerClassName?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Présentation de la barre :
|
|
39
|
+
* - `underline` (défaut) : rangée d'onglets sur fond blanc, actif souligné ;
|
|
40
|
+
* - `pills` : chips arrondies posées sur le fond de page (pattern
|
|
41
|
+
* FilterPill) — actif rempli `primary`, inactifs en pill blanche bordée.
|
|
42
|
+
*/
|
|
43
|
+
variant?: "underline" | "pills";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Barre d'onglets d'ancrage (desktop) avec scroll-spy.
|
|
47
|
+
*
|
|
48
|
+
* Présente une rangée de liens `<a href="#{key}">` ; l'onglet dont la section
|
|
49
|
+
* est actuellement en haut du viewport (au-delà de `offsetTop`) est souligné.
|
|
50
|
+
* Le composant observe le défilement de la fenêtre (via `requestAnimationFrame`)
|
|
51
|
+
* pour déterminer la section courante et défile en douceur au clic.
|
|
52
|
+
*
|
|
53
|
+
* Les sections cibles doivent porter l'`id` correspondant à chaque `key`. Le
|
|
54
|
+
* positionnement (sticky, largeur, visibilité responsive) reste à la charge de
|
|
55
|
+
* l'appelant via `className`.
|
|
56
|
+
*/
|
|
57
|
+
declare const AnchorTabs: React.ForwardRefExoticComponent<AnchorTabsProps & React.RefAttributes<HTMLElement>>;
|
|
58
|
+
|
|
59
|
+
export { type AnchorTabItem, AnchorTabs, type AnchorTabsProps };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const autocompleteInputVariants: (props?: ({
|
|
6
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
7
|
+
variant?: "default" | "error" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
interface AutocompleteSuggestion {
|
|
10
|
+
value: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}
|
|
13
|
+
interface AutocompleteProps extends VariantProps<typeof autocompleteInputVariants> {
|
|
14
|
+
value: string;
|
|
15
|
+
onChange: (value: string) => void;
|
|
16
|
+
onSelect?: (suggestion: AutocompleteSuggestion) => void;
|
|
17
|
+
suggestions: AutocompleteSuggestion[];
|
|
18
|
+
loading?: boolean;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
label?: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
renderSuggestion?: (suggestion: AutocompleteSuggestion) => React.ReactNode;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
declare const Autocomplete: React.ForwardRefExoticComponent<AutocompleteProps & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
|
|
27
|
+
export { Autocomplete, type AutocompleteProps, type AutocompleteSuggestion, autocompleteInputVariants };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const autocompleteInputVariants: (props?: ({
|
|
6
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
7
|
+
variant?: "default" | "error" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
interface AutocompleteSuggestion {
|
|
10
|
+
value: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}
|
|
13
|
+
interface AutocompleteProps extends VariantProps<typeof autocompleteInputVariants> {
|
|
14
|
+
value: string;
|
|
15
|
+
onChange: (value: string) => void;
|
|
16
|
+
onSelect?: (suggestion: AutocompleteSuggestion) => void;
|
|
17
|
+
suggestions: AutocompleteSuggestion[];
|
|
18
|
+
loading?: boolean;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
label?: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
renderSuggestion?: (suggestion: AutocompleteSuggestion) => React.ReactNode;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
declare const Autocomplete: React.ForwardRefExoticComponent<AutocompleteProps & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
|
|
27
|
+
export { Autocomplete, type AutocompleteProps, type AutocompleteSuggestion, autocompleteInputVariants };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface AvatarProps {
|
|
4
|
+
src?: string | null;
|
|
5
|
+
alt?: string;
|
|
6
|
+
initials?: string;
|
|
7
|
+
size?: "sm" | "md" | "lg";
|
|
8
|
+
badge?: number;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
|
|
13
|
+
export { Avatar, type AvatarProps };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface AvatarProps {
|
|
4
|
+
src?: string | null;
|
|
5
|
+
alt?: string;
|
|
6
|
+
initials?: string;
|
|
7
|
+
size?: "sm" | "md" | "lg";
|
|
8
|
+
badge?: number;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
|
|
13
|
+
export { Avatar, type AvatarProps };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const badgeVariants: (props?: ({
|
|
6
|
+
variant?: "secondary" | "accent" | "outline" | "default" | "success" | "warning" | null | undefined;
|
|
7
|
+
size?: "sm" | "md" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
|
|
10
|
+
}
|
|
11
|
+
declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
12
|
+
|
|
13
|
+
export { Badge, type BadgeProps, badgeVariants };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const badgeVariants: (props?: ({
|
|
6
|
+
variant?: "secondary" | "accent" | "outline" | "default" | "success" | "warning" | null | undefined;
|
|
7
|
+
size?: "sm" | "md" | null | undefined;
|
|
8
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
|
+
interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
|
|
10
|
+
}
|
|
11
|
+
declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
12
|
+
|
|
13
|
+
export { Badge, type BadgeProps, badgeVariants };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const bannerVariants: (props?: ({
|
|
6
|
+
variant?: "error" | "success" | "warning" | "info" | null | undefined;
|
|
7
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
|
+
interface BannerProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
9
|
+
title?: string;
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
onDismiss?: () => void;
|
|
12
|
+
action?: {
|
|
13
|
+
label: string;
|
|
14
|
+
onClick: () => void;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
declare const Banner: React.ForwardRefExoticComponent<BannerProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
|
|
19
|
+
export { Banner, type BannerProps, bannerVariants };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const bannerVariants: (props?: ({
|
|
6
|
+
variant?: "error" | "success" | "warning" | "info" | null | undefined;
|
|
7
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
|
+
interface BannerProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
9
|
+
title?: string;
|
|
10
|
+
icon?: React.ReactNode;
|
|
11
|
+
onDismiss?: () => void;
|
|
12
|
+
action?: {
|
|
13
|
+
label: string;
|
|
14
|
+
onClick: () => void;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
declare const Banner: React.ForwardRefExoticComponent<BannerProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
|
|
19
|
+
export { Banner, type BannerProps, bannerVariants };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface BottomNavItem {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
icon: React.ReactNode;
|
|
7
|
+
href: string;
|
|
8
|
+
isActive?: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface BottomNavBarProps {
|
|
11
|
+
items: BottomNavItem[];
|
|
12
|
+
className?: string;
|
|
13
|
+
onNavigate?: (href: string) => void;
|
|
14
|
+
}
|
|
15
|
+
declare const BottomNavBar: React.ForwardRefExoticComponent<BottomNavBarProps & React.RefAttributes<HTMLElement>>;
|
|
16
|
+
|
|
17
|
+
export { BottomNavBar, type BottomNavBarProps, type BottomNavItem };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface BottomNavItem {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
icon: React.ReactNode;
|
|
7
|
+
href: string;
|
|
8
|
+
isActive?: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface BottomNavBarProps {
|
|
11
|
+
items: BottomNavItem[];
|
|
12
|
+
className?: string;
|
|
13
|
+
onNavigate?: (href: string) => void;
|
|
14
|
+
}
|
|
15
|
+
declare const BottomNavBar: React.ForwardRefExoticComponent<BottomNavBarProps & React.RefAttributes<HTMLElement>>;
|
|
16
|
+
|
|
17
|
+
export { BottomNavBar, type BottomNavBarProps, type BottomNavItem };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
declare const breadcrumbVariants: (props?: ({
|
|
6
|
+
variant?: "default" | "light" | "dark" | null | undefined;
|
|
7
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
|
+
interface BreadcrumbItem {
|
|
9
|
+
label: string;
|
|
10
|
+
href: string;
|
|
11
|
+
}
|
|
12
|
+
interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof breadcrumbVariants> {
|
|
13
|
+
items: BreadcrumbItem[];
|
|
14
|
+
/** Render custom link component (e.g. Next.js Link). Receives href, className, children. */
|
|
15
|
+
renderLink?: (props: {
|
|
16
|
+
href: string;
|
|
17
|
+
className: string;
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
}) => React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
|
|
22
|
+
|
|
23
|
+
export { Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, breadcrumbVariants };
|