@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
package/dist/blog.mjs ADDED
@@ -0,0 +1,279 @@
1
+ import { Badge, Alert, AlertTitle, AlertDescription } from './chunk-GUSTCU2W.mjs';
2
+ import { Card, CardContent, CardHeader, CardFooter } from './chunk-YL7RZRHM.mjs';
3
+ import './chunk-MHZXUOGN.mjs';
4
+ import './chunk-IMKLN273.mjs';
5
+ import Image from 'next/image';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { formatDate } from '@caffeinebounce/shared-utils';
8
+ import Link2 from 'next/link';
9
+ import { ChevronLeft, ChevronRight, InfoIcon, AlertTriangleIcon, LightbulbIcon } from 'lucide-react';
10
+ import { useState, useEffect } from 'react';
11
+
12
+ function BlogAuthorCard({
13
+ name,
14
+ avatar,
15
+ bio,
16
+ links
17
+ }) {
18
+ return /* @__PURE__ */ jsx(Card, { className: "border-border/50 bg-card/50 backdrop-blur-sm", children: /* @__PURE__ */ jsxs(CardContent, { className: "flex items-start gap-4 p-6", children: [
19
+ avatar ? /* @__PURE__ */ jsx(
20
+ Image,
21
+ {
22
+ src: avatar,
23
+ alt: name,
24
+ width: 56,
25
+ height: 56,
26
+ className: "rounded-full object-cover shrink-0"
27
+ }
28
+ ) : /* @__PURE__ */ jsx("div", { className: "h-14 w-14 rounded-full bg-primary/10 flex items-center justify-center text-lg font-semibold text-primary shrink-0", children: name.charAt(0) }),
29
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
30
+ /* @__PURE__ */ jsx("div", { className: "font-semibold text-sm", children: name }),
31
+ bio && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-1", children: bio }),
32
+ links && links.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex gap-3 mt-2", children: links.map((link) => /* @__PURE__ */ jsx(
33
+ "a",
34
+ {
35
+ href: link.url,
36
+ target: "_blank",
37
+ rel: "noopener noreferrer",
38
+ className: "text-xs text-muted-foreground hover:text-foreground transition-colors",
39
+ children: link.label
40
+ },
41
+ link.url
42
+ )) })
43
+ ] })
44
+ ] }) });
45
+ }
46
+ function BlogCardGrid({ posts, basePath = "/blog" }) {
47
+ if (posts.length === 0) {
48
+ return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "No posts yet. Check back soon." });
49
+ }
50
+ return /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: posts.map((post) => /* @__PURE__ */ jsx(
51
+ Link2,
52
+ {
53
+ href: `${basePath}/${post.slug}`,
54
+ className: "group block",
55
+ children: /* @__PURE__ */ jsxs(Card, { className: "h-full overflow-hidden border-border/50 bg-card/50 backdrop-blur-sm transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg group-hover:shadow-primary/5 group-hover:border-border", children: [
56
+ /* @__PURE__ */ jsx("div", { className: "relative h-48 w-full overflow-hidden", children: post.cover ? /* @__PURE__ */ jsx(
57
+ Image,
58
+ {
59
+ src: post.cover,
60
+ alt: post.title,
61
+ fill: true,
62
+ className: "object-cover transition-transform duration-500 group-hover:scale-105"
63
+ }
64
+ ) : /* @__PURE__ */ jsx("div", { className: "h-full w-full bg-gradient-to-br from-primary/20 via-primary/10 to-transparent" }) }),
65
+ /* @__PURE__ */ jsx(CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold tracking-tight leading-snug group-hover:text-primary transition-colors", children: post.title }) }),
66
+ /* @__PURE__ */ jsxs(CardContent, { className: "pb-3", children: [
67
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground mb-3", children: [
68
+ /* @__PURE__ */ jsx("time", { children: formatDate(post.date, {
69
+ month: "long",
70
+ day: "numeric",
71
+ year: "numeric"
72
+ }) }),
73
+ post.readingTime && /* @__PURE__ */ jsxs(Fragment, { children: [
74
+ /* @__PURE__ */ jsx("span", { children: "\xB7" }),
75
+ /* @__PURE__ */ jsx("span", { children: post.readingTime })
76
+ ] })
77
+ ] }),
78
+ post.excerpt && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground line-clamp-2", children: post.excerpt })
79
+ ] }),
80
+ post.tags && post.tags.length > 0 && /* @__PURE__ */ jsx(CardFooter, { className: "pt-0", children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: post.tags.map((tag) => /* @__PURE__ */ jsx(
81
+ Badge,
82
+ {
83
+ variant: "secondary",
84
+ className: "text-xs font-normal",
85
+ children: tag
86
+ },
87
+ tag
88
+ )) }) })
89
+ ] })
90
+ },
91
+ post.slug
92
+ )) });
93
+ }
94
+ function BlogPostFooter({
95
+ prevPost,
96
+ nextPost,
97
+ basePath = "/blog"
98
+ }) {
99
+ if (!prevPost && !nextPost) return null;
100
+ return /* @__PURE__ */ jsx("footer", { className: "mt-16 pt-8 border-t border-border/50", children: /* @__PURE__ */ jsxs("nav", { className: "flex items-center justify-between gap-4", children: [
101
+ prevPost ? /* @__PURE__ */ jsxs(
102
+ Link2,
103
+ {
104
+ href: `${basePath}/${prevPost.slug}`,
105
+ className: "group flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",
106
+ children: [
107
+ /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4 transition-transform group-hover:-translate-x-0.5" }),
108
+ /* @__PURE__ */ jsxs("div", { className: "text-right", children: [
109
+ /* @__PURE__ */ jsx("div", { className: "text-xs uppercase tracking-wide mb-0.5", children: "Previous" }),
110
+ /* @__PURE__ */ jsx("div", { className: "font-medium text-foreground", children: prevPost.title })
111
+ ] })
112
+ ]
113
+ }
114
+ ) : /* @__PURE__ */ jsx("div", {}),
115
+ nextPost ? /* @__PURE__ */ jsxs(
116
+ Link2,
117
+ {
118
+ href: `${basePath}/${nextPost.slug}`,
119
+ className: "group flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors text-right",
120
+ children: [
121
+ /* @__PURE__ */ jsxs("div", { children: [
122
+ /* @__PURE__ */ jsx("div", { className: "text-xs uppercase tracking-wide mb-0.5", children: "Next" }),
123
+ /* @__PURE__ */ jsx("div", { className: "font-medium text-foreground", children: nextPost.title })
124
+ ] }),
125
+ /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 transition-transform group-hover:translate-x-0.5" })
126
+ ]
127
+ }
128
+ ) : /* @__PURE__ */ jsx("div", {})
129
+ ] }) });
130
+ }
131
+ function BlogPostHeader({
132
+ title,
133
+ date,
134
+ author,
135
+ cover,
136
+ readingTime,
137
+ tags
138
+ }) {
139
+ return /* @__PURE__ */ jsxs("header", { className: "mb-12", children: [
140
+ tags && tags.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5 mb-4", children: tags.map((tag) => /* @__PURE__ */ jsx(
141
+ Badge,
142
+ {
143
+ variant: "secondary",
144
+ className: "text-xs font-normal",
145
+ children: tag
146
+ },
147
+ tag
148
+ )) }),
149
+ /* @__PURE__ */ jsx("h1", { className: "text-4xl md:text-5xl font-bold tracking-tight leading-tight mb-4", children: title }),
150
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
151
+ author && /* @__PURE__ */ jsxs(Fragment, { children: [
152
+ /* @__PURE__ */ jsx("span", { children: author }),
153
+ /* @__PURE__ */ jsx("span", { children: "\xB7" })
154
+ ] }),
155
+ /* @__PURE__ */ jsx("time", { children: formatDate(date, {
156
+ month: "long",
157
+ day: "numeric",
158
+ year: "numeric"
159
+ }) }),
160
+ readingTime && /* @__PURE__ */ jsxs(Fragment, { children: [
161
+ /* @__PURE__ */ jsx("span", { children: "\xB7" }),
162
+ /* @__PURE__ */ jsx("span", { children: readingTime })
163
+ ] })
164
+ ] }),
165
+ cover && /* @__PURE__ */ jsx("div", { className: "relative mt-8 aspect-[2/1] w-full overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
166
+ Image,
167
+ {
168
+ src: cover,
169
+ alt: title,
170
+ fill: true,
171
+ priority: true,
172
+ className: "object-cover"
173
+ }
174
+ ) })
175
+ ] });
176
+ }
177
+ var calloutConfig = {
178
+ tip: {
179
+ icon: LightbulbIcon,
180
+ className: "border-emerald-500/30 bg-emerald-500/5 [&>svg]:text-emerald-500"
181
+ },
182
+ warning: {
183
+ icon: AlertTriangleIcon,
184
+ className: "border-amber-500/30 bg-amber-500/5 [&>svg]:text-amber-500"
185
+ },
186
+ note: {
187
+ icon: InfoIcon,
188
+ className: "border-blue-500/30 bg-blue-500/5 [&>svg]:text-blue-500"
189
+ }
190
+ };
191
+ function Callout({ type = "note", title, children }) {
192
+ const config = calloutConfig[type];
193
+ const Icon = config.icon;
194
+ return /* @__PURE__ */ jsxs(Alert, { className: `my-6 ${config.className}`, children: [
195
+ /* @__PURE__ */ jsx(Icon, { className: "h-4 w-4" }),
196
+ title && /* @__PURE__ */ jsx(AlertTitle, { children: title }),
197
+ /* @__PURE__ */ jsx(AlertDescription, { children })
198
+ ] });
199
+ }
200
+ function Blockquote(props) {
201
+ return /* @__PURE__ */ jsx(
202
+ "blockquote",
203
+ {
204
+ className: "border-l-2 border-primary/30 pl-6 my-6 text-muted-foreground italic",
205
+ ...props
206
+ }
207
+ );
208
+ }
209
+ function MdxImage(props) {
210
+ const { caption, alt, ...rest } = props;
211
+ return /* @__PURE__ */ jsxs("figure", { className: "my-8", children: [
212
+ /* @__PURE__ */ jsx(
213
+ "img",
214
+ {
215
+ alt: alt ?? "",
216
+ className: "rounded-lg w-full",
217
+ loading: "lazy",
218
+ ...rest
219
+ }
220
+ ),
221
+ (caption ?? alt) && /* @__PURE__ */ jsx("figcaption", { className: "mt-2 text-center text-xs text-muted-foreground", children: caption ?? alt })
222
+ ] });
223
+ }
224
+ function createHeading(level) {
225
+ const Tag = `h${level}`;
226
+ return function Heading(props) {
227
+ return /* @__PURE__ */ jsx(Tag, { ...props });
228
+ };
229
+ }
230
+ var mdxComponents = {
231
+ h1: createHeading(1),
232
+ h2: createHeading(2),
233
+ h3: createHeading(3),
234
+ h4: createHeading(4),
235
+ blockquote: Blockquote,
236
+ img: MdxImage,
237
+ Callout
238
+ };
239
+ function TableOfContents({ headings }) {
240
+ const [activeId, setActiveId] = useState("");
241
+ useEffect(() => {
242
+ const observer = new IntersectionObserver(
243
+ (entries) => {
244
+ for (const entry of entries) {
245
+ if (entry.isIntersecting) {
246
+ setActiveId(entry.target.id);
247
+ }
248
+ }
249
+ },
250
+ { rootMargin: "-80px 0px -80% 0px" }
251
+ );
252
+ for (const heading of headings) {
253
+ const el = document.getElementById(heading.id);
254
+ if (el) observer.observe(el);
255
+ }
256
+ return () => observer.disconnect();
257
+ }, [headings]);
258
+ if (headings.length === 0) return null;
259
+ return /* @__PURE__ */ jsxs("nav", { className: "hidden lg:block sticky top-24", children: [
260
+ /* @__PURE__ */ jsx("div", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground mb-3", children: "On this page" }),
261
+ /* @__PURE__ */ jsx("ul", { className: "space-y-1.5 text-sm", children: headings.map((heading) => /* @__PURE__ */ jsx(
262
+ "li",
263
+ {
264
+ style: { paddingLeft: `${(heading.level - 2) * 12}px` },
265
+ children: /* @__PURE__ */ jsx(
266
+ "a",
267
+ {
268
+ href: `#${heading.id}`,
269
+ className: `block py-0.5 transition-colors hover:text-foreground ${activeId === heading.id ? "text-primary font-medium" : "text-muted-foreground"}`,
270
+ children: heading.text
271
+ }
272
+ )
273
+ },
274
+ heading.id
275
+ )) })
276
+ ] });
277
+ }
278
+
279
+ export { BlogAuthorCard, BlogCardGrid, BlogPostFooter, BlogPostHeader, Callout, TableOfContents, mdxComponents };
@@ -0,0 +1,34 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import * as React from 'react';
5
+
6
+ /**
7
+ * Hover effect styles for buttons
8
+ * - slide: Color slides up from bottom
9
+ * - glow: Adds a glow effect on hover
10
+ * - scale: Scales up slightly on hover
11
+ * - none: No hover effect
12
+ */
13
+ type ButtonHoverEffect = "slide" | "glow" | "scale" | "none";
14
+ /**
15
+ * Corner styles for buttons
16
+ * - default: Uses the shared global box radius
17
+ * - pill: Fully rounded ends (rounded-full)
18
+ * - sharp: No rounding (rounded-none)
19
+ */
20
+ type ButtonCorners = "default" | "pill" | "sharp";
21
+ declare const buttonVariants: (props?: ({
22
+ variant?: "default" | "outline" | "secondary" | "premium" | "link" | "destructive" | "ghost" | "ghost-icon" | "muted" | null | undefined;
23
+ size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-xs" | "icon-lg" | null | undefined;
24
+ corners?: "default" | "pill" | "sharp" | null | undefined;
25
+ hoverEffect?: "none" | "scale" | "slide" | "glow" | null | undefined;
26
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
27
+ interface ButtonProps extends React.ComponentProps<"button">, VariantProps<typeof buttonVariants> {
28
+ asChild?: boolean;
29
+ /** Show loading spinner and disable button */
30
+ loading?: boolean;
31
+ }
32
+ declare function Button({ className, variant, size, corners, hoverEffect, asChild, loading, disabled, children, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
33
+
34
+ export { Button as B, type ButtonCorners as a, type ButtonHoverEffect as b, type ButtonProps as c, buttonVariants as d };
@@ -0,0 +1,34 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import * as React from 'react';
5
+
6
+ /**
7
+ * Hover effect styles for buttons
8
+ * - slide: Color slides up from bottom
9
+ * - glow: Adds a glow effect on hover
10
+ * - scale: Scales up slightly on hover
11
+ * - none: No hover effect
12
+ */
13
+ type ButtonHoverEffect = "slide" | "glow" | "scale" | "none";
14
+ /**
15
+ * Corner styles for buttons
16
+ * - default: Uses the shared global box radius
17
+ * - pill: Fully rounded ends (rounded-full)
18
+ * - sharp: No rounding (rounded-none)
19
+ */
20
+ type ButtonCorners = "default" | "pill" | "sharp";
21
+ declare const buttonVariants: (props?: ({
22
+ variant?: "default" | "outline" | "secondary" | "premium" | "link" | "destructive" | "ghost" | "ghost-icon" | "muted" | null | undefined;
23
+ size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-xs" | "icon-lg" | null | undefined;
24
+ corners?: "default" | "pill" | "sharp" | null | undefined;
25
+ hoverEffect?: "none" | "scale" | "slide" | "glow" | null | undefined;
26
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
27
+ interface ButtonProps extends React.ComponentProps<"button">, VariantProps<typeof buttonVariants> {
28
+ asChild?: boolean;
29
+ /** Show loading spinner and disable button */
30
+ loading?: boolean;
31
+ }
32
+ declare function Button({ className, variant, size, corners, hoverEffect, asChild, loading, disabled, children, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
33
+
34
+ export { Button as B, type ButtonCorners as a, type ButtonHoverEffect as b, type ButtonProps as c, buttonVariants as d };
@@ -0,0 +1,80 @@
1
+ import * as recharts_types_chart_types from 'recharts/types/chart/types';
2
+ import * as recharts_types_util_payload_getUniqPayload from 'recharts/types/util/payload/getUniqPayload';
3
+ import * as recharts_types_state_tooltipSlice from 'recharts/types/state/tooltipSlice';
4
+ import * as recharts_types_component_Cursor from 'recharts/types/component/Cursor';
5
+ import * as recharts_types_component_Tooltip from 'recharts/types/component/Tooltip';
6
+ import * as recharts_types_util_types from 'recharts/types/util/types';
7
+ import * as recharts_types_component_DefaultTooltipContent from 'recharts/types/component/DefaultTooltipContent';
8
+ import * as recharts from 'recharts';
9
+ import { ResponsiveContainer, Tooltip } from 'recharts';
10
+ import * as React from 'react';
11
+
12
+ type ChartConfig = Record<string, {
13
+ label?: React.ReactNode;
14
+ icon?: React.ComponentType;
15
+ color?: string;
16
+ theme?: Record<"light" | "dark", string>;
17
+ }>;
18
+ type ChartTooltipPayloadItem = Record<string, unknown> & {
19
+ payload?: Record<string, unknown>;
20
+ name?: string;
21
+ dataKey?: string;
22
+ color?: string;
23
+ value?: number;
24
+ };
25
+ /**
26
+ * ChartContainer - Container for Recharts components with theme support
27
+ *
28
+ * @example
29
+ * <ChartContainer config={chartConfig}>
30
+ * <LineChart data={data}>
31
+ * <Line dataKey="value" />
32
+ * </LineChart>
33
+ * </ChartContainer>
34
+ */
35
+ declare const ChartContainer: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
36
+ config: ChartConfig;
37
+ children: React.ComponentProps<typeof ResponsiveContainer>["children"];
38
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
39
+ declare const ChartTooltip: typeof Tooltip;
40
+ declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<Omit<recharts.DefaultTooltipContentProps<recharts.TooltipValueType, recharts_types_component_DefaultTooltipContent.NameType>, "viewBox" | "label" | "active" | "payload" | "coordinate" | "accessibilityLayer"> & {
41
+ active?: boolean;
42
+ allowEscapeViewBox?: recharts_types_util_types.AllowInDimension;
43
+ animationDuration?: recharts_types_util_types.AnimationDuration;
44
+ animationEasing?: recharts_types_util_types.AnimationTiming;
45
+ axisId?: recharts.AxisId;
46
+ content?: recharts_types_component_Tooltip.ContentType<recharts.TooltipValueType, recharts_types_component_DefaultTooltipContent.NameType> | undefined;
47
+ contentStyle?: React.CSSProperties;
48
+ cursor?: recharts_types_component_Cursor.CursorDefinition;
49
+ defaultIndex?: number | recharts.TooltipIndex;
50
+ filterNull?: boolean;
51
+ formatter?: ((value: recharts.TooltipValueType, name: recharts_types_component_DefaultTooltipContent.NameType, item: recharts_types_state_tooltipSlice.TooltipPayloadEntry, index: number, payload: recharts.TooltipPayload) => React.ReactNode | [React.ReactNode, React.ReactNode]) | undefined;
52
+ includeHidden?: boolean | undefined;
53
+ isAnimationActive?: boolean | "auto";
54
+ itemSorter?: recharts.TooltipItemSorter;
55
+ itemStyle?: React.CSSProperties;
56
+ labelFormatter?: (label: any, payload: recharts.TooltipPayload) => React.ReactNode;
57
+ labelStyle?: React.CSSProperties;
58
+ offset?: number | recharts.Coordinate;
59
+ payloadUniqBy?: recharts_types_util_payload_getUniqPayload.UniqueOption<recharts_types_state_tooltipSlice.TooltipPayloadEntry>;
60
+ portal?: HTMLElement | null;
61
+ position?: Partial<recharts.Coordinate>;
62
+ reverseDirection?: recharts_types_util_types.AllowInDimension;
63
+ separator?: string;
64
+ shared?: boolean;
65
+ trigger?: recharts_types_chart_types.TooltipTrigger;
66
+ useTranslate3d?: boolean;
67
+ wrapperStyle?: React.CSSProperties;
68
+ } & React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
69
+ hideLabel?: boolean;
70
+ hideIndicator?: boolean;
71
+ indicator?: "line" | "dot" | "dashed";
72
+ nameKey?: string;
73
+ labelKey?: string;
74
+ labelFormatter?: (value: React.ReactNode, payload: ChartTooltipPayloadItem[]) => React.ReactNode;
75
+ payload?: ChartTooltipPayloadItem[];
76
+ label?: React.ReactNode;
77
+ color?: string;
78
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
79
+
80
+ export { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent };
@@ -0,0 +1,80 @@
1
+ import * as recharts_types_chart_types from 'recharts/types/chart/types';
2
+ import * as recharts_types_util_payload_getUniqPayload from 'recharts/types/util/payload/getUniqPayload';
3
+ import * as recharts_types_state_tooltipSlice from 'recharts/types/state/tooltipSlice';
4
+ import * as recharts_types_component_Cursor from 'recharts/types/component/Cursor';
5
+ import * as recharts_types_component_Tooltip from 'recharts/types/component/Tooltip';
6
+ import * as recharts_types_util_types from 'recharts/types/util/types';
7
+ import * as recharts_types_component_DefaultTooltipContent from 'recharts/types/component/DefaultTooltipContent';
8
+ import * as recharts from 'recharts';
9
+ import { ResponsiveContainer, Tooltip } from 'recharts';
10
+ import * as React from 'react';
11
+
12
+ type ChartConfig = Record<string, {
13
+ label?: React.ReactNode;
14
+ icon?: React.ComponentType;
15
+ color?: string;
16
+ theme?: Record<"light" | "dark", string>;
17
+ }>;
18
+ type ChartTooltipPayloadItem = Record<string, unknown> & {
19
+ payload?: Record<string, unknown>;
20
+ name?: string;
21
+ dataKey?: string;
22
+ color?: string;
23
+ value?: number;
24
+ };
25
+ /**
26
+ * ChartContainer - Container for Recharts components with theme support
27
+ *
28
+ * @example
29
+ * <ChartContainer config={chartConfig}>
30
+ * <LineChart data={data}>
31
+ * <Line dataKey="value" />
32
+ * </LineChart>
33
+ * </ChartContainer>
34
+ */
35
+ declare const ChartContainer: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
36
+ config: ChartConfig;
37
+ children: React.ComponentProps<typeof ResponsiveContainer>["children"];
38
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
39
+ declare const ChartTooltip: typeof Tooltip;
40
+ declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<Omit<recharts.DefaultTooltipContentProps<recharts.TooltipValueType, recharts_types_component_DefaultTooltipContent.NameType>, "viewBox" | "label" | "active" | "payload" | "coordinate" | "accessibilityLayer"> & {
41
+ active?: boolean;
42
+ allowEscapeViewBox?: recharts_types_util_types.AllowInDimension;
43
+ animationDuration?: recharts_types_util_types.AnimationDuration;
44
+ animationEasing?: recharts_types_util_types.AnimationTiming;
45
+ axisId?: recharts.AxisId;
46
+ content?: recharts_types_component_Tooltip.ContentType<recharts.TooltipValueType, recharts_types_component_DefaultTooltipContent.NameType> | undefined;
47
+ contentStyle?: React.CSSProperties;
48
+ cursor?: recharts_types_component_Cursor.CursorDefinition;
49
+ defaultIndex?: number | recharts.TooltipIndex;
50
+ filterNull?: boolean;
51
+ formatter?: ((value: recharts.TooltipValueType, name: recharts_types_component_DefaultTooltipContent.NameType, item: recharts_types_state_tooltipSlice.TooltipPayloadEntry, index: number, payload: recharts.TooltipPayload) => React.ReactNode | [React.ReactNode, React.ReactNode]) | undefined;
52
+ includeHidden?: boolean | undefined;
53
+ isAnimationActive?: boolean | "auto";
54
+ itemSorter?: recharts.TooltipItemSorter;
55
+ itemStyle?: React.CSSProperties;
56
+ labelFormatter?: (label: any, payload: recharts.TooltipPayload) => React.ReactNode;
57
+ labelStyle?: React.CSSProperties;
58
+ offset?: number | recharts.Coordinate;
59
+ payloadUniqBy?: recharts_types_util_payload_getUniqPayload.UniqueOption<recharts_types_state_tooltipSlice.TooltipPayloadEntry>;
60
+ portal?: HTMLElement | null;
61
+ position?: Partial<recharts.Coordinate>;
62
+ reverseDirection?: recharts_types_util_types.AllowInDimension;
63
+ separator?: string;
64
+ shared?: boolean;
65
+ trigger?: recharts_types_chart_types.TooltipTrigger;
66
+ useTranslate3d?: boolean;
67
+ wrapperStyle?: React.CSSProperties;
68
+ } & React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
69
+ hideLabel?: boolean;
70
+ hideIndicator?: boolean;
71
+ indicator?: "line" | "dot" | "dashed";
72
+ nameKey?: string;
73
+ labelKey?: string;
74
+ labelFormatter?: (value: React.ReactNode, payload: ChartTooltipPayloadItem[]) => React.ReactNode;
75
+ payload?: ChartTooltipPayloadItem[];
76
+ label?: React.ReactNode;
77
+ color?: string;
78
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
79
+
80
+ export { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent };
package/dist/charts.js ADDED
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var chunk3NDB4YPC_js = require('./chunk-3NDB4YPC.js');
4
+ require('./chunk-ADIDI7AJ.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "ChartContainer", {
9
+ enumerable: true,
10
+ get: function () { return chunk3NDB4YPC_js.ChartContainer; }
11
+ });
12
+ Object.defineProperty(exports, "ChartTooltip", {
13
+ enumerable: true,
14
+ get: function () { return chunk3NDB4YPC_js.ChartTooltip; }
15
+ });
16
+ Object.defineProperty(exports, "ChartTooltipContent", {
17
+ enumerable: true,
18
+ get: function () { return chunk3NDB4YPC_js.ChartTooltipContent; }
19
+ });
@@ -0,0 +1,2 @@
1
+ export { ChartContainer, ChartTooltip, ChartTooltipContent } from './chunk-Q52ZEL62.mjs';
2
+ import './chunk-IMKLN273.mjs';
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
4
+ var LabelPrimitive = require('@radix-ui/react-label');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
26
+
27
+ function Label({
28
+ className,
29
+ ...props
30
+ }) {
31
+ return /* @__PURE__ */ jsxRuntime.jsx(
32
+ LabelPrimitive__namespace.Root,
33
+ {
34
+ "data-slot": "label",
35
+ className: chunkADIDI7AJ_js.cn(
36
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
37
+ className
38
+ ),
39
+ ...props
40
+ }
41
+ );
42
+ }
43
+
44
+ exports.Label = Label;