@tapizlabs/ui 0.2.8 → 0.2.11
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 +10 -2
- package/dist/index.js +87 -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,16 @@ 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
|
+
* - "specs" = dokument/spec list sa redovima teksta i čekiranom stavkom (Tapiz Specs)
|
|
113
|
+
*/
|
|
114
|
+
variant?: "lms" | "boards" | "playground" | "whiteboard" | "cloud" | "specs";
|
|
107
115
|
}
|
|
108
116
|
declare const LogoMark: ({ size, className, bgClassName, bgFill, bgOpacity, variant, }: LogoMarkProps) => react.JSX.Element;
|
|
109
117
|
|
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,89 @@ 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
|
+
] })
|
|
576
|
+
] }),
|
|
577
|
+
variant === "specs" && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
578
|
+
/* @__PURE__ */ jsx6("rect", { x: "16", y: "12", width: "32", height: "40", rx: "4", fill: "#fff" }),
|
|
579
|
+
/* @__PURE__ */ jsxs6("g", { fill: "#1496b3", children: [
|
|
580
|
+
/* @__PURE__ */ jsx6("rect", { x: "21", y: "19", width: "22", height: "3.4", rx: "1.7" }),
|
|
581
|
+
/* @__PURE__ */ jsx6("rect", { x: "21", y: "26", width: "22", height: "3.4", rx: "1.7" }),
|
|
582
|
+
/* @__PURE__ */ jsx6("rect", { x: "21", y: "33", width: "14", height: "3.4", rx: "1.7" })
|
|
583
|
+
] }),
|
|
584
|
+
/* @__PURE__ */ jsx6(
|
|
585
|
+
"path",
|
|
586
|
+
{
|
|
587
|
+
d: "M22 43 L26 47 L34 39",
|
|
588
|
+
stroke: "#d4ff3a",
|
|
589
|
+
strokeWidth: "4",
|
|
590
|
+
strokeLinecap: "round",
|
|
591
|
+
strokeLinejoin: "round",
|
|
592
|
+
fill: "none"
|
|
593
|
+
}
|
|
594
|
+
)
|
|
519
595
|
] })
|
|
520
596
|
]
|
|
521
597
|
}
|
|
@@ -1777,7 +1853,7 @@ function StatusBadge({ label, variant = "default", className = "" }) {
|
|
|
1777
1853
|
// src/components/shared/ActionMenu.tsx
|
|
1778
1854
|
import { useEffect as useEffect2, useLayoutEffect, useRef as useRef2, useState as useState5 } from "react";
|
|
1779
1855
|
import { createPortal as createPortal4 } from "react-dom";
|
|
1780
|
-
import { Fragment, jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1856
|
+
import { Fragment as Fragment2, jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1781
1857
|
var defaultMenuStyle = {
|
|
1782
1858
|
background: "var(--color-ink-200)",
|
|
1783
1859
|
border: "1px solid var(--color-border-hi)",
|
|
@@ -1861,7 +1937,7 @@ function ActionMenu({
|
|
|
1861
1937
|
document.removeEventListener("keydown", handle);
|
|
1862
1938
|
};
|
|
1863
1939
|
}, [open]);
|
|
1864
|
-
const menuNode = open && pos ? /* @__PURE__ */ jsxs28(
|
|
1940
|
+
const menuNode = open && pos ? /* @__PURE__ */ jsxs28(Fragment2, { children: [
|
|
1865
1941
|
/* @__PURE__ */ jsx41("div", { className: "fixed inset-0 z-9998", onClick: () => setOpen(false) }),
|
|
1866
1942
|
/* @__PURE__ */ jsx41(
|
|
1867
1943
|
"div",
|
|
@@ -2239,7 +2315,7 @@ function Breadcrumbs({ items, separator = "/", className = "" }) {
|
|
|
2239
2315
|
}
|
|
2240
2316
|
|
|
2241
2317
|
// src/components/navigation/SidebarNav.tsx
|
|
2242
|
-
import { Fragment as
|
|
2318
|
+
import { Fragment as Fragment3, jsx as jsx56, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
2243
2319
|
function SidebarNav({ groups, header, footer, className = "" }) {
|
|
2244
2320
|
return /* @__PURE__ */ jsxs39("div", { className: `flex h-full min-h-screen flex-col bg-[var(--tapiz-bg-surface)] ${className}`, children: [
|
|
2245
2321
|
header ? /* @__PURE__ */ jsx56("div", { className: "border-b border-[var(--tapiz-border-subtle)] p-4", children: header }) : null,
|
|
@@ -2256,7 +2332,7 @@ function SidebarNavLink({ item }) {
|
|
|
2256
2332
|
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
2333
|
item.disabled ? "pointer-events-none opacity-40" : ""
|
|
2258
2334
|
].filter(Boolean).join(" ");
|
|
2259
|
-
const content = /* @__PURE__ */ jsxs39(
|
|
2335
|
+
const content = /* @__PURE__ */ jsxs39(Fragment3, { children: [
|
|
2260
2336
|
item.icon ? /* @__PURE__ */ jsx56("span", { className: "grid size-5 place-items-center text-[var(--tapiz-text-muted)]", children: item.icon }) : null,
|
|
2261
2337
|
/* @__PURE__ */ jsx56("span", { className: "min-w-0 flex-1 truncate", children: item.label }),
|
|
2262
2338
|
item.badge ? /* @__PURE__ */ jsx56("span", { children: item.badge }) : null
|
|
@@ -2862,9 +2938,9 @@ function DataToolbar({ title, description, search, filters, actions, className =
|
|
|
2862
2938
|
}
|
|
2863
2939
|
|
|
2864
2940
|
// src/components/framework/ResourceCard.tsx
|
|
2865
|
-
import { Fragment as
|
|
2941
|
+
import { Fragment as Fragment4, jsx as jsx88, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
2866
2942
|
function ResourceCard({ title, description, eyebrow, icon, meta, status, actions, href, className = "" }) {
|
|
2867
|
-
const content = /* @__PURE__ */ jsxs65(
|
|
2943
|
+
const content = /* @__PURE__ */ jsxs65(Fragment4, { children: [
|
|
2868
2944
|
/* @__PURE__ */ jsxs65("div", { className: "flex items-start justify-between gap-4", children: [
|
|
2869
2945
|
/* @__PURE__ */ jsxs65("div", { className: "flex min-w-0 items-start gap-3", children: [
|
|
2870
2946
|
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 +3235,12 @@ function MasonryGrid({ children, columns = 3, gap = "md", className = "", style
|
|
|
3159
3235
|
}
|
|
3160
3236
|
|
|
3161
3237
|
// src/components/layout/PageRail.tsx
|
|
3162
|
-
import { Fragment as
|
|
3238
|
+
import { Fragment as Fragment5, jsx as jsx103, jsxs as jsxs79 } from "react/jsx-runtime";
|
|
3163
3239
|
function PageRail({ title, items, actions, className = "", style }) {
|
|
3164
3240
|
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
3241
|
title ? /* @__PURE__ */ jsx103("div", { className: "kicker mb-3 px-2", children: title }) : null,
|
|
3166
3242
|
/* @__PURE__ */ jsx103("nav", { className: "flex flex-col gap-1", children: items.map((item, index) => {
|
|
3167
|
-
const content = /* @__PURE__ */ jsxs79(
|
|
3243
|
+
const content = /* @__PURE__ */ jsxs79(Fragment5, { children: [
|
|
3168
3244
|
/* @__PURE__ */ jsx103("span", { className: "truncate", children: item.label }),
|
|
3169
3245
|
item.meta ? /* @__PURE__ */ jsx103("span", { className: "font-mono text-[10px] text-[var(--tapiz-text-muted)]", children: item.meta }) : null
|
|
3170
3246
|
] });
|