@giddaa-housing/ui 0.1.0 → 1.0.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.
- package/README.md +18 -6
- package/css/base.css +37 -0
- package/css/components.css +135 -0
- package/css/generated/shared.css +1 -0
- package/css/giddaa.css +402 -0
- package/css/preset.css +77 -0
- package/css/styles.css +2 -0
- package/css/theme.css +255 -0
- package/dist/accordion.js +5 -35
- package/dist/accordion.js.map +1 -1
- package/dist/activity-timeline.d.ts +33 -0
- package/dist/activity-timeline.js +212 -0
- package/dist/activity-timeline.js.map +1 -0
- package/dist/alert.js +5 -35
- package/dist/alert.js.map +1 -1
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +304 -0
- package/dist/auth-layout.js.map +1 -0
- package/dist/avatar.js +10 -142
- package/dist/avatar.js.map +1 -1
- package/dist/badge.d.ts +3 -2
- package/dist/badge.js +6 -114
- package/dist/badge.js.map +1 -1
- package/dist/bar-chart.d.ts +101 -77
- package/dist/bar-chart.js +142 -220
- package/dist/bar-chart.js.map +1 -1
- package/dist/breadcrumb.js +5 -35
- package/dist/breadcrumb.js.map +1 -1
- package/dist/bullet-chart.js +15 -48
- package/dist/bullet-chart.js.map +1 -1
- package/dist/button-group.js +14 -90
- package/dist/button-group.js.map +1 -1
- package/dist/button.d.ts +5 -5
- package/dist/button.js +7 -140
- package/dist/button.js.map +1 -1
- package/dist/calendar.js +12 -287
- package/dist/calendar.js.map +1 -1
- package/dist/card.js +5 -35
- package/dist/card.js.map +1 -1
- package/dist/carousel.js +12 -386
- package/dist/carousel.js.map +1 -1
- package/dist/chart.js +16 -480
- package/dist/chart.js.map +1 -1
- package/dist/checkbox.d.ts +1 -1
- package/dist/checkbox.js +13 -48
- package/dist/checkbox.js.map +1 -1
- package/dist/chunk-322YCNVL.js +278 -0
- package/dist/chunk-322YCNVL.js.map +1 -0
- package/dist/chunk-3ACQVT7A.js +25 -0
- package/dist/chunk-3ACQVT7A.js.map +1 -0
- package/dist/chunk-3T65TLJX.js +334 -0
- package/dist/chunk-3T65TLJX.js.map +1 -0
- package/dist/chunk-6ZSGQHH2.js +192 -0
- package/dist/chunk-6ZSGQHH2.js.map +1 -0
- package/dist/chunk-7TBMLFGW.js +41 -0
- package/dist/chunk-7TBMLFGW.js.map +1 -0
- package/dist/chunk-B4H6RNDH.js +135 -0
- package/dist/chunk-B4H6RNDH.js.map +1 -0
- package/dist/chunk-BUXCGZ6X.js +219 -0
- package/dist/chunk-BUXCGZ6X.js.map +1 -0
- package/dist/chunk-CHII2QHH.js +58 -0
- package/dist/chunk-CHII2QHH.js.map +1 -0
- package/dist/chunk-DMNOXRRW.js +147 -0
- package/dist/chunk-DMNOXRRW.js.map +1 -0
- package/dist/chunk-EFSOSSIC.js +130 -0
- package/dist/chunk-EFSOSSIC.js.map +1 -0
- package/dist/chunk-FZDSVMKY.js +363 -0
- package/dist/chunk-FZDSVMKY.js.map +1 -0
- package/dist/chunk-GJOFIJS3.js +246 -0
- package/dist/chunk-GJOFIJS3.js.map +1 -0
- package/dist/chunk-HL3ZSYES.js +23 -0
- package/dist/chunk-HL3ZSYES.js.map +1 -0
- package/dist/chunk-JVLUBAPB.js +129 -0
- package/dist/chunk-JVLUBAPB.js.map +1 -0
- package/dist/chunk-KDPYSOYZ.js +64 -0
- package/dist/chunk-KDPYSOYZ.js.map +1 -0
- package/dist/chunk-KSMDANKI.js +43 -0
- package/dist/chunk-KSMDANKI.js.map +1 -0
- package/dist/chunk-MEKCCOP5.js +46 -0
- package/dist/chunk-MEKCCOP5.js.map +1 -0
- package/dist/chunk-NOFXVRWL.js +451 -0
- package/dist/chunk-NOFXVRWL.js.map +1 -0
- package/dist/chunk-PC5MHNVA.js +171 -0
- package/dist/chunk-PC5MHNVA.js.map +1 -0
- package/dist/chunk-QKAQZ2GU.js +122 -0
- package/dist/chunk-QKAQZ2GU.js.map +1 -0
- package/dist/chunk-QZHSHSVV.js +26 -0
- package/dist/chunk-QZHSHSVV.js.map +1 -0
- package/dist/chunk-RBMK26XD.js +19 -0
- package/dist/chunk-RBMK26XD.js.map +1 -0
- package/dist/chunk-SFNJGF6M.js +262 -0
- package/dist/chunk-SFNJGF6M.js.map +1 -0
- package/dist/chunk-UJJNLGTM.js +112 -0
- package/dist/chunk-UJJNLGTM.js.map +1 -0
- package/dist/chunk-VGR4ZWJ3.js +418 -0
- package/dist/chunk-VGR4ZWJ3.js.map +1 -0
- package/dist/chunk-XG47P6D4.js +99 -0
- package/dist/chunk-XG47P6D4.js.map +1 -0
- package/dist/chunk-XZZAHNVM.js +21 -0
- package/dist/chunk-XZZAHNVM.js.map +1 -0
- package/dist/chunk-Y4TTYVNE.js +36 -0
- package/dist/chunk-Y4TTYVNE.js.map +1 -0
- package/dist/chunk-YDWIHW6Q.js +69 -0
- package/dist/chunk-YDWIHW6Q.js.map +1 -0
- package/dist/collapsible.js +6 -35
- package/dist/collapsible.js.map +1 -1
- package/dist/combobox.js +26 -694
- package/dist/combobox.js.map +1 -1
- package/dist/cta.d.ts +66 -0
- package/dist/cta.js +358 -0
- package/dist/cta.js.map +1 -0
- package/dist/currency-selector.d.ts +42 -0
- package/dist/currency-selector.js +192 -0
- package/dist/currency-selector.js.map +1 -0
- package/dist/date-picker.d.ts +18 -10
- package/dist/date-picker.js +105 -430
- package/dist/date-picker.js.map +1 -1
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +267 -0
- package/dist/details-card.js.map +1 -0
- package/dist/dialog.js +36 -146
- package/dist/dialog.js.map +1 -1
- package/dist/dropdown-menu.d.ts +1 -1
- package/dist/dropdown-menu.js +20 -358
- package/dist/dropdown-menu.js.map +1 -1
- package/dist/dropzone.js +13 -40
- package/dist/dropzone.js.map +1 -1
- package/dist/editorial-card.d.ts +29 -0
- package/dist/editorial-card.js +311 -0
- package/dist/editorial-card.js.map +1 -0
- package/dist/empty-state.js +5 -35
- package/dist/empty-state.js.map +1 -1
- package/dist/field.js +30 -135
- package/dist/field.js.map +1 -1
- package/dist/footer.d.ts +47 -0
- package/dist/footer.js +430 -0
- package/dist/footer.js.map +1 -0
- package/dist/funnel-chart.js +42 -415
- package/dist/funnel-chart.js.map +1 -1
- package/dist/gallery-indicator.d.ts +18 -0
- package/dist/gallery-indicator.js +12 -0
- package/dist/gallery-indicator.js.map +1 -0
- package/dist/heatmap-chart.d.ts +98 -0
- package/dist/heatmap-chart.js +248 -0
- package/dist/heatmap-chart.js.map +1 -0
- package/dist/infotip.d.ts +11 -0
- package/dist/infotip.js +66 -0
- package/dist/infotip.js.map +1 -0
- package/dist/input-group.d.ts +2 -1
- package/dist/input-group.js +15 -371
- package/dist/input-group.js.map +1 -1
- package/dist/input-size-context.js +5 -19
- package/dist/input-size-context.js.map +1 -1
- package/dist/input.js +6 -78
- package/dist/input.js.map +1 -1
- package/dist/item.js +5 -35
- package/dist/item.js.map +1 -1
- package/dist/kpi-card.js +12 -52
- package/dist/kpi-card.js.map +1 -1
- package/dist/label.js +5 -64
- package/dist/label.js.map +1 -1
- package/dist/line-chart.js +9 -166
- package/dist/line-chart.js.map +1 -1
- package/dist/logo.js +4 -141
- package/dist/logo.js.map +1 -1
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +109 -0
- package/dist/map-indicator.js.map +1 -0
- package/dist/match.d.ts +16 -0
- package/dist/match.js +113 -0
- package/dist/match.js.map +1 -0
- package/dist/media-gallery-hero.d.ts +60 -0
- package/dist/media-gallery-hero.js +362 -0
- package/dist/media-gallery-hero.js.map +1 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +1394 -0
- package/dist/media-player.js.map +1 -0
- package/dist/number-input.js +30 -325
- package/dist/number-input.js.map +1 -1
- package/dist/page-header.js +4 -32
- package/dist/page-header.js.map +1 -1
- package/dist/pagination.d.ts +1 -0
- package/dist/pagination.js +27 -161
- package/dist/pagination.js.map +1 -1
- package/dist/password-input.d.ts +1 -0
- package/dist/password-input.js +21 -319
- package/dist/password-input.js.map +1 -1
- package/dist/phone-input.d.ts +2 -1
- package/dist/phone-input.js +148 -359
- package/dist/phone-input.js.map +1 -1
- package/dist/photo-gallery.d.ts +1 -1
- package/dist/photo-gallery.js +97 -393
- package/dist/photo-gallery.js.map +1 -1
- package/dist/pie-chart.js +17 -52
- package/dist/pie-chart.js.map +1 -1
- package/dist/popover.js +13 -158
- package/dist/popover.js.map +1 -1
- package/dist/price-tag.d.ts +35 -0
- package/dist/price-tag.js +178 -0
- package/dist/price-tag.js.map +1 -0
- package/dist/progress.d.ts +5 -2
- package/dist/progress.js +14 -303
- package/dist/progress.js.map +1 -1
- package/dist/property-listing-card.d.ts +32 -0
- package/dist/property-listing-card.js +235 -0
- package/dist/property-listing-card.js.map +1 -0
- package/dist/radar-chart.d.ts +110 -0
- package/dist/radar-chart.js +147 -0
- package/dist/radar-chart.js.map +1 -0
- package/dist/radio-group.js +15 -50
- package/dist/radio-group.js.map +1 -1
- package/dist/review-block.d.ts +20 -0
- package/dist/review-block.js +10 -0
- package/dist/review-block.js.map +1 -0
- package/dist/rich-text-editor.js +172 -433
- package/dist/rich-text-editor.js.map +1 -1
- package/dist/scatter-chart.d.ts +142 -0
- package/dist/scatter-chart.js +252 -0
- package/dist/scatter-chart.js.map +1 -0
- package/dist/search-input.d.ts +1 -0
- package/dist/search-input.js +22 -320
- package/dist/search-input.js.map +1 -1
- package/dist/select.js +15 -292
- package/dist/select.js.map +1 -1
- package/dist/separator.js +5 -68
- package/dist/separator.js.map +1 -1
- package/dist/sheet.js +14 -271
- package/dist/sheet.js.map +1 -1
- package/dist/sidebar.d.ts +1 -1
- package/dist/sidebar.js +89 -494
- package/dist/sidebar.js.map +1 -1
- package/dist/size-context.js +5 -17
- package/dist/size-context.js.map +1 -1
- package/dist/skeleton.js +4 -44
- package/dist/skeleton.js.map +1 -1
- package/dist/slider.d.ts +28 -0
- package/dist/slider.js +152 -0
- package/dist/slider.js.map +1 -0
- package/dist/sparkline.js +33 -341
- package/dist/sparkline.js.map +1 -1
- package/dist/stepper.js +5 -35
- package/dist/stepper.js.map +1 -1
- package/dist/styles.css +9593 -2
- package/dist/switch.js +13 -48
- package/dist/switch.js.map +1 -1
- package/dist/tab-list.js +35 -306
- package/dist/tab-list.js.map +1 -1
- package/dist/table.js +5 -32
- package/dist/table.js.map +1 -1
- package/dist/tabs.js +10 -150
- package/dist/tabs.js.map +1 -1
- package/dist/tag.d.ts +7 -6
- package/dist/tag.js +101 -97
- package/dist/tag.js.map +1 -1
- package/dist/testimonial-block.d.ts +34 -0
- package/dist/testimonial-block.js +377 -0
- package/dist/testimonial-block.js.map +1 -0
- package/dist/textarea.js +6 -73
- package/dist/textarea.js.map +1 -1
- package/dist/time-picker.js +119 -279
- package/dist/time-picker.js.map +1 -1
- package/dist/toast.js +27 -132
- package/dist/toast.js.map +1 -1
- package/dist/tooltip.d.ts +5 -5
- package/dist/tooltip.js +7 -90
- package/dist/tooltip.js.map +1 -1
- package/dist/tree-map.js +41 -414
- package/dist/tree-map.js.map +1 -1
- package/dist/waterfall-chart.d.ts +129 -0
- package/dist/waterfall-chart.js +577 -0
- package/dist/waterfall-chart.js.map +1 -0
- package/package.json +98 -28
- package/dist/base.css +0 -32
- package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/theme/giddaa.css +0 -2
package/dist/toast.js
CHANGED
|
@@ -1,120 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
|
+
Button
|
|
3
|
+
} from "./chunk-B4H6RNDH.js";
|
|
4
|
+
import "./chunk-HL3ZSYES.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-Y4TTYVNE.js";
|
|
8
|
+
|
|
9
|
+
// src/toast.tsx
|
|
2
10
|
import { Toast as BaseToast } from "@base-ui/react/toast";
|
|
3
11
|
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
|
-
}
|
|
32
|
-
});
|
|
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";
|
|
12
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
118
13
|
var DEFAULT_TOAST_SIDE = "top";
|
|
119
14
|
var DEFAULT_TOAST_ALIGN = "end";
|
|
120
15
|
var toastManager = BaseToast.createToastManager();
|
|
@@ -147,9 +42,9 @@ var toast = Object.assign(
|
|
|
147
42
|
}
|
|
148
43
|
);
|
|
149
44
|
function ToastProvider({ children }) {
|
|
150
|
-
return /* @__PURE__ */
|
|
45
|
+
return /* @__PURE__ */ jsxs(BaseToast.Provider, { limit: 4, timeout: 5e3, toastManager, children: [
|
|
151
46
|
children,
|
|
152
|
-
/* @__PURE__ */
|
|
47
|
+
/* @__PURE__ */ jsx(BaseToast.Portal, { children: /* @__PURE__ */ jsx(BaseToast.Viewport, { className: "fixed inset-0 z-9999 pointer-events-none outline-none", children: /* @__PURE__ */ jsx(ToastList, {}) }) })
|
|
153
48
|
] });
|
|
154
49
|
}
|
|
155
50
|
function ToastList() {
|
|
@@ -175,7 +70,7 @@ function ToastList() {
|
|
|
175
70
|
stack.visibleIndex += 1;
|
|
176
71
|
}
|
|
177
72
|
placementStacks.set(placement.key, stack);
|
|
178
|
-
return /* @__PURE__ */
|
|
73
|
+
return /* @__PURE__ */ jsx(
|
|
179
74
|
BaseToast.Root,
|
|
180
75
|
{
|
|
181
76
|
toast: item,
|
|
@@ -187,16 +82,16 @@ function ToastList() {
|
|
|
187
82
|
),
|
|
188
83
|
swipeDirection: getSwipeDirections(item),
|
|
189
84
|
style,
|
|
190
|
-
children: /* @__PURE__ */
|
|
85
|
+
children: /* @__PURE__ */ jsxs(
|
|
191
86
|
BaseToast.Content,
|
|
192
87
|
{
|
|
193
88
|
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
89
|
children: [
|
|
195
|
-
/* @__PURE__ */
|
|
196
|
-
/* @__PURE__ */
|
|
197
|
-
item.title ? /* @__PURE__ */
|
|
198
|
-
item.description ? /* @__PURE__ */
|
|
199
|
-
/* @__PURE__ */
|
|
90
|
+
/* @__PURE__ */ jsx(ToastIcon, { type: item.data?.type }),
|
|
91
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex flex-col gap-1.5", children: [
|
|
92
|
+
item.title ? /* @__PURE__ */ jsx(BaseToast.Title, { className: "text-gdt-sm font-semibold text-fg-primary" }) : null,
|
|
93
|
+
item.description ? /* @__PURE__ */ jsx(BaseToast.Description, { className: "text-gdt-sm text-fg-secondary" }) : null,
|
|
94
|
+
/* @__PURE__ */ jsx(
|
|
200
95
|
BaseToast.Action,
|
|
201
96
|
{
|
|
202
97
|
className: cn(
|
|
@@ -209,12 +104,12 @@ function ToastList() {
|
|
|
209
104
|
}
|
|
210
105
|
)
|
|
211
106
|
] }),
|
|
212
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ jsx(
|
|
213
108
|
BaseToast.Close,
|
|
214
109
|
{
|
|
215
|
-
render: /* @__PURE__ */
|
|
110
|
+
render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
|
|
216
111
|
"aria-label": "Close toast",
|
|
217
|
-
children: /* @__PURE__ */
|
|
112
|
+
children: /* @__PURE__ */ jsx(X, { className: "size-4" })
|
|
218
113
|
}
|
|
219
114
|
)
|
|
220
115
|
]
|
|
@@ -227,7 +122,7 @@ function ToastList() {
|
|
|
227
122
|
}
|
|
228
123
|
function ToastIcon({ type }) {
|
|
229
124
|
if (!type) return null;
|
|
230
|
-
return /* @__PURE__ */
|
|
125
|
+
return /* @__PURE__ */ jsxs(
|
|
231
126
|
"span",
|
|
232
127
|
{
|
|
233
128
|
className: cn(
|
|
@@ -239,10 +134,10 @@ function ToastIcon({ type }) {
|
|
|
239
134
|
),
|
|
240
135
|
"aria-hidden": "true",
|
|
241
136
|
children: [
|
|
242
|
-
type === "success" ? /* @__PURE__ */
|
|
243
|
-
type === "info" ? /* @__PURE__ */
|
|
244
|
-
type === "warning" ? /* @__PURE__ */
|
|
245
|
-
type === "error" ? /* @__PURE__ */
|
|
137
|
+
type === "success" ? /* @__PURE__ */ jsx(Check, { size: 10, strokeWidth: 3 }) : null,
|
|
138
|
+
type === "info" ? /* @__PURE__ */ jsx(Info, { size: 11, strokeWidth: 2.8 }) : null,
|
|
139
|
+
type === "warning" ? /* @__PURE__ */ jsx("span", { className: "text-[11px] leading-none font-extrabold", children: "!" }) : null,
|
|
140
|
+
type === "error" ? /* @__PURE__ */ jsx(X, { size: 10, strokeWidth: 3 }) : null
|
|
246
141
|
]
|
|
247
142
|
}
|
|
248
143
|
);
|
package/dist/toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/toast.tsx","../src/lib/cn.ts","../src/components/ui/button.tsx","../src/components/ui/size-context.tsx"],"sourcesContent":["import type {\n\tToastManagerAddOptions,\n\tToastManagerUpdateOptions,\n\tToastObject,\n} from \"@base-ui/react/toast\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport { Check, Info, X } from \"lucide-react\";\nimport type { CSSProperties, PropsWithChildren } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"./button\";\n\ntype ToastVariant = \"success\" | \"info\" | \"warning\" | \"error\" | \"loading\";\ntype ResolvedToastSide = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype ToastAlign = \"start\" | \"center\" | \"end\";\ntype ToastPlacement = {\n\tside: ResolvedToastSide;\n\talign: ToastAlign;\n\tkey: string;\n};\ntype ToastRootStyle = CSSProperties &\n\tRecord<\n\t\t| \"--toast-placement-index\"\n\t\t| \"--toast-placement-offset-y\"\n\t\t| \"--toast-placement-frontmost-height\",\n\t\tstring | number | undefined\n\t>;\n\ntype ToastData = {\n\ttype: ToastVariant;\n};\n\nconst DEFAULT_TOAST_SIDE = \"top\";\nconst DEFAULT_TOAST_ALIGN = \"end\";\ntype ToastSide = NonNullable<\n\tToastObject<{ type?: ToastVariant }>[\"positionerProps\"]\n>[\"side\"];\n\nexport const toastManager = BaseToast.createToastManager();\n\nexport const toast = Object.assign(\n\t(options: ToastManagerAddOptions<ToastData>) => toastManager.add(options),\n\t{\n\t\tsuccess: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"success\", ...options.data },\n\t\t\t}),\n\t\tinfo: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"info\", ...options.data },\n\t\t\t}),\n\t\twarning: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"warning\", ...options.data },\n\t\t\t}),\n\t\terror: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"error\", ...options.data },\n\t\t\t}),\n\t\tloading: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"loading\", ...options.data },\n\t\t\t}),\n\t\tdismiss: (toastId?: string | number) =>\n\t\t\ttoastManager.close(toastId?.toString()),\n\t\tupdate: (\n\t\t\ttoastId: string | number,\n\t\t\toptions: ToastManagerUpdateOptions<ToastData>,\n\t\t) => toastManager.update(toastId.toString(), options),\n\t\tpromise: toastManager.promise,\n\t},\n);\n\nexport function ToastProvider({ children }: PropsWithChildren) {\n\treturn (\n\t\t<BaseToast.Provider limit={4} timeout={5000} toastManager={toastManager}>\n\t\t\t{children}\n\t\t\t<BaseToast.Portal>\n\t\t\t\t<BaseToast.Viewport className=\"fixed inset-0 z-9999 pointer-events-none outline-none\">\n\t\t\t\t\t<ToastList />\n\t\t\t\t</BaseToast.Viewport>\n\t\t\t</BaseToast.Portal>\n\t\t</BaseToast.Provider>\n\t);\n}\n\nfunction ToastList() {\n\tconst { toasts } = BaseToast.useToastManager<ToastData>();\n\tconst placementStacks = new Map<\n\t\tstring,\n\t\t{\n\t\t\tdomIndex: number;\n\t\t\tvisibleIndex: number;\n\t\t\toffsetY: number;\n\t\t\tfrontmostHeight?: number;\n\t\t}\n\t>();\n\n\treturn toasts.map((item) => {\n\t\tconst placement = getToastPlacement(item);\n\t\tconst stack = placementStacks.get(placement.key) ?? {\n\t\t\tdomIndex: 0,\n\t\t\tvisibleIndex: 0,\n\t\t\toffsetY: 0,\n\t\t\tfrontmostHeight: item.height,\n\t\t};\n\t\tconst placementIndex =\n\t\t\titem.transitionStatus === \"ending\" ? stack.domIndex : stack.visibleIndex;\n\t\tconst style: ToastRootStyle = {\n\t\t\t\"--toast-placement-index\": placementIndex,\n\t\t\t\"--toast-placement-offset-y\": `${stack.offsetY}px`,\n\t\t\t\"--toast-placement-frontmost-height\": stack.frontmostHeight\n\t\t\t\t? `${stack.frontmostHeight}px`\n\t\t\t\t: undefined,\n\t\t};\n\n\t\tstack.offsetY += item.height ?? 0;\n\t\tstack.domIndex += 1;\n\t\tif (item.transitionStatus !== \"ending\") {\n\t\t\tstack.visibleIndex += 1;\n\t\t}\n\t\tplacementStacks.set(placement.key, stack);\n\n\t\treturn (\n\t\t\t<BaseToast.Root\n\t\t\t\tkey={item.id}\n\t\t\t\ttoast={item}\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttoastRootBaseClassName,\n\t\t\t\t\tgetToastPositionClassName(placement),\n\t\t\t\t\tgetToastStackClassName(placement),\n\t\t\t\t\tgetToastExitClassName(placement.side),\n\t\t\t\t)}\n\t\t\t\tswipeDirection={getSwipeDirections(item)}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t<BaseToast.Content\n\t\t\t\t\tclassName={\n\t\t\t\t\t\t\"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\"\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToastIcon type={item.data?.type} />\n\t\t\t\t\t<div className=\"min-w-0 flex flex-col gap-1.5\">\n\t\t\t\t\t\t{item.title ? (\n\t\t\t\t\t\t\t<BaseToast.Title className=\"text-gdt-sm font-semibold text-fg-primary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t{item.description ? (\n\t\t\t\t\t\t\t<BaseToast.Description className=\"text-gdt-sm text-fg-secondary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<BaseToast.Action\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"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\",\n\t\t\t\t\t\t\t\titem.data?.type === \"success\" && \"text-fg-brand\",\n\t\t\t\t\t\t\t\titem.data?.type === \"info\" && \"text-fg-primary\",\n\t\t\t\t\t\t\t\titem.data?.type === \"warning\" && \"text-fg-accent\",\n\t\t\t\t\t\t\t\titem.data?.type === \"error\" && \"text-fg-danger\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<BaseToast.Close\n\t\t\t\t\t\trender={<Button variant=\"ghost\" size=\"icon-xs\" />}\n\t\t\t\t\t\taria-label=\"Close toast\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t\t</BaseToast.Close>\n\t\t\t\t</BaseToast.Content>\n\t\t\t</BaseToast.Root>\n\t\t);\n\t});\n}\n\nfunction ToastIcon({ type }: { type?: ToastVariant }) {\n\tif (!type) return null;\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex size-5 items-center justify-center rounded-full text-canvas\",\n\t\t\t\ttype === \"success\" && \"bg-status-success\",\n\t\t\t\ttype === \"info\" && \"bg-status-info\",\n\t\t\t\ttype === \"warning\" && \"bg-status-warning text-fg-on-accent\",\n\t\t\t\ttype === \"error\" && \"bg-status-danger\",\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t{type === \"success\" ? <Check size={10} strokeWidth={3} /> : null}\n\t\t\t{type === \"info\" ? <Info size={11} strokeWidth={2.8} /> : null}\n\t\t\t{type === \"warning\" ? (\n\t\t\t\t<span className=\"text-[11px] leading-none font-extrabold\">!</span>\n\t\t\t) : null}\n\t\t\t{type === \"error\" ? <X size={10} strokeWidth={3} /> : null}\n\t\t</span>\n\t);\n}\n\nconst toastRootBaseClassName =\n\t\"[--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)]\";\n\nfunction getToastPlacement(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n): ToastPlacement {\n\tconst side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;\n\tconst align = (item.positionerProps?.align ??\n\t\tDEFAULT_TOAST_ALIGN) as ToastAlign;\n\tconst resolvedSide = resolveToastSide(side, isRtl);\n\n\treturn {\n\t\tside: resolvedSide,\n\t\talign,\n\t\tkey: `${resolvedSide}:${align}`,\n\t};\n}\n\nfunction resolveToastSide(\n\tside: ToastSide | undefined,\n\tisRtl: boolean,\n): ResolvedToastSide {\n\tif (side === \"inline-end\") return isRtl ? \"left\" : \"right\";\n\tif (side === \"inline-start\") return isRtl ? \"right\" : \"left\";\n\tif (\n\t\tside === \"top\" ||\n\t\tside === \"bottom\" ||\n\t\tside === \"left\" ||\n\t\tside === \"right\"\n\t) {\n\t\treturn side;\n\t}\n\treturn DEFAULT_TOAST_SIDE;\n}\n\nfunction getToastPositionClassName({ side, align }: ToastPlacement) {\n\tconst isVerticalSide = side === \"top\" || side === \"bottom\";\n\n\tif (isVerticalSide) {\n\t\treturn cn(\n\t\t\tside === \"top\" && \"top-6 max-sm:top-4\",\n\t\t\tside === \"bottom\" && \"bottom-6 max-sm:bottom-4\",\n\t\t\talign === \"start\" && \"left-6 origin-top-left max-sm:left-4\",\n\t\t\talign === \"center\" && \"left-1/2 origin-top [--anchor-x:-50%]\",\n\t\t\talign === \"end\" && \"right-6 origin-top-right max-sm:right-4\",\n\t\t\tside === \"bottom\" && align === \"start\" && \"origin-bottom-left\",\n\t\t\tside === \"bottom\" && align === \"center\" && \"origin-bottom\",\n\t\t\tside === \"bottom\" && align === \"end\" && \"origin-bottom-right\",\n\t\t);\n\t}\n\n\treturn cn(\n\t\tside === \"left\" && \"left-6 origin-left max-sm:left-4\",\n\t\tside === \"right\" && \"right-6 origin-right max-sm:right-4\",\n\t\talign === \"start\" && \"top-6 max-sm:top-4\",\n\t\talign === \"center\" && \"top-1/2 [--anchor-y:-50%]\",\n\t\talign === \"end\" && \"bottom-6 max-sm:bottom-4\",\n\t\tside === \"left\" && align === \"start\" && \"origin-top-left\",\n\t\tside === \"left\" && align === \"end\" && \"origin-bottom-left\",\n\t\tside === \"right\" && align === \"start\" && \"origin-top-right\",\n\t\tside === \"right\" && align === \"end\" && \"origin-bottom-right\",\n\t);\n}\n\nfunction getToastStackClassName({ side, align }: ToastPlacement) {\n\tconst stacksUp =\n\t\tside === \"bottom\" ||\n\t\t((side === \"left\" || side === \"right\") && align === \"end\");\n\n\tif (stacksUp) {\n\t\treturn \"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)))]\";\n\t}\n\n\treturn \"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)))]\";\n}\n\nfunction getToastExitClassName(side: ResolvedToastSide) {\n\tif (side === \"bottom\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]\";\n\t}\n\tif (side === \"left\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\tif (side === \"right\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]\";\n}\n\ntype SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\nfunction getSwipeDirections(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n) {\n\tconst { side: resolvedSide, align } = getToastPlacement(item, isRtl);\n\tconst primary: SwipeDirection =\n\t\tresolvedSide === \"top\"\n\t\t\t? \"up\"\n\t\t\t: resolvedSide === \"bottom\"\n\t\t\t\t? \"down\"\n\t\t\t\t: resolvedSide === \"left\"\n\t\t\t\t\t? \"left\"\n\t\t\t\t\t: /* right */ \"right\";\n\tif (align === \"center\") return primary;\n\tconst isVerticalSide = resolvedSide === \"top\" || resolvedSide === \"bottom\";\n\tconst secondary: SwipeDirection = isVerticalSide\n\t\t? align === \"start\"\n\t\t\t? \"left\"\n\t\t\t: \"right\"\n\t\t: align === \"start\"\n\t\t\t? \"up\"\n\t\t\t: \"down\";\n\treturn [primary, secondary];\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Loader } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useComponentSize } from \"./size-context\";\n\nconst buttonVariants = cva(\n\t\"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\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tprimary:\n\t\t\t\t\t\"bg-action-primary text-fg-on-brand hover:bg-action-primary-hover active:bg-action-primary-pressed\",\n\t\t\t\t\"primary-outline\":\n\t\t\t\t\t\"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\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"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\",\n\t\t\t\t\"secondary-outline\":\n\t\t\t\t\t\"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\",\n\t\t\t\ttertiary:\n\t\t\t\t\t\"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\",\n\t\t\t\t\"tertiary-outline\":\n\t\t\t\t\t\"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\",\n\t\t\t\tghost:\n\t\t\t\t\t\"bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised\",\n\t\t\t\tdanger:\n\t\t\t\t\t\"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\",\n\t\t\t\t\"glass-overlay\": \"bg-surface-glass-overlay-button text-fg-on-brand\",\n\t\t\t\t\"link-brand\":\n\t\t\t\t\t\"border-transparent bg-transparent px-0 text-fg-brand hover:underline active:underline active:opacity-70\",\n\t\t\t\t\"link-neutral\":\n\t\t\t\t\t\"border-transparent bg-transparent px-0 text-fg-secondary hover:underline active:underline active:opacity-70\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tsm: \"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\",\n\t\t\t\tmd: \"h-10 gap-2 px-4.5 text-gdt-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4\",\n\t\t\t\tlg: \"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\",\n\t\t\t\txl: \"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\",\n\t\t\t\ticon: \"size-10\",\n\t\t\t\t\"icon-xs\": \"size-6 text-gdt-xs [&_svg:not([class*='size-'])]:size-3\",\n\t\t\t\t\"icon-sm\": \"size-8 text-gdt-sm [&_svg:not([class*='size-'])]:size-3.5\",\n\t\t\t\t\"icon-lg\":\n\t\t\t\t\t\"size-12.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5\",\n\t\t\t\t\"icon-xl\": \"size-14 text-gdt-lg [&_svg:not([class*='size-'])]:size-5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"primary\",\n\t\t\tsize: \"md\",\n\t\t},\n\t},\n);\n\ntype ButtonSize = NonNullable<VariantProps<typeof buttonVariants>[\"size\"]>;\n\nfunction Button({\n\tclassName,\n\tvariant = \"primary\",\n\tsize,\n\tisLoading = false,\n\tchildren,\n\tdisabled = false,\n\t...props\n}: ButtonPrimitive.Props &\n\tVariantProps<typeof buttonVariants> & { isLoading?: boolean }) {\n\tconst inheritedSize = useComponentSize();\n\tconst resolvedSize = size ?? inheritedSize;\n\tconst _disabled = disabled || isLoading;\n\treturn (\n\t\t<ButtonPrimitive\n\t\t\tdata-slot=\"button\"\n\t\t\tclassName={cn(buttonVariants({ variant, size: resolvedSize, className }))}\n\t\t\tdisabled={_disabled}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isLoading && <Loader className=\"size-4 animate-spin\" />} {children}\n\t\t</ButtonPrimitive>\n\t);\n}\n\ntype ButtonLinkProps = Omit<React.ComponentProps<\"a\">, \"href\"> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tdisabled?: boolean;\n\t\thref: string;\n\t};\n\nfunction ButtonLink({\n\tclassName,\n\thref,\n\tvariant = \"primary\",\n\tsize,\n\tdisabled = false,\n\tonClick,\n\t...props\n}: ButtonLinkProps) {\n\tconst inheritedSize = useComponentSize();\n\tconst resolvedSize: ButtonSize = size ?? inheritedSize;\n\n\treturn (\n\t\t<a\n\t\t\tdata-slot=\"button-link\"\n\t\t\thref={href}\n\t\t\taria-disabled={disabled}\n\t\t\ttabIndex={disabled ? -1 : props.tabIndex}\n\t\t\tclassName={cn(buttonVariants({ variant, size: resolvedSize, className }))}\n\t\t\tonClick={(event) => {\n\t\t\t\tif (disabled) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonClick?.(event);\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Button, ButtonLink, buttonVariants };\n","\"use client\";\n\nimport { createContext, type ReactNode, useContext } from \"react\";\n\ntype ComponentSize = \"sm\" | \"md\" | \"lg\";\n\nconst SizeContext = createContext<ComponentSize | undefined>(undefined);\n\nfunction SizeProvider({\n\tchildren,\n\tsize,\n}: {\n\tchildren: ReactNode;\n\tsize?: ComponentSize | null;\n}) {\n\tif (!size) {\n\t\treturn <>{children}</>;\n\t}\n\n\treturn <SizeContext.Provider value={size}>{children}</SizeContext.Provider>;\n}\n\nfunction useComponentSize(\n\tsize?: ComponentSize | null,\n\tfallback: ComponentSize = \"md\",\n) {\n\tconst inheritedSize = useContext(SizeContext);\n\treturn size ?? inheritedSize ?? fallback;\n}\n\nexport { SizeProvider, useComponentSize, type ComponentSize };\n"],"mappings":";AAKA,SAAS,SAAS,iBAAiB;AACnC,SAAS,OAAO,MAAM,SAAS;;;ACN/B,SAA0B,YAAY;AACtC,SAAS,2BAA2B;AAEpC,IAAM,UAAU,oBAAoB;AAAA,EACnC,QAAQ;AAAA,IACP,aAAa;AAAA,MACZ,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAEM,SAAS,MAAM,QAAsB;AAC3C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC5B;;;AC/BA,SAAS,UAAU,uBAAuB;AAC1C,SAAS,WAA8B;AACvC,SAAS,cAAc;;;ACAvB,SAAS,eAA+B,kBAAkB;AAcjD;AAVT,IAAM,cAAc,cAAyC,MAAS;AAgBtE,SAAS,iBACR,MACA,WAA0B,MACzB;AACD,QAAM,gBAAgB,WAAW,WAAW;AAC5C,SAAO,QAAQ,iBAAiB;AACjC;;;AD0CE,SAMe,OAAAA,MANf;AA/DF,IAAM,iBAAiB;AAAA,EACtB;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SACC;AAAA,QACD,mBACC;AAAA,QACD,WACC;AAAA,QACD,qBACC;AAAA,QACD,UACC;AAAA,QACD,oBACC;AAAA,QACD,OACC;AAAA,QACD,QACC;AAAA,QACD,iBAAiB;AAAA,QACjB,cACC;AAAA,QACD,gBACC;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WACC;AAAA,QACD,WAAW;AAAA,MACZ;AAAA,IACD;AAAA,IACA,iBAAiB;AAAA,MAChB,SAAS;AAAA,MACT,MAAM;AAAA,IACP;AAAA,EACD;AACD;AAIA,SAAS,OAAO;AAAA,EACf;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACJ,GACgE;AAC/D,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,eAAe,QAAQ;AAC7B,QAAM,YAAY,YAAY;AAC9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,cAAc,UAAU,CAAC,CAAC;AAAA,MACxE,UAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA,qBAAa,gBAAAA,KAAC,UAAO,WAAU,uBAAsB;AAAA,QAAG;AAAA,QAAE;AAAA;AAAA;AAAA,EAC5D;AAEF;;;AFAE,SAIG,OAAAC,MAJH,QAAAC,aAAA;AAhDF,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAKrB,IAAM,eAAe,UAAU,mBAAmB;AAElD,IAAM,QAAQ,OAAO;AAAA,EAC3B,CAAC,YAA+C,aAAa,IAAI,OAAO;AAAA,EACxE;AAAA,IACC,SAAS,CAAC,YACT,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,IACF,MAAM,CAAC,YACN,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,QAAQ,GAAG,QAAQ,KAAK;AAAA,IACvC,CAAC;AAAA,IACF,SAAS,CAAC,YACT,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,IACF,OAAO,CAAC,YACP,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,SAAS,GAAG,QAAQ,KAAK;AAAA,IACxC,CAAC;AAAA,IACF,SAAS,CAAC,YACT,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,IACF,SAAS,CAAC,YACT,aAAa,MAAM,SAAS,SAAS,CAAC;AAAA,IACvC,QAAQ,CACP,SACA,YACI,aAAa,OAAO,QAAQ,SAAS,GAAG,OAAO;AAAA,IACpD,SAAS,aAAa;AAAA,EACvB;AACD;AAEO,SAAS,cAAc,EAAE,SAAS,GAAsB;AAC9D,SACC,gBAAAA,MAAC,UAAU,UAAV,EAAmB,OAAO,GAAG,SAAS,KAAM,cAC3C;AAAA;AAAA,IACD,gBAAAD,KAAC,UAAU,QAAV,EACA,0BAAAA,KAAC,UAAU,UAAV,EAAmB,WAAU,yDAC7B,0BAAAA,KAAC,aAAU,GACZ,GACD;AAAA,KACD;AAEF;AAEA,SAAS,YAAY;AACpB,QAAM,EAAE,OAAO,IAAI,UAAU,gBAA2B;AACxD,QAAM,kBAAkB,oBAAI,IAQ1B;AAEF,SAAO,OAAO,IAAI,CAAC,SAAS;AAC3B,UAAM,YAAY,kBAAkB,IAAI;AACxC,UAAM,QAAQ,gBAAgB,IAAI,UAAU,GAAG,KAAK;AAAA,MACnD,UAAU;AAAA,MACV,cAAc;AAAA,MACd,SAAS;AAAA,MACT,iBAAiB,KAAK;AAAA,IACvB;AACA,UAAM,iBACL,KAAK,qBAAqB,WAAW,MAAM,WAAW,MAAM;AAC7D,UAAM,QAAwB;AAAA,MAC7B,2BAA2B;AAAA,MAC3B,8BAA8B,GAAG,MAAM,OAAO;AAAA,MAC9C,sCAAsC,MAAM,kBACzC,GAAG,MAAM,eAAe,OACxB;AAAA,IACJ;AAEA,UAAM,WAAW,KAAK,UAAU;AAChC,UAAM,YAAY;AAClB,QAAI,KAAK,qBAAqB,UAAU;AACvC,YAAM,gBAAgB;AAAA,IACvB;AACA,oBAAgB,IAAI,UAAU,KAAK,KAAK;AAExC,WACC,gBAAAA;AAAA,MAAC,UAAU;AAAA,MAAV;AAAA,QAEA,OAAO;AAAA,QACP,WAAW;AAAA,UACV;AAAA,UACA,0BAA0B,SAAS;AAAA,UACnC,uBAAuB,SAAS;AAAA,UAChC,sBAAsB,UAAU,IAAI;AAAA,QACrC;AAAA,QACA,gBAAgB,mBAAmB,IAAI;AAAA,QACvC;AAAA,QAEA,0BAAAC;AAAA,UAAC,UAAU;AAAA,UAAV;AAAA,YACA,WACC;AAAA,YAGD;AAAA,8BAAAD,KAAC,aAAU,MAAM,KAAK,MAAM,MAAM;AAAA,cAClC,gBAAAC,MAAC,SAAI,WAAU,iCACb;AAAA,qBAAK,QACL,gBAAAD,KAAC,UAAU,OAAV,EAAgB,WAAU,6CAA4C,IACpE;AAAA,gBACH,KAAK,cACL,gBAAAA,KAAC,UAAU,aAAV,EAAsB,WAAU,iCAAgC,IAC9D;AAAA,gBACJ,gBAAAA;AAAA,kBAAC,UAAU;AAAA,kBAAV;AAAA,oBACA,WAAW;AAAA,sBACV;AAAA,sBACA,KAAK,MAAM,SAAS,aAAa;AAAA,sBACjC,KAAK,MAAM,SAAS,UAAU;AAAA,sBAC9B,KAAK,MAAM,SAAS,aAAa;AAAA,sBACjC,KAAK,MAAM,SAAS,WAAW;AAAA,oBAChC;AAAA;AAAA,gBACD;AAAA,iBACD;AAAA,cACA,gBAAAA;AAAA,gBAAC,UAAU;AAAA,gBAAV;AAAA,kBACA,QAAQ,gBAAAA,KAAC,UAAO,SAAQ,SAAQ,MAAK,WAAU;AAAA,kBAC/C,cAAW;AAAA,kBAEX,0BAAAA,KAAC,KAAE,WAAU,UAAS;AAAA;AAAA,cACvB;AAAA;AAAA;AAAA,QACD;AAAA;AAAA,MAxCK,KAAK;AAAA,IAyCX;AAAA,EAEF,CAAC;AACF;AAEA,SAAS,UAAU,EAAE,KAAK,GAA4B;AACrD,MAAI,CAAC,KAAM,QAAO;AAClB,SACC,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACA,WAAW;AAAA,QACV;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,SAAS,UAAU;AAAA,QACnB,SAAS,aAAa;AAAA,QACtB,SAAS,WAAW;AAAA,MACrB;AAAA,MACA,eAAY;AAAA,MAEX;AAAA,iBAAS,YAAY,gBAAAD,KAAC,SAAM,MAAM,IAAI,aAAa,GAAG,IAAK;AAAA,QAC3D,SAAS,SAAS,gBAAAA,KAAC,QAAK,MAAM,IAAI,aAAa,KAAK,IAAK;AAAA,QACzD,SAAS,YACT,gBAAAA,KAAC,UAAK,WAAU,2CAA0C,eAAC,IACxD;AAAA,QACH,SAAS,UAAU,gBAAAA,KAAC,KAAE,MAAM,IAAI,aAAa,GAAG,IAAK;AAAA;AAAA;AAAA,EACvD;AAEF;AAEA,IAAM,yBACL;AAED,SAAS,kBACR,MACA,QAAQ,OACS;AACjB,QAAM,OAAO,KAAK,iBAAiB,QAAQ;AAC3C,QAAM,QAAS,KAAK,iBAAiB,SACpC;AACD,QAAM,eAAe,iBAAiB,MAAM,KAAK;AAEjD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,KAAK,GAAG,YAAY,IAAI,KAAK;AAAA,EAC9B;AACD;AAEA,SAAS,iBACR,MACA,OACoB;AACpB,MAAI,SAAS,aAAc,QAAO,QAAQ,SAAS;AACnD,MAAI,SAAS,eAAgB,QAAO,QAAQ,UAAU;AACtD,MACC,SAAS,SACT,SAAS,YACT,SAAS,UACT,SAAS,SACR;AACD,WAAO;AAAA,EACR;AACA,SAAO;AACR;AAEA,SAAS,0BAA0B,EAAE,MAAM,MAAM,GAAmB;AACnE,QAAM,iBAAiB,SAAS,SAAS,SAAS;AAElD,MAAI,gBAAgB;AACnB,WAAO;AAAA,MACN,SAAS,SAAS;AAAA,MAClB,SAAS,YAAY;AAAA,MACrB,UAAU,WAAW;AAAA,MACrB,UAAU,YAAY;AAAA,MACtB,UAAU,SAAS;AAAA,MACnB,SAAS,YAAY,UAAU,WAAW;AAAA,MAC1C,SAAS,YAAY,UAAU,YAAY;AAAA,MAC3C,SAAS,YAAY,UAAU,SAAS;AAAA,IACzC;AAAA,EACD;AAEA,SAAO;AAAA,IACN,SAAS,UAAU;AAAA,IACnB,SAAS,WAAW;AAAA,IACpB,UAAU,WAAW;AAAA,IACrB,UAAU,YAAY;AAAA,IACtB,UAAU,SAAS;AAAA,IACnB,SAAS,UAAU,UAAU,WAAW;AAAA,IACxC,SAAS,UAAU,UAAU,SAAS;AAAA,IACtC,SAAS,WAAW,UAAU,WAAW;AAAA,IACzC,SAAS,WAAW,UAAU,SAAS;AAAA,EACxC;AACD;AAEA,SAAS,uBAAuB,EAAE,MAAM,MAAM,GAAmB;AAChE,QAAM,WACL,SAAS,aACP,SAAS,UAAU,SAAS,YAAY,UAAU;AAErD,MAAI,UAAU;AACb,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,SAAS,sBAAsB,MAAyB;AACvD,MAAI,SAAS,UAAU;AACtB,WAAO;AAAA,EACR;AACA,MAAI,SAAS,QAAQ;AACpB,WAAO;AAAA,EACR;AACA,MAAI,SAAS,SAAS;AACrB,WAAO;AAAA,EACR;AACA,SAAO;AACR;AAGA,SAAS,mBACR,MACA,QAAQ,OACP;AACD,QAAM,EAAE,MAAM,cAAc,MAAM,IAAI,kBAAkB,MAAM,KAAK;AACnE,QAAM,UACL,iBAAiB,QACd,OACA,iBAAiB,WAChB,SACA,iBAAiB,SAChB;AAAA;AAAA,IACY;AAAA;AAClB,MAAI,UAAU,SAAU,QAAO;AAC/B,QAAM,iBAAiB,iBAAiB,SAAS,iBAAiB;AAClE,QAAM,YAA4B,iBAC/B,UAAU,UACT,SACA,UACD,UAAU,UACT,OACA;AACJ,SAAO,CAAC,SAAS,SAAS;AAC3B;","names":["jsx","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../src/toast.tsx"],"sourcesContent":["import type {\n\tToastManagerAddOptions,\n\tToastManagerUpdateOptions,\n\tToastObject,\n} from \"@base-ui/react/toast\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport { Check, Info, X } from \"lucide-react\";\nimport type { CSSProperties, PropsWithChildren } from \"react\";\nimport { Button } from \"./button\";\nimport { cn } from \"./lib/cn\";\n\ntype ToastVariant = \"success\" | \"info\" | \"warning\" | \"error\" | \"loading\";\ntype ResolvedToastSide = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype ToastAlign = \"start\" | \"center\" | \"end\";\ntype ToastPlacement = {\n\tside: ResolvedToastSide;\n\talign: ToastAlign;\n\tkey: string;\n};\ntype ToastRootStyle = CSSProperties &\n\tRecord<\n\t\t| \"--toast-placement-index\"\n\t\t| \"--toast-placement-offset-y\"\n\t\t| \"--toast-placement-frontmost-height\",\n\t\tstring | number | undefined\n\t>;\n\ntype ToastData = {\n\ttype: ToastVariant;\n};\n\nconst DEFAULT_TOAST_SIDE = \"top\";\nconst DEFAULT_TOAST_ALIGN = \"end\";\ntype ToastSide = NonNullable<\n\tToastObject<{ type?: ToastVariant }>[\"positionerProps\"]\n>[\"side\"];\n\nexport const toastManager = BaseToast.createToastManager();\n\nexport const toast = Object.assign(\n\t(options: ToastManagerAddOptions<ToastData>) => toastManager.add(options),\n\t{\n\t\tsuccess: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"success\", ...options.data },\n\t\t\t}),\n\t\tinfo: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"info\", ...options.data },\n\t\t\t}),\n\t\twarning: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"warning\", ...options.data },\n\t\t\t}),\n\t\terror: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"error\", ...options.data },\n\t\t\t}),\n\t\tloading: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"loading\", ...options.data },\n\t\t\t}),\n\t\tdismiss: (toastId?: string | number) =>\n\t\t\ttoastManager.close(toastId?.toString()),\n\t\tupdate: (\n\t\t\ttoastId: string | number,\n\t\t\toptions: ToastManagerUpdateOptions<ToastData>,\n\t\t) => toastManager.update(toastId.toString(), options),\n\t\tpromise: toastManager.promise,\n\t},\n);\n\nexport function ToastProvider({ children }: PropsWithChildren) {\n\treturn (\n\t\t<BaseToast.Provider limit={4} timeout={5000} toastManager={toastManager}>\n\t\t\t{children}\n\t\t\t<BaseToast.Portal>\n\t\t\t\t<BaseToast.Viewport className=\"fixed inset-0 z-9999 pointer-events-none outline-none\">\n\t\t\t\t\t<ToastList />\n\t\t\t\t</BaseToast.Viewport>\n\t\t\t</BaseToast.Portal>\n\t\t</BaseToast.Provider>\n\t);\n}\n\nfunction ToastList() {\n\tconst { toasts } = BaseToast.useToastManager<ToastData>();\n\tconst placementStacks = new Map<\n\t\tstring,\n\t\t{\n\t\t\tdomIndex: number;\n\t\t\tvisibleIndex: number;\n\t\t\toffsetY: number;\n\t\t\tfrontmostHeight?: number;\n\t\t}\n\t>();\n\n\treturn toasts.map((item) => {\n\t\tconst placement = getToastPlacement(item);\n\t\tconst stack = placementStacks.get(placement.key) ?? {\n\t\t\tdomIndex: 0,\n\t\t\tvisibleIndex: 0,\n\t\t\toffsetY: 0,\n\t\t\tfrontmostHeight: item.height,\n\t\t};\n\t\tconst placementIndex =\n\t\t\titem.transitionStatus === \"ending\" ? stack.domIndex : stack.visibleIndex;\n\t\tconst style: ToastRootStyle = {\n\t\t\t\"--toast-placement-index\": placementIndex,\n\t\t\t\"--toast-placement-offset-y\": `${stack.offsetY}px`,\n\t\t\t\"--toast-placement-frontmost-height\": stack.frontmostHeight\n\t\t\t\t? `${stack.frontmostHeight}px`\n\t\t\t\t: undefined,\n\t\t};\n\n\t\tstack.offsetY += item.height ?? 0;\n\t\tstack.domIndex += 1;\n\t\tif (item.transitionStatus !== \"ending\") {\n\t\t\tstack.visibleIndex += 1;\n\t\t}\n\t\tplacementStacks.set(placement.key, stack);\n\n\t\treturn (\n\t\t\t<BaseToast.Root\n\t\t\t\tkey={item.id}\n\t\t\t\ttoast={item}\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttoastRootBaseClassName,\n\t\t\t\t\tgetToastPositionClassName(placement),\n\t\t\t\t\tgetToastStackClassName(placement),\n\t\t\t\t\tgetToastExitClassName(placement.side),\n\t\t\t\t)}\n\t\t\t\tswipeDirection={getSwipeDirections(item)}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t<BaseToast.Content\n\t\t\t\t\tclassName={\n\t\t\t\t\t\t\"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\"\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToastIcon type={item.data?.type} />\n\t\t\t\t\t<div className=\"min-w-0 flex flex-col gap-1.5\">\n\t\t\t\t\t\t{item.title ? (\n\t\t\t\t\t\t\t<BaseToast.Title className=\"text-gdt-sm font-semibold text-fg-primary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t{item.description ? (\n\t\t\t\t\t\t\t<BaseToast.Description className=\"text-gdt-sm text-fg-secondary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<BaseToast.Action\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"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\",\n\t\t\t\t\t\t\t\titem.data?.type === \"success\" && \"text-fg-brand\",\n\t\t\t\t\t\t\t\titem.data?.type === \"info\" && \"text-fg-primary\",\n\t\t\t\t\t\t\t\titem.data?.type === \"warning\" && \"text-fg-accent\",\n\t\t\t\t\t\t\t\titem.data?.type === \"error\" && \"text-fg-danger\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<BaseToast.Close\n\t\t\t\t\t\trender={<Button variant=\"ghost\" size=\"icon-xs\" />}\n\t\t\t\t\t\taria-label=\"Close toast\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t\t</BaseToast.Close>\n\t\t\t\t</BaseToast.Content>\n\t\t\t</BaseToast.Root>\n\t\t);\n\t});\n}\n\nfunction ToastIcon({ type }: { type?: ToastVariant }) {\n\tif (!type) return null;\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex size-5 items-center justify-center rounded-full text-canvas\",\n\t\t\t\ttype === \"success\" && \"bg-status-success\",\n\t\t\t\ttype === \"info\" && \"bg-status-info\",\n\t\t\t\ttype === \"warning\" && \"bg-status-warning text-fg-on-accent\",\n\t\t\t\ttype === \"error\" && \"bg-status-danger\",\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t{type === \"success\" ? <Check size={10} strokeWidth={3} /> : null}\n\t\t\t{type === \"info\" ? <Info size={11} strokeWidth={2.8} /> : null}\n\t\t\t{type === \"warning\" ? (\n\t\t\t\t<span className=\"text-[11px] leading-none font-extrabold\">!</span>\n\t\t\t) : null}\n\t\t\t{type === \"error\" ? <X size={10} strokeWidth={3} /> : null}\n\t\t</span>\n\t);\n}\n\nconst toastRootBaseClassName =\n\t\"[--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)]\";\n\nfunction getToastPlacement(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n): ToastPlacement {\n\tconst side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;\n\tconst align = (item.positionerProps?.align ??\n\t\tDEFAULT_TOAST_ALIGN) as ToastAlign;\n\tconst resolvedSide = resolveToastSide(side, isRtl);\n\n\treturn {\n\t\tside: resolvedSide,\n\t\talign,\n\t\tkey: `${resolvedSide}:${align}`,\n\t};\n}\n\nfunction resolveToastSide(\n\tside: ToastSide | undefined,\n\tisRtl: boolean,\n): ResolvedToastSide {\n\tif (side === \"inline-end\") return isRtl ? \"left\" : \"right\";\n\tif (side === \"inline-start\") return isRtl ? \"right\" : \"left\";\n\tif (\n\t\tside === \"top\" ||\n\t\tside === \"bottom\" ||\n\t\tside === \"left\" ||\n\t\tside === \"right\"\n\t) {\n\t\treturn side;\n\t}\n\treturn DEFAULT_TOAST_SIDE;\n}\n\nfunction getToastPositionClassName({ side, align }: ToastPlacement) {\n\tconst isVerticalSide = side === \"top\" || side === \"bottom\";\n\n\tif (isVerticalSide) {\n\t\treturn cn(\n\t\t\tside === \"top\" && \"top-6 max-sm:top-4\",\n\t\t\tside === \"bottom\" && \"bottom-6 max-sm:bottom-4\",\n\t\t\talign === \"start\" && \"left-6 origin-top-left max-sm:left-4\",\n\t\t\talign === \"center\" && \"left-1/2 origin-top [--anchor-x:-50%]\",\n\t\t\talign === \"end\" && \"right-6 origin-top-right max-sm:right-4\",\n\t\t\tside === \"bottom\" && align === \"start\" && \"origin-bottom-left\",\n\t\t\tside === \"bottom\" && align === \"center\" && \"origin-bottom\",\n\t\t\tside === \"bottom\" && align === \"end\" && \"origin-bottom-right\",\n\t\t);\n\t}\n\n\treturn cn(\n\t\tside === \"left\" && \"left-6 origin-left max-sm:left-4\",\n\t\tside === \"right\" && \"right-6 origin-right max-sm:right-4\",\n\t\talign === \"start\" && \"top-6 max-sm:top-4\",\n\t\talign === \"center\" && \"top-1/2 [--anchor-y:-50%]\",\n\t\talign === \"end\" && \"bottom-6 max-sm:bottom-4\",\n\t\tside === \"left\" && align === \"start\" && \"origin-top-left\",\n\t\tside === \"left\" && align === \"end\" && \"origin-bottom-left\",\n\t\tside === \"right\" && align === \"start\" && \"origin-top-right\",\n\t\tside === \"right\" && align === \"end\" && \"origin-bottom-right\",\n\t);\n}\n\nfunction getToastStackClassName({ side, align }: ToastPlacement) {\n\tconst stacksUp =\n\t\tside === \"bottom\" ||\n\t\t((side === \"left\" || side === \"right\") && align === \"end\");\n\n\tif (stacksUp) {\n\t\treturn \"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)))]\";\n\t}\n\n\treturn \"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)))]\";\n}\n\nfunction getToastExitClassName(side: ResolvedToastSide) {\n\tif (side === \"bottom\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]\";\n\t}\n\tif (side === \"left\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\tif (side === \"right\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]\";\n}\n\ntype SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\nfunction getSwipeDirections(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n) {\n\tconst { side: resolvedSide, align } = getToastPlacement(item, isRtl);\n\tconst primary: SwipeDirection =\n\t\tresolvedSide === \"top\"\n\t\t\t? \"up\"\n\t\t\t: resolvedSide === \"bottom\"\n\t\t\t\t? \"down\"\n\t\t\t\t: resolvedSide === \"left\"\n\t\t\t\t\t? \"left\"\n\t\t\t\t\t: /* right */ \"right\";\n\tif (align === \"center\") return primary;\n\tconst isVerticalSide = resolvedSide === \"top\" || resolvedSide === \"bottom\";\n\tconst secondary: SwipeDirection = isVerticalSide\n\t\t? align === \"start\"\n\t\t\t? \"left\"\n\t\t\t: \"right\"\n\t\t: align === \"start\"\n\t\t\t? \"up\"\n\t\t\t: \"down\";\n\treturn [primary, secondary];\n}\n"],"mappings":"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","names":[]}
|
package/dist/tooltip.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
|
|
3
3
|
|
|
4
|
-
declare function Tooltip({ ...props }:
|
|
5
|
-
declare function TooltipTrigger({ ...props }:
|
|
6
|
-
type TooltipContentProps =
|
|
4
|
+
declare function Tooltip({ ...props }: Tooltip$1.Root.Props): React.JSX.Element;
|
|
5
|
+
declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): React.JSX.Element;
|
|
6
|
+
type TooltipContentProps = Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & Pick<Tooltip$1.Portal.Props, "container"> & {
|
|
7
7
|
showArrow?: boolean;
|
|
8
8
|
};
|
|
9
|
-
declare function TooltipContent({ className, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): React.JSX.Element;
|
|
9
|
+
declare function TooltipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): React.JSX.Element;
|
|
10
10
|
|
|
11
11
|
export { Tooltip, TooltipContent, TooltipTrigger };
|
package/dist/tooltip.js
CHANGED
|
@@ -1,93 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
extend: {
|
|
9
|
-
classGroups: {
|
|
10
|
-
"font-size": [
|
|
11
|
-
{
|
|
12
|
-
text: [
|
|
13
|
-
"gdt-display",
|
|
14
|
-
"gdt-h1",
|
|
15
|
-
"gdt-h2",
|
|
16
|
-
"gdt-h3",
|
|
17
|
-
"gdt-h4",
|
|
18
|
-
"gdt-h5",
|
|
19
|
-
"gdt-xl",
|
|
20
|
-
"gdt-lg",
|
|
21
|
-
"gdt-md",
|
|
22
|
-
"gdt-sm",
|
|
23
|
-
"gdt-xs",
|
|
24
|
-
"gdt-subtext",
|
|
25
|
-
"gdt-capitalized"
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
function cn(...inputs) {
|
|
33
|
-
return twMerge(clsx(inputs));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// src/components/ui/tooltip.tsx
|
|
37
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
38
|
-
function Tooltip({ ...props }) {
|
|
39
|
-
return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
40
|
-
}
|
|
41
|
-
function TooltipTrigger({
|
|
42
|
-
...props
|
|
43
|
-
}) {
|
|
44
|
-
return /* @__PURE__ */ jsx(
|
|
45
|
-
PopoverPrimitive.Trigger,
|
|
46
|
-
{
|
|
47
|
-
nativeButton: false,
|
|
48
|
-
"data-slot": "tooltip-trigger",
|
|
49
|
-
openOnHover: true,
|
|
50
|
-
delay: 100,
|
|
51
|
-
...props
|
|
52
|
-
}
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
function TooltipContent({
|
|
56
|
-
className,
|
|
57
|
-
side = "top",
|
|
58
|
-
sideOffset = 6,
|
|
59
|
-
align = "center",
|
|
60
|
-
alignOffset = 0,
|
|
61
|
-
showArrow = true,
|
|
62
|
-
children,
|
|
63
|
-
...props
|
|
64
|
-
}) {
|
|
65
|
-
return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
66
|
-
PopoverPrimitive.Positioner,
|
|
67
|
-
{
|
|
68
|
-
align,
|
|
69
|
-
alignOffset,
|
|
70
|
-
side,
|
|
71
|
-
sideOffset,
|
|
72
|
-
className: "isolate z-50",
|
|
73
|
-
children: /* @__PURE__ */ jsxs(
|
|
74
|
-
PopoverPrimitive.Popup,
|
|
75
|
-
{
|
|
76
|
-
"data-slot": "tooltip-content",
|
|
77
|
-
className: cn(
|
|
78
|
-
"z-50 relative inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-[6px] border border-line bg-surface-overlay px-3 py-2 text-gdt-sm font-medium text-fg-primary shadow-2 duration-100 has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
79
|
-
className
|
|
80
|
-
),
|
|
81
|
-
...props,
|
|
82
|
-
children: [
|
|
83
|
-
children,
|
|
84
|
-
showArrow ? /* @__PURE__ */ jsx(PopoverPrimitive.Arrow, { className: "relative block w-3 h-1.5 overflow-clip data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 before:content-[''] before:absolute before:bottom-0 before:left-1/2 before:w-[calc(6px*sqrt(2))] before:h-[calc(6px*sqrt(2))] before:bg-surface-overlay before:border before:border-line before:[transform:translate(-50%,50%)_rotate(45deg)]" }) : null
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
)
|
|
88
|
-
}
|
|
89
|
-
) });
|
|
90
|
-
}
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Tooltip,
|
|
4
|
+
TooltipContent,
|
|
5
|
+
TooltipTrigger
|
|
6
|
+
} from "./chunk-KDPYSOYZ.js";
|
|
7
|
+
import "./chunk-Y4TTYVNE.js";
|
|
91
8
|
export {
|
|
92
9
|
Tooltip,
|
|
93
10
|
TooltipContent,
|
package/dist/tooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|