@caffeinebounce/ui 0.62.3 → 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 +7 -6
- package/dist/blog.mjs +2 -1
- package/dist/charts.d.cts +1 -1
- package/dist/charts.d.ts +1 -1
- package/dist/{chunk-6DVWMJ3H.mjs → chunk-2EFVMX6V.mjs} +3 -3
- package/dist/{chunk-6ZJCK6KH.js → chunk-375DECW4.js} +31 -31
- package/dist/{chunk-PZRI43EZ.js → chunk-46JYKBRX.js} +0 -43
- package/dist/chunk-5D55OVD5.js +75 -0
- package/dist/{chunk-JORVSG52.js → chunk-663CFAHS.js} +211 -269
- package/dist/chunk-6HKJDV43.mjs +48 -0
- package/dist/chunk-6NCRGHV3.mjs +64 -0
- package/dist/{chunk-OLAAXLXY.mjs → chunk-6QAKQG57.mjs} +4 -4
- package/dist/{chunk-N6AFNFZR.mjs → chunk-7ERVZXIN.mjs} +214 -270
- package/dist/chunk-APFEP5B7.mjs +100 -0
- package/dist/chunk-C3OADNSG.js +348 -0
- package/dist/{chunk-GIJQE3JR.js → chunk-DH5Z3ETN.js} +66 -45
- package/dist/chunk-DYWZ23QT.mjs +90 -0
- package/dist/{chunk-DTVWRRFN.mjs → chunk-E67IR6HU.mjs} +30 -9
- package/dist/{chunk-OVNLC5RD.mjs → chunk-EXQSWHLD.mjs} +6 -6
- package/dist/{chunk-ZOA7B32D.js → chunk-F35KL6TX.js} +9 -9
- package/dist/{chunk-YSLD2HLP.mjs → chunk-FFJC66KO.mjs} +1 -1
- package/dist/{chunk-MPZFPU4X.js → chunk-GMBLPQ3I.js} +3 -3
- package/dist/chunk-IJFPPLQW.js +50 -0
- package/dist/{chunk-BMFQG6RA.mjs → chunk-KJIX6V32.mjs} +107 -1885
- package/dist/chunk-LABHD4PU.js +109 -0
- package/dist/{chunk-GAIQJCAZ.js → chunk-LT5VD4KR.js} +149 -1953
- package/dist/{chunk-7DHKQODW.mjs → chunk-LTLCIRZY.mjs} +256 -474
- package/dist/chunk-N5BHXWR3.mjs +34 -0
- package/dist/chunk-OCO3Z5YA.js +37 -0
- package/dist/chunk-OIJ7XMDV.mjs +71 -0
- package/dist/chunk-ORBH4IBC.mjs +316 -0
- package/dist/chunk-OWWOAYIY.js +2652 -0
- package/dist/chunk-PFHOXDSW.mjs +10 -0
- package/dist/chunk-QRS7DJGS.js +103 -0
- package/dist/{chunk-NXPEJ2UR.mjs → chunk-R3X4B4JJ.mjs} +53 -6
- package/dist/chunk-RM7ACPTM.mjs +2601 -0
- package/dist/chunk-RODSGPBB.mjs +75 -0
- package/dist/{chunk-T6ZBA6VJ.js → chunk-UHAV34YX.js} +8 -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} +2 -1
- package/dist/{chunk-ESZ7CBA2.js → chunk-VKBJ3SGT.js} +6 -5
- package/dist/{chunk-UM7WMXIU.js → chunk-W3YOQ5ZD.js} +264 -505
- package/dist/{chunk-GHOFYK2E.js → chunk-XGJL6DLV.js} +55 -5
- package/dist/chunk-YRIBFIQ5.js +116 -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 +3829 -3408
- package/dist/index.mjs +2067 -1767
- package/dist/layouts.js +25 -25
- package/dist/layouts.mjs +4 -4
- package/dist/marketing.js +74 -74
- package/dist/marketing.mjs +4 -4
- package/dist/navigation.js +28 -28
- package/dist/navigation.mjs +6 -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 +17 -1
- package/dist/UnifiedTableControls-CG299y9h.d.ts +0 -1233
- package/dist/UnifiedTableControls-CIjRpNhy.d.cts +0 -1233
- package/dist/chunk-GMBGWOCR.mjs +0 -49
- package/dist/chunk-HBLKVQIQ.mjs +0 -23
- package/dist/chunk-HMAMMC72.js +0 -26
- package/dist/chunk-MVYRNJA6.js +0 -75
- /package/dist/{chunk-RVEFPVZF.mjs → chunk-C57MX3BG.mjs} +0 -0
- /package/dist/{chunk-C4UT5V3P.js → chunk-OWHI5VGJ.js} +0 -0
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,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunk46JYKBRX_js = require('./chunk-46JYKBRX.js');
|
|
5
5
|
var chunkEYJJQVV4_js = require('./chunk-EYJJQVV4.js');
|
|
6
|
+
var chunkIJFPPLQW_js = require('./chunk-IJFPPLQW.js');
|
|
6
7
|
require('./chunk-Q256HRYD.js');
|
|
7
8
|
require('./chunk-ADIDI7AJ.js');
|
|
8
9
|
var Image = require('next/image');
|
|
@@ -86,7 +87,7 @@ function BlogCardGrid({ posts, basePath = "/blog" }) {
|
|
|
86
87
|
post.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground line-clamp-2", children: post.excerpt })
|
|
87
88
|
] }),
|
|
88
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(
|
|
89
|
-
|
|
90
|
+
chunkIJFPPLQW_js.Badge,
|
|
90
91
|
{
|
|
91
92
|
variant: "secondary",
|
|
92
93
|
className: "text-xs font-normal",
|
|
@@ -146,7 +147,7 @@ function BlogPostHeader({
|
|
|
146
147
|
}) {
|
|
147
148
|
return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-12", children: [
|
|
148
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(
|
|
149
|
-
|
|
150
|
+
chunkIJFPPLQW_js.Badge,
|
|
150
151
|
{
|
|
151
152
|
variant: "secondary",
|
|
152
153
|
className: "text-xs font-normal",
|
|
@@ -199,10 +200,10 @@ var calloutConfig = {
|
|
|
199
200
|
function Callout({ type = "note", title, children }) {
|
|
200
201
|
const config = calloutConfig[type];
|
|
201
202
|
const Icon = config.icon;
|
|
202
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
203
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk46JYKBRX_js.Alert, { className: `my-6 ${config.className}`, children: [
|
|
203
204
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-4 w-4" }),
|
|
204
|
-
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
205
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
205
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(chunk46JYKBRX_js.AlertTitle, { children: title }),
|
|
206
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk46JYKBRX_js.AlertDescription, { children })
|
|
206
207
|
] });
|
|
207
208
|
}
|
|
208
209
|
function Blockquote(props) {
|
package/dist/blog.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { Alert, AlertTitle, AlertDescription } from './chunk-6NCRGHV3.mjs';
|
|
3
3
|
import { Card, CardContent, CardHeader, CardFooter } from './chunk-YL7RZRHM.mjs';
|
|
4
|
+
import { Badge } from './chunk-ULANYJ7Y.mjs';
|
|
4
5
|
import './chunk-MHZXUOGN.mjs';
|
|
5
6
|
import './chunk-IMKLN273.mjs';
|
|
6
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,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { Card, CardHeader, CardTitle, CardContent, CardFooter } from './chunk-YL7RZRHM.mjs';
|
|
3
2
|
import { cx, sectionToneClasses, sectionPaddingClasses, hasWindow, clamp } from './chunk-T5R6HUDG.mjs';
|
|
4
|
-
import { Container } from './chunk-
|
|
5
|
-
import {
|
|
3
|
+
import { Container } from './chunk-C57MX3BG.mjs';
|
|
4
|
+
import { Card, CardHeader, CardTitle, CardContent, CardFooter } from './chunk-YL7RZRHM.mjs';
|
|
6
5
|
import { Button } from './chunk-VBD4Q5LL.mjs';
|
|
6
|
+
import { Separator } from './chunk-ZKUIUE7W.mjs';
|
|
7
7
|
import { cn } from './chunk-IMKLN273.mjs';
|
|
8
8
|
import React, { memo, useRef, useCallback, useEffect, useState, useMemo, useId, createElement } from 'react';
|
|
9
9
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkR26Y7LGJ_js = require('./chunk-R26Y7LGJ.js');
|
|
5
|
-
var chunkC4UT5V3P_js = require('./chunk-C4UT5V3P.js');
|
|
6
|
-
var chunkGHOFYK2E_js = require('./chunk-GHOFYK2E.js');
|
|
7
|
-
var chunkLQCVRWVF_js = require('./chunk-LQCVRWVF.js');
|
|
8
|
-
var chunkHMAMMC72_js = require('./chunk-HMAMMC72.js');
|
|
9
5
|
var chunkRBUYW6QQ_js = require('./chunk-RBUYW6QQ.js');
|
|
6
|
+
var chunkOWHI5VGJ_js = require('./chunk-OWHI5VGJ.js');
|
|
10
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');
|
|
11
11
|
var chunkJ6OLBSZR_js = require('./chunk-J6OLBSZR.js');
|
|
12
12
|
var chunkSORWLKOK_js = require('./chunk-SORWLKOK.js');
|
|
13
13
|
var chunkDQWHYBV2_js = require('./chunk-DQWHYBV2.js');
|
|
@@ -189,7 +189,7 @@ function AppSwitcher({
|
|
|
189
189
|
const pathname = navigation.usePathname();
|
|
190
190
|
const router = navigation.useRouter();
|
|
191
191
|
const [open, setOpen] = react.useState(false);
|
|
192
|
-
const Shortcut = ShortcutComponent ||
|
|
192
|
+
const Shortcut = ShortcutComponent || chunkXGJL6DLV_js.KeyboardShortcut;
|
|
193
193
|
const activeApp = react.useMemo(() => {
|
|
194
194
|
if (getActiveAppId) {
|
|
195
195
|
const activeId = getActiveAppId(pathname);
|
|
@@ -226,9 +226,9 @@ function AppSwitcher({
|
|
|
226
226
|
if (!activeApp) {
|
|
227
227
|
return null;
|
|
228
228
|
}
|
|
229
|
-
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: [
|
|
230
230
|
/* @__PURE__ */ jsxRuntime.jsx(chunkJ6OLBSZR_js.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
231
|
-
|
|
231
|
+
chunkXGJL6DLV_js.SidebarMenuButton,
|
|
232
232
|
{
|
|
233
233
|
size: "lg",
|
|
234
234
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
@@ -339,7 +339,7 @@ function ComingSoonButton({
|
|
|
339
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 }),
|
|
340
340
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
|
|
341
341
|
shortcutKey && /* @__PURE__ */ jsxRuntime.jsx(
|
|
342
|
-
|
|
342
|
+
chunkXGJL6DLV_js.KeyboardShortcut,
|
|
343
343
|
{
|
|
344
344
|
visible: shortcutsVisible,
|
|
345
345
|
className: "ml-0.5 hidden uppercase md:inline-flex",
|
|
@@ -384,10 +384,10 @@ function EntitySwitcher({
|
|
|
384
384
|
className,
|
|
385
385
|
ShortcutComponent
|
|
386
386
|
}) {
|
|
387
|
-
const Shortcut = ShortcutComponent ||
|
|
387
|
+
const Shortcut = ShortcutComponent || chunkXGJL6DLV_js.KeyboardShortcut;
|
|
388
388
|
const [open, setOpen] = react.useState(false);
|
|
389
389
|
const [logoHovered, setLogoHovered] = react.useState(false);
|
|
390
|
-
const { state: sidebarState } =
|
|
390
|
+
const { state: sidebarState } = chunkXGJL6DLV_js.useSidebar();
|
|
391
391
|
const isCollapsed = sidebarState === "collapsed";
|
|
392
392
|
const handleKeyDown = react.useCallback(
|
|
393
393
|
(event) => {
|
|
@@ -417,14 +417,14 @@ function EntitySwitcher({
|
|
|
417
417
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
418
418
|
}, [handleKeyDown, enableKeyboardShortcuts]);
|
|
419
419
|
if (loading) {
|
|
420
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
421
|
-
/* @__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" }) }),
|
|
422
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..." }) })
|
|
423
423
|
] }) }) });
|
|
424
424
|
}
|
|
425
425
|
if (!activeEntity) {
|
|
426
426
|
const gradientId = userId || "default";
|
|
427
|
-
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: [
|
|
428
428
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
429
429
|
"div",
|
|
430
430
|
{
|
|
@@ -441,9 +441,9 @@ function EntitySwitcher({
|
|
|
441
441
|
}
|
|
442
442
|
const displayName = getDisplayName(activeEntity);
|
|
443
443
|
const initials = getInitials(activeEntity);
|
|
444
|
-
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: [
|
|
445
445
|
/* @__PURE__ */ jsxRuntime.jsx(chunkJ6OLBSZR_js.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
446
|
-
|
|
446
|
+
chunkXGJL6DLV_js.SidebarMenuButton,
|
|
447
447
|
{
|
|
448
448
|
size: "lg",
|
|
449
449
|
className: "data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",
|
|
@@ -452,7 +452,7 @@ function EntitySwitcher({
|
|
|
452
452
|
onMouseLeave: () => setLogoHovered(false),
|
|
453
453
|
children: [
|
|
454
454
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative flex h-8 w-8 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
455
|
-
|
|
455
|
+
chunkXGJL6DLV_js.Avatar,
|
|
456
456
|
{
|
|
457
457
|
className: "h-8 w-8 rounded-lg",
|
|
458
458
|
style: {
|
|
@@ -462,7 +462,7 @@ function EntitySwitcher({
|
|
|
462
462
|
},
|
|
463
463
|
children: [
|
|
464
464
|
activeEntity.logoUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
465
|
-
|
|
465
|
+
chunkXGJL6DLV_js.AvatarImage,
|
|
466
466
|
{
|
|
467
467
|
src: activeEntity.logoUrl,
|
|
468
468
|
alt: displayName,
|
|
@@ -470,7 +470,7 @@ function EntitySwitcher({
|
|
|
470
470
|
}
|
|
471
471
|
),
|
|
472
472
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
473
|
-
|
|
473
|
+
chunkXGJL6DLV_js.AvatarFallback,
|
|
474
474
|
{
|
|
475
475
|
className: "rounded-lg text-xs font-medium text-white",
|
|
476
476
|
style: chunkQ256HRYD_js.getAvatarGradient(activeEntity.id).style,
|
|
@@ -506,9 +506,9 @@ function EntitySwitcher({
|
|
|
506
506
|
onClick: () => onSelect(entity),
|
|
507
507
|
className: "gap-2 p-2",
|
|
508
508
|
children: [
|
|
509
|
-
/* @__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: [
|
|
510
510
|
entity.logoUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
511
|
-
|
|
511
|
+
chunkXGJL6DLV_js.AvatarImage,
|
|
512
512
|
{
|
|
513
513
|
src: entity.logoUrl,
|
|
514
514
|
alt: name,
|
|
@@ -516,7 +516,7 @@ function EntitySwitcher({
|
|
|
516
516
|
}
|
|
517
517
|
),
|
|
518
518
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
519
|
-
|
|
519
|
+
chunkXGJL6DLV_js.AvatarFallback,
|
|
520
520
|
{
|
|
521
521
|
className: "rounded-md text-xs font-medium text-white",
|
|
522
522
|
style: chunkQ256HRYD_js.getAvatarGradient(entity.id).style,
|
|
@@ -596,7 +596,7 @@ function Footer({
|
|
|
596
596
|
);
|
|
597
597
|
}
|
|
598
598
|
return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: chunkADIDI7AJ_js.cn("bg-muted/50 border-t", className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
599
|
-
|
|
599
|
+
chunkOWHI5VGJ_js.Container,
|
|
600
600
|
{
|
|
601
601
|
"data-slot": "footer-container",
|
|
602
602
|
className: chunkADIDI7AJ_js.cn("py-12 md:py-16", containerClassName),
|
|
@@ -685,7 +685,7 @@ function BrandFooter({
|
|
|
685
685
|
}
|
|
686
686
|
),
|
|
687
687
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
688
|
-
|
|
688
|
+
chunkOWHI5VGJ_js.Container,
|
|
689
689
|
{
|
|
690
690
|
"data-slot": "footer-container",
|
|
691
691
|
className: chunkADIDI7AJ_js.cn("py-16 md:py-20", containerClassName),
|
|
@@ -804,7 +804,7 @@ function MinimalFooter({
|
|
|
804
804
|
}) {
|
|
805
805
|
const allLinks = linkGroups.flatMap((g) => g.links);
|
|
806
806
|
return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: chunkADIDI7AJ_js.cn("bg-background border-t border-border", className), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
807
|
-
|
|
807
|
+
chunkOWHI5VGJ_js.Container,
|
|
808
808
|
{
|
|
809
809
|
"data-slot": "footer-container",
|
|
810
810
|
className: chunkADIDI7AJ_js.cn("py-6", containerClassName),
|
|
@@ -1023,7 +1023,7 @@ function Navbar({
|
|
|
1023
1023
|
},
|
|
1024
1024
|
children: [
|
|
1025
1025
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1026
|
-
|
|
1026
|
+
chunkOWHI5VGJ_js.Container,
|
|
1027
1027
|
{
|
|
1028
1028
|
"data-slot": "navbar-container",
|
|
1029
1029
|
className: chunkADIDI7AJ_js.cn(
|
|
@@ -1253,7 +1253,7 @@ function Navbar({
|
|
|
1253
1253
|
height: `calc(100dvh - ${mobileMenuTop}px)`
|
|
1254
1254
|
} : void 0,
|
|
1255
1255
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1256
|
-
|
|
1256
|
+
chunkOWHI5VGJ_js.Container,
|
|
1257
1257
|
{
|
|
1258
1258
|
"data-slot": "navbar-mobile-menu-container",
|
|
1259
1259
|
className: chunkADIDI7AJ_js.cn(
|
|
@@ -1474,7 +1474,7 @@ function NavbarUserMenu({
|
|
|
1474
1474
|
return items;
|
|
1475
1475
|
}, [additionalItems, onSignOut]);
|
|
1476
1476
|
if (loading) {
|
|
1477
|
-
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" }) });
|
|
1478
1478
|
}
|
|
1479
1479
|
const metadata = user.metadata || {};
|
|
1480
1480
|
const avatarUrl = profile?.avatarUrl || profile?.avatar_url || metadata.picture || metadata.avatar_url;
|
|
@@ -1484,7 +1484,7 @@ function NavbarUserMenu({
|
|
|
1484
1484
|
const displayName = `${firstName} ${lastName}`.trim() || user.email || "User";
|
|
1485
1485
|
const initials = `${firstName?.[0] || ""}${lastName?.[0] || ""}`.toUpperCase() || "U";
|
|
1486
1486
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1487
|
-
|
|
1487
|
+
chunkXGJL6DLV_js.UserAvatarMenu,
|
|
1488
1488
|
{
|
|
1489
1489
|
user: {
|
|
1490
1490
|
id: user.id,
|
|
@@ -1504,10 +1504,10 @@ function NavbarUserMenu({
|
|
|
1504
1504
|
type: "button",
|
|
1505
1505
|
className: "inline-flex h-8 w-8 items-center justify-center rounded-full focus:outline-none overflow-hidden *:hover:brightness-110 *:transition-all",
|
|
1506
1506
|
children: [
|
|
1507
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1508
|
-
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 }),
|
|
1509
1509
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1510
|
-
|
|
1510
|
+
chunkXGJL6DLV_js.AvatarFallback,
|
|
1511
1511
|
{
|
|
1512
1512
|
className: "text-xs font-medium text-white",
|
|
1513
1513
|
style: chunkQ256HRYD_js.getAvatarGradient(user.id).style,
|
|
@@ -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;
|