@karakuri-ui/react 0.2.3 → 0.3.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 +0 -1
- package/dist/components/ui/accordion.d.mts +40 -0
- package/dist/components/ui/accordion.d.ts +40 -0
- package/dist/components/ui/accordion.js +215 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/accordion.mjs +176 -0
- package/dist/components/ui/accordion.mjs.map +1 -0
- package/dist/components/ui/alert.d.mts +38 -0
- package/dist/components/ui/alert.d.ts +38 -0
- package/dist/components/ui/alert.js +217 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/alert.mjs +180 -0
- package/dist/components/ui/alert.mjs.map +1 -0
- package/dist/components/ui/avatar.d.mts +223 -0
- package/dist/components/ui/avatar.d.ts +223 -0
- package/dist/components/ui/avatar.js +245 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/avatar.mjs +204 -0
- package/dist/components/ui/avatar.mjs.map +1 -0
- package/dist/components/ui/badge.d.mts +31 -0
- package/dist/components/ui/badge.d.ts +31 -0
- package/dist/components/ui/badge.js +205 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/badge.mjs +170 -0
- package/dist/components/ui/badge.mjs.map +1 -0
- package/dist/components/ui/breadcrumb.d.mts +46 -0
- package/dist/components/ui/breadcrumb.d.ts +46 -0
- package/dist/components/ui/breadcrumb.js +201 -0
- package/dist/components/ui/breadcrumb.js.map +1 -0
- package/dist/components/ui/breadcrumb.mjs +160 -0
- package/dist/components/ui/breadcrumb.mjs.map +1 -0
- package/dist/components/ui/button-group.d.mts +22 -0
- package/dist/components/ui/button-group.d.ts +22 -0
- package/dist/components/ui/button-group.js +107 -0
- package/dist/components/ui/button-group.js.map +1 -0
- package/dist/components/ui/button-group.mjs +72 -0
- package/dist/components/ui/button-group.mjs.map +1 -0
- package/dist/components/ui/button.d.mts +31 -0
- package/dist/components/ui/button.d.ts +31 -0
- package/dist/components/ui/button.js +176 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/button.mjs +141 -0
- package/dist/components/ui/button.mjs.map +1 -0
- package/dist/components/ui/card.d.mts +60 -0
- package/dist/components/ui/card.d.ts +60 -0
- package/dist/components/ui/card.js +361 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/card.mjs +319 -0
- package/dist/components/ui/card.mjs.map +1 -0
- package/dist/{chart.d.mts → components/ui/chart.d.mts} +2 -18
- package/dist/{chart.d.ts → components/ui/chart.d.ts} +2 -18
- package/dist/{chart.js → components/ui/chart.js} +30 -55
- package/dist/components/ui/chart.js.map +1 -0
- package/dist/{chart.mjs → components/ui/chart.mjs} +22 -46
- package/dist/components/ui/chart.mjs.map +1 -0
- package/dist/components/ui/checkbox.d.mts +24 -0
- package/dist/components/ui/checkbox.d.ts +24 -0
- package/dist/components/ui/checkbox.js +173 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/checkbox.mjs +138 -0
- package/dist/components/ui/checkbox.mjs.map +1 -0
- package/dist/components/ui/divider.d.mts +27 -0
- package/dist/components/ui/divider.d.ts +27 -0
- package/dist/components/ui/divider.js +147 -0
- package/dist/components/ui/divider.js.map +1 -0
- package/dist/components/ui/divider.mjs +112 -0
- package/dist/components/ui/divider.mjs.map +1 -0
- package/dist/components/ui/drawer.d.mts +36 -0
- package/dist/components/ui/drawer.d.ts +36 -0
- package/dist/components/ui/drawer.js +211 -0
- package/dist/components/ui/drawer.js.map +1 -0
- package/dist/components/ui/drawer.mjs +165 -0
- package/dist/components/ui/drawer.mjs.map +1 -0
- package/dist/components/ui/dropdown.d.mts +34 -0
- package/dist/components/ui/dropdown.d.ts +34 -0
- package/dist/components/ui/dropdown.js +295 -0
- package/dist/components/ui/dropdown.js.map +1 -0
- package/dist/components/ui/dropdown.mjs +248 -0
- package/dist/components/ui/dropdown.mjs.map +1 -0
- package/dist/components/ui/field.d.mts +26 -0
- package/dist/components/ui/field.d.ts +26 -0
- package/dist/components/ui/field.js +141 -0
- package/dist/components/ui/field.js.map +1 -0
- package/dist/components/ui/field.mjs +103 -0
- package/dist/components/ui/field.mjs.map +1 -0
- package/dist/components/ui/icon-button.d.mts +20 -0
- package/dist/components/ui/icon-button.d.ts +20 -0
- package/dist/components/ui/icon-button.js +147 -0
- package/dist/components/ui/icon-button.js.map +1 -0
- package/dist/components/ui/icon-button.mjs +112 -0
- package/dist/components/ui/icon-button.mjs.map +1 -0
- package/dist/components/ui/index.d.mts +55 -0
- package/dist/components/ui/index.d.ts +55 -0
- package/dist/components/ui/index.js +468 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/components/ui/index.mjs +242 -0
- package/dist/components/ui/index.mjs.map +1 -0
- package/dist/components/ui/input.d.mts +20 -0
- package/dist/components/ui/input.d.ts +20 -0
- package/dist/components/ui/input.js +250 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/input.mjs +215 -0
- package/dist/components/ui/input.mjs.map +1 -0
- package/dist/components/ui/metric-card.d.mts +38 -0
- package/dist/components/ui/metric-card.d.ts +38 -0
- package/dist/components/ui/metric-card.js +250 -0
- package/dist/components/ui/metric-card.js.map +1 -0
- package/dist/components/ui/metric-card.mjs +209 -0
- package/dist/components/ui/metric-card.mjs.map +1 -0
- package/dist/components/ui/modal.d.mts +47 -0
- package/dist/components/ui/modal.d.ts +47 -0
- package/dist/components/ui/modal.js +371 -0
- package/dist/components/ui/modal.js.map +1 -0
- package/dist/components/ui/modal.mjs +313 -0
- package/dist/components/ui/modal.mjs.map +1 -0
- package/dist/components/ui/navigation-menu.d.mts +120 -0
- package/dist/components/ui/navigation-menu.d.ts +120 -0
- package/dist/components/ui/navigation-menu.js +521 -0
- package/dist/components/ui/navigation-menu.js.map +1 -0
- package/dist/components/ui/navigation-menu.mjs +478 -0
- package/dist/components/ui/navigation-menu.mjs.map +1 -0
- package/dist/components/ui/pagination.d.mts +113 -0
- package/dist/components/ui/pagination.d.ts +113 -0
- package/dist/components/ui/pagination.js +484 -0
- package/dist/components/ui/pagination.js.map +1 -0
- package/dist/components/ui/pagination.mjs +438 -0
- package/dist/components/ui/pagination.mjs.map +1 -0
- package/dist/components/ui/popover.d.mts +29 -0
- package/dist/components/ui/popover.d.ts +29 -0
- package/dist/components/ui/popover.js +165 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/popover.mjs +124 -0
- package/dist/components/ui/popover.mjs.map +1 -0
- package/dist/components/ui/progress.d.mts +35 -0
- package/dist/components/ui/progress.d.ts +35 -0
- package/dist/components/ui/progress.js +194 -0
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/progress.mjs +159 -0
- package/dist/components/ui/progress.mjs.map +1 -0
- package/dist/components/ui/radio-group.d.mts +35 -0
- package/dist/components/ui/radio-group.d.ts +35 -0
- package/dist/components/ui/radio-group.js +174 -0
- package/dist/components/ui/radio-group.js.map +1 -0
- package/dist/components/ui/radio-group.mjs +137 -0
- package/dist/components/ui/radio-group.mjs.map +1 -0
- package/dist/components/ui/segmented.d.mts +25 -0
- package/dist/components/ui/segmented.d.ts +25 -0
- package/dist/components/ui/segmented.js +238 -0
- package/dist/components/ui/segmented.js.map +1 -0
- package/dist/components/ui/segmented.mjs +201 -0
- package/dist/components/ui/segmented.mjs.map +1 -0
- package/dist/components/ui/select.d.mts +20 -0
- package/dist/components/ui/select.d.ts +20 -0
- package/dist/components/ui/select.js +308 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/select.mjs +267 -0
- package/dist/components/ui/select.mjs.map +1 -0
- package/dist/components/ui/skeleton.d.mts +26 -0
- package/dist/components/ui/skeleton.d.ts +26 -0
- package/dist/components/ui/skeleton.js +144 -0
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/skeleton.mjs +109 -0
- package/dist/components/ui/skeleton.mjs.map +1 -0
- package/dist/components/ui/slider.d.mts +38 -0
- package/dist/components/ui/slider.d.ts +38 -0
- package/dist/components/ui/slider.js +180 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/slider.mjs +145 -0
- package/dist/components/ui/slider.mjs.map +1 -0
- package/dist/components/ui/spinner.d.mts +23 -0
- package/dist/components/ui/spinner.d.ts +23 -0
- package/dist/components/ui/spinner.js +471 -0
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/spinner.mjs +436 -0
- package/dist/components/ui/spinner.mjs.map +1 -0
- package/dist/components/ui/switch.d.mts +22 -0
- package/dist/components/ui/switch.d.ts +22 -0
- package/dist/components/ui/switch.js +173 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/switch.mjs +138 -0
- package/dist/components/ui/switch.mjs.map +1 -0
- package/dist/components/ui/table.d.mts +60 -0
- package/dist/components/ui/table.d.ts +60 -0
- package/dist/components/ui/table.js +231 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/table.mjs +190 -0
- package/dist/components/ui/table.mjs.map +1 -0
- package/dist/components/ui/tabs.d.mts +31 -0
- package/dist/components/ui/tabs.d.ts +31 -0
- package/dist/components/ui/tabs.js +233 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/tabs.mjs +194 -0
- package/dist/components/ui/tabs.mjs.map +1 -0
- package/dist/components/ui/textarea.d.mts +19 -0
- package/dist/components/ui/textarea.d.ts +19 -0
- package/dist/components/ui/textarea.js +181 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/textarea.mjs +146 -0
- package/dist/components/ui/textarea.mjs.map +1 -0
- package/dist/components/ui/toast.d.mts +93 -0
- package/dist/components/ui/toast.d.ts +93 -0
- package/dist/components/ui/toast.js +429 -0
- package/dist/components/ui/toast.js.map +1 -0
- package/dist/components/ui/toast.mjs +393 -0
- package/dist/components/ui/toast.mjs.map +1 -0
- package/dist/components/ui/toggle-group.d.mts +42 -0
- package/dist/components/ui/toggle-group.d.ts +42 -0
- package/dist/components/ui/toggle-group.js +183 -0
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/toggle-group.mjs +146 -0
- package/dist/components/ui/toggle-group.mjs.map +1 -0
- package/dist/components/ui/toggle.d.mts +19 -0
- package/dist/components/ui/toggle.d.ts +19 -0
- package/dist/components/ui/toggle.js +194 -0
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/toggle.mjs +159 -0
- package/dist/components/ui/toggle.mjs.map +1 -0
- package/dist/components/ui/tooltip.d.mts +26 -0
- package/dist/components/ui/tooltip.d.ts +26 -0
- package/dist/components/ui/tooltip.js +128 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/components/ui/tooltip.mjs +88 -0
- package/dist/components/ui/tooltip.mjs.map +1 -0
- package/dist/lib/code-generator.d.mts +60 -0
- package/dist/lib/code-generator.d.ts +60 -0
- package/dist/lib/code-generator.js +224 -0
- package/dist/lib/code-generator.js.map +1 -0
- package/dist/lib/code-generator.mjs +159 -0
- package/dist/lib/code-generator.mjs.map +1 -0
- package/dist/lib/utils.d.mts +10 -0
- package/dist/lib/utils.d.ts +10 -0
- package/dist/lib/utils.js +33 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.mjs +9 -0
- package/dist/lib/utils.mjs.map +1 -0
- package/package.json +11 -11
- package/dist/chart.js.map +0 -1
- package/dist/chart.mjs.map +0 -1
- package/dist/index.d.mts +0 -1636
- package/dist/index.d.ts +0 -1636
- package/dist/index.js +0 -7291
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -7048
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
const toggleBaseStyles = "inline-flex items-center justify-center text-text-muted transition-all duration-micro focus-visible:focus-ring disabled:pointer-events-none disabled:opacity-50";
|
|
7
|
+
const toggleVariants = cva(
|
|
8
|
+
toggleBaseStyles,
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: "bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground",
|
|
13
|
+
outline: "border border-border-form bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground",
|
|
14
|
+
ghost: "bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground",
|
|
15
|
+
"outline-ghost": "border border-border-form bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground data-[state=on]:border-border-form"
|
|
16
|
+
},
|
|
17
|
+
fontWeight: {
|
|
18
|
+
normal: "font-normal",
|
|
19
|
+
semibold: "font-semibold"
|
|
20
|
+
},
|
|
21
|
+
size: {
|
|
22
|
+
xs: "h-7 px-2.5 text-xs gap-1",
|
|
23
|
+
// 28px height, 10px paddingX, 12px font
|
|
24
|
+
sm: "h-8 px-3 text-sm gap-2",
|
|
25
|
+
// 32px height, 12px paddingX, 13px font
|
|
26
|
+
md: "h-9 px-3.5 text-md gap-2",
|
|
27
|
+
// 36px height, 14px paddingX, 14px font
|
|
28
|
+
default: "h-10 px-4 text-md gap-2",
|
|
29
|
+
// 40px height, 16px paddingX, 14px font
|
|
30
|
+
lg: "h-12 px-6 text-base gap-2"
|
|
31
|
+
// 48px height, 24px paddingX, 16px font
|
|
32
|
+
},
|
|
33
|
+
radius: {
|
|
34
|
+
none: "rounded-none",
|
|
35
|
+
// 0px - primitive.borderRadius.none
|
|
36
|
+
sm: "rounded-sm",
|
|
37
|
+
// 2px - primitive.borderRadius.sm
|
|
38
|
+
base: "rounded",
|
|
39
|
+
// 4px - primitive.borderRadius.base
|
|
40
|
+
default: "rounded-md",
|
|
41
|
+
// 6px - primitive.borderRadius.md
|
|
42
|
+
lg: "rounded-lg",
|
|
43
|
+
// 8px - primitive.borderRadius.lg
|
|
44
|
+
xl: "rounded-xl",
|
|
45
|
+
// 12px - primitive.borderRadius.xl
|
|
46
|
+
"2xl": "rounded-2xl",
|
|
47
|
+
// 16px - primitive.borderRadius.2xl
|
|
48
|
+
"3xl": "rounded-3xl",
|
|
49
|
+
// 24px - primitive.borderRadius.3xl
|
|
50
|
+
full: "rounded-full"
|
|
51
|
+
// 9999px - primitive.borderRadius.full
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
defaultVariants: {
|
|
55
|
+
variant: "default",
|
|
56
|
+
size: "default",
|
|
57
|
+
radius: "default",
|
|
58
|
+
// 6px - primitive.borderRadius.md (Figma button default)
|
|
59
|
+
fontWeight: "normal"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
const iconOnlySizes = {
|
|
64
|
+
xs: "h-7 w-7",
|
|
65
|
+
// 28px × 28px - spacing.7
|
|
66
|
+
sm: "h-8 w-8",
|
|
67
|
+
// 32px × 32px - spacing.8
|
|
68
|
+
md: "h-9 w-9",
|
|
69
|
+
// 36px × 36px - spacing.9
|
|
70
|
+
default: "h-10 w-10",
|
|
71
|
+
// 40px × 40px - spacing.10
|
|
72
|
+
lg: "h-12 w-12"
|
|
73
|
+
// 48px × 48px - spacing.12
|
|
74
|
+
};
|
|
75
|
+
const radiusClasses = {
|
|
76
|
+
none: "rounded-none",
|
|
77
|
+
sm: "rounded-sm",
|
|
78
|
+
base: "rounded",
|
|
79
|
+
default: "rounded-md",
|
|
80
|
+
lg: "rounded-lg",
|
|
81
|
+
xl: "rounded-xl",
|
|
82
|
+
"2xl": "rounded-2xl",
|
|
83
|
+
"3xl": "rounded-3xl",
|
|
84
|
+
full: "rounded-full"
|
|
85
|
+
};
|
|
86
|
+
const variantClasses = {
|
|
87
|
+
default: "bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground",
|
|
88
|
+
outline: "border border-border-form bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground",
|
|
89
|
+
ghost: "bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground",
|
|
90
|
+
"outline-ghost": "border border-border-form bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground data-[state=on]:border-border-form"
|
|
91
|
+
};
|
|
92
|
+
const iconSizeClasses = {
|
|
93
|
+
xs: "[&>svg]:icon-xs",
|
|
94
|
+
// 14px
|
|
95
|
+
sm: "[&>svg]:icon-xs",
|
|
96
|
+
// 14px
|
|
97
|
+
md: "[&>svg]:icon-sm",
|
|
98
|
+
// 16px
|
|
99
|
+
default: "[&>svg]:icon-sm",
|
|
100
|
+
// 16px
|
|
101
|
+
lg: "[&>svg]:icon-sm"
|
|
102
|
+
// 16px
|
|
103
|
+
};
|
|
104
|
+
const Toggle = React.forwardRef(({ className, variant, size, radius, fontWeight, iconOnly, pressEffect, ...props }, ref) => {
|
|
105
|
+
const sizeKey = size || "default";
|
|
106
|
+
const radiusKey = radius || "default";
|
|
107
|
+
const variantKey = variant || "default";
|
|
108
|
+
const fontWeightClass = fontWeight === "normal" ? "font-normal" : fontWeight === "semibold" ? "font-semibold" : "font-normal";
|
|
109
|
+
if (iconOnly) {
|
|
110
|
+
const iconOnlyIconSize = {
|
|
111
|
+
xs: "[&>svg]:icon-xs",
|
|
112
|
+
// 14px
|
|
113
|
+
sm: "[&>svg]:icon-sm",
|
|
114
|
+
// 16px
|
|
115
|
+
md: "[&>svg]:icon-sm",
|
|
116
|
+
// 16px
|
|
117
|
+
default: "[&>svg]:icon-md",
|
|
118
|
+
// 20px
|
|
119
|
+
lg: "[&>svg]:icon-lg"
|
|
120
|
+
// 24px
|
|
121
|
+
}[sizeKey];
|
|
122
|
+
return /* @__PURE__ */ React.createElement(
|
|
123
|
+
TogglePrimitive.Root,
|
|
124
|
+
{
|
|
125
|
+
ref,
|
|
126
|
+
className: cn(
|
|
127
|
+
toggleBaseStyles,
|
|
128
|
+
pressEffect !== false && "active:scale-pressed",
|
|
129
|
+
fontWeightClass,
|
|
130
|
+
variantClasses[variantKey],
|
|
131
|
+
iconOnlySizes[sizeKey],
|
|
132
|
+
radiusClasses[radiusKey],
|
|
133
|
+
iconOnlyIconSize,
|
|
134
|
+
className
|
|
135
|
+
),
|
|
136
|
+
...props
|
|
137
|
+
}
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
return /* @__PURE__ */ React.createElement(
|
|
141
|
+
TogglePrimitive.Root,
|
|
142
|
+
{
|
|
143
|
+
ref,
|
|
144
|
+
className: cn(
|
|
145
|
+
toggleVariants({ variant, size, radius, fontWeight }),
|
|
146
|
+
pressEffect !== false && "active:scale-pressed",
|
|
147
|
+
iconSizeClasses[sizeKey],
|
|
148
|
+
className
|
|
149
|
+
),
|
|
150
|
+
...props
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
});
|
|
154
|
+
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
155
|
+
export {
|
|
156
|
+
Toggle,
|
|
157
|
+
toggleVariants
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=toggle.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/toggle.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TogglePrimitive from '@radix-ui/react-toggle'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\n// Base styles without size (for iconOnly mode)\nconst toggleBaseStyles = 'inline-flex items-center justify-center text-text-muted transition-all duration-micro focus-visible:focus-ring disabled:pointer-events-none disabled:opacity-50'\n\nconst toggleVariants = cva(\n toggleBaseStyles,\n {\n variants: {\n variant: {\n default: 'bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground',\n outline: 'border border-border-form bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground',\n ghost: 'bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground',\n 'outline-ghost': 'border border-border-form bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground data-[state=on]:border-border-form',\n },\n fontWeight: {\n normal: 'font-normal',\n semibold: 'font-semibold',\n },\n size: {\n xs: 'h-7 px-2.5 text-xs gap-1', // 28px height, 10px paddingX, 12px font\n sm: 'h-8 px-3 text-sm gap-2', // 32px height, 12px paddingX, 13px font\n md: 'h-9 px-3.5 text-md gap-2', // 36px height, 14px paddingX, 14px font\n default: 'h-10 px-4 text-md gap-2', // 40px height, 16px paddingX, 14px font\n lg: 'h-12 px-6 text-base gap-2', // 48px height, 24px paddingX, 16px font\n },\n radius: {\n none: 'rounded-none', // 0px - primitive.borderRadius.none\n sm: 'rounded-sm', // 2px - primitive.borderRadius.sm\n base: 'rounded', // 4px - primitive.borderRadius.base\n default: 'rounded-md', // 6px - primitive.borderRadius.md\n lg: 'rounded-lg', // 8px - primitive.borderRadius.lg\n xl: 'rounded-xl', // 12px - primitive.borderRadius.xl\n '2xl': 'rounded-2xl', // 16px - primitive.borderRadius.2xl\n '3xl': 'rounded-3xl', // 24px - primitive.borderRadius.3xl\n full: 'rounded-full', // 9999px - primitive.borderRadius.full\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n radius: 'default', // 6px - primitive.borderRadius.md (Figma button default)\n fontWeight: 'normal',\n },\n }\n)\n\n// iconOnly sizes - square like IconButton (same width and height, no padding)\nconst iconOnlySizes = {\n xs: 'h-7 w-7', // 28px × 28px - spacing.7\n sm: 'h-8 w-8', // 32px × 32px - spacing.8\n md: 'h-9 w-9', // 36px × 36px - spacing.9\n default: 'h-10 w-10', // 40px × 40px - spacing.10\n lg: 'h-12 w-12', // 48px × 48px - spacing.12\n}\n\n// Radius classes for iconOnly mode\nconst radiusClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n base: 'rounded',\n default: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n '3xl': 'rounded-3xl',\n full: 'rounded-full',\n}\n\n// Variant classes for iconOnly mode\nconst variantClasses = {\n default: 'bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground',\n outline: 'border border-border-form bg-transparent hover:bg-background-muted hover:text-foreground data-[state=on]:bg-background-muted data-[state=on]:text-foreground',\n ghost: 'bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground',\n 'outline-ghost': 'border border-border-form bg-transparent hover:text-foreground data-[state=on]:bg-transparent data-[state=on]:text-foreground data-[state=on]:border-border-form',\n}\n\nexport interface ToggleProps\n extends React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>,\n Omit<VariantProps<typeof toggleVariants>, 'fontWeight'> {\n iconOnly?: boolean\n fontWeight?: 'normal' | 'semibold'\n pressEffect?: boolean\n}\n\n// Icon size for text+icon mode (5-step scale)\n// xs~sm: 14px, md~default~lg: 16px\nconst iconSizeClasses = {\n xs: '[&>svg]:icon-xs', // 14px\n sm: '[&>svg]:icon-xs', // 14px\n md: '[&>svg]:icon-sm', // 16px\n default: '[&>svg]:icon-sm', // 16px\n lg: '[&>svg]:icon-sm', // 16px\n}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, radius, fontWeight, iconOnly, pressEffect, ...props }, ref) => {\n const sizeKey = size || 'default'\n const radiusKey = radius || 'default'\n const variantKey = variant || 'default'\n const fontWeightClass = fontWeight === 'normal' ? 'font-normal' : fontWeight === 'semibold' ? 'font-semibold' : 'font-normal'\n\n // When iconOnly, build classes manually without padding\n if (iconOnly) {\n // Icon only uses larger icon sizes (like IconButton, 5-step scale)\n // XS: 14px, SM~MD: 16px, Default: 20px, LG: 24px\n const iconOnlyIconSize = {\n xs: '[&>svg]:icon-xs', // 14px\n sm: '[&>svg]:icon-sm', // 16px\n md: '[&>svg]:icon-sm', // 16px\n default: '[&>svg]:icon-md', // 20px\n lg: '[&>svg]:icon-lg', // 24px\n }[sizeKey]\n\n return (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(\n toggleBaseStyles,\n pressEffect !== false && 'active:scale-pressed',\n fontWeightClass,\n variantClasses[variantKey],\n iconOnlySizes[sizeKey],\n radiusClasses[radiusKey],\n iconOnlyIconSize,\n className\n )}\n {...props}\n />\n )\n }\n\n // Normal mode with padding\n return (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(\n toggleVariants({ variant, size, radius, fontWeight }),\n pressEffect !== false && 'active:scale-pressed',\n iconSizeClasses[sizeKey],\n className\n )}\n {...props}\n />\n )\n})\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,YAAY,qBAAqB;AACjC,SAAS,WAA8B;AACvC,SAAS,UAAU;AAGnB,MAAM,mBAAmB;AAEzB,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,QACP,iBAAiB;AAAA,MACnB;AAAA,MACA,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA;AAAA,QACJ,IAAI;AAAA;AAAA,QACJ,IAAI;AAAA;AAAA,QACJ,SAAS;AAAA;AAAA,QACT,IAAI;AAAA;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA;AAAA,QACN,IAAI;AAAA;AAAA,QACJ,MAAM;AAAA;AAAA,QACN,SAAS;AAAA;AAAA,QACT,IAAI;AAAA;AAAA,QACJ,IAAI;AAAA;AAAA,QACJ,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,QACP,MAAM;AAAA;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA;AAAA,MACR,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAGA,MAAM,gBAAgB;AAAA,EACpB,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,SAAS;AAAA;AAAA,EACT,IAAI;AAAA;AACN;AAGA,MAAM,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AACR;AAGA,MAAM,iBAAiB;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,iBAAiB;AACnB;AAYA,MAAM,kBAAkB;AAAA,EACtB,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,IAAI;AAAA;AAAA,EACJ,SAAS;AAAA;AAAA,EACT,IAAI;AAAA;AACN;AAEA,MAAM,SAAS,MAAM,WAGnB,CAAC,EAAE,WAAW,SAAS,MAAM,QAAQ,YAAY,UAAU,aAAa,GAAG,MAAM,GAAG,QAAQ;AAC5F,QAAM,UAAU,QAAQ;AACxB,QAAM,YAAY,UAAU;AAC5B,QAAM,aAAa,WAAW;AAC9B,QAAM,kBAAkB,eAAe,WAAW,gBAAgB,eAAe,aAAa,kBAAkB;AAGhH,MAAI,UAAU;AAGZ,UAAM,mBAAmB;AAAA,MACvB,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,SAAS;AAAA;AAAA,MACT,IAAI;AAAA;AAAA,IACN,EAAE,OAAO;AAET,WACE;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,gBAAgB,SAAS;AAAA,UACzB;AAAA,UACA,eAAe,UAAU;AAAA,UACzB,cAAc,OAAO;AAAA,UACrB,cAAc,SAAS;AAAA,UACvB;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AAGA,SACE;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,eAAe,EAAE,SAAS,MAAM,QAAQ,WAAW,CAAC;AAAA,QACpD,gBAAgB,SAAS;AAAA,QACzB,gBAAgB,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,OAAO,cAAc,gBAAgB,KAAK;","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
type TooltipSide = 'top' | 'right' | 'bottom' | 'left';
|
|
7
|
+
declare const tooltipContentVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "inverted" | null | undefined;
|
|
9
|
+
size?: "default" | "sm" | null | undefined;
|
|
10
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
11
|
+
declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
12
|
+
interface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {
|
|
13
|
+
/** Delay in ms before tooltip appears */
|
|
14
|
+
delayDuration?: number;
|
|
15
|
+
}
|
|
16
|
+
declare function Tooltip({ delayDuration, ...props }: TooltipProps): React.JSX.Element;
|
|
17
|
+
declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
18
|
+
declare const TooltipPortal: React.FC<TooltipPrimitive.TooltipPortalProps>;
|
|
19
|
+
interface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>, VariantProps<typeof tooltipContentVariants> {
|
|
20
|
+
/** Show arrow pointing to trigger */
|
|
21
|
+
showArrow?: boolean;
|
|
22
|
+
}
|
|
23
|
+
declare const TooltipContent: React.ForwardRefExoticComponent<TooltipContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
declare const TooltipArrow: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipArrowProps & React.RefAttributes<SVGSVGElement>, "ref"> & React.RefAttributes<SVGSVGElement>>;
|
|
25
|
+
|
|
26
|
+
export { Tooltip, TooltipArrow, TooltipContent, type TooltipContentProps, TooltipPortal, type TooltipProps, TooltipProvider, type TooltipSide, TooltipTrigger, tooltipContentVariants };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
type TooltipSide = 'top' | 'right' | 'bottom' | 'left';
|
|
7
|
+
declare const tooltipContentVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "inverted" | null | undefined;
|
|
9
|
+
size?: "default" | "sm" | null | undefined;
|
|
10
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
11
|
+
declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
12
|
+
interface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {
|
|
13
|
+
/** Delay in ms before tooltip appears */
|
|
14
|
+
delayDuration?: number;
|
|
15
|
+
}
|
|
16
|
+
declare function Tooltip({ delayDuration, ...props }: TooltipProps): React.JSX.Element;
|
|
17
|
+
declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
18
|
+
declare const TooltipPortal: React.FC<TooltipPrimitive.TooltipPortalProps>;
|
|
19
|
+
interface TooltipContentProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>, VariantProps<typeof tooltipContentVariants> {
|
|
20
|
+
/** Show arrow pointing to trigger */
|
|
21
|
+
showArrow?: boolean;
|
|
22
|
+
}
|
|
23
|
+
declare const TooltipContent: React.ForwardRefExoticComponent<TooltipContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
declare const TooltipArrow: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipArrowProps & React.RefAttributes<SVGSVGElement>, "ref"> & React.RefAttributes<SVGSVGElement>>;
|
|
25
|
+
|
|
26
|
+
export { Tooltip, TooltipArrow, TooltipContent, type TooltipContentProps, TooltipPortal, type TooltipProps, TooltipProvider, type TooltipSide, TooltipTrigger, tooltipContentVariants };
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var tooltip_exports = {};
|
|
31
|
+
__export(tooltip_exports, {
|
|
32
|
+
Tooltip: () => Tooltip,
|
|
33
|
+
TooltipArrow: () => TooltipArrow,
|
|
34
|
+
TooltipContent: () => TooltipContent,
|
|
35
|
+
TooltipPortal: () => TooltipPortal,
|
|
36
|
+
TooltipProvider: () => TooltipProvider,
|
|
37
|
+
TooltipTrigger: () => TooltipTrigger,
|
|
38
|
+
tooltipContentVariants: () => tooltipContentVariants
|
|
39
|
+
});
|
|
40
|
+
module.exports = __toCommonJS(tooltip_exports);
|
|
41
|
+
var React = __toESM(require("react"));
|
|
42
|
+
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
43
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
44
|
+
var import_utils = require("../../lib/utils");
|
|
45
|
+
const ANIMATION_CLASSES = {
|
|
46
|
+
top: "data-[state=delayed-open]:animate-tooltip-top-enter data-[state=instant-open]:animate-tooltip-top-enter data-[state=closed]:animate-tooltip-top-exit",
|
|
47
|
+
bottom: "data-[state=delayed-open]:animate-tooltip-bottom-enter data-[state=instant-open]:animate-tooltip-bottom-enter data-[state=closed]:animate-tooltip-bottom-exit",
|
|
48
|
+
left: "data-[state=delayed-open]:animate-tooltip-left-enter data-[state=instant-open]:animate-tooltip-left-enter data-[state=closed]:animate-tooltip-left-exit",
|
|
49
|
+
right: "data-[state=delayed-open]:animate-tooltip-right-enter data-[state=instant-open]:animate-tooltip-right-enter data-[state=closed]:animate-tooltip-right-exit"
|
|
50
|
+
};
|
|
51
|
+
const tooltipContentVariants = (0, import_class_variance_authority.cva)(
|
|
52
|
+
"z-tooltip rounded-lg font-normal select-none max-w-72",
|
|
53
|
+
{
|
|
54
|
+
variants: {
|
|
55
|
+
variant: {
|
|
56
|
+
default: "bg-foreground text-background shadow-lg",
|
|
57
|
+
inverted: "bg-background-paper/95 text-foreground border border-border-subtle shadow-lg backdrop-blur-sm"
|
|
58
|
+
},
|
|
59
|
+
size: {
|
|
60
|
+
sm: "text-xs px-2.5 py-1",
|
|
61
|
+
default: "text-sm px-3 py-1.5"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
defaultVariants: {
|
|
65
|
+
variant: "default",
|
|
66
|
+
size: "default"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
const ARROW_FILL = {
|
|
71
|
+
default: "fill-foreground drop-shadow-sm",
|
|
72
|
+
inverted: "fill-background-paper drop-shadow-sm"
|
|
73
|
+
};
|
|
74
|
+
const TooltipProvider = TooltipPrimitive.Provider;
|
|
75
|
+
function Tooltip({ delayDuration = 200, ...props }) {
|
|
76
|
+
return /* @__PURE__ */ React.createElement(TooltipPrimitive.Root, { delayDuration, ...props });
|
|
77
|
+
}
|
|
78
|
+
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
79
|
+
const TooltipPortal = TooltipPrimitive.Portal;
|
|
80
|
+
const TooltipContent = React.forwardRef(({ className, variant = "default", size, side = "top", sideOffset = 6, showArrow = true, children, ...props }, ref) => {
|
|
81
|
+
const resolvedSide = side;
|
|
82
|
+
return /* @__PURE__ */ React.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React.createElement(
|
|
83
|
+
TooltipPrimitive.Content,
|
|
84
|
+
{
|
|
85
|
+
ref,
|
|
86
|
+
side,
|
|
87
|
+
sideOffset,
|
|
88
|
+
className: (0, import_utils.cn)(
|
|
89
|
+
tooltipContentVariants({ variant, size }),
|
|
90
|
+
ANIMATION_CLASSES[resolvedSide],
|
|
91
|
+
className
|
|
92
|
+
),
|
|
93
|
+
...props
|
|
94
|
+
},
|
|
95
|
+
children,
|
|
96
|
+
showArrow && /* @__PURE__ */ React.createElement(
|
|
97
|
+
TooltipPrimitive.Arrow,
|
|
98
|
+
{
|
|
99
|
+
className: ARROW_FILL[variant || "default"],
|
|
100
|
+
width: 10,
|
|
101
|
+
height: 5
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
));
|
|
105
|
+
});
|
|
106
|
+
TooltipContent.displayName = "TooltipContent";
|
|
107
|
+
const TooltipArrow = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
108
|
+
TooltipPrimitive.Arrow,
|
|
109
|
+
{
|
|
110
|
+
ref,
|
|
111
|
+
className: (0, import_utils.cn)("fill-foreground", className),
|
|
112
|
+
width: 8,
|
|
113
|
+
height: 4,
|
|
114
|
+
...props
|
|
115
|
+
}
|
|
116
|
+
));
|
|
117
|
+
TooltipArrow.displayName = "TooltipArrow";
|
|
118
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
119
|
+
0 && (module.exports = {
|
|
120
|
+
Tooltip,
|
|
121
|
+
TooltipArrow,
|
|
122
|
+
TooltipContent,
|
|
123
|
+
TooltipPortal,
|
|
124
|
+
TooltipProvider,
|
|
125
|
+
TooltipTrigger,
|
|
126
|
+
tooltipContentVariants
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/tooltip.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\n// ─── Types ──────────────────────────────────────────────────\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left'\n\n// ─── Animation class mapping (static strings for Tailwind scanner) ──\nconst ANIMATION_CLASSES: Record<TooltipSide, string> = {\n top: 'data-[state=delayed-open]:animate-tooltip-top-enter data-[state=instant-open]:animate-tooltip-top-enter data-[state=closed]:animate-tooltip-top-exit',\n bottom: 'data-[state=delayed-open]:animate-tooltip-bottom-enter data-[state=instant-open]:animate-tooltip-bottom-enter data-[state=closed]:animate-tooltip-bottom-exit',\n left: 'data-[state=delayed-open]:animate-tooltip-left-enter data-[state=instant-open]:animate-tooltip-left-enter data-[state=closed]:animate-tooltip-left-exit',\n right: 'data-[state=delayed-open]:animate-tooltip-right-enter data-[state=instant-open]:animate-tooltip-right-enter data-[state=closed]:animate-tooltip-right-exit',\n}\n\n// ─── Content variants ────────────────────────────────────────\nconst tooltipContentVariants = cva(\n 'z-tooltip rounded-lg font-normal select-none max-w-72',\n {\n variants: {\n variant: {\n default: 'bg-foreground text-background shadow-lg',\n inverted: 'bg-background-paper/95 text-foreground border border-border-subtle shadow-lg backdrop-blur-sm',\n },\n size: {\n sm: 'text-xs px-2.5 py-1',\n default: 'text-sm px-3 py-1.5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\n// ─── Arrow fill mapping (matches content variant background) ──\nconst ARROW_FILL: Record<string, string> = {\n default: 'fill-foreground drop-shadow-sm',\n inverted: 'fill-background-paper drop-shadow-sm',\n}\n\n// ═══════════════════════════════════════════════════════════════\n// Tooltip\n// ═══════════════════════════════════════════════════════════════\n\n// ─── TooltipProvider ─────────────────────────────────────────\nconst TooltipProvider = TooltipPrimitive.Provider\n\n// ─── Tooltip (Root) — wrapper to keep our own component identity separate from Radix primitive ──\nexport interface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {\n /** Delay in ms before tooltip appears */\n delayDuration?: number\n}\n\nfunction Tooltip({ delayDuration = 200, ...props }: TooltipProps) {\n return <TooltipPrimitive.Root delayDuration={delayDuration} {...props} />\n}\n\n// ─── TooltipTrigger ──────────────────────────────────────────\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\n// ─── TooltipPortal ───────────────────────────────────────────\nconst TooltipPortal = TooltipPrimitive.Portal\n\n// ─── TooltipContent ──────────────────────────────────────────\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipContentVariants> {\n /** Show arrow pointing to trigger */\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, variant = 'default', size, side = 'top', sideOffset = 6, showArrow = true, children, ...props }, ref) => {\n const resolvedSide = side as TooltipSide\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n tooltipContentVariants({ variant, size }),\n ANIMATION_CLASSES[resolvedSide],\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && (\n <TooltipPrimitive.Arrow\n className={ARROW_FILL[variant || 'default']}\n width={10}\n height={5}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n})\nTooltipContent.displayName = 'TooltipContent'\n\n// ─── TooltipArrow (standalone, for manual placement outside Content) ──\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn('fill-foreground', className)}\n width={8}\n height={4}\n {...props}\n />\n))\nTooltipArrow.displayName = 'TooltipArrow'\n\n// ─── Exports ────────────────────────────────────────────────\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n TooltipPortal,\n TooltipProvider,\n tooltipContentVariants,\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,YAAuB;AACvB,uBAAkC;AAClC,sCAAuC;AACvC,mBAAmB;AAMnB,MAAM,oBAAiD;AAAA,EACrD,KAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AACV;AAGA,MAAM,6BAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAGA,MAAM,aAAqC;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AACZ;AAOA,MAAM,kBAAkB,iBAAiB;AAQzC,SAAS,QAAQ,EAAE,gBAAgB,KAAK,GAAG,MAAM,GAAiB;AAChE,SAAO,oCAAC,iBAAiB,MAAjB,EAAsB,eAA+B,GAAG,OAAO;AACzE;AAGA,MAAM,iBAAiB,iBAAiB;AAGxC,MAAM,gBAAgB,iBAAiB;AAUvC,MAAM,iBAAiB,MAAM,WAG3B,CAAC,EAAE,WAAW,UAAU,WAAW,MAAM,OAAO,OAAO,aAAa,GAAG,YAAY,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvH,QAAM,eAAe;AAErB,SACE,oCAAC,iBAAiB,QAAjB,MACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAW;AAAA,QACT,uBAAuB,EAAE,SAAS,KAAK,CAAC;AAAA,QACxC,kBAAkB,YAAY;AAAA,QAC9B;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,IAEH;AAAA,IACA,aACC;AAAA,MAAC,iBAAiB;AAAA,MAAjB;AAAA,QACC,WAAW,WAAW,WAAW,SAAS;AAAA,QAC1C,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,IACV;AAAA,EAEJ,CACF;AAEJ,CAAC;AACD,eAAe,cAAc;AAG7B,MAAM,eAAe,MAAM,WAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC,iBAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,eAAW,iBAAG,mBAAmB,SAAS;AAAA,IAC1C,OAAO;AAAA,IACP,QAAQ;AAAA,IACP,GAAG;AAAA;AACN,CACD;AACD,aAAa,cAAc;","names":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
const ANIMATION_CLASSES = {
|
|
7
|
+
top: "data-[state=delayed-open]:animate-tooltip-top-enter data-[state=instant-open]:animate-tooltip-top-enter data-[state=closed]:animate-tooltip-top-exit",
|
|
8
|
+
bottom: "data-[state=delayed-open]:animate-tooltip-bottom-enter data-[state=instant-open]:animate-tooltip-bottom-enter data-[state=closed]:animate-tooltip-bottom-exit",
|
|
9
|
+
left: "data-[state=delayed-open]:animate-tooltip-left-enter data-[state=instant-open]:animate-tooltip-left-enter data-[state=closed]:animate-tooltip-left-exit",
|
|
10
|
+
right: "data-[state=delayed-open]:animate-tooltip-right-enter data-[state=instant-open]:animate-tooltip-right-enter data-[state=closed]:animate-tooltip-right-exit"
|
|
11
|
+
};
|
|
12
|
+
const tooltipContentVariants = cva(
|
|
13
|
+
"z-tooltip rounded-lg font-normal select-none max-w-72",
|
|
14
|
+
{
|
|
15
|
+
variants: {
|
|
16
|
+
variant: {
|
|
17
|
+
default: "bg-foreground text-background shadow-lg",
|
|
18
|
+
inverted: "bg-background-paper/95 text-foreground border border-border-subtle shadow-lg backdrop-blur-sm"
|
|
19
|
+
},
|
|
20
|
+
size: {
|
|
21
|
+
sm: "text-xs px-2.5 py-1",
|
|
22
|
+
default: "text-sm px-3 py-1.5"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: "default",
|
|
27
|
+
size: "default"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
const ARROW_FILL = {
|
|
32
|
+
default: "fill-foreground drop-shadow-sm",
|
|
33
|
+
inverted: "fill-background-paper drop-shadow-sm"
|
|
34
|
+
};
|
|
35
|
+
const TooltipProvider = TooltipPrimitive.Provider;
|
|
36
|
+
function Tooltip({ delayDuration = 200, ...props }) {
|
|
37
|
+
return /* @__PURE__ */ React.createElement(TooltipPrimitive.Root, { delayDuration, ...props });
|
|
38
|
+
}
|
|
39
|
+
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
40
|
+
const TooltipPortal = TooltipPrimitive.Portal;
|
|
41
|
+
const TooltipContent = React.forwardRef(({ className, variant = "default", size, side = "top", sideOffset = 6, showArrow = true, children, ...props }, ref) => {
|
|
42
|
+
const resolvedSide = side;
|
|
43
|
+
return /* @__PURE__ */ React.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React.createElement(
|
|
44
|
+
TooltipPrimitive.Content,
|
|
45
|
+
{
|
|
46
|
+
ref,
|
|
47
|
+
side,
|
|
48
|
+
sideOffset,
|
|
49
|
+
className: cn(
|
|
50
|
+
tooltipContentVariants({ variant, size }),
|
|
51
|
+
ANIMATION_CLASSES[resolvedSide],
|
|
52
|
+
className
|
|
53
|
+
),
|
|
54
|
+
...props
|
|
55
|
+
},
|
|
56
|
+
children,
|
|
57
|
+
showArrow && /* @__PURE__ */ React.createElement(
|
|
58
|
+
TooltipPrimitive.Arrow,
|
|
59
|
+
{
|
|
60
|
+
className: ARROW_FILL[variant || "default"],
|
|
61
|
+
width: 10,
|
|
62
|
+
height: 5
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
));
|
|
66
|
+
});
|
|
67
|
+
TooltipContent.displayName = "TooltipContent";
|
|
68
|
+
const TooltipArrow = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
|
|
69
|
+
TooltipPrimitive.Arrow,
|
|
70
|
+
{
|
|
71
|
+
ref,
|
|
72
|
+
className: cn("fill-foreground", className),
|
|
73
|
+
width: 8,
|
|
74
|
+
height: 4,
|
|
75
|
+
...props
|
|
76
|
+
}
|
|
77
|
+
));
|
|
78
|
+
TooltipArrow.displayName = "TooltipArrow";
|
|
79
|
+
export {
|
|
80
|
+
Tooltip,
|
|
81
|
+
TooltipArrow,
|
|
82
|
+
TooltipContent,
|
|
83
|
+
TooltipPortal,
|
|
84
|
+
TooltipProvider,
|
|
85
|
+
TooltipTrigger,
|
|
86
|
+
tooltipContentVariants
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=tooltip.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/tooltip.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\n// ─── Types ──────────────────────────────────────────────────\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left'\n\n// ─── Animation class mapping (static strings for Tailwind scanner) ──\nconst ANIMATION_CLASSES: Record<TooltipSide, string> = {\n top: 'data-[state=delayed-open]:animate-tooltip-top-enter data-[state=instant-open]:animate-tooltip-top-enter data-[state=closed]:animate-tooltip-top-exit',\n bottom: 'data-[state=delayed-open]:animate-tooltip-bottom-enter data-[state=instant-open]:animate-tooltip-bottom-enter data-[state=closed]:animate-tooltip-bottom-exit',\n left: 'data-[state=delayed-open]:animate-tooltip-left-enter data-[state=instant-open]:animate-tooltip-left-enter data-[state=closed]:animate-tooltip-left-exit',\n right: 'data-[state=delayed-open]:animate-tooltip-right-enter data-[state=instant-open]:animate-tooltip-right-enter data-[state=closed]:animate-tooltip-right-exit',\n}\n\n// ─── Content variants ────────────────────────────────────────\nconst tooltipContentVariants = cva(\n 'z-tooltip rounded-lg font-normal select-none max-w-72',\n {\n variants: {\n variant: {\n default: 'bg-foreground text-background shadow-lg',\n inverted: 'bg-background-paper/95 text-foreground border border-border-subtle shadow-lg backdrop-blur-sm',\n },\n size: {\n sm: 'text-xs px-2.5 py-1',\n default: 'text-sm px-3 py-1.5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\n// ─── Arrow fill mapping (matches content variant background) ──\nconst ARROW_FILL: Record<string, string> = {\n default: 'fill-foreground drop-shadow-sm',\n inverted: 'fill-background-paper drop-shadow-sm',\n}\n\n// ═══════════════════════════════════════════════════════════════\n// Tooltip\n// ═══════════════════════════════════════════════════════════════\n\n// ─── TooltipProvider ─────────────────────────────────────────\nconst TooltipProvider = TooltipPrimitive.Provider\n\n// ─── Tooltip (Root) — wrapper to keep our own component identity separate from Radix primitive ──\nexport interface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {\n /** Delay in ms before tooltip appears */\n delayDuration?: number\n}\n\nfunction Tooltip({ delayDuration = 200, ...props }: TooltipProps) {\n return <TooltipPrimitive.Root delayDuration={delayDuration} {...props} />\n}\n\n// ─── TooltipTrigger ──────────────────────────────────────────\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\n// ─── TooltipPortal ───────────────────────────────────────────\nconst TooltipPortal = TooltipPrimitive.Portal\n\n// ─── TooltipContent ──────────────────────────────────────────\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipContentVariants> {\n /** Show arrow pointing to trigger */\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, variant = 'default', size, side = 'top', sideOffset = 6, showArrow = true, children, ...props }, ref) => {\n const resolvedSide = side as TooltipSide\n\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n tooltipContentVariants({ variant, size }),\n ANIMATION_CLASSES[resolvedSide],\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && (\n <TooltipPrimitive.Arrow\n className={ARROW_FILL[variant || 'default']}\n width={10}\n height={5}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n})\nTooltipContent.displayName = 'TooltipContent'\n\n// ─── TooltipArrow (standalone, for manual placement outside Content) ──\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn('fill-foreground', className)}\n width={8}\n height={4}\n {...props}\n />\n))\nTooltipArrow.displayName = 'TooltipArrow'\n\n// ─── Exports ────────────────────────────────────────────────\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n TooltipPortal,\n TooltipProvider,\n tooltipContentVariants,\n}\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,YAAY,sBAAsB;AAClC,SAAS,WAA8B;AACvC,SAAS,UAAU;AAMnB,MAAM,oBAAiD;AAAA,EACrD,KAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAQ;AAAA,EACR,OAAQ;AACV;AAGA,MAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,UAAU;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAGA,MAAM,aAAqC;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AACZ;AAOA,MAAM,kBAAkB,iBAAiB;AAQzC,SAAS,QAAQ,EAAE,gBAAgB,KAAK,GAAG,MAAM,GAAiB;AAChE,SAAO,oCAAC,iBAAiB,MAAjB,EAAsB,eAA+B,GAAG,OAAO;AACzE;AAGA,MAAM,iBAAiB,iBAAiB;AAGxC,MAAM,gBAAgB,iBAAiB;AAUvC,MAAM,iBAAiB,MAAM,WAG3B,CAAC,EAAE,WAAW,UAAU,WAAW,MAAM,OAAO,OAAO,aAAa,GAAG,YAAY,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvH,QAAM,eAAe;AAErB,SACE,oCAAC,iBAAiB,QAAjB,MACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT,uBAAuB,EAAE,SAAS,KAAK,CAAC;AAAA,QACxC,kBAAkB,YAAY;AAAA,QAC9B;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,IAEH;AAAA,IACA,aACC;AAAA,MAAC,iBAAiB;AAAA,MAAjB;AAAA,QACC,WAAW,WAAW,WAAW,SAAS;AAAA,QAC1C,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,IACV;AAAA,EAEJ,CACF;AAEJ,CAAC;AACD,eAAe,cAAc;AAG7B,MAAM,eAAe,MAAM,WAGzB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC,iBAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,mBAAmB,SAAS;AAAA,IAC1C,OAAO;AAAA,IACP,QAAQ;AAAA,IACP,GAAG;AAAA;AACN,CACD;AACD,aAAa,cAAc;","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
declare const ACCORDION_NAMES: readonly ["Accordion", "AccordionContent", "AccordionItem", "AccordionTrigger"];
|
|
2
|
+
declare const ALERT_NAMES: readonly ["Alert", "AlertDescription", "AlertTitle"];
|
|
3
|
+
declare const AVATAR_NAMES: readonly ["Avatar", "AvatarFallback", "AvatarGroup", "AvatarImage"];
|
|
4
|
+
declare const BADGE_NAMES: readonly ["Badge"];
|
|
5
|
+
declare const BREADCRUMB_NAMES: readonly ["Breadcrumb", "BreadcrumbEllipsis", "BreadcrumbItem", "BreadcrumbLink", "BreadcrumbList", "BreadcrumbPage", "BreadcrumbSeparator"];
|
|
6
|
+
declare const BUTTON_NAMES: readonly ["Button"];
|
|
7
|
+
declare const BUTTON_GROUP_NAMES: readonly ["ButtonGroup"];
|
|
8
|
+
declare const CARD_NAMES: readonly ["Card", "CardAction", "CardContent", "CardDescription", "CardFooter", "CardHeader", "CardImage", "CardTitle"];
|
|
9
|
+
declare const CHECKBOX_NAMES: readonly ["Checkbox"];
|
|
10
|
+
declare const DIVIDER_NAMES: readonly ["Divider"];
|
|
11
|
+
declare const DRAWER_NAMES: readonly ["Drawer", "DrawerBody", "DrawerClose", "DrawerContent", "DrawerDescription", "DrawerFooter", "DrawerHeader", "DrawerOverlay", "DrawerPortal", "DrawerTitle", "DrawerTrigger"];
|
|
12
|
+
declare const DROPDOWN_NAMES: readonly ["DropdownMenu", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuSeparator", "DropdownMenuShortcut", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger"];
|
|
13
|
+
declare const FIELD_NAMES: readonly ["Field", "FieldCharCount", "FieldError", "FieldLabel"];
|
|
14
|
+
declare const ICON_BUTTON_NAMES: readonly ["IconButton"];
|
|
15
|
+
declare const INPUT_NAMES: readonly ["Input"];
|
|
16
|
+
declare const METRIC_CARD_NAMES: readonly ["MetricCard", "MetricCardDescription", "MetricCardHeader", "MetricCardSymbol", "MetricCardTitle", "MetricCardTrend", "MetricCardValue"];
|
|
17
|
+
declare const MODAL_NAMES: readonly ["Modal", "ModalBody", "ModalClose", "ModalContent", "ModalDescription", "ModalFooter", "ModalHeader", "ModalOverlay", "ModalPortal", "ModalTitle", "ModalTrigger"];
|
|
18
|
+
declare const ALERT_MODAL_NAMES: readonly ["AlertModal", "AlertModalAction", "AlertModalBody", "AlertModalCancel", "AlertModalContent", "AlertModalDescription", "AlertModalFooter", "AlertModalHeader", "AlertModalOverlay", "AlertModalPortal", "AlertModalTitle", "AlertModalTrigger"];
|
|
19
|
+
declare const NAVIGATION_MENU_NAMES: readonly ["NavigationMenu", "NavigationMenuContent", "NavigationMenuGroup", "NavigationMenuIndicator", "NavigationMenuItem", "NavigationMenuLink", "NavigationMenuList", "NavigationMenuTrigger", "NavigationMenuViewport"];
|
|
20
|
+
declare const PAGINATION_NAMES: readonly ["Pagination", "PaginationContent", "PaginationEllipsis", "PaginationFirst", "PaginationItem", "PaginationItems", "PaginationLast", "PaginationLink", "PaginationNext", "PaginationPrevious"];
|
|
21
|
+
declare const POPOVER_NAMES: readonly ["Popover", "PopoverAnchor", "PopoverArrow", "PopoverClose", "PopoverContent", "PopoverPortal", "PopoverTrigger"];
|
|
22
|
+
declare const PROGRESS_NAMES: readonly ["Progress"];
|
|
23
|
+
declare const RADIO_GROUP_NAMES: readonly ["RadioGroup", "RadioGroupItem"];
|
|
24
|
+
declare const SEGMENTED_NAMES: readonly ["Segmented", "SegmentedItem"];
|
|
25
|
+
declare const SELECT_NAMES: readonly ["Select", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectSeparator", "SelectTrigger", "SelectValue"];
|
|
26
|
+
declare const SKELETON_NAMES: readonly ["Skeleton"];
|
|
27
|
+
declare const SLIDER_NAMES: readonly ["Slider"];
|
|
28
|
+
declare const SPINNER_NAMES: readonly ["Spinner"];
|
|
29
|
+
declare const SWITCH_NAMES: readonly ["Switch"];
|
|
30
|
+
declare const TABLE_NAMES: readonly ["Table", "TableBody", "TableCaption", "TableCell", "TableFooter", "TableHead", "TableHeader", "TableRow"];
|
|
31
|
+
declare const TABS_NAMES: readonly ["Tabs", "TabsContent", "TabsList", "TabsTrigger"];
|
|
32
|
+
declare const TEXTAREA_NAMES: readonly ["Textarea"];
|
|
33
|
+
declare const TOAST_NAMES: readonly ["Toaster"];
|
|
34
|
+
declare const TOGGLE_NAMES: readonly ["Toggle"];
|
|
35
|
+
declare const TOGGLE_GROUP_NAMES: readonly ["ToggleGroup", "ToggleGroupItem"];
|
|
36
|
+
declare const TOOLTIP_NAMES: readonly ["Tooltip", "TooltipArrow", "TooltipContent", "TooltipPortal", "TooltipProvider", "TooltipTrigger"];
|
|
37
|
+
declare const CHART_NAMES: readonly ["Chart", "ChartArea", "ChartBar", "ChartLegend", "ChartLegendContent", "ChartLine", "ChartPie", "ChartStyle", "ChartTooltip", "ChartTooltipContent", "ChartXAxis", "ChartYAxis"];
|
|
38
|
+
declare const RECHARTS_NAMES: readonly ["AreaChart", "BarChart", "CartesianGrid", "Cell", "LabelList", "LineChart", "Pie", "PieChart"];
|
|
39
|
+
declare const REACT_NAMES: readonly ["Accordion", "AccordionContent", "AccordionItem", "AccordionTrigger", "Alert", "AlertDescription", "AlertTitle", "Avatar", "AvatarFallback", "AvatarGroup", "AvatarImage", "Badge", "Breadcrumb", "BreadcrumbEllipsis", "BreadcrumbItem", "BreadcrumbLink", "BreadcrumbList", "BreadcrumbPage", "BreadcrumbSeparator", "Button", "ButtonGroup", "Card", "CardAction", "CardContent", "CardDescription", "CardFooter", "CardHeader", "CardImage", "CardTitle", "Checkbox", "Divider", "Drawer", "DrawerBody", "DrawerClose", "DrawerContent", "DrawerDescription", "DrawerFooter", "DrawerHeader", "DrawerOverlay", "DrawerPortal", "DrawerTitle", "DrawerTrigger", "DropdownMenu", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuSeparator", "DropdownMenuShortcut", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger", "Field", "FieldCharCount", "FieldError", "FieldLabel", "IconButton", "Input", "MetricCard", "MetricCardDescription", "MetricCardHeader", "MetricCardSymbol", "MetricCardTitle", "MetricCardTrend", "MetricCardValue", "Modal", "ModalBody", "ModalClose", "ModalContent", "ModalDescription", "ModalFooter", "ModalHeader", "ModalOverlay", "ModalPortal", "ModalTitle", "ModalTrigger", "AlertModal", "AlertModalAction", "AlertModalBody", "AlertModalCancel", "AlertModalContent", "AlertModalDescription", "AlertModalFooter", "AlertModalHeader", "AlertModalOverlay", "AlertModalPortal", "AlertModalTitle", "AlertModalTrigger", "NavigationMenu", "NavigationMenuContent", "NavigationMenuGroup", "NavigationMenuIndicator", "NavigationMenuItem", "NavigationMenuLink", "NavigationMenuList", "NavigationMenuTrigger", "NavigationMenuViewport", "Pagination", "PaginationContent", "PaginationEllipsis", "PaginationFirst", "PaginationItem", "PaginationItems", "PaginationLast", "PaginationLink", "PaginationNext", "PaginationPrevious", "Popover", "PopoverAnchor", "PopoverArrow", "PopoverClose", "PopoverContent", "PopoverPortal", "PopoverTrigger", "Progress", "RadioGroup", "RadioGroupItem", "Segmented", "SegmentedItem", "Select", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectSeparator", "SelectTrigger", "SelectValue", "Skeleton", "Slider", "Spinner", "Switch", "Table", "TableBody", "TableCaption", "TableCell", "TableFooter", "TableHead", "TableHeader", "TableRow", "Tabs", "TabsContent", "TabsList", "TabsTrigger", "Textarea", "Toaster", "Toggle", "ToggleGroup", "ToggleGroupItem", "Tooltip", "TooltipArrow", "TooltipContent", "TooltipPortal", "TooltipProvider", "TooltipTrigger"];
|
|
40
|
+
declare function extractUsedNames(jsxBody: string, namePool: readonly string[]): string[];
|
|
41
|
+
interface BuildImportOptions {
|
|
42
|
+
/** Break into multi-line `import { ... }` when >3 names (default: true). */
|
|
43
|
+
multiline?: boolean;
|
|
44
|
+
}
|
|
45
|
+
declare function buildImport(names: string[], pkg: string, opts?: BuildImportOptions): string;
|
|
46
|
+
/**
|
|
47
|
+
* Derive a single `import { ... } from pkg` from the JSX body.
|
|
48
|
+
*
|
|
49
|
+
* Usage — one per branch inside generateCode:
|
|
50
|
+
* ```ts
|
|
51
|
+
* const jsxBody = `<Card><CardHeader>...</CardHeader></Card>`
|
|
52
|
+
* return `${importUsed(jsxBody, CARD_NAMES, pkg)}\n\n${jsxBody}`
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* **Never union pools across branches** — each branch's jsxBody must feed
|
|
56
|
+
* its own import derivation to guarantee structural 1:1.
|
|
57
|
+
*/
|
|
58
|
+
declare function importUsed(jsxBody: string, namePool: readonly string[], pkg: string, opts?: BuildImportOptions): string;
|
|
59
|
+
|
|
60
|
+
export { ACCORDION_NAMES, ALERT_MODAL_NAMES, ALERT_NAMES, AVATAR_NAMES, BADGE_NAMES, BREADCRUMB_NAMES, BUTTON_GROUP_NAMES, BUTTON_NAMES, type BuildImportOptions, CARD_NAMES, CHART_NAMES, CHECKBOX_NAMES, DIVIDER_NAMES, DRAWER_NAMES, DROPDOWN_NAMES, FIELD_NAMES, ICON_BUTTON_NAMES, INPUT_NAMES, METRIC_CARD_NAMES, MODAL_NAMES, NAVIGATION_MENU_NAMES, PAGINATION_NAMES, POPOVER_NAMES, PROGRESS_NAMES, RADIO_GROUP_NAMES, REACT_NAMES, RECHARTS_NAMES, SEGMENTED_NAMES, SELECT_NAMES, SKELETON_NAMES, SLIDER_NAMES, SPINNER_NAMES, SWITCH_NAMES, TABLE_NAMES, TABS_NAMES, TEXTAREA_NAMES, TOAST_NAMES, TOGGLE_GROUP_NAMES, TOGGLE_NAMES, TOOLTIP_NAMES, buildImport, extractUsedNames, importUsed };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
declare const ACCORDION_NAMES: readonly ["Accordion", "AccordionContent", "AccordionItem", "AccordionTrigger"];
|
|
2
|
+
declare const ALERT_NAMES: readonly ["Alert", "AlertDescription", "AlertTitle"];
|
|
3
|
+
declare const AVATAR_NAMES: readonly ["Avatar", "AvatarFallback", "AvatarGroup", "AvatarImage"];
|
|
4
|
+
declare const BADGE_NAMES: readonly ["Badge"];
|
|
5
|
+
declare const BREADCRUMB_NAMES: readonly ["Breadcrumb", "BreadcrumbEllipsis", "BreadcrumbItem", "BreadcrumbLink", "BreadcrumbList", "BreadcrumbPage", "BreadcrumbSeparator"];
|
|
6
|
+
declare const BUTTON_NAMES: readonly ["Button"];
|
|
7
|
+
declare const BUTTON_GROUP_NAMES: readonly ["ButtonGroup"];
|
|
8
|
+
declare const CARD_NAMES: readonly ["Card", "CardAction", "CardContent", "CardDescription", "CardFooter", "CardHeader", "CardImage", "CardTitle"];
|
|
9
|
+
declare const CHECKBOX_NAMES: readonly ["Checkbox"];
|
|
10
|
+
declare const DIVIDER_NAMES: readonly ["Divider"];
|
|
11
|
+
declare const DRAWER_NAMES: readonly ["Drawer", "DrawerBody", "DrawerClose", "DrawerContent", "DrawerDescription", "DrawerFooter", "DrawerHeader", "DrawerOverlay", "DrawerPortal", "DrawerTitle", "DrawerTrigger"];
|
|
12
|
+
declare const DROPDOWN_NAMES: readonly ["DropdownMenu", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuSeparator", "DropdownMenuShortcut", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger"];
|
|
13
|
+
declare const FIELD_NAMES: readonly ["Field", "FieldCharCount", "FieldError", "FieldLabel"];
|
|
14
|
+
declare const ICON_BUTTON_NAMES: readonly ["IconButton"];
|
|
15
|
+
declare const INPUT_NAMES: readonly ["Input"];
|
|
16
|
+
declare const METRIC_CARD_NAMES: readonly ["MetricCard", "MetricCardDescription", "MetricCardHeader", "MetricCardSymbol", "MetricCardTitle", "MetricCardTrend", "MetricCardValue"];
|
|
17
|
+
declare const MODAL_NAMES: readonly ["Modal", "ModalBody", "ModalClose", "ModalContent", "ModalDescription", "ModalFooter", "ModalHeader", "ModalOverlay", "ModalPortal", "ModalTitle", "ModalTrigger"];
|
|
18
|
+
declare const ALERT_MODAL_NAMES: readonly ["AlertModal", "AlertModalAction", "AlertModalBody", "AlertModalCancel", "AlertModalContent", "AlertModalDescription", "AlertModalFooter", "AlertModalHeader", "AlertModalOverlay", "AlertModalPortal", "AlertModalTitle", "AlertModalTrigger"];
|
|
19
|
+
declare const NAVIGATION_MENU_NAMES: readonly ["NavigationMenu", "NavigationMenuContent", "NavigationMenuGroup", "NavigationMenuIndicator", "NavigationMenuItem", "NavigationMenuLink", "NavigationMenuList", "NavigationMenuTrigger", "NavigationMenuViewport"];
|
|
20
|
+
declare const PAGINATION_NAMES: readonly ["Pagination", "PaginationContent", "PaginationEllipsis", "PaginationFirst", "PaginationItem", "PaginationItems", "PaginationLast", "PaginationLink", "PaginationNext", "PaginationPrevious"];
|
|
21
|
+
declare const POPOVER_NAMES: readonly ["Popover", "PopoverAnchor", "PopoverArrow", "PopoverClose", "PopoverContent", "PopoverPortal", "PopoverTrigger"];
|
|
22
|
+
declare const PROGRESS_NAMES: readonly ["Progress"];
|
|
23
|
+
declare const RADIO_GROUP_NAMES: readonly ["RadioGroup", "RadioGroupItem"];
|
|
24
|
+
declare const SEGMENTED_NAMES: readonly ["Segmented", "SegmentedItem"];
|
|
25
|
+
declare const SELECT_NAMES: readonly ["Select", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectSeparator", "SelectTrigger", "SelectValue"];
|
|
26
|
+
declare const SKELETON_NAMES: readonly ["Skeleton"];
|
|
27
|
+
declare const SLIDER_NAMES: readonly ["Slider"];
|
|
28
|
+
declare const SPINNER_NAMES: readonly ["Spinner"];
|
|
29
|
+
declare const SWITCH_NAMES: readonly ["Switch"];
|
|
30
|
+
declare const TABLE_NAMES: readonly ["Table", "TableBody", "TableCaption", "TableCell", "TableFooter", "TableHead", "TableHeader", "TableRow"];
|
|
31
|
+
declare const TABS_NAMES: readonly ["Tabs", "TabsContent", "TabsList", "TabsTrigger"];
|
|
32
|
+
declare const TEXTAREA_NAMES: readonly ["Textarea"];
|
|
33
|
+
declare const TOAST_NAMES: readonly ["Toaster"];
|
|
34
|
+
declare const TOGGLE_NAMES: readonly ["Toggle"];
|
|
35
|
+
declare const TOGGLE_GROUP_NAMES: readonly ["ToggleGroup", "ToggleGroupItem"];
|
|
36
|
+
declare const TOOLTIP_NAMES: readonly ["Tooltip", "TooltipArrow", "TooltipContent", "TooltipPortal", "TooltipProvider", "TooltipTrigger"];
|
|
37
|
+
declare const CHART_NAMES: readonly ["Chart", "ChartArea", "ChartBar", "ChartLegend", "ChartLegendContent", "ChartLine", "ChartPie", "ChartStyle", "ChartTooltip", "ChartTooltipContent", "ChartXAxis", "ChartYAxis"];
|
|
38
|
+
declare const RECHARTS_NAMES: readonly ["AreaChart", "BarChart", "CartesianGrid", "Cell", "LabelList", "LineChart", "Pie", "PieChart"];
|
|
39
|
+
declare const REACT_NAMES: readonly ["Accordion", "AccordionContent", "AccordionItem", "AccordionTrigger", "Alert", "AlertDescription", "AlertTitle", "Avatar", "AvatarFallback", "AvatarGroup", "AvatarImage", "Badge", "Breadcrumb", "BreadcrumbEllipsis", "BreadcrumbItem", "BreadcrumbLink", "BreadcrumbList", "BreadcrumbPage", "BreadcrumbSeparator", "Button", "ButtonGroup", "Card", "CardAction", "CardContent", "CardDescription", "CardFooter", "CardHeader", "CardImage", "CardTitle", "Checkbox", "Divider", "Drawer", "DrawerBody", "DrawerClose", "DrawerContent", "DrawerDescription", "DrawerFooter", "DrawerHeader", "DrawerOverlay", "DrawerPortal", "DrawerTitle", "DrawerTrigger", "DropdownMenu", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuSeparator", "DropdownMenuShortcut", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger", "Field", "FieldCharCount", "FieldError", "FieldLabel", "IconButton", "Input", "MetricCard", "MetricCardDescription", "MetricCardHeader", "MetricCardSymbol", "MetricCardTitle", "MetricCardTrend", "MetricCardValue", "Modal", "ModalBody", "ModalClose", "ModalContent", "ModalDescription", "ModalFooter", "ModalHeader", "ModalOverlay", "ModalPortal", "ModalTitle", "ModalTrigger", "AlertModal", "AlertModalAction", "AlertModalBody", "AlertModalCancel", "AlertModalContent", "AlertModalDescription", "AlertModalFooter", "AlertModalHeader", "AlertModalOverlay", "AlertModalPortal", "AlertModalTitle", "AlertModalTrigger", "NavigationMenu", "NavigationMenuContent", "NavigationMenuGroup", "NavigationMenuIndicator", "NavigationMenuItem", "NavigationMenuLink", "NavigationMenuList", "NavigationMenuTrigger", "NavigationMenuViewport", "Pagination", "PaginationContent", "PaginationEllipsis", "PaginationFirst", "PaginationItem", "PaginationItems", "PaginationLast", "PaginationLink", "PaginationNext", "PaginationPrevious", "Popover", "PopoverAnchor", "PopoverArrow", "PopoverClose", "PopoverContent", "PopoverPortal", "PopoverTrigger", "Progress", "RadioGroup", "RadioGroupItem", "Segmented", "SegmentedItem", "Select", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectSeparator", "SelectTrigger", "SelectValue", "Skeleton", "Slider", "Spinner", "Switch", "Table", "TableBody", "TableCaption", "TableCell", "TableFooter", "TableHead", "TableHeader", "TableRow", "Tabs", "TabsContent", "TabsList", "TabsTrigger", "Textarea", "Toaster", "Toggle", "ToggleGroup", "ToggleGroupItem", "Tooltip", "TooltipArrow", "TooltipContent", "TooltipPortal", "TooltipProvider", "TooltipTrigger"];
|
|
40
|
+
declare function extractUsedNames(jsxBody: string, namePool: readonly string[]): string[];
|
|
41
|
+
interface BuildImportOptions {
|
|
42
|
+
/** Break into multi-line `import { ... }` when >3 names (default: true). */
|
|
43
|
+
multiline?: boolean;
|
|
44
|
+
}
|
|
45
|
+
declare function buildImport(names: string[], pkg: string, opts?: BuildImportOptions): string;
|
|
46
|
+
/**
|
|
47
|
+
* Derive a single `import { ... } from pkg` from the JSX body.
|
|
48
|
+
*
|
|
49
|
+
* Usage — one per branch inside generateCode:
|
|
50
|
+
* ```ts
|
|
51
|
+
* const jsxBody = `<Card><CardHeader>...</CardHeader></Card>`
|
|
52
|
+
* return `${importUsed(jsxBody, CARD_NAMES, pkg)}\n\n${jsxBody}`
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* **Never union pools across branches** — each branch's jsxBody must feed
|
|
56
|
+
* its own import derivation to guarantee structural 1:1.
|
|
57
|
+
*/
|
|
58
|
+
declare function importUsed(jsxBody: string, namePool: readonly string[], pkg: string, opts?: BuildImportOptions): string;
|
|
59
|
+
|
|
60
|
+
export { ACCORDION_NAMES, ALERT_MODAL_NAMES, ALERT_NAMES, AVATAR_NAMES, BADGE_NAMES, BREADCRUMB_NAMES, BUTTON_GROUP_NAMES, BUTTON_NAMES, type BuildImportOptions, CARD_NAMES, CHART_NAMES, CHECKBOX_NAMES, DIVIDER_NAMES, DRAWER_NAMES, DROPDOWN_NAMES, FIELD_NAMES, ICON_BUTTON_NAMES, INPUT_NAMES, METRIC_CARD_NAMES, MODAL_NAMES, NAVIGATION_MENU_NAMES, PAGINATION_NAMES, POPOVER_NAMES, PROGRESS_NAMES, RADIO_GROUP_NAMES, REACT_NAMES, RECHARTS_NAMES, SEGMENTED_NAMES, SELECT_NAMES, SKELETON_NAMES, SLIDER_NAMES, SPINNER_NAMES, SWITCH_NAMES, TABLE_NAMES, TABS_NAMES, TEXTAREA_NAMES, TOAST_NAMES, TOGGLE_GROUP_NAMES, TOGGLE_NAMES, TOOLTIP_NAMES, buildImport, extractUsedNames, importUsed };
|