@giddaa-housing/ui 3.0.1 → 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 (100) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +173 -2
  3. package/css/preset.css +8 -1
  4. package/css/theme.css +4 -1
  5. package/dist/accordion.js +2 -2
  6. package/dist/activity-timeline.js +5 -5
  7. package/dist/alert.js +1 -1
  8. package/dist/auth-layout.js +18 -18
  9. package/dist/bar-chart.d.ts +1 -1
  10. package/dist/breadcrumb.js +3 -3
  11. package/dist/bullet-chart.d.ts +1 -1
  12. package/dist/button-group.d.ts +1 -1
  13. package/dist/button.js +2 -2
  14. package/dist/calendar.js +3 -3
  15. package/dist/call-card.js +1 -1
  16. package/dist/carousel.d.ts +1 -1
  17. package/dist/carousel.js +3 -3
  18. package/dist/chart.d.ts +1 -1
  19. package/dist/chart.js +1 -1
  20. package/dist/chat.js +1 -1
  21. package/dist/checkbox.js +2 -2
  22. package/dist/combobox.d.ts +1 -1
  23. package/dist/combobox.js +6 -6
  24. package/dist/cta.js +3 -3
  25. package/dist/currency-selector.d.ts +10 -8
  26. package/dist/currency-selector.js +247 -28
  27. package/dist/data-table.js +2 -2
  28. package/dist/date-picker.js +6 -6
  29. package/dist/dialog.js +2 -2
  30. package/dist/dropdown-menu.d.ts +1 -1
  31. package/dist/dropdown-menu.js +20 -20
  32. package/dist/dropzone.js +1 -1
  33. package/dist/editorial-card.d.ts +20 -11
  34. package/dist/editorial-card.js +67 -2
  35. package/dist/file-upload.js +1 -1
  36. package/dist/filter.js +1 -1
  37. package/dist/footer.d.ts +4 -2
  38. package/dist/footer.js +38 -34
  39. package/dist/funnel-chart.d.ts +1 -1
  40. package/dist/heatmap-chart.d.ts +1 -1
  41. package/dist/icons.d.ts +93 -0
  42. package/dist/icons.js +905 -0
  43. package/dist/infinite-scroll.js +1 -1
  44. package/dist/input-group.js +4 -5
  45. package/dist/input-otp.js +2 -2
  46. package/dist/input-size-context.js +4 -2
  47. package/dist/input.js +1 -1
  48. package/dist/kpi-card.js +1 -1
  49. package/dist/line-chart.d.ts +1 -1
  50. package/dist/mask-input.d.ts +61 -0
  51. package/dist/mask-input.js +0 -0
  52. package/dist/match.js +1 -1
  53. package/dist/media-gallery-hero.js +1 -1
  54. package/dist/media-player.js +59 -48
  55. package/dist/message.js +1 -1
  56. package/dist/mobile-sidebar.d.ts +57 -0
  57. package/dist/mobile-sidebar.js +196 -0
  58. package/dist/multi-step-form.js +2 -2
  59. package/dist/number-input.d.ts +1 -1
  60. package/dist/number-input.js +3 -3
  61. package/dist/pagination.js +4 -4
  62. package/dist/password-input.js +1 -1
  63. package/dist/phone-input.d.ts +1 -1
  64. package/dist/phone-input.js +4 -4
  65. package/dist/photo-gallery.js +3 -3
  66. package/dist/pie-chart.d.ts +1 -1
  67. package/dist/popover.d.ts +1 -1
  68. package/dist/price-tag.js +1 -1
  69. package/dist/radar-chart.d.ts +1 -1
  70. package/dist/rich-text-editor.d.ts +1 -1
  71. package/dist/rich-text-editor.js +4 -4
  72. package/dist/scatter-chart.d.ts +1 -1
  73. package/dist/search-input.js +1 -1
  74. package/dist/select.d.ts +1 -1
  75. package/dist/select.js +6 -6
  76. package/dist/sheet.js +2 -2
  77. package/dist/sidebar.js +1 -1
  78. package/dist/{size-context-D4mYvcg8.d.ts → size-context-BX6kAdVj.d.ts} +2 -1
  79. package/dist/size-context.d.ts +2 -2
  80. package/dist/size-context.js +5 -2
  81. package/dist/sparkline.d.ts +1 -1
  82. package/dist/stepper.js +2 -2
  83. package/dist/styles.css +681 -128
  84. package/dist/table.js +2 -2
  85. package/dist/tabs.d.ts +1 -1
  86. package/dist/tag.d.ts +1 -1
  87. package/dist/tag.js +1 -1
  88. package/dist/testimonial-block.js +1 -1
  89. package/dist/theme-switcher.d.ts +31 -0
  90. package/dist/theme-switcher.js +78 -0
  91. package/dist/time-picker.js +2 -2
  92. package/dist/toast.d.ts +38 -10
  93. package/dist/toast.js +55 -52
  94. package/dist/top-navbar.d.ts +100 -0
  95. package/dist/top-navbar.js +295 -0
  96. package/dist/tree-map.d.ts +1 -1
  97. package/dist/video-player-dialog.d.ts +57 -0
  98. package/dist/video-player-dialog.js +188 -0
  99. package/dist/waterfall-chart.d.ts +1 -1
  100. package/package.json +25 -2
@@ -1,15 +1,15 @@
1
1
  "use client";
2
+ import { Check, ChevronRight } 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, ChevronRightIcon } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
- import { Menu as Menu$1 } from "@base-ui/react/menu";
7
+ import { Menu } from "@base-ui/react/menu";
8
8
  //#region src/dropdown-menu.tsx
9
9
  function DropdownMenu({ children, size, ...props }) {
10
10
  return /* @__PURE__ */ jsx(SizeProvider, {
11
11
  size,
12
- children: /* @__PURE__ */ jsx(Menu$1.Root, {
12
+ children: /* @__PURE__ */ jsx(Menu.Root, {
13
13
  "data-slot": "dropdown-menu",
14
14
  ...props,
15
15
  children
@@ -17,13 +17,13 @@ function DropdownMenu({ children, size, ...props }) {
17
17
  });
18
18
  }
19
19
  function DropdownMenuPortal({ ...props }) {
20
- return /* @__PURE__ */ jsx(Menu$1.Portal, {
20
+ return /* @__PURE__ */ jsx(Menu.Portal, {
21
21
  "data-slot": "dropdown-menu-portal",
22
22
  ...props
23
23
  });
24
24
  }
25
25
  function DropdownMenuTrigger({ ...props }) {
26
- return /* @__PURE__ */ jsx(Menu$1.Trigger, {
26
+ return /* @__PURE__ */ jsx(Menu.Trigger, {
27
27
  "data-slot": "dropdown-menu-trigger",
28
28
  ...props
29
29
  });
@@ -54,15 +54,15 @@ const dropdownMenuLabelVariants = cva("font-medium text-fg-secondary data-inset:
54
54
  });
55
55
  function DropdownMenuContent({ align = "start", alignOffset = 0, side = "bottom", sideOffset = 6, className, container, ...props }) {
56
56
  const resolvedSize = useComponentSize();
57
- return /* @__PURE__ */ jsx(Menu$1.Portal, {
57
+ return /* @__PURE__ */ jsx(Menu.Portal, {
58
58
  container,
59
- children: /* @__PURE__ */ jsx(Menu$1.Positioner, {
59
+ children: /* @__PURE__ */ jsx(Menu.Positioner, {
60
60
  className: "isolate z-50 outline-none",
61
61
  align,
62
62
  alignOffset,
63
63
  side,
64
64
  sideOffset,
65
- children: /* @__PURE__ */ jsx(Menu$1.Popup, {
65
+ children: /* @__PURE__ */ jsx(Menu.Popup, {
66
66
  "data-slot": "dropdown-menu-content",
67
67
  "data-size": resolvedSize,
68
68
  className: cn(dropdownMenuContentVariants({ size: resolvedSize }), className),
@@ -72,7 +72,7 @@ function DropdownMenuContent({ align = "start", alignOffset = 0, side = "bottom"
72
72
  });
73
73
  }
74
74
  function DropdownMenuGroup({ className, ...props }) {
75
- return /* @__PURE__ */ jsx(Menu$1.Group, {
75
+ return /* @__PURE__ */ jsx(Menu.Group, {
76
76
  "data-slot": "dropdown-menu-group",
77
77
  className: cn("scroll-my-1 space-y-0.5", className),
78
78
  ...props
@@ -80,7 +80,7 @@ function DropdownMenuGroup({ className, ...props }) {
80
80
  }
81
81
  function DropdownMenuLabel({ className, inset, ...props }) {
82
82
  const resolvedSize = useComponentSize();
83
- return /* @__PURE__ */ jsx(Menu$1.GroupLabel, {
83
+ return /* @__PURE__ */ jsx(Menu.GroupLabel, {
84
84
  "data-slot": "dropdown-menu-label",
85
85
  "data-inset": inset,
86
86
  className: cn(dropdownMenuLabelVariants({ size: resolvedSize }), className),
@@ -89,7 +89,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
89
89
  }
90
90
  function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
91
91
  const resolvedSize = useComponentSize();
92
- return /* @__PURE__ */ jsx(Menu$1.Item, {
92
+ return /* @__PURE__ */ jsx(Menu.Item, {
93
93
  "data-slot": "dropdown-menu-item",
94
94
  "data-inset": inset,
95
95
  "data-size": resolvedSize,
@@ -99,20 +99,20 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
99
99
  });
100
100
  }
101
101
  function DropdownMenuSub({ ...props }) {
102
- return /* @__PURE__ */ jsx(Menu$1.SubmenuRoot, {
102
+ return /* @__PURE__ */ jsx(Menu.SubmenuRoot, {
103
103
  "data-slot": "dropdown-menu-sub",
104
104
  ...props
105
105
  });
106
106
  }
107
107
  function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
108
108
  const resolvedSize = useComponentSize();
109
- return /* @__PURE__ */ jsxs(Menu$1.SubmenuTrigger, {
109
+ return /* @__PURE__ */ jsxs(Menu.SubmenuTrigger, {
110
110
  "data-slot": "dropdown-menu-sub-trigger",
111
111
  "data-inset": inset,
112
112
  "data-size": resolvedSize,
113
113
  className: cn(dropdownMenuItemVariants({ size: resolvedSize }), "data-inset:pl-8 data-open:bg-surface data-open:text-fg-primary data-popup-open:bg-surface data-popup-open:text-fg-primary", className),
114
114
  ...props,
115
- children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })]
115
+ children: [children, /* @__PURE__ */ jsx(ChevronRight, { className: "cn-rtl-flip ml-auto" })]
116
116
  });
117
117
  }
118
118
  function DropdownMenuSubContent({ align = "start", alignOffset = -3, side = "right", sideOffset = 4, className, ...props }) {
@@ -128,7 +128,7 @@ function DropdownMenuSubContent({ align = "start", alignOffset = -3, side = "rig
128
128
  }
129
129
  function DropdownMenuCheckboxItem({ className, children, checked, inset, ...props }) {
130
130
  const resolvedSize = useComponentSize();
131
- return /* @__PURE__ */ jsxs(Menu$1.CheckboxItem, {
131
+ return /* @__PURE__ */ jsxs(Menu.CheckboxItem, {
132
132
  "data-slot": "dropdown-menu-checkbox-item",
133
133
  "data-inset": inset,
134
134
  "data-size": resolvedSize,
@@ -138,19 +138,19 @@ function DropdownMenuCheckboxItem({ className, children, checked, inset, ...prop
138
138
  children: [/* @__PURE__ */ jsx("span", {
139
139
  className: "pointer-events-none absolute right-3 flex items-center justify-center text-fg-brand",
140
140
  "data-slot": "dropdown-menu-checkbox-item-indicator",
141
- children: /* @__PURE__ */ jsx(Menu$1.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
141
+ children: /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(Check, {}) })
142
142
  }), children]
143
143
  });
144
144
  }
145
145
  function DropdownMenuRadioGroup({ ...props }) {
146
- return /* @__PURE__ */ jsx(Menu$1.RadioGroup, {
146
+ return /* @__PURE__ */ jsx(Menu.RadioGroup, {
147
147
  "data-slot": "dropdown-menu-radio-group",
148
148
  ...props
149
149
  });
150
150
  }
151
151
  function DropdownMenuRadioItem({ className, children, inset, ...props }) {
152
152
  const resolvedSize = useComponentSize();
153
- return /* @__PURE__ */ jsxs(Menu$1.RadioItem, {
153
+ return /* @__PURE__ */ jsxs(Menu.RadioItem, {
154
154
  "data-slot": "dropdown-menu-radio-item",
155
155
  "data-inset": inset,
156
156
  "data-size": resolvedSize,
@@ -159,12 +159,12 @@ function DropdownMenuRadioItem({ className, children, inset, ...props }) {
159
159
  children: [/* @__PURE__ */ jsx("span", {
160
160
  className: "pointer-events-none absolute right-3 flex items-center justify-center text-fg-brand",
161
161
  "data-slot": "dropdown-menu-radio-item-indicator",
162
- children: /* @__PURE__ */ jsx(Menu$1.RadioItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
162
+ children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(Check, {}) })
163
163
  }), children]
164
164
  });
165
165
  }
166
166
  function DropdownMenuSeparator({ className, ...props }) {
167
- return /* @__PURE__ */ jsx(Menu$1.Separator, {
167
+ return /* @__PURE__ */ jsx(Menu.Separator, {
168
168
  "data-slot": "dropdown-menu-separator",
169
169
  className: cn("pointer-events-none my-1 h-px bg-line-subtle", className),
170
170
  ...props
package/dist/dropzone.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
+ import { UploadCloud } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
- import { UploadCloud } from "lucide-react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { createContext, use, useCallback, useRef, useState } from "react";
6
6
  //#region src/lib/use-file-picker.ts
@@ -1,17 +1,18 @@
1
1
  import { useRender } from "@base-ui/react/use-render";
2
2
  import { VariantProps } from "class-variance-authority";
3
+ import * as React from "react";
3
4
  //#region src/editorial-card.d.ts
4
5
  declare const editorialCardVariants: (props?: ({
5
6
  size?: "lg" | "md" | "sm" | null | undefined;
6
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
8
  type EditorialCardProps = useRender.ComponentProps<"article"> & VariantProps<typeof editorialCardVariants>;
8
- declare function EditorialCard({ className, render, size, ...props }: EditorialCardProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
9
- declare function EditorialCardHeader({ className, render, ...props }: useRender.ComponentProps<"div">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
10
- declare function EditorialCardMeta({ className, render, ...props }: useRender.ComponentProps<"p">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
11
- declare function EditorialCardTitle({ className, render, ...props }: useRender.ComponentProps<"h3">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
12
- declare function EditorialCardMedia({ className, render, ...props }: useRender.ComponentProps<"div">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
13
- declare function EditorialCardCategory({ className, render, ...props }: useRender.ComponentProps<"span">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
14
- declare function EditorialCardPlayButton({ className, render, children, "aria-label": ariaLabel, ...props }: useRender.ComponentProps<"button">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
9
+ declare function EditorialCard({ className, render, size, ...props }: EditorialCardProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
10
+ declare function EditorialCardHeader({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
11
+ declare function EditorialCardMeta({ className, render, ...props }: useRender.ComponentProps<"p">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
12
+ declare function EditorialCardTitle({ className, render, ...props }: useRender.ComponentProps<"h3">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
13
+ declare function EditorialCardMedia({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
14
+ declare function EditorialCardCategory({ className, render, ...props }: useRender.ComponentProps<"span">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
15
+ declare function EditorialCardPlayButton({ className, render, children, "aria-label": ariaLabel, ...props }: useRender.ComponentProps<"button">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
15
16
  type EditorialCardAttributionProps = Omit<useRender.ComponentProps<"div">, "children"> & {
16
17
  authorName: string;
17
18
  brand?: {
@@ -20,8 +21,16 @@ type EditorialCardAttributionProps = Omit<useRender.ComponentProps<"div">, "chil
20
21
  };
21
22
  prefix?: string;
22
23
  };
23
- declare function EditorialCardAttribution({ authorName, brand, className, prefix, render, ...props }: EditorialCardAttributionProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
24
- declare function EditorialCardExcerpt({ className, render, ...props }: useRender.ComponentProps<"p">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
25
- declare function EditorialCardLink({ className, render, children, ...props }: useRender.ComponentProps<"a">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
24
+ declare function EditorialCardAttribution({ authorName, brand, className, prefix, render, ...props }: EditorialCardAttributionProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
25
+ type EditorialCardRatingProps = Omit<useRender.ComponentProps<"div">, "children"> & {
26
+ rating: number;
27
+ source?: React.ReactNode;
28
+ totalReviews?: number;
29
+ reviewLabel?: string;
30
+ showScore?: boolean;
31
+ };
32
+ declare function EditorialCardRating({ className, rating, render, reviewLabel, showScore, source, totalReviews, ...props }: EditorialCardRatingProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
33
+ declare function EditorialCardExcerpt({ className, render, ...props }: useRender.ComponentProps<"p">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
34
+ declare function EditorialCardLink({ className, render, children, ...props }: useRender.ComponentProps<"a">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
26
35
  //#endregion
27
- export { EditorialCard, EditorialCardAttribution, type EditorialCardAttributionProps, EditorialCardCategory, EditorialCardExcerpt, EditorialCardHeader, EditorialCardLink, EditorialCardMedia, EditorialCardMeta, EditorialCardPlayButton, type EditorialCardProps, EditorialCardTitle, editorialCardVariants };
36
+ export { EditorialCard, EditorialCardAttribution, type EditorialCardAttributionProps, EditorialCardCategory, EditorialCardExcerpt, EditorialCardHeader, EditorialCardLink, EditorialCardMedia, EditorialCardMeta, EditorialCardPlayButton, type EditorialCardProps, EditorialCardRating, type EditorialCardRatingProps, EditorialCardTitle, editorialCardVariants };
@@ -1,13 +1,20 @@
1
1
  "use client";
2
+ import { ArrowRight, Play, Star } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Avatar, AvatarFallback, AvatarImage } from "./avatar.js";
4
5
  import { buttonVariants } from "./button.js";
5
- import { ArrowRight, Play } 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";
9
9
  import { cva } from "class-variance-authority";
10
10
  //#region src/editorial-card.tsx
11
+ const STAR_INDEXES = [
12
+ 0,
13
+ 1,
14
+ 2,
15
+ 3,
16
+ 4
17
+ ];
11
18
  const editorialCardVariants = cva("group/editorial-card relative flex w-full min-w-0 flex-col overflow-hidden rounded-2xl border border-line-subtle bg-surface text-fg-primary transition-[background-color,border-color,box-shadow]", {
12
19
  variants: { size: {
13
20
  sm: "gap-2.5 p-4",
@@ -119,6 +126,64 @@ function EditorialCardAttribution({ authorName, brand, className, prefix = "By",
119
126
  state: { slot: "editorial-card-attribution" }
120
127
  });
121
128
  }
129
+ function clampRating(rating) {
130
+ return Math.min(5, Math.max(0, rating));
131
+ }
132
+ function formatRating(rating) {
133
+ return clampRating(rating).toFixed(1);
134
+ }
135
+ function formatReviewSource({ reviewLabel, source, totalReviews }) {
136
+ const label = reviewLabel ?? (totalReviews === 1 ? "review" : "reviews");
137
+ if (source && typeof totalReviews === "number") return /* @__PURE__ */ jsxs(Fragment, { children: [
138
+ totalReviews.toLocaleString(),
139
+ " ",
140
+ source,
141
+ " ",
142
+ label
143
+ ] });
144
+ if (source) return source;
145
+ if (typeof totalReviews === "number") return `${totalReviews.toLocaleString()} ${label}`;
146
+ return null;
147
+ }
148
+ function EditorialCardRating({ className, rating, render, reviewLabel, showScore = true, source, totalReviews, ...props }) {
149
+ const formattedRating = formatRating(rating);
150
+ const roundedRating = Math.round(clampRating(rating));
151
+ const reviewSource = formatReviewSource({
152
+ reviewLabel,
153
+ source,
154
+ totalReviews
155
+ });
156
+ return useRender({
157
+ defaultTagName: "div",
158
+ props: mergeProps({
159
+ className: cn("flex min-w-0 flex-wrap items-center gap-gdt-sm text-fg-primary", className),
160
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
161
+ showScore ? /* @__PURE__ */ jsx("span", {
162
+ className: "font-bold text-gdt-sm group-data-[size=md]/editorial-card:text-gdt-md group-data-[size=lg]/editorial-card:text-gdt-lg",
163
+ children: formattedRating
164
+ }) : null,
165
+ /* @__PURE__ */ jsx("span", {
166
+ "aria-label": `${formattedRating} out of 5`,
167
+ className: cn("inline-flex shrink-0 items-center gap-0.5 text-surface-accent", "[&>svg]:size-4 group-data-[size=md]/editorial-card:[&>svg]:size-4.5 group-data-[size=lg]/editorial-card:[&>svg]:size-5"),
168
+ role: "img",
169
+ children: STAR_INDEXES.map((index) => /* @__PURE__ */ jsx(Star, {
170
+ "aria-hidden": "true",
171
+ fill: index < roundedRating ? "currentColor" : "none"
172
+ }, index))
173
+ }),
174
+ reviewSource ? /* @__PURE__ */ jsx("span", {
175
+ className: "text-gdt-xs text-fg-secondary group-data-[size=lg]/editorial-card:text-gdt-sm",
176
+ children: reviewSource
177
+ }) : null
178
+ ] })
179
+ }, props),
180
+ render,
181
+ state: {
182
+ rating: formattedRating,
183
+ slot: "editorial-card-rating"
184
+ }
185
+ });
186
+ }
122
187
  function EditorialCardExcerpt({ className, render, ...props }) {
123
188
  return useRender({
124
189
  defaultTagName: "p",
@@ -142,4 +207,4 @@ function EditorialCardLink({ className, render, children, ...props }) {
142
207
  });
143
208
  }
144
209
  //#endregion
145
- export { EditorialCard, EditorialCardAttribution, EditorialCardCategory, EditorialCardExcerpt, EditorialCardHeader, EditorialCardLink, EditorialCardMedia, EditorialCardMeta, EditorialCardPlayButton, EditorialCardTitle, editorialCardVariants };
210
+ export { EditorialCard, EditorialCardAttribution, EditorialCardCategory, EditorialCardExcerpt, EditorialCardHeader, EditorialCardLink, EditorialCardMedia, EditorialCardMeta, EditorialCardPlayButton, EditorialCardRating, EditorialCardTitle, editorialCardVariants };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { File, X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { CircularProgress, Progress, ProgressValue } from "./progress.js";
4
- import { File, X } from "lucide-react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { createContext, useContext } from "react";
7
7
  //#region src/file-upload.tsx
package/dist/filter.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client";
2
+ import { Plus, 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 { Input } from "./input.js";
5
6
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select.js";
6
7
  import { Field, FieldError } from "./field.js";
7
- import { Plus, X } from "lucide-react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import * as React from "react";
10
10
  //#region src/filter.tsx
package/dist/footer.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { InputGroup } from "./input-group.js";
1
+ import { n as InputSize } from "./input-CfoEJ8A6.js";
2
2
  import { useRender } from "@base-ui/react/use-render";
3
3
  import * as React from "react";
4
4
  //#region src/footer.d.ts
@@ -33,7 +33,9 @@ declare function FooterSocialLink({ className, ...props }: React.ComponentProps<
33
33
  declare function FooterNewsletter({ className, ...props }: React.ComponentProps<"form">): React.JSX.Element;
34
34
  declare function FooterNewsletterTitle({ className, ...props }: React.ComponentProps<"h3">): React.JSX.Element;
35
35
  declare function FooterNewsletterDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
36
- declare function FooterNewsletterControl({ className, children, ...props }: React.ComponentProps<typeof InputGroup>): React.JSX.Element;
36
+ declare function FooterNewsletterControl({ className, children, size, ...props }: React.ComponentProps<"div"> & {
37
+ size?: InputSize;
38
+ }): React.JSX.Element;
37
39
  declare function FooterBottom({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
38
40
  declare function FooterLegalLinks({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
39
41
  //#endregion
package/dist/footer.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use client";
2
+ import { ChevronRight } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
- import { InputGroup, InputGroupButton, InputGroupInput } from "./input-group.js";
4
+ import { Button } from "./button.js";
5
+ import { Input } from "./input.js";
4
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
7
  import { mergeProps } from "@base-ui/react/merge-props";
6
8
  import { useRender } from "@base-ui/react/use-render";
@@ -12,7 +14,7 @@ function FooterRoot({ className, containerClassName, children, ...props }) {
12
14
  ...props,
13
15
  children: /* @__PURE__ */ jsx("div", {
14
16
  "data-slot": "footer-container",
15
- className: cn("mx-auto flex w-full max-w-7xl flex-col", containerClassName),
17
+ className: cn("flex w-full flex-col", containerClassName),
16
18
  children
17
19
  })
18
20
  });
@@ -20,70 +22,70 @@ function FooterRoot({ className, containerClassName, children, ...props }) {
20
22
  function FooterCta({ className, ...props }) {
21
23
  return /* @__PURE__ */ jsx("section", {
22
24
  "data-slot": "footer-cta",
23
- className: cn("grid gap-gdt-xl bg-surface-brand px-gdt-xl py-gdt-4xl text-fg-on-brand md:grid-cols-[minmax(0,1fr)_auto] md:items-center md:px-gdt-5xl", className),
25
+ className: cn("grid gap-5 bg-surface-brand px-5 py-gdt-3xl text-fg-on-brand md:px-gdt-6xl md:py-gdt-5xl xl:grid-cols-[minmax(0,1fr)_auto] xl:items-center", className),
24
26
  ...props
25
27
  });
26
28
  }
27
29
  function FooterCtaContent({ className, ...props }) {
28
30
  return /* @__PURE__ */ jsx("div", {
29
31
  "data-slot": "footer-cta-content",
30
- className: cn("flex max-w-145 flex-col gap-2 md:gap-3", className),
32
+ className: cn("flex max-w-140 flex-col gap-5 xl:gap-3", className),
31
33
  ...props
32
34
  });
33
35
  }
34
36
  function FooterCtaTitle({ className, ...props }) {
35
37
  return /* @__PURE__ */ jsx("h2", {
36
38
  "data-slot": "footer-cta-title",
37
- className: cn("text-gdt-h5 text-current md:text-gdt-h4", className),
39
+ className: cn("text-gdt-h3 leading-10 text-current md:leading-[3.25rem]", className),
38
40
  ...props
39
41
  });
40
42
  }
41
43
  function FooterCtaDescription({ className, ...props }) {
42
44
  return /* @__PURE__ */ jsx("p", {
43
45
  "data-slot": "footer-cta-description",
44
- className: cn("text-gdt-sm text-current", className),
46
+ className: cn("text-gdt-sm text-current opacity-85 md:text-gdt-md", className),
45
47
  ...props
46
48
  });
47
49
  }
48
50
  function FooterCtaActions({ className, ...props }) {
49
51
  return /* @__PURE__ */ jsx("div", {
50
52
  "data-slot": "footer-cta-actions",
51
- className: cn("flex flex-wrap items-center gap-3 md:gap-4", className),
53
+ className: cn("flex w-full flex-col items-stretch gap-gdt-lg [&>*]:w-full xl:w-auto xl:flex-row xl:items-center xl:[&>*]:w-auto", className),
52
54
  ...props
53
55
  });
54
56
  }
55
57
  function FooterBody({ className, ...props }) {
56
58
  return /* @__PURE__ */ jsx("div", {
57
59
  "data-slot": "footer-body",
58
- className: cn("flex flex-col gap-gdt-6xl px-gdt-xl py-gdt-5xl md:px-gdt-5xl", className),
60
+ className: cn("flex flex-col gap-gdt-6xl px-5 py-gdt-3xl md:gap-32 md:px-gdt-6xl md:py-gdt-5xl", className),
59
61
  ...props
60
62
  });
61
63
  }
62
64
  function FooterHeader({ className, ...props }) {
63
65
  return /* @__PURE__ */ jsx("div", {
64
66
  "data-slot": "footer-header",
65
- className: cn("flex max-w-xl flex-col gap-gdt-sm", className),
67
+ className: cn("flex w-full flex-col gap-1.5 border-b border-line-subtle pb-5 md:pb-7", className),
66
68
  ...props
67
69
  });
68
70
  }
69
71
  function FooterTitle({ className, ...props }) {
70
72
  return /* @__PURE__ */ jsx("h2", {
71
73
  "data-slot": "footer-title",
72
- className: cn("text-gdt-h5 text-fg-primary", className),
74
+ className: cn("text-gdt-h4 text-fg-primary", className),
73
75
  ...props
74
76
  });
75
77
  }
76
78
  function FooterDescription({ className, ...props }) {
77
79
  return /* @__PURE__ */ jsx("p", {
78
80
  "data-slot": "footer-description",
79
- className: cn("text-gdt-xs text-fg-secondary", className),
81
+ className: cn("text-gdt-sm text-fg-secondary", className),
80
82
  ...props
81
83
  });
82
84
  }
83
85
  function FooterNav({ className, ...props }) {
84
86
  return /* @__PURE__ */ jsx("nav", {
85
87
  "data-slot": "footer-nav",
86
- className: cn("grid gap-x-gdt-4xl gap-y-gdt-xl sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6", className),
88
+ className: cn("grid grid-cols-2 gap-gdt-3xl md:grid-cols-4 xl:grid-cols-7", className),
87
89
  ...props
88
90
  });
89
91
  }
@@ -97,21 +99,21 @@ function FooterSection({ className, ...props }) {
97
99
  function FooterSectionTitle({ className, ...props }) {
98
100
  return /* @__PURE__ */ jsx("h3", {
99
101
  "data-slot": "footer-section-title",
100
- className: cn("text-gdt-xs font-bold text-fg-primary", className),
102
+ className: cn("text-gdt-md font-bold text-fg-primary", className),
101
103
  ...props
102
104
  });
103
105
  }
104
106
  function FooterLinkList({ className, ...props }) {
105
107
  return /* @__PURE__ */ jsx("ul", {
106
108
  "data-slot": "footer-link-list",
107
- className: cn("flex flex-col gap-gdt-sm", className),
109
+ className: cn("flex flex-col gap-gdt-md", className),
108
110
  ...props
109
111
  });
110
112
  }
111
113
  function FooterLinkItem({ className, ...props }) {
112
114
  return /* @__PURE__ */ jsx("li", {
113
115
  "data-slot": "footer-link-item",
114
- className: cn("text-gdt-xs", className),
116
+ className: cn("text-gdt-sm", className),
115
117
  ...props
116
118
  });
117
119
  }
@@ -119,10 +121,10 @@ function FooterLink({ className, children, render, showArrow = false, ...props }
119
121
  return useRender({
120
122
  defaultTagName: "a",
121
123
  props: mergeProps({
122
- className: cn("inline-flex items-center gap-gdt-sm text-fg-secondary transition-colors hover:text-fg-brand focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-line-focus focus-visible:ring-offset-2", className),
123
- children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", { children }), showArrow && /* @__PURE__ */ jsx("span", {
124
+ className: cn("inline-flex items-center gap-gdt-sm text-fg-secondary underline-offset-4 transition-colors hover:text-fg-brand hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-line-focus focus-visible:ring-offset-2", className),
125
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", { children }), showArrow && /* @__PURE__ */ jsx(ChevronRight, {
124
126
  "aria-hidden": "true",
125
- children: ""
127
+ className: "size-3.5"
126
128
  })] })
127
129
  }, props),
128
130
  render,
@@ -132,21 +134,21 @@ function FooterLink({ className, children, render, showArrow = false, ...props }
132
134
  function FooterContactGrid({ className, ...props }) {
133
135
  return /* @__PURE__ */ jsx("div", {
134
136
  "data-slot": "footer-contact-grid",
135
- className: cn("grid gap-gdt-3xl border-t border-line-subtle pt-gdt-xl md:grid-cols-[minmax(0,1fr)_minmax(18rem,25rem)]", className),
137
+ className: cn("grid gap-5 lg:grid-cols-[minmax(0,1fr)_28.75rem] lg:gap-gdt-5xl", className),
136
138
  ...props
137
139
  });
138
140
  }
139
141
  function FooterContact({ className, ...props }) {
140
142
  return /* @__PURE__ */ jsx("address", {
141
143
  "data-slot": "footer-contact",
142
- className: cn("not-italic text-gdt-xs text-fg-secondary", className),
144
+ className: cn("not-italic text-gdt-sm text-fg-secondary lg:order-first", className),
143
145
  ...props
144
146
  });
145
147
  }
146
148
  function FooterContactTitle({ className, ...props }) {
147
149
  return /* @__PURE__ */ jsx("h3", {
148
150
  "data-slot": "footer-contact-title",
149
- className: cn("mb-gdt-sm text-gdt-xs font-bold text-fg-primary", className),
151
+ className: cn("mb-gdt-xs text-gdt-sm font-bold text-fg-primary", className),
150
152
  ...props
151
153
  });
152
154
  }
@@ -167,45 +169,47 @@ function FooterSocialItem({ className, ...props }) {
167
169
  function FooterSocialLink({ className, ...props }) {
168
170
  return /* @__PURE__ */ jsx("a", {
169
171
  "data-slot": "footer-social-link",
170
- className: cn("inline-flex size-7 items-center justify-center rounded-full bg-canvas text-fg-secondary transition-colors hover:bg-surface-brand hover:text-fg-on-brand focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-line-focus focus-visible:ring-offset-2 [&>svg:not([class*='size-'])]:size-3.5", className),
172
+ className: cn("inline-flex size-10 items-center justify-center rounded-full bg-surface-raised text-fg-secondary transition-colors hover:bg-surface-brand hover:text-fg-on-brand focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-line-focus focus-visible:ring-offset-2 [&>svg:not([class*='size-'])]:size-4.5", className),
171
173
  ...props
172
174
  });
173
175
  }
174
176
  function FooterNewsletter({ className, ...props }) {
175
177
  return /* @__PURE__ */ jsx("form", {
176
178
  "data-slot": "footer-newsletter",
177
- className: cn("flex flex-col gap-gdt-md", className),
179
+ className: cn("flex flex-col gap-3.5", className),
178
180
  ...props
179
181
  });
180
182
  }
181
183
  function FooterNewsletterTitle({ className, ...props }) {
182
184
  return /* @__PURE__ */ jsx("h3", {
183
185
  "data-slot": "footer-newsletter-title",
184
- className: cn("text-gdt-xs font-bold text-fg-primary", className),
186
+ className: cn("text-gdt-md font-semibold text-fg-primary", className),
185
187
  ...props
186
188
  });
187
189
  }
188
190
  function FooterNewsletterDescription({ className, ...props }) {
189
191
  return /* @__PURE__ */ jsx("p", {
190
192
  "data-slot": "footer-newsletter-description",
191
- className: cn("text-gdt-xs text-fg-secondary", className),
193
+ className: cn("text-gdt-sm text-fg-secondary", className),
192
194
  ...props
193
195
  });
194
196
  }
195
- function FooterNewsletterControl({ className, children, ...props }) {
196
- return /* @__PURE__ */ jsx(InputGroup, {
197
+ function FooterNewsletterControl({ className, children, size = "lg", ...props }) {
198
+ return /* @__PURE__ */ jsx("div", {
197
199
  "data-slot": "footer-newsletter-control",
198
- size: "md",
199
- className: cn("max-w-md bg-canvas", className),
200
+ className: cn("flex w-full max-w-[28.75rem] flex-col gap-gdt-md md:flex-row", className),
200
201
  ...props,
201
- children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(InputGroupInput, {
202
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Input, {
202
203
  type: "email",
203
204
  name: "email",
204
- placeholder: "Email address",
205
+ size,
206
+ placeholder: "Enter your email",
205
207
  "aria-label": "Email address"
206
- }), /* @__PURE__ */ jsx(InputGroupButton, {
208
+ }), /* @__PURE__ */ jsx(Button, {
207
209
  type: "submit",
208
210
  variant: "primary",
211
+ size,
212
+ className: "w-full md:w-auto",
209
213
  children: "Subscribe"
210
214
  })] })
211
215
  });
@@ -213,14 +217,14 @@ function FooterNewsletterControl({ className, children, ...props }) {
213
217
  function FooterBottom({ className, ...props }) {
214
218
  return /* @__PURE__ */ jsx("div", {
215
219
  "data-slot": "footer-bottom",
216
- className: cn("flex flex-col gap-gdt-md border-t border-line-subtle px-gdt-xl py-gdt-lg text-gdt-subtext text-fg-secondary md:flex-row md:items-center md:justify-between md:px-gdt-5xl", className),
220
+ className: cn("flex flex-col gap-2.5 border-t border-line-subtle px-5 py-gdt-xl text-gdt-xs text-fg-secondary [&>[data-slot=footer-legal-links]]:order-first md:flex-row md:items-center md:justify-between md:px-gdt-6xl md:[&>[data-slot=footer-legal-links]]:order-none", className),
217
221
  ...props
218
222
  });
219
223
  }
220
224
  function FooterLegalLinks({ className, ...props }) {
221
225
  return /* @__PURE__ */ jsx("nav", {
222
226
  "data-slot": "footer-legal-links",
223
- className: cn("flex flex-wrap items-center gap-gdt-xl", className),
227
+ className: cn("flex flex-wrap items-center gap-5 md:gap-gdt-xl", className),
224
228
  ...props
225
229
  });
226
230
  }
@@ -1,4 +1,4 @@
1
- import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
1
+ import { t as ComponentSize } from "./size-context-BX6kAdVj.js";
2
2
  import { ChartCard, ChartValueType } from "./chart.js";
3
3
  import * as React from "react";
4
4
  //#region src/funnel-chart.d.ts
@@ -1,4 +1,4 @@
1
- import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
1
+ import { t as ComponentSize } from "./size-context-BX6kAdVj.js";
2
2
  import { ChartCard } from "./chart.js";
3
3
  import * as React from "react";
4
4
  //#region src/heatmap-chart.d.ts