@prismshadow/penguin-server 0.2.16 → 0.2.18

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.
Files changed (113) hide show
  1. package/README.md +1 -1
  2. package/dist/api/types.d.ts +402 -52
  3. package/dist/api/types.js +17 -3
  4. package/dist/auth-token.js +1 -1
  5. package/dist/{chunk-HMTT2PX4.js → chunk-2LZDP26O.js} +8 -5
  6. package/dist/chunk-2LZDP26O.js.map +1 -0
  7. package/dist/chunk-5YLLSHY3.js +1195 -0
  8. package/dist/chunk-5YLLSHY3.js.map +1 -0
  9. package/dist/{chunk-D3JNA6ZI.js → chunk-B3PSKR3D.js} +2 -2
  10. package/dist/chunk-B3PSKR3D.js.map +1 -0
  11. package/dist/{chunk-LPPVGHYD.js → chunk-BL4U7GYY.js} +2 -2
  12. package/dist/chunk-BL4U7GYY.js.map +1 -0
  13. package/dist/chunk-BRMNPLU6.js +37 -0
  14. package/dist/chunk-BRMNPLU6.js.map +1 -0
  15. package/dist/chunk-GGIINEEK.js +3401 -0
  16. package/dist/chunk-GGIINEEK.js.map +1 -0
  17. package/dist/{chunk-QFV3ERQO.js → chunk-OQZDL3TR.js} +2 -2
  18. package/dist/hmr/manifest.js +1 -1
  19. package/dist/index.js +13440 -8991
  20. package/dist/index.js.map +1 -1
  21. package/dist/machine-status.js +2 -2
  22. package/dist/model-catalog.d.ts +610 -0
  23. package/dist/model-catalog.js +108 -0
  24. package/dist/model-catalog.js.map +1 -0
  25. package/dist/plugin/index.d.ts +170 -74
  26. package/dist/reset-admin-password.js +2 -2
  27. package/dist/version-report.js +2 -2
  28. package/package.json +14 -9
  29. package/web-dist/assets/{abnfDiagram-VCTEODGH-0AKFiyig.js → abnfDiagram-VCTEODGH-C_Ej4MyZ.js} +1 -1
  30. package/web-dist/assets/{addon-clipboard-BovFnNVg.js → addon-clipboard-eONBCa8x.js} +1 -1
  31. package/web-dist/assets/{addon-fit-B1npgxQk.js → addon-fit-Dk6bkT8u.js} +1 -1
  32. package/web-dist/assets/{addon-web-links-D88QHj7A.js → addon-web-links-e0JpGvGv.js} +1 -1
  33. package/web-dist/assets/{arc-Beox1Cgf.js → arc-ytwqobEL.js} +1 -1
  34. package/web-dist/assets/{architectureDiagram-5GKGNRK7-CC1sLMY1.js → architectureDiagram-5GKGNRK7-oxT9SNOE.js} +1 -1
  35. package/web-dist/assets/{blockDiagram-I7D4REHJ-B8BY1PkZ.js → blockDiagram-I7D4REHJ-D8OXfpb9.js} +1 -1
  36. package/web-dist/assets/{c4Diagram-7LVT6UL2-yjY0BkxQ.js → c4Diagram-7LVT6UL2-BNYNzSWK.js} +1 -1
  37. package/web-dist/assets/channel-7Be_pU-b.js +1 -0
  38. package/web-dist/assets/{chunk-2Q5K7J3B-DdgIvETg.js → chunk-2Q5K7J3B-C2yNhFmh.js} +1 -1
  39. package/web-dist/assets/{chunk-5VM5RSS4-BE38k1Rs.js → chunk-5VM5RSS4-CAeuhwbB.js} +1 -1
  40. package/web-dist/assets/{chunk-F27PBJKO-D4YXmaqQ.js → chunk-F27PBJKO-DSuRiLxP.js} +1 -1
  41. package/web-dist/assets/{chunk-IMKFNOWR-CyJFdThc.js → chunk-IMKFNOWR-MStar4cf.js} +1 -1
  42. package/web-dist/assets/{chunk-JWPE2WC7-BAM_oEUU.js → chunk-JWPE2WC7-CIgQwRv4.js} +1 -1
  43. package/web-dist/assets/{chunk-POPQ4Y6H-BP3D0FVi.js → chunk-POPQ4Y6H-CA8evx9g.js} +1 -1
  44. package/web-dist/assets/{chunk-SVP7TREG-Clk8PdKZ.js → chunk-SVP7TREG-bR7-FT1W.js} +1 -1
  45. package/web-dist/assets/{chunk-TICWLB2K-EvWPnEGg.js → chunk-TICWLB2K-C0ZdCnvI.js} +1 -1
  46. package/web-dist/assets/{chunk-XXDRQBXY-6p5D0UB1.js → chunk-XXDRQBXY-CzozFLFI.js} +1 -1
  47. package/web-dist/assets/classDiagram-ZZMXUADV-BjVhvDIH.js +1 -0
  48. package/web-dist/assets/classDiagram-v2-VYDZK3BY-BjVhvDIH.js +1 -0
  49. package/web-dist/assets/{cose-bilkent-JH36ORCC-bpkI-tLJ.js → cose-bilkent-JH36ORCC-nkjrY6eI.js} +1 -1
  50. package/web-dist/assets/{cynefin-OW5HDTMX-srLaqJ4e.js → cynefin-OW5HDTMX-D2A0h062.js} +1 -1
  51. package/web-dist/assets/{cynefinDiagram-5FMLGOSQ-BPfpHSPc.js → cynefinDiagram-5FMLGOSQ-DFZQ7d_T.js} +1 -1
  52. package/web-dist/assets/{dagre-GXQ25YYZ-C4fF5-j7.js → dagre-GXQ25YYZ-DPYLLARd.js} +1 -1
  53. package/web-dist/assets/{diagram-S7CK7UJ4-BzBLb_9-.js → diagram-S7CK7UJ4-B204Nrur.js} +1 -1
  54. package/web-dist/assets/{diagram-UQ7AKVKN-BJuJ1o_T.js → diagram-UQ7AKVKN-DWORCZlS.js} +1 -1
  55. package/web-dist/assets/{diagram-VSXAHHWV-DFelN9i9.js → diagram-VSXAHHWV-Su6Bzm4Z.js} +1 -1
  56. package/web-dist/assets/{diagram-VX7I27RA-BgrEoPyp.js → diagram-VX7I27RA-B4p8ssYj.js} +1 -1
  57. package/web-dist/assets/{diagram-Z3DM3KII-C71KiMiX.js → diagram-Z3DM3KII-BgMz7jjW.js} +1 -1
  58. package/web-dist/assets/{ebnfDiagram-PWID7BFC-EYteyp1b.js → ebnfDiagram-PWID7BFC-DBCS3Cwc.js} +1 -1
  59. package/web-dist/assets/{erDiagram-RLTQ6QDP-B6n6-sz6.js → erDiagram-RLTQ6QDP-DEm39S5C.js} +1 -1
  60. package/web-dist/assets/{flowDiagram-HODETNUW-BtoMTdyT.js → flowDiagram-HODETNUW-CEUQGUza.js} +1 -1
  61. package/web-dist/assets/{ganttDiagram-EL5Y4UJY-CbOAa3vS.js → ganttDiagram-EL5Y4UJY-myYTgwFp.js} +1 -1
  62. package/web-dist/assets/{gitGraphDiagram-WWUBYQGX-B7-8sszH.js → gitGraphDiagram-WWUBYQGX-BAQ0Kl1C.js} +1 -1
  63. package/web-dist/assets/highlighter-DRTMVWxI.js +2 -0
  64. package/web-dist/assets/{highlighter-core-CMXoD8ze.js → highlighter-core-DgISzHrX.js} +1 -1
  65. package/web-dist/assets/{highlighter.worker-D6D9fPma.js → highlighter.worker-CKF6ok1g.js} +1 -1
  66. package/web-dist/assets/index-PA-IFoA6.js +1300 -0
  67. package/web-dist/assets/index-oCEyg9BT.css +1 -0
  68. package/web-dist/assets/{infoDiagram-27XIBGKW-BBjf6pkP.js → infoDiagram-27XIBGKW-B2WDMvX9.js} +1 -1
  69. package/web-dist/assets/{ishikawaDiagram-5VMMS53U-BBSvCv45.js → ishikawaDiagram-5VMMS53U-8qHTttjq.js} +1 -1
  70. package/web-dist/assets/{journeyDiagram-3NMN7TZE-CuHHl5zk.js → journeyDiagram-3NMN7TZE-DKE_xRCO.js} +1 -1
  71. package/web-dist/assets/{kanban-definition-UXKFOSKX-DJyP4Myw.js → kanban-definition-UXKFOSKX-EnJbHEmV.js} +1 -1
  72. package/web-dist/assets/{layout-Bqqhdwtt.js → layout-BlhCFmEZ.js} +1 -1
  73. package/web-dist/assets/{linear-BZfUSIf8.js → linear-Dw2VzU-D.js} +1 -1
  74. package/web-dist/assets/mermaid.core-CaXNMz57.js +310 -0
  75. package/web-dist/assets/{mindmap-definition-YA3MSWOX-BtyMD4wz.js → mindmap-definition-YA3MSWOX-DnTTfqbu.js} +1 -1
  76. package/web-dist/assets/{pegDiagram-XKGWAZYB-BUF_GJ0B.js → pegDiagram-XKGWAZYB-C3SArVd6.js} +1 -1
  77. package/web-dist/assets/{pieDiagram-E7YTZNPT-nweubbsU.js → pieDiagram-E7YTZNPT-CTOmO6ke.js} +1 -1
  78. package/web-dist/assets/powershell-DXrKVo3G.js +1 -0
  79. package/web-dist/assets/powershell-Dpen1YoG.js +1 -0
  80. package/web-dist/assets/{quadrantDiagram-AXDQQJYC-B_r4Wkxy.js → quadrantDiagram-AXDQQJYC-CbUsMwzO.js} +1 -1
  81. package/web-dist/assets/{railroadDiagram-O6MQD6OU-Dn7nm0MX.js → railroadDiagram-O6MQD6OU-Co2hsvaZ.js} +1 -1
  82. package/web-dist/assets/{requirementDiagram-BXWQKSXE-DaagYJ49.js → requirementDiagram-BXWQKSXE-BqFG0eYQ.js} +1 -1
  83. package/web-dist/assets/{sankeyDiagram-P5KCCOFB-CqEX6H-B.js → sankeyDiagram-P5KCCOFB-YgQHJlB7.js} +1 -1
  84. package/web-dist/assets/{sequenceDiagram-WJ2MYXX4-BzLfQO55.js → sequenceDiagram-WJ2MYXX4-CdDrP6O2.js} +1 -1
  85. package/web-dist/assets/{sizeCapture-INFHLROL-BcUuVH2L.js → sizeCapture-INFHLROL-CKwbEVhU.js} +1 -1
  86. package/web-dist/assets/{stateDiagram-D77RDMKH-BO3LWLvT.js → stateDiagram-D77RDMKH-kTJR3t2p.js} +1 -1
  87. package/web-dist/assets/stateDiagram-v2-MP3YSRHH-DzaSnZwj.js +1 -0
  88. package/web-dist/assets/{swimlanes-42K2YHIH-etP_hkIB.js → swimlanes-42K2YHIH-DCAO3rCQ.js} +1 -1
  89. package/web-dist/assets/swimlanesDiagram-VR7AAH4N-DNfCLejq.js +8 -0
  90. package/web-dist/assets/{timeline-definition-24CTP7MA-CTLt2XCT.js → timeline-definition-24CTP7MA-DEjnyzKw.js} +1 -1
  91. package/web-dist/assets/{vennDiagram-4TSXK5OY-DPO6ZSvH.js → vennDiagram-4TSXK5OY-DSihUvCq.js} +1 -1
  92. package/web-dist/assets/{wardleyDiagram-VM6X3IG4-DFofGg8b.js → wardleyDiagram-VM6X3IG4-CnAoMeCH.js} +1 -1
  93. package/web-dist/assets/{xterm-RdyTuaAH.js → xterm-3JwPT74G.js} +1 -1
  94. package/web-dist/assets/{xychartDiagram-S5SC5T6Z-Bgtb34Gu.js → xychartDiagram-S5SC5T6Z-43dHqZTr.js} +1 -1
  95. package/web-dist/index.html +6 -5
  96. package/web-dist/workbench-ui.css +164 -34
  97. package/dist/chunk-3SFJKLQU.js +0 -1016
  98. package/dist/chunk-3SFJKLQU.js.map +0 -1
  99. package/dist/chunk-D3JNA6ZI.js.map +0 -1
  100. package/dist/chunk-HMTT2PX4.js.map +0 -1
  101. package/dist/chunk-LPPVGHYD.js.map +0 -1
  102. package/dist/chunk-W7JNIJ25.js +0 -19
  103. package/dist/chunk-W7JNIJ25.js.map +0 -1
  104. package/web-dist/assets/channel-mfsAVJLE.js +0 -1
  105. package/web-dist/assets/classDiagram-ZZMXUADV-BPVO1m8i.js +0 -1
  106. package/web-dist/assets/classDiagram-v2-VYDZK3BY-BPVO1m8i.js +0 -1
  107. package/web-dist/assets/highlighter-Bj5l2XH_.js +0 -2
  108. package/web-dist/assets/index-BOCqRT4e.css +0 -1
  109. package/web-dist/assets/index-BrMpjp2s.js +0 -1286
  110. package/web-dist/assets/mermaid.core-BlUspEsI.js +0 -310
  111. package/web-dist/assets/stateDiagram-v2-MP3YSRHH-B-EuucjM.js +0 -1
  112. package/web-dist/assets/swimlanesDiagram-VR7AAH4N-0JbFdDbQ.js +0 -8
  113. /package/dist/{chunk-QFV3ERQO.js.map → chunk-OQZDL3TR.js.map} +0 -0
@@ -2,31 +2,44 @@
2
2
  * Base stylesheet for a workbench's own page (features/workbenches/workbench-tabs.tsx injects it
3
3
  * into the frame, and a page may link it itself for standalone viewing).
4
4
  *
5
- * A workbench page is a separate document: Tailwind never sees it, and the app's `html.dark`
6
- * class and accent variables stop at the frame boundary. So the app copies its RESOLVED
7
- * tokens — the gray scale, the accent pair, the font stack, the root font size — onto this
8
- * document's root (lib/workbench-theme.ts), and everything here is expressed in those
9
- * variables. The literal fallbacks are only for a page opened outside the app; the palette
10
- * has exactly one source of truth, styles.css.
5
+ * A workbench page is a separate document: Tailwind never sees it, and the app's theme stops at
6
+ * the frame boundary. So the app copies what it has RESOLVED onto this document's root
7
+ * (lib/workbench-theme.ts): the `light` / `dark` class, `data-theme`, `data-accent`,
8
+ * `data-font-latin` / `data-font-cjk`, the root font size, every `--ui-*` token of the shared UI
9
+ * package's contract (packages/ui/src/tokens.ts), and the bundled fonts' `@font-face` rules.
11
10
  *
12
- * This is a floor, not a framework: it styles the plain HTML an agent writes (headings,
13
- * lists, forms, tables, code) and gets out of the way. It is injected FIRST in the head, so
14
- * a page's own rules always win.
11
+ * Two vocabularies follow from that:
12
+ * - `--wb-*` and the `wb-*` classes are the workbench's own, stable names. Each `--wb-*` is mapped
13
+ * below onto a `--ui-*` token, so it follows the app's theme, mode, accent and font pairing; a
14
+ * page restyles one by redeclaring it on `:root`. Names are only ever added here, never renamed
15
+ * or removed: published workbenches read them.
16
+ * - `--ui-*` is the token contract itself, what the app's own components read. A page may read it
17
+ * for anything `--wb-*` does not name, and then follows the contract as it changes. It sits on
18
+ * the root's inline style, so a page reads it but does not redeclare it.
19
+ *
20
+ * The literal fallbacks are only for a page opened outside the app, where no token is stamped:
21
+ * they are Primer's values, `light-dark()` picking the one for the mode the root's class (or, with
22
+ * no class, the viewer's system preference) sets.
23
+ *
24
+ * This is a floor, not a framework: it styles the plain HTML an agent writes (headings, lists,
25
+ * forms, tables, code) and gets out of the way. It is injected FIRST in the head, so a page's own
26
+ * rules always win.
15
27
  */
16
28
 
17
29
  :root {
18
30
  color-scheme: light;
19
- --wb-bg: #ffffff;
20
- --wb-surface: var(--color-gray-50, #f9fafb);
21
- --wb-fg: var(--color-gray-900, #111827);
22
- --wb-muted: var(--color-gray-500, #6b7280);
23
- --wb-border: var(--color-gray-200, #e5e7eb);
24
- --wb-hover: var(--color-gray-100, #f3f4f6);
25
- --wb-accent: var(--ui-accent, #111827);
26
- --wb-accent-fg: var(--ui-accent-fg, #ffffff);
27
- --wb-radius: 6px;
31
+
32
+ --wb-bg: var(--ui-canvas, light-dark(#ffffff, #121212));
33
+ --wb-surface: var(--ui-surface-muted, light-dark(#f9fafb, #1a1a1a));
34
+ --wb-fg: var(--ui-fg, light-dark(#111827, #f5f5f5));
35
+ --wb-muted: var(--ui-fg-muted, light-dark(#6b7280, #a1a1a1));
36
+ --wb-border: var(--ui-line, light-dark(#e5e7eb, #333333));
37
+ --wb-hover: var(--ui-fill-neutral, light-dark(#f3f4f6, #262626));
38
+ --wb-accent: var(--ui-accent, light-dark(#111827, #f3f4f6));
39
+ --wb-accent-fg: var(--ui-accent-fg, light-dark(#ffffff, #111827));
40
+ --wb-radius: var(--ui-radius-md, 6px);
28
41
  --wb-font: var(
29
- --font-app-sans,
42
+ --ui-font-ui,
30
43
  ui-sans-serif,
31
44
  system-ui,
32
45
  -apple-system,
@@ -36,7 +49,84 @@
36
49
  "Microsoft YaHei",
37
50
  sans-serif
38
51
  );
39
- --wb-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
52
+ --wb-mono: var(
53
+ --ui-font-mono,
54
+ ui-monospace,
55
+ SFMono-Regular,
56
+ "SF Mono",
57
+ Menlo,
58
+ Consolas,
59
+ monospace
60
+ );
61
+
62
+ /* The semantic tones, picked by meaning: `success` finished well or healthy (a run in progress
63
+ takes it too, its word telling the two apart), `attention` unfinished, waiting on time, a
64
+ queue or the user, `danger` failed or destructive, `done` closed for good, `info` a fact worth
65
+ a colour, `neutral` a kind, or a state that should recede. `fg` is the ink, `bg` the tint a
66
+ badge sits on, `line` its rule. */
67
+ --wb-tone-success-fg: var(
68
+ --ui-tone-success-fg,
69
+ light-dark(oklch(50.8% 0.118 165.612), oklch(76.5% 0.177 163.223))
70
+ );
71
+ --wb-tone-success-bg: var(
72
+ --ui-tone-success-bg,
73
+ light-dark(oklch(97.9% 0.021 166.113), oklch(26.2% 0.051 172.552 / 0.4))
74
+ );
75
+ --wb-tone-success-line: var(
76
+ --ui-tone-success-line,
77
+ light-dark(oklch(84.5% 0.143 164.978), oklch(50.8% 0.118 165.612))
78
+ );
79
+ --wb-tone-attention-fg: var(
80
+ --ui-tone-attention-fg,
81
+ light-dark(oklch(55.5% 0.163 48.998), oklch(82.8% 0.189 84.429))
82
+ );
83
+ --wb-tone-attention-bg: var(
84
+ --ui-tone-attention-bg,
85
+ light-dark(oklch(98.7% 0.022 95.277), oklch(27.9% 0.077 45.635 / 0.4))
86
+ );
87
+ --wb-tone-attention-line: var(
88
+ --ui-tone-attention-line,
89
+ light-dark(oklch(87.9% 0.169 91.605), oklch(55.5% 0.163 48.998))
90
+ );
91
+ --wb-tone-danger-fg: var(
92
+ --ui-tone-danger-fg,
93
+ light-dark(oklch(50.5% 0.213 27.518), oklch(70.4% 0.191 22.216))
94
+ );
95
+ --wb-tone-danger-bg: var(
96
+ --ui-tone-danger-bg,
97
+ light-dark(oklch(97.1% 0.013 17.38), oklch(25.8% 0.092 26.042 / 0.4))
98
+ );
99
+ --wb-tone-danger-line: var(
100
+ --ui-tone-danger-line,
101
+ light-dark(oklch(80.8% 0.114 19.571), oklch(50.5% 0.213 27.518))
102
+ );
103
+ --wb-tone-done-fg: var(
104
+ --ui-tone-done-fg,
105
+ light-dark(oklch(49.6% 0.265 301.924), oklch(71.4% 0.203 305.504))
106
+ );
107
+ --wb-tone-done-bg: var(
108
+ --ui-tone-done-bg,
109
+ light-dark(oklch(97.7% 0.014 308.299), oklch(29.1% 0.149 302.717 / 0.4))
110
+ );
111
+ --wb-tone-done-line: var(
112
+ --ui-tone-done-line,
113
+ light-dark(oklch(82.7% 0.119 306.383), oklch(49.6% 0.265 301.924))
114
+ );
115
+ --wb-tone-neutral-fg: var(--ui-tone-neutral-fg, light-dark(#4b5563, #b0b0b0));
116
+ --wb-tone-neutral-bg: var(--ui-tone-neutral-bg, light-dark(#f3f4f6, #262626));
117
+ --wb-tone-neutral-line: var(--ui-tone-neutral-line, light-dark(#e5e7eb, #262626));
118
+ --wb-tone-info-fg: var(
119
+ --ui-tone-info-fg,
120
+ light-dark(oklch(50% 0.134 242.749), oklch(74.6% 0.16 232.661))
121
+ );
122
+ --wb-tone-info-bg: var(
123
+ --ui-tone-info-bg,
124
+ light-dark(oklch(97.7% 0.013 236.62), oklch(29.3% 0.066 243.157 / 0.4))
125
+ );
126
+ --wb-tone-info-line: var(
127
+ --ui-tone-info-line,
128
+ light-dark(oklch(82.8% 0.111 230.318), oklch(50% 0.134 242.749))
129
+ );
40
130
  }
41
131
 
42
132
  /* The app stamps `dark` or `light` on the root; `prefers-color-scheme` only decides for a
@@ -44,23 +134,11 @@
44
134
  @media (prefers-color-scheme: dark) {
45
135
  :root:not(.light) {
46
136
  color-scheme: dark;
47
- --wb-bg: var(--color-gray-950, #121212);
48
- --wb-surface: var(--color-gray-900, #1a1a1a);
49
- --wb-fg: var(--color-gray-100, #f5f5f5);
50
- --wb-muted: var(--color-gray-400, #a1a1a1);
51
- --wb-border: var(--color-gray-700, #333333);
52
- --wb-hover: var(--color-gray-800, #262626);
53
137
  }
54
138
  }
55
139
 
56
140
  :root.dark {
57
141
  color-scheme: dark;
58
- --wb-bg: var(--color-gray-950, #121212);
59
- --wb-surface: var(--color-gray-900, #1a1a1a);
60
- --wb-fg: var(--color-gray-100, #f5f5f5);
61
- --wb-muted: var(--color-gray-400, #a1a1a1);
62
- --wb-border: var(--color-gray-700, #333333);
63
- --wb-hover: var(--color-gray-800, #262626);
64
142
  }
65
143
 
66
144
  body {
@@ -69,7 +147,7 @@ body {
69
147
  background: var(--wb-bg);
70
148
  color: var(--wb-fg);
71
149
  font-family: var(--wb-font);
72
- font-size: 0.875rem;
150
+ font-size: var(--ui-text-body-size, 0.875rem);
73
151
  line-height: 1.6;
74
152
  }
75
153
 
@@ -150,7 +228,7 @@ code,
150
228
  kbd,
151
229
  samp {
152
230
  font-family: var(--wb-mono);
153
- font-size: 0.8125rem;
231
+ font-size: var(--ui-text-code-size, 0.8125rem);
154
232
  }
155
233
  code {
156
234
  background: var(--wb-surface);
@@ -253,6 +331,58 @@ button.wb-primary:hover:not(:disabled) {
253
331
  flex-wrap: wrap;
254
332
  }
255
333
 
334
+ /* A short label beside a name — a state, a kind, a fact — drawn the way the app draws its label
335
+ pills: the tone's tint under its ink, the theme's pill radius, tag type and (where the theme
336
+ draws one) an inset rule in the tone's line. `data-tone` picks the tone; none is `neutral`.
337
+ Colour never carries the state alone: the word on the badge does. */
338
+ .wb-badge {
339
+ --_wb-badge-fg: var(--wb-tone-neutral-fg);
340
+ --_wb-badge-bg: var(--wb-tone-neutral-bg);
341
+ --_wb-badge-line: var(--wb-tone-neutral-line);
342
+ display: inline-flex;
343
+ flex-shrink: 0;
344
+ align-items: center;
345
+ white-space: nowrap;
346
+ padding: 1px calc(var(--ui-space-unit, 0.25rem) * 1.5);
347
+ border-radius: var(--ui-radius-pill, 9999px);
348
+ color: var(--_wb-badge-fg);
349
+ background: var(--_wb-badge-bg);
350
+ box-shadow: inset 0 0 0 var(--ui-badge-soft-ring, 0px) var(--_wb-badge-line);
351
+ font-size: var(--ui-badge-size, 0.6875rem);
352
+ line-height: var(--ui-badge-lh, 1rem);
353
+ font-weight: var(--ui-badge-weight, 600);
354
+ }
355
+ .wb-badge[data-tone="success"] {
356
+ --_wb-badge-fg: var(--wb-tone-success-fg);
357
+ --_wb-badge-bg: var(--wb-tone-success-bg);
358
+ --_wb-badge-line: var(--wb-tone-success-line);
359
+ }
360
+ .wb-badge[data-tone="attention"] {
361
+ --_wb-badge-fg: var(--wb-tone-attention-fg);
362
+ --_wb-badge-bg: var(--wb-tone-attention-bg);
363
+ --_wb-badge-line: var(--wb-tone-attention-line);
364
+ }
365
+ .wb-badge[data-tone="danger"] {
366
+ --_wb-badge-fg: var(--wb-tone-danger-fg);
367
+ --_wb-badge-bg: var(--wb-tone-danger-bg);
368
+ --_wb-badge-line: var(--wb-tone-danger-line);
369
+ }
370
+ .wb-badge[data-tone="done"] {
371
+ --_wb-badge-fg: var(--wb-tone-done-fg);
372
+ --_wb-badge-bg: var(--wb-tone-done-bg);
373
+ --_wb-badge-line: var(--wb-tone-done-line);
374
+ }
375
+ .wb-badge[data-tone="neutral"] {
376
+ --_wb-badge-fg: var(--wb-tone-neutral-fg);
377
+ --_wb-badge-bg: var(--wb-tone-neutral-bg);
378
+ --_wb-badge-line: var(--wb-tone-neutral-line);
379
+ }
380
+ .wb-badge[data-tone="info"] {
381
+ --_wb-badge-fg: var(--wb-tone-info-fg);
382
+ --_wb-badge-bg: var(--wb-tone-info-bg);
383
+ --_wb-badge-line: var(--wb-tone-info-line);
384
+ }
385
+
256
386
  @media (prefers-reduced-motion: reduce) {
257
387
  * {
258
388
  transition: none !important;