@tapizlabs/ui 0.2.8 → 0.2.10
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 +5 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.js +68 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,11 @@ The format is based on Keep a Changelog and the package follows Semantic Version
|
|
|
10
10
|
- npm-ready README with package setup, exports, examples, and publishing guidance
|
|
11
11
|
- shared support for landing icon exports such as `Star`, `AppleIcon`, and `GooglePlayIcon`
|
|
12
12
|
|
|
13
|
+
## [0.2.9] - 2026-06-13
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- `LogoMark` gains a `"playground"` variant — Tapiz "T" with a shell prompt `>_` glyph (chevron in signal yellow, white cursor) for the Tapiz Playground product
|
|
17
|
+
|
|
13
18
|
### Changed
|
|
14
19
|
- shared `Button` accepts icon component references in addition to rendered nodes
|
|
15
20
|
- shared `ConfirmDialog` supports both `description` and compatibility `message` props
|
package/dist/index.d.ts
CHANGED
|
@@ -102,8 +102,15 @@ interface LogoMarkProps {
|
|
|
102
102
|
bgClassName?: string;
|
|
103
103
|
bgFill?: string;
|
|
104
104
|
bgOpacity?: number;
|
|
105
|
-
/**
|
|
106
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Product glyph:
|
|
107
|
+
* - "lms" = T monogram
|
|
108
|
+
* - "boards" = kanban columns
|
|
109
|
+
* - "playground" = T + shell prompt `>_` (SQL/terminal)
|
|
110
|
+
* - "whiteboard" = tabla sa skiciranim potezom
|
|
111
|
+
* - "cloud" = oblak sa T monogramom (Tapiz Cloud Platform / status)
|
|
112
|
+
*/
|
|
113
|
+
variant?: "lms" | "boards" | "playground" | "whiteboard" | "cloud";
|
|
107
114
|
}
|
|
108
115
|
declare const LogoMark: ({ size, className, bgClassName, bgFill, bgOpacity, variant, }: LogoMarkProps) => react.JSX.Element;
|
|
109
116
|
|
package/dist/index.js
CHANGED
|
@@ -491,7 +491,7 @@ var Clock = ({ size = 13, className, style }) => /* @__PURE__ */ jsxs5("svg", {
|
|
|
491
491
|
] });
|
|
492
492
|
|
|
493
493
|
// src/components/icons/LogoIcons.tsx
|
|
494
|
-
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
494
|
+
import { Fragment, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
495
495
|
var LogoMark = ({
|
|
496
496
|
size = 28,
|
|
497
497
|
className,
|
|
@@ -509,13 +509,70 @@ var LogoMark = ({
|
|
|
509
509
|
fill: "none",
|
|
510
510
|
children: [
|
|
511
511
|
/* @__PURE__ */ jsx6("rect", { width: "64", height: "64", rx: "14", fill: bgFill, opacity: bgOpacity, className: bgClassName }),
|
|
512
|
-
variant === "lms"
|
|
512
|
+
variant === "lms" && /* @__PURE__ */ jsxs6("g", { fill: "#fff", children: [
|
|
513
513
|
/* @__PURE__ */ jsx6("rect", { x: "14", y: "14", width: "36", height: "10", rx: "3" }),
|
|
514
514
|
/* @__PURE__ */ jsx6("rect", { x: "27", y: "14", width: "10", height: "36", rx: "3" })
|
|
515
|
-
] })
|
|
515
|
+
] }),
|
|
516
|
+
variant === "boards" && /* @__PURE__ */ jsxs6("g", { fill: "#fff", children: [
|
|
516
517
|
/* @__PURE__ */ jsx6("rect", { x: "13", y: "15", width: "10", height: "26", rx: "5" }),
|
|
517
518
|
/* @__PURE__ */ jsx6("rect", { x: "27", y: "15", width: "10", height: "34", rx: "5" }),
|
|
518
519
|
/* @__PURE__ */ jsx6("rect", { x: "41", y: "15", width: "10", height: "20", rx: "5" })
|
|
520
|
+
] }),
|
|
521
|
+
variant === "playground" && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
522
|
+
/* @__PURE__ */ jsxs6("g", { fill: "#fff", children: [
|
|
523
|
+
/* @__PURE__ */ jsx6("rect", { x: "13", y: "12", width: "38", height: "9", rx: "3" }),
|
|
524
|
+
/* @__PURE__ */ jsx6("rect", { x: "27", y: "12", width: "10", height: "30", rx: "3" })
|
|
525
|
+
] }),
|
|
526
|
+
/* @__PURE__ */ jsx6(
|
|
527
|
+
"path",
|
|
528
|
+
{
|
|
529
|
+
d: "M16 46 L23 51 L16 56",
|
|
530
|
+
stroke: "#d4ff3a",
|
|
531
|
+
strokeWidth: "4.5",
|
|
532
|
+
strokeLinecap: "round",
|
|
533
|
+
strokeLinejoin: "round",
|
|
534
|
+
fill: "none"
|
|
535
|
+
}
|
|
536
|
+
),
|
|
537
|
+
/* @__PURE__ */ jsx6("rect", { x: "30", y: "52.5", width: "14", height: "4.5", rx: "2.25", fill: "#fff" })
|
|
538
|
+
] }),
|
|
539
|
+
variant === "whiteboard" && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
540
|
+
/* @__PURE__ */ jsx6("rect", { x: "12", y: "15", width: "40", height: "28", rx: "4", fill: "#fff" }),
|
|
541
|
+
/* @__PURE__ */ jsx6(
|
|
542
|
+
"path",
|
|
543
|
+
{
|
|
544
|
+
d: "M19 35 C24 24, 30 24, 33 31 C35.5 37, 41 36, 45 27",
|
|
545
|
+
stroke: "#1496b3",
|
|
546
|
+
strokeWidth: "3.4",
|
|
547
|
+
strokeLinecap: "round",
|
|
548
|
+
strokeLinejoin: "round",
|
|
549
|
+
fill: "none"
|
|
550
|
+
}
|
|
551
|
+
),
|
|
552
|
+
/* @__PURE__ */ jsx6("circle", { cx: "19", cy: "35", r: "2.6", fill: "#1496b3" }),
|
|
553
|
+
/* @__PURE__ */ jsx6("circle", { cx: "45", cy: "27", r: "2.6", fill: "#d4ff3a" }),
|
|
554
|
+
/* @__PURE__ */ jsx6(
|
|
555
|
+
"path",
|
|
556
|
+
{
|
|
557
|
+
d: "M22 43 L19 51 M42 43 L45 51",
|
|
558
|
+
stroke: "#fff",
|
|
559
|
+
strokeWidth: "4",
|
|
560
|
+
strokeLinecap: "round"
|
|
561
|
+
}
|
|
562
|
+
)
|
|
563
|
+
] }),
|
|
564
|
+
variant === "cloud" && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
565
|
+
/* @__PURE__ */ jsx6(
|
|
566
|
+
"path",
|
|
567
|
+
{
|
|
568
|
+
fill: "#fff",
|
|
569
|
+
d: "M23 45 q-4.6 0-7.8-3.2Q12 38.6 12 34 q0-3.95 2.5-7 2.5-3.05 6.4-3.83 1.05-4.25 4.6-6.91Q29.05 13.6 33.7 13.6 q5.75 0 9.78 3.9 4.03 3.9 4.22 9.52 3.26.29 5.38 2.69 2.12 2.4 2.12 5.63 0 3.58-2.56 6.11T46 47 H23Z"
|
|
570
|
+
}
|
|
571
|
+
),
|
|
572
|
+
/* @__PURE__ */ jsxs6("g", { fill: "#1496b3", children: [
|
|
573
|
+
/* @__PURE__ */ jsx6("rect", { x: "25", y: "30", width: "16", height: "3.6", rx: "1.6" }),
|
|
574
|
+
/* @__PURE__ */ jsx6("rect", { x: "31.2", y: "30", width: "3.6", height: "12", rx: "1.6" })
|
|
575
|
+
] })
|
|
519
576
|
] })
|
|
520
577
|
]
|
|
521
578
|
}
|
|
@@ -1777,7 +1834,7 @@ function StatusBadge({ label, variant = "default", className = "" }) {
|
|
|
1777
1834
|
// src/components/shared/ActionMenu.tsx
|
|
1778
1835
|
import { useEffect as useEffect2, useLayoutEffect, useRef as useRef2, useState as useState5 } from "react";
|
|
1779
1836
|
import { createPortal as createPortal4 } from "react-dom";
|
|
1780
|
-
import { Fragment, jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1837
|
+
import { Fragment as Fragment2, jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1781
1838
|
var defaultMenuStyle = {
|
|
1782
1839
|
background: "var(--color-ink-200)",
|
|
1783
1840
|
border: "1px solid var(--color-border-hi)",
|
|
@@ -1861,7 +1918,7 @@ function ActionMenu({
|
|
|
1861
1918
|
document.removeEventListener("keydown", handle);
|
|
1862
1919
|
};
|
|
1863
1920
|
}, [open]);
|
|
1864
|
-
const menuNode = open && pos ? /* @__PURE__ */ jsxs28(
|
|
1921
|
+
const menuNode = open && pos ? /* @__PURE__ */ jsxs28(Fragment2, { children: [
|
|
1865
1922
|
/* @__PURE__ */ jsx41("div", { className: "fixed inset-0 z-9998", onClick: () => setOpen(false) }),
|
|
1866
1923
|
/* @__PURE__ */ jsx41(
|
|
1867
1924
|
"div",
|
|
@@ -2239,7 +2296,7 @@ function Breadcrumbs({ items, separator = "/", className = "" }) {
|
|
|
2239
2296
|
}
|
|
2240
2297
|
|
|
2241
2298
|
// src/components/navigation/SidebarNav.tsx
|
|
2242
|
-
import { Fragment as
|
|
2299
|
+
import { Fragment as Fragment3, jsx as jsx56, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
2243
2300
|
function SidebarNav({ groups, header, footer, className = "" }) {
|
|
2244
2301
|
return /* @__PURE__ */ jsxs39("div", { className: `flex h-full min-h-screen flex-col bg-[var(--tapiz-bg-surface)] ${className}`, children: [
|
|
2245
2302
|
header ? /* @__PURE__ */ jsx56("div", { className: "border-b border-[var(--tapiz-border-subtle)] p-4", children: header }) : null,
|
|
@@ -2256,7 +2313,7 @@ function SidebarNavLink({ item }) {
|
|
|
2256
2313
|
item.active ? "border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)] shadow-[inset_3px_0_0_var(--tapiz-accent)]" : "border-transparent text-[var(--tapiz-text-secondary)] hover:border-[var(--tapiz-border-subtle)] hover:bg-[var(--tapiz-bg-surface-muted)] hover:text-[var(--tapiz-text-primary)]",
|
|
2257
2314
|
item.disabled ? "pointer-events-none opacity-40" : ""
|
|
2258
2315
|
].filter(Boolean).join(" ");
|
|
2259
|
-
const content = /* @__PURE__ */ jsxs39(
|
|
2316
|
+
const content = /* @__PURE__ */ jsxs39(Fragment3, { children: [
|
|
2260
2317
|
item.icon ? /* @__PURE__ */ jsx56("span", { className: "grid size-5 place-items-center text-[var(--tapiz-text-muted)]", children: item.icon }) : null,
|
|
2261
2318
|
/* @__PURE__ */ jsx56("span", { className: "min-w-0 flex-1 truncate", children: item.label }),
|
|
2262
2319
|
item.badge ? /* @__PURE__ */ jsx56("span", { children: item.badge }) : null
|
|
@@ -2862,9 +2919,9 @@ function DataToolbar({ title, description, search, filters, actions, className =
|
|
|
2862
2919
|
}
|
|
2863
2920
|
|
|
2864
2921
|
// src/components/framework/ResourceCard.tsx
|
|
2865
|
-
import { Fragment as
|
|
2922
|
+
import { Fragment as Fragment4, jsx as jsx88, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
2866
2923
|
function ResourceCard({ title, description, eyebrow, icon, meta, status, actions, href, className = "" }) {
|
|
2867
|
-
const content = /* @__PURE__ */ jsxs65(
|
|
2924
|
+
const content = /* @__PURE__ */ jsxs65(Fragment4, { children: [
|
|
2868
2925
|
/* @__PURE__ */ jsxs65("div", { className: "flex items-start justify-between gap-4", children: [
|
|
2869
2926
|
/* @__PURE__ */ jsxs65("div", { className: "flex min-w-0 items-start gap-3", children: [
|
|
2870
2927
|
icon ? /* @__PURE__ */ jsx88("div", { className: "border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-2 text-[var(--tapiz-accent)]", children: icon }) : null,
|
|
@@ -3159,12 +3216,12 @@ function MasonryGrid({ children, columns = 3, gap = "md", className = "", style
|
|
|
3159
3216
|
}
|
|
3160
3217
|
|
|
3161
3218
|
// src/components/layout/PageRail.tsx
|
|
3162
|
-
import { Fragment as
|
|
3219
|
+
import { Fragment as Fragment5, jsx as jsx103, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
3163
3220
|
function PageRail({ title, items, actions, className = "", style }) {
|
|
3164
3221
|
return /* @__PURE__ */ jsxs79("aside", { className: ["sticky top-20 rounded-none border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-sm)]", className].filter(Boolean).join(" "), style, children: [
|
|
3165
3222
|
title ? /* @__PURE__ */ jsx103("div", { className: "kicker mb-3 px-2", children: title }) : null,
|
|
3166
3223
|
/* @__PURE__ */ jsx103("nav", { className: "flex flex-col gap-1", children: items.map((item, index) => {
|
|
3167
|
-
const content = /* @__PURE__ */ jsxs79(
|
|
3224
|
+
const content = /* @__PURE__ */ jsxs79(Fragment5, { children: [
|
|
3168
3225
|
/* @__PURE__ */ jsx103("span", { className: "truncate", children: item.label }),
|
|
3169
3226
|
item.meta ? /* @__PURE__ */ jsx103("span", { className: "font-mono text-[10px] text-[var(--tapiz-text-muted)]", children: item.meta }) : null
|
|
3170
3227
|
] });
|