@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.
- package/README.md +1 -1
- package/dist/blog.js +8 -6
- package/dist/blog.mjs +3 -1
- package/dist/charts.d.cts +1 -1
- package/dist/charts.d.ts +1 -1
- package/dist/{chunk-6DVWMJ3H.mjs → chunk-2EFVMX6V.mjs} +4 -3
- package/dist/chunk-33JR5SYE.js +1 -0
- package/dist/{chunk-OZZWDIOY.js → chunk-375DECW4.js} +32 -31
- package/dist/chunk-3NDB4YPC.js +1 -0
- package/dist/{chunk-PZRI43EZ.js → chunk-46JYKBRX.js} +0 -43
- package/dist/chunk-5D55OVD5.js +75 -0
- package/dist/chunk-5RW4PYZ6.js +1 -0
- package/dist/chunk-5THF4YP6.mjs +1 -0
- package/dist/{chunk-JORVSG52.js → chunk-663CFAHS.js} +212 -269
- package/dist/chunk-6BUBNZPG.mjs +1 -0
- package/dist/chunk-6HKJDV43.mjs +48 -0
- package/dist/chunk-6NCRGHV3.mjs +64 -0
- package/dist/{chunk-OLAAXLXY.mjs → chunk-6QAKQG57.mjs} +5 -4
- package/dist/chunk-72JGQ7IJ.mjs +1 -0
- package/dist/{chunk-N6AFNFZR.mjs → chunk-7ERVZXIN.mjs} +215 -270
- package/dist/chunk-7IKHZKAC.js +1 -0
- package/dist/chunk-APFEP5B7.mjs +100 -0
- package/dist/chunk-C3OADNSG.js +348 -0
- package/dist/{chunk-RVEFPVZF.mjs → chunk-C57MX3BG.mjs} +1 -0
- package/dist/{chunk-CC4KUIKC.js → chunk-DH5Z3ETN.js} +67 -45
- package/dist/chunk-DYWZ23QT.mjs +90 -0
- package/dist/{chunk-KRRIRS6A.mjs → chunk-E67IR6HU.mjs} +31 -9
- package/dist/{chunk-D3QXPL47.mjs → chunk-EXQSWHLD.mjs} +7 -6
- package/dist/{chunk-ZOA7B32D.js → chunk-F35KL6TX.js} +10 -9
- package/dist/{chunk-YSLD2HLP.mjs → chunk-FFJC66KO.mjs} +2 -1
- package/dist/chunk-FRRS2YZH.mjs +1 -0
- package/dist/chunk-G5TQWWQA.mjs +1 -0
- package/dist/{chunk-MPZFPU4X.js → chunk-GMBLPQ3I.js} +4 -3
- package/dist/chunk-IJFPPLQW.js +50 -0
- package/dist/chunk-J6OLBSZR.js +1 -0
- package/dist/chunk-KGGQ5NZV.js +1 -0
- package/dist/chunk-KHCC5UKW.mjs +1 -0
- package/dist/{chunk-BMFQG6RA.mjs → chunk-KJIX6V32.mjs} +108 -1885
- package/dist/chunk-LABHD4PU.js +109 -0
- package/dist/chunk-LQCVRWVF.js +1 -0
- package/dist/{chunk-GAIQJCAZ.js → chunk-LT5VD4KR.js} +150 -1953
- package/dist/{chunk-7DHKQODW.mjs → chunk-LTLCIRZY.mjs} +257 -474
- package/dist/chunk-N5BHXWR3.mjs +34 -0
- package/dist/chunk-OCO3Z5YA.js +37 -0
- package/dist/chunk-OFQLWSUR.mjs +1 -0
- package/dist/chunk-OIJ7XMDV.mjs +71 -0
- package/dist/chunk-ORBH4IBC.mjs +316 -0
- package/dist/{chunk-C4UT5V3P.js → chunk-OWHI5VGJ.js} +1 -0
- package/dist/chunk-OWWOAYIY.js +2652 -0
- package/dist/chunk-PFHOXDSW.mjs +10 -0
- package/dist/chunk-Q52ZEL62.mjs +1 -0
- package/dist/chunk-QRS7DJGS.js +103 -0
- package/dist/chunk-R26Y7LGJ.js +1 -0
- package/dist/{chunk-BFWX5GJZ.mjs → chunk-R3X4B4JJ.mjs} +56 -8
- package/dist/chunk-RBUYW6QQ.js +1 -0
- package/dist/chunk-RM7ACPTM.mjs +2601 -0
- package/dist/chunk-RODSGPBB.mjs +75 -0
- package/dist/chunk-SORWLKOK.js +1 -0
- package/dist/{chunk-T6ZBA6VJ.js → chunk-UHAV34YX.js} +9 -8
- package/dist/{chunk-GUSTCU2W.mjs → chunk-ULANYJ7Y.mjs} +1 -59
- package/dist/chunk-ULDE7QSN.js +70 -0
- package/dist/chunk-UT36VNVZ.mjs +47 -0
- package/dist/chunk-UY3H4PKB.js +71 -0
- package/dist/{chunk-KB7UXIQZ.mjs → chunk-VIVWFQG5.mjs} +3 -1
- package/dist/{chunk-ESZ7CBA2.js → chunk-VKBJ3SGT.js} +7 -5
- package/dist/{chunk-UM7WMXIU.js → chunk-W3YOQ5ZD.js} +265 -505
- package/dist/chunk-WOITB4JL.js +1 -0
- package/dist/{chunk-E42B4GSB.js → chunk-XGJL6DLV.js} +58 -7
- package/dist/chunk-YKZEKJMZ.mjs +1 -0
- package/dist/chunk-YRIBFIQ5.js +116 -0
- package/dist/chunk-ZFLZA7UP.mjs +1 -0
- package/dist/chunk-ZKUIUE7W.mjs +1 -0
- package/dist/chunk-ZWWJ3RRA.js +15 -0
- package/dist/data-grid.d.cts +241 -0
- package/dist/data-grid.d.ts +241 -0
- package/dist/data-grid.js +6486 -0
- package/dist/data-grid.mjs +6459 -0
- package/dist/data-table-CDQBo-Ve.d.ts +818 -0
- package/dist/data-table-jLzt6plY.d.cts +818 -0
- package/dist/data-table.d.cts +8 -42
- package/dist/data-table.d.ts +8 -42
- package/dist/data-table.js +61 -187
- package/dist/data-table.mjs +11 -5
- package/dist/finance.d.cts +534 -0
- package/dist/finance.d.ts +534 -0
- package/dist/finance.js +188 -0
- package/dist/finance.mjs +15 -0
- package/dist/forms.js +9 -6
- package/dist/forms.mjs +7 -4
- package/dist/{hooks-B2jU1GVT.d.ts → hooks-A55E0fgf.d.ts} +3 -2
- package/dist/{hooks-8ORd7T1A.d.cts → hooks-Bys_AZPI.d.cts} +3 -2
- package/dist/hooks.d.cts +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +26 -23
- package/dist/hooks.mjs +6 -3
- package/dist/index.d.cts +536 -665
- package/dist/index.d.ts +536 -665
- package/dist/index.js +3830 -3408
- package/dist/index.mjs +2068 -1767
- package/dist/layouts.js +26 -25
- package/dist/layouts.mjs +5 -4
- package/dist/marketing-3d.js +1 -0
- package/dist/marketing-3d.mjs +1 -0
- package/dist/marketing.js +75 -74
- package/dist/marketing.mjs +5 -4
- package/dist/media.js +1 -0
- package/dist/media.mjs +1 -0
- package/dist/navigation.js +29 -28
- package/dist/navigation.mjs +7 -6
- package/dist/primitives.d.cts +72 -109
- package/dist/primitives.d.ts +72 -109
- package/dist/primitives.js +78 -72
- package/dist/primitives.mjs +8 -6
- package/dist/settings.js +9 -9
- package/dist/settings.mjs +4 -4
- package/package.json +21 -4
- package/dist/UnifiedTableControls-CG299y9h.d.ts +0 -1233
- package/dist/UnifiedTableControls-CIjRpNhy.d.cts +0 -1233
- package/dist/chunk-GMBGWOCR.mjs +0 -48
- package/dist/chunk-HBLKVQIQ.mjs +0 -23
- package/dist/chunk-HMAMMC72.js +0 -26
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
204
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
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
|
-
|
|
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" | "
|
|
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" | "
|
|
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
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
import { cx, sectionToneClasses, sectionPaddingClasses, hasWindow, clamp } from './chunk-T5R6HUDG.mjs';
|
|
3
|
-
import { Container } from './chunk-
|
|
4
|
-
import {
|
|
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';
|
package/dist/chunk-33JR5SYE.js
CHANGED
|
@@ -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 ||
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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 ||
|
|
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 } =
|
|
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(
|
|
420
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-8 w-8 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
1507
|
-
avatarUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
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
|
-
|
|
1510
|
+
chunkXGJL6DLV_js.AvatarFallback,
|
|
1510
1511
|
{
|
|
1511
1512
|
className: "text-xs font-medium text-white",
|
|
1512
1513
|
style: chunkQ256HRYD_js.getAvatarGradient(user.id).style,
|
package/dist/chunk-3NDB4YPC.js
CHANGED
|
@@ -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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
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;
|
package/dist/chunk-5RW4PYZ6.js
CHANGED
package/dist/chunk-5THF4YP6.mjs
CHANGED