@caffeinebounce/ui 0.62.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/dist/FinancialStatementTable-BNUrdTU4.d.cts +249 -0
  4. package/dist/FinancialStatementTable-BNUrdTU4.d.ts +249 -0
  5. package/dist/NewsletterSignup-BPreFi5W.d.cts +37 -0
  6. package/dist/NewsletterSignup-BPreFi5W.d.ts +37 -0
  7. package/dist/TestimonialsSection-DtPu2OeR.d.ts +736 -0
  8. package/dist/TestimonialsSection-z-yotRfv.d.cts +736 -0
  9. package/dist/UnifiedTableControls-CG299y9h.d.ts +1233 -0
  10. package/dist/UnifiedTableControls-CIjRpNhy.d.cts +1233 -0
  11. package/dist/blog.d.cts +99 -0
  12. package/dist/blog.d.ts +99 -0
  13. package/dist/blog.js +292 -0
  14. package/dist/blog.mjs +279 -0
  15. package/dist/button-BHnoRUkF.d.cts +34 -0
  16. package/dist/button-BHnoRUkF.d.ts +34 -0
  17. package/dist/charts.d.cts +80 -0
  18. package/dist/charts.d.ts +80 -0
  19. package/dist/charts.js +19 -0
  20. package/dist/charts.mjs +2 -0
  21. package/dist/chunk-33JR5SYE.js +44 -0
  22. package/dist/chunk-3NDB4YPC.js +247 -0
  23. package/dist/chunk-5RW4PYZ6.js +1504 -0
  24. package/dist/chunk-5THF4YP6.mjs +155 -0
  25. package/dist/chunk-6BUBNZPG.mjs +164 -0
  26. package/dist/chunk-6DVWMJ3H.mjs +7029 -0
  27. package/dist/chunk-6TGV2DNP.js +120 -0
  28. package/dist/chunk-72JGQ7IJ.mjs +1498 -0
  29. package/dist/chunk-7DHKQODW.mjs +2932 -0
  30. package/dist/chunk-7IKHZKAC.js +160 -0
  31. package/dist/chunk-ADIDI7AJ.js +11 -0
  32. package/dist/chunk-BFWX5GJZ.mjs +940 -0
  33. package/dist/chunk-BMFQG6RA.mjs +5537 -0
  34. package/dist/chunk-C4UT5V3P.js +65 -0
  35. package/dist/chunk-CC4KUIKC.js +2004 -0
  36. package/dist/chunk-D3QXPL47.mjs +1814 -0
  37. package/dist/chunk-DQWHYBV2.js +36 -0
  38. package/dist/chunk-E42B4GSB.js +993 -0
  39. package/dist/chunk-ESZ7CBA2.js +1007 -0
  40. package/dist/chunk-EYJJQVV4.js +111 -0
  41. package/dist/chunk-FRRS2YZH.mjs +129 -0
  42. package/dist/chunk-G5TQWWQA.mjs +37 -0
  43. package/dist/chunk-GAIQJCAZ.js +5612 -0
  44. package/dist/chunk-GMBGWOCR.mjs +48 -0
  45. package/dist/chunk-GUSTCU2W.mjs +105 -0
  46. package/dist/chunk-HBLKVQIQ.mjs +23 -0
  47. package/dist/chunk-HMAMMC72.js +26 -0
  48. package/dist/chunk-IMKLN273.mjs +9 -0
  49. package/dist/chunk-J6OLBSZR.js +250 -0
  50. package/dist/chunk-JAE45W2T.js +28 -0
  51. package/dist/chunk-JORVSG52.js +606 -0
  52. package/dist/chunk-KB7UXIQZ.mjs +984 -0
  53. package/dist/chunk-KGGQ5NZV.js +186 -0
  54. package/dist/chunk-KHCC5UKW.mjs +22 -0
  55. package/dist/chunk-KRRIRS6A.mjs +1945 -0
  56. package/dist/chunk-LQCVRWVF.js +48 -0
  57. package/dist/chunk-MHZXUOGN.mjs +168 -0
  58. package/dist/chunk-MPZFPU4X.js +349 -0
  59. package/dist/chunk-MVYRNJA6.js +74 -0
  60. package/dist/chunk-N6AFNFZR.mjs +565 -0
  61. package/dist/chunk-OFQLWSUR.mjs +214 -0
  62. package/dist/chunk-OLAAXLXY.mjs +219 -0
  63. package/dist/chunk-OZZWDIOY.js +1859 -0
  64. package/dist/chunk-PZRI43EZ.js +111 -0
  65. package/dist/chunk-Q256HRYD.js +176 -0
  66. package/dist/chunk-Q52ZEL62.mjs +223 -0
  67. package/dist/chunk-R26Y7LGJ.js +142 -0
  68. package/dist/chunk-RBUYW6QQ.js +39 -0
  69. package/dist/chunk-RVEFPVZF.mjs +43 -0
  70. package/dist/chunk-SORWLKOK.js +96 -0
  71. package/dist/chunk-STEP6C4C.mjs +33 -0
  72. package/dist/chunk-T5R6HUDG.mjs +22 -0
  73. package/dist/chunk-T6ZBA6VJ.js +7109 -0
  74. package/dist/chunk-UM7WMXIU.js +2995 -0
  75. package/dist/chunk-VBD4Q5LL.mjs +117 -0
  76. package/dist/chunk-WOITB4JL.js +195 -0
  77. package/dist/chunk-YKZEKJMZ.mjs +71 -0
  78. package/dist/chunk-YL7RZRHM.mjs +103 -0
  79. package/dist/chunk-YSLD2HLP.mjs +346 -0
  80. package/dist/chunk-ZFLZA7UP.mjs +140 -0
  81. package/dist/chunk-ZKUIUE7W.mjs +26 -0
  82. package/dist/chunk-ZOA7B32D.js +248 -0
  83. package/dist/data-table.d.cts +46 -0
  84. package/dist/data-table.d.ts +46 -0
  85. package/dist/data-table.js +270 -0
  86. package/dist/data-table.mjs +13 -0
  87. package/dist/editor.d.cts +89 -0
  88. package/dist/editor.d.ts +89 -0
  89. package/dist/editor.js +10 -0
  90. package/dist/editor.mjs +1 -0
  91. package/dist/forms.d.cts +142 -0
  92. package/dist/forms.d.ts +142 -0
  93. package/dist/forms.js +24 -0
  94. package/dist/forms.mjs +11 -0
  95. package/dist/hooks-8ORd7T1A.d.cts +751 -0
  96. package/dist/hooks-B2jU1GVT.d.ts +751 -0
  97. package/dist/hooks.d.cts +6 -0
  98. package/dist/hooks.d.ts +6 -0
  99. package/dist/hooks.js +99 -0
  100. package/dist/hooks.mjs +10 -0
  101. package/dist/index.d.cts +3141 -0
  102. package/dist/index.d.ts +3141 -0
  103. package/dist/index.js +7332 -0
  104. package/dist/index.mjs +5876 -0
  105. package/dist/layouts-DPfDDF53.d.cts +1001 -0
  106. package/dist/layouts-DPfDDF53.d.ts +1001 -0
  107. package/dist/layouts.d.cts +4 -0
  108. package/dist/layouts.d.ts +4 -0
  109. package/dist/layouts.js +100 -0
  110. package/dist/layouts.mjs +11 -0
  111. package/dist/marketing-3d.d.cts +51 -0
  112. package/dist/marketing-3d.d.ts +51 -0
  113. package/dist/marketing-3d.js +553 -0
  114. package/dist/marketing-3d.mjs +526 -0
  115. package/dist/marketing.d.cts +583 -0
  116. package/dist/marketing.d.ts +583 -0
  117. package/dist/marketing.js +299 -0
  118. package/dist/marketing.mjs +10 -0
  119. package/dist/media.d.cts +29 -0
  120. package/dist/media.d.ts +29 -0
  121. package/dist/media.js +189 -0
  122. package/dist/media.mjs +182 -0
  123. package/dist/navigation.d.cts +591 -0
  124. package/dist/navigation.d.ts +591 -0
  125. package/dist/navigation.js +108 -0
  126. package/dist/navigation.mjs +15 -0
  127. package/dist/portal.d.cts +58 -0
  128. package/dist/portal.d.ts +58 -0
  129. package/dist/portal.js +403 -0
  130. package/dist/portal.mjs +395 -0
  131. package/dist/primitives.d.cts +508 -0
  132. package/dist/primitives.d.ts +508 -0
  133. package/dist/primitives.js +295 -0
  134. package/dist/primitives.mjs +14 -0
  135. package/dist/settings.d.cts +216 -0
  136. package/dist/settings.d.ts +216 -0
  137. package/dist/settings.js +34 -0
  138. package/dist/settings.mjs +9 -0
  139. package/dist/shared-Dqn36QHZ.d.cts +4 -0
  140. package/dist/shared-Dqn36QHZ.d.ts +4 -0
  141. package/dist/styles.css +1213 -0
  142. package/package.json +189 -0
  143. package/styles.css +1 -0
@@ -0,0 +1,117 @@
1
+ import { cn } from './chunk-IMKLN273.mjs';
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { cva } from 'class-variance-authority';
4
+ import { Loader2 } from 'lucide-react';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ var CTA_BUTTON_VARIANTS = [
8
+ "default",
9
+ "outline",
10
+ "secondary",
11
+ "premium"
12
+ ];
13
+ function isCtaButtonVariant(variant) {
14
+ return CTA_BUTTON_VARIANTS.includes(
15
+ variant || "default"
16
+ );
17
+ }
18
+ function resolveButtonHoverEffect(variant, hoverEffect) {
19
+ if (hoverEffect) {
20
+ return hoverEffect;
21
+ }
22
+ return isCtaButtonVariant(variant) ? "theme" : "slide";
23
+ }
24
+ var buttonVariants = cva(
25
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm transition-all cursor-pointer disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 focus:ring-offset-background aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
26
+ {
27
+ variants: {
28
+ variant: {
29
+ default: "button-cta button-cta-default border shadow-sm",
30
+ premium: "button-cta button-cta-premium border shadow-sm",
31
+ destructive: "border bg-destructive text-white hover:bg-destructive/90 dark:bg-destructive/60",
32
+ outline: "button-cta button-cta-outline border shadow-xs",
33
+ secondary: "button-cta button-cta-secondary border",
34
+ ghost: "font-medium text-foreground hover:bg-accent hover:text-accent-foreground",
35
+ "ghost-icon": "font-medium text-icon hover:text-icon-hover [&_svg]:transition-transform [&_svg]:duration-200 hover:[&_svg]:scale-110",
36
+ muted: "font-medium text-muted-foreground hover:text-foreground transition-colors",
37
+ link: "font-medium text-primary underline-offset-4 hover:underline"
38
+ },
39
+ size: {
40
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
41
+ sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
42
+ lg: "h-10 px-6 has-[>svg]:px-4",
43
+ icon: "size-9",
44
+ "icon-sm": "size-8",
45
+ "icon-xs": "size-6 [&_svg]:size-3.5",
46
+ "icon-lg": "size-10"
47
+ },
48
+ corners: {
49
+ default: "rounded-box",
50
+ pill: "rounded-full",
51
+ sharp: "rounded-none"
52
+ },
53
+ hoverEffect: {
54
+ // Slide/theme effects are handled via CSS pseudo-elements (see base.css)
55
+ slide: "",
56
+ glow: "hover:shadow-lg hover:shadow-primary/25",
57
+ scale: "hover:scale-105 active:scale-95",
58
+ // "none" disables extra hover effects but preserves variant hover styles
59
+ none: ""
60
+ }
61
+ },
62
+ defaultVariants: {
63
+ variant: "default",
64
+ size: "default",
65
+ corners: "default"
66
+ }
67
+ }
68
+ );
69
+ function Button({
70
+ className,
71
+ variant,
72
+ size,
73
+ corners,
74
+ hoverEffect,
75
+ asChild = false,
76
+ loading = false,
77
+ disabled,
78
+ children,
79
+ ...props
80
+ }) {
81
+ const resolvedHoverEffect = resolveButtonHoverEffect(variant, hoverEffect);
82
+ if (asChild) {
83
+ return /* @__PURE__ */ jsx(
84
+ Slot,
85
+ {
86
+ "data-slot": "button",
87
+ "data-variant": variant || "default",
88
+ "data-hover-effect": resolvedHoverEffect,
89
+ className: cn(
90
+ buttonVariants({ variant, size, corners, hoverEffect, className })
91
+ ),
92
+ "aria-disabled": disabled || loading || void 0,
93
+ ...props,
94
+ children
95
+ }
96
+ );
97
+ }
98
+ return /* @__PURE__ */ jsxs(
99
+ "button",
100
+ {
101
+ "data-slot": "button",
102
+ "data-variant": variant || "default",
103
+ "data-hover-effect": resolvedHoverEffect,
104
+ className: cn(
105
+ buttonVariants({ variant, size, corners, hoverEffect, className })
106
+ ),
107
+ disabled: disabled || loading,
108
+ ...props,
109
+ children: [
110
+ loading && /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin" }),
111
+ children
112
+ ]
113
+ }
114
+ );
115
+ }
116
+
117
+ export { Button, buttonVariants };
@@ -0,0 +1,195 @@
1
+ 'use strict';
2
+
3
+ var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
4
+ var SelectPrimitive = require('@radix-ui/react-select');
5
+ var lucideReact = require('lucide-react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
27
+
28
+ function Select({
29
+ ...props
30
+ }) {
31
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Root, { "data-slot": "select", ...props });
32
+ }
33
+ function SelectGroup({
34
+ ...props
35
+ }) {
36
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Group, { "data-slot": "select-group", ...props });
37
+ }
38
+ function SelectValue({
39
+ ...props
40
+ }) {
41
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { "data-slot": "select-value", ...props });
42
+ }
43
+ function SelectTrigger({
44
+ className,
45
+ size = "default",
46
+ variant = "default",
47
+ children,
48
+ ...props
49
+ }) {
50
+ return /* @__PURE__ */ jsxRuntime.jsxs(
51
+ SelectPrimitive__namespace.Trigger,
52
+ {
53
+ "data-slot": "select-trigger",
54
+ "data-size": size,
55
+ className: chunkADIDI7AJ_js.cn(
56
+ "data-placeholder:text-muted-foreground focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-fit items-center justify-between gap-2 rounded-box px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
57
+ variant === "ghost" ? "border-none bg-transparent shadow-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-0 [&_svg]:text-current [&_svg]:opacity-100" : "[&_svg:not([class*='text-'])]:text-muted-foreground border-input focus-visible:border-ring dark:bg-input/30 dark:hover:bg-input/50 border bg-transparent shadow-xs",
58
+ className
59
+ ),
60
+ ...props,
61
+ children: [
62
+ children,
63
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "size-4" }) })
64
+ ]
65
+ }
66
+ );
67
+ }
68
+ function SelectContent({
69
+ className,
70
+ children,
71
+ position = "popper",
72
+ align = "start",
73
+ ...props
74
+ }) {
75
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
76
+ SelectPrimitive__namespace.Content,
77
+ {
78
+ "data-slot": "select-content",
79
+ className: chunkADIDI7AJ_js.cn(
80
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-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 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-box border shadow-md",
81
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
82
+ className
83
+ ),
84
+ position,
85
+ align,
86
+ ...props,
87
+ children: [
88
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
89
+ /* @__PURE__ */ jsxRuntime.jsx(
90
+ SelectPrimitive__namespace.Viewport,
91
+ {
92
+ className: chunkADIDI7AJ_js.cn(
93
+ "p-1",
94
+ position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1"
95
+ ),
96
+ children
97
+ }
98
+ ),
99
+ /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
100
+ ]
101
+ }
102
+ ) });
103
+ }
104
+ function SelectLabel({
105
+ className,
106
+ ...props
107
+ }) {
108
+ return /* @__PURE__ */ jsxRuntime.jsx(
109
+ SelectPrimitive__namespace.Label,
110
+ {
111
+ "data-slot": "select-label",
112
+ className: chunkADIDI7AJ_js.cn("text-muted-foreground px-2 py-1.5 text-xs", className),
113
+ ...props
114
+ }
115
+ );
116
+ }
117
+ function SelectItem({
118
+ className,
119
+ children,
120
+ ...props
121
+ }) {
122
+ return /* @__PURE__ */ jsxRuntime.jsxs(
123
+ SelectPrimitive__namespace.Item,
124
+ {
125
+ "data-slot": "select-item",
126
+ className: chunkADIDI7AJ_js.cn(
127
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
128
+ className
129
+ ),
130
+ ...props,
131
+ children: [
132
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "size-4" }) }) }),
133
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
134
+ ]
135
+ }
136
+ );
137
+ }
138
+ function SelectSeparator({
139
+ className,
140
+ ...props
141
+ }) {
142
+ return /* @__PURE__ */ jsxRuntime.jsx(
143
+ SelectPrimitive__namespace.Separator,
144
+ {
145
+ "data-slot": "select-separator",
146
+ className: chunkADIDI7AJ_js.cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
147
+ ...props
148
+ }
149
+ );
150
+ }
151
+ function SelectScrollUpButton({
152
+ className,
153
+ ...props
154
+ }) {
155
+ return /* @__PURE__ */ jsxRuntime.jsx(
156
+ SelectPrimitive__namespace.ScrollUpButton,
157
+ {
158
+ "data-slot": "select-scroll-up-button",
159
+ className: chunkADIDI7AJ_js.cn(
160
+ "flex cursor-default items-center justify-center py-1",
161
+ className
162
+ ),
163
+ ...props,
164
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUpIcon, { className: "size-4" })
165
+ }
166
+ );
167
+ }
168
+ function SelectScrollDownButton({
169
+ className,
170
+ ...props
171
+ }) {
172
+ return /* @__PURE__ */ jsxRuntime.jsx(
173
+ SelectPrimitive__namespace.ScrollDownButton,
174
+ {
175
+ "data-slot": "select-scroll-down-button",
176
+ className: chunkADIDI7AJ_js.cn(
177
+ "flex cursor-default items-center justify-center py-1",
178
+ className
179
+ ),
180
+ ...props,
181
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: "size-4" })
182
+ }
183
+ );
184
+ }
185
+
186
+ exports.Select = Select;
187
+ exports.SelectContent = SelectContent;
188
+ exports.SelectGroup = SelectGroup;
189
+ exports.SelectItem = SelectItem;
190
+ exports.SelectLabel = SelectLabel;
191
+ exports.SelectScrollDownButton = SelectScrollDownButton;
192
+ exports.SelectScrollUpButton = SelectScrollUpButton;
193
+ exports.SelectSeparator = SelectSeparator;
194
+ exports.SelectTrigger = SelectTrigger;
195
+ exports.SelectValue = SelectValue;
@@ -0,0 +1,71 @@
1
+ import { cn } from './chunk-IMKLN273.mjs';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function TooltipProvider({
6
+ delayDuration = 1e3,
7
+ skipDelayDuration = 300,
8
+ ...props
9
+ }) {
10
+ return /* @__PURE__ */ jsx(
11
+ TooltipPrimitive.Provider,
12
+ {
13
+ "data-slot": "tooltip-provider",
14
+ delayDuration,
15
+ skipDelayDuration,
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ function Tooltip({
21
+ delayDuration = 1e3,
22
+ ...props
23
+ }) {
24
+ return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
25
+ }
26
+ function TooltipTrigger({
27
+ ...props
28
+ }) {
29
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
30
+ }
31
+ function TooltipContent({
32
+ className,
33
+ sideOffset = 6,
34
+ children,
35
+ ...props
36
+ }) {
37
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
38
+ TooltipPrimitive.Content,
39
+ {
40
+ "data-slot": "tooltip-content",
41
+ sideOffset,
42
+ className: cn(
43
+ // Base styles
44
+ "z-50 max-w-xs overflow-hidden",
45
+ // Colors - subtle grey distinct from main bg, respects light/dark mode
46
+ "bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100",
47
+ // Subtle shadow for depth
48
+ "shadow-md",
49
+ // Typography - clean small text, light weight
50
+ "text-xs leading-normal font-light",
51
+ // Spacing and shape - tight rounded corners
52
+ "rounded-box px-3 py-1.5",
53
+ // Animations - smooth fade and scale
54
+ "animate-in fade-in-0 zoom-in-95 duration-150",
55
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-100",
56
+ // Slide in from direction
57
+ "data-[side=bottom]:slide-in-from-top-1",
58
+ "data-[side=left]:slide-in-from-right-1",
59
+ "data-[side=right]:slide-in-from-left-1",
60
+ "data-[side=top]:slide-in-from-bottom-1",
61
+ // Transform origin for natural scaling
62
+ "origin-[--radix-tooltip-content-transform-origin]",
63
+ className
64
+ ),
65
+ ...props,
66
+ children
67
+ }
68
+ ) });
69
+ }
70
+
71
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,103 @@
1
+ import { cn } from './chunk-IMKLN273.mjs';
2
+ import { cva } from 'class-variance-authority';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var cardVariants = cva(
6
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-box py-6",
7
+ {
8
+ variants: {
9
+ elevation: {
10
+ flat: "shadow-none",
11
+ raised: "shadow-sm",
12
+ floating: "shadow-lg"
13
+ },
14
+ border: {
15
+ default: "border",
16
+ subtle: "border border-border/50",
17
+ none: "border-0"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ elevation: "raised",
22
+ border: "default"
23
+ }
24
+ }
25
+ );
26
+ function Card({ className, elevation, border, ...props }) {
27
+ return /* @__PURE__ */ jsx(
28
+ "div",
29
+ {
30
+ "data-slot": "card",
31
+ className: cn(cardVariants({ elevation, border, className })),
32
+ ...props
33
+ }
34
+ );
35
+ }
36
+ function CardHeader({ className, ...props }) {
37
+ return /* @__PURE__ */ jsx(
38
+ "div",
39
+ {
40
+ "data-slot": "card-header",
41
+ className: cn(
42
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
43
+ className
44
+ ),
45
+ ...props
46
+ }
47
+ );
48
+ }
49
+ function CardTitle({ className, ...props }) {
50
+ return /* @__PURE__ */ jsx(
51
+ "div",
52
+ {
53
+ "data-slot": "card-title",
54
+ className: cn("leading-none font-semibold", className),
55
+ ...props
56
+ }
57
+ );
58
+ }
59
+ function CardDescription({ className, ...props }) {
60
+ return /* @__PURE__ */ jsx(
61
+ "div",
62
+ {
63
+ "data-slot": "card-description",
64
+ className: cn("text-muted-foreground text-sm", className),
65
+ ...props
66
+ }
67
+ );
68
+ }
69
+ function CardAction({ className, ...props }) {
70
+ return /* @__PURE__ */ jsx(
71
+ "div",
72
+ {
73
+ "data-slot": "card-action",
74
+ className: cn(
75
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
76
+ className
77
+ ),
78
+ ...props
79
+ }
80
+ );
81
+ }
82
+ function CardContent({ className, ...props }) {
83
+ return /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ "data-slot": "card-content",
87
+ className: cn("px-6", className),
88
+ ...props
89
+ }
90
+ );
91
+ }
92
+ function CardFooter({ className, ...props }) {
93
+ return /* @__PURE__ */ jsx(
94
+ "div",
95
+ {
96
+ "data-slot": "card-footer",
97
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
98
+ ...props
99
+ }
100
+ );
101
+ }
102
+
103
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };