@usetheo/ui 0.15.0 → 0.16.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.
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes, HTMLAttributes } from "react";
|
|
2
|
+
interface BreadcrumbLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
3
|
+
/** Render the consumer's element (e.g. a router <Link>) instead of a native anchor. */
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const Breadcrumb: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & import("react").RefAttributes<HTMLElement>> & {
|
|
7
|
+
List: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLOListElement> & import("react").RefAttributes<HTMLOListElement>>;
|
|
8
|
+
Item: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLLIElement> & import("react").RefAttributes<HTMLLIElement>>;
|
|
9
|
+
Link: import("react").ForwardRefExoticComponent<BreadcrumbLinkProps & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
10
|
+
Page: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
11
|
+
Separator: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLLIElement> & import("react").RefAttributes<HTMLLIElement>>;
|
|
12
|
+
Ellipsis: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & import("react").RefAttributes<HTMLSpanElement>>;
|
|
13
|
+
};
|
|
14
|
+
export { Breadcrumb };
|
|
15
|
+
export type { BreadcrumbLinkProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Breadcrumb, type BreadcrumbLinkProps } from "./breadcrumb.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { cn } from "./lib/cn.js";
|
|
2
2
|
export { Button, buttonVariants, type ButtonProps } from "./components/primitives/button/index.js";
|
|
3
3
|
export { Badge, badgeVariants, type BadgeProps } from "./components/primitives/badge/index.js";
|
|
4
|
+
export { Breadcrumb, type BreadcrumbLinkProps, } from "./components/primitives/breadcrumb/index.js";
|
|
4
5
|
export { UpdateBanner, type UpdateBannerProps, } from "./components/primitives/update-banner/index.js";
|
|
5
6
|
export { Card } from "./components/primitives/card/index.js";
|
|
6
7
|
export { Input, type InputProps } from "./components/primitives/input/index.js";
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { clsx } from 'clsx';
|
|
|
2
2
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
3
3
|
import { Slot } from '@radix-ui/react-slot';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
|
-
import { forwardRef, createContext, useId, Children, isValidElement, cloneElement, Fragment as Fragment$1, useContext, useEffect, useState, useRef, useCallback, useMemo } from 'react';
|
|
5
|
+
import { forwardRef, createContext, useId, Children, isValidElement, cloneElement, Fragment as Fragment$1, useContext, useEffect, useState, useRef, useCallback, createElement, useMemo } from 'react';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import { ArrowUpCircle, X, AlertCircle, ChevronDown, ChevronUp, Check, Minus, Circle, ChevronRight, ChevronsUpDown, Copy, TrendingDown, TrendingUp, ArrowUpRight, Loader2, TriangleAlert, CheckCircle2, Info, ChevronsLeft, ChevronLeft, ChevronsRight, Search, Filter, GitCommit, GitBranch, Activity, Plus, Lock, EyeOff, Eye, Trash2, GitPullRequest, Server, ExternalLink, Globe, ShieldCheck, ShieldX, Clock, RotateCcw, ArrowDownLeft, MoreHorizontal } from 'lucide-react';
|
|
8
8
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
@@ -189,6 +189,103 @@ var Dot = forwardRef(
|
|
|
189
189
|
Dot.displayName = "Badge.Dot";
|
|
190
190
|
var BadgeWithDot = Badge;
|
|
191
191
|
BadgeWithDot.Dot = Dot;
|
|
192
|
+
|
|
193
|
+
// src/lib/safe-href.ts
|
|
194
|
+
var DANGEROUS_PROTOCOL_PATTERNS = [
|
|
195
|
+
/^javascript:/i,
|
|
196
|
+
/^vbscript:/i,
|
|
197
|
+
/^data:text\/html/i
|
|
198
|
+
];
|
|
199
|
+
function safeHref(url) {
|
|
200
|
+
if (url === null || url === void 0) return void 0;
|
|
201
|
+
const trimmed = url.trim();
|
|
202
|
+
if (trimmed.length === 0) return void 0;
|
|
203
|
+
for (const pattern of DANGEROUS_PROTOCOL_PATTERNS) {
|
|
204
|
+
if (pattern.test(trimmed)) return void 0;
|
|
205
|
+
}
|
|
206
|
+
return url;
|
|
207
|
+
}
|
|
208
|
+
function sub(tag, slot, displayName, baseClass, attrs, defaultChildren) {
|
|
209
|
+
const Component = forwardRef(
|
|
210
|
+
({ className, children, ...props }, ref) => createElement(
|
|
211
|
+
tag,
|
|
212
|
+
{
|
|
213
|
+
"data-slot": slot,
|
|
214
|
+
ref,
|
|
215
|
+
...attrs,
|
|
216
|
+
className: cn(baseClass, className),
|
|
217
|
+
...props
|
|
218
|
+
},
|
|
219
|
+
children ?? defaultChildren
|
|
220
|
+
)
|
|
221
|
+
);
|
|
222
|
+
Component.displayName = displayName;
|
|
223
|
+
return Component;
|
|
224
|
+
}
|
|
225
|
+
var Root = forwardRef((props, ref) => /* @__PURE__ */ jsx("nav", { "data-slot": "breadcrumb", ref, "aria-label": "breadcrumb", ...props }));
|
|
226
|
+
Root.displayName = "Breadcrumb";
|
|
227
|
+
var List = sub(
|
|
228
|
+
"ol",
|
|
229
|
+
"breadcrumb-list",
|
|
230
|
+
"Breadcrumb.List",
|
|
231
|
+
"flex flex-wrap items-center gap-1.5 break-words text-body-sm text-muted-foreground sm:gap-2.5"
|
|
232
|
+
);
|
|
233
|
+
var Item = sub(
|
|
234
|
+
"li",
|
|
235
|
+
"breadcrumb-item",
|
|
236
|
+
"Breadcrumb.Item",
|
|
237
|
+
"inline-flex items-center gap-1.5"
|
|
238
|
+
);
|
|
239
|
+
var Link = forwardRef(
|
|
240
|
+
({ asChild, className, href, ...props }, ref) => {
|
|
241
|
+
const Comp = asChild ? Slot : "a";
|
|
242
|
+
return /* @__PURE__ */ jsx(
|
|
243
|
+
Comp,
|
|
244
|
+
{
|
|
245
|
+
"data-slot": "breadcrumb-link",
|
|
246
|
+
ref,
|
|
247
|
+
className: cn("transition-colors hover:text-foreground", className),
|
|
248
|
+
href: asChild ? href : safeHref(href),
|
|
249
|
+
...props
|
|
250
|
+
}
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
);
|
|
254
|
+
Link.displayName = "Breadcrumb.Link";
|
|
255
|
+
var Page = sub(
|
|
256
|
+
"span",
|
|
257
|
+
"breadcrumb-page",
|
|
258
|
+
"Breadcrumb.Page",
|
|
259
|
+
"font-normal text-foreground",
|
|
260
|
+
{ role: "link", "aria-disabled": "true", "aria-current": "page" }
|
|
261
|
+
);
|
|
262
|
+
var Separator = sub(
|
|
263
|
+
"li",
|
|
264
|
+
"breadcrumb-separator",
|
|
265
|
+
"Breadcrumb.Separator",
|
|
266
|
+
"[&>svg]:size-3.5",
|
|
267
|
+
{ role: "presentation", "aria-hidden": "true" },
|
|
268
|
+
/* @__PURE__ */ jsx(ChevronRight, {})
|
|
269
|
+
);
|
|
270
|
+
var Ellipsis = sub(
|
|
271
|
+
"span",
|
|
272
|
+
"breadcrumb-ellipsis",
|
|
273
|
+
"Breadcrumb.Ellipsis",
|
|
274
|
+
"flex size-9 items-center justify-center",
|
|
275
|
+
{ role: "presentation", "aria-hidden": "true" },
|
|
276
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
277
|
+
/* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }),
|
|
278
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
|
|
279
|
+
] })
|
|
280
|
+
);
|
|
281
|
+
var Breadcrumb = Object.assign(Root, {
|
|
282
|
+
List,
|
|
283
|
+
Item,
|
|
284
|
+
Link,
|
|
285
|
+
Page,
|
|
286
|
+
Separator,
|
|
287
|
+
Ellipsis
|
|
288
|
+
});
|
|
192
289
|
var UpdateBanner = forwardRef(
|
|
193
290
|
({
|
|
194
291
|
currentVersion,
|
|
@@ -264,7 +361,7 @@ var UpdateBanner = forwardRef(
|
|
|
264
361
|
UpdateBanner.displayName = "UpdateBanner";
|
|
265
362
|
var CardContext = createContext({ size: "md" });
|
|
266
363
|
var useCardSize = () => useContext(CardContext).size;
|
|
267
|
-
var
|
|
364
|
+
var Root2 = forwardRef(
|
|
268
365
|
({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(CardContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx(
|
|
269
366
|
"div",
|
|
270
367
|
{
|
|
@@ -279,7 +376,7 @@ var Root = forwardRef(
|
|
|
279
376
|
}
|
|
280
377
|
) })
|
|
281
378
|
);
|
|
282
|
-
|
|
379
|
+
Root2.displayName = "Card";
|
|
283
380
|
var headerPadBySize = {
|
|
284
381
|
sm: "gap-1 p-3 pb-1.5",
|
|
285
382
|
md: "gap-1.5 p-5 pb-2.5",
|
|
@@ -381,7 +478,7 @@ var Footer = forwardRef(
|
|
|
381
478
|
}
|
|
382
479
|
);
|
|
383
480
|
Footer.displayName = "Card.Footer";
|
|
384
|
-
var Card = /* @__PURE__ */ Object.assign(
|
|
481
|
+
var Card = /* @__PURE__ */ Object.assign(Root2, {
|
|
385
482
|
Header,
|
|
386
483
|
Title,
|
|
387
484
|
Description,
|
|
@@ -524,7 +621,7 @@ var Dialog = /* @__PURE__ */ Object.assign(DialogPrimitive.Root, {
|
|
|
524
621
|
Title: Title3,
|
|
525
622
|
Description: Description3
|
|
526
623
|
});
|
|
527
|
-
var
|
|
624
|
+
var List3 = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
528
625
|
TabsPrimitive.List,
|
|
529
626
|
{
|
|
530
627
|
"data-slot": "tabs-list",
|
|
@@ -536,7 +633,7 @@ var List2 = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
|
536
633
|
...props
|
|
537
634
|
}
|
|
538
635
|
));
|
|
539
|
-
|
|
636
|
+
List3.displayName = "Tabs.List";
|
|
540
637
|
var Trigger3 = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
541
638
|
TabsPrimitive.Trigger,
|
|
542
639
|
{
|
|
@@ -572,12 +669,12 @@ var Content4 = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
|
572
669
|
));
|
|
573
670
|
Content4.displayName = "Tabs.Content";
|
|
574
671
|
var Tabs = /* @__PURE__ */ Object.assign(TabsPrimitive.Root, {
|
|
575
|
-
List:
|
|
672
|
+
List: List3,
|
|
576
673
|
Trigger: Trigger3,
|
|
577
674
|
Content: Content4
|
|
578
675
|
});
|
|
579
676
|
var Provider2 = TooltipPrimitive.Provider;
|
|
580
|
-
var
|
|
677
|
+
var Root6 = TooltipPrimitive.Root;
|
|
581
678
|
var Trigger5 = TooltipPrimitive.Trigger;
|
|
582
679
|
var Content6 = forwardRef(({ className, sideOffset = 6, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
583
680
|
TooltipPrimitive.Content,
|
|
@@ -605,13 +702,13 @@ var Tooltip = ({
|
|
|
605
702
|
delayDuration = 200,
|
|
606
703
|
children,
|
|
607
704
|
...rootProps
|
|
608
|
-
}) => /* @__PURE__ */ jsx(Provider2, { delayDuration, children: /* @__PURE__ */ jsxs(
|
|
705
|
+
}) => /* @__PURE__ */ jsx(Provider2, { delayDuration, children: /* @__PURE__ */ jsxs(Root6, { ...rootProps, children: [
|
|
609
706
|
/* @__PURE__ */ jsx(Trigger5, { asChild: true, children }),
|
|
610
707
|
/* @__PURE__ */ jsx(Content6, { side, align, children: label })
|
|
611
708
|
] }) });
|
|
612
709
|
var TooltipWithStatics = Tooltip;
|
|
613
710
|
TooltipWithStatics.Provider = Provider2;
|
|
614
|
-
TooltipWithStatics.Root =
|
|
711
|
+
TooltipWithStatics.Root = Root6;
|
|
615
712
|
TooltipWithStatics.Trigger = Trigger5;
|
|
616
713
|
TooltipWithStatics.Content = Content6;
|
|
617
714
|
var ScrollAreaRoot = forwardRef(
|
|
@@ -1463,7 +1560,7 @@ var Textarea = forwardRef(
|
|
|
1463
1560
|
)
|
|
1464
1561
|
);
|
|
1465
1562
|
Textarea.displayName = "Textarea";
|
|
1466
|
-
var
|
|
1563
|
+
var Root16 = forwardRef(
|
|
1467
1564
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1468
1565
|
"aside",
|
|
1469
1566
|
{
|
|
@@ -1477,7 +1574,7 @@ var Root15 = forwardRef(
|
|
|
1477
1574
|
}
|
|
1478
1575
|
)
|
|
1479
1576
|
);
|
|
1480
|
-
|
|
1577
|
+
Root16.displayName = "Sidebar";
|
|
1481
1578
|
var Header3 = forwardRef(
|
|
1482
1579
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1483
1580
|
"div",
|
|
@@ -1506,7 +1603,7 @@ var Section = forwardRef(
|
|
|
1506
1603
|
)
|
|
1507
1604
|
);
|
|
1508
1605
|
Section.displayName = "Sidebar.Section";
|
|
1509
|
-
var
|
|
1606
|
+
var Item4 = forwardRef(
|
|
1510
1607
|
({ className, icon: Icon2, active, count, as = "button", href, children, ...props }, ref) => {
|
|
1511
1608
|
const classes = cn(
|
|
1512
1609
|
"group flex w-full items-center gap-3 rounded-lg px-2 py-2",
|
|
@@ -1566,7 +1663,7 @@ var Item3 = forwardRef(
|
|
|
1566
1663
|
);
|
|
1567
1664
|
}
|
|
1568
1665
|
);
|
|
1569
|
-
|
|
1666
|
+
Item4.displayName = "Sidebar.Item";
|
|
1570
1667
|
var Footer3 = forwardRef(
|
|
1571
1668
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1572
1669
|
"div",
|
|
@@ -1579,13 +1676,13 @@ var Footer3 = forwardRef(
|
|
|
1579
1676
|
)
|
|
1580
1677
|
);
|
|
1581
1678
|
Footer3.displayName = "Sidebar.Footer";
|
|
1582
|
-
var Sidebar = /* @__PURE__ */ Object.assign(
|
|
1679
|
+
var Sidebar = /* @__PURE__ */ Object.assign(Root16, {
|
|
1583
1680
|
Header: Header3,
|
|
1584
1681
|
Section,
|
|
1585
|
-
Item:
|
|
1682
|
+
Item: Item4,
|
|
1586
1683
|
Footer: Footer3
|
|
1587
1684
|
});
|
|
1588
|
-
var
|
|
1685
|
+
var Root17 = forwardRef(
|
|
1589
1686
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1590
1687
|
"header",
|
|
1591
1688
|
{
|
|
@@ -1599,7 +1696,7 @@ var Root16 = forwardRef(
|
|
|
1599
1696
|
}
|
|
1600
1697
|
)
|
|
1601
1698
|
);
|
|
1602
|
-
|
|
1699
|
+
Root17.displayName = "TopNav";
|
|
1603
1700
|
var Left = forwardRef(
|
|
1604
1701
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1605
1702
|
"div",
|
|
@@ -1734,7 +1831,7 @@ var ModeSwitcher = forwardRef(
|
|
|
1734
1831
|
}
|
|
1735
1832
|
);
|
|
1736
1833
|
ModeSwitcher.displayName = "TopNav.ModeSwitcher";
|
|
1737
|
-
var TopNav = /* @__PURE__ */ Object.assign(
|
|
1834
|
+
var TopNav = /* @__PURE__ */ Object.assign(Root17, {
|
|
1738
1835
|
Left,
|
|
1739
1836
|
Center,
|
|
1740
1837
|
Right,
|
|
@@ -2030,7 +2127,7 @@ var alignClass = {
|
|
|
2030
2127
|
center: "text-center",
|
|
2031
2128
|
right: "text-right"
|
|
2032
2129
|
};
|
|
2033
|
-
var
|
|
2130
|
+
var Root19 = forwardRef(
|
|
2034
2131
|
({ className, density = "default", children, ...props }, ref) => /* @__PURE__ */ jsx(TableDensityContext.Provider, { value: density, children: /* @__PURE__ */ jsx(
|
|
2035
2132
|
"table",
|
|
2036
2133
|
{
|
|
@@ -2042,7 +2139,7 @@ var Root18 = forwardRef(
|
|
|
2042
2139
|
}
|
|
2043
2140
|
) })
|
|
2044
2141
|
);
|
|
2045
|
-
|
|
2142
|
+
Root19.displayName = "Table";
|
|
2046
2143
|
var Header5 = forwardRef(
|
|
2047
2144
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2048
2145
|
"thead",
|
|
@@ -2162,7 +2259,7 @@ var HeaderCell = forwardRef(
|
|
|
2162
2259
|
}
|
|
2163
2260
|
);
|
|
2164
2261
|
HeaderCell.displayName = "Table.HeaderCell";
|
|
2165
|
-
var Table = Object.assign(
|
|
2262
|
+
var Table = Object.assign(Root19, { Header: Header5, Body: Body4, Row, Cell, HeaderCell });
|
|
2166
2263
|
|
|
2167
2264
|
// src/lib/env.ts
|
|
2168
2265
|
function readNodeEnv() {
|
|
@@ -2539,7 +2636,7 @@ var StatTile = forwardRef(
|
|
|
2539
2636
|
}
|
|
2540
2637
|
);
|
|
2541
2638
|
StatTile.displayName = "StatTile";
|
|
2542
|
-
var
|
|
2639
|
+
var Root20 = forwardRef(
|
|
2543
2640
|
({ className, title = "Danger Zone", children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2544
2641
|
"section",
|
|
2545
2642
|
{
|
|
@@ -2555,7 +2652,7 @@ var Root19 = forwardRef(
|
|
|
2555
2652
|
}
|
|
2556
2653
|
)
|
|
2557
2654
|
);
|
|
2558
|
-
|
|
2655
|
+
Root20.displayName = "DangerZone";
|
|
2559
2656
|
var Action2 = forwardRef(
|
|
2560
2657
|
({ className, title, description, action, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
2561
2658
|
"div",
|
|
@@ -2578,7 +2675,7 @@ var Action2 = forwardRef(
|
|
|
2578
2675
|
)
|
|
2579
2676
|
);
|
|
2580
2677
|
Action2.displayName = "DangerZone.Action";
|
|
2581
|
-
var DangerZone = Object.assign(
|
|
2678
|
+
var DangerZone = Object.assign(Root20, { Action: Action2 });
|
|
2582
2679
|
var ConfirmDialog = forwardRef(
|
|
2583
2680
|
({
|
|
2584
2681
|
open,
|
|
@@ -3107,7 +3204,7 @@ var Content11 = forwardRef(({ className, sideOffset = 4, ...props }, ref) => /*
|
|
|
3107
3204
|
}
|
|
3108
3205
|
) }));
|
|
3109
3206
|
Content11.displayName = "DropdownMenu.Content";
|
|
3110
|
-
var
|
|
3207
|
+
var Item6 = forwardRef(
|
|
3111
3208
|
({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3112
3209
|
DropdownMenuPrimitive.Item,
|
|
3113
3210
|
{
|
|
@@ -3126,7 +3223,7 @@ var Item5 = forwardRef(
|
|
|
3126
3223
|
}
|
|
3127
3224
|
)
|
|
3128
3225
|
);
|
|
3129
|
-
|
|
3226
|
+
Item6.displayName = "DropdownMenu.Item";
|
|
3130
3227
|
var CheckboxItem2 = forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
3131
3228
|
DropdownMenuPrimitive.CheckboxItem,
|
|
3132
3229
|
{
|
|
@@ -3184,7 +3281,7 @@ var Label4 = forwardRef(
|
|
|
3184
3281
|
)
|
|
3185
3282
|
);
|
|
3186
3283
|
Label4.displayName = "DropdownMenu.Label";
|
|
3187
|
-
var
|
|
3284
|
+
var Separator4 = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3188
3285
|
DropdownMenuPrimitive.Separator,
|
|
3189
3286
|
{
|
|
3190
3287
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -3193,7 +3290,7 @@ var Separator3 = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ js
|
|
|
3193
3290
|
...props
|
|
3194
3291
|
}
|
|
3195
3292
|
));
|
|
3196
|
-
|
|
3293
|
+
Separator4.displayName = "DropdownMenu.Separator";
|
|
3197
3294
|
var Shortcut = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
3198
3295
|
"span",
|
|
3199
3296
|
{
|
|
@@ -3242,11 +3339,11 @@ var DropdownMenu = Object.assign(DropdownMenuPrimitive.Root, {
|
|
|
3242
3339
|
Trigger: Trigger9,
|
|
3243
3340
|
Portal: Portal6,
|
|
3244
3341
|
Content: Content11,
|
|
3245
|
-
Item:
|
|
3342
|
+
Item: Item6,
|
|
3246
3343
|
CheckboxItem: CheckboxItem2,
|
|
3247
3344
|
RadioItem: RadioItem2,
|
|
3248
3345
|
Label: Label4,
|
|
3249
|
-
Separator:
|
|
3346
|
+
Separator: Separator4,
|
|
3250
3347
|
Shortcut,
|
|
3251
3348
|
Group: Group3,
|
|
3252
3349
|
Sub: Sub2,
|
|
@@ -4067,22 +4164,6 @@ var DeploymentRow = forwardRef(
|
|
|
4067
4164
|
}
|
|
4068
4165
|
);
|
|
4069
4166
|
DeploymentRow.displayName = "DeploymentRow";
|
|
4070
|
-
|
|
4071
|
-
// src/lib/safe-href.ts
|
|
4072
|
-
var DANGEROUS_PROTOCOL_PATTERNS = [
|
|
4073
|
-
/^javascript:/i,
|
|
4074
|
-
/^vbscript:/i,
|
|
4075
|
-
/^data:text\/html/i
|
|
4076
|
-
];
|
|
4077
|
-
function safeHref(url) {
|
|
4078
|
-
if (url === null || url === void 0) return void 0;
|
|
4079
|
-
const trimmed = url.trim();
|
|
4080
|
-
if (trimmed.length === 0) return void 0;
|
|
4081
|
-
for (const pattern of DANGEROUS_PROTOCOL_PATTERNS) {
|
|
4082
|
-
if (pattern.test(trimmed)) return void 0;
|
|
4083
|
-
}
|
|
4084
|
-
return url;
|
|
4085
|
-
}
|
|
4086
4167
|
var statusToVariant2 = {
|
|
4087
4168
|
queued: "warning",
|
|
4088
4169
|
building: "primary",
|
|
@@ -4707,4 +4788,4 @@ function CommandPalette({
|
|
|
4707
4788
|
] }) });
|
|
4708
4789
|
}
|
|
4709
4790
|
|
|
4710
|
-
export { AccountMenu, ActionBar, Alert, Avatar, BadgeWithDot as Badge, Button, Card, Checkbox, CodeBlock, CommandPalette, ConfirmDialog, CopyButton, DangerZone, DataTable, DeploymentRow, Dialog, DomainConfig, DropdownMenu, EmptyState, EnvVarEditor, FormField, Input, Label, LoginSplit, MetricCard, MetricsPanel, PageShell, Pagination, PinInput, PlanBadge, PreviewEnvCard, Progress, ProjectCard, RadioGroup, RollbackUI, ScrollArea, Select, Sheet, Sidebar, Skeleton, SocialAuthRow, StatTile, StatusDot, StatusIndicator, Switch, Table, Tabs, TaskHeader, Textarea, Timestamp, Toast, Toaster, TooltipWithStatics as Tooltip, TopNav, UpdateBanner, avatarVariants, badgeVariants, buttonVariants, cn, computePageRange, isNearBottom, sheetVariants, useStickToBottom, useToast };
|
|
4791
|
+
export { AccountMenu, ActionBar, Alert, Avatar, BadgeWithDot as Badge, Breadcrumb, Button, Card, Checkbox, CodeBlock, CommandPalette, ConfirmDialog, CopyButton, DangerZone, DataTable, DeploymentRow, Dialog, DomainConfig, DropdownMenu, EmptyState, EnvVarEditor, FormField, Input, Label, LoginSplit, MetricCard, MetricsPanel, PageShell, Pagination, PinInput, PlanBadge, PreviewEnvCard, Progress, ProjectCard, RadioGroup, RollbackUI, ScrollArea, Select, Sheet, Sidebar, Skeleton, SocialAuthRow, StatTile, StatusDot, StatusIndicator, Switch, Table, Tabs, TaskHeader, Textarea, Timestamp, Toast, Toaster, TooltipWithStatics as Tooltip, TopNav, UpdateBanner, avatarVariants, badgeVariants, buttonVariants, cn, computePageRange, isNearBottom, sheetVariants, useStickToBottom, useToast };
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usetheo/ui",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be",
|
|
3
|
+
"version": "0.16.0",
|
|
5
4
|
"type": "module",
|
|
6
5
|
"license": "Apache-2.0",
|
|
7
6
|
"description": "Violet Forge design system — generic React components + primitives (the non-AI foundation of @theokit/ui).",
|
|
@@ -22,18 +21,6 @@
|
|
|
22
21
|
"engines": {
|
|
23
22
|
"node": ">=20"
|
|
24
23
|
},
|
|
25
|
-
"scripts": {
|
|
26
|
-
"typecheck": "tsc --noEmit",
|
|
27
|
-
"lint": "biome check src",
|
|
28
|
-
"lint:ci": "biome check src",
|
|
29
|
-
"format:check": "biome format src",
|
|
30
|
-
"test": "vitest run",
|
|
31
|
-
"test:run": "vitest run",
|
|
32
|
-
"build": "tsup && tsc -p tsconfig.dts.json",
|
|
33
|
-
"prepublishOnly": "npm run build",
|
|
34
|
-
"registry:build": "tsx scripts/build-registry.ts",
|
|
35
|
-
"registry:validate": "tsx scripts/validate-registry.ts"
|
|
36
|
-
},
|
|
37
24
|
"peerDependencies": {
|
|
38
25
|
"react": ">=18",
|
|
39
26
|
"react-dom": ">=18"
|
|
@@ -72,6 +59,7 @@
|
|
|
72
59
|
"react": ">=18.2.0 <20",
|
|
73
60
|
"react-dom": ">=18.2.0 <20",
|
|
74
61
|
"tailwindcss": "^4.0.0",
|
|
62
|
+
"ts-prune": "^0.10.3",
|
|
75
63
|
"tsup": "^8.3.5",
|
|
76
64
|
"tsx": "^4.19.2",
|
|
77
65
|
"typescript": "^5.7.3",
|
|
@@ -79,5 +67,16 @@
|
|
|
79
67
|
"vitest": "^4.1.8",
|
|
80
68
|
"vitest-axe": "^0.1.0"
|
|
81
69
|
},
|
|
82
|
-
"_provenance": "seeded from theo-ui @ 2b46eca (2026-07-03, pivot M-B)"
|
|
83
|
-
|
|
70
|
+
"_provenance": "seeded from theo-ui @ 2b46eca (2026-07-03, pivot M-B)",
|
|
71
|
+
"scripts": {
|
|
72
|
+
"typecheck": "tsc --noEmit",
|
|
73
|
+
"lint": "biome check src",
|
|
74
|
+
"lint:ci": "biome check src",
|
|
75
|
+
"format:check": "biome format src",
|
|
76
|
+
"test": "vitest run",
|
|
77
|
+
"test:run": "vitest run",
|
|
78
|
+
"build": "tsup && tsc -p tsconfig.dts.json",
|
|
79
|
+
"registry:build": "tsx scripts/build-registry.ts",
|
|
80
|
+
"registry:validate": "tsx scripts/validate-registry.ts"
|
|
81
|
+
}
|
|
82
|
+
}
|