@tapizlabs/ui 0.2.1 → 0.2.3
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/CHANGELOG.md +16 -16
- package/LICENSE +21 -21
- package/README.md +358 -358
- package/dist/fonts.css +161 -161
- package/dist/fonts.js.map +1 -1
- package/dist/index.d.ts +92 -182
- package/dist/index.js +17 -350
- package/dist/index.js.map +1 -1
- package/dist/tailwind-theme.css +113 -113
- package/dist/theme.css +418 -418
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1054,17 +1054,10 @@ function FormError({ message, className = "" }) {
|
|
|
1054
1054
|
return /* @__PURE__ */ jsxs15(
|
|
1055
1055
|
"div",
|
|
1056
1056
|
{
|
|
1057
|
-
className: `flex items-start gap-2 px-3 py-2.5 text-sm ${className}`,
|
|
1058
|
-
style: {
|
|
1059
|
-
background: "color-mix(in srgb, var(--color-warn) 8%, transparent)",
|
|
1060
|
-
border: "1px solid color-mix(in srgb, var(--color-warn) 25%, transparent)",
|
|
1061
|
-
borderLeft: "3px solid var(--color-warn)",
|
|
1062
|
-
color: "var(--color-warn)",
|
|
1063
|
-
animation: "var(--animate-scale-in)"
|
|
1064
|
-
},
|
|
1057
|
+
className: `flex items-start gap-2 px-3 py-2.5 text-sm text-warn bg-warn/8 border border-warn/25 border-l-[3px] border-l-warn animate-scale-in ${className}`,
|
|
1065
1058
|
children: [
|
|
1066
1059
|
/* @__PURE__ */ jsx22(Alert, { size: 14, className: "shrink-0 mt-0.5" }),
|
|
1067
|
-
/* @__PURE__ */ jsx22("span", {
|
|
1060
|
+
/* @__PURE__ */ jsx22("span", { className: "font-mono text-[12px]", children: message })
|
|
1068
1061
|
]
|
|
1069
1062
|
}
|
|
1070
1063
|
);
|
|
@@ -1217,49 +1210,26 @@ function BaseModal({
|
|
|
1217
1210
|
role: "dialog",
|
|
1218
1211
|
"aria-modal": "true",
|
|
1219
1212
|
"aria-labelledby": titleId,
|
|
1220
|
-
className: "fixed inset-0 z-50 flex items-center justify-center p-4",
|
|
1221
|
-
style: { background: "rgba(5,6,8,0.75)", backdropFilter: "blur(2px)" },
|
|
1213
|
+
className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-[rgba(5,6,8,0.75)] backdrop-blur-[2px]",
|
|
1222
1214
|
onClick: (e) => e.target === e.currentTarget && onClose(),
|
|
1223
1215
|
children: /* @__PURE__ */ jsxs17(
|
|
1224
1216
|
"div",
|
|
1225
1217
|
{
|
|
1226
|
-
className: `w-full ${sizeClass[size]} p-6 space-y-4`,
|
|
1227
|
-
style: {
|
|
1228
|
-
background: "var(--color-ink-200)",
|
|
1229
|
-
border: "1px solid var(--color-border-hi)",
|
|
1230
|
-
borderTop: "2px solid var(--color-primary-300)",
|
|
1231
|
-
animation: "var(--animate-scale-in)"
|
|
1232
|
-
},
|
|
1218
|
+
className: `w-full ${sizeClass[size]} p-6 space-y-4 bg-ink-200 border border-border-hi border-t-2 border-t-primary-300 animate-scale-in`,
|
|
1233
1219
|
children: [
|
|
1234
1220
|
/* @__PURE__ */ jsxs17("div", { className: "flex items-start justify-between", children: [
|
|
1235
1221
|
/* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-3", children: [
|
|
1236
|
-
icon && /* @__PURE__ */ jsx24(
|
|
1237
|
-
"div",
|
|
1238
|
-
{
|
|
1239
|
-
className: "flex items-center justify-center w-10 h-10 shrink-0",
|
|
1240
|
-
style: { background: "var(--color-ink-300)", border: "1px solid var(--color-border-hi)", color: "var(--color-primary-300)" },
|
|
1241
|
-
children: icon
|
|
1242
|
-
}
|
|
1243
|
-
),
|
|
1222
|
+
icon && /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center w-10 h-10 shrink-0 bg-ink-300 border border-border-hi text-primary-300", children: icon }),
|
|
1244
1223
|
/* @__PURE__ */ jsxs17("div", { children: [
|
|
1245
|
-
/* @__PURE__ */ jsx24("h3", { id: titleId,
|
|
1246
|
-
subtitle && /* @__PURE__ */ jsx24("p", {
|
|
1224
|
+
/* @__PURE__ */ jsx24("h3", { id: titleId, className: "font-display text-[15px] font-semibold text-txt-1", children: title }),
|
|
1225
|
+
subtitle && /* @__PURE__ */ jsx24("p", { className: "font-mono text-[10px] text-primary-300 mt-0.5 tracking-widest", children: subtitle })
|
|
1247
1226
|
] })
|
|
1248
1227
|
] }),
|
|
1249
1228
|
xShown && /* @__PURE__ */ jsx24(
|
|
1250
1229
|
"button",
|
|
1251
1230
|
{
|
|
1252
1231
|
onClick: onClose,
|
|
1253
|
-
className: "w-7 h-7 flex items-center justify-center",
|
|
1254
|
-
style: { color: "var(--color-txt-3)", border: "1px solid transparent" },
|
|
1255
|
-
onMouseEnter: (e) => {
|
|
1256
|
-
e.currentTarget.style.color = "var(--color-txt-1)";
|
|
1257
|
-
e.currentTarget.style.borderColor = "var(--color-border-hi)";
|
|
1258
|
-
},
|
|
1259
|
-
onMouseLeave: (e) => {
|
|
1260
|
-
e.currentTarget.style.color = "var(--color-txt-3)";
|
|
1261
|
-
e.currentTarget.style.borderColor = "transparent";
|
|
1262
|
-
},
|
|
1232
|
+
className: "w-7 h-7 flex items-center justify-center text-txt-3 border border-transparent hover:text-txt-1 hover:border-border-hi transition-colors",
|
|
1263
1233
|
"aria-label": closeLabel,
|
|
1264
1234
|
title: closeLabel,
|
|
1265
1235
|
children: /* @__PURE__ */ jsx24(X, { size: 14 })
|
|
@@ -1300,37 +1270,25 @@ function ConfirmDialog({
|
|
|
1300
1270
|
/* @__PURE__ */ jsx25(
|
|
1301
1271
|
"div",
|
|
1302
1272
|
{
|
|
1303
|
-
className: "fixed inset-0 z-300 flex items-center justify-center px-4",
|
|
1304
|
-
style: { background: "rgba(5,6,8,0.4)", backdropFilter: "blur(8px)" },
|
|
1273
|
+
className: "fixed inset-0 z-300 flex items-center justify-center px-4 bg-[rgba(5,6,8,0.4)] backdrop-blur-sm",
|
|
1305
1274
|
onClick: onCancel,
|
|
1306
1275
|
children: /* @__PURE__ */ jsx25(
|
|
1307
1276
|
"div",
|
|
1308
1277
|
{
|
|
1309
|
-
className:
|
|
1310
|
-
style: {
|
|
1311
|
-
background: "var(--color-ink-200)",
|
|
1312
|
-
border: "1px solid var(--color-border-hi)",
|
|
1313
|
-
borderTop: danger ? "2px solid var(--color-danger, #f87171)" : "2px solid var(--color-primary-300)",
|
|
1314
|
-
animation: "var(--animate-scale-in)"
|
|
1315
|
-
},
|
|
1278
|
+
className: `relative w-full max-w-sm bg-ink-200 border border-border-hi border-t-2 animate-scale-in ${danger ? "border-t-(--color-danger,#f87171)" : "border-t-primary-300"}`,
|
|
1316
1279
|
onClick: (e) => e.stopPropagation(),
|
|
1317
1280
|
children: /* @__PURE__ */ jsxs18("div", { className: "p-6 flex flex-col gap-4", children: [
|
|
1318
1281
|
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-3", children: [
|
|
1319
1282
|
icon && /* @__PURE__ */ jsx25(
|
|
1320
1283
|
"div",
|
|
1321
1284
|
{
|
|
1322
|
-
className:
|
|
1323
|
-
style: {
|
|
1324
|
-
background: danger ? "rgba(248,113,113,0.1)" : "rgba(94,231,255,0.08)",
|
|
1325
|
-
border: danger ? "1px solid rgba(248,113,113,0.25)" : "1px solid rgba(94,231,255,0.15)",
|
|
1326
|
-
color: danger ? "var(--color-danger, #f87171)" : "var(--color-primary-300)"
|
|
1327
|
-
},
|
|
1285
|
+
className: `flex items-center justify-center w-9 h-9 shrink-0 border ${danger ? "bg-[rgba(248,113,113,0.1)] border-[rgba(248,113,113,0.25)] text-(--color-danger,#f87171)" : "bg-primary-300/8 border-primary-300/15 text-primary-300"}`,
|
|
1328
1286
|
children: icon
|
|
1329
1287
|
}
|
|
1330
1288
|
),
|
|
1331
|
-
/* @__PURE__ */ jsx25("p", { className: "text-sm font-semibold
|
|
1289
|
+
/* @__PURE__ */ jsx25("p", { className: "text-sm font-semibold text-txt-1", children: title })
|
|
1332
1290
|
] }),
|
|
1333
|
-
/* @__PURE__ */ jsx25("p", { className: "text-sm
|
|
1291
|
+
/* @__PURE__ */ jsx25("p", { className: "text-sm text-txt-3", children: resolvedDescription }),
|
|
1334
1292
|
/* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-end gap-2", children: [
|
|
1335
1293
|
/* @__PURE__ */ jsx25(Button, { variant: "ghost", size: "sm", icon: /* @__PURE__ */ jsx25(X, { size: 13 }), onClick: onCancel, disabled: loading, children: resolvedCancel }),
|
|
1336
1294
|
/* @__PURE__ */ jsx25(
|
|
@@ -1564,29 +1522,17 @@ function InfoBanner(props) {
|
|
|
1564
1522
|
const icon = variant === "lock" ? /* @__PURE__ */ jsx32(LockIcon, { size: 14, className: "mt-1 shrink-0" }) : /* @__PURE__ */ jsx32(Info, { size: 14, className: "mt-1 shrink-0" });
|
|
1565
1523
|
return /* @__PURE__ */ jsxs22("div", { className: `app-info-banner flex items-start gap-2 border px-3 py-2.5 text-[13px] ${styles} ${className2}`, children: [
|
|
1566
1524
|
icon,
|
|
1567
|
-
/* @__PURE__ */ jsx32("p", {
|
|
1525
|
+
/* @__PURE__ */ jsx32("p", { className: "font-mono", children: text })
|
|
1568
1526
|
] });
|
|
1569
1527
|
}
|
|
1570
1528
|
const { title, description, className = "" } = props;
|
|
1571
1529
|
return /* @__PURE__ */ jsxs22(
|
|
1572
1530
|
"div",
|
|
1573
1531
|
{
|
|
1574
|
-
className: `app-info-banner px-4 py-3 ${className}`,
|
|
1575
|
-
style: {
|
|
1576
|
-
background: "rgba(94,231,255,0.04)",
|
|
1577
|
-
border: "1px solid rgba(94,231,255,0.12)",
|
|
1578
|
-
borderLeft: "3px solid var(--color-primary-300)"
|
|
1579
|
-
},
|
|
1532
|
+
className: `app-info-banner px-4 py-3 bg-primary-300/4 border border-primary-300/12 border-l-[3px] border-l-primary-300 ${className}`,
|
|
1580
1533
|
children: [
|
|
1581
|
-
/* @__PURE__ */ jsx32(
|
|
1582
|
-
|
|
1583
|
-
{
|
|
1584
|
-
className: "mb-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest",
|
|
1585
|
-
style: { color: "var(--color-primary-300)" },
|
|
1586
|
-
children: title
|
|
1587
|
-
}
|
|
1588
|
-
),
|
|
1589
|
-
/* @__PURE__ */ jsx32("p", { className: "font-mono text-[11px] leading-relaxed", style: { color: "var(--color-txt-2)" }, children: description })
|
|
1534
|
+
/* @__PURE__ */ jsx32("p", { className: "mb-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest text-primary-300", children: title }),
|
|
1535
|
+
/* @__PURE__ */ jsx32("p", { className: "font-mono text-[11px] leading-relaxed text-txt-2", children: description })
|
|
1590
1536
|
]
|
|
1591
1537
|
}
|
|
1592
1538
|
);
|
|
@@ -3498,284 +3444,6 @@ function InlineStatus({ tone: tone2 = "neutral", children, pulse = false, classN
|
|
|
3498
3444
|
children
|
|
3499
3445
|
] });
|
|
3500
3446
|
}
|
|
3501
|
-
|
|
3502
|
-
// src/showcase/TapizDocsPage.tsx
|
|
3503
|
-
import { Fragment as Fragment5, jsx as jsx123, jsxs as jsxs96 } from "react/jsx-runtime";
|
|
3504
|
-
var demoRows = [
|
|
3505
|
-
{ id: "1", student: "Mila Petrovi\u0107", status: "Active", score: 94 },
|
|
3506
|
-
{ id: "2", student: "Vuk Jovanovi\u0107", status: "Pending", score: 82 },
|
|
3507
|
-
{ id: "3", student: "Sara Ili\u0107", status: "Blocked", score: 68 }
|
|
3508
|
-
];
|
|
3509
|
-
var calendarDays = Array.from({ length: 35 }, (_, index) => ({
|
|
3510
|
-
date: index + 1,
|
|
3511
|
-
selected: index === 10,
|
|
3512
|
-
muted: index > 30,
|
|
3513
|
-
events: index === 10 ? ["Exam review", "Parent sync"] : index === 15 ? ["Quiz"] : void 0
|
|
3514
|
-
}));
|
|
3515
|
-
function DemoSection({ id, title, description, children }) {
|
|
3516
|
-
return /* @__PURE__ */ jsxs96("section", { id, className: "scroll-mt-20 border-t border-[var(--tapiz-border-subtle)] py-12", children: [
|
|
3517
|
-
/* @__PURE__ */ jsxs96("div", { className: "mb-6 flex flex-col gap-2 md:flex-row md:items-end md:justify-between", children: [
|
|
3518
|
-
/* @__PURE__ */ jsxs96("div", { children: [
|
|
3519
|
-
/* @__PURE__ */ jsx123("div", { className: "kicker", children: id }),
|
|
3520
|
-
/* @__PURE__ */ jsx123("h2", { className: "mt-2 text-3xl font-semibold tracking-[-0.05em] text-[var(--tapiz-text-primary)]", children: title }),
|
|
3521
|
-
/* @__PURE__ */ jsx123("p", { className: "mt-2 max-w-2xl text-sm leading-6 text-[var(--tapiz-text-muted)]", children: description })
|
|
3522
|
-
] }),
|
|
3523
|
-
/* @__PURE__ */ jsx123("a", { href: "#top", className: "font-mono text-xs uppercase tracking-[0.16em] text-[var(--tapiz-accent)]", children: "Back to top" })
|
|
3524
|
-
] }),
|
|
3525
|
-
children
|
|
3526
|
-
] });
|
|
3527
|
-
}
|
|
3528
|
-
function TapizDocsPage({ title = "Tapiz UI Framework", subtitle = "A brutal-enterprise React component system with tokens, primitives, patterns, and ready-made application blocks." }) {
|
|
3529
|
-
return /* @__PURE__ */ jsxs96("main", { id: "top", className: "tapiz-enterprise-shell min-h-screen tapiz-noise-bg", children: [
|
|
3530
|
-
/* @__PURE__ */ jsx123(
|
|
3531
|
-
TopNav,
|
|
3532
|
-
{
|
|
3533
|
-
brand: /* @__PURE__ */ jsx123("span", { className: "font-display text-lg font-semibold tracking-[-0.04em]", children: "Tapiz UI" }),
|
|
3534
|
-
links: [
|
|
3535
|
-
{ label: "Foundations", href: "#foundations" },
|
|
3536
|
-
{ label: "Forms", href: "#forms" },
|
|
3537
|
-
{ label: "Data", href: "#data" },
|
|
3538
|
-
{ label: "Framework", href: "#framework" },
|
|
3539
|
-
{ label: "Advanced", href: "#advanced" },
|
|
3540
|
-
{ label: "Marketing", href: "#marketing" }
|
|
3541
|
-
],
|
|
3542
|
-
actions: /* @__PURE__ */ jsx123(Button, { size: "sm", variant: "brutal", children: "Install" })
|
|
3543
|
-
}
|
|
3544
|
-
),
|
|
3545
|
-
/* @__PURE__ */ jsx123(
|
|
3546
|
-
HeroFrame,
|
|
3547
|
-
{
|
|
3548
|
-
eyebrow: "Design system / React framework",
|
|
3549
|
-
title,
|
|
3550
|
-
description: subtitle,
|
|
3551
|
-
actions: /* @__PURE__ */ jsxs96(Fragment5, { children: [
|
|
3552
|
-
/* @__PURE__ */ jsx123(Button, { variant: "primary", children: "Start building" }),
|
|
3553
|
-
/* @__PURE__ */ jsx123(Button, { variant: "secondary", children: "View tokens" })
|
|
3554
|
-
] }),
|
|
3555
|
-
meta: "Light/dark safe \xB7 token driven \xB7 no app-specific dependencies",
|
|
3556
|
-
visual: /* @__PURE__ */ jsxs96(MockupFrame, { title: "Component registry", children: [
|
|
3557
|
-
/* @__PURE__ */ jsxs96(StatGrid, { children: [
|
|
3558
|
-
/* @__PURE__ */ jsx123(MetricCard, { label: "Components", value: "80+", trend: "expanded", trendTone: "positive" }),
|
|
3559
|
-
/* @__PURE__ */ jsx123(MetricCard, { label: "Themes", value: "2", trend: "light/dark" }),
|
|
3560
|
-
/* @__PURE__ */ jsx123(MetricCard, { label: "Patterns", value: "12", trend: "framework", trendTone: "warning" })
|
|
3561
|
-
] }),
|
|
3562
|
-
/* @__PURE__ */ jsx123("div", { className: "mt-4", children: /* @__PURE__ */ jsx123(Sparkline, { values: [18, 24, 21, 32, 44, 39, 58], width: 420, height: 56 }) })
|
|
3563
|
-
] })
|
|
3564
|
-
}
|
|
3565
|
-
),
|
|
3566
|
-
/* @__PURE__ */ jsxs96(Container, { size: "xl", className: "pb-16", children: [
|
|
3567
|
-
/* @__PURE__ */ jsx123(Surface, { variant: "brutal", padding: "md", className: "mb-8", children: /* @__PURE__ */ jsxs96(Cluster, { justify: "between", align: "center", children: [
|
|
3568
|
-
/* @__PURE__ */ jsx123(Breadcrumbs, { items: [{ label: "Docs", href: "#top" }, { label: "Components" }] }),
|
|
3569
|
-
/* @__PURE__ */ jsxs96(Cluster, { gap: "sm", children: [
|
|
3570
|
-
/* @__PURE__ */ jsx123(Kbd, { children: "\u2318" }),
|
|
3571
|
-
/* @__PURE__ */ jsx123(Kbd, { children: "K" }),
|
|
3572
|
-
/* @__PURE__ */ jsx123("span", { className: "text-sm text-[var(--tapiz-text-muted)]", children: "Command-first framework UX" })
|
|
3573
|
-
] })
|
|
3574
|
-
] }) }),
|
|
3575
|
-
/* @__PURE__ */ jsxs96(DemoSection, { id: "foundations", title: "Foundations", description: "Core surfaces, cards, badges, layout helpers, empty states, skeletons and typography primitives.", children: [
|
|
3576
|
-
/* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "16rem", children: [
|
|
3577
|
-
/* @__PURE__ */ jsxs96(Card, { variant: "surface", children: [
|
|
3578
|
-
/* @__PURE__ */ jsx123("div", { className: "kicker", children: "surface" }),
|
|
3579
|
-
/* @__PURE__ */ jsx123("p", { className: "mt-2 text-sm text-[var(--tapiz-text-muted)]", children: "Default card treatment." })
|
|
3580
|
-
] }),
|
|
3581
|
-
/* @__PURE__ */ jsxs96(Card, { variant: "raised", children: [
|
|
3582
|
-
/* @__PURE__ */ jsx123("div", { className: "kicker", children: "raised" }),
|
|
3583
|
-
/* @__PURE__ */ jsx123("p", { className: "mt-2 text-sm text-[var(--tapiz-text-muted)]", children: "Elevated enterprise panel." })
|
|
3584
|
-
] }),
|
|
3585
|
-
/* @__PURE__ */ jsxs96(Card, { variant: "brutal", children: [
|
|
3586
|
-
/* @__PURE__ */ jsx123("div", { className: "kicker", children: "brutal" }),
|
|
3587
|
-
/* @__PURE__ */ jsx123("p", { className: "mt-2 text-sm text-[var(--tapiz-text-muted)]", children: "Hard border + hard shadow." })
|
|
3588
|
-
] }),
|
|
3589
|
-
/* @__PURE__ */ jsxs96(Card, { variant: "glass", children: [
|
|
3590
|
-
/* @__PURE__ */ jsx123("div", { className: "kicker", children: "glass" }),
|
|
3591
|
-
/* @__PURE__ */ jsx123("p", { className: "mt-2 text-sm text-[var(--tapiz-text-muted)]", children: "Backdrop style surface." })
|
|
3592
|
-
] })
|
|
3593
|
-
] }),
|
|
3594
|
-
/* @__PURE__ */ jsx123(Divider, { label: "status tokens", className: "my-8" }),
|
|
3595
|
-
/* @__PURE__ */ jsxs96(Cluster, { children: [
|
|
3596
|
-
/* @__PURE__ */ jsx123(Badge, { children: "Default" }),
|
|
3597
|
-
/* @__PURE__ */ jsx123(Badge, { variant: "success", children: "Success" }),
|
|
3598
|
-
/* @__PURE__ */ jsx123(Badge, { variant: "warning", children: "Warning" }),
|
|
3599
|
-
/* @__PURE__ */ jsx123(Badge, { variant: "danger", children: "Danger" }),
|
|
3600
|
-
/* @__PURE__ */ jsx123(Badge, { variant: "info", children: "Info" }),
|
|
3601
|
-
/* @__PURE__ */ jsx123(StatusBadge, { label: "Active", variant: "active" }),
|
|
3602
|
-
/* @__PURE__ */ jsx123(StatusBadge, { label: "Pending", variant: "pending" }),
|
|
3603
|
-
/* @__PURE__ */ jsx123(StatusBadge, { label: "Inactive", variant: "inactive" })
|
|
3604
|
-
] }),
|
|
3605
|
-
/* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "20rem", className: "mt-8", children: [
|
|
3606
|
-
/* @__PURE__ */ jsx123(EmptyState, { title: "No records", description: "Use empty states instead of blank panels." }),
|
|
3607
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Skeleton loading", description: "Use while data is loading.", children: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3608
|
-
/* @__PURE__ */ jsx123(Skeleton, { className: "h-4 w-3/4" }),
|
|
3609
|
-
/* @__PURE__ */ jsx123(Skeleton, { className: "h-4 w-1/2" }),
|
|
3610
|
-
/* @__PURE__ */ jsx123(Skeleton, { className: "h-20 w-full" })
|
|
3611
|
-
] }) }),
|
|
3612
|
-
/* @__PURE__ */ jsx123(KeyValueList, { density: "compact", items: [{ keyLabel: "Package", value: "@tapizlabs/ui" }, { keyLabel: "Mode", value: "Framework" }, { keyLabel: "Theme", value: "Token-first" }] })
|
|
3613
|
-
] })
|
|
3614
|
-
] }),
|
|
3615
|
-
/* @__PURE__ */ jsx123(DemoSection, { id: "forms", title: "Forms", description: "Controlled-ready field primitives for enterprise CRUD, settings, onboarding and import flows.", children: /* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "20rem", children: [
|
|
3616
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Fields", children: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3617
|
-
/* @__PURE__ */ jsx123(FormField, { label: "Workspace name", hint: "Shown in the app shell", children: /* @__PURE__ */ jsx123(Input, { placeholder: "Tapiz Academy" }) }),
|
|
3618
|
-
/* @__PURE__ */ jsx123(FormField, { label: "Role", children: /* @__PURE__ */ jsxs96(Select, { children: [
|
|
3619
|
-
/* @__PURE__ */ jsx123("option", { children: "Teacher" }),
|
|
3620
|
-
/* @__PURE__ */ jsx123("option", { children: "Admin" })
|
|
3621
|
-
] }) }),
|
|
3622
|
-
/* @__PURE__ */ jsx123(FormField, { label: "Notes", children: /* @__PURE__ */ jsx123(Textarea, { placeholder: "Internal note" }) })
|
|
3623
|
-
] }) }),
|
|
3624
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Advanced inputs", children: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3625
|
-
/* @__PURE__ */ jsx123(InputGroup, { prefix: "https://", suffix: ".tapiz.app", children: /* @__PURE__ */ jsx123(Input, { placeholder: "school" }) }),
|
|
3626
|
-
/* @__PURE__ */ jsx123(PasswordInput, { placeholder: "Password" }),
|
|
3627
|
-
/* @__PURE__ */ jsx123(Slider, { label: "Automation level", valueLabel: "72%", defaultValue: 72 }),
|
|
3628
|
-
/* @__PURE__ */ jsx123(ToggleGroup, { value: "monthly", options: [{ label: "Monthly", value: "monthly" }, { label: "Yearly", value: "yearly" }] }),
|
|
3629
|
-
/* @__PURE__ */ jsx123(Switch, { label: "Enable notifications", checked: true }),
|
|
3630
|
-
/* @__PURE__ */ jsx123(Combobox, { placeholder: "Choose workspace", options: [{ value: "academy", label: "Academy" }, { value: "enterprise", label: "Enterprise" }] }),
|
|
3631
|
-
/* @__PURE__ */ jsx123(DateRangePicker, {}),
|
|
3632
|
-
/* @__PURE__ */ jsx123(ColorSwatchPicker, { value: "accent", options: [{ value: "accent", label: "Accent", color: "var(--tapiz-accent)" }, { value: "success", label: "Success", color: "var(--tapiz-success)" }, { value: "warning", label: "Warning", color: "var(--tapiz-warning)" }] }),
|
|
3633
|
-
/* @__PURE__ */ jsx123(RatingInput, { value: 4 })
|
|
3634
|
-
] }) }),
|
|
3635
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Upload and text area", children: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3636
|
-
/* @__PURE__ */ jsx123(FileDropzone, { title: "Import CSV", description: "Drag attendance data or click to browse." }),
|
|
3637
|
-
/* @__PURE__ */ jsx123(TextareaCounter, { maxLength: 120, value: "Reusable character-count textarea for messages and descriptions.", readOnly: true })
|
|
3638
|
-
] }) })
|
|
3639
|
-
] }) }),
|
|
3640
|
-
/* @__PURE__ */ jsxs96(DemoSection, { id: "data", title: "Data display", description: "Tables, charts, progress, metrics, filters and visual summaries for dense products.", children: [
|
|
3641
|
-
/* @__PURE__ */ jsx123(
|
|
3642
|
-
DataToolbar,
|
|
3643
|
-
{
|
|
3644
|
-
title: "Students",
|
|
3645
|
-
description: "Search, filter and operate on tabular data.",
|
|
3646
|
-
search: /* @__PURE__ */ jsx123(SearchInput, { placeholder: "Search students", value: "", onChange: () => void 0 }),
|
|
3647
|
-
filters: /* @__PURE__ */ jsxs96(Fragment5, { children: [
|
|
3648
|
-
/* @__PURE__ */ jsx123(FilterChip, { active: true, children: "Active" }),
|
|
3649
|
-
/* @__PURE__ */ jsx123(FilterChip, { children: "Grade 8" }),
|
|
3650
|
-
/* @__PURE__ */ jsx123(FilterChip, { children: "High score" })
|
|
3651
|
-
] }),
|
|
3652
|
-
actions: /* @__PURE__ */ jsx123(Button, { size: "sm", children: "Export" }),
|
|
3653
|
-
className: "mb-4"
|
|
3654
|
-
}
|
|
3655
|
-
),
|
|
3656
|
-
/* @__PURE__ */ jsx123(
|
|
3657
|
-
DataTable,
|
|
3658
|
-
{
|
|
3659
|
-
variant: "enterprise",
|
|
3660
|
-
data: demoRows,
|
|
3661
|
-
rowKey: (row) => row.id,
|
|
3662
|
-
columns: [
|
|
3663
|
-
{ id: "student", header: "Student", cell: (row) => row.student, sortAccessor: (row) => row.student },
|
|
3664
|
-
{ id: "status", header: "Status", cell: (row) => /* @__PURE__ */ jsx123(StatusBadge, { label: row.status, variant: row.status === "Active" ? "success" : row.status === "Pending" ? "pending" : "danger" }) },
|
|
3665
|
-
{ id: "score", header: "Score", cell: (row) => `${row.score}%`, align: "right", sortAccessor: (row) => row.score }
|
|
3666
|
-
]
|
|
3667
|
-
}
|
|
3668
|
-
),
|
|
3669
|
-
/* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "19rem", className: "mt-8", children: [
|
|
3670
|
-
/* @__PURE__ */ jsx123(MetricCard, { label: "Attendance", value: "96.4%", trend: "+4.2%", trendTone: "positive", description: "vs last month" }),
|
|
3671
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Bar list", children: /* @__PURE__ */ jsx123(BarList, { items: [{ label: "Quiz", value: 42 }, { label: "Attendance", value: 68 }, { label: "Assignments", value: 54 }] }) }),
|
|
3672
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Donut", children: /* @__PURE__ */ jsx123(DonutMetric, { value: 82, label: "Completion", caption: "Average across active classes" }) }),
|
|
3673
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Progress", children: /* @__PURE__ */ jsx123(Progress, { value: 64, label: "Migration" }) }),
|
|
3674
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Score ring", children: /* @__PURE__ */ jsx123(ScoreRing, { value: 88, label: "quality" }) }),
|
|
3675
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Heatmap", children: /* @__PURE__ */ jsx123(HeatmapGrid, { cells: Array.from({ length: 35 }, (_, index) => ({ value: index * 7 % 18, title: `Day ${index + 1}` })) }) }),
|
|
3676
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Funnel", children: /* @__PURE__ */ jsx123(FunnelChart, { steps: [{ label: "Visited", value: 1200 }, { label: "Started", value: 820 }, { label: "Completed", value: 540 }] }) }),
|
|
3677
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Comparison", children: /* @__PURE__ */ jsx123(ComparisonMeter, { leftLabel: "Manual", rightLabel: "Automated", value: 72 }) })
|
|
3678
|
-
] })
|
|
3679
|
-
] }),
|
|
3680
|
-
/* @__PURE__ */ jsx123(DemoSection, { id: "navigation", title: "Navigation and disclosure", description: "Application shell, nav bars, tabs, accordion, stepper and overlays.", children: /* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "23rem", children: [
|
|
3681
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "App shell preview", children: /* @__PURE__ */ jsx123(
|
|
3682
|
-
AppShell,
|
|
3683
|
-
{
|
|
3684
|
-
sidebar: /* @__PURE__ */ jsx123(SidebarNav, { groups: [{ label: "Workspace", items: [{ label: "Dashboard", active: true }, { label: "Students" }, { label: "Reports" }] }] }),
|
|
3685
|
-
topbar: /* @__PURE__ */ jsx123(TopNav, { brand: "Tapiz", links: [{ label: "Docs", href: "#top" }] }),
|
|
3686
|
-
children: /* @__PURE__ */ jsx123("div", { className: "p-4 text-sm text-[var(--tapiz-text-muted)]", children: "Shell content slot" })
|
|
3687
|
-
}
|
|
3688
|
-
) }),
|
|
3689
|
-
/* @__PURE__ */ jsxs96(SectionCard, { title: "Tabs and accordion", children: [
|
|
3690
|
-
/* @__PURE__ */ jsx123(Tabs, { activeId: "usage", variant: "boxed", items: [{ id: "usage", label: "Usage", content: "Use tabs for related panels." }, { id: "api", label: "API", content: "Prop-driven and typed." }] }),
|
|
3691
|
-
/* @__PURE__ */ jsx123(Accordion, { className: "mt-4", openIds: ["one"], items: [{ id: "one", title: "Token-first", content: "No raw hex colors in application code." }, { id: "two", title: "Accessible", content: "Keyboard-friendly primitives." }] })
|
|
3692
|
-
] }),
|
|
3693
|
-
/* @__PURE__ */ jsxs96(SectionCard, { title: "Stepper / overlay states", children: [
|
|
3694
|
-
/* @__PURE__ */ jsx123(Stepper, { steps: [{ id: "create", label: "Create", status: "complete" }, { id: "configure", label: "Configure", status: "current" }, { id: "launch", label: "Launch", status: "upcoming" }] }),
|
|
3695
|
-
/* @__PURE__ */ jsxs96(Cluster, { className: "mt-4", children: [
|
|
3696
|
-
/* @__PURE__ */ jsx123(Popover, { trigger: /* @__PURE__ */ jsx123(Button, { size: "sm", children: "Popover" }), children: "Contextual content" }),
|
|
3697
|
-
/* @__PURE__ */ jsx123(Drawer, { open: false, title: "Drawer", children: "Drawer content" })
|
|
3698
|
-
] }),
|
|
3699
|
-
/* @__PURE__ */ jsx123(CommandMenu, { open: false, groups: [{ label: "Actions", items: [{ id: "open-dashboard", label: "Open dashboard" }, { id: "create-class", label: "Create class" }] }] })
|
|
3700
|
-
] })
|
|
3701
|
-
] }) }),
|
|
3702
|
-
/* @__PURE__ */ jsx123(DemoSection, { id: "feedback", title: "Feedback", description: "Alerts, callouts, notifications, health states and loading overlays.", children: /* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "22rem", children: [
|
|
3703
|
-
/* @__PURE__ */ jsx123(Alert2, { tone: "info", title: "Info alert", children: "Use for important inline messages." }),
|
|
3704
|
-
/* @__PURE__ */ jsx123(Callout, { tone: "warning", title: "Migration warning", children: "Review token usage before publishing." }),
|
|
3705
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Notifications", children: /* @__PURE__ */ jsx123(NotificationList, { items: [{ id: "1", title: "New import completed", description: "1,204 rows processed.", time: "2m", unread: true }, { id: "2", title: "Report ready", time: "1h" }] }) }),
|
|
3706
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Health", children: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3707
|
-
/* @__PURE__ */ jsx123(HealthIndicator, { tone: "operational", detail: "99.99%" }),
|
|
3708
|
-
/* @__PURE__ */ jsx123(HealthIndicator, { tone: "degraded", detail: "API latency" }),
|
|
3709
|
-
/* @__PURE__ */ jsx123(HealthIndicator, { tone: "outage", detail: "1 service" }),
|
|
3710
|
-
/* @__PURE__ */ jsx123(InlineStatus, { tone: "success", pulse: true, children: "Realtime sync active" })
|
|
3711
|
-
] }) }),
|
|
3712
|
-
/* @__PURE__ */ jsx123(LoadingOverlay, { visible: true, label: "Syncing", children: /* @__PURE__ */ jsx123("div", { className: "h-28 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]" }) })
|
|
3713
|
-
] }) }),
|
|
3714
|
-
/* @__PURE__ */ jsxs96(DemoSection, { id: "framework", title: "Framework patterns", description: "Higher-level enterprise blocks for admin panels, permissions, integrations, calendars and workflows.", children: [
|
|
3715
|
-
/* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "23rem", children: [
|
|
3716
|
-
/* @__PURE__ */ jsx123(ResourceCard, { title: "Classroom OS", eyebrow: "resource", description: "Reusable resource card for project, course, class or team entities.", status: "Live", meta: "Updated today" }),
|
|
3717
|
-
/* @__PURE__ */ jsx123(IntegrationCard, { name: "Google Classroom", description: "Sync rosters and assignments.", status: "connected", lastSync: "Synced 12m ago" }),
|
|
3718
|
-
/* @__PURE__ */ jsx123(AuditLog, { items: [{ actor: "Danijel", action: "updated permissions", timestamp: "09:42" }, { actor: "System", action: "synced attendance", timestamp: "09:30" }] })
|
|
3719
|
-
] }),
|
|
3720
|
-
/* @__PURE__ */ jsx123(SplitPane, { className: "mt-8", primary: /* @__PURE__ */ jsx123(KanbanBoard, { columns: [{ id: "todo", title: "Todo", items: [{ id: "a", title: "Design docs page", tone: "accent" }] }, { id: "doing", title: "Doing", items: [{ id: "b", title: "Build components", tone: "warning" }] }, { id: "done", title: "Done", items: [{ id: "c", title: "Tokens", tone: "success" }] }] }), secondary: /* @__PURE__ */ jsx123(AccessMatrix, { roles: [{ key: "admin", label: "Admin" }, { key: "teacher", label: "Teacher" }], permissions: [{ key: "users", label: "Manage users", roles: { admin: true, teacher: false } }, { key: "classes", label: "Manage classes", roles: { admin: true, teacher: true } }] }) }),
|
|
3721
|
-
/* @__PURE__ */ jsx123(CalendarGrid, { className: "mt-8", days: calendarDays })
|
|
3722
|
-
] }),
|
|
3723
|
-
/* @__PURE__ */ jsxs96(DemoSection, { id: "advanced", title: "Advanced framework blocks", description: "More product-grade patterns for operations, approvals, feature management, usage, rails and sticky controls.", children: [
|
|
3724
|
-
/* @__PURE__ */ jsx123(StickyBar, { className: "mb-6", children: /* @__PURE__ */ jsxs96(Cluster, { justify: "between", children: [
|
|
3725
|
-
/* @__PURE__ */ jsx123(InlineStatus, { tone: "info", children: "Previewing max component set" }),
|
|
3726
|
-
/* @__PURE__ */ jsx123(Button, { size: "sm", variant: "secondary", children: "Copy layout" })
|
|
3727
|
-
] }) }),
|
|
3728
|
-
/* @__PURE__ */ jsx123(
|
|
3729
|
-
SplitPane,
|
|
3730
|
-
{
|
|
3731
|
-
primary: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3732
|
-
/* @__PURE__ */ jsx123(ApprovalQueue, { items: [{ title: "Publish new grading rubric", requester: "Mila", priority: "high", description: "Requires admin approval before rollout." }, { title: "Invite external mentor", requester: "Vuk", priority: "medium" }] }),
|
|
3733
|
-
/* @__PURE__ */ jsx123(FeatureFlagTable, { flags: [{ key: "ai.quiz", name: "AI quiz generator", description: "Enable assisted quiz creation.", enabled: true, rollout: "80%" }, { key: "reports.v2", name: "Reports v2", description: "New analytics dashboard.", enabled: false, rollout: "Beta" }] })
|
|
3734
|
-
] }),
|
|
3735
|
-
secondary: /* @__PURE__ */ jsx123(PageRail, { title: "Docs rail", items: [{ label: "Forms", href: "#forms", active: true, meta: "12" }, { label: "Data", href: "#data", meta: "9" }, { label: "Framework", href: "#framework", meta: "18" }] })
|
|
3736
|
-
}
|
|
3737
|
-
),
|
|
3738
|
-
/* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "22rem", className: "mt-8", children: [
|
|
3739
|
-
/* @__PURE__ */ jsx123(PlanUsage, { items: [{ label: "Seats", used: 128, limit: 200 }, { label: "Storage", used: 64, limit: 100 }, { label: "Automations", used: 18, limit: 25 }] }),
|
|
3740
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "SLA", children: /* @__PURE__ */ jsxs96(Stack, { children: [
|
|
3741
|
-
/* @__PURE__ */ jsx123(SLAStatus, { label: "API uptime", value: 99 }),
|
|
3742
|
-
/* @__PURE__ */ jsx123(SLAStatus, { label: "Queue latency", value: 91, target: 95 })
|
|
3743
|
-
] }) }),
|
|
3744
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Inbox", children: /* @__PURE__ */ jsx123(InboxList, { items: [{ title: "Import completed", sender: "System", snippet: "Attendance import finished with 0 errors.", time: "2m", unread: true, tag: "Ops" }, { title: "Teacher request", sender: "Ana", snippet: "Needs access to Grade 8 workspace.", time: "1h" }] }) }),
|
|
3745
|
-
/* @__PURE__ */ jsx123(SectionCard, { title: "Activity", children: /* @__PURE__ */ jsx123(ActivityFeed, { items: [{ actor: "Danijel", action: "enabled Reports v2", time: "now" }, { actor: "System", action: "rotated API keys", time: "1h" }] }) })
|
|
3746
|
-
] }),
|
|
3747
|
-
/* @__PURE__ */ jsx123(MasonryGrid, { columns: 3, className: "mt-8", children: ["Token contract", "Component variants", "Agent docs", "A11y states", "Dark mode", "Framework patterns"].map((item) => /* @__PURE__ */ jsxs96(Card, { variant: "brutal", className: "mb-5 break-inside-avoid", children: [
|
|
3748
|
-
/* @__PURE__ */ jsx123("div", { className: "kicker", children: "module" }),
|
|
3749
|
-
/* @__PURE__ */ jsx123("h3", { className: "mt-2 font-semibold", children: item })
|
|
3750
|
-
] }, item)) })
|
|
3751
|
-
] }),
|
|
3752
|
-
/* @__PURE__ */ jsxs96(DemoSection, { id: "marketing", title: "Marketing blocks", description: "Landing-page building blocks for SaaS, education and enterprise presentation pages.", children: [
|
|
3753
|
-
/* @__PURE__ */ jsx123(AnnouncementBar, { action: /* @__PURE__ */ jsx123(Button, { size: "sm", variant: "brutal", children: "Read changelog" }), children: "New Tapiz UI max component pack is available." }),
|
|
3754
|
-
/* @__PURE__ */ jsxs96(FeatureGrid, { children: [
|
|
3755
|
-
/* @__PURE__ */ jsx123(FeatureCard, { title: "Token architecture", description: "Centralized semantic tokens for consistent light/dark UI." }),
|
|
3756
|
-
/* @__PURE__ */ jsx123(FeatureCard, { title: "Framework blocks", description: "Move faster with app shell, tables, forms and overlays." }),
|
|
3757
|
-
/* @__PURE__ */ jsx123(FeatureCard, { title: "Brutal enterprise", description: "Strong borders, sharp rhythm and professional hierarchy." })
|
|
3758
|
-
] }),
|
|
3759
|
-
/* @__PURE__ */ jsx123(StatsBand, { className: "mt-8", items: [{ value: "80+", label: "Components" }, { value: "2", label: "Themes" }, { value: "0", label: "App deps" }] }),
|
|
3760
|
-
/* @__PURE__ */ jsx123(LogoCloud, { className: "mt-8", title: "Works for product surfaces", items: [{ name: "Dashboard" }, { name: "Admin" }, { name: "Landing" }, { name: "Docs" }, { name: "Forms" }, { name: "Data" }] }),
|
|
3761
|
-
/* @__PURE__ */ jsxs96(ResponsiveGrid, { min: "20rem", className: "mt-8", children: [
|
|
3762
|
-
/* @__PURE__ */ jsx123(TestimonialCard, { quote: "Tapiz UI gives the product an instant enterprise backbone.", author: "Design Lead", role: "Tapiz Labs" }),
|
|
3763
|
-
/* @__PURE__ */ jsx123(PricingCard, { name: "Framework", price: "\u20AC0", highlighted: true, features: ["Token system", "Components", "Docs page"] }),
|
|
3764
|
-
/* @__PURE__ */ jsx123(ComparisonTable, { includedHeader: "Tapiz", alternativeHeader: "Ad-hoc UI", rows: [{ feature: "Light/dark", included: "Yes", alternative: "Manual" }, { feature: "Agent docs", included: "Included", alternative: "No" }] })
|
|
3765
|
-
] }),
|
|
3766
|
-
/* @__PURE__ */ jsx123(RoadmapList, { className: "mt-8", items: [{ quarter: "Q1", title: "Core framework", status: "Done", description: "Shell, nav, forms and table primitives." }, { quarter: "Q2", title: "Analytics blocks", status: "Now", description: "Charts, status and operational views." }, { quarter: "Q3", title: "AI workflows", status: "Next", description: "Agent-ready docs and generated screens." }] }),
|
|
3767
|
-
/* @__PURE__ */ jsx123(FAQSection, { className: "mt-8", description: "Common framework usage questions.", items: [{ question: "Can this be used outside Tapiz?", answer: "Yes. Components are generic and token-driven." }, { question: "Does it require app router?", answer: "No. The package avoids app-specific dependencies." }] }),
|
|
3768
|
-
/* @__PURE__ */ jsx123(CTASection, { className: "mt-8", eyebrow: "Ready", title: "Build with Tapiz UI", description: "Copy this page into your docs app or export TapizDocsPage from the package.", actions: /* @__PURE__ */ jsx123(Button, { variant: "primary", children: "Use framework" }) })
|
|
3769
|
-
] }),
|
|
3770
|
-
/* @__PURE__ */ jsx123(DemoSection, { id: "code", title: "Usage snippets", description: "Copyable examples for agents and developers.", children: /* @__PURE__ */ jsx123(CodeBlock, { language: "tsx", children: `import { TapizDocsPage } from "@tapizlabs/ui";
|
|
3771
|
-
import "@tapizlabs/ui/theme.css";
|
|
3772
|
-
|
|
3773
|
-
export default function Docs() {
|
|
3774
|
-
return <TapizDocsPage />;
|
|
3775
|
-
}` }) })
|
|
3776
|
-
] })
|
|
3777
|
-
] });
|
|
3778
|
-
}
|
|
3779
3447
|
export {
|
|
3780
3448
|
AccessMatrix,
|
|
3781
3449
|
Accordion,
|
|
@@ -3975,7 +3643,6 @@ export {
|
|
|
3975
3643
|
Table,
|
|
3976
3644
|
Tablet,
|
|
3977
3645
|
Tabs,
|
|
3978
|
-
TapizDocsPage,
|
|
3979
3646
|
TestimonialCard,
|
|
3980
3647
|
TextIcon,
|
|
3981
3648
|
Textarea,
|