@quilltap/theme-storybook 1.0.29 → 1.0.31

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.
@@ -769,7 +769,7 @@ var Badges = () => {
769
769
  /* @__PURE__ */ jsx7("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Entity Type Badges" }),
770
770
  /* @__PURE__ */ jsxs7("div", { style: { display: "flex", flexWrap: "wrap", gap: "0.75rem", alignItems: "center" }, children: [
771
771
  /* @__PURE__ */ jsx7("span", { className: "qt-badge qt-badge-character", children: "Character" }),
772
- /* @__PURE__ */ jsx7("span", { className: "qt-badge qt-badge-persona", children: "Persona" }),
772
+ /* @__PURE__ */ jsx7("span", { className: "qt-badge qt-badge-user-character", children: "User Character" }),
773
773
  /* @__PURE__ */ jsx7("span", { className: "qt-badge qt-badge-chat", children: "Chat" }),
774
774
  /* @__PURE__ */ jsx7("span", { className: "qt-badge qt-badge-tag", children: "Tag" }),
775
775
  /* @__PURE__ */ jsx7("span", { className: "qt-badge qt-badge-memory", children: "Memory" })
@@ -1289,6 +1289,33 @@ var Chat = () => {
1289
1289
  ] }) })
1290
1290
  ] })
1291
1291
  ] }),
1292
+ /* @__PURE__ */ jsxs11("section", { style: { marginBottom: "2rem" }, children: [
1293
+ /* @__PURE__ */ jsx11("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Wardrobe Action Notices" }),
1294
+ /* @__PURE__ */ jsx11("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Inline summaries of outfit changes (equip, unequip, gift). Distinguished from whispers (dashed purple) and silent messages (dotted teal) by a double border and warm amber/gold tones." }),
1295
+ /* @__PURE__ */ jsxs11("div", { style: { display: "flex", flexDirection: "column", gap: "1rem", maxWidth: "32rem" }, children: [
1296
+ /* @__PURE__ */ jsxs11("div", { className: "qt-chat-wardrobe-notice", children: [
1297
+ /* @__PURE__ */ jsx11("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1298
+ /* @__PURE__ */ jsxs11("div", { className: "qt-chat-wardrobe-summary", children: [
1299
+ /* @__PURE__ */ jsx11("div", { children: "Equipped \u201CCrimson Evening Gown\u201D in the top slot." }),
1300
+ /* @__PURE__ */ jsx11("div", { children: "Wearing: Crimson Evening Gown (top, bottom), Glass Slippers (footwear)" })
1301
+ ] })
1302
+ ] }),
1303
+ /* @__PURE__ */ jsxs11("div", { className: "qt-chat-wardrobe-notice", children: [
1304
+ /* @__PURE__ */ jsx11("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1305
+ /* @__PURE__ */ jsxs11("div", { className: "qt-chat-wardrobe-summary", children: [
1306
+ /* @__PURE__ */ jsx11("div", { children: "Removed item from the footwear slot." }),
1307
+ /* @__PURE__ */ jsx11("div", { children: "Wearing: Crimson Evening Gown (top, bottom), barefoot" })
1308
+ ] })
1309
+ ] }),
1310
+ /* @__PURE__ */ jsxs11("div", { className: "qt-chat-wardrobe-notice", children: [
1311
+ /* @__PURE__ */ jsx11("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1312
+ /* @__PURE__ */ jsxs11("div", { className: "qt-chat-wardrobe-summary", children: [
1313
+ /* @__PURE__ */ jsx11("div", { children: "Gifted \u201CSilver Pocket Watch\u201D to Marcus." }),
1314
+ /* @__PURE__ */ jsx11("div", { children: "Marcus put it on immediately." })
1315
+ ] })
1316
+ ] })
1317
+ ] })
1318
+ ] }),
1292
1319
  /* @__PURE__ */ jsxs11("section", { style: { marginBottom: "2rem" }, children: [
1293
1320
  /* @__PURE__ */ jsx11("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Chat Toolbar" }),
1294
1321
  /* @__PURE__ */ jsx11("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Formatting and action buttons for chat composition." }),
package/dist/index.css CHANGED
@@ -290,8 +290,8 @@ body {
290
290
  --qt-alert-info-border: hsl(199 89% 48% / 0.3);
291
291
  --qt-badge-character-bg: hsl(217 91% 60% / 0.15);
292
292
  --qt-badge-character-fg: hsl(217 91% 45%);
293
- --qt-badge-persona-bg: hsl(270 70% 60% / 0.15);
294
- --qt-badge-persona-fg: hsl(270 70% 45%);
293
+ --qt-badge-user-character-bg: hsl(270 70% 60% / 0.15);
294
+ --qt-badge-user-character-fg: hsl(270 70% 45%);
295
295
  --qt-badge-chat-bg: hsl(142 76% 36% / 0.15);
296
296
  --qt-badge-chat-fg: hsl(142 76% 30%);
297
297
  --qt-badge-tag-bg: hsl(25 95% 53% / 0.15);
@@ -408,10 +408,18 @@ body {
408
408
  --qt-chat-assistant-border: var(--color-border);
409
409
  --qt-chat-assistant-font: var(--font-sans);
410
410
  --qt-chat-assistant-font-weight: inherit;
411
+ --qt-chat-whisper-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #9b8ec4 40%);
412
+ --qt-chat-whisper-fg: var(--qt-chat-assistant-fg);
413
+ --qt-chat-whisper-border: #9b8ec4;
414
+ --qt-chat-whisper-label-fg: #7c6fa0;
411
415
  --qt-chat-silent-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 65%, #7a9e8e 35%);
412
416
  --qt-chat-silent-fg: var(--qt-chat-assistant-fg);
413
417
  --qt-chat-silent-border: #7a9e8e;
414
418
  --qt-chat-silent-label-fg: #5d7e6e;
419
+ --qt-chat-wardrobe-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #c4a24e 40%);
420
+ --qt-chat-wardrobe-fg: var(--qt-chat-assistant-fg);
421
+ --qt-chat-wardrobe-border: #c4a24e;
422
+ --qt-chat-wardrobe-label-fg: #9a7d2e;
415
423
  --qt-chat-composer-bg: var(--color-background);
416
424
  --qt-chat-composer-border: var(--color-border);
417
425
  --qt-chat-composer-radius: var(--radius-lg);
@@ -986,6 +994,21 @@ body {
986
994
  color: var(--qt-chat-assistant-fg);
987
995
  border: 1px solid var(--color-border);
988
996
  }
997
+ .qt-chat-message-whisper {
998
+ background: var(--qt-chat-whisper-bg);
999
+ color: var(--qt-chat-whisper-fg);
1000
+ border: 2px dashed var(--qt-chat-whisper-border);
1001
+ font-style: italic;
1002
+ }
1003
+ .qt-chat-whisper-label {
1004
+ font-size: 0.75rem;
1005
+ color: var(--qt-chat-whisper-label-fg);
1006
+ font-style: italic;
1007
+ margin-bottom: 0.25rem;
1008
+ }
1009
+ .qt-chat-message-whisper-overheard {
1010
+ opacity: 0.6;
1011
+ }
989
1012
  .qt-chat-message-silent {
990
1013
  background: var(--qt-chat-silent-bg);
991
1014
  color: var(--qt-chat-silent-fg);
@@ -998,6 +1021,27 @@ body {
998
1021
  font-style: italic;
999
1022
  margin-bottom: 0.25rem;
1000
1023
  }
1024
+ .qt-chat-wardrobe-notice {
1025
+ background: var(--qt-chat-wardrobe-bg);
1026
+ color: var(--qt-chat-wardrobe-fg);
1027
+ border: 3px double var(--qt-chat-wardrobe-border);
1028
+ border-radius: var(--radius-md, 0.375rem);
1029
+ padding: 0.5rem 0.75rem;
1030
+ margin-bottom: 0.5rem;
1031
+ font-size: 0.8125rem;
1032
+ line-height: 1.4;
1033
+ }
1034
+ .qt-chat-wardrobe-label {
1035
+ font-size: 0.6875rem;
1036
+ color: var(--qt-chat-wardrobe-label-fg);
1037
+ font-weight: 600;
1038
+ text-transform: uppercase;
1039
+ letter-spacing: 0.05em;
1040
+ margin-bottom: 0.25rem;
1041
+ }
1042
+ .qt-chat-wardrobe-summary {
1043
+ color: var(--qt-chat-wardrobe-fg);
1044
+ }
1001
1045
  .qt-badge-silent {
1002
1046
  background: var(--qt-chat-silent-bg);
1003
1047
  color: var(--qt-chat-silent-label-fg);
@@ -1619,9 +1663,15 @@ body {
1619
1663
  }
1620
1664
  }
1621
1665
  .dark {
1666
+ --qt-chat-whisper-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #6b5b95 40%);
1667
+ --qt-chat-whisper-border: #6b5b95;
1668
+ --qt-chat-whisper-label-fg: #a89cc8;
1622
1669
  --qt-chat-silent-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 65%, #4a7a6a 35%);
1623
1670
  --qt-chat-silent-border: #4a7a6a;
1624
1671
  --qt-chat-silent-label-fg: #8ab8a4;
1672
+ --qt-chat-wardrobe-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #8a6d1b 40%);
1673
+ --qt-chat-wardrobe-border: #8a6d1b;
1674
+ --qt-chat-wardrobe-label-fg: #d4b65c;
1625
1675
  --qt-alert-success-bg: hsl(142 76% 36% / 0.2);
1626
1676
  --qt-alert-success-fg: hsl(142 76% 65%);
1627
1677
  --qt-alert-success-border: hsl(142 76% 36% / 0.5);
@@ -1636,8 +1686,8 @@ body {
1636
1686
  --qt-alert-info-border: hsl(199 89% 48% / 0.5);
1637
1687
  --qt-badge-character-bg: hsl(217 91% 60% / 0.3);
1638
1688
  --qt-badge-character-fg: hsl(217 91% 70%);
1639
- --qt-badge-persona-bg: hsl(270 70% 60% / 0.3);
1640
- --qt-badge-persona-fg: hsl(270 70% 70%);
1689
+ --qt-badge-user-character-bg: hsl(270 70% 60% / 0.3);
1690
+ --qt-badge-user-character-fg: hsl(270 70% 70%);
1641
1691
  --qt-badge-chat-bg: hsl(142 76% 36% / 0.3);
1642
1692
  --qt-badge-chat-fg: hsl(142 76% 65%);
1643
1693
  --qt-badge-tag-bg: hsl(25 95% 53% / 0.3);
package/dist/index.js CHANGED
@@ -875,7 +875,7 @@ var Badges = () => {
875
875
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Entity Type Badges" }),
876
876
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { display: "flex", flexWrap: "wrap", gap: "0.75rem", alignItems: "center" }, children: [
877
877
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "qt-badge qt-badge-character", children: "Character" }),
878
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "qt-badge qt-badge-persona", children: "Persona" }),
878
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "qt-badge qt-badge-user-character", children: "User Character" }),
879
879
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "qt-badge qt-badge-chat", children: "Chat" }),
880
880
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "qt-badge qt-badge-tag", children: "Tag" }),
881
881
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "qt-badge qt-badge-memory", children: "Memory" })
@@ -1395,6 +1395,33 @@ var Chat = () => {
1395
1395
  ] }) })
1396
1396
  ] })
1397
1397
  ] }),
1398
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
1399
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Wardrobe Action Notices" }),
1400
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Inline summaries of outfit changes (equip, unequip, gift). Distinguished from whispers (dashed purple) and silent messages (dotted teal) by a double border and warm amber/gold tones." }),
1401
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "1rem", maxWidth: "32rem" }, children: [
1402
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "qt-chat-wardrobe-notice", children: [
1403
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1404
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "qt-chat-wardrobe-summary", children: [
1405
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: "Equipped \u201CCrimson Evening Gown\u201D in the top slot." }),
1406
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: "Wearing: Crimson Evening Gown (top, bottom), Glass Slippers (footwear)" })
1407
+ ] })
1408
+ ] }),
1409
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "qt-chat-wardrobe-notice", children: [
1410
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1411
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "qt-chat-wardrobe-summary", children: [
1412
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: "Removed item from the footwear slot." }),
1413
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: "Wearing: Crimson Evening Gown (top, bottom), barefoot" })
1414
+ ] })
1415
+ ] }),
1416
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "qt-chat-wardrobe-notice", children: [
1417
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1418
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "qt-chat-wardrobe-summary", children: [
1419
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: "Gifted \u201CSilver Pocket Watch\u201D to Marcus." }),
1420
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { children: "Marcus put it on immediately." })
1421
+ ] })
1422
+ ] })
1423
+ ] })
1424
+ ] }),
1398
1425
  /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
1399
1426
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Chat Toolbar" }),
1400
1427
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Formatting and action buttons for chat composition." }),
package/dist/index.mjs CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  Tabs,
18
18
  ThemeComparison,
19
19
  Typography
20
- } from "./chunk-TZN7AU3N.mjs";
20
+ } from "./chunk-C4SJNVAC.mjs";
21
21
  import "./chunk-WUKYLWAZ.mjs";
22
22
 
23
23
  // src/preview.tsx
@@ -812,7 +812,7 @@ var Badges = () => {
812
812
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Entity Type Badges" }),
813
813
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { display: "flex", flexWrap: "wrap", gap: "0.75rem", alignItems: "center" }, children: [
814
814
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "qt-badge qt-badge-character", children: "Character" }),
815
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "qt-badge qt-badge-persona", children: "Persona" }),
815
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "qt-badge qt-badge-user-character", children: "User Character" }),
816
816
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "qt-badge qt-badge-chat", children: "Chat" }),
817
817
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "qt-badge qt-badge-tag", children: "Tag" }),
818
818
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "qt-badge qt-badge-memory", children: "Memory" })
@@ -1332,6 +1332,33 @@ var Chat = () => {
1332
1332
  ] }) })
1333
1333
  ] })
1334
1334
  ] }),
1335
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
1336
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Wardrobe Action Notices" }),
1337
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Inline summaries of outfit changes (equip, unequip, gift). Distinguished from whispers (dashed purple) and silent messages (dotted teal) by a double border and warm amber/gold tones." }),
1338
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "1rem", maxWidth: "32rem" }, children: [
1339
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "qt-chat-wardrobe-notice", children: [
1340
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1341
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "qt-chat-wardrobe-summary", children: [
1342
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Equipped \u201CCrimson Evening Gown\u201D in the top slot." }),
1343
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Wearing: Crimson Evening Gown (top, bottom), Glass Slippers (footwear)" })
1344
+ ] })
1345
+ ] }),
1346
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "qt-chat-wardrobe-notice", children: [
1347
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1348
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "qt-chat-wardrobe-summary", children: [
1349
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Removed item from the footwear slot." }),
1350
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Wearing: Crimson Evening Gown (top, bottom), barefoot" })
1351
+ ] })
1352
+ ] }),
1353
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "qt-chat-wardrobe-notice", children: [
1354
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "qt-chat-wardrobe-label", children: "Wardrobe" }),
1355
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "qt-chat-wardrobe-summary", children: [
1356
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Gifted \u201CSilver Pocket Watch\u201D to Marcus." }),
1357
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: "Marcus put it on immediately." })
1358
+ ] })
1359
+ ] })
1360
+ ] })
1361
+ ] }),
1335
1362
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("section", { style: { marginBottom: "2rem" }, children: [
1336
1363
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { style: { fontSize: "1.125rem", fontWeight: 700, marginBottom: "1rem", borderBottom: "1px solid var(--color-border)", paddingBottom: "0.5rem" }, children: "Chat Toolbar" }),
1337
1364
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { style: { color: "var(--color-muted-foreground)", marginBottom: "1rem" }, children: "Formatting and action buttons for chat composition." }),
@@ -17,7 +17,7 @@ import {
17
17
  Tabs,
18
18
  ThemeComparison,
19
19
  Typography
20
- } from "../chunk-TZN7AU3N.mjs";
20
+ } from "../chunk-C4SJNVAC.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.29",
3
+ "version": "1.0.31",
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",
@@ -65,12 +65,12 @@
65
65
  "license": "MIT",
66
66
  "repository": {
67
67
  "type": "git",
68
- "url": "https://github.com/foundry-9/quilltap.git",
68
+ "url": "https://github.com/foundry-9/quilltap-server.git",
69
69
  "directory": "packages/theme-storybook"
70
70
  },
71
- "homepage": "https://github.com/foundry-9/quilltap/tree/main/packages/theme-storybook#readme",
71
+ "homepage": "https://github.com/foundry-9/quilltap-server/tree/main/packages/theme-storybook#readme",
72
72
  "bugs": {
73
- "url": "https://github.com/foundry-9/quilltap/issues"
73
+ "url": "https://github.com/foundry-9/quilltap-server/issues"
74
74
  },
75
75
  "engines": {
76
76
  "node": ">=18.0.0"
@@ -165,8 +165,8 @@
165
165
  /* Entity-type badge colors */
166
166
  --qt-badge-character-bg: hsl(217 91% 60% / 0.15);
167
167
  --qt-badge-character-fg: hsl(217 91% 45%);
168
- --qt-badge-persona-bg: hsl(270 70% 60% / 0.15);
169
- --qt-badge-persona-fg: hsl(270 70% 45%);
168
+ --qt-badge-user-character-bg: hsl(270 70% 60% / 0.15);
169
+ --qt-badge-user-character-fg: hsl(270 70% 45%);
170
170
  --qt-badge-chat-bg: hsl(142 76% 36% / 0.15);
171
171
  --qt-badge-chat-fg: hsl(142 76% 30%);
172
172
  --qt-badge-tag-bg: hsl(25 95% 53% / 0.15);
@@ -304,12 +304,24 @@
304
304
  --qt-chat-assistant-font: var(--font-sans);
305
305
  --qt-chat-assistant-font-weight: inherit;
306
306
 
307
+ /* Chat: Whisper messages */
308
+ --qt-chat-whisper-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #9b8ec4 40%);
309
+ --qt-chat-whisper-fg: var(--qt-chat-assistant-fg);
310
+ --qt-chat-whisper-border: #9b8ec4;
311
+ --qt-chat-whisper-label-fg: #7c6fa0;
312
+
307
313
  /* Chat: Silent messages — inner thoughts/actions from characters in silent mode */
308
314
  --qt-chat-silent-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 65%, #7a9e8e 35%);
309
315
  --qt-chat-silent-fg: var(--qt-chat-assistant-fg);
310
316
  --qt-chat-silent-border: #7a9e8e;
311
317
  --qt-chat-silent-label-fg: #5d7e6e;
312
318
 
319
+ /* Chat: Wardrobe action notices — warm amber/gold for dressing room actions */
320
+ --qt-chat-wardrobe-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #c4a24e 40%);
321
+ --qt-chat-wardrobe-fg: var(--qt-chat-assistant-fg);
322
+ --qt-chat-wardrobe-border: #c4a24e;
323
+ --qt-chat-wardrobe-label-fg: #9a7d2e;
324
+
313
325
  /* Chat composer variables */
314
326
  --qt-chat-composer-bg: var(--color-background);
315
327
  --qt-chat-composer-border: var(--color-border);
@@ -1025,6 +1037,27 @@
1025
1037
  border: 1px solid var(--color-border);
1026
1038
  }
1027
1039
 
1040
+ /**
1041
+ * Whisper message — private messages between characters, not heard by all.
1042
+ */
1043
+ .qt-chat-message-whisper {
1044
+ background: var(--qt-chat-whisper-bg);
1045
+ color: var(--qt-chat-whisper-fg);
1046
+ border: 2px dashed var(--qt-chat-whisper-border);
1047
+ font-style: italic;
1048
+ }
1049
+
1050
+ .qt-chat-whisper-label {
1051
+ font-size: 0.75rem;
1052
+ color: var(--qt-chat-whisper-label-fg);
1053
+ font-style: italic;
1054
+ margin-bottom: 0.25rem;
1055
+ }
1056
+
1057
+ .qt-chat-message-whisper-overheard {
1058
+ opacity: 0.6;
1059
+ }
1060
+
1028
1061
  /**
1029
1062
  * Silent message — inner thoughts and actions from character in silent mode.
1030
1063
  * Distinguished from whispers by a dotted border (vs dashed) and sage/teal tones.
@@ -1043,6 +1076,34 @@
1043
1076
  margin-bottom: 0.25rem;
1044
1077
  }
1045
1078
 
1079
+ /**
1080
+ * Wardrobe action notice — inline summary of outfit changes.
1081
+ * Double border with warm amber/gold tones, distinct from whisper (dashed) and silent (dotted).
1082
+ */
1083
+ .qt-chat-wardrobe-notice {
1084
+ background: var(--qt-chat-wardrobe-bg);
1085
+ color: var(--qt-chat-wardrobe-fg);
1086
+ border: 3px double var(--qt-chat-wardrobe-border);
1087
+ border-radius: var(--radius-md, 0.375rem);
1088
+ padding: 0.5rem 0.75rem;
1089
+ margin-bottom: 0.5rem;
1090
+ font-size: 0.8125rem;
1091
+ line-height: 1.4;
1092
+ }
1093
+
1094
+ .qt-chat-wardrobe-label {
1095
+ font-size: 0.6875rem;
1096
+ color: var(--qt-chat-wardrobe-label-fg);
1097
+ font-weight: 600;
1098
+ text-transform: uppercase;
1099
+ letter-spacing: 0.05em;
1100
+ margin-bottom: 0.25rem;
1101
+ }
1102
+
1103
+ .qt-chat-wardrobe-summary {
1104
+ color: var(--qt-chat-wardrobe-fg);
1105
+ }
1106
+
1046
1107
  /**
1047
1108
  * Status badges for silent/absent participants
1048
1109
  */
@@ -1857,11 +1918,21 @@
1857
1918
  Adjusted colors for dark backgrounds with better contrast
1858
1919
  ========================================================================== */
1859
1920
  .dark {
1921
+ /* Chat: Whisper messages — dark mode */
1922
+ --qt-chat-whisper-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #6b5b95 40%);
1923
+ --qt-chat-whisper-border: #6b5b95;
1924
+ --qt-chat-whisper-label-fg: #a89cc8;
1925
+
1860
1926
  /* Chat: Silent messages — darker mode variants */
1861
1927
  --qt-chat-silent-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 65%, #4a7a6a 35%);
1862
1928
  --qt-chat-silent-border: #4a7a6a;
1863
1929
  --qt-chat-silent-label-fg: #8ab8a4;
1864
1930
 
1931
+ /* Chat: Wardrobe action notices — dark mode */
1932
+ --qt-chat-wardrobe-bg: color-mix(in srgb, var(--qt-chat-assistant-bg) 60%, #8a6d1b 40%);
1933
+ --qt-chat-wardrobe-border: #8a6d1b;
1934
+ --qt-chat-wardrobe-label-fg: #d4b65c;
1935
+
1865
1936
  /* Alert tokens - brighter, more saturated for dark backgrounds */
1866
1937
  --qt-alert-success-bg: hsl(142 76% 36% / 0.2);
1867
1938
  --qt-alert-success-fg: hsl(142 76% 65%);
@@ -1882,8 +1953,8 @@
1882
1953
  /* Entity badge tokens - brighter for dark backgrounds */
1883
1954
  --qt-badge-character-bg: hsl(217 91% 60% / 0.3);
1884
1955
  --qt-badge-character-fg: hsl(217 91% 70%);
1885
- --qt-badge-persona-bg: hsl(270 70% 60% / 0.3);
1886
- --qt-badge-persona-fg: hsl(270 70% 70%);
1956
+ --qt-badge-user-character-bg: hsl(270 70% 60% / 0.3);
1957
+ --qt-badge-user-character-fg: hsl(270 70% 70%);
1887
1958
  --qt-badge-chat-bg: hsl(142 76% 36% / 0.3);
1888
1959
  --qt-badge-chat-fg: hsl(142 76% 65%);
1889
1960
  --qt-badge-tag-bg: hsl(25 95% 53% / 0.3);
@@ -90,7 +90,7 @@ export const Badges: React.FC = () => {
90
90
  </h3>
91
91
  <div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.75rem', alignItems: 'center' }}>
92
92
  <span className="qt-badge qt-badge-character">Character</span>
93
- <span className="qt-badge qt-badge-persona">Persona</span>
93
+ <span className="qt-badge qt-badge-user-character">User Character</span>
94
94
  <span className="qt-badge qt-badge-chat">Chat</span>
95
95
  <span className="qt-badge qt-badge-tag">Tag</span>
96
96
  <span className="qt-badge qt-badge-memory">Memory</span>
@@ -248,6 +248,45 @@ export const Chat: React.FC = () => {
248
248
  </div>
249
249
  </section>
250
250
 
251
+ {/* Wardrobe Action Notices */}
252
+ <section style={{ marginBottom: '2rem' }}>
253
+ <h3 style={{ fontSize: '1.125rem', fontWeight: 700, marginBottom: '1rem', borderBottom: '1px solid var(--color-border)', paddingBottom: '0.5rem' }}>
254
+ Wardrobe Action Notices
255
+ </h3>
256
+ <p style={{ color: 'var(--color-muted-foreground)', marginBottom: '1rem' }}>
257
+ Inline summaries of outfit changes (equip, unequip, gift). Distinguished from whispers (dashed purple)
258
+ and silent messages (dotted teal) by a double border and warm amber/gold tones.
259
+ </p>
260
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', maxWidth: '32rem' }}>
261
+ {/* Equip action */}
262
+ <div className="qt-chat-wardrobe-notice">
263
+ <div className="qt-chat-wardrobe-label">Wardrobe</div>
264
+ <div className="qt-chat-wardrobe-summary">
265
+ <div>Equipped &ldquo;Crimson Evening Gown&rdquo; in the top slot.</div>
266
+ <div>Wearing: Crimson Evening Gown (top, bottom), Glass Slippers (footwear)</div>
267
+ </div>
268
+ </div>
269
+
270
+ {/* Remove action */}
271
+ <div className="qt-chat-wardrobe-notice">
272
+ <div className="qt-chat-wardrobe-label">Wardrobe</div>
273
+ <div className="qt-chat-wardrobe-summary">
274
+ <div>Removed item from the footwear slot.</div>
275
+ <div>Wearing: Crimson Evening Gown (top, bottom), barefoot</div>
276
+ </div>
277
+ </div>
278
+
279
+ {/* Gift action */}
280
+ <div className="qt-chat-wardrobe-notice">
281
+ <div className="qt-chat-wardrobe-label">Wardrobe</div>
282
+ <div className="qt-chat-wardrobe-summary">
283
+ <div>Gifted &ldquo;Silver Pocket Watch&rdquo; to Marcus.</div>
284
+ <div>Marcus put it on immediately.</div>
285
+ </div>
286
+ </div>
287
+ </div>
288
+ </section>
289
+
251
290
  {/* Chat Toolbar */}
252
291
  <section style={{ marginBottom: '2rem' }}>
253
292
  <h3 style={{ fontSize: '1.125rem', fontWeight: 700, marginBottom: '1rem', borderBottom: '1px solid var(--color-border)', paddingBottom: '0.5rem' }}>