@giddaa-housing/ui 3.5.0 → 3.6.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 (101) hide show
  1. package/css/components.css +13 -0
  2. package/css/generated/shared.css +1 -1
  3. package/dist/badge.d.ts +5 -1
  4. package/dist/badge.js +19 -5
  5. package/dist/bar-chart.d.ts +1 -1
  6. package/dist/bullet-chart.d.ts +1 -1
  7. package/dist/button-BS5KCibF.d.ts +33 -0
  8. package/dist/button-group.d.ts +1 -1
  9. package/dist/button.d.ts +1 -1
  10. package/dist/button.js +49 -21
  11. package/dist/calendar.js +1 -1
  12. package/dist/carousel.d.ts +4 -2
  13. package/dist/carousel.js +11 -14
  14. package/dist/chart.d.ts +1 -1
  15. package/dist/chat.d.ts +1 -1
  16. package/dist/checkbox.d.ts +2 -2
  17. package/dist/checkbox.js +20 -6
  18. package/dist/{combobox-B7cKFJ9V.js → combobox-CACVdp1R.js} +41 -9
  19. package/dist/combobox.d.ts +8 -3
  20. package/dist/combobox.js +2 -2
  21. package/dist/cta.d.ts +1 -1
  22. package/dist/data-table.d.ts +2 -2
  23. package/dist/date-picker.d.ts +3 -3
  24. package/dist/date-picker.js +1 -1
  25. package/dist/dialog.d.ts +3 -1
  26. package/dist/dialog.js +9 -5
  27. package/dist/dropdown-menu.d.ts +1 -1
  28. package/dist/field.d.ts +4 -1
  29. package/dist/field.js +28 -11
  30. package/dist/footer.d.ts +2 -2
  31. package/dist/funnel-chart.d.ts +1 -1
  32. package/dist/heatmap-chart.d.ts +1 -1
  33. package/dist/input-group.d.ts +6 -6
  34. package/dist/input-group.js +38 -13
  35. package/dist/input-otp.d.ts +2 -2
  36. package/dist/input-otp.js +31 -14
  37. package/dist/input-size-context-BMhves-J.d.ts +13 -0
  38. package/dist/input-size-context.d.ts +2 -2
  39. package/dist/input-size-context.js +9 -2
  40. package/dist/input.d.ts +20 -2
  41. package/dist/input.js +30 -11
  42. package/dist/line-chart.d.ts +1 -1
  43. package/dist/mask-input.d.ts +1 -1
  44. package/dist/match.d.ts +5 -2
  45. package/dist/match.js +182 -26
  46. package/dist/media-gallery-hero.js +9 -7
  47. package/dist/mobile-sidebar.js +1 -0
  48. package/dist/number-input.d.ts +2 -2
  49. package/dist/number-input.js +2 -2
  50. package/dist/pagination.d.ts +1 -1
  51. package/dist/phone-input.d.ts +2 -2
  52. package/dist/phone-input.js +5 -4
  53. package/dist/picker-BTXBrsl4.js +62 -0
  54. package/dist/{picker-CsnHtbe4.d.ts → picker-j3txxA5t.d.ts} +2 -2
  55. package/dist/pie-chart.d.ts +1 -1
  56. package/dist/{popover-DSlPeH7x.d.ts → popover-CNymD33m.d.ts} +1 -1
  57. package/dist/popover.d.ts +1 -1
  58. package/dist/property-listing-card.d.ts +7 -3
  59. package/dist/property-listing-card.js +25 -8
  60. package/dist/radar-chart.d.ts +1 -1
  61. package/dist/radio-group.d.ts +2 -2
  62. package/dist/radio-group.js +23 -9
  63. package/dist/rich-text-editor.d.ts +1 -1
  64. package/dist/scatter-chart.d.ts +1 -1
  65. package/dist/scroll-spy.d.ts +8 -2
  66. package/dist/scroll-spy.js +13 -13
  67. package/dist/section-jumper.d.ts +31 -0
  68. package/dist/section-jumper.js +276 -0
  69. package/dist/select.d.ts +9 -4
  70. package/dist/select.js +112 -19
  71. package/dist/sheet.d.ts +3 -1
  72. package/dist/sheet.js +9 -5
  73. package/dist/sidebar.d.ts +2 -2
  74. package/dist/sidebar.js +1 -0
  75. package/dist/size-context-BVhHduLi.d.ts +33 -0
  76. package/dist/size-context.d.ts +2 -2
  77. package/dist/size-context.js +30 -1
  78. package/dist/slider.d.ts +5 -3
  79. package/dist/slider.js +25 -10
  80. package/dist/sonar.d.ts +1 -1
  81. package/dist/sonar.js +1 -1
  82. package/dist/sparkline.d.ts +1 -1
  83. package/dist/styles.css +1576 -258
  84. package/dist/switch.d.ts +2 -2
  85. package/dist/switch.js +20 -6
  86. package/dist/tabs.d.ts +1 -1
  87. package/dist/tag.d.ts +1 -1
  88. package/dist/textarea.d.ts +17 -1
  89. package/dist/textarea.js +23 -9
  90. package/dist/time-picker.d.ts +3 -3
  91. package/dist/time-picker.js +1 -1
  92. package/dist/tree-map.d.ts +1 -1
  93. package/dist/video-player-dialog.js +3 -2
  94. package/dist/waterfall-chart.d.ts +1 -1
  95. package/package.json +5 -1
  96. package/dist/button-DW5OijoR.d.ts +0 -17
  97. package/dist/input-CfoEJ8A6.d.ts +0 -12
  98. package/dist/input-size-context-C-SFx9sx.d.ts +0 -10
  99. package/dist/picker-DmIiQKLJ.js +0 -45
  100. package/dist/size-context-BX6kAdVj.d.ts +0 -11
  101. package/dist/textarea-IS_D8pXf.d.ts +0 -11
package/dist/select.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { Check, ChevronDown, ChevronUp } from "./icons.js";
3
3
  import { cn } from "./utils/cn.js";
4
- import { SizeProvider, useComponentSize } from "./size-context.js";
4
+ import { SizeProvider, responsiveValueClasses, useComponentSizeValue } from "./size-context.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  import * as React from "react";
@@ -29,11 +29,11 @@ const selectTriggerVariants = cva("group/select-trigger flex w-fit min-w-0 items
29
29
  } },
30
30
  defaultVariants: { size: "md" }
31
31
  });
32
- const selectContentVariants = cva("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto border border-line-subtle bg-canvas text-fg-primary shadow-(--elevation-e1-shadow) transition-[opacity,scale,translate] duration-[var(--duration-motion-popup)] ease-gdt-out data-[align-trigger=true]:transition-none not-data-[align-trigger=true]:data-starting-style:opacity-0 not-data-[align-trigger=true]:data-starting-style:scale-95 not-data-[align-trigger=true]:data-ending-style:opacity-0 not-data-[align-trigger=true]:data-ending-style:scale-95 not-data-[align-trigger=true]:data-[side=bottom]:data-starting-style:translate-y-2 not-data-[align-trigger=true]:data-[side=bottom]:data-ending-style:translate-y-2 not-data-[align-trigger=true]:data-[side=top]:data-starting-style:-translate-y-2 not-data-[align-trigger=true]:data-[side=top]:data-ending-style:-translate-y-2 not-data-[align-trigger=true]:data-[side=left]:data-starting-style:translate-x-2 not-data-[align-trigger=true]:data-[side=left]:data-ending-style:translate-x-2 not-data-[align-trigger=true]:data-[side=right]:data-starting-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=right]:data-ending-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=inline-end]:data-starting-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=inline-end]:data-ending-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=inline-start]:data-starting-style:translate-x-2 not-data-[align-trigger=true]:data-[side=inline-start]:data-ending-style:translate-x-2 motion-reduce:not-data-[align-trigger=true]:data-starting-style:scale-100 motion-reduce:not-data-[align-trigger=true]:data-ending-style:scale-100 motion-reduce:not-data-[align-trigger=true]:data-[side=bottom]:data-starting-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=bottom]:data-ending-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=top]:data-starting-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=top]:data-ending-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=left]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=left]:data-ending-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=right]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=right]:data-ending-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-end]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-end]:data-ending-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-start]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-start]:data-ending-style:translate-x-0", {
32
+ const selectContentVariants = cva("relative isolate z-50 flex max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) flex-col overflow-hidden border border-line-subtle bg-canvas text-fg-primary shadow-(--elevation-e1-shadow) transition-[opacity,scale,translate] duration-[var(--duration-motion-popup)] ease-gdt-out data-[align-trigger=true]:transition-none not-data-[align-trigger=true]:data-starting-style:opacity-0 not-data-[align-trigger=true]:data-starting-style:scale-95 not-data-[align-trigger=true]:data-ending-style:opacity-0 not-data-[align-trigger=true]:data-ending-style:scale-95 not-data-[align-trigger=true]:data-[side=bottom]:data-starting-style:translate-y-2 not-data-[align-trigger=true]:data-[side=bottom]:data-ending-style:translate-y-2 not-data-[align-trigger=true]:data-[side=top]:data-starting-style:-translate-y-2 not-data-[align-trigger=true]:data-[side=top]:data-ending-style:-translate-y-2 not-data-[align-trigger=true]:data-[side=left]:data-starting-style:translate-x-2 not-data-[align-trigger=true]:data-[side=left]:data-ending-style:translate-x-2 not-data-[align-trigger=true]:data-[side=right]:data-starting-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=right]:data-ending-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=inline-end]:data-starting-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=inline-end]:data-ending-style:-translate-x-2 not-data-[align-trigger=true]:data-[side=inline-start]:data-starting-style:translate-x-2 not-data-[align-trigger=true]:data-[side=inline-start]:data-ending-style:translate-x-2 motion-reduce:not-data-[align-trigger=true]:data-starting-style:scale-100 motion-reduce:not-data-[align-trigger=true]:data-ending-style:scale-100 motion-reduce:not-data-[align-trigger=true]:data-[side=bottom]:data-starting-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=bottom]:data-ending-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=top]:data-starting-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=top]:data-ending-style:translate-y-0 motion-reduce:not-data-[align-trigger=true]:data-[side=left]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=left]:data-ending-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=right]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=right]:data-ending-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-end]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-end]:data-ending-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-start]:data-starting-style:translate-x-0 motion-reduce:not-data-[align-trigger=true]:data-[side=inline-start]:data-ending-style:translate-x-0", {
33
33
  variants: { size: {
34
- sm: "rounded-lg p-1",
35
- md: "rounded-xl p-1.5",
36
- lg: "rounded-[18px] p-2"
34
+ sm: "rounded-lg",
35
+ md: "rounded-xl",
36
+ lg: "rounded-[18px]"
37
37
  } },
38
38
  defaultVariants: { size: "md" }
39
39
  });
@@ -45,6 +45,74 @@ const selectItemVariants = cva("group/select-item relative flex w-full cursor-po
45
45
  } },
46
46
  defaultVariants: { size: "md" }
47
47
  });
48
+ const responsiveSelectTriggerSizes = {
49
+ base: {
50
+ sm: "h-8 gap-2 px-3 text-gdt-xs [&_svg:not([class*='size-'])]:size-3.5",
51
+ md: "h-10 gap-2 px-3.5 text-gdt-sm [&_svg:not([class*='size-'])]:size-4",
52
+ lg: "h-12 gap-2.5 px-4 pr-5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5"
53
+ },
54
+ md: {
55
+ sm: "md:h-8 md:gap-2 md:px-3 md:text-gdt-xs md:[&_svg:not([class*='size-'])]:size-3.5",
56
+ md: "md:h-10 md:gap-2 md:px-3.5 md:text-gdt-sm md:[&_svg:not([class*='size-'])]:size-4",
57
+ lg: "md:h-12 md:gap-2.5 md:px-4 md:pr-5 md:text-gdt-md md:[&_svg:not([class*='size-'])]:size-4.5"
58
+ },
59
+ lg: {
60
+ sm: "lg:h-8 lg:gap-2 lg:px-3 lg:text-gdt-xs lg:[&_svg:not([class*='size-'])]:size-3.5",
61
+ md: "lg:h-10 lg:gap-2 lg:px-3.5 lg:text-gdt-sm lg:[&_svg:not([class*='size-'])]:size-4",
62
+ lg: "lg:h-12 lg:gap-2.5 lg:px-4 lg:pr-5 lg:text-gdt-md lg:[&_svg:not([class*='size-'])]:size-4.5"
63
+ }
64
+ };
65
+ const responsiveSelectContentSizes = {
66
+ base: {
67
+ sm: "rounded-lg",
68
+ md: "rounded-xl",
69
+ lg: "rounded-[18px]"
70
+ },
71
+ md: {
72
+ sm: "md:rounded-lg",
73
+ md: "md:rounded-xl",
74
+ lg: "md:rounded-[18px]"
75
+ },
76
+ lg: {
77
+ sm: "lg:rounded-lg",
78
+ md: "lg:rounded-xl",
79
+ lg: "lg:rounded-[18px]"
80
+ }
81
+ };
82
+ const responsiveSelectItemSizes = {
83
+ base: {
84
+ sm: "gap-1.5 rounded-md px-3 py-1.5 text-gdt-xs",
85
+ md: "gap-2 rounded-md px-4 py-2 text-gdt-sm",
86
+ lg: "gap-2.5 rounded-md px-4 py-2.5 text-gdt-md"
87
+ },
88
+ md: {
89
+ sm: "md:gap-1.5 md:px-3 md:py-1.5 md:text-gdt-xs",
90
+ md: "md:gap-2 md:px-4 md:py-2 md:text-gdt-sm",
91
+ lg: "md:gap-2.5 md:px-4 md:py-2.5 md:text-gdt-md"
92
+ },
93
+ lg: {
94
+ sm: "lg:gap-1.5 lg:px-3 lg:py-1.5 lg:text-gdt-xs",
95
+ md: "lg:gap-2 lg:px-4 lg:py-2 lg:text-gdt-sm",
96
+ lg: "lg:gap-2.5 lg:px-4 lg:py-2.5 lg:text-gdt-md"
97
+ }
98
+ };
99
+ const responsiveSelectBodySizes = {
100
+ base: {
101
+ sm: "p-1",
102
+ md: "p-1.5",
103
+ lg: "p-2"
104
+ },
105
+ md: {
106
+ sm: "md:p-1",
107
+ md: "md:p-1.5",
108
+ lg: "md:p-2"
109
+ },
110
+ lg: {
111
+ sm: "lg:p-1",
112
+ md: "lg:p-1.5",
113
+ lg: "lg:p-2"
114
+ }
115
+ };
48
116
  function SelectGroup({ className, ...props }) {
49
117
  return /* @__PURE__ */ jsx(Select$1.Group, {
50
118
  "data-slot": "select-group",
@@ -60,17 +128,18 @@ function SelectValue({ className, ...props }) {
60
128
  });
61
129
  }
62
130
  function SelectTrigger({ className, children, unstyled, ...props }) {
63
- const resolvedSize = useComponentSize();
131
+ const resolvedSize = responsiveValueClasses(useComponentSizeValue(), responsiveSelectTriggerSizes);
64
132
  return /* @__PURE__ */ jsxs(Select$1.Trigger, {
65
133
  "data-slot": "select-trigger",
66
- "data-size": resolvedSize,
67
- className: cn(!unstyled && selectTriggerVariants({ size: resolvedSize }), className),
134
+ "data-size": resolvedSize.base,
135
+ className: cn(!unstyled && selectTriggerVariants({ size: null }), !unstyled && resolvedSize.className, className),
68
136
  ...props,
69
137
  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
138
  });
71
139
  }
72
- function SelectContent({ className, children, side = "bottom", sideOffset = 8, align = "center", alignOffset = 0, alignItemWithTrigger = false, ...props }) {
73
- const resolvedSize = useComponentSize();
140
+ function SelectContent({ className, children, header, footer, side = "bottom", sideOffset = 8, align = "center", alignOffset = 0, alignItemWithTrigger = false, ...props }) {
141
+ const resolvedSize = responsiveValueClasses(useComponentSizeValue(), responsiveSelectContentSizes);
142
+ const bodySize = responsiveValueClasses(useComponentSizeValue(), responsiveSelectBodySizes);
74
143
  return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(Select$1.Positioner, {
75
144
  side,
76
145
  sideOffset,
@@ -81,19 +150,43 @@ function SelectContent({ className, children, side = "bottom", sideOffset = 8, a
81
150
  children: /* @__PURE__ */ jsxs(Select$1.Popup, {
82
151
  "data-slot": "select-content",
83
152
  "data-align-trigger": alignItemWithTrigger,
84
- className: cn(selectContentVariants({ size: resolvedSize }), className),
153
+ className: cn(selectContentVariants({ size: null }), resolvedSize.className, className),
85
154
  ...props,
86
155
  children: [
87
- /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
88
- /* @__PURE__ */ jsx(Select$1.List, {
89
- className: "space-y-0.5",
90
- children
156
+ header,
157
+ /* @__PURE__ */ jsxs("div", {
158
+ "data-slot": "select-content-body",
159
+ className: cn("min-h-0 flex-1 overflow-y-auto", bodySize.className),
160
+ children: [
161
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
162
+ /* @__PURE__ */ jsx(Select$1.List, {
163
+ className: "space-y-0.5",
164
+ children
165
+ }),
166
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
167
+ ]
91
168
  }),
92
- /* @__PURE__ */ jsx(SelectScrollDownButton, {})
169
+ footer
93
170
  ]
94
171
  })
95
172
  }) });
96
173
  }
174
+ function SelectHeader({ className, type = "button", ...props }) {
175
+ return /* @__PURE__ */ jsx("button", {
176
+ type,
177
+ "data-slot": "select-header",
178
+ className: cn("relative z-20 flex min-h-9 w-full cursor-pointer items-center gap-2 rounded-none rounded-t-[inherit] border-line-subtle border-b bg-canvas px-3 py-2 text-left text-gdt-sm font-bold text-fg-brand outline-none transition-colors hover:bg-surface-brand-subtle focus-visible:bg-surface-brand-subtle focus-visible:inset-ring-2 focus-visible:inset-ring-line-focus active:bg-surface-brand-subtle disabled:pointer-events-none disabled:text-fg-caption-placeholder", "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
179
+ ...props
180
+ });
181
+ }
182
+ function SelectFooter({ className, type = "button", ...props }) {
183
+ return /* @__PURE__ */ jsx("button", {
184
+ type,
185
+ "data-slot": "select-footer",
186
+ className: cn("relative z-20 flex min-h-9 w-full cursor-pointer items-center gap-2 rounded-none rounded-b-[inherit] border-line-subtle border-t bg-canvas px-3 py-2 text-left text-gdt-sm font-semibold text-fg-secondary outline-none transition-colors hover:bg-surface focus-visible:bg-surface focus-visible:inset-ring-2 focus-visible:inset-ring-line-focus active:bg-surface-raised disabled:pointer-events-none disabled:text-fg-caption-placeholder", "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
187
+ ...props
188
+ });
189
+ }
97
190
  function SelectLabel({ className, ...props }) {
98
191
  return /* @__PURE__ */ jsx(Select$1.GroupLabel, {
99
192
  "data-slot": "select-label",
@@ -103,10 +196,10 @@ function SelectLabel({ className, ...props }) {
103
196
  }
104
197
  function SelectItem({ className, children, ...props }) {
105
198
  const { multiple } = React.useContext(SelectSelectionContext);
106
- const resolvedSize = useComponentSize();
199
+ const resolvedSize = responsiveValueClasses(useComponentSizeValue(), responsiveSelectItemSizes);
107
200
  return /* @__PURE__ */ jsxs(Select$1.Item, {
108
201
  "data-slot": "select-item",
109
- className: cn(selectItemVariants({ size: resolvedSize }), !multiple && "data-selected:bg-surface-brand-subtle data-selected:font-medium data-selected:text-fg-brand", className),
202
+ className: cn(selectItemVariants({ size: null }), resolvedSize.className, !multiple && "data-selected:bg-surface-brand-subtle data-selected:font-medium data-selected:text-fg-brand", className),
110
203
  ...props,
111
204
  children: [multiple ? /* @__PURE__ */ jsx(Select$1.ItemIndicator, {
112
205
  keepMounted: true,
@@ -142,4 +235,4 @@ function SelectScrollDownButton({ className, ...props }) {
142
235
  });
143
236
  }
144
237
  //#endregion
145
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue };
238
+ export { Select, SelectContent, SelectFooter, SelectGroup, SelectHeader, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue };
package/dist/sheet.d.ts CHANGED
@@ -9,6 +9,8 @@ type SheetContentProps = Dialog.Popup.Props & {
9
9
  side?: SheetSide;
10
10
  showCloseButton?: boolean;
11
11
  showOverlay?: boolean;
12
+ /** @internal Positions specialized popup shells without changing the surface. */
13
+ popupClassName?: string;
12
14
  } & ({
13
15
  side: "top" | "bottom";
14
16
  size?: "fullscreen";
@@ -16,7 +18,7 @@ type SheetContentProps = Dialog.Popup.Props & {
16
18
  side?: "left" | "right";
17
19
  size?: "sm" | "md" | "lg";
18
20
  });
19
- declare function SheetContent({ className, children, side, size, showCloseButton, showOverlay, ...props }: SheetContentProps): React.JSX.Element;
21
+ declare function SheetContent({ className, children, side, size, showCloseButton, showOverlay, popupClassName, ...props }: SheetContentProps): React.JSX.Element;
20
22
  declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
21
23
  declare function SheetBody({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
22
24
  declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
package/dist/sheet.js CHANGED
@@ -42,7 +42,7 @@ function SheetOverlay({ className, ...props }) {
42
42
  ...props
43
43
  });
44
44
  }
45
- const sheetContentVariants = cva("group/sheet-content fixed z-50 flex flex-col gap-0 overflow-visible rounded-2xl border border-line-subtle bg-surface-overlay bg-clip-padding text-fg-primary shadow-(--elevation-e2-shadow) transition-[opacity,scale,translate] duration-[var(--duration-motion-surface)] ease-gdt-drawer data-ending-style:opacity-0 data-starting-style:opacity-0 [--sheet-padding-x:1rem] [--sheet-padding-top:1rem] data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:w-full data-[side=bottom]:rounded-b-none data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:w-full data-[side=top]:rounded-t-none data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:rounded-l-none data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:rounded-r-none data-[side=bottom]:data-ending-style:translate-y-full data-[side=bottom]:data-starting-style:translate-y-full data-[side=left]:data-ending-style:-translate-x-full data-[side=left]:data-starting-style:-translate-x-full data-[side=right]:data-ending-style:translate-x-full data-[side=right]:data-starting-style:translate-x-full data-[side=top]:data-ending-style:-translate-y-full data-[side=top]:data-starting-style:-translate-y-full motion-reduce:data-[side=bottom]:data-ending-style:translate-y-0 motion-reduce:data-[side=bottom]:data-starting-style:translate-y-0 motion-reduce:data-[side=left]:data-ending-style:translate-x-0 motion-reduce:data-[side=left]:data-starting-style:translate-x-0 motion-reduce:data-[side=right]:data-ending-style:translate-x-0 motion-reduce:data-[side=right]:data-starting-style:translate-x-0 motion-reduce:data-[side=top]:data-ending-style:translate-y-0 motion-reduce:data-[side=top]:data-starting-style:translate-y-0 data-[side=bottom]:data-[nested-dialog-open]:translate-y-[calc(var(--nested-dialogs)*-1.5rem)] data-[side=top]:data-[nested-dialog-open]:translate-y-[calc(var(--nested-dialogs)*1.5rem)] data-[side=left]:data-[nested-dialog-open]:translate-x-[calc(var(--nested-dialogs)*1.5rem)] data-[side=right]:data-[nested-dialog-open]:translate-x-[calc(var(--nested-dialogs)*-1.5rem)] data-[side=bottom]:data-[nested-dialog-open]:scale-x-[calc(1_-_var(--nested-dialogs)*0.05)] data-[side=top]:data-[nested-dialog-open]:scale-x-[calc(1_-_var(--nested-dialogs)*0.05)]", {
45
+ const sheetContentVariants = cva("group/sheet-content pointer-events-none fixed z-50 overflow-visible transition-[opacity,scale,translate] duration-[var(--duration-motion-surface)] ease-gdt-drawer data-ending-style:opacity-0 data-starting-style:opacity-0 [--sheet-padding-x:1rem] [--sheet-padding-top:1rem] data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:w-full data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:w-full data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=bottom]:data-ending-style:translate-y-full data-[side=bottom]:data-starting-style:translate-y-full data-[side=left]:data-ending-style:-translate-x-full data-[side=left]:data-starting-style:-translate-x-full data-[side=right]:data-ending-style:translate-x-full data-[side=right]:data-starting-style:translate-x-full data-[side=top]:data-ending-style:-translate-y-full data-[side=top]:data-starting-style:-translate-y-full motion-reduce:data-[side=bottom]:data-ending-style:translate-y-0 motion-reduce:data-[side=bottom]:data-starting-style:translate-y-0 motion-reduce:data-[side=left]:data-ending-style:translate-x-0 motion-reduce:data-[side=left]:data-starting-style:translate-x-0 motion-reduce:data-[side=right]:data-ending-style:translate-x-0 motion-reduce:data-[side=right]:data-starting-style:translate-x-0 motion-reduce:data-[side=top]:data-ending-style:translate-y-0 motion-reduce:data-[side=top]:data-starting-style:translate-y-0 data-[side=bottom]:data-[nested-dialog-open]:translate-y-[calc(var(--nested-dialogs)*-1.5rem)] data-[side=top]:data-[nested-dialog-open]:translate-y-[calc(var(--nested-dialogs)*1.5rem)] data-[side=left]:data-[nested-dialog-open]:translate-x-[calc(var(--nested-dialogs)*1.5rem)] data-[side=right]:data-[nested-dialog-open]:translate-x-[calc(var(--nested-dialogs)*-1.5rem)] data-[side=bottom]:data-[nested-dialog-open]:scale-x-[calc(1_-_var(--nested-dialogs)*0.05)] data-[side=top]:data-[nested-dialog-open]:scale-x-[calc(1_-_var(--nested-dialogs)*0.05)]", {
46
46
  variants: { size: {
47
47
  sm: "sm:[--sheet-padding-top:1.5rem] sm:[--sheet-padding-x:1.5rem] w-90 max-w-[calc(100vw-2.5rem)] [--sheet-title:var(--text-gdt-h5)]",
48
48
  md: "sm:[--sheet-padding-top:1.5rem] sm:[--sheet-padding-x:2rem] xl:[--sheet-padding-x:2.5rem] w-120 max-w-[calc(100vw-2.5rem)] [--sheet-title:var(--text-gdt-h4)]",
@@ -51,7 +51,7 @@ const sheetContentVariants = cva("group/sheet-content fixed z-50 flex flex-col g
51
51
  } },
52
52
  defaultVariants: { size: "md" }
53
53
  });
54
- function SheetContent({ className, children, side = "left", size = "md", showCloseButton = true, showOverlay = true, ...props }) {
54
+ function SheetContent({ className, children, side = "left", size = "md", showCloseButton = true, showOverlay = true, popupClassName, ...props }) {
55
55
  const resolvedSize = side === "top" || side === "bottom" ? "fullscreen" : size !== "fullscreen" ? size : "md";
56
56
  return /* @__PURE__ */ jsxs(SheetPortal, { children: [showOverlay && /* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsx(SizeProvider, {
57
57
  size: resolvedSize === "fullscreen" ? "lg" : resolvedSize,
@@ -59,13 +59,17 @@ function SheetContent({ className, children, side = "left", size = "md", showClo
59
59
  "data-slot": "sheet-content",
60
60
  "data-side": side,
61
61
  "data-size": resolvedSize,
62
- className: cn(sheetContentVariants({ size: resolvedSize }), className),
62
+ className: cn(sheetContentVariants({ size: resolvedSize }), popupClassName),
63
63
  ...props,
64
- children: [children, showCloseButton && /* @__PURE__ */ jsx(Dialog.Close, {
64
+ children: [/* @__PURE__ */ jsx("div", {
65
+ "data-slot": "sheet-surface",
66
+ className: cn("pointer-events-auto flex size-full flex-col gap-0 overflow-visible rounded-2xl border border-line-subtle bg-surface-overlay bg-clip-padding text-fg-primary shadow-(--elevation-e2-shadow) group-data-[side=bottom]/sheet-content:rounded-b-none group-data-[side=top]/sheet-content:rounded-t-none group-data-[side=left]/sheet-content:rounded-l-none group-data-[side=right]/sheet-content:rounded-r-none", className),
67
+ children
68
+ }), showCloseButton && /* @__PURE__ */ jsx(Dialog.Close, {
65
69
  "data-slot": "sheet-close",
66
70
  render: /* @__PURE__ */ jsxs(Button, {
67
71
  variant: "ghost",
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",
72
+ className: "pointer-events-auto 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
73
  size: "icon-xs",
70
74
  children: [/* @__PURE__ */ jsx(X, {}), /* @__PURE__ */ jsx("span", {
71
75
  className: "sr-only",
package/dist/sidebar.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Separator } from "./separator.js";
2
- import { t as Button } from "./button-DW5OijoR.js";
3
- import { t as Input } from "./input-CfoEJ8A6.js";
2
+ import { t as Button } from "./button-BS5KCibF.js";
3
+ import { Input } from "./input.js";
4
4
  import { TooltipContent } from "./tooltip.js";
5
5
  import { useRender } from "@base-ui/react/use-render";
6
6
  import { VariantProps } from "class-variance-authority";
package/dist/sidebar.js CHANGED
@@ -108,6 +108,7 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
108
108
  "data-sidebar": "sidebar",
109
109
  "data-slot": "sidebar",
110
110
  "data-mobile": "true",
111
+ popupClassName: "min-w-10/12 w-(--layout-nav-width) max-w-screen",
111
112
  className: "min-w-10/12 w-(--layout-nav-width) max-w-screen border-none bg-surface p-0 text-fg-secondary [&>button]:hidden",
112
113
  style: { "--layout-nav-width": SIDEBAR_WIDTH_MOBILE },
113
114
  side: "right",
@@ -0,0 +1,33 @@
1
+ import { ReactNode } from "react";
2
+ //#region src/size-context.d.ts
3
+ type ComponentSize = "sm" | "md" | "lg";
4
+ type ResponsiveValue<T extends string> = {
5
+ base: T;
6
+ md?: T;
7
+ lg?: T;
8
+ };
9
+ type ResolvedResponsiveValue<T extends string> = Required<ResponsiveValue<T>>;
10
+ type ResponsiveComponentSize = ResponsiveValue<ComponentSize>;
11
+ type ComponentSizeValue = ComponentSize | ResponsiveComponentSize;
12
+ declare function useInheritedComponentSize(): ComponentSizeValue | undefined;
13
+ declare function SizeProvider({ children, size }: {
14
+ children: ReactNode;
15
+ size?: ComponentSizeValue | null;
16
+ }): import("react").JSX.Element;
17
+ declare function useComponentSize(size?: ComponentSize | null, fallback?: ComponentSize): ComponentSize;
18
+ declare function useComponentSizeValue(size?: ComponentSizeValue | null, fallback?: ComponentSize): "lg" | "md" | "sm" | ResponsiveComponentSize;
19
+ declare function resolveResponsiveValue<T extends string>(value: T | ResponsiveValue<T>): ResolvedResponsiveValue<T>;
20
+ declare function resolveResponsiveComponentSize(size: ComponentSizeValue): Required<ResponsiveValue<ComponentSize>>;
21
+ declare function responsiveValueClasses<T extends string>(value: T | ResponsiveValue<T>, classes: {
22
+ base: Record<T, string>;
23
+ md: Record<T, string>;
24
+ lg: Record<T, string>;
25
+ }): {
26
+ base: T;
27
+ md: T;
28
+ lg: T;
29
+ responsive: boolean;
30
+ className: string;
31
+ };
32
+ //#endregion
33
+ export { ResponsiveValue as a, resolveResponsiveValue as c, useComponentSizeValue as d, useInheritedComponentSize as f, ResponsiveComponentSize as i, responsiveValueClasses as l, ComponentSizeValue as n, SizeProvider as o, ResolvedResponsiveValue as r, resolveResponsiveComponentSize as s, ComponentSize as t, useComponentSize as u };
@@ -1,2 +1,2 @@
1
- import { i as useInheritedComponentSize, n as SizeProvider, r as useComponentSize, t as ComponentSize } from "./size-context-BX6kAdVj.js";
2
- export { type ComponentSize, SizeProvider, useComponentSize, useInheritedComponentSize };
1
+ import { a as ResponsiveValue, c as resolveResponsiveValue, d as useComponentSizeValue, f as useInheritedComponentSize, i as ResponsiveComponentSize, l as responsiveValueClasses, n as ComponentSizeValue, o as SizeProvider, r as ResolvedResponsiveValue, s as resolveResponsiveComponentSize, t as ComponentSize, u as useComponentSize } from "./size-context-BVhHduLi.js";
2
+ export { type ComponentSize, type ComponentSizeValue, type ResolvedResponsiveValue, type ResponsiveComponentSize, type ResponsiveValue, SizeProvider, resolveResponsiveComponentSize, resolveResponsiveValue, responsiveValueClasses, useComponentSize, useComponentSizeValue, useInheritedComponentSize };
@@ -14,8 +14,37 @@ function SizeProvider({ children, size }) {
14
14
  });
15
15
  }
16
16
  function useComponentSize(size, fallback = "md") {
17
+ const inheritedSize = useInheritedComponentSize();
18
+ const resolved = size ?? inheritedSize ?? fallback;
19
+ return typeof resolved === "string" ? resolved : resolved.base;
20
+ }
21
+ function useComponentSizeValue(size, fallback = "md") {
17
22
  const inheritedSize = useInheritedComponentSize();
18
23
  return size ?? inheritedSize ?? fallback;
19
24
  }
25
+ function resolveResponsiveValue(value) {
26
+ if (typeof value === "string") return {
27
+ base: value,
28
+ md: value,
29
+ lg: value
30
+ };
31
+ const md = value.md ?? value.base;
32
+ return {
33
+ base: value.base,
34
+ md,
35
+ lg: value.lg ?? md
36
+ };
37
+ }
38
+ function resolveResponsiveComponentSize(size) {
39
+ return resolveResponsiveValue(size);
40
+ }
41
+ function responsiveValueClasses(value, classes) {
42
+ const resolved = resolveResponsiveValue(value);
43
+ return {
44
+ ...resolved,
45
+ responsive: typeof value !== "string",
46
+ className: typeof value === "string" ? classes.base[resolved.base] : `${classes.base[resolved.base]} ${classes.md[resolved.md]} ${classes.lg[resolved.lg]}`
47
+ };
48
+ }
20
49
  //#endregion
21
- export { SizeProvider, useComponentSize, useInheritedComponentSize };
50
+ export { SizeProvider, resolveResponsiveComponentSize, resolveResponsiveValue, responsiveValueClasses, useComponentSize, useComponentSizeValue, useInheritedComponentSize };
package/dist/slider.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { VariantProps } from "class-variance-authority";
1
+ import { n as ComponentSizeValue } from "./size-context-BVhHduLi.js";
2
2
  import * as React from "react";
3
3
  import { Slider as Slider$1 } from "@base-ui/react/slider";
4
4
  //#region src/slider.d.ts
@@ -6,8 +6,10 @@ declare const sliderVariants: (props?: ({
6
6
  size?: "lg" | "md" | "sm" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  type SliderRootValue = number | readonly number[];
9
- type SliderSize = NonNullable<VariantProps<typeof sliderVariants>["size"]>;
10
- type SliderProps<Value extends SliderRootValue = SliderRootValue> = Slider$1.Root.Props<Value> & VariantProps<typeof sliderVariants>;
9
+ type SliderSize = ComponentSizeValue;
10
+ type SliderProps<Value extends SliderRootValue = SliderRootValue> = Slider$1.Root.Props<Value> & {
11
+ size?: SliderSize;
12
+ };
11
13
  type SliderControlProps = Slider$1.Control.Props;
12
14
  type SliderTrackProps = Slider$1.Track.Props;
13
15
  type SliderIndicatorProps = Slider$1.Indicator.Props;
package/dist/slider.js CHANGED
@@ -1,34 +1,49 @@
1
1
  "use client";
2
2
  import { cn } from "./utils/cn.js";
3
- import { SizeProvider, useComponentSize } from "./size-context.js";
3
+ import { SizeProvider, responsiveValueClasses, useComponentSizeValue } from "./size-context.js";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { cva } from "class-variance-authority";
6
6
  import { Slider as Slider$1 } from "@base-ui/react/slider";
7
7
  //#region src/slider.tsx
8
+ const sliderSizeVariants = {
9
+ sm: "[--slider-thumb-size:1rem] [--slider-track-size:0.25rem]",
10
+ md: "[--slider-thumb-size:1.25rem] [--slider-track-size:0.375rem]",
11
+ lg: "[--slider-thumb-size:1.5rem] [--slider-track-size:0.5rem]"
12
+ };
8
13
  const sliderVariants = cva("group/slider grid w-full gap-2 disabled:cursor-not-allowed disabled:opacity-60 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-60", {
9
- variants: { size: {
10
- sm: "[--slider-thumb-size:1rem] [--slider-track-size:0.25rem]",
11
- md: "[--slider-thumb-size:1.25rem] [--slider-track-size:0.375rem]",
12
- lg: "[--slider-thumb-size:1.5rem] [--slider-track-size:0.5rem]"
13
- } },
14
+ variants: { size: sliderSizeVariants },
14
15
  defaultVariants: { size: "md" }
15
16
  });
16
17
  function Slider({ className, children, size, disabled = false, ...props }) {
17
- const resolvedSize = useComponentSize(size);
18
+ const sizeValue = useComponentSizeValue(size);
19
+ const resolvedSize = responsiveValueClasses(sizeValue, responsiveSliderSizes);
18
20
  return /* @__PURE__ */ jsx(SizeProvider, {
19
- size: resolvedSize,
21
+ size: sizeValue,
20
22
  children: /* @__PURE__ */ jsx(Slider$1.Root, {
21
23
  thumbAlignment: "edge",
22
24
  disabled,
23
25
  "data-disabled": disabled,
24
- "data-size": resolvedSize,
26
+ "data-size": resolvedSize.base,
25
27
  "data-slot": "slider",
26
- className: cn(sliderVariants({ size: resolvedSize }), className),
28
+ className: cn(sliderVariants({ size: null }), resolvedSize.className, className),
27
29
  ...props,
28
30
  children
29
31
  })
30
32
  });
31
33
  }
34
+ const responsiveSliderSizes = {
35
+ base: sliderSizeVariants,
36
+ md: {
37
+ sm: "md:[--slider-thumb-size:1rem] md:[--slider-track-size:0.25rem]",
38
+ md: "md:[--slider-thumb-size:1.25rem] md:[--slider-track-size:0.375rem]",
39
+ lg: "md:[--slider-thumb-size:1.5rem] md:[--slider-track-size:0.5rem]"
40
+ },
41
+ lg: {
42
+ sm: "lg:[--slider-thumb-size:1rem] lg:[--slider-track-size:0.25rem]",
43
+ md: "lg:[--slider-thumb-size:1.25rem] lg:[--slider-track-size:0.375rem]",
44
+ lg: "lg:[--slider-thumb-size:1.5rem] lg:[--slider-track-size:0.5rem]"
45
+ }
46
+ };
32
47
  function SliderControl({ className, ...props }) {
33
48
  return /* @__PURE__ */ jsx(Slider$1.Control, {
34
49
  "data-slot": "slider-control",
package/dist/sonar.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as ComponentSize } from "./size-context-BX6kAdVj.js";
1
+ import { t as ComponentSize } from "./size-context-BVhHduLi.js";
2
2
  import { VariantProps } from "class-variance-authority";
3
3
  import * as React from "react";
4
4
  //#region src/sonar.d.ts
package/dist/sonar.js CHANGED
@@ -24,7 +24,7 @@ function sameCorners(a, b) {
24
24
  * Colour rides on `currentColor` so the keyframe stays tone-agnostic: one set
25
25
  * of keyframes, one class per tone.
26
26
  */
27
- const sonarWaveVariants = cva(cn("pointer-events-none absolute inset-0 animate-sonar-wave", "motion-reduce:animate-none motion-reduce:opacity-40 motion-reduce:shadow-[0_0_0_2px_currentColor]"), {
27
+ const sonarWaveVariants = cva(cn("pointer-events-none absolute inset-0 animate-sonar-wave will-change-[box-shadow,opacity] [backface-visibility:hidden] [transform:translateZ(0)]", "motion-reduce:animate-none motion-reduce:opacity-40 motion-reduce:shadow-[0_0_0_2px_currentColor]"), {
28
28
  variants: { tone: {
29
29
  brand: "text-fg-brand",
30
30
  info: "text-status-info",
@@ -1,4 +1,4 @@
1
- import { t as ComponentSize } from "./size-context-BX6kAdVj.js";
1
+ import { t as ComponentSize } from "./size-context-BVhHduLi.js";
2
2
  import { ChartContainer, ChartValueType } from "./chart.js";
3
3
  import * as React from "react";
4
4
  //#region src/sparkline.d.ts