@giddaa-housing/ui 0.1.0 → 1.1.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 (315) hide show
  1. package/README.md +18 -6
  2. package/css/base.css +37 -0
  3. package/css/components.css +135 -0
  4. package/css/generated/shared.css +1 -0
  5. package/css/giddaa.css +402 -0
  6. package/css/preset.css +77 -0
  7. package/css/styles.css +2 -0
  8. package/css/theme.css +255 -0
  9. package/dist/accordion.d.ts +9 -10
  10. package/dist/accordion.js +41 -117
  11. package/dist/activity-timeline.d.ts +29 -0
  12. package/dist/activity-timeline.js +97 -0
  13. package/dist/alert.d.ts +8 -9
  14. package/dist/alert.js +53 -141
  15. package/dist/auth-layout.d.ts +23 -0
  16. package/dist/auth-layout.js +153 -0
  17. package/dist/avatar.d.ts +6 -6
  18. package/dist/avatar.js +40 -142
  19. package/dist/badge.d.ts +12 -13
  20. package/dist/badge.js +66 -114
  21. package/dist/bar-chart.d.ts +136 -114
  22. package/dist/bar-chart.js +244 -297
  23. package/dist/breadcrumb.d.ts +5 -5
  24. package/dist/breadcrumb.js +56 -148
  25. package/dist/bullet-chart.d.ts +33 -33
  26. package/dist/bullet-chart.js +123 -183
  27. package/dist/button-BZIeyUw6.d.ts +17 -0
  28. package/dist/button-group.d.ts +13 -16
  29. package/dist/button-group.js +38 -163
  30. package/dist/button.d.ts +2 -19
  31. package/dist/button.js +90 -142
  32. package/dist/calendar.d.ts +6 -6
  33. package/dist/calendar.js +134 -288
  34. package/dist/card.d.ts +14 -16
  35. package/dist/card.js +58 -174
  36. package/dist/carousel.d.ts +34 -35
  37. package/dist/carousel.js +319 -378
  38. package/dist/chart.d.ts +58 -59
  39. package/dist/chart.js +350 -466
  40. package/dist/checkbox.d.ts +10 -12
  41. package/dist/checkbox.js +84 -84
  42. package/dist/cn-BI_4DMBf.js +23 -0
  43. package/dist/collapsible.d.ts +7 -8
  44. package/dist/collapsible.js +23 -77
  45. package/dist/combobox.d.ts +10 -10
  46. package/dist/combobox.js +220 -696
  47. package/dist/cta.d.ts +64 -0
  48. package/dist/cta.js +192 -0
  49. package/dist/currency-selector.d.ts +41 -0
  50. package/dist/currency-selector.js +114 -0
  51. package/dist/data-table.d.ts +164 -0
  52. package/dist/data-table.js +673 -0
  53. package/dist/date-picker.d.ts +27 -20
  54. package/dist/date-picker.js +122 -520
  55. package/dist/details-card.d.ts +19 -0
  56. package/dist/details-card.js +118 -0
  57. package/dist/dialog.d.ts +13 -14
  58. package/dist/dialog.js +117 -320
  59. package/dist/dropdown-menu.d.ts +14 -14
  60. package/dist/dropdown-menu.js +170 -365
  61. package/dist/dropzone.d.ts +55 -55
  62. package/dist/dropzone.js +328 -467
  63. package/dist/editorial-card.d.ts +27 -0
  64. package/dist/editorial-card.js +144 -0
  65. package/dist/empty-state.d.ts +8 -9
  66. package/dist/empty-state.js +48 -135
  67. package/dist/field.d.ts +23 -25
  68. package/dist/field.js +111 -327
  69. package/dist/filter.d.ts +118 -0
  70. package/dist/filter.js +775 -0
  71. package/dist/footer.d.ts +40 -0
  72. package/dist/footer.js +227 -0
  73. package/dist/funnel-chart.d.ts +38 -41
  74. package/dist/funnel-chart.js +168 -563
  75. package/dist/gallery-indicator.d.ts +17 -0
  76. package/dist/gallery-indicator.js +75 -0
  77. package/dist/heatmap-chart.d.ts +95 -0
  78. package/dist/heatmap-chart.js +197 -0
  79. package/dist/infotip.d.ts +10 -0
  80. package/dist/infotip.js +40 -0
  81. package/dist/input-CfoEJ8A6.d.ts +12 -0
  82. package/dist/input-group.d.ts +16 -19
  83. package/dist/input-group.js +92 -372
  84. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  85. package/dist/input-size-context.d.ts +2 -11
  86. package/dist/input-size-context.js +14 -20
  87. package/dist/input.d.ts +2 -13
  88. package/dist/input.js +23 -79
  89. package/dist/item.d.ts +7 -8
  90. package/dist/item.js +22 -89
  91. package/dist/kpi-card.d.ts +18 -20
  92. package/dist/kpi-card.js +84 -232
  93. package/dist/label.d.ts +6 -6
  94. package/dist/label.js +39 -66
  95. package/dist/line-chart.d.ts +88 -89
  96. package/dist/line-chart.js +143 -262
  97. package/dist/logo.d.ts +4 -4
  98. package/dist/logo.js +87 -141
  99. package/dist/map-indicator.d.ts +13 -0
  100. package/dist/map-indicator.js +83 -0
  101. package/dist/match.d.ts +15 -0
  102. package/dist/match.js +68 -0
  103. package/dist/media-gallery-hero.d.ts +58 -0
  104. package/dist/media-gallery-hero.js +201 -0
  105. package/dist/media-player.d.ts +60 -0
  106. package/dist/media-player.js +919 -0
  107. package/dist/multi-step-form.d.ts +56 -0
  108. package/dist/multi-step-form.js +342 -0
  109. package/dist/number-input.d.ts +34 -34
  110. package/dist/number-input.js +62 -413
  111. package/dist/page-header.d.ts +10 -11
  112. package/dist/page-header.js +34 -107
  113. package/dist/pagination.d.ts +17 -20
  114. package/dist/pagination.js +132 -341
  115. package/dist/password-input.d.ts +5 -12
  116. package/dist/password-input.js +32 -354
  117. package/dist/phone-input.d.ts +19 -19
  118. package/dist/phone-input.js +232 -561
  119. package/dist/photo-gallery.d.ts +20 -20
  120. package/dist/photo-gallery.js +314 -746
  121. package/dist/picker-lzgmsNfG.js +32 -0
  122. package/dist/pie-chart.d.ts +60 -60
  123. package/dist/pie-chart.js +141 -184
  124. package/dist/popover.d.ts +9 -9
  125. package/dist/popover.js +60 -156
  126. package/dist/price-tag.d.ts +34 -0
  127. package/dist/price-tag.js +118 -0
  128. package/dist/progress.d.ts +18 -16
  129. package/dist/progress.js +156 -300
  130. package/dist/property-listing-card.d.ts +29 -0
  131. package/dist/property-listing-card.js +117 -0
  132. package/dist/radar-chart.d.ts +108 -0
  133. package/dist/radar-chart.js +172 -0
  134. package/dist/radio-group.d.ts +11 -13
  135. package/dist/radio-group.js +47 -96
  136. package/dist/review-block.d.ts +18 -0
  137. package/dist/review-block.js +154 -0
  138. package/dist/rich-text-editor.d.ts +30 -14
  139. package/dist/rich-text-editor.js +594 -979
  140. package/dist/scatter-chart.d.ts +140 -0
  141. package/dist/scatter-chart.js +248 -0
  142. package/dist/search-input.d.ts +8 -15
  143. package/dist/search-input.js +58 -408
  144. package/dist/select.d.ts +8 -8
  145. package/dist/select.js +131 -291
  146. package/dist/separator.d.ts +8 -9
  147. package/dist/separator.js +31 -70
  148. package/dist/sheet.d.ts +11 -11
  149. package/dist/sheet.js +84 -262
  150. package/dist/sidebar.d.ts +32 -37
  151. package/dist/sidebar.js +380 -1055
  152. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  153. package/dist/size-context.d.ts +2 -11
  154. package/dist/size-context.js +14 -18
  155. package/dist/skeleton.d.ts +4 -5
  156. package/dist/skeleton.js +9 -45
  157. package/dist/slider.d.ts +27 -0
  158. package/dist/slider.js +81 -0
  159. package/dist/sparkline.d.ts +43 -46
  160. package/dist/sparkline.js +223 -561
  161. package/dist/stepper.d.ts +23 -24
  162. package/dist/stepper.js +149 -276
  163. package/dist/styles.css +9995 -2
  164. package/dist/switch.d.ts +10 -12
  165. package/dist/switch.js +49 -106
  166. package/dist/table-card.d.ts +35 -0
  167. package/dist/table-card.js +125 -0
  168. package/dist/table.d.ts +18 -14
  169. package/dist/table.js +114 -182
  170. package/dist/tabs.d.ts +23 -15
  171. package/dist/tabs.js +62 -149
  172. package/dist/tag.d.ts +22 -23
  173. package/dist/tag.js +104 -156
  174. package/dist/testimonial-block.d.ts +33 -0
  175. package/dist/testimonial-block.js +208 -0
  176. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  177. package/dist/textarea.d.ts +2 -12
  178. package/dist/textarea.js +20 -74
  179. package/dist/time-picker.d.ts +11 -11
  180. package/dist/time-picker.js +247 -464
  181. package/dist/toast.d.ts +16 -18
  182. package/dist/toast.js +154 -310
  183. package/dist/tooltip.d.ts +9 -10
  184. package/dist/tooltip.js +33 -91
  185. package/dist/tree-map.d.ts +54 -57
  186. package/dist/tree-map.js +231 -646
  187. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  188. package/dist/waterfall-chart.d.ts +126 -0
  189. package/dist/waterfall-chart.js +480 -0
  190. package/package.json +123 -34
  191. package/dist/accordion.js.map +0 -1
  192. package/dist/alert.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/base.css +0 -32
  197. package/dist/breadcrumb.js.map +0 -1
  198. package/dist/bullet-chart.js.map +0 -1
  199. package/dist/button-group.js.map +0 -1
  200. package/dist/button.js.map +0 -1
  201. package/dist/calendar.js.map +0 -1
  202. package/dist/card.js.map +0 -1
  203. package/dist/carousel.js.map +0 -1
  204. package/dist/chart.js.map +0 -1
  205. package/dist/checkbox.js.map +0 -1
  206. package/dist/collapsible.js.map +0 -1
  207. package/dist/combobox.js.map +0 -1
  208. package/dist/date-picker.js.map +0 -1
  209. package/dist/dialog.js.map +0 -1
  210. package/dist/dropdown-menu.js.map +0 -1
  211. package/dist/dropzone.js.map +0 -1
  212. package/dist/empty-state.js.map +0 -1
  213. package/dist/field.js.map +0 -1
  214. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  215. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  216. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  217. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  218. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  219. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  220. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  221. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  222. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  223. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  224. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  225. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  226. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  227. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  228. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  229. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  230. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  231. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  232. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  233. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  234. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  235. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  236. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  237. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  238. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  239. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  240. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  241. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  242. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  243. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  244. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  245. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  246. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  247. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  248. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  249. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  250. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  251. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  252. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  253. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  254. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  255. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  256. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  257. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  258. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  259. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  260. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  261. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  262. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  263. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  264. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  265. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  266. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  267. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  268. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  269. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  270. package/dist/funnel-chart.js.map +0 -1
  271. package/dist/index.d.ts +0 -87
  272. package/dist/index.js +0 -10448
  273. package/dist/index.js.map +0 -1
  274. package/dist/input-group.js.map +0 -1
  275. package/dist/input-size-context.js.map +0 -1
  276. package/dist/input.js.map +0 -1
  277. package/dist/item.js.map +0 -1
  278. package/dist/kpi-card.js.map +0 -1
  279. package/dist/label.js.map +0 -1
  280. package/dist/line-chart.js.map +0 -1
  281. package/dist/logo.js.map +0 -1
  282. package/dist/number-input.js.map +0 -1
  283. package/dist/page-header.js.map +0 -1
  284. package/dist/pagination.js.map +0 -1
  285. package/dist/password-input.js.map +0 -1
  286. package/dist/phone-input.js.map +0 -1
  287. package/dist/photo-gallery.js.map +0 -1
  288. package/dist/pie-chart.js.map +0 -1
  289. package/dist/popover.js.map +0 -1
  290. package/dist/progress.js.map +0 -1
  291. package/dist/radio-group.js.map +0 -1
  292. package/dist/red-hat-display.css +0 -2
  293. package/dist/rich-text-editor.js.map +0 -1
  294. package/dist/search-input.js.map +0 -1
  295. package/dist/select.js.map +0 -1
  296. package/dist/separator.js.map +0 -1
  297. package/dist/sheet.js.map +0 -1
  298. package/dist/sidebar.js.map +0 -1
  299. package/dist/size-context.js.map +0 -1
  300. package/dist/skeleton.js.map +0 -1
  301. package/dist/sparkline.js.map +0 -1
  302. package/dist/stepper.js.map +0 -1
  303. package/dist/switch.js.map +0 -1
  304. package/dist/tab-list.d.ts +0 -38
  305. package/dist/tab-list.js +0 -394
  306. package/dist/tab-list.js.map +0 -1
  307. package/dist/table.js.map +0 -1
  308. package/dist/tabs.js.map +0 -1
  309. package/dist/tag.js.map +0 -1
  310. package/dist/textarea.js.map +0 -1
  311. package/dist/theme/giddaa.css +0 -2
  312. package/dist/time-picker.js.map +0 -1
  313. package/dist/toast.js.map +0 -1
  314. package/dist/tooltip.js.map +0 -1
  315. package/dist/tree-map.js.map +0 -1
package/dist/toast.d.ts CHANGED
@@ -1,23 +1,21 @@
1
- import * as React from 'react';
2
- import { PropsWithChildren } from 'react';
3
- import * as _base_ui_react from '@base-ui/react';
4
- import { ToastManagerAddOptions, ToastManagerUpdateOptions } from '@base-ui/react/toast';
5
-
1
+ import { PropsWithChildren } from "react";
2
+ import { ToastManagerAddOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
3
+ //#region src/toast.d.ts
6
4
  type ToastVariant = "success" | "info" | "warning" | "error" | "loading";
7
5
  type ToastData = {
8
- type: ToastVariant;
6
+ type: ToastVariant;
9
7
  };
10
- declare const toastManager: _base_ui_react.ToastManager<any>;
8
+ declare const toastManager: import("@base-ui/react").ToastManager<any>;
11
9
  declare const toast: ((options: ToastManagerAddOptions<ToastData>) => string) & {
12
- success: (options: ToastManagerAddOptions<ToastData>) => string;
13
- info: (options: ToastManagerAddOptions<ToastData>) => string;
14
- warning: (options: ToastManagerAddOptions<ToastData>) => string;
15
- error: (options: ToastManagerAddOptions<ToastData>) => string;
16
- loading: (options: ToastManagerAddOptions<ToastData>) => string;
17
- dismiss: (toastId?: string | number) => void;
18
- update: (toastId: string | number, options: ToastManagerUpdateOptions<ToastData>) => void;
19
- promise: <Value, T extends any = any>(promiseValue: Promise<Value>, options: _base_ui_react.ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
10
+ success: (options: ToastManagerAddOptions<ToastData>) => string;
11
+ info: (options: ToastManagerAddOptions<ToastData>) => string;
12
+ warning: (options: ToastManagerAddOptions<ToastData>) => string;
13
+ error: (options: ToastManagerAddOptions<ToastData>) => string;
14
+ loading: (options: ToastManagerAddOptions<ToastData>) => string;
15
+ dismiss: (toastId?: string | number) => void;
16
+ update: (toastId: string | number, options: ToastManagerUpdateOptions<ToastData>) => void;
17
+ promise: <Value, T extends any = any>(promiseValue: Promise<Value>, options: import("@base-ui/react").ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
20
18
  };
21
- declare function ToastProvider({ children }: PropsWithChildren): React.JSX.Element;
22
-
23
- export { ToastProvider, toast, toastManager };
19
+ declare function ToastProvider({ children }: PropsWithChildren): import("react").JSX.Element;
20
+ //#endregion
21
+ export { ToastProvider, toast, toastManager };
package/dist/toast.js CHANGED
@@ -1,330 +1,174 @@
1
- // src/components/ui/toast.tsx
2
- import { Toast as BaseToast } from "@base-ui/react/toast";
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { Button } from "./button.js";
3
3
  import { Check, Info, X } from "lucide-react";
4
-
5
- // src/lib/cn.ts
6
- import { clsx } from "clsx";
7
- import { extendTailwindMerge } from "tailwind-merge";
8
- var twMerge = extendTailwindMerge({
9
- extend: {
10
- classGroups: {
11
- "font-size": [
12
- {
13
- text: [
14
- "gdt-display",
15
- "gdt-h1",
16
- "gdt-h2",
17
- "gdt-h3",
18
- "gdt-h4",
19
- "gdt-h5",
20
- "gdt-xl",
21
- "gdt-lg",
22
- "gdt-md",
23
- "gdt-sm",
24
- "gdt-xs",
25
- "gdt-subtext",
26
- "gdt-capitalized"
27
- ]
28
- }
29
- ]
30
- }
31
- }
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Toast } from "@base-ui/react/toast";
6
+ //#region src/toast.tsx
7
+ const DEFAULT_TOAST_SIDE = "top";
8
+ const DEFAULT_TOAST_ALIGN = "end";
9
+ const toastManager = Toast.createToastManager();
10
+ const toast = Object.assign((options) => toastManager.add(options), {
11
+ success: (options) => toastManager.add({
12
+ ...options,
13
+ data: {
14
+ type: "success",
15
+ ...options.data
16
+ }
17
+ }),
18
+ info: (options) => toastManager.add({
19
+ ...options,
20
+ data: {
21
+ type: "info",
22
+ ...options.data
23
+ }
24
+ }),
25
+ warning: (options) => toastManager.add({
26
+ ...options,
27
+ data: {
28
+ type: "warning",
29
+ ...options.data
30
+ }
31
+ }),
32
+ error: (options) => toastManager.add({
33
+ ...options,
34
+ data: {
35
+ type: "error",
36
+ ...options.data
37
+ }
38
+ }),
39
+ loading: (options) => toastManager.add({
40
+ ...options,
41
+ data: {
42
+ type: "loading",
43
+ ...options.data
44
+ }
45
+ }),
46
+ dismiss: (toastId) => toastManager.close(toastId?.toString()),
47
+ update: (toastId, options) => toastManager.update(toastId.toString(), options),
48
+ promise: toastManager.promise
32
49
  });
33
- function cn(...inputs) {
34
- return twMerge(clsx(inputs));
35
- }
36
-
37
- // src/components/ui/button.tsx
38
- import { Button as ButtonPrimitive } from "@base-ui/react/button";
39
- import { cva } from "class-variance-authority";
40
- import { Loader } from "lucide-react";
41
-
42
- // src/components/ui/size-context.tsx
43
- import { createContext, useContext } from "react";
44
- import { Fragment, jsx } from "react/jsx-runtime";
45
- var SizeContext = createContext(void 0);
46
- function useComponentSize(size, fallback = "md") {
47
- const inheritedSize = useContext(SizeContext);
48
- return size ?? inheritedSize ?? fallback;
49
- }
50
-
51
- // src/components/ui/button.tsx
52
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
53
- var buttonVariants = cva(
54
- "group/button inline-flex shrink-0 items-center justify-center rounded-full bg-clip-padding whitespace-nowrap font-bold transition-[background-color,color,border-color,box-shadow,transform] outline-none select-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
55
- {
56
- variants: {
57
- variant: {
58
- primary: "bg-action-primary text-fg-on-brand hover:bg-action-primary-hover active:bg-action-primary-pressed",
59
- "primary-outline": "border-2 border-action-primary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
60
- secondary: "bg-surface-brand-subtle text-fg-brand hover:bg-action-primary-hover hover:text-fg-on-brand active:bg-action-primary-pressed active:text-fg-on-brand data-focused:bg-action-primary-hover data-pressed:bg-action-primary-pressed data-focused:text-fg-on-brand data-pressed:text-fg-on-brand",
61
- "secondary-outline": "border-2 border-action-secondary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
62
- tertiary: "bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-focused:bg-action-tertiary-hover data-pressed:bg-action-tertiary-pressed",
63
- "tertiary-outline": "border border-line-strong bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
64
- ghost: "bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
65
- danger: "bg-action-danger text-fg-on-brand hover:bg-action-danger-hover active:bg-action-danger-pressed data-focused:bg-action-danger-hover data-pressed:bg-action-danger-pressed",
66
- "glass-overlay": "bg-surface-glass-overlay-button text-fg-on-brand",
67
- "link-brand": "border-transparent bg-transparent px-0 text-fg-brand hover:underline active:underline active:opacity-70",
68
- "link-neutral": "border-transparent bg-transparent px-0 text-fg-secondary hover:underline active:underline active:opacity-70"
69
- },
70
- size: {
71
- sm: "h-8 gap-2 px-3.5 text-gdt-xs has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-3.5",
72
- md: "h-10 gap-2 px-4.5 text-gdt-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4",
73
- lg: "h-12.5 gap-2.5 px-5.5 text-gdt-md has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 [&_svg:not([class*='size-'])]:size-4.5",
74
- xl: "h-14 gap-3 px-6.5 text-gdt-lg has-data-[icon=inline-end]:pr-6 has-data-[icon=inline-start]:pl-6 [&_svg:not([class*='size-'])]:size-5",
75
- icon: "size-10",
76
- "icon-xs": "size-6 text-gdt-xs [&_svg:not([class*='size-'])]:size-3",
77
- "icon-sm": "size-8 text-gdt-sm [&_svg:not([class*='size-'])]:size-3.5",
78
- "icon-lg": "size-12.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5",
79
- "icon-xl": "size-14 text-gdt-lg [&_svg:not([class*='size-'])]:size-5"
80
- }
81
- },
82
- defaultVariants: {
83
- variant: "primary",
84
- size: "md"
85
- }
86
- }
87
- );
88
- function Button({
89
- className,
90
- variant = "primary",
91
- size,
92
- isLoading = false,
93
- children,
94
- disabled = false,
95
- ...props
96
- }) {
97
- const inheritedSize = useComponentSize();
98
- const resolvedSize = size ?? inheritedSize;
99
- const _disabled = disabled || isLoading;
100
- return /* @__PURE__ */ jsxs(
101
- ButtonPrimitive,
102
- {
103
- "data-slot": "button",
104
- className: cn(buttonVariants({ variant, size: resolvedSize, className })),
105
- disabled: _disabled,
106
- ...props,
107
- children: [
108
- isLoading && /* @__PURE__ */ jsx2(Loader, { className: "size-4 animate-spin" }),
109
- " ",
110
- children
111
- ]
112
- }
113
- );
114
- }
115
-
116
- // src/components/ui/toast.tsx
117
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
118
- var DEFAULT_TOAST_SIDE = "top";
119
- var DEFAULT_TOAST_ALIGN = "end";
120
- var toastManager = BaseToast.createToastManager();
121
- var toast = Object.assign(
122
- (options) => toastManager.add(options),
123
- {
124
- success: (options) => toastManager.add({
125
- ...options,
126
- data: { type: "success", ...options.data }
127
- }),
128
- info: (options) => toastManager.add({
129
- ...options,
130
- data: { type: "info", ...options.data }
131
- }),
132
- warning: (options) => toastManager.add({
133
- ...options,
134
- data: { type: "warning", ...options.data }
135
- }),
136
- error: (options) => toastManager.add({
137
- ...options,
138
- data: { type: "error", ...options.data }
139
- }),
140
- loading: (options) => toastManager.add({
141
- ...options,
142
- data: { type: "loading", ...options.data }
143
- }),
144
- dismiss: (toastId) => toastManager.close(toastId?.toString()),
145
- update: (toastId, options) => toastManager.update(toastId.toString(), options),
146
- promise: toastManager.promise
147
- }
148
- );
149
50
  function ToastProvider({ children }) {
150
- return /* @__PURE__ */ jsxs2(BaseToast.Provider, { limit: 4, timeout: 5e3, toastManager, children: [
151
- children,
152
- /* @__PURE__ */ jsx3(BaseToast.Portal, { children: /* @__PURE__ */ jsx3(BaseToast.Viewport, { className: "fixed inset-0 z-9999 pointer-events-none outline-none", children: /* @__PURE__ */ jsx3(ToastList, {}) }) })
153
- ] });
51
+ return /* @__PURE__ */ jsxs(Toast.Provider, {
52
+ limit: 4,
53
+ timeout: 5e3,
54
+ toastManager,
55
+ children: [children, /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
56
+ className: "fixed inset-0 z-9999 pointer-events-none outline-none",
57
+ children: /* @__PURE__ */ jsx(ToastList, {})
58
+ }) })]
59
+ });
154
60
  }
155
61
  function ToastList() {
156
- const { toasts } = BaseToast.useToastManager();
157
- const placementStacks = /* @__PURE__ */ new Map();
158
- return toasts.map((item) => {
159
- const placement = getToastPlacement(item);
160
- const stack = placementStacks.get(placement.key) ?? {
161
- domIndex: 0,
162
- visibleIndex: 0,
163
- offsetY: 0,
164
- frontmostHeight: item.height
165
- };
166
- const placementIndex = item.transitionStatus === "ending" ? stack.domIndex : stack.visibleIndex;
167
- const style = {
168
- "--toast-placement-index": placementIndex,
169
- "--toast-placement-offset-y": `${stack.offsetY}px`,
170
- "--toast-placement-frontmost-height": stack.frontmostHeight ? `${stack.frontmostHeight}px` : void 0
171
- };
172
- stack.offsetY += item.height ?? 0;
173
- stack.domIndex += 1;
174
- if (item.transitionStatus !== "ending") {
175
- stack.visibleIndex += 1;
176
- }
177
- placementStacks.set(placement.key, stack);
178
- return /* @__PURE__ */ jsx3(
179
- BaseToast.Root,
180
- {
181
- toast: item,
182
- className: cn(
183
- toastRootBaseClassName,
184
- getToastPositionClassName(placement),
185
- getToastStackClassName(placement),
186
- getToastExitClassName(placement.side)
187
- ),
188
- swipeDirection: getSwipeDirections(item),
189
- style,
190
- children: /* @__PURE__ */ jsxs2(
191
- BaseToast.Content,
192
- {
193
- className: "grid grid-cols-[16px_minmax(0,1fr)_24px] items-start gap-3 overflow-hidden px-2.5 py-3.5 pl-3 transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100",
194
- children: [
195
- /* @__PURE__ */ jsx3(ToastIcon, { type: item.data?.type }),
196
- /* @__PURE__ */ jsxs2("div", { className: "min-w-0 flex flex-col gap-1.5", children: [
197
- item.title ? /* @__PURE__ */ jsx3(BaseToast.Title, { className: "text-gdt-sm font-semibold text-fg-primary" }) : null,
198
- item.description ? /* @__PURE__ */ jsx3(BaseToast.Description, { className: "text-gdt-sm text-fg-secondary" }) : null,
199
- /* @__PURE__ */ jsx3(
200
- BaseToast.Action,
201
- {
202
- className: cn(
203
- "cursor-pointer border-0 bg-transparent p-0 font-inherit text-gdt-sm font-semibold inline-flex w-fit items-center hover:underline underline-offset-2",
204
- item.data?.type === "success" && "text-fg-brand",
205
- item.data?.type === "info" && "text-fg-primary",
206
- item.data?.type === "warning" && "text-fg-accent",
207
- item.data?.type === "error" && "text-fg-danger"
208
- )
209
- }
210
- )
211
- ] }),
212
- /* @__PURE__ */ jsx3(
213
- BaseToast.Close,
214
- {
215
- render: /* @__PURE__ */ jsx3(Button, { variant: "ghost", size: "icon-xs" }),
216
- "aria-label": "Close toast",
217
- children: /* @__PURE__ */ jsx3(X, { className: "size-4" })
218
- }
219
- )
220
- ]
221
- }
222
- )
223
- },
224
- item.id
225
- );
226
- });
62
+ const { toasts } = Toast.useToastManager();
63
+ const placementStacks = /* @__PURE__ */ new Map();
64
+ return toasts.map((item) => {
65
+ const placement = getToastPlacement(item);
66
+ const stack = placementStacks.get(placement.key) ?? {
67
+ domIndex: 0,
68
+ visibleIndex: 0,
69
+ offsetY: 0,
70
+ frontmostHeight: item.height
71
+ };
72
+ const style = {
73
+ "--toast-placement-index": item.transitionStatus === "ending" ? stack.domIndex : stack.visibleIndex,
74
+ "--toast-placement-offset-y": `${stack.offsetY}px`,
75
+ "--toast-placement-frontmost-height": stack.frontmostHeight ? `${stack.frontmostHeight}px` : void 0
76
+ };
77
+ stack.offsetY += item.height ?? 0;
78
+ stack.domIndex += 1;
79
+ if (item.transitionStatus !== "ending") stack.visibleIndex += 1;
80
+ placementStacks.set(placement.key, stack);
81
+ return /* @__PURE__ */ jsx(Toast.Root, {
82
+ toast: item,
83
+ className: cn(toastRootBaseClassName, getToastPositionClassName(placement), getToastStackClassName(placement), getToastExitClassName(placement.side)),
84
+ swipeDirection: getSwipeDirections(item),
85
+ style,
86
+ children: /* @__PURE__ */ jsxs(Toast.Content, {
87
+ className: "grid grid-cols-[16px_minmax(0,1fr)_24px] items-start gap-3 overflow-hidden px-2.5 py-3.5 pl-3 transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100",
88
+ children: [
89
+ /* @__PURE__ */ jsx(ToastIcon, { type: item.data?.type }),
90
+ /* @__PURE__ */ jsxs("div", {
91
+ className: "min-w-0 flex flex-col gap-1.5",
92
+ children: [
93
+ item.title ? /* @__PURE__ */ jsx(Toast.Title, { className: "text-gdt-sm font-semibold text-fg-primary" }) : null,
94
+ item.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "text-gdt-sm text-fg-secondary" }) : null,
95
+ /* @__PURE__ */ jsx(Toast.Action, { className: cn("cursor-pointer border-0 bg-transparent p-0 font-inherit text-gdt-sm font-semibold inline-flex w-fit items-center hover:underline underline-offset-2", item.data?.type === "success" && "text-fg-brand", item.data?.type === "info" && "text-fg-primary", item.data?.type === "warning" && "text-fg-accent", item.data?.type === "error" && "text-fg-danger") })
96
+ ]
97
+ }),
98
+ /* @__PURE__ */ jsx(Toast.Close, {
99
+ render: /* @__PURE__ */ jsx(Button, {
100
+ variant: "ghost",
101
+ size: "icon-xs"
102
+ }),
103
+ "aria-label": "Close toast",
104
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
105
+ })
106
+ ]
107
+ })
108
+ }, item.id);
109
+ });
227
110
  }
228
111
  function ToastIcon({ type }) {
229
- if (!type) return null;
230
- return /* @__PURE__ */ jsxs2(
231
- "span",
232
- {
233
- className: cn(
234
- "inline-flex size-5 items-center justify-center rounded-full text-canvas",
235
- type === "success" && "bg-status-success",
236
- type === "info" && "bg-status-info",
237
- type === "warning" && "bg-status-warning text-fg-on-accent",
238
- type === "error" && "bg-status-danger"
239
- ),
240
- "aria-hidden": "true",
241
- children: [
242
- type === "success" ? /* @__PURE__ */ jsx3(Check, { size: 10, strokeWidth: 3 }) : null,
243
- type === "info" ? /* @__PURE__ */ jsx3(Info, { size: 11, strokeWidth: 2.8 }) : null,
244
- type === "warning" ? /* @__PURE__ */ jsx3("span", { className: "text-[11px] leading-none font-extrabold", children: "!" }) : null,
245
- type === "error" ? /* @__PURE__ */ jsx3(X, { size: 10, strokeWidth: 3 }) : null
246
- ]
247
- }
248
- );
112
+ if (!type) return null;
113
+ return /* @__PURE__ */ jsxs("span", {
114
+ className: cn("inline-flex size-5 items-center justify-center rounded-full text-canvas", type === "success" && "bg-status-success", type === "info" && "bg-status-info", type === "warning" && "bg-status-warning text-fg-on-accent", type === "error" && "bg-status-danger"),
115
+ "aria-hidden": "true",
116
+ children: [
117
+ type === "success" ? /* @__PURE__ */ jsx(Check, {
118
+ size: 10,
119
+ strokeWidth: 3
120
+ }) : null,
121
+ type === "info" ? /* @__PURE__ */ jsx(Info, {
122
+ size: 11,
123
+ strokeWidth: 2.8
124
+ }) : null,
125
+ type === "warning" ? /* @__PURE__ */ jsx("span", {
126
+ className: "text-[11px] leading-none font-extrabold",
127
+ children: "!"
128
+ }) : null,
129
+ type === "error" ? /* @__PURE__ */ jsx(X, {
130
+ size: 10,
131
+ strokeWidth: 3
132
+ }) : null
133
+ ]
134
+ });
249
135
  }
250
- var toastRootBaseClassName = "[--gap:12px] [--peek:12px] [--anchor-x:0px] [--anchor-y:0px] [--scale:calc(max(0,1-(var(--toast-placement-index)*0.04)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-placement-frontmost-height,var(--toast-height))] absolute z-[calc(1000-var(--toast-placement-index))] h-[var(--height)] min-h-[var(--height)] w-[min(335px,calc(100vw-32px))] overflow-visible rounded-lg border border-line bg-surface-overlay text-fg-primary shadow-[var(--elevation-e2-shadow)] pointer-events-auto select-none [transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--collapsed-y))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms] after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:pointer-events-auto after:content-[''] data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--expanded-y))_scale(1)] data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:opacity-0 data-[limited]:opacity-0 [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(1)] data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(1)] data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(1)] data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(1)]";
136
+ const toastRootBaseClassName = "[--gap:12px] [--peek:12px] [--anchor-x:0px] [--anchor-y:0px] [--scale:calc(max(0,1-(var(--toast-placement-index)*0.04)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-placement-frontmost-height,var(--toast-height))] absolute z-[calc(1000-var(--toast-placement-index))] h-[var(--height)] min-h-[var(--height)] w-[min(335px,calc(100vw-32px))] overflow-visible rounded-lg border border-line bg-surface-overlay text-fg-primary shadow-[var(--elevation-e2-shadow)] pointer-events-auto select-none [transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--collapsed-y))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms] after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:pointer-events-auto after:content-[''] data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--expanded-y))_scale(1)] data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:opacity-0 data-[limited]:opacity-0 [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(1)] data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(1)] data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(1)] data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(1)]";
251
137
  function getToastPlacement(item, isRtl = false) {
252
- const side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;
253
- const align = item.positionerProps?.align ?? DEFAULT_TOAST_ALIGN;
254
- const resolvedSide = resolveToastSide(side, isRtl);
255
- return {
256
- side: resolvedSide,
257
- align,
258
- key: `${resolvedSide}:${align}`
259
- };
138
+ const side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;
139
+ const align = item.positionerProps?.align ?? DEFAULT_TOAST_ALIGN;
140
+ const resolvedSide = resolveToastSide(side, isRtl);
141
+ return {
142
+ side: resolvedSide,
143
+ align,
144
+ key: `${resolvedSide}:${align}`
145
+ };
260
146
  }
261
147
  function resolveToastSide(side, isRtl) {
262
- if (side === "inline-end") return isRtl ? "left" : "right";
263
- if (side === "inline-start") return isRtl ? "right" : "left";
264
- if (side === "top" || side === "bottom" || side === "left" || side === "right") {
265
- return side;
266
- }
267
- return DEFAULT_TOAST_SIDE;
148
+ if (side === "inline-end") return isRtl ? "left" : "right";
149
+ if (side === "inline-start") return isRtl ? "right" : "left";
150
+ if (side === "top" || side === "bottom" || side === "left" || side === "right") return side;
151
+ return DEFAULT_TOAST_SIDE;
268
152
  }
269
153
  function getToastPositionClassName({ side, align }) {
270
- const isVerticalSide = side === "top" || side === "bottom";
271
- if (isVerticalSide) {
272
- return cn(
273
- side === "top" && "top-6 max-sm:top-4",
274
- side === "bottom" && "bottom-6 max-sm:bottom-4",
275
- align === "start" && "left-6 origin-top-left max-sm:left-4",
276
- align === "center" && "left-1/2 origin-top [--anchor-x:-50%]",
277
- align === "end" && "right-6 origin-top-right max-sm:right-4",
278
- side === "bottom" && align === "start" && "origin-bottom-left",
279
- side === "bottom" && align === "center" && "origin-bottom",
280
- side === "bottom" && align === "end" && "origin-bottom-right"
281
- );
282
- }
283
- return cn(
284
- side === "left" && "left-6 origin-left max-sm:left-4",
285
- side === "right" && "right-6 origin-right max-sm:right-4",
286
- align === "start" && "top-6 max-sm:top-4",
287
- align === "center" && "top-1/2 [--anchor-y:-50%]",
288
- align === "end" && "bottom-6 max-sm:bottom-4",
289
- side === "left" && align === "start" && "origin-top-left",
290
- side === "left" && align === "end" && "origin-bottom-left",
291
- side === "right" && align === "start" && "origin-top-right",
292
- side === "right" && align === "end" && "origin-bottom-right"
293
- );
154
+ if (side === "top" || side === "bottom") return cn(side === "top" && "top-6 max-sm:top-4", side === "bottom" && "bottom-6 max-sm:bottom-4", align === "start" && "left-6 origin-top-left max-sm:left-4", align === "center" && "left-1/2 origin-top [--anchor-x:-50%]", align === "end" && "right-6 origin-top-right max-sm:right-4", side === "bottom" && align === "start" && "origin-bottom-left", side === "bottom" && align === "center" && "origin-bottom", side === "bottom" && align === "end" && "origin-bottom-right");
155
+ return cn(side === "left" && "left-6 origin-left max-sm:left-4", side === "right" && "right-6 origin-right max-sm:right-4", align === "start" && "top-6 max-sm:top-4", align === "center" && "top-1/2 [--anchor-y:-50%]", align === "end" && "bottom-6 max-sm:bottom-4", side === "left" && align === "start" && "origin-top-left", side === "left" && align === "end" && "origin-bottom-left", side === "right" && align === "start" && "origin-top-right", side === "right" && align === "end" && "origin-bottom-right");
294
156
  }
295
157
  function getToastStackClassName({ side, align }) {
296
- const stacksUp = side === "bottom" || (side === "left" || side === "right") && align === "end";
297
- if (stacksUp) {
298
- return "after:bottom-full [--expanded-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-var(--toast-placement-offset-y)-(var(--toast-placement-index)*var(--gap)))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-(var(--toast-placement-index)*var(--peek))-(var(--shrink)*var(--height)))]";
299
- }
300
- return "after:top-full [--expanded-y:calc(var(--anchor-y)+var(--toast-placement-offset-y)+(var(--toast-placement-index)*var(--gap))+var(--toast-swipe-movement-y))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)+(var(--toast-placement-index)*var(--peek))+(var(--shrink)*var(--height)))]";
158
+ if (side === "bottom" || (side === "left" || side === "right") && align === "end") return "after:bottom-full [--expanded-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-var(--toast-placement-offset-y)-(var(--toast-placement-index)*var(--gap)))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-(var(--toast-placement-index)*var(--peek))-(var(--shrink)*var(--height)))]";
159
+ return "after:top-full [--expanded-y:calc(var(--anchor-y)+var(--toast-placement-offset-y)+(var(--toast-placement-index)*var(--gap))+var(--toast-swipe-movement-y))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)+(var(--toast-placement-index)*var(--peek))+(var(--shrink)*var(--height)))]";
301
160
  }
302
161
  function getToastExitClassName(side) {
303
- if (side === "bottom") {
304
- return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]";
305
- }
306
- if (side === "left") {
307
- return "[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]";
308
- }
309
- if (side === "right") {
310
- return "[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]";
311
- }
312
- return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]";
162
+ if (side === "bottom") return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]";
163
+ if (side === "left") return "[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]";
164
+ if (side === "right") return "[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]";
165
+ return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]";
313
166
  }
314
167
  function getSwipeDirections(item, isRtl = false) {
315
- const { side: resolvedSide, align } = getToastPlacement(item, isRtl);
316
- const primary = resolvedSide === "top" ? "up" : resolvedSide === "bottom" ? "down" : resolvedSide === "left" ? "left" : (
317
- /* right */
318
- "right"
319
- );
320
- if (align === "center") return primary;
321
- const isVerticalSide = resolvedSide === "top" || resolvedSide === "bottom";
322
- const secondary = isVerticalSide ? align === "start" ? "left" : "right" : align === "start" ? "up" : "down";
323
- return [primary, secondary];
168
+ const { side: resolvedSide, align } = getToastPlacement(item, isRtl);
169
+ const primary = resolvedSide === "top" ? "up" : resolvedSide === "bottom" ? "down" : resolvedSide === "left" ? "left" : "right";
170
+ if (align === "center") return primary;
171
+ return [primary, resolvedSide === "top" || resolvedSide === "bottom" ? align === "start" ? "left" : "right" : align === "start" ? "up" : "down"];
324
172
  }
325
- export {
326
- ToastProvider,
327
- toast,
328
- toastManager
329
- };
330
- //# sourceMappingURL=toast.js.map
173
+ //#endregion
174
+ export { ToastProvider, toast, toastManager };
package/dist/tooltip.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import * as React from 'react';
2
- import { Popover } from '@base-ui/react/popover';
3
-
4
- declare function Tooltip({ ...props }: Popover.Root.Props): React.JSX.Element;
5
- declare function TooltipTrigger({ ...props }: Omit<Popover.Trigger.Props, "openOnHover">): React.JSX.Element;
6
- type TooltipContentProps = Popover.Popup.Props & Pick<Popover.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & {
7
- showArrow?: boolean;
1
+ import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
2
+ //#region src/tooltip.d.ts
3
+ declare function Tooltip({ ...props }: Tooltip$1.Root.Props): import("react").JSX.Element;
4
+ declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): import("react").JSX.Element;
5
+ type TooltipContentProps = Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & Pick<Tooltip$1.Portal.Props, "container"> & {
6
+ showArrow?: boolean;
8
7
  };
9
- declare function TooltipContent({ className, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): React.JSX.Element;
10
-
11
- export { Tooltip, TooltipContent, TooltipTrigger };
8
+ declare function TooltipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): import("react").JSX.Element;
9
+ //#endregion
10
+ export { Tooltip, TooltipContent, TooltipTrigger };