@tangle-network/sandbox-ui 0.35.0 → 0.37.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/dist/{chunk-75Z5H43I.js → chunk-4PCDRCDA.js} +47 -7
- package/dist/{chunk-7ZA5SEK3.js → chunk-4ZZUMXPX.js} +94 -0
- package/dist/dashboard.d.ts +23 -1
- package/dist/dashboard.js +2 -2
- package/dist/globals.css +62 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/logo-CZ6moVvw.d.ts +18 -0
- package/dist/pages.js +57 -54
- package/dist/primitives.d.ts +68 -11
- package/dist/primitives.js +9 -1
- package/dist/styles.css +62 -9
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Button,
|
|
3
3
|
Logo
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4ZZUMXPX.js";
|
|
5
5
|
import {
|
|
6
6
|
cn
|
|
7
7
|
} from "./chunk-EI44GEQ5.js";
|
|
@@ -1496,6 +1496,10 @@ function DashboardLayoutInner({
|
|
|
1496
1496
|
topNavLinks,
|
|
1497
1497
|
activeTopNavHref,
|
|
1498
1498
|
LinkComponent = DefaultLink2,
|
|
1499
|
+
logoHref = "/",
|
|
1500
|
+
onLogoClick,
|
|
1501
|
+
logoAriaLabel = "Toggle navigation",
|
|
1502
|
+
labeledRail = false,
|
|
1499
1503
|
footer,
|
|
1500
1504
|
railFooter,
|
|
1501
1505
|
profileMenuItems,
|
|
@@ -1522,7 +1526,7 @@ function DashboardLayoutInner({
|
|
|
1522
1526
|
document.removeEventListener("keydown", keyHandler);
|
|
1523
1527
|
};
|
|
1524
1528
|
}, [notificationsOpen]);
|
|
1525
|
-
const { contentMargin, hidden, mode, hasPanels, panelOpen } = useSidebar();
|
|
1529
|
+
const { contentMargin, hidden, mode, hasPanels, panelOpen, toggleRail, railCollapsed } = useSidebar();
|
|
1526
1530
|
const modeSet = React6.useMemo(() => new Set(modeItems), [modeItems]);
|
|
1527
1531
|
const sidebarUser = React6.useMemo(
|
|
1528
1532
|
() => user ? { email: user.email, name: user.name, tier: user.tier, avatarUrl: user.avatarUrl } : void 0,
|
|
@@ -1532,7 +1536,34 @@ function DashboardLayoutInner({
|
|
|
1532
1536
|
const buildSidebarContent = React6.useCallback(
|
|
1533
1537
|
(showLabels) => /* @__PURE__ */ jsxs13(Fragment8, { children: [
|
|
1534
1538
|
/* @__PURE__ */ jsxs13(SidebarRail, { wide: showLabels, children: [
|
|
1535
|
-
/* @__PURE__ */ jsx14(SidebarRailHeader, { children:
|
|
1539
|
+
/* @__PURE__ */ jsx14(SidebarRailHeader, { children: onLogoClick ? /* @__PURE__ */ jsx14(
|
|
1540
|
+
"button",
|
|
1541
|
+
{
|
|
1542
|
+
type: "button",
|
|
1543
|
+
onClick: onLogoClick,
|
|
1544
|
+
"aria-label": logoAriaLabel,
|
|
1545
|
+
className: "p-1 rounded-md transition-colors hover:bg-muted/50",
|
|
1546
|
+
children: /* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: true })
|
|
1547
|
+
}
|
|
1548
|
+
) : labeledRail ? /* @__PURE__ */ jsx14(
|
|
1549
|
+
"button",
|
|
1550
|
+
{
|
|
1551
|
+
type: "button",
|
|
1552
|
+
onClick: toggleRail,
|
|
1553
|
+
"aria-label": railCollapsed ? "Expand navigation" : "Collapse navigation",
|
|
1554
|
+
"aria-expanded": !railCollapsed,
|
|
1555
|
+
className: "p-1 rounded-md transition-colors hover:bg-muted/50",
|
|
1556
|
+
children: /* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: true })
|
|
1557
|
+
}
|
|
1558
|
+
) : /* @__PURE__ */ jsx14(
|
|
1559
|
+
Link,
|
|
1560
|
+
{
|
|
1561
|
+
href: logoHref,
|
|
1562
|
+
to: logoHref,
|
|
1563
|
+
className: "p-1 rounded-md transition-colors hover:bg-muted/50",
|
|
1564
|
+
children: /* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: true })
|
|
1565
|
+
}
|
|
1566
|
+
) }),
|
|
1536
1567
|
/* @__PURE__ */ jsx14(SidebarRailNav, { children: navItems.map((item, i) => {
|
|
1537
1568
|
const isMode = modeSet.has(item.id);
|
|
1538
1569
|
const prevIsMode = i > 0 && modeSet.has(navItems[i - 1].id);
|
|
@@ -1586,6 +1617,12 @@ function DashboardLayoutInner({
|
|
|
1586
1617
|
[
|
|
1587
1618
|
Link,
|
|
1588
1619
|
variant,
|
|
1620
|
+
onLogoClick,
|
|
1621
|
+
logoAriaLabel,
|
|
1622
|
+
logoHref,
|
|
1623
|
+
labeledRail,
|
|
1624
|
+
toggleRail,
|
|
1625
|
+
railCollapsed,
|
|
1589
1626
|
navItems,
|
|
1590
1627
|
modeSet,
|
|
1591
1628
|
activeNavId,
|
|
@@ -1602,7 +1639,10 @@ function DashboardLayoutInner({
|
|
|
1602
1639
|
mode
|
|
1603
1640
|
]
|
|
1604
1641
|
);
|
|
1605
|
-
const sidebarContent = React6.useMemo(
|
|
1642
|
+
const sidebarContent = React6.useMemo(
|
|
1643
|
+
() => buildSidebarContent(labeledRail && !railCollapsed),
|
|
1644
|
+
[buildSidebarContent, labeledRail, railCollapsed]
|
|
1645
|
+
);
|
|
1606
1646
|
const mobileSidebarContent = React6.useMemo(() => buildSidebarContent(true), [buildSidebarContent]);
|
|
1607
1647
|
return /* @__PURE__ */ jsxs13("div", { className: cn("min-h-screen bg-background text-foreground", className), children: [
|
|
1608
1648
|
/* @__PURE__ */ jsxs13(
|
|
@@ -1615,7 +1655,7 @@ function DashboardLayoutInner({
|
|
|
1615
1655
|
},
|
|
1616
1656
|
children: [
|
|
1617
1657
|
/* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-8", children: [
|
|
1618
|
-
/* @__PURE__ */ jsx14(Link, { href:
|
|
1658
|
+
/* @__PURE__ */ jsx14(Link, { href: logoHref, to: logoHref, className: "lg:hidden flex items-center p-1 rounded-md hover:bg-muted/50 transition-colors", children: /* @__PURE__ */ jsx14(Logo, { variant, size: "sm", iconOnly: true }) }),
|
|
1619
1659
|
topNavLinks && topNavLinks.length > 0 && /* @__PURE__ */ jsx14("div", { className: "hidden md:flex gap-6", children: topNavLinks.map((link) => /* @__PURE__ */ jsx14(
|
|
1620
1660
|
Link,
|
|
1621
1661
|
{
|
|
@@ -1732,8 +1772,8 @@ function DashboardLayoutInner({
|
|
|
1732
1772
|
footer
|
|
1733
1773
|
] });
|
|
1734
1774
|
}
|
|
1735
|
-
function DashboardLayout({ defaultPanelOpen, defaultMode, ...props }) {
|
|
1736
|
-
return /* @__PURE__ */ jsx14(SidebarProvider, { defaultPanelOpen, defaultMode, hasPanels: (props.panels?.length ?? 0) > 0, children: /* @__PURE__ */ jsx14(DashboardLayoutInner, { defaultPanelOpen, defaultMode, ...props }) });
|
|
1775
|
+
function DashboardLayout({ defaultPanelOpen, defaultMode, labeledRail, ...props }) {
|
|
1776
|
+
return /* @__PURE__ */ jsx14(SidebarProvider, { defaultPanelOpen, defaultMode, labeledRail, hasPanels: (props.panels?.length ?? 0) > 0, children: /* @__PURE__ */ jsx14(DashboardLayoutInner, { defaultPanelOpen, defaultMode, labeledRail, ...props }) });
|
|
1737
1777
|
}
|
|
1738
1778
|
|
|
1739
1779
|
// src/dashboard/sidebar-layout.tsx
|
|
@@ -147,9 +147,103 @@ function Logo({ variant = "sandbox", size = "md", className, iconOnly = false })
|
|
|
147
147
|
}
|
|
148
148
|
Logo.displayName = "Logo";
|
|
149
149
|
|
|
150
|
+
// src/primitives/heading.tsx
|
|
151
|
+
import {
|
|
152
|
+
forwardRef
|
|
153
|
+
} from "react";
|
|
154
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
155
|
+
var VARIANT_CLASS = {
|
|
156
|
+
display: "font-display font-bold text-foreground text-[length:var(--font-size-display,3rem)] leading-[var(--line-height-display,1.05)] tracking-[var(--tracking-tight,-0.02em)]",
|
|
157
|
+
hero: "font-display font-bold text-foreground text-[length:var(--font-size-hero,2.5rem)] leading-[1.1] tracking-[var(--tracking-tight,-0.02em)]",
|
|
158
|
+
page: "font-display font-semibold text-foreground text-[length:var(--font-size-3xl,1.875rem)] leading-[var(--line-height-heading,1.15)] tracking-[var(--tracking-tight,-0.02em)]",
|
|
159
|
+
section: "font-display font-semibold text-foreground text-[length:var(--font-size-xl,1.25rem)] leading-[1.3] tracking-[var(--tracking-snug,-0.01em)]",
|
|
160
|
+
subsection: "font-semibold text-foreground text-[length:var(--font-size-lg,1rem)] leading-[1.4]",
|
|
161
|
+
eyebrow: "font-semibold uppercase text-muted-foreground text-[length:var(--font-size-sm,0.75rem)] leading-none tracking-[var(--tracking-wide,0.08em)]"
|
|
162
|
+
};
|
|
163
|
+
var DEFAULT_TAG = {
|
|
164
|
+
display: "h1",
|
|
165
|
+
hero: "h2",
|
|
166
|
+
page: "h1",
|
|
167
|
+
section: "h2",
|
|
168
|
+
subsection: "h3",
|
|
169
|
+
eyebrow: "p"
|
|
170
|
+
};
|
|
171
|
+
var Heading = forwardRef(function Heading2({ role, as, className, children, ...rest }, ref) {
|
|
172
|
+
const Tag = as ?? DEFAULT_TAG[role];
|
|
173
|
+
return /* @__PURE__ */ jsx2(Tag, { ref, className: cn(VARIANT_CLASS[role], className), ...rest, children });
|
|
174
|
+
});
|
|
175
|
+
function PageHeader({
|
|
176
|
+
title,
|
|
177
|
+
description,
|
|
178
|
+
eyebrow,
|
|
179
|
+
action,
|
|
180
|
+
className,
|
|
181
|
+
titleAs
|
|
182
|
+
}) {
|
|
183
|
+
return /* @__PURE__ */ jsxs2(
|
|
184
|
+
"div",
|
|
185
|
+
{
|
|
186
|
+
className: cn(
|
|
187
|
+
"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
|
|
188
|
+
className
|
|
189
|
+
),
|
|
190
|
+
children: [
|
|
191
|
+
/* @__PURE__ */ jsxs2("div", { className: "space-y-1.5", children: [
|
|
192
|
+
eyebrow ? /* @__PURE__ */ jsx2(Heading, { role: "eyebrow", children: eyebrow }) : null,
|
|
193
|
+
/* @__PURE__ */ jsx2(Heading, { role: "page", as: titleAs, children: title }),
|
|
194
|
+
description ? /* @__PURE__ */ jsx2("p", { className: "max-w-2xl text-[length:var(--font-size-base,0.9375rem)] text-muted-foreground leading-relaxed", children: description }) : null
|
|
195
|
+
] }),
|
|
196
|
+
action ? /* @__PURE__ */ jsx2("div", { className: "flex shrink-0 items-center gap-2", children: action }) : null
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
function SectionTitle({
|
|
202
|
+
title,
|
|
203
|
+
description,
|
|
204
|
+
action,
|
|
205
|
+
className
|
|
206
|
+
}) {
|
|
207
|
+
return /* @__PURE__ */ jsxs2(
|
|
208
|
+
"div",
|
|
209
|
+
{
|
|
210
|
+
className: cn(
|
|
211
|
+
"flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",
|
|
212
|
+
className
|
|
213
|
+
),
|
|
214
|
+
children: [
|
|
215
|
+
/* @__PURE__ */ jsxs2("div", { className: "space-y-1", children: [
|
|
216
|
+
/* @__PURE__ */ jsx2(Heading, { role: "section", children: title }),
|
|
217
|
+
description ? /* @__PURE__ */ jsx2("p", { className: "max-w-xl text-[length:var(--font-size-sm,0.75rem)] text-muted-foreground", children: description }) : null
|
|
218
|
+
] }),
|
|
219
|
+
action ? /* @__PURE__ */ jsx2("div", { className: "shrink-0", children: action }) : null
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// src/primitives/page-shell.tsx
|
|
226
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
227
|
+
function PageShell({ children, className }) {
|
|
228
|
+
return /* @__PURE__ */ jsx3(
|
|
229
|
+
"div",
|
|
230
|
+
{
|
|
231
|
+
className: cn(
|
|
232
|
+
"mx-auto w-full max-w-6xl space-y-8 px-6 py-8 lg:px-8",
|
|
233
|
+
className
|
|
234
|
+
),
|
|
235
|
+
children
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
150
240
|
export {
|
|
151
241
|
TangleKnot,
|
|
152
242
|
Logo,
|
|
243
|
+
Heading,
|
|
244
|
+
PageHeader,
|
|
245
|
+
SectionTitle,
|
|
246
|
+
PageShell,
|
|
153
247
|
Avatar,
|
|
154
248
|
AvatarFallback,
|
|
155
249
|
AvatarImage,
|
package/dist/dashboard.d.ts
CHANGED
|
@@ -654,6 +654,28 @@ interface DashboardLayoutProps {
|
|
|
654
654
|
topNavLinks?: TopNavLink[];
|
|
655
655
|
activeTopNavHref?: string;
|
|
656
656
|
LinkComponent?: React.ComponentType<any>;
|
|
657
|
+
/**
|
|
658
|
+
* Where the in-app logo links. Defaults to "/" (backward compatible);
|
|
659
|
+
* pass an in-app path (e.g. "/dashboard") so the logo never bounces an
|
|
660
|
+
* authenticated user back out to the public marketing homepage.
|
|
661
|
+
*/
|
|
662
|
+
logoHref?: string;
|
|
663
|
+
/**
|
|
664
|
+
* If provided, the rail logo becomes a button calling this instead of
|
|
665
|
+
* navigating — e.g. to toggle the sidebar. Takes precedence over logoHref.
|
|
666
|
+
*/
|
|
667
|
+
onLogoClick?: () => void;
|
|
668
|
+
/**
|
|
669
|
+
* Accessible label for the logo button when onLogoClick is set. Defaults to
|
|
670
|
+
* "Toggle navigation"; set it to match what onLogoClick actually does (e.g.
|
|
671
|
+
* "Open command palette") so screen readers don't announce a stale action.
|
|
672
|
+
*/
|
|
673
|
+
logoAriaLabel?: string;
|
|
674
|
+
/**
|
|
675
|
+
* Let the icon rail expand to a labeled rail. When true, the rail logo
|
|
676
|
+
* toggles between icon-only and labeled instead of navigating.
|
|
677
|
+
*/
|
|
678
|
+
labeledRail?: boolean;
|
|
657
679
|
footer?: React.ReactNode;
|
|
658
680
|
defaultPanelOpen?: boolean;
|
|
659
681
|
defaultMode?: string;
|
|
@@ -675,7 +697,7 @@ interface DashboardLayoutProps {
|
|
|
675
697
|
onMarkAllRead?: () => void;
|
|
676
698
|
};
|
|
677
699
|
}
|
|
678
|
-
declare function DashboardLayout({ defaultPanelOpen, defaultMode, ...props }: DashboardLayoutProps): react_jsx_runtime.JSX.Element;
|
|
700
|
+
declare function DashboardLayout({ defaultPanelOpen, defaultMode, labeledRail, ...props }: DashboardLayoutProps): react_jsx_runtime.JSX.Element;
|
|
679
701
|
|
|
680
702
|
/** A sub-destination revealed inside a nav item's right-flyout. */
|
|
681
703
|
interface SidebarLayoutFlyoutItem {
|
package/dist/dashboard.js
CHANGED
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
canAdminSandbox,
|
|
53
53
|
parseInsufficientBalance,
|
|
54
54
|
useSidebar
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-4PCDRCDA.js";
|
|
56
56
|
import {
|
|
57
57
|
BillingDashboard,
|
|
58
58
|
InfoPanel,
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
UsageChart,
|
|
62
62
|
formatPrice
|
|
63
63
|
} from "./chunk-2XNT74ZX.js";
|
|
64
|
-
import "./chunk-
|
|
64
|
+
import "./chunk-4ZZUMXPX.js";
|
|
65
65
|
import {
|
|
66
66
|
BackendSelector,
|
|
67
67
|
HARNESS_BRAND,
|
package/dist/globals.css
CHANGED
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
--container-sm: 24rem;
|
|
40
40
|
--container-md: 28rem;
|
|
41
41
|
--container-lg: 32rem;
|
|
42
|
+
--container-xl: 36rem;
|
|
42
43
|
--container-2xl: 42rem;
|
|
43
44
|
--container-3xl: 48rem;
|
|
44
45
|
--container-4xl: 56rem;
|
|
45
46
|
--container-5xl: 64rem;
|
|
46
47
|
--container-6xl: 72rem;
|
|
47
|
-
--container-7xl: 80rem;
|
|
48
48
|
--text-xs: 0.75rem;
|
|
49
49
|
--text-xs--line-height: calc(1 / 0.75);
|
|
50
50
|
--text-sm: 0.875rem;
|
|
@@ -1033,9 +1033,6 @@
|
|
|
1033
1033
|
.max-w-6xl {
|
|
1034
1034
|
max-width: var(--container-6xl);
|
|
1035
1035
|
}
|
|
1036
|
-
.max-w-7xl {
|
|
1037
|
-
max-width: var(--container-7xl);
|
|
1038
|
-
}
|
|
1039
1036
|
.max-w-\[14rem\] {
|
|
1040
1037
|
max-width: 14rem;
|
|
1041
1038
|
}
|
|
@@ -1093,6 +1090,9 @@
|
|
|
1093
1090
|
.max-w-sm {
|
|
1094
1091
|
max-width: var(--container-sm);
|
|
1095
1092
|
}
|
|
1093
|
+
.max-w-xl {
|
|
1094
|
+
max-width: var(--container-xl);
|
|
1095
|
+
}
|
|
1096
1096
|
.min-w-0 {
|
|
1097
1097
|
min-width: calc(var(--spacing) * 0);
|
|
1098
1098
|
}
|
|
@@ -2475,6 +2475,27 @@
|
|
|
2475
2475
|
.text-\[calc\(var\(--font-size-xs\)-1px\)\] {
|
|
2476
2476
|
font-size: calc(var(--font-size-xs) - 1px);
|
|
2477
2477
|
}
|
|
2478
|
+
.text-\[length\:var\(--font-size-3xl\,1\.875rem\)\] {
|
|
2479
|
+
font-size: var(--font-size-3xl,1.875rem);
|
|
2480
|
+
}
|
|
2481
|
+
.text-\[length\:var\(--font-size-base\,0\.9375rem\)\] {
|
|
2482
|
+
font-size: var(--font-size-base,0.9375rem);
|
|
2483
|
+
}
|
|
2484
|
+
.text-\[length\:var\(--font-size-display\,3rem\)\] {
|
|
2485
|
+
font-size: var(--font-size-display,3rem);
|
|
2486
|
+
}
|
|
2487
|
+
.text-\[length\:var\(--font-size-hero\,2\.5rem\)\] {
|
|
2488
|
+
font-size: var(--font-size-hero,2.5rem);
|
|
2489
|
+
}
|
|
2490
|
+
.text-\[length\:var\(--font-size-lg\,1rem\)\] {
|
|
2491
|
+
font-size: var(--font-size-lg,1rem);
|
|
2492
|
+
}
|
|
2493
|
+
.text-\[length\:var\(--font-size-sm\,0\.75rem\)\] {
|
|
2494
|
+
font-size: var(--font-size-sm,0.75rem);
|
|
2495
|
+
}
|
|
2496
|
+
.text-\[length\:var\(--font-size-xl\,1\.25rem\)\] {
|
|
2497
|
+
font-size: var(--font-size-xl,1.25rem);
|
|
2498
|
+
}
|
|
2478
2499
|
.leading-6 {
|
|
2479
2500
|
--tw-leading: calc(var(--spacing) * 6);
|
|
2480
2501
|
line-height: calc(var(--spacing) * 6);
|
|
@@ -2487,6 +2508,18 @@
|
|
|
2487
2508
|
--tw-leading: calc(var(--spacing) * 7);
|
|
2488
2509
|
line-height: calc(var(--spacing) * 7);
|
|
2489
2510
|
}
|
|
2511
|
+
.leading-\[1\.1\] {
|
|
2512
|
+
--tw-leading: 1.1;
|
|
2513
|
+
line-height: 1.1;
|
|
2514
|
+
}
|
|
2515
|
+
.leading-\[1\.3\] {
|
|
2516
|
+
--tw-leading: 1.3;
|
|
2517
|
+
line-height: 1.3;
|
|
2518
|
+
}
|
|
2519
|
+
.leading-\[1\.4\] {
|
|
2520
|
+
--tw-leading: 1.4;
|
|
2521
|
+
line-height: 1.4;
|
|
2522
|
+
}
|
|
2490
2523
|
.leading-\[1\.6\] {
|
|
2491
2524
|
--tw-leading: 1.6;
|
|
2492
2525
|
line-height: 1.6;
|
|
@@ -2499,6 +2532,14 @@
|
|
|
2499
2532
|
--tw-leading: var(--line-height-base);
|
|
2500
2533
|
line-height: var(--line-height-base);
|
|
2501
2534
|
}
|
|
2535
|
+
.leading-\[var\(--line-height-display\,1\.05\)\] {
|
|
2536
|
+
--tw-leading: var(--line-height-display,1.05);
|
|
2537
|
+
line-height: var(--line-height-display,1.05);
|
|
2538
|
+
}
|
|
2539
|
+
.leading-\[var\(--line-height-heading\,1\.15\)\] {
|
|
2540
|
+
--tw-leading: var(--line-height-heading,1.15);
|
|
2541
|
+
line-height: var(--line-height-heading,1.15);
|
|
2542
|
+
}
|
|
2502
2543
|
.leading-none {
|
|
2503
2544
|
--tw-leading: 1;
|
|
2504
2545
|
line-height: 1;
|
|
@@ -2583,6 +2624,18 @@
|
|
|
2583
2624
|
--tw-tracking: var(--chat-label-tracking,0.16em);
|
|
2584
2625
|
letter-spacing: var(--chat-label-tracking,0.16em);
|
|
2585
2626
|
}
|
|
2627
|
+
.tracking-\[var\(--tracking-snug\,-0\.01em\)\] {
|
|
2628
|
+
--tw-tracking: var(--tracking-snug,-0.01em);
|
|
2629
|
+
letter-spacing: var(--tracking-snug,-0.01em);
|
|
2630
|
+
}
|
|
2631
|
+
.tracking-\[var\(--tracking-tight\,-0\.02em\)\] {
|
|
2632
|
+
--tw-tracking: var(--tracking-tight,-0.02em);
|
|
2633
|
+
letter-spacing: var(--tracking-tight,-0.02em);
|
|
2634
|
+
}
|
|
2635
|
+
.tracking-\[var\(--tracking-wide\,0\.08em\)\] {
|
|
2636
|
+
--tw-tracking: var(--tracking-wide,0.08em);
|
|
2637
|
+
letter-spacing: var(--tracking-wide,0.08em);
|
|
2638
|
+
}
|
|
2586
2639
|
.tracking-normal {
|
|
2587
2640
|
--tw-tracking: var(--tracking-normal);
|
|
2588
2641
|
letter-spacing: var(--tracking-normal);
|
|
@@ -3762,6 +3815,11 @@
|
|
|
3762
3815
|
align-items: center;
|
|
3763
3816
|
}
|
|
3764
3817
|
}
|
|
3818
|
+
.sm\:items-start {
|
|
3819
|
+
@media (width >= 40rem) {
|
|
3820
|
+
align-items: flex-start;
|
|
3821
|
+
}
|
|
3822
|
+
}
|
|
3765
3823
|
.sm\:justify-between {
|
|
3766
3824
|
@media (width >= 40rem) {
|
|
3767
3825
|
justify-content: space-between;
|
|
@@ -3863,11 +3921,6 @@
|
|
|
3863
3921
|
align-items: center;
|
|
3864
3922
|
}
|
|
3865
3923
|
}
|
|
3866
|
-
.md\:items-end {
|
|
3867
|
-
@media (width >= 48rem) {
|
|
3868
|
-
align-items: flex-end;
|
|
3869
|
-
}
|
|
3870
|
-
}
|
|
3871
3924
|
.md\:justify-between {
|
|
3872
3925
|
@media (width >= 48rem) {
|
|
3873
3926
|
justify-content: space-between;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { ArtifactPane, ArtifactPaneProps, Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, Button, ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CodeBlock, CodeBlockProps, CopyButton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateProps, InlineCode, InlineCodeProps, Input, InputProps, Label, Progress, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, StatCardProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalDisplay, TerminalCursor as TerminalDisplayCursor, TerminalInput as TerminalDisplayInput, TerminalLine as TerminalDisplayLine, Textarea, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme, useToast } from '@tangle-network/ui/primitives';
|
|
2
|
-
export { Logo, LogoProps, TangleKnot } from './
|
|
2
|
+
export { L as Logo, a as LogoProps, T as TangleKnot } from './logo-CZ6moVvw.js';
|
|
3
3
|
export { CodeBlock as CodeBlockDisplay, Markdown, MarkdownProps } from '@tangle-network/ui/markdown';
|
|
4
4
|
export { AgentWorkbench, ApprovalConfidenceStat, ApprovalItem, ApprovalQueue, ApprovalQueueProps, AuditCheck, AuditResults, AuditResultsProps, BannerType, CalendarEvent, CalendarView, CalendarViewProps, ContextBadge, DirectoryPane, DirectoryPaneProps, FormAudit, RuntimePane, RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, SandboxWorkbenchArtifact, SandboxWorkbenchCustomArtifact, SandboxWorkbenchFileArtifact, SandboxWorkbenchLayoutOptions, SandboxWorkbenchMarkdownArtifact, SandboxWorkbenchOpenUIArtifact, SandboxWorkbenchProps, SandboxWorkbenchSessionProps, SessionActivityMonitor, SessionActivityMonitorProps, SessionCreatedDetail, SessionOptimisticController, SessionSidebar, SessionSidebarBadge, SessionSidebarFilter, SessionSidebarItem, SessionSidebarLink, SessionSidebarProps, ShellShouldRevalidateArgs, ShellShouldRevalidateOptions, StatusBanner, StatusBannerProps, StatusBar, StatusBarProps, TaskBoard, TaskBoardColumn, TaskBoardItem, TaskBoardProps, TerminalLine, TerminalPanel, TerminalProps, UseOptimisticSessionItemsOptions, WorkspaceLayout, WorkspaceLayoutProps, createShellShouldRevalidate, dispatchSessionCreated, shellShouldRevalidate, useOptimisticSessionItems } from './workspace.js';
|
|
5
5
|
export { OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode } from '@tangle-network/ui/openui';
|
package/dist/index.js
CHANGED
|
@@ -199,7 +199,7 @@ import {
|
|
|
199
199
|
canAdminSandbox,
|
|
200
200
|
parseInsufficientBalance,
|
|
201
201
|
useSidebar
|
|
202
|
-
} from "./chunk-
|
|
202
|
+
} from "./chunk-4PCDRCDA.js";
|
|
203
203
|
import {
|
|
204
204
|
BillingDashboard,
|
|
205
205
|
InfoPanel,
|
|
@@ -294,7 +294,7 @@ import {
|
|
|
294
294
|
buttonVariants,
|
|
295
295
|
useTheme,
|
|
296
296
|
useToast
|
|
297
|
-
} from "./chunk-
|
|
297
|
+
} from "./chunk-4ZZUMXPX.js";
|
|
298
298
|
import {
|
|
299
299
|
BackendSelector,
|
|
300
300
|
HARNESS_BRAND,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface LogoProps {
|
|
4
|
+
variant?: "sandbox";
|
|
5
|
+
size?: "sm" | "md" | "lg" | "xl";
|
|
6
|
+
className?: string;
|
|
7
|
+
iconOnly?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare function TangleKnot({ size, className }: {
|
|
10
|
+
size: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}): react_jsx_runtime.JSX.Element;
|
|
13
|
+
declare function Logo({ variant, size, className, iconOnly }: LogoProps): react_jsx_runtime.JSX.Element;
|
|
14
|
+
declare namespace Logo {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { Logo as L, TangleKnot as T, type LogoProps as a };
|
package/dist/pages.js
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
DialogHeader,
|
|
16
16
|
DialogTitle,
|
|
17
17
|
Input,
|
|
18
|
+
PageHeader,
|
|
18
19
|
Select,
|
|
19
20
|
SelectContent,
|
|
20
21
|
SelectItem,
|
|
@@ -22,7 +23,7 @@ import {
|
|
|
22
23
|
SelectValue,
|
|
23
24
|
Switch,
|
|
24
25
|
Textarea
|
|
25
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-4ZZUMXPX.js";
|
|
26
27
|
import "./chunk-NMR2CTGP.js";
|
|
27
28
|
import {
|
|
28
29
|
cn
|
|
@@ -2547,7 +2548,7 @@ function parseEnvText(text) {
|
|
|
2547
2548
|
}
|
|
2548
2549
|
|
|
2549
2550
|
// src/pages/secrets-page.tsx
|
|
2550
|
-
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2551
|
+
import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2551
2552
|
var MAX_IMPORT_FILE_BYTES = 256 * 1024;
|
|
2552
2553
|
function SecretsPage({ apiClient, className, teamSecretsHint }) {
|
|
2553
2554
|
const [secrets, setSecrets] = React6.useState([]);
|
|
@@ -2724,39 +2725,40 @@ function SecretsPage({ apiClient, className, teamSecretsHint }) {
|
|
|
2724
2725
|
return dateStr;
|
|
2725
2726
|
}
|
|
2726
2727
|
};
|
|
2727
|
-
return /* @__PURE__ */ jsxs7("div", { className: cn("mx-auto w-full max-w-
|
|
2728
|
-
/* @__PURE__ */
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2728
|
+
return /* @__PURE__ */ jsxs7("div", { className: cn("mx-auto w-full max-w-6xl space-y-8", className), children: [
|
|
2729
|
+
/* @__PURE__ */ jsx7(
|
|
2730
|
+
PageHeader,
|
|
2731
|
+
{
|
|
2732
|
+
title: "Environment Secrets",
|
|
2733
|
+
description: "Secrets are securely stored and automatically exposed as environment variables across all your sandboxes.",
|
|
2734
|
+
action: /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
2735
|
+
/* @__PURE__ */ jsxs7(
|
|
2736
|
+
"button",
|
|
2737
|
+
{
|
|
2738
|
+
type: "button",
|
|
2739
|
+
onClick: () => setIsImportOpen(true),
|
|
2740
|
+
className: "inline-flex items-center gap-2 rounded-lg border border-border bg-card px-4 py-2.5 text-sm font-semibold text-foreground hover:bg-muted transition-colors active:scale-[0.97]",
|
|
2741
|
+
children: [
|
|
2742
|
+
/* @__PURE__ */ jsx7(Upload, { className: "h-4 w-4" }),
|
|
2743
|
+
"Import .env"
|
|
2744
|
+
]
|
|
2745
|
+
}
|
|
2746
|
+
),
|
|
2747
|
+
/* @__PURE__ */ jsxs7(
|
|
2748
|
+
"button",
|
|
2749
|
+
{
|
|
2750
|
+
type: "button",
|
|
2751
|
+
onClick: () => setIsCreateOpen(true),
|
|
2752
|
+
className: "inline-flex items-center gap-2 rounded-lg bg-[var(--btn-primary-bg)] border border-[var(--border-accent,transparent)] px-5 py-2.5 text-sm font-semibold text-[var(--btn-primary-text)] hover:bg-[var(--btn-primary-hover)] transition-colors active:scale-[0.97]",
|
|
2753
|
+
children: [
|
|
2754
|
+
/* @__PURE__ */ jsx7(Plus3, { className: "h-4 w-4" }),
|
|
2755
|
+
"New Secret"
|
|
2756
|
+
]
|
|
2757
|
+
}
|
|
2758
|
+
)
|
|
2759
|
+
] })
|
|
2760
|
+
}
|
|
2761
|
+
),
|
|
2760
2762
|
teamSecretsHint && /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-3 rounded-lg border border-border bg-[var(--accent-surface-soft)]/40 px-4 py-3", children: [
|
|
2761
2763
|
/* @__PURE__ */ jsx7(Users, { className: "h-5 w-5 shrink-0 text-[var(--accent-text)]", "aria-hidden": "true" }),
|
|
2762
2764
|
/* @__PURE__ */ jsxs7("div", { className: "flex-1 text-sm", children: [
|
|
@@ -3571,25 +3573,26 @@ function StartupScriptsPage({ apiClient, className }) {
|
|
|
3571
3573
|
}));
|
|
3572
3574
|
};
|
|
3573
3575
|
const activeCount = scripts.filter((s) => s.enabled).length;
|
|
3574
|
-
return /* @__PURE__ */ jsxs9("div", { className: cn("mx-auto w-full max-w-
|
|
3575
|
-
/* @__PURE__ */
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3576
|
+
return /* @__PURE__ */ jsxs9("div", { className: cn("mx-auto w-full max-w-6xl space-y-8", className), children: [
|
|
3577
|
+
/* @__PURE__ */ jsx9(
|
|
3578
|
+
PageHeader,
|
|
3579
|
+
{
|
|
3580
|
+
title: "Startup Scripts",
|
|
3581
|
+
description: "Define scripts that run automatically when your sandboxes start. Scripts can access your encrypted secrets.",
|
|
3582
|
+
action: /* @__PURE__ */ jsxs9(
|
|
3583
|
+
"button",
|
|
3584
|
+
{
|
|
3585
|
+
type: "button",
|
|
3586
|
+
onClick: openCreate,
|
|
3587
|
+
className: "inline-flex items-center gap-2 rounded-lg bg-[var(--btn-primary-bg)] px-4 py-2.5 text-sm font-bold text-[var(--btn-primary-text)] shadow-sm transition-colors hover:bg-[var(--btn-primary-hover)]",
|
|
3588
|
+
children: [
|
|
3589
|
+
/* @__PURE__ */ jsx9(Plus4, { className: "h-4 w-4" }),
|
|
3590
|
+
"New Script"
|
|
3591
|
+
]
|
|
3592
|
+
}
|
|
3593
|
+
)
|
|
3594
|
+
}
|
|
3595
|
+
),
|
|
3593
3596
|
/* @__PURE__ */ jsxs9("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-4", children: [
|
|
3594
3597
|
/* @__PURE__ */ jsxs9("div", { className: "rounded-lg border border-border bg-card p-5 shadow-[var(--shadow-card)]", children: [
|
|
3595
3598
|
/* @__PURE__ */ jsx9("p", { className: "text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: "Total Scripts" }),
|
package/dist/primitives.d.ts
CHANGED
|
@@ -1,19 +1,76 @@
|
|
|
1
1
|
export { Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, Button, ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CodeBlock, CodeBlockProps, CopyButton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateProps, InlineCode, InlineCodeProps, Input, InputProps, Label, Progress, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, StatCardProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalCursor, TerminalDisplay, TerminalInput, TerminalLine, Textarea, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme, useToast } from '@tangle-network/ui/primitives';
|
|
2
|
+
export { L as Logo, a as LogoProps, T as TangleKnot } from './logo-CZ6moVvw.js';
|
|
2
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { HTMLAttributes, ElementType, ReactNode } from 'react';
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Canonical type roles for the Tangle design system. Every title in every
|
|
9
|
+
* product app should be a Heading (or a PageHeader / SectionTitle composite
|
|
10
|
+
* built on it) so size, weight, tracking, and leading stay identical across
|
|
11
|
+
* surfaces. Sizes/leadings/tracking resolve from @tangle-network/brand tokens
|
|
12
|
+
* (with literal fallbacks so the component still renders if brand styles are
|
|
13
|
+
* absent, e.g. in isolation tests or Storybook).
|
|
14
|
+
*
|
|
15
|
+
* Weights are deliberately quiet (Tangle Quiet): heroes at 700, titles at 600
|
|
16
|
+
* — never extrabold.
|
|
17
|
+
*
|
|
18
|
+
* Semantic-tag invariant: both `display` and `page` default to <h1>. Use at
|
|
19
|
+
* most one of them per page (the marketing hero OR the dashboard page title);
|
|
20
|
+
* if a page needs both, override the secondary one with `as` to keep a single
|
|
21
|
+
* <h1> for accessibility and SEO.
|
|
22
|
+
*/
|
|
23
|
+
type HeadingVariant = "display" | "hero" | "page" | "section" | "subsection" | "eyebrow";
|
|
24
|
+
/** @deprecated Renamed to {@link HeadingVariant}; kept as an alias. */
|
|
25
|
+
type HeadingRole = HeadingVariant;
|
|
26
|
+
interface HeadingProps extends Omit<HTMLAttributes<HTMLElement>, "role"> {
|
|
27
|
+
/** Type role from the design system (size + weight + tracking + leading). */
|
|
28
|
+
role: HeadingVariant;
|
|
29
|
+
/** Override the rendered element (defaults to the semantic tag for the role). */
|
|
30
|
+
as?: ElementType;
|
|
31
|
+
children: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Role-based heading. Forwards a ref to the underlying element and passes
|
|
35
|
+
* through standard HTML/ARIA/data-* attributes so it drops into tests,
|
|
36
|
+
* scroll-spy, and a11y tooling without friction.
|
|
37
|
+
*/
|
|
38
|
+
declare const Heading: React.ForwardRefExoticComponent<HeadingProps & React.RefAttributes<HTMLElement>>;
|
|
39
|
+
interface PageHeaderProps {
|
|
40
|
+
title: ReactNode;
|
|
41
|
+
description?: ReactNode;
|
|
42
|
+
/** Uppercase label rendered above the title. */
|
|
43
|
+
eyebrow?: ReactNode;
|
|
44
|
+
/** Primary action(s), right-aligned on wide viewports. */
|
|
45
|
+
action?: ReactNode;
|
|
46
|
+
className?: string;
|
|
47
|
+
/** Override the title element (default h1). */
|
|
48
|
+
titleAs?: ElementType;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Standard page header: one title size, one description style, one action
|
|
52
|
+
* slot — used by every page so titles never drift between surfaces.
|
|
53
|
+
*/
|
|
54
|
+
declare function PageHeader({ title, description, eyebrow, action, className, titleAs, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
55
|
+
interface SectionTitleProps {
|
|
56
|
+
title: ReactNode;
|
|
57
|
+
description?: ReactNode;
|
|
58
|
+
action?: ReactNode;
|
|
7
59
|
className?: string;
|
|
8
|
-
iconOnly?: boolean;
|
|
9
60
|
}
|
|
10
|
-
|
|
11
|
-
|
|
61
|
+
/** Section heading inside a page — smaller than PageHeader, same rhythm. */
|
|
62
|
+
declare function SectionTitle({ title, description, action, className, }: SectionTitleProps): react_jsx_runtime.JSX.Element;
|
|
63
|
+
|
|
64
|
+
interface PageShellProps {
|
|
65
|
+
children: ReactNode;
|
|
12
66
|
className?: string;
|
|
13
|
-
}): react_jsx_runtime.JSX.Element;
|
|
14
|
-
declare function Logo({ variant, size, className, iconOnly }: LogoProps): react_jsx_runtime.JSX.Element;
|
|
15
|
-
declare namespace Logo {
|
|
16
|
-
var displayName: string;
|
|
17
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Canonical page container — one max-width, one gutter, one vertical rhythm
|
|
70
|
+
* so every page sits on the same grid. Gutter widens on large viewports.
|
|
71
|
+
* Layout primitive (not a heading); kept in its own module so consumers
|
|
72
|
+
* looking for page layout don't have to reach into the typography file.
|
|
73
|
+
*/
|
|
74
|
+
declare function PageShell({ children, className }: PageShellProps): react_jsx_runtime.JSX.Element;
|
|
18
75
|
|
|
19
|
-
export {
|
|
76
|
+
export { Heading, type HeadingProps, type HeadingRole, type HeadingVariant, PageHeader, type PageHeaderProps, PageShell, type PageShellProps, SectionTitle, type SectionTitleProps };
|
package/dist/primitives.js
CHANGED
|
@@ -39,11 +39,15 @@ import {
|
|
|
39
39
|
DropdownMenuSubTrigger,
|
|
40
40
|
DropdownMenuTrigger,
|
|
41
41
|
EmptyState,
|
|
42
|
+
Heading,
|
|
42
43
|
InlineCode,
|
|
43
44
|
Input,
|
|
44
45
|
Label,
|
|
45
46
|
Logo,
|
|
47
|
+
PageHeader,
|
|
48
|
+
PageShell,
|
|
46
49
|
Progress,
|
|
50
|
+
SectionTitle,
|
|
47
51
|
SegmentedControl,
|
|
48
52
|
Select,
|
|
49
53
|
SelectContent,
|
|
@@ -87,7 +91,7 @@ import {
|
|
|
87
91
|
buttonVariants,
|
|
88
92
|
useTheme,
|
|
89
93
|
useToast
|
|
90
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-4ZZUMXPX.js";
|
|
91
95
|
import "./chunk-EI44GEQ5.js";
|
|
92
96
|
export {
|
|
93
97
|
Avatar,
|
|
@@ -130,11 +134,15 @@ export {
|
|
|
130
134
|
DropdownMenuSubTrigger,
|
|
131
135
|
DropdownMenuTrigger,
|
|
132
136
|
EmptyState,
|
|
137
|
+
Heading,
|
|
133
138
|
InlineCode,
|
|
134
139
|
Input,
|
|
135
140
|
Label,
|
|
136
141
|
Logo,
|
|
142
|
+
PageHeader,
|
|
143
|
+
PageShell,
|
|
137
144
|
Progress,
|
|
145
|
+
SectionTitle,
|
|
138
146
|
SegmentedControl,
|
|
139
147
|
Select,
|
|
140
148
|
SelectContent,
|
package/dist/styles.css
CHANGED
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
--container-sm: 24rem;
|
|
40
40
|
--container-md: 28rem;
|
|
41
41
|
--container-lg: 32rem;
|
|
42
|
+
--container-xl: 36rem;
|
|
42
43
|
--container-2xl: 42rem;
|
|
43
44
|
--container-3xl: 48rem;
|
|
44
45
|
--container-4xl: 56rem;
|
|
45
46
|
--container-5xl: 64rem;
|
|
46
47
|
--container-6xl: 72rem;
|
|
47
|
-
--container-7xl: 80rem;
|
|
48
48
|
--text-xs: 0.75rem;
|
|
49
49
|
--text-xs--line-height: calc(1 / 0.75);
|
|
50
50
|
--text-sm: 0.875rem;
|
|
@@ -1033,9 +1033,6 @@
|
|
|
1033
1033
|
.max-w-6xl {
|
|
1034
1034
|
max-width: var(--container-6xl);
|
|
1035
1035
|
}
|
|
1036
|
-
.max-w-7xl {
|
|
1037
|
-
max-width: var(--container-7xl);
|
|
1038
|
-
}
|
|
1039
1036
|
.max-w-\[14rem\] {
|
|
1040
1037
|
max-width: 14rem;
|
|
1041
1038
|
}
|
|
@@ -1093,6 +1090,9 @@
|
|
|
1093
1090
|
.max-w-sm {
|
|
1094
1091
|
max-width: var(--container-sm);
|
|
1095
1092
|
}
|
|
1093
|
+
.max-w-xl {
|
|
1094
|
+
max-width: var(--container-xl);
|
|
1095
|
+
}
|
|
1096
1096
|
.min-w-0 {
|
|
1097
1097
|
min-width: calc(var(--spacing) * 0);
|
|
1098
1098
|
}
|
|
@@ -2475,6 +2475,27 @@
|
|
|
2475
2475
|
.text-\[calc\(var\(--font-size-xs\)-1px\)\] {
|
|
2476
2476
|
font-size: calc(var(--font-size-xs) - 1px);
|
|
2477
2477
|
}
|
|
2478
|
+
.text-\[length\:var\(--font-size-3xl\,1\.875rem\)\] {
|
|
2479
|
+
font-size: var(--font-size-3xl,1.875rem);
|
|
2480
|
+
}
|
|
2481
|
+
.text-\[length\:var\(--font-size-base\,0\.9375rem\)\] {
|
|
2482
|
+
font-size: var(--font-size-base,0.9375rem);
|
|
2483
|
+
}
|
|
2484
|
+
.text-\[length\:var\(--font-size-display\,3rem\)\] {
|
|
2485
|
+
font-size: var(--font-size-display,3rem);
|
|
2486
|
+
}
|
|
2487
|
+
.text-\[length\:var\(--font-size-hero\,2\.5rem\)\] {
|
|
2488
|
+
font-size: var(--font-size-hero,2.5rem);
|
|
2489
|
+
}
|
|
2490
|
+
.text-\[length\:var\(--font-size-lg\,1rem\)\] {
|
|
2491
|
+
font-size: var(--font-size-lg,1rem);
|
|
2492
|
+
}
|
|
2493
|
+
.text-\[length\:var\(--font-size-sm\,0\.75rem\)\] {
|
|
2494
|
+
font-size: var(--font-size-sm,0.75rem);
|
|
2495
|
+
}
|
|
2496
|
+
.text-\[length\:var\(--font-size-xl\,1\.25rem\)\] {
|
|
2497
|
+
font-size: var(--font-size-xl,1.25rem);
|
|
2498
|
+
}
|
|
2478
2499
|
.leading-6 {
|
|
2479
2500
|
--tw-leading: calc(var(--spacing) * 6);
|
|
2480
2501
|
line-height: calc(var(--spacing) * 6);
|
|
@@ -2487,6 +2508,18 @@
|
|
|
2487
2508
|
--tw-leading: calc(var(--spacing) * 7);
|
|
2488
2509
|
line-height: calc(var(--spacing) * 7);
|
|
2489
2510
|
}
|
|
2511
|
+
.leading-\[1\.1\] {
|
|
2512
|
+
--tw-leading: 1.1;
|
|
2513
|
+
line-height: 1.1;
|
|
2514
|
+
}
|
|
2515
|
+
.leading-\[1\.3\] {
|
|
2516
|
+
--tw-leading: 1.3;
|
|
2517
|
+
line-height: 1.3;
|
|
2518
|
+
}
|
|
2519
|
+
.leading-\[1\.4\] {
|
|
2520
|
+
--tw-leading: 1.4;
|
|
2521
|
+
line-height: 1.4;
|
|
2522
|
+
}
|
|
2490
2523
|
.leading-\[1\.6\] {
|
|
2491
2524
|
--tw-leading: 1.6;
|
|
2492
2525
|
line-height: 1.6;
|
|
@@ -2499,6 +2532,14 @@
|
|
|
2499
2532
|
--tw-leading: var(--line-height-base);
|
|
2500
2533
|
line-height: var(--line-height-base);
|
|
2501
2534
|
}
|
|
2535
|
+
.leading-\[var\(--line-height-display\,1\.05\)\] {
|
|
2536
|
+
--tw-leading: var(--line-height-display,1.05);
|
|
2537
|
+
line-height: var(--line-height-display,1.05);
|
|
2538
|
+
}
|
|
2539
|
+
.leading-\[var\(--line-height-heading\,1\.15\)\] {
|
|
2540
|
+
--tw-leading: var(--line-height-heading,1.15);
|
|
2541
|
+
line-height: var(--line-height-heading,1.15);
|
|
2542
|
+
}
|
|
2502
2543
|
.leading-none {
|
|
2503
2544
|
--tw-leading: 1;
|
|
2504
2545
|
line-height: 1;
|
|
@@ -2583,6 +2624,18 @@
|
|
|
2583
2624
|
--tw-tracking: var(--chat-label-tracking,0.16em);
|
|
2584
2625
|
letter-spacing: var(--chat-label-tracking,0.16em);
|
|
2585
2626
|
}
|
|
2627
|
+
.tracking-\[var\(--tracking-snug\,-0\.01em\)\] {
|
|
2628
|
+
--tw-tracking: var(--tracking-snug,-0.01em);
|
|
2629
|
+
letter-spacing: var(--tracking-snug,-0.01em);
|
|
2630
|
+
}
|
|
2631
|
+
.tracking-\[var\(--tracking-tight\,-0\.02em\)\] {
|
|
2632
|
+
--tw-tracking: var(--tracking-tight,-0.02em);
|
|
2633
|
+
letter-spacing: var(--tracking-tight,-0.02em);
|
|
2634
|
+
}
|
|
2635
|
+
.tracking-\[var\(--tracking-wide\,0\.08em\)\] {
|
|
2636
|
+
--tw-tracking: var(--tracking-wide,0.08em);
|
|
2637
|
+
letter-spacing: var(--tracking-wide,0.08em);
|
|
2638
|
+
}
|
|
2586
2639
|
.tracking-normal {
|
|
2587
2640
|
--tw-tracking: var(--tracking-normal);
|
|
2588
2641
|
letter-spacing: var(--tracking-normal);
|
|
@@ -3762,6 +3815,11 @@
|
|
|
3762
3815
|
align-items: center;
|
|
3763
3816
|
}
|
|
3764
3817
|
}
|
|
3818
|
+
.sm\:items-start {
|
|
3819
|
+
@media (width >= 40rem) {
|
|
3820
|
+
align-items: flex-start;
|
|
3821
|
+
}
|
|
3822
|
+
}
|
|
3765
3823
|
.sm\:justify-between {
|
|
3766
3824
|
@media (width >= 40rem) {
|
|
3767
3825
|
justify-content: space-between;
|
|
@@ -3863,11 +3921,6 @@
|
|
|
3863
3921
|
align-items: center;
|
|
3864
3922
|
}
|
|
3865
3923
|
}
|
|
3866
|
-
.md\:items-end {
|
|
3867
|
-
@media (width >= 48rem) {
|
|
3868
|
-
align-items: flex-end;
|
|
3869
|
-
}
|
|
3870
|
-
}
|
|
3871
3924
|
.md\:justify-between {
|
|
3872
3925
|
@media (width >= 48rem) {
|
|
3873
3926
|
justify-content: space-between;
|
package/package.json
CHANGED