@giddaa-housing/ui 3.1.0 → 3.2.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 (63) 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 +2 -2
  5. package/dist/activity-timeline.js +2 -2
  6. package/dist/alert.js +1 -1
  7. package/dist/breadcrumb.js +3 -3
  8. package/dist/button.js +2 -2
  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.js +1 -1
  29. package/dist/icons.d.ts +93 -0
  30. package/dist/icons.js +905 -0
  31. package/dist/infinite-scroll.js +1 -1
  32. package/dist/input-otp.js +2 -2
  33. package/dist/kpi-card.js +1 -1
  34. package/dist/match.js +1 -1
  35. package/dist/media-gallery-hero.js +1 -1
  36. package/dist/media-player.js +59 -48
  37. package/dist/message.js +1 -1
  38. package/dist/mobile-sidebar.js +4 -4
  39. package/dist/multi-step-form.js +2 -2
  40. package/dist/number-input.js +3 -3
  41. package/dist/pagination.js +4 -4
  42. package/dist/password-input.js +1 -1
  43. package/dist/phone-input.js +4 -4
  44. package/dist/photo-gallery.js +3 -3
  45. package/dist/price-tag.js +1 -1
  46. package/dist/rich-text-editor.js +4 -4
  47. package/dist/search-input.js +1 -1
  48. package/dist/select.js +6 -6
  49. package/dist/sheet.js +2 -2
  50. package/dist/sidebar.js +1 -1
  51. package/dist/stepper.js +2 -2
  52. package/dist/styles.css +176 -17
  53. package/dist/tag.js +1 -1
  54. package/dist/testimonial-block.js +1 -1
  55. package/dist/theme-switcher.d.ts +31 -0
  56. package/dist/theme-switcher.js +78 -0
  57. package/dist/time-picker.js +2 -2
  58. package/dist/toast.d.ts +38 -10
  59. package/dist/toast.js +55 -52
  60. package/dist/top-navbar.js +3 -3
  61. package/dist/video-player-dialog.d.ts +57 -0
  62. package/dist/video-player-dialog.js +188 -0
  63. package/package.json +13 -2
@@ -1,6 +1,6 @@
1
1
  "use client";
2
+ import { Loader2 } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
- import { Loader2 } from "lucide-react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
6
6
  //#region src/lib/use-intersection.ts
package/dist/input-otp.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { Minus } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { InputSizeProvider, useInputComponentSize } from "./input-size-context.js";
4
- import { MinusIcon } from "lucide-react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { OTPField } from "@base-ui/react/otp-field";
@@ -49,7 +49,7 @@ function InputOTPSeparator({ children, className, ...props }) {
49
49
  "data-slot": "input-otp-separator",
50
50
  className: cn("flex items-center justify-center px-1 text-fg-secondary [&_svg:not([class*='size-'])]:size-4", className),
51
51
  ...props,
52
- children: children ?? /* @__PURE__ */ jsx(MinusIcon, {})
52
+ children: children ?? /* @__PURE__ */ jsx(Minus, {})
53
53
  });
54
54
  }
55
55
  //#endregion
package/dist/kpi-card.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { ArrowDown, ArrowUp, ArrowUpRight } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Skeleton } from "./skeleton.js";
4
- import { ArrowDown, ArrowUp, ArrowUpRight } from "lucide-react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { mergeProps } from "@base-ui/react/merge-props";
7
7
  import { useRender } from "@base-ui/react/use-render";
package/dist/match.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { ChevronDown } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { CircularProgress } from "./progress.js";
4
- import { ChevronDown } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  //#region src/match.tsx
@@ -1,10 +1,10 @@
1
1
  "use client";
2
+ import { Play } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { buttonVariants } from "./button.js";
4
5
  import { Carousel, CarouselContent, CarouselItem, useCarousel } from "./carousel.js";
5
6
  import { GalleryIndicator } from "./gallery-indicator.js";
6
7
  import { ReviewBlock } from "./review-block.js";
7
- import { Play } from "lucide-react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import { cva } from "class-variance-authority";
10
10
  //#region src/media-gallery-hero.tsx
@@ -1,8 +1,8 @@
1
1
  "use client";
2
+ import { Captions, CaptionsOff, Maximize, Minimize, Pause, PictureInPicture2, Play, RefreshCcw, Repeat2, RotateCcw, RotateCw, Settings, TriangleAlert, Volume1, Volume2, VolumeX } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./dropdown-menu.js";
4
5
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
5
- import { Captions, CaptionsOff, Maximize, Minimize, Pause, PictureInPicture2, Play, RefreshCcw, Repeat2, RotateCcw, RotateCw, Settings, TriangleAlert, Volume1, Volume2, VolumeX } from "lucide-react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import * as React from "react";
8
8
  import { Slider } from "@base-ui/react/slider";
@@ -20,6 +20,9 @@ const DEFAULT_PLAYBACK_RATES = [
20
20
  ];
21
21
  const CONTROLS_HIDE_DELAY = 2500;
22
22
  const SEEK_PREVIEW_WIDTH = 160;
23
+ const SEEK_CHAPTER_GAP = 3;
24
+ const SEEK_THUMB_SIZE = 14;
25
+ const SEEK_THUMB_INSET = SEEK_THUMB_SIZE / 2;
23
26
  const MediaPlayerContext = React.createContext({
24
27
  onMenuOpenChange: () => {},
25
28
  portalContainer: null,
@@ -73,11 +76,8 @@ function clamp(value, min, max) {
73
76
  }
74
77
  function getSeekValueFromPointer(event, min, max) {
75
78
  const rect = event.currentTarget.getBoundingClientRect();
76
- const percent = clamp((event.clientX - rect.left) / rect.width, 0, 1);
77
- return {
78
- percent: percent * 100,
79
- value: min + percent * (max - min)
80
- };
79
+ const travel = Math.max(rect.width - SEEK_THUMB_SIZE, 1);
80
+ return min + clamp((event.clientX - rect.left - SEEK_THUMB_INSET) / travel, 0, 1) * (max - min);
81
81
  }
82
82
  function MediaPlayer({ mediaStore, ...props }) {
83
83
  const audio = props.audio ?? (hasAudioChild(props.children) ? true : void 0);
@@ -272,7 +272,7 @@ function MediaPlayerVideo({ className, ref, ...props }) {
272
272
  setRef(ref, node);
273
273
  }, [ref]),
274
274
  "data-slot": "media-player-video",
275
- className: cn("block aspect-video size-full object-cover", "group-data-[fullscreen]/media-player:aspect-auto group-data-[fullscreen]/media-player:object-contain", className),
275
+ className: cn("block aspect-video size-full rounded-[inherit] object-cover", "group-data-[fullscreen]/media-player:aspect-auto group-data-[fullscreen]/media-player:object-contain", className),
276
276
  playsInline: true,
277
277
  ...props
278
278
  });
@@ -646,24 +646,28 @@ function MediaPlayerSeek({ className, disabled, onValueChange, "aria-label": ari
646
646
  detail: void 0
647
647
  });
648
648
  };
649
+ const toFraction = (value) => canSeek ? (clamp(value, min, max) - min) / (max - min) : 0;
650
+ const toTrackOffset = (fraction) => {
651
+ if (fraction <= 0) return "0px";
652
+ if (fraction >= 1) return "100%";
653
+ return `calc(${SEEK_THUMB_INSET}px + ${fraction} * (100% - ${SEEK_THUMB_SIZE}px))`;
654
+ };
649
655
  const previewValue = dragValue ?? hoverValue;
650
- const previewPercent = previewValue !== null && canSeek ? (clamp(previewValue, min, max) - min) / (max - min) * 100 : 0;
651
656
  const previewChapter = previewValue !== null ? chapterCues?.find((cue) => previewValue >= cue.startTime && previewValue < cue.endTime) : void 0;
652
657
  const previewCoordValues = previewCoords?.map(Number);
653
658
  const hasSpriteCoords = previewCoordValues?.length === 4 && (previewCoordValues[2] ?? 0) > 0;
654
659
  const previewScale = hasSpriteCoords ? SEEK_PREVIEW_WIDTH / (previewCoordValues?.[2] ?? 1) : 1;
655
660
  const previewClampPx = previewImage ? 84 : 32;
656
661
  const controlRect = withTime && previewValue !== null ? controlRef.current?.getBoundingClientRect() : void 0;
657
- const previewLeft = controlRect ? clamp(controlRect.left + previewPercent / 100 * controlRect.width, controlRect.left + previewClampPx, controlRect.right - previewClampPx) : 0;
658
- const segmentBounds = canSeek ? [
659
- min,
660
- ...(chapterCues ?? []).map((cue) => cue.startTime).filter((time) => time > min && time < max).sort((a, b) => a - b),
661
- max
662
- ] : [0, 1];
663
- const segments = segmentBounds.slice(0, -1).map((start, index) => ({
664
- start,
665
- end: segmentBounds[index + 1] ?? start
666
- }));
662
+ const previewLeft = controlRect ? clamp(controlRect.left + SEEK_THUMB_INSET + toFraction(previewValue ?? 0) * (controlRect.width - SEEK_THUMB_SIZE), controlRect.left + previewClampPx, controlRect.right - previewClampPx) : 0;
663
+ const playedFraction = toFraction(displayTime);
664
+ const chapterStops = canSeek ? (chapterCues ?? []).map((cue) => toFraction(cue.startTime)).filter((fraction) => fraction > 0 && fraction < 1).sort((a, b) => a - b).map(toTrackOffset) : [];
665
+ const trackMask = chapterStops.length ? `linear-gradient(to right, #000 0, ${chapterStops.flatMap((offset) => [
666
+ `#000 calc(${offset} - ${SEEK_CHAPTER_GAP / 2}px)`,
667
+ `transparent calc(${offset} - ${SEEK_CHAPTER_GAP / 2}px)`,
668
+ `transparent calc(${offset} + ${SEEK_CHAPTER_GAP / 2}px)`,
669
+ `#000 calc(${offset} + ${SEEK_CHAPTER_GAP / 2}px)`
670
+ ]).join(", ")}, #000 100%)` : void 0;
667
671
  return /* @__PURE__ */ jsxs(Slider.Root, {
668
672
  thumbAlignment: "edge",
669
673
  "data-slot": "media-player-seek",
@@ -735,45 +739,52 @@ function MediaPlayerSeek({ className, disabled, onValueChange, "aria-label": ari
735
739
  ]
736
740
  }), portalContainer ?? document.body), /* @__PURE__ */ jsxs(Slider.Control, {
737
741
  ref: controlRef,
738
- className: "flex h-8 w-full items-center",
742
+ className: "relative flex h-8 w-full items-center",
739
743
  onPointerLeave: () => {
740
744
  if (dragValue === null) clearPreview();
741
745
  },
742
746
  onPointerMove: (event) => {
743
747
  if (resolvedDisabled || dragValue !== null) return;
744
748
  const next = getSeekValueFromPointer(event, min, max);
745
- setHoverValue(next.value);
746
- previewAt(next.value);
749
+ setHoverValue(next);
750
+ previewAt(next);
747
751
  },
748
- children: [/* @__PURE__ */ jsx(Slider.Track, {
749
- className: "relative flex h-2 w-full items-center gap-[3px]",
750
- children: segments.map(({ start, end }) => {
751
- const span = end - start || 1;
752
- const fraction = (value) => clamp((clamp(value, start, end) - start) / span, 0, 1);
753
- const playedWidth = fraction(displayTime) * 100;
754
- return /* @__PURE__ */ jsxs("span", {
755
- "data-slot": "media-player-seek-segment",
756
- className: "relative h-full overflow-hidden rounded-full bg-line-subtle/65",
757
- style: { width: `${span / (max - min || 1) * 100}%` },
758
- children: [canSeek && buffered?.map(([bufferStart, bufferEnd]) => bufferEnd > start && bufferStart < end ? /* @__PURE__ */ jsx("span", {
759
- "data-slot": "media-player-seek-buffered",
760
- className: "absolute inset-y-0 bg-fg-on-brand/25",
761
- style: {
762
- left: `${fraction(bufferStart) * 100}%`,
763
- width: `${(fraction(bufferEnd) - fraction(bufferStart)) * 100}%`
764
- }
765
- }, `${bufferStart}-${bufferEnd}`) : null), /* @__PURE__ */ jsx("span", {
766
- "data-slot": "media-player-seek-progress",
767
- "data-dragging": dragValue !== null || void 0,
768
- className: "absolute inset-y-0 left-0 w-full origin-left bg-surface-brand transition-transform duration-200 ease-linear data-[dragging=true]:transition-none",
769
- style: { transform: `scaleX(${playedWidth / 100})` }
770
- })]
771
- }, start);
772
- })
752
+ children: [/* @__PURE__ */ jsxs(Slider.Track, {
753
+ className: "relative h-2 w-full overflow-hidden rounded-full bg-line-subtle/65",
754
+ style: trackMask ? {
755
+ maskImage: trackMask,
756
+ WebkitMaskImage: trackMask
757
+ } : void 0,
758
+ children: [
759
+ canSeek && buffered?.map(([bufferStart, bufferEnd]) => /* @__PURE__ */ jsx("span", {
760
+ "data-slot": "media-player-seek-buffered",
761
+ className: "absolute inset-y-0 bg-fg-on-brand/25",
762
+ style: {
763
+ left: toTrackOffset(toFraction(bufferStart)),
764
+ right: `calc(100% - ${toTrackOffset(toFraction(bufferEnd))})`
765
+ }
766
+ }, `${bufferStart}-${bufferEnd}`)),
767
+ /* @__PURE__ */ jsx("span", {
768
+ "data-slot": "media-player-seek-progress",
769
+ className: "absolute inset-y-0 left-0 bg-surface-brand",
770
+ style: { width: SEEK_THUMB_INSET }
771
+ }),
772
+ /* @__PURE__ */ jsx("span", {
773
+ "data-slot": "media-player-seek-progress",
774
+ "data-dragging": dragValue !== null || void 0,
775
+ className: "absolute inset-y-0 origin-left bg-surface-brand transition-transform duration-200 ease-linear data-[dragging=true]:transition-none",
776
+ style: {
777
+ left: SEEK_THUMB_INSET,
778
+ transform: `scaleX(${playedFraction})`,
779
+ width: `calc(100% - ${SEEK_THUMB_SIZE}px)`
780
+ }
781
+ })
782
+ ]
773
783
  }), /* @__PURE__ */ jsx(Slider.Thumb, {
774
784
  getAriaLabel: () => ariaLabel ?? "Media timeline",
775
785
  getAriaValueText: (_formatted, value) => `${formatTime(value)} of ${formatTime(max)}`,
776
- className: cn("size-3.5 -translate-x-1/2 rounded-full bg-surface-overlay shadow-2 ring-2 ring-surface-brand outline-none", "transition-[scale] duration-[var(--duration-motion-press)] ease-gdt-out data-[dragging]:scale-125 motion-reduce:data-[dragging]:scale-100 data-[dragging]:transition-none", "focus-visible:[filter:drop-shadow(0_0_0.25rem_var(--color-line-focus))]")
786
+ className: cn("group/seek-thumb size-[14px] rounded-full outline-none", "transition-[inset-inline-start] duration-200 ease-linear data-[dragging]:transition-none"),
787
+ children: /* @__PURE__ */ jsx("span", { className: cn("block size-full rounded-full border-2 border-surface-brand bg-surface-overlay shadow-2", "transition-[scale] duration-[var(--duration-motion-press)] ease-gdt-out group-data-[dragging]/seek-thumb:scale-125 motion-reduce:group-data-[dragging]/seek-thumb:scale-100", "group-has-[:focus-visible]/seek-thumb:[filter:drop-shadow(0_0_0.25rem_var(--color-line-focus))]") })
777
788
  })]
778
789
  })]
779
790
  });
@@ -888,7 +899,7 @@ function MediaPlayerError({ children, className, ...props }) {
888
899
  return /* @__PURE__ */ jsx("div", {
889
900
  "data-slot": "media-player-error",
890
901
  role: "alert",
891
- className: cn("absolute inset-0 z-20 flex flex-col items-center justify-center gap-1 bg-canvas/85 px-6 text-center text-fg-primary backdrop-blur-sm rounded-2xl", className),
902
+ className: cn("absolute inset-0 z-20 flex flex-col items-center justify-center gap-1 rounded-[inherit] bg-canvas/85 px-6 text-center text-fg-primary backdrop-blur-sm", className),
892
903
  ...props,
893
904
  children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
894
905
  /* @__PURE__ */ jsx(TriangleAlert, {
package/dist/message.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
+ import { CheckCheck } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
- import { CheckCheck } from "lucide-react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { mergeProps } from "@base-ui/react/merge-props";
6
6
  import { useRender } from "@base-ui/react/use-render";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
+ import { ChevronDown, Menu, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./collapsible.js";
4
5
  import { Sheet, SheetBody, SheetClose, SheetContent, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from "./sheet.js";
5
- import { ChevronDownIcon, MenuIcon, XIcon } from "lucide-react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { mergeProps } from "@base-ui/react/merge-props";
8
8
  import { useRender } from "@base-ui/react/use-render";
@@ -15,7 +15,7 @@ function MobileSidebarTrigger({ className, children, ...props }) {
15
15
  "data-slot": "mobile-sidebar-trigger",
16
16
  className: cn("inline-flex size-10 items-center justify-center rounded-lg text-fg-secondary outline-none transition-[background-color,color,translate] duration-(--duration-motion-press) ease-gdt-out hover:bg-surface hover:text-fg-primary focus-visible:shadow-[0_0_0_2px_var(--color-line-focus)] active:translate-y-px motion-reduce:active:translate-y-0", className),
17
17
  ...props,
18
- children: children ?? /* @__PURE__ */ jsx(MenuIcon, {
18
+ children: children ?? /* @__PURE__ */ jsx(Menu, {
19
19
  "aria-hidden": "true",
20
20
  className: "size-6"
21
21
  })
@@ -50,7 +50,7 @@ function MobileSidebarClose({ className, children, ...props }) {
50
50
  "data-slot": "mobile-sidebar-close",
51
51
  className: cn("inline-flex size-8 shrink-0 items-center justify-center rounded-lg text-fg-primary outline-none transition-[background-color,translate] duration-(--duration-motion-press) ease-gdt-out hover:bg-surface focus-visible:shadow-[0_0_0_2px_var(--color-line-focus)] active:translate-y-px motion-reduce:active:translate-y-0", className),
52
52
  ...props,
53
- children: children ?? /* @__PURE__ */ jsx(XIcon, {
53
+ children: children ?? /* @__PURE__ */ jsx(X, {
54
54
  "aria-hidden": "true",
55
55
  className: "size-5"
56
56
  })
@@ -137,7 +137,7 @@ function MobileSidebarGroupTrigger({ active = false, icon, className, children,
137
137
  className: "min-w-0 truncate",
138
138
  children
139
139
  })]
140
- }), /* @__PURE__ */ jsx(ChevronDownIcon, {
140
+ }), /* @__PURE__ */ jsx(ChevronDown, {
141
141
  "aria-hidden": "true",
142
142
  className: "size-4 shrink-0 text-current transition-transform duration-(--duration-motion-press) ease-gdt-out group-data-[panel-open]/collapsible-trigger:rotate-180 motion-reduce:transition-none"
143
143
  })]
@@ -1,9 +1,9 @@
1
1
  "use client";
2
+ import { Check } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { t as useUncontrolled } from "./use-uncontrolled-CLfM1XbB.js";
4
5
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select.js";
5
6
  import { Progress, ProgressIndicator, ProgressTrack } from "./progress.js";
6
- import { CheckIcon } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import * as React from "react";
9
9
  //#region src/multi-step-form.tsx
@@ -181,7 +181,7 @@ function MultiStepFormIndicator({ type = "stepper", progressValue, showNextLabel
181
181
  children: [/* @__PURE__ */ jsx("span", {
182
182
  className: "transition-opacity duration-[var(--duration-motion-press)] ease-gdt-out group-data-[state=complete]/multi-step-form-step:opacity-0",
183
183
  children: index + 1
184
- }), /* @__PURE__ */ jsx(CheckIcon, {
184
+ }), /* @__PURE__ */ jsx(Check, {
185
185
  "aria-hidden": "true",
186
186
  strokeWidth: 2.5,
187
187
  className: "absolute inset-0 m-auto size-4.5 scale-95 opacity-0 transition-[opacity,scale] duration-[var(--duration-motion-press)] ease-gdt-out motion-reduce:scale-100 group-data-[state=complete]/multi-step-form-step:scale-100 group-data-[state=complete]/multi-step-form-step:opacity-100"
@@ -1,8 +1,8 @@
1
1
  "use client";
2
+ import { Minus, Plus } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { SizeProvider, useComponentSize } from "./size-context.js";
4
5
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "./input-group.js";
5
- import { MinusIcon, PlusIcon } from "lucide-react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { NumberField } from "@base-ui/react/number-field";
8
8
  //#region src/number-input.tsx
@@ -52,14 +52,14 @@ function NumberInputControl() {
52
52
  children: [/* @__PURE__ */ jsx(NumberField.Increment, {
53
53
  className: "w-full flex-1 rounded-none rounded-tr-full",
54
54
  render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "tertiary" }),
55
- children: /* @__PURE__ */ jsx(PlusIcon, { className: cn("size-1.5", {
55
+ children: /* @__PURE__ */ jsx(Plus, { className: cn("size-1.5", {
56
56
  "size-3": size === "md",
57
57
  "size-3.5": size === "lg"
58
58
  }) })
59
59
  }), /* @__PURE__ */ jsx(NumberField.Decrement, {
60
60
  className: "w-full flex-1 rounded-none rounded-br-full",
61
61
  render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "tertiary" }),
62
- children: /* @__PURE__ */ jsx(MinusIcon, { className: cn("size-1.5", {
62
+ children: /* @__PURE__ */ jsx(Minus, { className: cn("size-1.5", {
63
63
  "size-3": size === "md",
64
64
  "size-3.5": size === "lg"
65
65
  }) })
@@ -1,6 +1,6 @@
1
+ import { ChevronLeft, ChevronRight, MoreHorizontal } from "./icons.js";
1
2
  import { t as cn } from "./cn-BI_4DMBf.js";
2
3
  import { Button, ButtonLink } from "./button.js";
3
- import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { cva } from "class-variance-authority";
6
6
  //#region src/pagination.tsx
@@ -103,7 +103,7 @@ function PaginationPrevious({ className, showLabel = true, text = "Previous", ..
103
103
  appearance: showLabel ? "control" : "icon",
104
104
  className: cn(showLabel ? "pl-1.5!" : "", className),
105
105
  ...props,
106
- children: [/* @__PURE__ */ jsx(ChevronLeftIcon, {
106
+ children: [/* @__PURE__ */ jsx(ChevronLeft, {
107
107
  "data-icon": "inline-start",
108
108
  className: "cn-rtl-flip"
109
109
  }), showLabel ? /* @__PURE__ */ jsx("span", {
@@ -121,7 +121,7 @@ function PaginationNext({ className, showLabel = true, text = "Next", ...props }
121
121
  children: [showLabel ? /* @__PURE__ */ jsx("span", {
122
122
  className: "hidden sm:block",
123
123
  children: text
124
- }) : null, /* @__PURE__ */ jsx(ChevronRightIcon, {
124
+ }) : null, /* @__PURE__ */ jsx(ChevronRight, {
125
125
  "data-icon": "inline-end",
126
126
  className: "cn-rtl-flip"
127
127
  })]
@@ -133,7 +133,7 @@ function PaginationEllipsis({ className, ...props }) {
133
133
  "data-slot": "pagination-ellipsis",
134
134
  className: cn("flex size-8 items-center justify-center text-fg-secondary [&_svg:not([class*='size-'])]:size-4", className),
135
135
  ...props,
136
- children: [/* @__PURE__ */ jsx(MoreHorizontalIcon, {}), /* @__PURE__ */ jsx("span", {
136
+ children: [/* @__PURE__ */ jsx(MoreHorizontal, {}), /* @__PURE__ */ jsx("span", {
137
137
  className: "sr-only",
138
138
  children: "More pages"
139
139
  })]
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { Eye, EyeOff } 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 { Eye, EyeOff } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import * as React from "react";
7
7
  //#region src/password-input.tsx
@@ -1,10 +1,10 @@
1
1
  "use client";
2
+ import { Check, ChevronDown, Search } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { useComponentSize } from "./size-context.js";
4
5
  import { Separator } from "./separator.js";
5
6
  import { InputGroup, InputGroupAddon, InputGroupInput } from "./input-group.js";
6
7
  import { Popover, PopoverContent, PopoverTrigger } from "./popover.js";
7
- import { CheckIcon, ChevronDownIcon, SearchIcon } from "lucide-react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import * as React from "react";
10
10
  import { AsYouType, getCountries, getCountryCallingCode, parsePhoneNumber } from "libphonenumber-js";
@@ -109,7 +109,7 @@ function CountryList({ items, country, onSelect }) {
109
109
  className: "shrink-0 text-fg-secondary",
110
110
  children: ["+", entry.calling]
111
111
  }),
112
- selected && /* @__PURE__ */ jsx(CheckIcon, { className: "size-4 shrink-0 text-fg-brand" })
112
+ selected && /* @__PURE__ */ jsx(Check, { className: "size-4 shrink-0 text-fg-brand" })
113
113
  ]
114
114
  }, entry.code);
115
115
  })
@@ -147,7 +147,7 @@ function CountrySelect({ country, size, disabled, onSelect, finalFocusRef }) {
147
147
  size
148
148
  }),
149
149
  /* @__PURE__ */ jsxs("span", { children: ["+", getCountryCallingCode(country)] }),
150
- /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-fg-secondary transition-transform", open && "rotate-180", size === "lg" ? "size-4" : "size-3.5") })
150
+ /* @__PURE__ */ jsx(ChevronDown, { className: cn("text-fg-secondary transition-transform", open && "rotate-180", size === "lg" ? "size-4" : "size-3.5") })
151
151
  ]
152
152
  }), /* @__PURE__ */ jsxs(PopoverContent, {
153
153
  showArrow: false,
@@ -158,7 +158,7 @@ function CountrySelect({ country, size, disabled, onSelect, finalFocusRef }) {
158
158
  className: "w-72 gap-0 overflow-hidden p-0",
159
159
  children: [/* @__PURE__ */ jsxs("div", {
160
160
  className: "flex items-center gap-2 border-b border-line-subtle px-3.5 py-2.5",
161
- children: [/* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 text-fg-secondary" }), /* @__PURE__ */ jsx("input", {
161
+ children: [/* @__PURE__ */ jsx(Search, { className: "size-4 shrink-0 text-fg-secondary" }), /* @__PURE__ */ jsx("input", {
162
162
  ref: searchRef,
163
163
  value: query,
164
164
  onChange: (event) => setQuery(event.target.value),
@@ -1,8 +1,8 @@
1
1
  "use client";
2
+ import { ChevronLeft, ChevronRight, Fullscreen, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Button } from "./button.js";
4
5
  import { Carousel, CarouselContent, CarouselItem } from "./carousel.js";
5
- import { ChevronLeftIcon, ChevronRightIcon, Fullscreen, XIcon } from "lucide-react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import * as React from "react";
8
8
  import { Dialog } from "@base-ui/react/dialog";
@@ -113,7 +113,7 @@ function GalleryButton({ className, variant = "ghost", ...rest }) {
113
113
  }
114
114
  /** Circular floating navigation button. Always present; the track loops. */
115
115
  function GalleryArrow({ side, onClick, className }) {
116
- const Icon = side === "prev" ? ChevronLeftIcon : ChevronRightIcon;
116
+ const Icon = side === "prev" ? ChevronLeft : ChevronRight;
117
117
  return /* @__PURE__ */ jsx(GalleryButton, {
118
118
  type: "button",
119
119
  "data-slot": `photo-gallery-${side}`,
@@ -272,7 +272,7 @@ function PhotoGalleryFullscreen({ images, open, onOpenChange, index, onIndexChan
272
272
  "data-slot": "photo-gallery-fullscreen-close",
273
273
  "aria-label": "Close gallery",
274
274
  render: /* @__PURE__ */ jsx(GalleryButton, {}),
275
- children: /* @__PURE__ */ jsx(XIcon, { className: "size-4 sm:size-5" })
275
+ children: /* @__PURE__ */ jsx(X, { className: "size-4 sm:size-5" })
276
276
  })]
277
277
  }),
278
278
  /* @__PURE__ */ jsxs(Carousel, {
package/dist/price-tag.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
+ import { Check, ChevronDown } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
- import { Check, ChevronDown } from "lucide-react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { cva } from "class-variance-authority";
6
6
  import { Popover } from "@base-ui/react/popover";
@@ -1,15 +1,15 @@
1
1
  "use client";
2
+ import { AlignCenter, AlignJustify, AlignLeft, AlignRight, Baseline, Bold, ChevronDown, Code2, Image as Image$1, Italic, Link2, List, ListOrdered, Quote, Redo2, Underline, Undo2 } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { useComponentSize } from "./size-context.js";
4
5
  import { Button } from "./button.js";
5
6
  import { Input } from "./input.js";
6
7
  import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger } from "./dropdown-menu.js";
7
8
  import { Popover, PopoverContent, PopoverTrigger } from "./popover.js";
8
- import { AlignCenter, AlignJustify, AlignLeft, AlignRight, Baseline, Bold, ChevronDown, Code2, ImageIcon, Italic, Link2, List, ListOrdered, Quote, Redo2, Underline, Undo2 } from "lucide-react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import * as React from "react";
11
11
  import { Color } from "@tiptap/extension-color";
12
- import { Image as Image$1 } from "@tiptap/extension-image";
12
+ import { Image } from "@tiptap/extension-image";
13
13
  import { Placeholder } from "@tiptap/extension-placeholder";
14
14
  import { TextAlign } from "@tiptap/extension-text-align";
15
15
  import { TextStyle } from "@tiptap/extension-text-style";
@@ -283,7 +283,7 @@ function ImageControl({ tokens, disabled, onInsert }) {
283
283
  title: "Insert image",
284
284
  onMouseDown: (event) => event.preventDefault(),
285
285
  className: toolbarControlClass(tokens, false),
286
- children: /* @__PURE__ */ jsx(ImageIcon, {})
286
+ children: /* @__PURE__ */ jsx(Image$1, {})
287
287
  }), /* @__PURE__ */ jsx(PopoverContent, {
288
288
  showArrow: false,
289
289
  align: "start",
@@ -387,7 +387,7 @@ const RichTextEditor = React.forwardRef(function RichTextEditor({ value, default
387
387
  TextStyle,
388
388
  Color,
389
389
  TextAlign.configure({ types: ["heading", "paragraph"] }),
390
- Image$1.configure({
390
+ Image.configure({
391
391
  inline: false,
392
392
  allowBase64: true
393
393
  }),
@@ -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)