@caffeinebounce/ui 0.62.2 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +1 -1
  2. package/dist/blog.js +8 -6
  3. package/dist/blog.mjs +3 -1
  4. package/dist/charts.d.cts +1 -1
  5. package/dist/charts.d.ts +1 -1
  6. package/dist/{chunk-6DVWMJ3H.mjs → chunk-2EFVMX6V.mjs} +4 -3
  7. package/dist/chunk-33JR5SYE.js +1 -0
  8. package/dist/{chunk-OZZWDIOY.js → chunk-375DECW4.js} +32 -31
  9. package/dist/chunk-3NDB4YPC.js +1 -0
  10. package/dist/{chunk-PZRI43EZ.js → chunk-46JYKBRX.js} +0 -43
  11. package/dist/chunk-5D55OVD5.js +75 -0
  12. package/dist/chunk-5RW4PYZ6.js +1 -0
  13. package/dist/chunk-5THF4YP6.mjs +1 -0
  14. package/dist/{chunk-JORVSG52.js → chunk-663CFAHS.js} +212 -269
  15. package/dist/chunk-6BUBNZPG.mjs +1 -0
  16. package/dist/chunk-6HKJDV43.mjs +48 -0
  17. package/dist/chunk-6NCRGHV3.mjs +64 -0
  18. package/dist/{chunk-OLAAXLXY.mjs → chunk-6QAKQG57.mjs} +5 -4
  19. package/dist/chunk-72JGQ7IJ.mjs +1 -0
  20. package/dist/{chunk-N6AFNFZR.mjs → chunk-7ERVZXIN.mjs} +215 -270
  21. package/dist/chunk-7IKHZKAC.js +1 -0
  22. package/dist/chunk-APFEP5B7.mjs +100 -0
  23. package/dist/chunk-C3OADNSG.js +348 -0
  24. package/dist/{chunk-RVEFPVZF.mjs → chunk-C57MX3BG.mjs} +1 -0
  25. package/dist/{chunk-CC4KUIKC.js → chunk-DH5Z3ETN.js} +67 -45
  26. package/dist/chunk-DYWZ23QT.mjs +90 -0
  27. package/dist/{chunk-KRRIRS6A.mjs → chunk-E67IR6HU.mjs} +31 -9
  28. package/dist/{chunk-D3QXPL47.mjs → chunk-EXQSWHLD.mjs} +7 -6
  29. package/dist/{chunk-ZOA7B32D.js → chunk-F35KL6TX.js} +10 -9
  30. package/dist/{chunk-YSLD2HLP.mjs → chunk-FFJC66KO.mjs} +2 -1
  31. package/dist/chunk-FRRS2YZH.mjs +1 -0
  32. package/dist/chunk-G5TQWWQA.mjs +1 -0
  33. package/dist/{chunk-MPZFPU4X.js → chunk-GMBLPQ3I.js} +4 -3
  34. package/dist/chunk-IJFPPLQW.js +50 -0
  35. package/dist/chunk-J6OLBSZR.js +1 -0
  36. package/dist/chunk-KGGQ5NZV.js +1 -0
  37. package/dist/chunk-KHCC5UKW.mjs +1 -0
  38. package/dist/{chunk-BMFQG6RA.mjs → chunk-KJIX6V32.mjs} +108 -1885
  39. package/dist/chunk-LABHD4PU.js +109 -0
  40. package/dist/chunk-LQCVRWVF.js +1 -0
  41. package/dist/{chunk-GAIQJCAZ.js → chunk-LT5VD4KR.js} +150 -1953
  42. package/dist/{chunk-7DHKQODW.mjs → chunk-LTLCIRZY.mjs} +257 -474
  43. package/dist/chunk-N5BHXWR3.mjs +34 -0
  44. package/dist/chunk-OCO3Z5YA.js +37 -0
  45. package/dist/chunk-OFQLWSUR.mjs +1 -0
  46. package/dist/chunk-OIJ7XMDV.mjs +71 -0
  47. package/dist/chunk-ORBH4IBC.mjs +316 -0
  48. package/dist/{chunk-C4UT5V3P.js → chunk-OWHI5VGJ.js} +1 -0
  49. package/dist/chunk-OWWOAYIY.js +2652 -0
  50. package/dist/chunk-PFHOXDSW.mjs +10 -0
  51. package/dist/chunk-Q52ZEL62.mjs +1 -0
  52. package/dist/chunk-QRS7DJGS.js +103 -0
  53. package/dist/chunk-R26Y7LGJ.js +1 -0
  54. package/dist/{chunk-BFWX5GJZ.mjs → chunk-R3X4B4JJ.mjs} +56 -8
  55. package/dist/chunk-RBUYW6QQ.js +1 -0
  56. package/dist/chunk-RM7ACPTM.mjs +2601 -0
  57. package/dist/chunk-RODSGPBB.mjs +75 -0
  58. package/dist/chunk-SORWLKOK.js +1 -0
  59. package/dist/{chunk-T6ZBA6VJ.js → chunk-UHAV34YX.js} +9 -8
  60. package/dist/{chunk-GUSTCU2W.mjs → chunk-ULANYJ7Y.mjs} +1 -59
  61. package/dist/chunk-ULDE7QSN.js +70 -0
  62. package/dist/chunk-UT36VNVZ.mjs +47 -0
  63. package/dist/chunk-UY3H4PKB.js +71 -0
  64. package/dist/{chunk-KB7UXIQZ.mjs → chunk-VIVWFQG5.mjs} +3 -1
  65. package/dist/{chunk-ESZ7CBA2.js → chunk-VKBJ3SGT.js} +7 -5
  66. package/dist/{chunk-UM7WMXIU.js → chunk-W3YOQ5ZD.js} +265 -505
  67. package/dist/chunk-WOITB4JL.js +1 -0
  68. package/dist/{chunk-E42B4GSB.js → chunk-XGJL6DLV.js} +58 -7
  69. package/dist/chunk-YKZEKJMZ.mjs +1 -0
  70. package/dist/chunk-YRIBFIQ5.js +116 -0
  71. package/dist/chunk-ZFLZA7UP.mjs +1 -0
  72. package/dist/chunk-ZKUIUE7W.mjs +1 -0
  73. package/dist/chunk-ZWWJ3RRA.js +15 -0
  74. package/dist/data-grid.d.cts +241 -0
  75. package/dist/data-grid.d.ts +241 -0
  76. package/dist/data-grid.js +6486 -0
  77. package/dist/data-grid.mjs +6459 -0
  78. package/dist/data-table-CDQBo-Ve.d.ts +818 -0
  79. package/dist/data-table-jLzt6plY.d.cts +818 -0
  80. package/dist/data-table.d.cts +8 -42
  81. package/dist/data-table.d.ts +8 -42
  82. package/dist/data-table.js +61 -187
  83. package/dist/data-table.mjs +11 -5
  84. package/dist/finance.d.cts +534 -0
  85. package/dist/finance.d.ts +534 -0
  86. package/dist/finance.js +188 -0
  87. package/dist/finance.mjs +15 -0
  88. package/dist/forms.js +9 -6
  89. package/dist/forms.mjs +7 -4
  90. package/dist/{hooks-B2jU1GVT.d.ts → hooks-A55E0fgf.d.ts} +3 -2
  91. package/dist/{hooks-8ORd7T1A.d.cts → hooks-Bys_AZPI.d.cts} +3 -2
  92. package/dist/hooks.d.cts +1 -1
  93. package/dist/hooks.d.ts +1 -1
  94. package/dist/hooks.js +26 -23
  95. package/dist/hooks.mjs +6 -3
  96. package/dist/index.d.cts +536 -665
  97. package/dist/index.d.ts +536 -665
  98. package/dist/index.js +3830 -3408
  99. package/dist/index.mjs +2068 -1767
  100. package/dist/layouts.js +26 -25
  101. package/dist/layouts.mjs +5 -4
  102. package/dist/marketing-3d.js +1 -0
  103. package/dist/marketing-3d.mjs +1 -0
  104. package/dist/marketing.js +75 -74
  105. package/dist/marketing.mjs +5 -4
  106. package/dist/media.js +1 -0
  107. package/dist/media.mjs +1 -0
  108. package/dist/navigation.js +29 -28
  109. package/dist/navigation.mjs +7 -6
  110. package/dist/primitives.d.cts +72 -109
  111. package/dist/primitives.d.ts +72 -109
  112. package/dist/primitives.js +78 -72
  113. package/dist/primitives.mjs +8 -6
  114. package/dist/settings.js +9 -9
  115. package/dist/settings.mjs +4 -4
  116. package/package.json +21 -4
  117. package/dist/UnifiedTableControls-CG299y9h.d.ts +0 -1233
  118. package/dist/UnifiedTableControls-CIjRpNhy.d.cts +0 -1233
  119. package/dist/chunk-GMBGWOCR.mjs +0 -48
  120. package/dist/chunk-HBLKVQIQ.mjs +0 -23
  121. package/dist/chunk-HMAMMC72.js +0 -26
  122. package/dist/chunk-MVYRNJA6.js +0 -74
package/README.md CHANGED
@@ -9,7 +9,7 @@ settings, portal, media, and CSS exports.
9
9
  - `@caffeinebounce/ui/primitives` is the lightweight primitive-only entrypoint.
10
10
  - Feature subpaths include `./forms`, `./hooks`, `./layouts`, `./navigation`,
11
11
  `./marketing`, `./marketing-3d`, `./settings`, `./portal`, `./blog`,
12
- `./data-table`, `./charts`, `./editor`, `./media`, and `./styles.css`.
12
+ `./data-table` (tablecn/shadcn table + add-ons), `./finance` (financial statement table and controls), `./data-grid` (tablecn editable grid), `./charts`, `./editor`, `./media`, and `./styles.css`.
13
13
 
14
14
  ## Belongs Here
15
15
 
package/dist/blog.js CHANGED
@@ -1,7 +1,9 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
- var chunkPZRI43EZ_js = require('./chunk-PZRI43EZ.js');
4
+ var chunk46JYKBRX_js = require('./chunk-46JYKBRX.js');
4
5
  var chunkEYJJQVV4_js = require('./chunk-EYJJQVV4.js');
6
+ var chunkIJFPPLQW_js = require('./chunk-IJFPPLQW.js');
5
7
  require('./chunk-Q256HRYD.js');
6
8
  require('./chunk-ADIDI7AJ.js');
7
9
  var Image = require('next/image');
@@ -85,7 +87,7 @@ function BlogCardGrid({ posts, basePath = "/blog" }) {
85
87
  post.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground line-clamp-2", children: post.excerpt })
86
88
  ] }),
87
89
  post.tags && post.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkEYJJQVV4_js.CardFooter, { className: "pt-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: post.tags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
88
- chunkPZRI43EZ_js.Badge,
90
+ chunkIJFPPLQW_js.Badge,
89
91
  {
90
92
  variant: "secondary",
91
93
  className: "text-xs font-normal",
@@ -145,7 +147,7 @@ function BlogPostHeader({
145
147
  }) {
146
148
  return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-12", children: [
147
149
  tags && tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5 mb-4", children: tags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
148
- chunkPZRI43EZ_js.Badge,
150
+ chunkIJFPPLQW_js.Badge,
149
151
  {
150
152
  variant: "secondary",
151
153
  className: "text-xs font-normal",
@@ -198,10 +200,10 @@ var calloutConfig = {
198
200
  function Callout({ type = "note", title, children }) {
199
201
  const config = calloutConfig[type];
200
202
  const Icon = config.icon;
201
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkPZRI43EZ_js.Alert, { className: `my-6 ${config.className}`, children: [
203
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunk46JYKBRX_js.Alert, { className: `my-6 ${config.className}`, children: [
202
204
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-4 w-4" }),
203
- title && /* @__PURE__ */ jsxRuntime.jsx(chunkPZRI43EZ_js.AlertTitle, { children: title }),
204
- /* @__PURE__ */ jsxRuntime.jsx(chunkPZRI43EZ_js.AlertDescription, { children })
205
+ title && /* @__PURE__ */ jsxRuntime.jsx(chunk46JYKBRX_js.AlertTitle, { children: title }),
206
+ /* @__PURE__ */ jsxRuntime.jsx(chunk46JYKBRX_js.AlertDescription, { children })
205
207
  ] });
206
208
  }
207
209
  function Blockquote(props) {
package/dist/blog.mjs CHANGED
@@ -1,5 +1,7 @@
1
- import { Badge, Alert, AlertTitle, AlertDescription } from './chunk-GUSTCU2W.mjs';
1
+ "use client";
2
+ import { Alert, AlertTitle, AlertDescription } from './chunk-6NCRGHV3.mjs';
2
3
  import { Card, CardContent, CardHeader, CardFooter } from './chunk-YL7RZRHM.mjs';
4
+ import { Badge } from './chunk-ULANYJ7Y.mjs';
3
5
  import './chunk-MHZXUOGN.mjs';
4
6
  import './chunk-IMKLN273.mjs';
5
7
  import Image from 'next/image';
package/dist/charts.d.cts CHANGED
@@ -37,7 +37,7 @@ declare const ChartContainer: React.ForwardRefExoticComponent<Omit<React.ClassAt
37
37
  children: React.ComponentProps<typeof ResponsiveContainer>["children"];
38
38
  }, "ref"> & React.RefAttributes<HTMLDivElement>>;
39
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"> & {
40
+ declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<Omit<recharts.DefaultTooltipContentProps<recharts.TooltipValueType, recharts_types_component_DefaultTooltipContent.NameType>, "viewBox" | "label" | "payload" | "active" | "coordinate" | "accessibilityLayer"> & {
41
41
  active?: boolean;
42
42
  allowEscapeViewBox?: recharts_types_util_types.AllowInDimension;
43
43
  animationDuration?: recharts_types_util_types.AnimationDuration;
package/dist/charts.d.ts CHANGED
@@ -37,7 +37,7 @@ declare const ChartContainer: React.ForwardRefExoticComponent<Omit<React.ClassAt
37
37
  children: React.ComponentProps<typeof ResponsiveContainer>["children"];
38
38
  }, "ref"> & React.RefAttributes<HTMLDivElement>>;
39
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"> & {
40
+ declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<Omit<recharts.DefaultTooltipContentProps<recharts.TooltipValueType, recharts_types_component_DefaultTooltipContent.NameType>, "viewBox" | "label" | "payload" | "active" | "coordinate" | "accessibilityLayer"> & {
41
41
  active?: boolean;
42
42
  allowEscapeViewBox?: recharts_types_util_types.AllowInDimension;
43
43
  animationDuration?: recharts_types_util_types.AnimationDuration;
@@ -1,8 +1,9 @@
1
- import { Card, CardHeader, CardTitle, CardContent, CardFooter } from './chunk-YL7RZRHM.mjs';
1
+ "use client";
2
2
  import { cx, sectionToneClasses, sectionPaddingClasses, hasWindow, clamp } from './chunk-T5R6HUDG.mjs';
3
- import { Container } from './chunk-RVEFPVZF.mjs';
4
- import { Separator } from './chunk-ZKUIUE7W.mjs';
3
+ import { Container } from './chunk-C57MX3BG.mjs';
4
+ import { Card, CardHeader, CardTitle, CardContent, CardFooter } from './chunk-YL7RZRHM.mjs';
5
5
  import { Button } from './chunk-VBD4Q5LL.mjs';
6
+ import { Separator } from './chunk-ZKUIUE7W.mjs';
6
7
  import { cn } from './chunk-IMKLN273.mjs';
7
8
  import React, { memo, useRef, useCallback, useEffect, useState, useMemo, useId, createElement } from 'react';
8
9
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
@@ -1,12 +1,13 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var chunkR26Y7LGJ_js = require('./chunk-R26Y7LGJ.js');
4
- var chunkC4UT5V3P_js = require('./chunk-C4UT5V3P.js');
5
- var chunkE42B4GSB_js = require('./chunk-E42B4GSB.js');
6
- var chunkLQCVRWVF_js = require('./chunk-LQCVRWVF.js');
7
- var chunkHMAMMC72_js = require('./chunk-HMAMMC72.js');
8
5
  var chunkRBUYW6QQ_js = require('./chunk-RBUYW6QQ.js');
6
+ var chunkOWHI5VGJ_js = require('./chunk-OWHI5VGJ.js');
9
7
  var chunk6TGV2DNP_js = require('./chunk-6TGV2DNP.js');
8
+ var chunkXGJL6DLV_js = require('./chunk-XGJL6DLV.js');
9
+ var chunkLQCVRWVF_js = require('./chunk-LQCVRWVF.js');
10
+ var chunkOCO3Z5YA_js = require('./chunk-OCO3Z5YA.js');
10
11
  var chunkJ6OLBSZR_js = require('./chunk-J6OLBSZR.js');
11
12
  var chunkSORWLKOK_js = require('./chunk-SORWLKOK.js');
12
13
  var chunkDQWHYBV2_js = require('./chunk-DQWHYBV2.js');
@@ -188,7 +189,7 @@ function AppSwitcher({
188
189
  const pathname = navigation.usePathname();
189
190
  const router = navigation.useRouter();
190
191
  const [open, setOpen] = react.useState(false);
191
- const Shortcut = ShortcutComponent || chunkE42B4GSB_js.KeyboardShortcut;
192
+ const Shortcut = ShortcutComponent || chunkXGJL6DLV_js.KeyboardShortcut;
192
193
  const activeApp = react.useMemo(() => {
193
194
  if (getActiveAppId) {
194
195
  const activeId = getActiveAppId(pathname);
@@ -225,9 +226,9 @@ function AppSwitcher({
225
226
  if (!activeApp) {
226
227
  return null;
227
228
  }
228
- return /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkJ6OLBSZR_js.DropdownMenu, { open, onOpenChange: setOpen, children: [
229
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkJ6OLBSZR_js.DropdownMenu, { open, onOpenChange: setOpen, children: [
229
230
  /* @__PURE__ */ jsxRuntime.jsx(chunkJ6OLBSZR_js.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
230
- chunkE42B4GSB_js.SidebarMenuButton,
231
+ chunkXGJL6DLV_js.SidebarMenuButton,
231
232
  {
232
233
  size: "lg",
233
234
  className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
@@ -338,7 +339,7 @@ function ComingSoonButton({
338
339
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-3.5 w-3.5 transition-transform duration-200 group-hover:scale-110 [&>svg]:h-full [&>svg]:w-full", children: icon }),
339
340
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
340
341
  shortcutKey && /* @__PURE__ */ jsxRuntime.jsx(
341
- chunkE42B4GSB_js.KeyboardShortcut,
342
+ chunkXGJL6DLV_js.KeyboardShortcut,
342
343
  {
343
344
  visible: shortcutsVisible,
344
345
  className: "ml-0.5 hidden uppercase md:inline-flex",
@@ -383,10 +384,10 @@ function EntitySwitcher({
383
384
  className,
384
385
  ShortcutComponent
385
386
  }) {
386
- const Shortcut = ShortcutComponent || chunkE42B4GSB_js.KeyboardShortcut;
387
+ const Shortcut = ShortcutComponent || chunkXGJL6DLV_js.KeyboardShortcut;
387
388
  const [open, setOpen] = react.useState(false);
388
389
  const [logoHovered, setLogoHovered] = react.useState(false);
389
- const { state: sidebarState } = chunkE42B4GSB_js.useSidebar();
390
+ const { state: sidebarState } = chunkXGJL6DLV_js.useSidebar();
390
391
  const isCollapsed = sidebarState === "collapsed";
391
392
  const handleKeyDown = react.useCallback(
392
393
  (event) => {
@@ -416,14 +417,14 @@ function EntitySwitcher({
416
417
  return () => window.removeEventListener("keydown", handleKeyDown);
417
418
  }, [handleKeyDown, enableKeyboardShortcuts]);
418
419
  if (loading) {
419
- return /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkE42B4GSB_js.SidebarMenuButton, { size: "lg", disabled: true, children: [
420
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-8 w-8 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkHMAMMC72_js.Spinner, { size: "sm" }) }),
420
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXGJL6DLV_js.SidebarMenuButton, { size: "lg", disabled: true, children: [
421
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-8 w-8 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkOCO3Z5YA_js.SizedSpinner, { size: "sm" }) }),
421
422
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid min-w-0 flex-1 text-left text-sm leading-tight group-data-[collapsible=icon]:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-muted-foreground", children: "Loading..." }) })
422
423
  ] }) }) });
423
424
  }
424
425
  if (!activeEntity) {
425
426
  const gradientId = userId || "default";
426
- return /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkE42B4GSB_js.SidebarMenuButton, { size: "lg", onClick: onAddNew, disabled: !onAddNew, children: [
427
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXGJL6DLV_js.SidebarMenuButton, { size: "lg", onClick: onAddNew, disabled: !onAddNew, children: [
427
428
  /* @__PURE__ */ jsxRuntime.jsx(
428
429
  "div",
429
430
  {
@@ -440,9 +441,9 @@ function EntitySwitcher({
440
441
  }
441
442
  const displayName = getDisplayName(activeEntity);
442
443
  const initials = getInitials(activeEntity);
443
- return /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkJ6OLBSZR_js.DropdownMenu, { open, onOpenChange: setOpen, children: [
444
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenu, { className, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.SidebarMenuItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkJ6OLBSZR_js.DropdownMenu, { open, onOpenChange: setOpen, children: [
444
445
  /* @__PURE__ */ jsxRuntime.jsx(chunkJ6OLBSZR_js.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
445
- chunkE42B4GSB_js.SidebarMenuButton,
446
+ chunkXGJL6DLV_js.SidebarMenuButton,
446
447
  {
447
448
  size: "lg",
448
449
  className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
@@ -451,7 +452,7 @@ function EntitySwitcher({
451
452
  onMouseLeave: () => setLogoHovered(false),
452
453
  children: [
453
454
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex h-8 w-8 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs(
454
- chunkE42B4GSB_js.Avatar,
455
+ chunkXGJL6DLV_js.Avatar,
455
456
  {
456
457
  className: "h-8 w-8 rounded-lg",
457
458
  style: {
@@ -461,7 +462,7 @@ function EntitySwitcher({
461
462
  },
462
463
  children: [
463
464
  activeEntity.logoUrl && /* @__PURE__ */ jsxRuntime.jsx(
464
- chunkE42B4GSB_js.AvatarImage,
465
+ chunkXGJL6DLV_js.AvatarImage,
465
466
  {
466
467
  src: activeEntity.logoUrl,
467
468
  alt: displayName,
@@ -469,7 +470,7 @@ function EntitySwitcher({
469
470
  }
470
471
  ),
471
472
  /* @__PURE__ */ jsxRuntime.jsx(
472
- chunkE42B4GSB_js.AvatarFallback,
473
+ chunkXGJL6DLV_js.AvatarFallback,
473
474
  {
474
475
  className: "rounded-lg text-xs font-medium text-white",
475
476
  style: chunkQ256HRYD_js.getAvatarGradient(activeEntity.id).style,
@@ -505,9 +506,9 @@ function EntitySwitcher({
505
506
  onClick: () => onSelect(entity),
506
507
  className: "gap-2 p-2",
507
508
  children: [
508
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 w-6", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkE42B4GSB_js.Avatar, { className: "h-6 w-6 rounded-md", children: [
509
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 w-6", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXGJL6DLV_js.Avatar, { className: "h-6 w-6 rounded-md", children: [
509
510
  entity.logoUrl && /* @__PURE__ */ jsxRuntime.jsx(
510
- chunkE42B4GSB_js.AvatarImage,
511
+ chunkXGJL6DLV_js.AvatarImage,
511
512
  {
512
513
  src: entity.logoUrl,
513
514
  alt: name,
@@ -515,7 +516,7 @@ function EntitySwitcher({
515
516
  }
516
517
  ),
517
518
  /* @__PURE__ */ jsxRuntime.jsx(
518
- chunkE42B4GSB_js.AvatarFallback,
519
+ chunkXGJL6DLV_js.AvatarFallback,
519
520
  {
520
521
  className: "rounded-md text-xs font-medium text-white",
521
522
  style: chunkQ256HRYD_js.getAvatarGradient(entity.id).style,
@@ -595,7 +596,7 @@ function Footer({
595
596
  );
596
597
  }
597
598
  return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: chunkADIDI7AJ_js.cn("bg-muted/50 border-t", className), children: /* @__PURE__ */ jsxRuntime.jsxs(
598
- chunkC4UT5V3P_js.Container,
599
+ chunkOWHI5VGJ_js.Container,
599
600
  {
600
601
  "data-slot": "footer-container",
601
602
  className: chunkADIDI7AJ_js.cn("py-12 md:py-16", containerClassName),
@@ -684,7 +685,7 @@ function BrandFooter({
684
685
  }
685
686
  ),
686
687
  /* @__PURE__ */ jsxRuntime.jsxs(
687
- chunkC4UT5V3P_js.Container,
688
+ chunkOWHI5VGJ_js.Container,
688
689
  {
689
690
  "data-slot": "footer-container",
690
691
  className: chunkADIDI7AJ_js.cn("py-16 md:py-20", containerClassName),
@@ -803,7 +804,7 @@ function MinimalFooter({
803
804
  }) {
804
805
  const allLinks = linkGroups.flatMap((g) => g.links);
805
806
  return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: chunkADIDI7AJ_js.cn("bg-background border-t border-border", className), children: /* @__PURE__ */ jsxRuntime.jsx(
806
- chunkC4UT5V3P_js.Container,
807
+ chunkOWHI5VGJ_js.Container,
807
808
  {
808
809
  "data-slot": "footer-container",
809
810
  className: chunkADIDI7AJ_js.cn("py-6", containerClassName),
@@ -1022,7 +1023,7 @@ function Navbar({
1022
1023
  },
1023
1024
  children: [
1024
1025
  /* @__PURE__ */ jsxRuntime.jsxs(
1025
- chunkC4UT5V3P_js.Container,
1026
+ chunkOWHI5VGJ_js.Container,
1026
1027
  {
1027
1028
  "data-slot": "navbar-container",
1028
1029
  className: chunkADIDI7AJ_js.cn(
@@ -1252,7 +1253,7 @@ function Navbar({
1252
1253
  height: `calc(100dvh - ${mobileMenuTop}px)`
1253
1254
  } : void 0,
1254
1255
  children: /* @__PURE__ */ jsxRuntime.jsx(
1255
- chunkC4UT5V3P_js.Container,
1256
+ chunkOWHI5VGJ_js.Container,
1256
1257
  {
1257
1258
  "data-slot": "navbar-mobile-menu-container",
1258
1259
  className: chunkADIDI7AJ_js.cn(
@@ -1473,7 +1474,7 @@ function NavbarUserMenu({
1473
1474
  return items;
1474
1475
  }, [additionalItems, onSignOut]);
1475
1476
  if (loading) {
1476
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex h-8 w-8 items-center justify-center rounded-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkHMAMMC72_js.Spinner, { size: "sm" }) });
1477
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex h-8 w-8 items-center justify-center rounded-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkOCO3Z5YA_js.SizedSpinner, { size: "sm" }) });
1477
1478
  }
1478
1479
  const metadata = user.metadata || {};
1479
1480
  const avatarUrl = profile?.avatarUrl || profile?.avatar_url || metadata.picture || metadata.avatar_url;
@@ -1483,7 +1484,7 @@ function NavbarUserMenu({
1483
1484
  const displayName = `${firstName} ${lastName}`.trim() || user.email || "User";
1484
1485
  const initials = `${firstName?.[0] || ""}${lastName?.[0] || ""}`.toUpperCase() || "U";
1485
1486
  return /* @__PURE__ */ jsxRuntime.jsx(
1486
- chunkE42B4GSB_js.UserAvatarMenu,
1487
+ chunkXGJL6DLV_js.UserAvatarMenu,
1487
1488
  {
1488
1489
  user: {
1489
1490
  id: user.id,
@@ -1503,10 +1504,10 @@ function NavbarUserMenu({
1503
1504
  type: "button",
1504
1505
  className: "inline-flex h-8 w-8 items-center justify-center rounded-full focus:outline-none overflow-hidden *:hover:brightness-110 *:transition-all",
1505
1506
  children: [
1506
- /* @__PURE__ */ jsxRuntime.jsxs(chunkE42B4GSB_js.Avatar, { className: "h-7 w-7", children: [
1507
- avatarUrl && /* @__PURE__ */ jsxRuntime.jsx(chunkE42B4GSB_js.AvatarImage, { src: avatarUrl, alt: displayName }),
1507
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGJL6DLV_js.Avatar, { className: "h-7 w-7", children: [
1508
+ avatarUrl && /* @__PURE__ */ jsxRuntime.jsx(chunkXGJL6DLV_js.AvatarImage, { src: avatarUrl, alt: displayName }),
1508
1509
  /* @__PURE__ */ jsxRuntime.jsx(
1509
- chunkE42B4GSB_js.AvatarFallback,
1510
+ chunkXGJL6DLV_js.AvatarFallback,
1510
1511
  {
1511
1512
  className: "text-xs font-medium text-white",
1512
1513
  style: chunkQ256HRYD_js.getAvatarGradient(user.id).style,
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
@@ -62,50 +62,7 @@ function AlertDescription({
62
62
  }
63
63
  );
64
64
  }
65
- var badgeVariants = classVarianceAuthority.cva(
66
- "inline-flex items-center border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
67
- {
68
- variants: {
69
- variant: {
70
- default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
71
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
72
- destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
73
- outline: "text-foreground",
74
- success: "border-transparent bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400",
75
- warning: "border-transparent bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400",
76
- muted: "border-transparent bg-muted text-muted-foreground"
77
- },
78
- shape: {
79
- pill: "rounded-full",
80
- rounded: "rounded-md",
81
- square: "rounded-none"
82
- },
83
- size: {
84
- sm: "px-1 text-[9px]",
85
- default: "px-1.5 text-[10px]",
86
- lg: "px-2 py-0.5 text-xs"
87
- }
88
- },
89
- defaultVariants: {
90
- variant: "default",
91
- shape: "pill",
92
- size: "default"
93
- }
94
- }
95
- );
96
- function Badge({ className, variant, shape, size, ...props }) {
97
- return /* @__PURE__ */ jsxRuntime.jsx(
98
- "div",
99
- {
100
- "data-slot": "badge",
101
- className: chunkADIDI7AJ_js.cn(badgeVariants({ variant, shape, size }), className),
102
- ...props
103
- }
104
- );
105
- }
106
65
 
107
66
  exports.Alert = Alert;
108
67
  exports.AlertDescription = AlertDescription;
109
68
  exports.AlertTitle = AlertTitle;
110
- exports.Badge = Badge;
111
- exports.badgeVariants = badgeVariants;
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ // src/hooks/spreadsheetWorkbook.ts
4
+ function escapeXml(value) {
5
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
6
+ }
7
+ function styleId(style) {
8
+ if (!style) return void 0;
9
+ const map = {
10
+ header: "Header",
11
+ text: "Text",
12
+ number: "Number",
13
+ currency: "Currency",
14
+ percent: "Percent",
15
+ totalLabel: "TotalLabel",
16
+ totalNumber: "TotalNumber"
17
+ };
18
+ return map[style];
19
+ }
20
+ function excelColumnName(columnIndex) {
21
+ let n = columnIndex + 1;
22
+ let result = "";
23
+ while (n > 0) {
24
+ const rem = (n - 1) % 26;
25
+ result = String.fromCharCode(65 + rem) + result;
26
+ n = Math.floor((n - 1) / 26);
27
+ }
28
+ return result;
29
+ }
30
+ function buildSpreadsheetWorkbookXml({
31
+ worksheetName,
32
+ rows
33
+ }) {
34
+ const xmlRows = rows.map(
35
+ (row) => `<Row>${row.map((cell) => {
36
+ const inferredType = cell.type ?? (typeof cell.value === "number" || cell.formula ? "Number" : "String");
37
+ const rawValue = cell.value ?? "";
38
+ const value = inferredType === "Number" ? Number(rawValue || 0) : escapeXml(String(rawValue));
39
+ const style = styleId(cell.style);
40
+ const styleAttr = style ? ` ss:StyleID="${style}"` : "";
41
+ const formulaAttr = cell.formula ? ` ss:Formula="=${escapeXml(cell.formula)}"` : "";
42
+ return `<Cell${styleAttr}${formulaAttr}><Data ss:Type="${inferredType}">${value}</Data></Cell>`;
43
+ }).join("")}</Row>`
44
+ ).join("\n");
45
+ return `<?xml version="1.0" encoding="UTF-8"?>
46
+ <?mso-application progid="Excel.Sheet"?>
47
+ <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
48
+ <Styles>
49
+ <Style ss:ID="Header"><Font ss:Bold="1"/><Interior ss:Color="#F3F4F6" ss:Pattern="Solid"/></Style>
50
+ <Style ss:ID="Text"><NumberFormat ss:Format="@"/></Style>
51
+ <Style ss:ID="Number"><NumberFormat ss:Format="#,##0.00"/></Style>
52
+ <Style ss:ID="Currency"><NumberFormat ss:Format="$#,##0.00;[Red]($#,##0.00)"/></Style>
53
+ <Style ss:ID="Percent"><NumberFormat ss:Format="0.00%"/></Style>
54
+ <Style ss:ID="TotalLabel"><Font ss:Bold="1"/><Interior ss:Color="#F9FAFB" ss:Pattern="Solid"/></Style>
55
+ <Style ss:ID="TotalNumber"><Font ss:Bold="1"/><NumberFormat ss:Format="$#,##0.00;[Red]($#,##0.00)"/><Interior ss:Color="#F9FAFB" ss:Pattern="Solid"/></Style>
56
+ </Styles>
57
+ <Worksheet ss:Name="${escapeXml(worksheetName)}"><Table>
58
+ ${xmlRows}
59
+ </Table></Worksheet></Workbook>`;
60
+ }
61
+ function downloadExcelXml(xml, filename) {
62
+ const blob = new Blob([xml], {
63
+ type: "application/vnd.ms-excel;charset=utf-8;"
64
+ });
65
+ const url = URL.createObjectURL(blob);
66
+ const link = document.createElement("a");
67
+ link.href = url;
68
+ link.download = `${filename}.xls`;
69
+ link.click();
70
+ URL.revokeObjectURL(url);
71
+ }
72
+
73
+ exports.buildSpreadsheetWorkbookXml = buildSpreadsheetWorkbookXml;
74
+ exports.downloadExcelXml = downloadExcelXml;
75
+ exports.excelColumnName = excelColumnName;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var StudioEditorSDK = require('@grapesjs/studio-sdk/react');
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { cn } from './chunk-IMKLN273.mjs';
2
3
  import * as DialogPrimitive from '@radix-ui/react-dialog';
3
4
  import { X } from 'lucide-react';