@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 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
@@ -17,7 +17,7 @@ import {
17
17
  Tabs,
18
18
  ThemeComparison,
19
19
  Typography
20
- } from "./chunk-45RKCZL3.mjs";
20
+ } from "./chunk-VCF2M2TP.mjs";
21
21
  import "./chunk-WUKYLWAZ.mjs";
22
22
 
23
23
  // src/preview.tsx
@@ -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: [
@@ -17,7 +17,7 @@ import {
17
17
  Tabs,
18
18
  ThemeComparison,
19
19
  Typography
20
- } from "../chunk-45RKCZL3.mjs";
20
+ } from "../chunk-VCF2M2TP.mjs";
21
21
  import "../chunk-WUKYLWAZ.mjs";
22
22
  export {
23
23
  Avatars,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quilltap/theme-storybook",
3
- "version": "1.0.23",
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.2.17",
47
- "@types/react": "^18.2.0",
48
- "react": "^19.0.0",
49
- "storybook": "^10.2.17",
50
- "tsup": "^8.0.0",
51
- "typescript": "^5.3.0"
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'll never share your email.</span>
27
+ <span className="qt-hint">We&apos;ll never share your email.</span>
28
28
  </div>
29
29
  <div>
30
30
  <label className="qt-label">With Value</label>