@quilltap/theme-storybook 1.0.23 → 1.0.25
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/README.md +1 -0
- package/dist/{chunk-45RKCZL3.mjs → chunk-VCF2M2TP.mjs} +17 -0
- package/dist/index.css +18 -0
- package/dist/index.js +17 -0
- package/dist/index.mjs +1 -1
- package/dist/stories/index.js +17 -0
- package/dist/stories/index.mjs +1 -1
- package/package.json +7 -7
- package/src/css/qt-components.css +20 -0
- package/src/stories/components/Cards.tsx +29 -0
- package/src/stories/components/Inputs.tsx +1 -1
package/README.md
CHANGED
|
@@ -261,6 +261,7 @@ All Quilltap components use `qt-*` prefixed classes. Your theme CSS can override
|
|
|
261
261
|
- `.qt-card-title`, `.qt-card-description` - Card text
|
|
262
262
|
- `.qt-card-interactive` - Hoverable card
|
|
263
263
|
- `.qt-entity-card` - Character/entity list card
|
|
264
|
+
- `.qt-character-card` - Compact character card (homepage grid)
|
|
264
265
|
- `.qt-panel` - Panel variant
|
|
265
266
|
|
|
266
267
|
### Inputs
|
|
@@ -542,6 +542,23 @@ var Cards = () => {
|
|
|
542
542
|
] })
|
|
543
543
|
] }) }, name)) })
|
|
544
544
|
] }),
|
|
545
|
+
/* @__PURE__ */ jsxs5("section", { style: { marginBottom: "2rem" }, children: [
|
|
546
|
+
/* @__PURE__ */ jsx5("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Character Cards" }),
|
|
547
|
+
/* @__PURE__ */ jsx5("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Compact cards used on the homepage grid. Centered layout with avatar, name, title, provider badge, and action." }),
|
|
548
|
+
/* @__PURE__ */ jsx5("div", { style: { display: "grid", gridTemplateColumns: "repeat(3, minmax(0, 140px))", gap: "0.75rem" }, children: [
|
|
549
|
+
{ name: "Alice", title: "The Adventurer", provider: "Claude Sonnet" },
|
|
550
|
+
{ name: "Bob", title: "The Keeper of Many Long Titles", provider: "GPT-4o" },
|
|
551
|
+
{ name: "Carol", title: "Scribe", provider: "Gemini Pro" }
|
|
552
|
+
].map((char) => /* @__PURE__ */ jsxs5("div", { className: "qt-character-card", children: [
|
|
553
|
+
/* @__PURE__ */ jsx5("div", { className: "qt-avatar", style: { width: "3rem", height: "3rem" }, children: /* @__PURE__ */ jsx5("div", { className: "qt-avatar-fallback", children: char.name[0] }) }),
|
|
554
|
+
/* @__PURE__ */ jsxs5("div", { style: { textAlign: "center", width: "100%", minWidth: 0 }, children: [
|
|
555
|
+
/* @__PURE__ */ jsx5("p", { className: "qt-card-title", style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: char.name }),
|
|
556
|
+
/* @__PURE__ */ jsx5("p", { className: "qt-card-subtitle", style: { fontStyle: "italic", minHeight: "2.5rem" }, children: char.title }),
|
|
557
|
+
/* @__PURE__ */ jsx5("span", { style: { fontSize: "0.75rem", opacity: 0.6 }, children: char.provider })
|
|
558
|
+
] }),
|
|
559
|
+
/* @__PURE__ */ jsx5("button", { className: "qt-button-success qt-button-sm", style: { marginTop: "auto", width: "100%" }, children: "Chat" })
|
|
560
|
+
] }, char.name)) })
|
|
561
|
+
] }),
|
|
545
562
|
/* @__PURE__ */ jsxs5("section", { style: { marginBottom: "2rem" }, children: [
|
|
546
563
|
/* @__PURE__ */ jsx5("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Card Grid" }),
|
|
547
564
|
/* @__PURE__ */ jsxs5("div", { className: "qt-card-grid-3", children: [
|
package/dist/index.css
CHANGED
|
@@ -666,6 +666,24 @@ body {
|
|
|
666
666
|
border-color: var(--color-primary);
|
|
667
667
|
box-shadow: var(--qt-card-shadow-hover);
|
|
668
668
|
}
|
|
669
|
+
.qt-character-card {
|
|
670
|
+
display: flex;
|
|
671
|
+
flex-direction: column;
|
|
672
|
+
align-items: center;
|
|
673
|
+
gap: 0.5rem;
|
|
674
|
+
height: 100%;
|
|
675
|
+
padding: var(--qt-character-card-padding, 0.75rem);
|
|
676
|
+
border-radius: var(--qt-card-radius);
|
|
677
|
+
background-color: var(--qt-card-bg);
|
|
678
|
+
color: var(--qt-card-fg);
|
|
679
|
+
border: 1px solid color-mix(in srgb, var(--qt-card-border) calc(var(--qt-card-border-opacity, 1) * 100%), transparent);
|
|
680
|
+
box-shadow: var(--qt-card-shadow);
|
|
681
|
+
transition: var(--qt-card-transition);
|
|
682
|
+
}
|
|
683
|
+
.qt-character-card:hover {
|
|
684
|
+
border-color: var(--color-primary);
|
|
685
|
+
box-shadow: var(--qt-card-shadow-hover);
|
|
686
|
+
}
|
|
669
687
|
.qt-panel {
|
|
670
688
|
background-color: var(--qt-card-bg);
|
|
671
689
|
border: 1px solid var(--qt-card-border);
|
package/dist/index.js
CHANGED
|
@@ -648,6 +648,23 @@ var Cards = () => {
|
|
|
648
648
|
] })
|
|
649
649
|
] }) }, name)) })
|
|
650
650
|
] }),
|
|
651
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
|
|
652
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Character Cards" }),
|
|
653
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Compact cards used on the homepage grid. Centered layout with avatar, name, title, provider badge, and action." }),
|
|
654
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "grid", gridTemplateColumns: "repeat(3, minmax(0, 140px))", gap: "0.75rem" }, children: [
|
|
655
|
+
{ name: "Alice", title: "The Adventurer", provider: "Claude Sonnet" },
|
|
656
|
+
{ name: "Bob", title: "The Keeper of Many Long Titles", provider: "GPT-4o" },
|
|
657
|
+
{ name: "Carol", title: "Scribe", provider: "Gemini Pro" }
|
|
658
|
+
].map((char) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "qt-character-card", children: [
|
|
659
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "qt-avatar", style: { width: "3rem", height: "3rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "qt-avatar-fallback", children: char.name[0] }) }),
|
|
660
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", width: "100%", minWidth: 0 }, children: [
|
|
661
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "qt-card-title", style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: char.name }),
|
|
662
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "qt-card-subtitle", style: { fontStyle: "italic", minHeight: "2.5rem" }, children: char.title }),
|
|
663
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontSize: "0.75rem", opacity: 0.6 }, children: char.provider })
|
|
664
|
+
] }),
|
|
665
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("button", { className: "qt-button-success qt-button-sm", style: { marginTop: "auto", width: "100%" }, children: "Chat" })
|
|
666
|
+
] }, char.name)) })
|
|
667
|
+
] }),
|
|
651
668
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
|
|
652
669
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Card Grid" }),
|
|
653
670
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "qt-card-grid-3", children: [
|
package/dist/index.mjs
CHANGED
package/dist/stories/index.js
CHANGED
|
@@ -585,6 +585,23 @@ var Cards = () => {
|
|
|
585
585
|
] })
|
|
586
586
|
] }) }, name)) })
|
|
587
587
|
] }),
|
|
588
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
|
|
589
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Character Cards" }),
|
|
590
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Compact cards used on the homepage grid. Centered layout with avatar, name, title, provider badge, and action." }),
|
|
591
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { display: "grid", gridTemplateColumns: "repeat(3, minmax(0, 140px))", gap: "0.75rem" }, children: [
|
|
592
|
+
{ name: "Alice", title: "The Adventurer", provider: "Claude Sonnet" },
|
|
593
|
+
{ name: "Bob", title: "The Keeper of Many Long Titles", provider: "GPT-4o" },
|
|
594
|
+
{ name: "Carol", title: "Scribe", provider: "Gemini Pro" }
|
|
595
|
+
].map((char) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "qt-character-card", children: [
|
|
596
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "qt-avatar", style: { width: "3rem", height: "3rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "qt-avatar-fallback", children: char.name[0] }) }),
|
|
597
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: { textAlign: "center", width: "100%", minWidth: 0 }, children: [
|
|
598
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "qt-card-title", style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: char.name }),
|
|
599
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "qt-card-subtitle", style: { fontStyle: "italic", minHeight: "2.5rem" }, children: char.title }),
|
|
600
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { style: { fontSize: "0.75rem", opacity: 0.6 }, children: char.provider })
|
|
601
|
+
] }),
|
|
602
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: "qt-button-success qt-button-sm", style: { marginTop: "auto", width: "100%" }, children: "Chat" })
|
|
603
|
+
] }, char.name)) })
|
|
604
|
+
] }),
|
|
588
605
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
|
|
589
606
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Card Grid" }),
|
|
590
607
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "qt-card-grid-3", children: [
|
package/dist/stories/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quilltap/theme-storybook",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"description": "Storybook preset and stories for developing Quilltap theme plugins",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"storybook": ">=8.0.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@storybook/react": "^10.
|
|
47
|
-
"@types/react": "^
|
|
48
|
-
"react": "^19.
|
|
49
|
-
"storybook": "^10.
|
|
50
|
-
"tsup": "^8.
|
|
51
|
-
"typescript": "^5.3
|
|
46
|
+
"@storybook/react": "^10.3.1",
|
|
47
|
+
"@types/react": "^19.2.14",
|
|
48
|
+
"react": "^19.2.4",
|
|
49
|
+
"storybook": "^10.3.1",
|
|
50
|
+
"tsup": "^8.5.1",
|
|
51
|
+
"typescript": "^5.9.3"
|
|
52
52
|
},
|
|
53
53
|
"keywords": [
|
|
54
54
|
"quilltap",
|
|
@@ -628,6 +628,26 @@
|
|
|
628
628
|
box-shadow: var(--qt-card-shadow-hover);
|
|
629
629
|
}
|
|
630
630
|
|
|
631
|
+
.qt-character-card {
|
|
632
|
+
display: flex;
|
|
633
|
+
flex-direction: column;
|
|
634
|
+
align-items: center;
|
|
635
|
+
gap: 0.5rem;
|
|
636
|
+
height: 100%;
|
|
637
|
+
padding: var(--qt-character-card-padding, 0.75rem);
|
|
638
|
+
border-radius: var(--qt-card-radius);
|
|
639
|
+
background-color: var(--qt-card-bg);
|
|
640
|
+
color: var(--qt-card-fg);
|
|
641
|
+
border: 1px solid color-mix(in srgb, var(--qt-card-border) calc(var(--qt-card-border-opacity, 1) * 100%), transparent);
|
|
642
|
+
box-shadow: var(--qt-card-shadow);
|
|
643
|
+
transition: var(--qt-card-transition);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.qt-character-card:hover {
|
|
647
|
+
border-color: var(--color-primary);
|
|
648
|
+
box-shadow: var(--qt-card-shadow-hover);
|
|
649
|
+
}
|
|
650
|
+
|
|
631
651
|
.qt-panel {
|
|
632
652
|
background-color: var(--qt-card-bg);
|
|
633
653
|
border: 1px solid var(--qt-card-border);
|
|
@@ -72,6 +72,35 @@ export const Cards: React.FC = () => {
|
|
|
72
72
|
</div>
|
|
73
73
|
</section>
|
|
74
74
|
|
|
75
|
+
{/* Character Cards */}
|
|
76
|
+
<section style={{ marginBottom: '2rem' }}>
|
|
77
|
+
<h3 style={{ fontSize: '1.125rem', fontWeight: 700, marginBottom: '1rem', borderBottom: '1px solid var(--color-border)', paddingBottom: '0.5rem' }}>
|
|
78
|
+
Character Cards
|
|
79
|
+
</h3>
|
|
80
|
+
<p style={{ color: 'var(--color-muted-foreground)', marginBottom: '1rem' }}>
|
|
81
|
+
Compact cards used on the homepage grid. Centered layout with avatar, name, title, provider badge, and action.
|
|
82
|
+
</p>
|
|
83
|
+
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, minmax(0, 140px))', gap: '0.75rem' }}>
|
|
84
|
+
{[
|
|
85
|
+
{ name: 'Alice', title: 'The Adventurer', provider: 'Claude Sonnet' },
|
|
86
|
+
{ name: 'Bob', title: 'The Keeper of Many Long Titles', provider: 'GPT-4o' },
|
|
87
|
+
{ name: 'Carol', title: 'Scribe', provider: 'Gemini Pro' },
|
|
88
|
+
].map((char) => (
|
|
89
|
+
<div key={char.name} className="qt-character-card">
|
|
90
|
+
<div className="qt-avatar" style={{ width: '3rem', height: '3rem' }}>
|
|
91
|
+
<div className="qt-avatar-fallback">{char.name[0]}</div>
|
|
92
|
+
</div>
|
|
93
|
+
<div style={{ textAlign: 'center', width: '100%', minWidth: 0 }}>
|
|
94
|
+
<p className="qt-card-title" style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{char.name}</p>
|
|
95
|
+
<p className="qt-card-subtitle" style={{ fontStyle: 'italic', minHeight: '2.5rem' }}>{char.title}</p>
|
|
96
|
+
<span style={{ fontSize: '0.75rem', opacity: 0.6 }}>{char.provider}</span>
|
|
97
|
+
</div>
|
|
98
|
+
<button className="qt-button-success qt-button-sm" style={{ marginTop: 'auto', width: '100%' }}>Chat</button>
|
|
99
|
+
</div>
|
|
100
|
+
))}
|
|
101
|
+
</div>
|
|
102
|
+
</section>
|
|
103
|
+
|
|
75
104
|
{/* Card Grid */}
|
|
76
105
|
<section style={{ marginBottom: '2rem' }}>
|
|
77
106
|
<h3 style={{ fontSize: '1.125rem', fontWeight: 700, marginBottom: '1rem', borderBottom: '1px solid var(--color-border)', paddingBottom: '0.5rem' }}>
|
|
@@ -24,7 +24,7 @@ export const Inputs: React.FC = () => {
|
|
|
24
24
|
<div>
|
|
25
25
|
<label className="qt-label">With Hint</label>
|
|
26
26
|
<input className="qt-input" type="text" placeholder="Enter email..." />
|
|
27
|
-
<span className="qt-hint">We
|
|
27
|
+
<span className="qt-hint">We'll never share your email.</span>
|
|
28
28
|
</div>
|
|
29
29
|
<div>
|
|
30
30
|
<label className="qt-label">With Value</label>
|