@giddaa-housing/ui 3.1.0 → 3.3.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.
Files changed (69) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -3
  3. package/css/theme.css +4 -1
  4. package/dist/accordion.js +3 -2
  5. package/dist/activity-timeline.js +2 -2
  6. package/dist/alert.js +4 -4
  7. package/dist/breadcrumb.js +3 -3
  8. package/dist/button.js +8 -4
  9. package/dist/calendar.js +3 -3
  10. package/dist/call-card.js +1 -1
  11. package/dist/carousel.js +3 -3
  12. package/dist/chart.js +1 -1
  13. package/dist/chat.js +1 -1
  14. package/dist/checkbox.js +2 -2
  15. package/dist/combobox.js +6 -6
  16. package/dist/cta.js +3 -3
  17. package/dist/currency-selector.d.ts +10 -8
  18. package/dist/currency-selector.js +247 -28
  19. package/dist/data-table.js +2 -2
  20. package/dist/date-picker.js +6 -6
  21. package/dist/dialog.js +2 -2
  22. package/dist/dropdown-menu.js +20 -20
  23. package/dist/dropzone.js +1 -1
  24. package/dist/editorial-card.d.ts +20 -11
  25. package/dist/editorial-card.js +67 -2
  26. package/dist/file-upload.js +1 -1
  27. package/dist/filter.js +1 -1
  28. package/dist/footer.d.ts +8 -3
  29. package/dist/footer.js +16 -5
  30. package/dist/icons.d.ts +93 -0
  31. package/dist/icons.js +905 -0
  32. package/dist/infinite-scroll.js +1 -1
  33. package/dist/input-otp.js +2 -2
  34. package/dist/kpi-card.js +1 -1
  35. package/dist/match.js +1 -1
  36. package/dist/media-gallery-hero.js +4 -4
  37. package/dist/media-player.js +59 -48
  38. package/dist/message.js +1 -1
  39. package/dist/mobile-sidebar.js +4 -4
  40. package/dist/multi-step-form.js +2 -2
  41. package/dist/number-input.js +3 -3
  42. package/dist/pagination.js +4 -4
  43. package/dist/password-input.js +1 -1
  44. package/dist/phone-input.js +4 -4
  45. package/dist/photo-gallery.js +3 -3
  46. package/dist/price-tag.js +1 -1
  47. package/dist/property-listing-card.js +1 -1
  48. package/dist/rich-text-editor.js +4 -4
  49. package/dist/scroll-spy.d.ts +61 -0
  50. package/dist/scroll-spy.js +295 -0
  51. package/dist/search-input.js +1 -1
  52. package/dist/select.js +6 -6
  53. package/dist/sheet.js +2 -2
  54. package/dist/sidebar.js +1 -1
  55. package/dist/stepper.js +2 -2
  56. package/dist/styles.css +239 -26
  57. package/dist/tabs.d.ts +13 -1
  58. package/dist/tabs.js +9 -2
  59. package/dist/tag.js +1 -1
  60. package/dist/testimonial-block.js +1 -1
  61. package/dist/theme-switcher.d.ts +31 -0
  62. package/dist/theme-switcher.js +78 -0
  63. package/dist/time-picker.js +2 -2
  64. package/dist/toast.d.ts +38 -10
  65. package/dist/toast.js +56 -52
  66. package/dist/top-navbar.js +3 -3
  67. package/dist/video-player-dialog.d.ts +57 -0
  68. package/dist/video-player-dialog.js +188 -0
  69. package/package.json +17 -2
@@ -0,0 +1,295 @@
1
+ "use client";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
4
+ import { t as useReducedMotion } from "./use-reduced-motion-BDvOK14x.js";
5
+ import { t as useUncontrolled } from "./use-uncontrolled-CLfM1XbB.js";
6
+ import { resolveTabsListVariant, tabsIndicatorClassName, tabsListVariants, tabsTriggerClassName } from "./tabs.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import * as React from "react";
9
+ //#region src/scroll-spy.tsx
10
+ const ScrollSpyContext = React.createContext(null);
11
+ /**
12
+ * The element this spy's sections actually scroll inside — a scrollable
13
+ * ancestor, or `document.scrollingElement` for the page. Everything is
14
+ * measured against it, so each instance answers only to its own scrollport:
15
+ * a spy in an open Sheet and a spy on the page behind it never see each
16
+ * other's scrolling.
17
+ *
18
+ * Returns `null` when nothing scrolls. A `position: fixed` ancestor with no
19
+ * scrollable element inside it — a short Dialog, say — is pinned to the
20
+ * viewport, so it neither moves with the page nor scrolls on its own. Falling
21
+ * back to the page there would read the page's scroll position and pin the
22
+ * last section active for a reader who never scrolled anything.
23
+ *
24
+ * Walked from a section rather than the root: the root often sits *outside*
25
+ * the scrolling region, as it does when a Sheet puts the list in its header
26
+ * and the sections in its scrolling body.
27
+ */
28
+ function getScrollport(element) {
29
+ let node = element;
30
+ while (node && node !== document.documentElement) {
31
+ const { overflowY, position } = getComputedStyle(node);
32
+ if (overflowY === "auto" || overflowY === "scroll") return node;
33
+ if (position === "fixed") return null;
34
+ node = node.parentElement;
35
+ }
36
+ return document.scrollingElement;
37
+ }
38
+ function useScrollSpyContext(part) {
39
+ const context = React.useContext(ScrollSpyContext);
40
+ if (!context) throw new Error(`\`${part}\` must be rendered inside \`ScrollSpy\`.`);
41
+ return context;
42
+ }
43
+ /**
44
+ * `Tabs` for a page that shows everything at once: every section stays mounted
45
+ * and visible, the triggers scroll to their section, and the active trigger
46
+ * tracks whichever section the reader is currently on.
47
+ *
48
+ * The parts mirror the `Tabs` API — `ScrollSpy` / `ScrollSpyList` /
49
+ * `ScrollSpyTrigger` / `ScrollSpyContent`, matched by `value` — and the list
50
+ * takes the same `variant` and `size` as `TabsList`, so the two read as one
51
+ * family. Overflow ("More" dropdowns, per-breakpoint trigger counts) is the
52
+ * consuming app's job, exactly as it is with `Tabs`;
53
+ * `scrollSpyTriggerClassName` is exported so an overflow button can match the
54
+ * real triggers.
55
+ */
56
+ function ScrollSpy({ className, orientation = "horizontal", value, defaultValue, onValueChange, scrollOffset = 0, children, ...props }) {
57
+ const baseId = React.useId();
58
+ const reducedMotion = useReducedMotion();
59
+ const [activeValue, setActiveValue] = useUncontrolled({
60
+ value,
61
+ defaultValue,
62
+ onChange: (next) => {
63
+ if (next !== void 0) onValueChange?.(next);
64
+ }
65
+ });
66
+ const sectionsRef = React.useRef(/* @__PURE__ */ new Map());
67
+ const [sectionsVersion, setSectionsVersion] = React.useState(0);
68
+ const activeRef = React.useRef(activeValue);
69
+ const commitRef = React.useRef(setActiveValue);
70
+ React.useEffect(() => {
71
+ activeRef.current = activeValue;
72
+ commitRef.current = setActiveValue;
73
+ });
74
+ const registerSection = React.useCallback((sectionValue, element) => {
75
+ if (element) sectionsRef.current.set(sectionValue, element);
76
+ else sectionsRef.current.delete(sectionValue);
77
+ setSectionsVersion((version) => version + 1);
78
+ }, []);
79
+ React.useEffect(() => {
80
+ let frame = 0;
81
+ const [firstSection] = sectionsRef.current.values();
82
+ const scrollport = getScrollport(firstSection ?? null);
83
+ const isPage = scrollport === document.scrollingElement;
84
+ const measure = () => {
85
+ frame = 0;
86
+ const sections = [...sectionsRef.current.entries()].map(([sectionValue, element]) => ({
87
+ value: sectionValue,
88
+ top: element.getBoundingClientRect().top
89
+ })).sort((a, b) => a.top - b.top);
90
+ const first = sections[0];
91
+ const last = sections.at(-1);
92
+ if (!(first && last)) return;
93
+ const originTop = scrollport && !isPage ? scrollport.getBoundingClientRect().top : 0;
94
+ const atBottom = scrollport ? scrollport.scrollTop + scrollport.clientHeight >= scrollport.scrollHeight - 2 : false;
95
+ let next = first.value;
96
+ if (atBottom) next = last.value;
97
+ else for (const section of sections) if (section.top - originTop <= scrollOffset + 2) next = section.value;
98
+ if (next !== activeRef.current) {
99
+ activeRef.current = next;
100
+ commitRef.current(next);
101
+ }
102
+ };
103
+ const schedule = () => {
104
+ if (!frame) frame = requestAnimationFrame(measure);
105
+ };
106
+ measure();
107
+ const scrollTarget = isPage ? window : scrollport;
108
+ scrollTarget?.addEventListener("scroll", schedule, { passive: true });
109
+ window.addEventListener("resize", schedule, { passive: true });
110
+ return () => {
111
+ if (frame) cancelAnimationFrame(frame);
112
+ scrollTarget?.removeEventListener("scroll", schedule);
113
+ window.removeEventListener("resize", schedule);
114
+ };
115
+ }, [scrollOffset, sectionsVersion]);
116
+ const scrollToSection = React.useCallback((sectionValue) => {
117
+ const element = sectionsRef.current.get(sectionValue);
118
+ if (!element) return;
119
+ activeRef.current = sectionValue;
120
+ commitRef.current(sectionValue);
121
+ element.scrollIntoView({
122
+ behavior: reducedMotion ? "auto" : "smooth",
123
+ block: "start"
124
+ });
125
+ element.focus({ preventScroll: true });
126
+ }, [reducedMotion]);
127
+ const context = React.useMemo(() => ({
128
+ activeValue,
129
+ scrollOffset,
130
+ registerSection,
131
+ scrollToSection,
132
+ getTriggerId: (sectionValue) => `${baseId}-trigger-${sectionValue}`,
133
+ getSectionId: (sectionValue) => `${baseId}-section-${sectionValue}`
134
+ }), [
135
+ activeValue,
136
+ baseId,
137
+ registerSection,
138
+ scrollOffset,
139
+ scrollToSection
140
+ ]);
141
+ return /* @__PURE__ */ jsx(ScrollSpyContext.Provider, {
142
+ value: context,
143
+ children: /* @__PURE__ */ jsx("div", {
144
+ "data-slot": "scroll-spy",
145
+ className: cn("group/tabs flex gap-3 data-[orientation=horizontal]:flex-col", className),
146
+ "data-orientation": orientation,
147
+ ...props,
148
+ children
149
+ })
150
+ });
151
+ }
152
+ /**
153
+ * Keeps `element` inside `list`'s own scrollport, on whichever axis actually
154
+ * overflows. Deliberately not `scrollIntoView`: that walks every scrollable
155
+ * ancestor, and the page is the very thing driving the active section here —
156
+ * nudging it back would fight the reader mid-scroll. This touches only the
157
+ * list's `scrollLeft`/`scrollTop`.
158
+ *
159
+ * "Nearest" semantics with a margin: an already-visible trigger doesn't move,
160
+ * and one scrolled to leaves a sliver of its neighbour showing rather than
161
+ * sitting flush against the edge.
162
+ */
163
+ const FOLLOW_MARGIN = 24;
164
+ function followActiveTrigger(list, element, behavior) {
165
+ const axes = [{
166
+ overflows: list.scrollWidth > list.clientWidth,
167
+ start: element.offsetLeft,
168
+ size: element.offsetWidth,
169
+ view: list.scrollLeft,
170
+ viewSize: list.clientWidth,
171
+ key: "left"
172
+ }, {
173
+ overflows: list.scrollHeight > list.clientHeight,
174
+ start: element.offsetTop,
175
+ size: element.offsetHeight,
176
+ view: list.scrollTop,
177
+ viewSize: list.clientHeight,
178
+ key: "top"
179
+ }];
180
+ const options = { behavior };
181
+ for (const axis of axes) {
182
+ if (!axis.overflows) continue;
183
+ const end = axis.start + axis.size;
184
+ const viewEnd = axis.view + axis.viewSize;
185
+ if (axis.start < axis.view) options[axis.key] = Math.max(0, axis.start - FOLLOW_MARGIN);
186
+ else if (end > viewEnd) options[axis.key] = end - axis.viewSize + FOLLOW_MARGIN;
187
+ }
188
+ if (options.left !== void 0 || options.top !== void 0) list.scrollTo(options);
189
+ }
190
+ function ScrollSpyList({ className, variant = "underline", size, children, scrollActiveIntoView = false, "aria-label": ariaLabel = "Section navigation", ...props }) {
191
+ const { activeValue } = useScrollSpyContext("ScrollSpyList");
192
+ const reducedMotion = useReducedMotion();
193
+ const hasFollowedRef = React.useRef(false);
194
+ const resolvedVariant = resolveTabsListVariant(variant);
195
+ const resolvedSize = useComponentSize(size);
196
+ const listRef = React.useRef(null);
197
+ const [indicator, setIndicator] = React.useState(null);
198
+ React.useEffect(() => {
199
+ const list = listRef.current;
200
+ if (!list) return;
201
+ const measure = () => {
202
+ const active = list.querySelector("[data-slot=\"scroll-spy-trigger\"][data-active]");
203
+ const next = active ? {
204
+ left: active.offsetLeft,
205
+ top: active.offsetTop,
206
+ width: active.offsetWidth,
207
+ height: active.offsetHeight
208
+ } : null;
209
+ setIndicator((current) => current?.left === next?.left && current?.top === next?.top && current?.width === next?.width && current?.height === next?.height ? current : next);
210
+ };
211
+ measure();
212
+ if (typeof ResizeObserver === "undefined") return;
213
+ const observer = new ResizeObserver(measure);
214
+ observer.observe(list);
215
+ for (const trigger of list.querySelectorAll("[data-slot=\"scroll-spy-trigger\"]")) observer.observe(trigger);
216
+ return () => observer.disconnect();
217
+ }, [activeValue]);
218
+ React.useEffect(() => {
219
+ const list = listRef.current;
220
+ if (!(scrollActiveIntoView && list)) return;
221
+ const active = list.querySelector("[data-slot=\"scroll-spy-trigger\"][data-active]");
222
+ if (!active) return;
223
+ const behavior = reducedMotion || !hasFollowedRef.current ? "auto" : "smooth";
224
+ hasFollowedRef.current = true;
225
+ followActiveTrigger(list, active, behavior);
226
+ }, [
227
+ activeValue,
228
+ reducedMotion,
229
+ scrollActiveIntoView
230
+ ]);
231
+ return /* @__PURE__ */ jsxs("nav", {
232
+ ref: listRef,
233
+ "data-slot": "scroll-spy-list",
234
+ "data-variant": resolvedVariant,
235
+ "data-size": resolvedSize,
236
+ "aria-label": ariaLabel,
237
+ className: cn(tabsListVariants({ variant: resolvedVariant }), className),
238
+ style: indicator ? {
239
+ "--active-tab-left": `${indicator.left}px`,
240
+ "--active-tab-top": `${indicator.top}px`,
241
+ "--active-tab-width": `${indicator.width}px`,
242
+ "--active-tab-height": `${indicator.height}px`
243
+ } : void 0,
244
+ ...props,
245
+ children: [children, indicator ? /* @__PURE__ */ jsx("span", {
246
+ "aria-hidden": true,
247
+ className: tabsIndicatorClassName
248
+ }) : null]
249
+ });
250
+ }
251
+ /**
252
+ * Trigger styling, exported so an overflow "More" button outside the list can
253
+ * render the same look — the `Tabs` trigger classes verbatim, so the two
254
+ * components stay pixel-identical.
255
+ */
256
+ const scrollSpyTriggerClassName = tabsTriggerClassName;
257
+ function ScrollSpyTrigger({ className, value, type = "button", onClick, ...props }) {
258
+ const { activeValue, getSectionId, getTriggerId, scrollToSection } = useScrollSpyContext("ScrollSpyTrigger");
259
+ const isActive = activeValue === value;
260
+ return /* @__PURE__ */ jsx("button", {
261
+ "data-slot": "scroll-spy-trigger",
262
+ id: getTriggerId(value),
263
+ type,
264
+ "aria-controls": getSectionId(value),
265
+ "aria-current": isActive ? "location" : void 0,
266
+ "data-active": isActive ? "" : void 0,
267
+ className: cn(scrollSpyTriggerClassName, "cursor-pointer", className),
268
+ onClick: (event) => {
269
+ onClick?.(event);
270
+ if (!event.defaultPrevented) scrollToSection(value);
271
+ },
272
+ ...props
273
+ });
274
+ }
275
+ function ScrollSpyContent({ className, value, style, tabIndex = -1, ...props }) {
276
+ const { activeValue, getSectionId, getTriggerId, registerSection, scrollOffset } = useScrollSpyContext("ScrollSpyContent");
277
+ return /* @__PURE__ */ jsx("section", {
278
+ ref: React.useCallback((element) => {
279
+ registerSection(value, element);
280
+ }, [registerSection, value]),
281
+ "data-slot": "scroll-spy-content",
282
+ "data-active": activeValue === value ? "" : void 0,
283
+ id: getSectionId(value),
284
+ "aria-labelledby": getTriggerId(value),
285
+ tabIndex,
286
+ className: cn("flex-1 text-sm outline-none", className),
287
+ style: {
288
+ scrollMarginTop: scrollOffset,
289
+ ...style
290
+ },
291
+ ...props
292
+ });
293
+ }
294
+ //#endregion
295
+ export { ScrollSpy, ScrollSpyContent, ScrollSpyList, ScrollSpyTrigger, scrollSpyTriggerClassName };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { Search, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "./input-group.js";
4
- import { Search, X } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import * as React from "react";
7
7
  //#region src/search-input.tsx
package/dist/select.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { Check, ChevronDown, ChevronUp } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { SizeProvider, useComponentSize } from "./size-context.js";
4
- import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  import * as React from "react";
@@ -66,7 +66,7 @@ function SelectTrigger({ className, children, unstyled, ...props }) {
66
66
  "data-size": resolvedSize,
67
67
  className: cn(!unstyled && selectTriggerVariants({ size: resolvedSize }), className),
68
68
  ...props,
69
- children: [children, /* @__PURE__ */ jsx(Select$1.Icon, { render: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-line-strong transition-transform group-data-disabled/select-trigger:text-fg-caption-placeholder data-popup-open:rotate-180" }) })]
69
+ children: [children, /* @__PURE__ */ jsx(Select$1.Icon, { render: /* @__PURE__ */ jsx(ChevronDown, { className: "text-line-strong transition-transform group-data-disabled/select-trigger:text-fg-caption-placeholder data-popup-open:rotate-180" }) })]
70
70
  });
71
71
  }
72
72
  function SelectContent({ className, children, side = "bottom", sideOffset = 8, align = "center", alignOffset = 0, alignItemWithTrigger = false, ...props }) {
@@ -111,9 +111,9 @@ function SelectItem({ className, children, ...props }) {
111
111
  children: [multiple ? /* @__PURE__ */ jsx(Select$1.ItemIndicator, {
112
112
  keepMounted: true,
113
113
  className: "flex size-5 shrink-0 items-center justify-center rounded-sm border border-line bg-canvas text-transparent transition-[background-color,border-color,color] group-data-selected/select-item:border-action-primary group-data-selected/select-item:bg-action-primary group-data-selected/select-item:text-fg-on-brand group-data-disabled/select-item:border-line-subtle group-data-disabled/select-item:bg-surface group-data-disabled/select-item:text-fg-caption-placeholder [&>svg]:size-3",
114
- children: /* @__PURE__ */ jsx(CheckIcon, {})
114
+ children: /* @__PURE__ */ jsx(Check, {})
115
115
  }) : null, /* @__PURE__ */ jsx(Select$1.ItemText, {
116
- className: "flex min-w-0 flex-1 shrink-0 gap-2 whitespace-nowrap",
116
+ className: "flex min-w-0 flex-1 shrink-0 items-center gap-2",
117
117
  children
118
118
  })]
119
119
  });
@@ -130,7 +130,7 @@ function SelectScrollUpButton({ className, ...props }) {
130
130
  "data-slot": "select-scroll-up-button",
131
131
  className: cn("sticky top-0 z-10 flex h-7 w-full cursor-default items-center justify-center bg-canvas text-fg-secondary [&_svg:not([class*='size-'])]:size-4", className),
132
132
  ...props,
133
- children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
133
+ children: /* @__PURE__ */ jsx(ChevronUp, {})
134
134
  });
135
135
  }
136
136
  function SelectScrollDownButton({ className, ...props }) {
@@ -138,7 +138,7 @@ function SelectScrollDownButton({ className, ...props }) {
138
138
  "data-slot": "select-scroll-down-button",
139
139
  className: cn("sticky bottom-0 z-10 flex h-7 w-full cursor-default items-center justify-center bg-canvas text-fg-secondary [&_svg:not([class*='size-'])]:size-4", className),
140
140
  ...props,
141
- children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
141
+ children: /* @__PURE__ */ jsx(ChevronDown, {})
142
142
  });
143
143
  }
144
144
  //#endregion
package/dist/sheet.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use client";
2
+ import { X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { SizeProvider } from "./size-context.js";
4
5
  import { Button } from "./button.js";
5
6
  import { DialogNestingProvider, useDialogNestingDepth } from "./dialog-nesting.js";
6
- import { XIcon } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { cva } from "class-variance-authority";
9
9
  import { Dialog } from "@base-ui/react/dialog";
@@ -67,7 +67,7 @@ function SheetContent({ className, children, side = "left", size = "md", showClo
67
67
  variant: "ghost",
68
68
  className: "absolute z-10 size-7 border border-line bg-surface p-0 text-fg-primary shadow-(--elevation-e1-shadow) hover:bg-surface-raised group-data-[nested-dialog-open]/sheet-content:hidden group-data-[side=bottom]/sheet-content:-top-9 group-data-[side=bottom]/sheet-content:right-4 group-data-[side=top]/sheet-content:-bottom-9 group-data-[side=top]/sheet-content:right-4 group-data-[side=left]/sheet-content:-right-9 group-data-[side=left]/sheet-content:top-4 group-data-[side=right]/sheet-content:-left-9 group-data-[side=right]/sheet-content:top-4",
69
69
  size: "icon-xs",
70
- children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
70
+ children: [/* @__PURE__ */ jsx(X, {}), /* @__PURE__ */ jsx("span", {
71
71
  className: "sr-only",
72
72
  children: "Close"
73
73
  })]
package/dist/sidebar.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { Menu } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Separator } from "./separator.js";
4
5
  import { Button } from "./button.js";
@@ -7,7 +8,6 @@ import { t as useUncontrolled } from "./use-uncontrolled-CLfM1XbB.js";
7
8
  import { Skeleton } from "./skeleton.js";
8
9
  import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
9
10
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.js";
10
- import { Menu } from "lucide-react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import { mergeProps } from "@base-ui/react/merge-props";
13
13
  import { useRender } from "@base-ui/react/use-render";
package/dist/stepper.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
+ import { Check } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
- import { CheckIcon } from "lucide-react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { cva } from "class-variance-authority";
6
6
  import * as React from "react";
@@ -88,7 +88,7 @@ function StepperIndicator({ className, state: stateProp, children, ...props }) {
88
88
  "data-state": resolved,
89
89
  className: cn(indicatorVariants({ state: resolved }), className),
90
90
  ...props,
91
- children: children ?? (resolved === "complete" ? /* @__PURE__ */ jsx(CheckIcon, {
91
+ children: children ?? (resolved === "complete" ? /* @__PURE__ */ jsx(Check, {
92
92
  className: "size-4 sm:size-4.5",
93
93
  strokeWidth: 2.5
94
94
  }) : step)