@ggui-ai/dev-stack 0.10.0 → 0.12.0

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.
@@ -34212,7 +34212,7 @@ config(en_default());
34212
34212
 
34213
34213
  // ../protocol/dist/gadgets/stdlib-gadgets.js
34214
34214
  var STDLIB_GADGETS_PACKAGE = "@ggui-ai/gadgets";
34215
- var STDLIB_GADGETS_VERSION = "0.10.0";
34215
+ var STDLIB_GADGETS_VERSION = "0.12.0";
34216
34216
  var STDLIB_GADGETS = [
34217
34217
  {
34218
34218
  package: STDLIB_GADGETS_PACKAGE,
@@ -34976,14 +34976,29 @@ var updateOutputSchema = external_exports.object({
34976
34976
  * existing props back believing it changed the UI, and this field is
34977
34977
  * its feedback channel.
34978
34978
  */
34979
- warning: external_exports.string().optional()
34979
+ warning: external_exports.string().optional(),
34980
+ /**
34981
+ * Schema attestation (ggui#560): identity hash of the enforced props
34982
+ * schema this mutation was validated against — the same schema the
34983
+ * paired handshake disclosed. Present when the session declares a
34984
+ * `propsSpec`; equal to the handshake's `propsSchemaHash` under the
34985
+ * session-continuity guarantee, so a mismatch is the observable form
34986
+ * of a contract changing mid-session.
34987
+ */
34988
+ propsSchemaHash: external_exports.string().optional(),
34989
+ /** Present with `propsSchemaHash`; same profile classifier as the handshake's. */
34990
+ propsSchemaProfile: external_exports.string().optional()
34980
34991
  });
34981
34992
  var amendOutputSchema = external_exports.object({
34982
34993
  sessionId: external_exports.string(),
34983
34994
  updated: external_exports.boolean(),
34984
34995
  resourceUri: external_exports.string(),
34985
34996
  /** Same no-op feedback channel as ggui_update's `warning`. */
34986
- warning: external_exports.string().optional()
34997
+ warning: external_exports.string().optional(),
34998
+ /** Schema attestation (ggui#560) — same semantics as ggui_update's. */
34999
+ propsSchemaHash: external_exports.string().optional(),
35000
+ /** Present with `propsSchemaHash`. */
35001
+ propsSchemaProfile: external_exports.string().optional()
34987
35002
  });
34988
35003
  var declareToolCatalogInputSchema = external_exports.object({
34989
35004
  toolCatalog: external_exports.record(external_exports.string(), external_exports.object({ name: external_exports.string(), version: external_exports.string().optional() }).strict()).describe("Per-app canonical tool identities: bare tool name -> its server's initialize-declared serverInfo. Host/library-supplied; not an agent action.")
@@ -35147,10 +35162,27 @@ var invokeRequestSchema = external_exports.object({
35147
35162
  var GGUI_CSS_VAR_KEY_RE = /^--ggui-[a-zA-Z0-9-]+$/;
35148
35163
  var CSS_VALUE_SAFE_RE = /^[^;{}<>@]*$/;
35149
35164
  var cssValue = external_exports.string().min(1).max(256).regex(CSS_VALUE_SAFE_RE, "css value contains a disallowed character").refine((v) => !v.includes("/*"), "css value may not contain a comment");
35165
+ var cssVariableMap = external_exports.record(external_exports.string().regex(GGUI_CSS_VAR_KEY_RE, "css var key must be --ggui-*"), cssValue).refine((m) => Object.keys(m).length <= 200, "too many css variables (max 200)");
35150
35166
  var appThemeSchema = external_exports.object({
35151
35167
  mode: external_exports.enum(["light", "dark"]),
35152
- cssVariables: external_exports.record(external_exports.string().regex(GGUI_CSS_VAR_KEY_RE, "css var key must be --ggui-*"), cssValue).refine((m) => Object.keys(m).length <= 200, "too many css variables (max 200)"),
35153
- name: external_exports.string().min(1).max(64).optional()
35168
+ cssVariables: cssVariableMap,
35169
+ name: external_exports.string().min(1).max(64).optional(),
35170
+ /**
35171
+ * The REGISTERED base ladder, delivered (runtime theme
35172
+ * registration): both modes' resolved variable sets ride the
35173
+ * envelope so a mid-session mode switch is a local operation and
35174
+ * delivery never depends on the iframe being able to fetch. The
35175
+ * renderer injects the mode-selected set BELOW `cssVariables` (the
35176
+ * per-app overlay) in the documented precedence. `documentHash` is
35177
+ * the registration's identity: it joins painted ladders to
35178
+ * registration records, and a receiver holding the hash may be
35179
+ * served a future envelope without the variable sets.
35180
+ */
35181
+ base: external_exports.object({
35182
+ documentHash: external_exports.string().regex(/^[0-9a-f]{64}$/, "documentHash must be sha256 lowercase hex"),
35183
+ light: cssVariableMap,
35184
+ dark: cssVariableMap
35185
+ }).strict().optional()
35154
35186
  }).strict();
35155
35187
 
35156
35188
  // ../protocol/dist/registry/canonicalize-contract.js
@@ -36641,7 +36673,10 @@ var sizeStyles = {
36641
36673
  var variantStyles = {
36642
36674
  primary: {
36643
36675
  backgroundColor: "var(--ggui-color-primary-600, #0284c7)",
36644
- color: "#ffffff",
36676
+ // The on-accent PAIR, never a literal (ggui#589 round 7): a theme
36677
+ // whose primary is bright (slime) pairs dark ink via onPrimary —
36678
+ // hardcoded white was unreadable on it.
36679
+ color: "var(--ggui-color-onPrimary, #ffffff)",
36645
36680
  border: "none"
36646
36681
  },
36647
36682
  secondary: {
@@ -36661,7 +36696,7 @@ var variantStyles = {
36661
36696
  },
36662
36697
  danger: {
36663
36698
  backgroundColor: "var(--ggui-color-error-600, #dc2626)",
36664
- color: "#ffffff",
36699
+ color: "var(--ggui-color-onError, #ffffff)",
36665
36700
  border: "none"
36666
36701
  }
36667
36702
  };
@@ -36834,7 +36869,7 @@ function Checkbox({ label, checked, onChange, disabled, description, indetermina
36834
36869
  alignItems: "center",
36835
36870
  justifyContent: "center",
36836
36871
  transition: "all 0.2s"
36837
- }, children: (checked || indeterminate) && (0, import_jsx_runtime12.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", style: { color: "#ffffff" }, children: indeterminate ? (0, import_jsx_runtime12.jsx)("path", { d: "M2.5 6H9.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) : (0, import_jsx_runtime12.jsx)("path", { d: "M2.5 6L5 8.5L9.5 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })] }), (label || description) && (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [label && (0, import_jsx_runtime12.jsx)("span", { style: {
36872
+ }, children: (checked || indeterminate) && (0, import_jsx_runtime12.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", style: { color: "var(--ggui-color-onPrimary, #ffffff)" }, children: indeterminate ? (0, import_jsx_runtime12.jsx)("path", { d: "M2.5 6H9.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) : (0, import_jsx_runtime12.jsx)("path", { d: "M2.5 6L5 8.5L9.5 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })] }), (label || description) && (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [label && (0, import_jsx_runtime12.jsx)("span", { style: {
36838
36873
  fontSize: "var(--ggui-font-size-sm, 14px)",
36839
36874
  fontWeight: "var(--ggui-font-weight-medium, 500)",
36840
36875
  color: "var(--ggui-color-onSurfaceVariant, #52525b)"
@@ -41364,7 +41399,9 @@ function Tooltip({ children, content, position = "top", delay = 200, style, clas
41364
41399
  left: coords.left,
41365
41400
  transform: getTransform(),
41366
41401
  backgroundColor: "var(--ggui-color-onSurface, #18181b)",
41367
- color: "#ffffff",
41402
+ // Inverse pair: text on the inverted (onSurface) ground is
41403
+ // the surface color — white was only right for light themes.
41404
+ color: "var(--ggui-color-surface, #ffffff)",
41368
41405
  padding: "6px 10px",
41369
41406
  borderRadius: "var(--ggui-shape-radius-md, 8px)",
41370
41407
  fontSize: "var(--ggui-font-size-xs, 12px)",
@@ -41517,7 +41554,7 @@ function Tabs({ items, activeKey, onChange, variant = "line", size = "md", fullW
41517
41554
  if (variant === "pills") {
41518
41555
  return {
41519
41556
  ...base,
41520
- color: isActive ? "#ffffff" : "var(--ggui-color-onSurfaceVariant, #52525b)",
41557
+ color: isActive ? "var(--ggui-color-onPrimary, #ffffff)" : "var(--ggui-color-onSurfaceVariant, #52525b)",
41521
41558
  backgroundColor: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "transparent",
41522
41559
  borderRadius: "var(--ggui-shape-radius-md, 6px)"
41523
41560
  };
@@ -43840,19 +43877,19 @@ function walkTokens(obj, prefix, out) {
43840
43877
  }
43841
43878
  }
43842
43879
  }
43843
- function buildCssVariables(theme8) {
43880
+ function buildCssVariables(theme9) {
43844
43881
  const lines = [];
43845
- walkTokens(theme8.color, "color", lines);
43846
- walkTokens(theme8.font, "font", lines);
43847
- walkTokens(theme8.spacing, "spacing", lines);
43848
- walkTokens(theme8.shape, "shape", lines);
43882
+ walkTokens(theme9.color, "color", lines);
43883
+ walkTokens(theme9.font, "font", lines);
43884
+ walkTokens(theme9.spacing, "spacing", lines);
43885
+ walkTokens(theme9.shape, "shape", lines);
43849
43886
  walkTokens({
43850
- duration: theme8.motion.duration,
43851
- easing: theme8.motion.easing,
43852
- transition: theme8.motion.transition
43887
+ duration: theme9.motion.duration,
43888
+ easing: theme9.motion.easing,
43889
+ transition: theme9.motion.transition
43853
43890
  }, "motion", lines);
43854
- walkTokens(theme8.accessibility, "accessibility", lines);
43855
- walkTokens(theme8.zIndex, "zIndex", lines);
43891
+ walkTokens(theme9.accessibility, "accessibility", lines);
43892
+ walkTokens(theme9.zIndex, "zIndex", lines);
43856
43893
  return lines.join("\n");
43857
43894
  }
43858
43895
  function expandKeyframe(name, compact) {
@@ -43869,34 +43906,139 @@ function expandKeyframe(name, compact) {
43869
43906
  ${stops.join("\n")}
43870
43907
  }`;
43871
43908
  }
43872
- function buildCssKeyframes(theme8) {
43909
+ function buildCssKeyframes(theme9) {
43873
43910
  const blocks = [];
43874
- for (const [name, token] of Object.entries(theme8.motion.keyframes)) {
43911
+ for (const [name, token] of Object.entries(theme9.motion.keyframes)) {
43875
43912
  if (name.startsWith("$"))
43876
43913
  continue;
43877
43914
  blocks.push(expandKeyframe(name, String(token.$value)));
43878
43915
  }
43879
43916
  return blocks.join("\n\n");
43880
43917
  }
43881
- function parseTheme(id, theme8) {
43882
- const cssVariablesBody = buildCssVariables(theme8);
43918
+ function parseTheme(id, theme9) {
43919
+ const cssVariablesBody = buildCssVariables(theme9);
43883
43920
  const cssVariables = `:root {
43884
43921
  ${cssVariablesBody}
43885
43922
  }`;
43886
- const cssKeyframes = buildCssKeyframes(theme8);
43923
+ const cssKeyframes = buildCssKeyframes(theme9);
43887
43924
  const css = cssKeyframes ? `${cssVariables}
43888
43925
 
43889
43926
  ${cssKeyframes}` : cssVariables;
43890
43927
  return {
43891
43928
  id,
43892
- name: theme8.$name,
43893
- description: theme8.$description,
43894
- metadata: theme8.$metadata,
43929
+ name: theme9.$name,
43930
+ description: theme9.$description,
43931
+ metadata: theme9.$metadata,
43895
43932
  cssVariables,
43896
43933
  cssKeyframes,
43897
43934
  css
43898
43935
  };
43899
43936
  }
43937
+ var consumed_tokens_manifest_default = {
43938
+ version: 1,
43939
+ tokens: [
43940
+ "--ggui-color-container",
43941
+ "--ggui-color-error-100",
43942
+ "--ggui-color-error-200",
43943
+ "--ggui-color-error-50",
43944
+ "--ggui-color-error-500",
43945
+ "--ggui-color-error-600",
43946
+ "--ggui-color-error-700",
43947
+ "--ggui-color-error-800",
43948
+ "--ggui-color-info-100",
43949
+ "--ggui-color-info-200",
43950
+ "--ggui-color-info-50",
43951
+ "--ggui-color-info-500",
43952
+ "--ggui-color-info-700",
43953
+ "--ggui-color-info-800",
43954
+ "--ggui-color-neutral-100",
43955
+ "--ggui-color-neutral-200",
43956
+ "--ggui-color-neutral-300",
43957
+ "--ggui-color-neutral-400",
43958
+ "--ggui-color-neutral-50",
43959
+ "--ggui-color-neutral-500",
43960
+ "--ggui-color-neutral-600",
43961
+ "--ggui-color-neutral-800",
43962
+ "--ggui-color-onContainer",
43963
+ "--ggui-color-onError",
43964
+ "--ggui-color-onPrimary",
43965
+ "--ggui-color-onSurface",
43966
+ "--ggui-color-onSurfaceVariant",
43967
+ "--ggui-color-outline",
43968
+ "--ggui-color-outlineVariant",
43969
+ "--ggui-color-primary",
43970
+ "--ggui-color-primary-100",
43971
+ "--ggui-color-primary-200",
43972
+ "--ggui-color-primary-300",
43973
+ "--ggui-color-primary-400",
43974
+ "--ggui-color-primary-50",
43975
+ "--ggui-color-primary-500",
43976
+ "--ggui-color-primary-600",
43977
+ "--ggui-color-primary-700",
43978
+ "--ggui-color-primary-800",
43979
+ "--ggui-color-primary-900",
43980
+ "--ggui-color-success-100",
43981
+ "--ggui-color-success-200",
43982
+ "--ggui-color-success-50",
43983
+ "--ggui-color-success-500",
43984
+ "--ggui-color-success-700",
43985
+ "--ggui-color-success-800",
43986
+ "--ggui-color-surface",
43987
+ "--ggui-color-surface-gradient",
43988
+ "--ggui-color-surface-subtle",
43989
+ "--ggui-color-surface-sunken",
43990
+ "--ggui-color-surfaceVariant",
43991
+ "--ggui-color-warning-100",
43992
+ "--ggui-color-warning-200",
43993
+ "--ggui-color-warning-50",
43994
+ "--ggui-color-warning-500",
43995
+ "--ggui-color-warning-700",
43996
+ "--ggui-color-warning-800",
43997
+ "--ggui-flash-color",
43998
+ "--ggui-font-family-mono",
43999
+ "--ggui-font-family-sans",
44000
+ "--ggui-font-lineHeight-normal",
44001
+ "--ggui-font-size-2xl",
44002
+ "--ggui-font-size-3xl",
44003
+ "--ggui-font-size-4xl",
44004
+ "--ggui-font-size-base",
44005
+ "--ggui-font-size-lg",
44006
+ "--ggui-font-size-sm",
44007
+ "--ggui-font-size-xl",
44008
+ "--ggui-font-size-xs",
44009
+ "--ggui-font-weight-bold",
44010
+ "--ggui-font-weight-medium",
44011
+ "--ggui-font-weight-normal",
44012
+ "--ggui-font-weight-semibold",
44013
+ "--ggui-radius-md",
44014
+ "--ggui-radius-sm",
44015
+ "--ggui-shape-radius-full",
44016
+ "--ggui-shape-radius-lg",
44017
+ "--ggui-shape-radius-md",
44018
+ "--ggui-shape-radius-sm",
44019
+ "--ggui-shape-radius-xl",
44020
+ "--ggui-shape-shadow-lg",
44021
+ "--ggui-shape-shadow-md",
44022
+ "--ggui-shape-shadow-sm",
44023
+ "--ggui-shape-shadow-xl",
44024
+ "--ggui-spacing-1",
44025
+ "--ggui-spacing-10",
44026
+ "--ggui-spacing-12",
44027
+ "--ggui-spacing-2",
44028
+ "--ggui-spacing-2xl",
44029
+ "--ggui-spacing-3",
44030
+ "--ggui-spacing-4",
44031
+ "--ggui-spacing-5",
44032
+ "--ggui-spacing-6",
44033
+ "--ggui-spacing-8",
44034
+ "--ggui-spacing-lg",
44035
+ "--ggui-spacing-md",
44036
+ "--ggui-spacing-sm",
44037
+ "--ggui-spacing-xl",
44038
+ "--ggui-spacing-xs"
44039
+ ]
44040
+ };
44041
+ var consumedTokenManifest = consumed_tokens_manifest_default.tokens;
43900
44042
  var standardSemanticScales = {
43901
44043
  light: {
43902
44044
  success: {
@@ -44242,7 +44384,7 @@ var gguiLight = {
44242
44384
  "50": { $value: "#fbf3e0", $type: "color" },
44243
44385
  "100": { $value: "#f3e1b0", $type: "color" },
44244
44386
  "200": { $value: "#e6c46e", $type: "color" },
44245
- "500": { $value: "#a87b0e", $type: "color" },
44387
+ "500": { $value: "#8e680c", $type: "color" },
44246
44388
  // draft
44247
44389
  "600": { $value: "#86620b", $type: "color" },
44248
44390
  "700": { $value: "#654a08", $type: "color" },
@@ -44252,7 +44394,7 @@ var gguiLight = {
44252
44394
  "50": { $value: "#fbe7e3", $type: "color" },
44253
44395
  "100": { $value: "#f4bbb1", $type: "color" },
44254
44396
  "200": { $value: "#ea8a7a", $type: "color" },
44255
- "500": { $value: "#d93822", $type: "color" },
44397
+ "500": { $value: "#cc3520", $type: "color" },
44256
44398
  // signal
44257
44399
  "600": { $value: "#ae2d1b", $type: "color" },
44258
44400
  "700": { $value: "#822214", $type: "color" },
@@ -44624,7 +44766,7 @@ var cyberpunkLight = {
44624
44766
  "400": { $value: "#22d3ee", $type: "color" },
44625
44767
  "500": { $value: "#06b6d4", $type: "color" },
44626
44768
  "600": { $value: "#0891b2", $type: "color" },
44627
- "700": { $value: "#0e7490", $type: "color" },
44769
+ "700": { $value: "#1085a5", $type: "color" },
44628
44770
  "800": { $value: "#155e75", $type: "color" },
44629
44771
  "900": { $value: "#164e63", $type: "color" }
44630
44772
  },
@@ -44634,7 +44776,7 @@ var cyberpunkLight = {
44634
44776
  "200": { $value: "#1a1a24", $type: "color" },
44635
44777
  "300": { $value: "#25252f", $type: "color" },
44636
44778
  "400": { $value: "#3a3a48", $type: "color" },
44637
- "500": { $value: "#55556a", $type: "color" },
44779
+ "500": { $value: "#5d5d74", $type: "color" },
44638
44780
  "600": { $value: "#8888a0", $type: "color" },
44639
44781
  "700": { $value: "#aaaabe", $type: "color" },
44640
44782
  "800": { $value: "#d0d0e0", $type: "color" },
@@ -44761,7 +44903,7 @@ var cyberpunkDark = {
44761
44903
  "200": { $value: "#111118", $type: "color" },
44762
44904
  "300": { $value: "#1a1a24", $type: "color" },
44763
44905
  "400": { $value: "#3a3a48", $type: "color" },
44764
- "500": { $value: "#55556a", $type: "color" },
44906
+ "500": { $value: "#5a5a70", $type: "color" },
44765
44907
  "600": { $value: "#8888a0", $type: "color" },
44766
44908
  "700": { $value: "#aaaabe", $type: "color" },
44767
44909
  "800": { $value: "#d0d0e0", $type: "color" },
@@ -44997,7 +45139,7 @@ var zenLight = {
44997
45139
  "200": { $value: "#e7e4de", $type: "color" },
44998
45140
  "300": { $value: "#d5d0c8", $type: "color" },
44999
45141
  "400": { $value: "#b8b0a4", $type: "color" },
45000
- "500": { $value: "#9a9084", $type: "color" },
45142
+ "500": { $value: "#988d81", $type: "color" },
45001
45143
  "600": { $value: "#7a7068", $type: "color" },
45002
45144
  "700": { $value: "#5e5650", $type: "color" },
45003
45145
  "800": { $value: "#3e3a36", $type: "color" },
@@ -45010,7 +45152,7 @@ var zenLight = {
45010
45152
  "50": { $type: "color", $value: "#f0f4ee" },
45011
45153
  "100": { $type: "color", $value: "#dde6d8" },
45012
45154
  "200": { $type: "color", $value: "#c6d4be" },
45013
- "500": { $type: "color", $value: "#6b8f5e" },
45155
+ "500": { $type: "color", $value: "#5b7950" },
45014
45156
  "600": { $type: "color", $value: "#58754d" },
45015
45157
  "700": { $type: "color", $value: "#43583a" },
45016
45158
  "800": { $type: "color", $value: "#2f3e29" }
@@ -45019,7 +45161,7 @@ var zenLight = {
45019
45161
  "50": { $type: "color", $value: "#faf6ea" },
45020
45162
  "100": { $type: "color", $value: "#f4ebcb" },
45021
45163
  "200": { $type: "color", $value: "#ecdda4" },
45022
- "500": { $type: "color", $value: "#c9a84c" },
45164
+ "500": { $type: "color", $value: "#886f29" },
45023
45165
  "600": { $type: "color", $value: "#a88a3a" },
45024
45166
  "700": { $type: "color", $value: "#7e672c" },
45025
45167
  "800": { $type: "color", $value: "#59481f" }
@@ -45147,7 +45289,7 @@ var zenDark = {
45147
45289
  "50": { $type: "color", $value: "#faeae9" },
45148
45290
  "100": { $type: "color", $value: "#f1cac8" },
45149
45291
  "200": { $type: "color", $value: "#e4a5a1" },
45150
- "500": { $type: "color", $value: "#cf6f6a" },
45292
+ "500": { $type: "color", $value: "#d17570" },
45151
45293
  "600": { $type: "color", $value: "#a85753" },
45152
45294
  "700": { $type: "color", $value: "#7d403c" },
45153
45295
  "800": { $type: "color", $value: "#552a27" }
@@ -45350,7 +45492,7 @@ var neonNoirLight = {
45350
45492
  "400": { $value: "#f472b6", $type: "color" },
45351
45493
  "500": { $value: "#ec4899", $type: "color" },
45352
45494
  "600": { $value: "#db2777", $type: "color" },
45353
- "700": { $value: "#be185d", $type: "color" },
45495
+ "700": { $value: "#e42574", $type: "color" },
45354
45496
  "800": { $value: "#9d174d", $type: "color" },
45355
45497
  "900": { $value: "#831843", $type: "color" }
45356
45498
  },
@@ -45360,7 +45502,7 @@ var neonNoirLight = {
45360
45502
  "200": { $value: "#19191e", $type: "color" },
45361
45503
  "300": { $value: "#232329", $type: "color" },
45362
45504
  "400": { $value: "#3b3b44", $type: "color" },
45363
- "500": { $value: "#5a5a68", $type: "color" },
45505
+ "500": { $value: "#5e5e6c", $type: "color" },
45364
45506
  "600": { $value: "#8a8a9a", $type: "color" },
45365
45507
  "700": { $value: "#b0b0be", $type: "color" },
45366
45508
  "800": { $value: "#d4d4de", $type: "color" },
@@ -45392,7 +45534,7 @@ var neonNoirLight = {
45392
45534
  outline: { $value: "#3b3b44", $type: "color" },
45393
45535
  outlineVariant: { $value: "#232329", $type: "color" },
45394
45536
  // Primary role pair — onPrimary is deep noir so hot pink CTAs pop.
45395
- onPrimary: { $value: "#09090b", $type: "color" },
45537
+ onPrimary: { $value: "#ffffff", $type: "color" },
45396
45538
  primaryContainer: { $value: "#9d174d", $type: "color" },
45397
45539
  // primary-800
45398
45540
  onPrimaryContainer: { $value: "#fce7f3", $type: "color" },
@@ -45654,15 +45796,31 @@ var botanicalLight = {
45654
45796
  "200": { $value: "#f8f0df", $type: "color" },
45655
45797
  "300": { $value: "#f0e4c9", $type: "color" },
45656
45798
  "400": { $value: "#dccba5", $type: "color" },
45657
- "500": { $value: "#bfaa80", $type: "color" },
45799
+ "500": { $value: "#aa8e56", $type: "color" },
45658
45800
  "600": { $value: "#9a8660", $type: "color" },
45659
45801
  "700": { $value: "#746448", $type: "color" },
45660
45802
  "800": { $value: "#504530", $type: "color" },
45661
45803
  "900": { $value: "#352e20", $type: "color" }
45662
45804
  },
45663
- success: standardSemanticScales.light.success,
45664
- warning: standardSemanticScales.light.warning,
45665
- error: standardSemanticScales.light.error,
45805
+ // #594 founder-approved light override (2026-08-22): shared success-500
45806
+ // is sub-AA as TEXT on botanical's warm paper — override the 500 stop
45807
+ // only, light only (same pattern as warning/error below).
45808
+ success: {
45809
+ ...standardSemanticScales.light.success,
45810
+ "500": { $type: "color", $value: "#17843f" }
45811
+ },
45812
+ // #594 founder-approved light overrides (2026-08-22): the shared
45813
+ // standardSemantic 500s are sub-AA as TEXT on botanical's warm paper
45814
+ // (#fefcf8) — override ONLY the 500 stop, only in light; the shared
45815
+ // scales stay untouched for every other theme and for dark.
45816
+ warning: {
45817
+ ...standardSemanticScales.light.warning,
45818
+ "500": { $type: "color", $value: "#a06707" }
45819
+ },
45820
+ error: {
45821
+ ...standardSemanticScales.light.error,
45822
+ "500": { $type: "color", $value: "#e51414" }
45823
+ },
45666
45824
  info: standardSemanticScales.light.info,
45667
45825
  // Semantic roles
45668
45826
  surface: { $value: "#fefcf8", $type: "color" },
@@ -45674,7 +45832,7 @@ var botanicalLight = {
45674
45832
  outline: { $value: "#f0e4c9", $type: "color" },
45675
45833
  outlineVariant: { $value: "#f8f0df", $type: "color" },
45676
45834
  // Primary role pair — onPrimary is cream for the leaf-green brand hex.
45677
- onPrimary: { $value: "#fefcf8", $type: "color" },
45835
+ onPrimary: { $value: "#332407", $type: "color" },
45678
45836
  primaryContainer: { $value: "#dcfce7", $type: "color" },
45679
45837
  // primary-100
45680
45838
  onPrimaryContainer: { $value: "#14532d", $type: "color" },
@@ -45973,7 +46131,7 @@ var claudicLight = {
45973
46131
  "50": { $value: "#f4f7ec", $type: "color" },
45974
46132
  "100": { $value: "#e3ecd0", $type: "color" },
45975
46133
  "200": { $value: "#c8d8a5", $type: "color" },
45976
- "500": { $value: "#6b8e3d", $type: "color" },
46134
+ "500": { $value: "#5c7a35", $type: "color" },
45977
46135
  // brand: olive
45978
46136
  "600": { $value: "#587634", $type: "color" },
45979
46137
  "700": { $value: "#465c29", $type: "color" },
@@ -45983,7 +46141,7 @@ var claudicLight = {
45983
46141
  "50": { $value: "#fbf3e3", $type: "color" },
45984
46142
  "100": { $value: "#f6e2bb", $type: "color" },
45985
46143
  "200": { $value: "#eac786", $type: "color" },
45986
- "500": { $value: "#c98e2e", $type: "color" },
46144
+ "500": { $value: "#956922", $type: "color" },
45987
46145
  // brand: amber-orange
45988
46146
  "600": { $value: "#a87725", $type: "color" },
45989
46147
  "700": { $value: "#825c1d", $type: "color" },
@@ -46023,7 +46181,7 @@ var claudicLight = {
46023
46181
  outline: { $value: "#dad8cc", $type: "color" },
46024
46182
  outlineVariant: { $value: "#ebe9df", $type: "color" },
46025
46183
  // Primary role pair — text on Crail CTAs is ivory, container is Crail-50.
46026
- onPrimary: { $value: "#faf9f5", $type: "color" },
46184
+ onPrimary: { $value: "#15130a", $type: "color" },
46027
46185
  // Ivory
46028
46186
  primaryContainer: { $value: "#fbf2ee", $type: "color" },
46029
46187
  // primary-50
@@ -46134,7 +46292,7 @@ var claudicDark = {
46134
46292
  "50": { $value: "#2a1410", $type: "color" },
46135
46293
  "100": { $value: "#52271f", $type: "color" },
46136
46294
  "200": { $value: "#7a3a2e", $type: "color" },
46137
- "500": { $value: "#d56b59", $type: "color" },
46295
+ "500": { $value: "#d7705f", $type: "color" },
46138
46296
  // brand: brick (lifted for dark)
46139
46297
  "600": { $value: "#df8576", $type: "color" },
46140
46298
  "700": { $value: "#e3a294", $type: "color" },
@@ -46383,7 +46541,7 @@ var indigoLight = {
46383
46541
  "50": { $value: "#ecfdf5", $type: "color" },
46384
46542
  "100": { $value: "#d1fae5", $type: "color" },
46385
46543
  "200": { $value: "#a7f3d0", $type: "color" },
46386
- "500": { $value: "#0e9d6e", $type: "color" },
46544
+ "500": { $value: "#0b815a", $type: "color" },
46387
46545
  // brand emerald
46388
46546
  "600": { $value: "#0b8259", $type: "color" },
46389
46547
  "700": { $value: "#086847", $type: "color" },
@@ -46393,7 +46551,7 @@ var indigoLight = {
46393
46551
  "50": { $value: "#fff8eb", $type: "color" },
46394
46552
  "100": { $value: "#fdecc8", $type: "color" },
46395
46553
  "200": { $value: "#fbd897", $type: "color" },
46396
- "500": { $value: "#e08515", $type: "color" },
46554
+ "500": { $value: "#a66210", $type: "color" },
46397
46555
  // brand amber
46398
46556
  "600": { $value: "#b86b0e", $type: "color" },
46399
46557
  "700": { $value: "#90530a", $type: "color" },
@@ -46504,7 +46662,7 @@ var indigoDark = {
46504
46662
  "300": { $value: "#2a2839", $type: "color" },
46505
46663
  // outline
46506
46664
  "400": { $value: "#3e3c50", $type: "color" },
46507
- "500": { $value: "#5e5c70", $type: "color" },
46665
+ "500": { $value: "#636176", $type: "color" },
46508
46666
  // muted
46509
46667
  "600": { $value: "#8b8898", $type: "color" },
46510
46668
  "700": { $value: "#b8b6c2", $type: "color" },
@@ -46614,6 +46772,355 @@ var theme7 = {
46614
46772
  light: indigoLight,
46615
46773
  dark: indigoDark
46616
46774
  };
46775
+ var shared8 = {
46776
+ font: {
46777
+ family: {
46778
+ sans: {
46779
+ $value: '"DM Sans", system-ui, -apple-system, sans-serif',
46780
+ $type: "fontFamily"
46781
+ },
46782
+ mono: {
46783
+ $value: '"JetBrains Mono", ui-monospace, monospace',
46784
+ $type: "fontFamily"
46785
+ }
46786
+ },
46787
+ size: {
46788
+ sm: { $value: "0.875rem", $type: "dimension" },
46789
+ base: { $value: "1rem", $type: "dimension" },
46790
+ lg: { $value: "1.125rem", $type: "dimension" },
46791
+ xl: { $value: "1.25rem", $type: "dimension" },
46792
+ "2xl": { $value: "1.5rem", $type: "dimension" }
46793
+ },
46794
+ weight: {
46795
+ normal: { $value: "400", $type: "fontWeight" },
46796
+ medium: { $value: "500", $type: "fontWeight" },
46797
+ semibold: { $value: "600", $type: "fontWeight" },
46798
+ bold: { $value: "700", $type: "fontWeight" }
46799
+ },
46800
+ lineHeight: {
46801
+ tight: { $value: "1.25", $type: "number" },
46802
+ normal: { $value: "1.5", $type: "number" },
46803
+ relaxed: { $value: "1.75", $type: "number" }
46804
+ }
46805
+ },
46806
+ spacing: {
46807
+ "1": { $value: "0.25rem", $type: "dimension" },
46808
+ "2": { $value: "0.5rem", $type: "dimension" },
46809
+ "3": { $value: "0.75rem", $type: "dimension" },
46810
+ "4": { $value: "1rem", $type: "dimension" },
46811
+ "5": { $value: "1.25rem", $type: "dimension" },
46812
+ "6": { $value: "1.5rem", $type: "dimension" },
46813
+ "8": { $value: "2rem", $type: "dimension" },
46814
+ "10": { $value: "2.5rem", $type: "dimension" },
46815
+ "12": { $value: "3rem", $type: "dimension" }
46816
+ },
46817
+ // NOTE: `shape` is per-mode (round 4) — radius is shared via
46818
+ // `sharedRadius` below, but shadows split: dark wants near-none ink
46819
+ // (a visible black blob under a card on a dark surface was the
46820
+ // round-3 "borders looking ugly" residual's shadow half), light
46821
+ // wants classic soft grey.
46822
+ motion: {
46823
+ duration: {
46824
+ fast: { $value: "120ms", $type: "duration" },
46825
+ normal: { $value: "200ms", $type: "duration" },
46826
+ slow: { $value: "400ms", $type: "duration" },
46827
+ ambient: { $value: "2000ms", $type: "duration" }
46828
+ },
46829
+ easing: {
46830
+ default: { $value: "cubic-bezier(0.4, 0, 0.2, 1)", $type: "cubicBezier" },
46831
+ bounce: {
46832
+ $value: "cubic-bezier(0.68, -0.55, 0.27, 1.55)",
46833
+ $type: "cubicBezier"
46834
+ },
46835
+ spring: { $value: "cubic-bezier(0.22, 1, 0.36, 1)", $type: "cubicBezier" }
46836
+ },
46837
+ transition: {
46838
+ fast: { $value: "120ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46839
+ normal: { $value: "200ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46840
+ slow: { $value: "400ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46841
+ colors: {
46842
+ $value: "color 200ms cubic-bezier(0.4, 0, 0.2, 1), background-color 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1)",
46843
+ $type: "transition"
46844
+ },
46845
+ opacity: { $value: "opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46846
+ transform: { $value: "transform 200ms cubic-bezier(0.22, 1, 0.36, 1)", $type: "transition" }
46847
+ },
46848
+ keyframes: {
46849
+ "fade-in": {
46850
+ $value: "0%{opacity:0}100%{opacity:1}",
46851
+ $type: "keyframes"
46852
+ },
46853
+ "slide-up": {
46854
+ $value: "0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:translateY(0)}",
46855
+ $type: "keyframes"
46856
+ },
46857
+ "pulse-soft": {
46858
+ $value: "0%{opacity:1}50%{opacity:0.65}100%{opacity:1}",
46859
+ $type: "keyframes"
46860
+ }
46861
+ }
46862
+ },
46863
+ accessibility: {
46864
+ focusRing: {
46865
+ color: { $value: "#B8FF3A", $type: "color" },
46866
+ width: { $value: "2px", $type: "dimension" },
46867
+ offset: { $value: "2px", $type: "dimension" }
46868
+ },
46869
+ reducedMotion: {
46870
+ duration: { $value: "0ms", $type: "duration" }
46871
+ },
46872
+ highContrast: {
46873
+ borderWidth: { $value: "2px", $type: "dimension" },
46874
+ textColor: { $value: "#FFFFFF", $type: "color" },
46875
+ backgroundColor: { $value: "#000000", $type: "color" },
46876
+ linkColor: { $value: "#CCFF66", $type: "color" }
46877
+ }
46878
+ },
46879
+ zIndex: standardZIndex
46880
+ };
46881
+ var sharedRadius = {
46882
+ sm: { $value: "0.375rem", $type: "dimension" },
46883
+ md: { $value: "0.5rem", $type: "dimension" },
46884
+ lg: { $value: "0.75rem", $type: "dimension" },
46885
+ xl: { $value: "1rem", $type: "dimension" },
46886
+ full: { $value: "9999px", $type: "dimension" }
46887
+ };
46888
+ var darkShadows = {
46889
+ sm: { $value: "0 1px 2px rgba(0, 0, 0, 0.2)", $type: "shadow" },
46890
+ md: { $value: "0 2px 8px rgba(0, 0, 0, 0.25)", $type: "shadow" },
46891
+ lg: { $value: "0 6px 16px rgba(0, 0, 0, 0.28)", $type: "shadow" },
46892
+ xl: { $value: "0 10px 24px rgba(0, 0, 0, 0.3)", $type: "shadow" }
46893
+ };
46894
+ var lightShadows = {
46895
+ sm: { $value: "0 1px 2px rgba(26, 29, 36, 0.06)", $type: "shadow" },
46896
+ md: { $value: "0 2px 8px rgba(26, 29, 36, 0.08)", $type: "shadow" },
46897
+ lg: { $value: "0 6px 16px rgba(26, 29, 36, 0.1)", $type: "shadow" },
46898
+ xl: { $value: "0 12px 28px rgba(26, 29, 36, 0.12)", $type: "shadow" }
46899
+ };
46900
+ var guueyBrandDark = {
46901
+ $name: "guuey-brand-v1",
46902
+ $description: "The guuey product brand (dark) \u2014 slate-ink surfaces, slime #B8FF3A accent, DM Sans.",
46903
+ $metadata: {
46904
+ font: "DM Sans",
46905
+ fontUrl: "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap",
46906
+ philosophy: "Agent-native. Slime on slate.",
46907
+ // Round 5 (founder-ruled): the guuey host clips the view with its
46908
+ // own rounded rim — the HOST owns the card silhouette; the theme
46909
+ // paints no border on the root layer. Inner hairlines stay.
46910
+ frameless: true
46911
+ },
46912
+ color: {
46913
+ // Inverted dark ladder — 50 darkest, 900 lightest; slime pinned at
46914
+ // 500, the portal's lifted #CCFF66 at the hover stop (600).
46915
+ primary: {
46916
+ "50": { $value: "#141D05", $type: "color" },
46917
+ "100": { $value: "#28390B", $type: "color" },
46918
+ "200": { $value: "#3F5A11", $type: "color" },
46919
+ "300": { $value: "#5F8719", $type: "color" },
46920
+ "400": { $value: "#8CC627", $type: "color" },
46921
+ "500": { $value: "#B8FF3A", $type: "color" },
46922
+ // slime (brand)
46923
+ "600": { $value: "#CCFF66", $type: "color" },
46924
+ // lifted hover (portal)
46925
+ "700": { $value: "#DBFF8F", $type: "color" },
46926
+ // pressed / emphasized
46927
+ "800": { $value: "#E9FFB8", $type: "color" },
46928
+ "900": { $value: "#F6FFE0", $type: "color" }
46929
+ },
46930
+ // Slate-ink foundation from the portal surface family: sunken →
46931
+ // surface → elevated → surfaceVariant, then up through the greys
46932
+ // to paper (#F6F5EE).
46933
+ neutral: {
46934
+ "50": { $value: "#0E1014", $type: "color" },
46935
+ // sunken
46936
+ "100": { $value: "#1A1D24", $type: "color" },
46937
+ // surface
46938
+ "200": { $value: "#232630", $type: "color" },
46939
+ // elevated
46940
+ "300": { $value: "#242938", $type: "color" },
46941
+ // surfaceVariant
46942
+ "400": { $value: "#3B4152", $type: "color" },
46943
+ "500": { $value: "#878C99", $type: "color" },
46944
+ // hint text
46945
+ "600": { $value: "#B7BAC4", $type: "color" },
46946
+ // secondary text
46947
+ "700": { $value: "#D5D6DC", $type: "color" },
46948
+ "800": { $value: "#E8E7E2", $type: "color" },
46949
+ "900": { $value: "#F6F5EE", $type: "color" }
46950
+ // paper (text)
46951
+ },
46952
+ // BRAND RULE: success IS slime — never green. Same family as
46953
+ // primary so an "Available" pill and a slime CTA read as one brand.
46954
+ success: {
46955
+ "50": { $value: "#141D05", $type: "color" },
46956
+ "100": { $value: "#28390B", $type: "color" },
46957
+ "200": { $value: "#3F5A11", $type: "color" },
46958
+ "500": { $value: "#B8FF3A", $type: "color" },
46959
+ // slime (brand rule)
46960
+ "600": { $value: "#CCFF66", $type: "color" },
46961
+ "700": { $value: "#DBFF8F", $type: "color" },
46962
+ "800": { $value: "#E9FFB8", $type: "color" }
46963
+ },
46964
+ warning: {
46965
+ "50": { $value: "#33240A", $type: "color" },
46966
+ "100": { $value: "#5C420F", $type: "color" },
46967
+ "200": { $value: "#8A6318", $type: "color" },
46968
+ "500": { $value: "#FFB020", $type: "color" },
46969
+ // portal warning
46970
+ "600": { $value: "#FFC24D", $type: "color" },
46971
+ "700": { $value: "#FFD37D", $type: "color" },
46972
+ "800": { $value: "#FFE5AE", $type: "color" }
46973
+ },
46974
+ error: {
46975
+ "50": { $value: "#33110E", $type: "color" },
46976
+ "100": { $value: "#5E1F1B", $type: "color" },
46977
+ "200": { $value: "#8F2F2A", $type: "color" },
46978
+ "500": { $value: "#FF5B5B", $type: "color" },
46979
+ // portal error
46980
+ "600": { $value: "#FF7D7A", $type: "color" },
46981
+ "700": { $value: "#FF9F9C", $type: "color" },
46982
+ "800": { $value: "#FFC3C0", $type: "color" }
46983
+ },
46984
+ info: {
46985
+ "50": { $value: "#0A2733", $type: "color" },
46986
+ "100": { $value: "#12455C", $type: "color" },
46987
+ "200": { $value: "#1E6A8A", $type: "color" },
46988
+ "500": { $value: "#3AC8FF", $type: "color" },
46989
+ // portal info
46990
+ "600": { $value: "#66D4FF", $type: "color" },
46991
+ "700": { $value: "#92E0FF", $type: "color" },
46992
+ "800": { $value: "#BFECFF", $type: "color" }
46993
+ },
46994
+ // M3 roles — portal values verbatim.
46995
+ surface: { $value: "#1A1D24", $type: "color" },
46996
+ onSurface: { $value: "#F6F5EE", $type: "color" },
46997
+ surfaceVariant: { $value: "#242938", $type: "color" },
46998
+ onSurfaceVariant: { $value: "#B7BAC4", $type: "color" },
46999
+ container: { $value: "#232630", $type: "color" },
47000
+ // elevated
47001
+ onContainer: { $value: "#F6F5EE", $type: "color" },
47002
+ // Round 4 (portal stops): .14 IS the base hairline; .18 is the
47003
+ // STRONG stop (no DtcgTheme slot — strong/interactive strokes
47004
+ // ride primary borders + the slime focusRing, receipted by the
47005
+ // Select button). Dividers sit softer still.
47006
+ outline: { $value: "rgba(246, 245, 238, 0.14)", $type: "color" },
47007
+ outlineVariant: { $value: "rgba(246, 245, 238, 0.1)", $type: "color" },
47008
+ onPrimary: { $value: "#0E1014", $type: "color" },
47009
+ // ink on slime
47010
+ primaryContainer: { $value: "#242938", $type: "color" },
47011
+ // portal
47012
+ onPrimaryContainer: { $value: "#CCFF66", $type: "color" },
47013
+ // portal
47014
+ onError: { $value: "#33110E", $type: "color" },
47015
+ errorContainer: { $value: "#5E1F1B", $type: "color" },
47016
+ onErrorContainer: { $value: "#FFC3C0", $type: "color" },
47017
+ // Pink accent — the portal's tertiary. (Purple #9B6AFF has no
47018
+ // DtcgTheme slot; see the file docstring.)
47019
+ tertiary: { $value: "#FF4FB0", $type: "color" },
47020
+ onTertiary: { $value: "#0E1014", $type: "color" },
47021
+ tertiaryContainer: { $value: "#451A35", $type: "color" },
47022
+ onTertiaryContainer: { $value: "#FFC1E4", $type: "color" }
47023
+ },
47024
+ ...shared8,
47025
+ shape: { radius: sharedRadius, shadow: darkShadows }
47026
+ };
47027
+ var guueyBrandLight = {
47028
+ $name: "guuey-brand-v1",
47029
+ $description: "The guuey product brand (light, provisional) \u2014 paper surfaces, slime accent held for fills, darkened slime for text emphasis.",
47030
+ $metadata: guueyBrandDark.$metadata,
47031
+ color: {
47032
+ // Normal (non-inverted) ramps; slime stays the 500 fill anchor,
47033
+ // text-emphasis stops (600/700) darken for contrast on paper.
47034
+ primary: {
47035
+ "50": { $value: "#F6FFE0", $type: "color" },
47036
+ "100": { $value: "#E9FFB8", $type: "color" },
47037
+ "200": { $value: "#DBFF8F", $type: "color" },
47038
+ "300": { $value: "#CCFF66", $type: "color" },
47039
+ "400": { $value: "#B8FF3A", $type: "color" },
47040
+ "500": { $value: "#9FE01C", $type: "color" },
47041
+ "600": { $value: "#7DB214", $type: "color" },
47042
+ // 700 is the 'emphasized' TEXT stop — AA on paper (round 7 sweep).
47043
+ "700": { $value: "#476809", $type: "color" },
47044
+ "800": { $value: "#3F5A11", $type: "color" },
47045
+ "900": { $value: "#28390B", $type: "color" }
47046
+ },
47047
+ neutral: {
47048
+ "50": { $value: "#FBFAF6", $type: "color" },
47049
+ "100": { $value: "#F6F5EE", $type: "color" },
47050
+ "200": { $value: "#E8E7E2", $type: "color" },
47051
+ "300": { $value: "#D5D6DC", $type: "color" },
47052
+ "400": { $value: "#B7BAC4", $type: "color" },
47053
+ "500": { $value: "#6E7380", $type: "color" },
47054
+ "600": { $value: "#4A4F5C", $type: "color" },
47055
+ "700": { $value: "#333846", $type: "color" },
47056
+ "800": { $value: "#242938", $type: "color" },
47057
+ "900": { $value: "#1A1D24", $type: "color" }
47058
+ },
47059
+ // Semantic -500s are TEXT stops on paper ('success'/'warning'/…
47060
+ // tones + Alert) — every 500 below clears AA on #FFFFFF (round 7
47061
+ // sweep; the pre-sweep pastel values measured 2.5–4.3).
47062
+ success: {
47063
+ "50": { $value: "#F6FFE0", $type: "color" },
47064
+ "100": { $value: "#E9FFB8", $type: "color" },
47065
+ "200": { $value: "#DBFF8F", $type: "color" },
47066
+ "500": { $value: "#517709", $type: "color" },
47067
+ "600": { $value: "#476809", $type: "color" },
47068
+ "700": { $value: "#35510B", $type: "color" },
47069
+ "800": { $value: "#28390B", $type: "color" }
47070
+ },
47071
+ warning: {
47072
+ "50": { $value: "#FFF4DD", $type: "color" },
47073
+ "100": { $value: "#FFE5AE", $type: "color" },
47074
+ "200": { $value: "#FFD37D", $type: "color" },
47075
+ "500": { $value: "#9C6205", $type: "color" },
47076
+ "600": { $value: "#7C4D04", $type: "color" },
47077
+ "700": { $value: "#5E3A03", $type: "color" },
47078
+ "800": { $value: "#3F2702", $type: "color" }
47079
+ },
47080
+ error: {
47081
+ "50": { $value: "#FFE9E8", $type: "color" },
47082
+ "100": { $value: "#FFC3C0", $type: "color" },
47083
+ "200": { $value: "#FF9F9C", $type: "color" },
47084
+ "500": { $value: "#CC2F2F", $type: "color" },
47085
+ "600": { $value: "#A62626", $type: "color" },
47086
+ "700": { $value: "#7E1D1D", $type: "color" },
47087
+ "800": { $value: "#5E1F1B", $type: "color" }
47088
+ },
47089
+ info: {
47090
+ "50": { $value: "#E5F7FF", $type: "color" },
47091
+ "100": { $value: "#BFECFF", $type: "color" },
47092
+ "200": { $value: "#92E0FF", $type: "color" },
47093
+ "500": { $value: "#0B739E", $type: "color" },
47094
+ "600": { $value: "#085572", $type: "color" },
47095
+ "700": { $value: "#06455D", $type: "color" },
47096
+ "800": { $value: "#0A3346", $type: "color" }
47097
+ },
47098
+ surface: { $value: "#FFFFFF", $type: "color" },
47099
+ onSurface: { $value: "#1A1D24", $type: "color" },
47100
+ surfaceVariant: { $value: "#F6F5EE", $type: "color" },
47101
+ onSurfaceVariant: { $value: "#4A4F5C", $type: "color" },
47102
+ container: { $value: "#FBFAF6", $type: "color" },
47103
+ onContainer: { $value: "#1A1D24", $type: "color" },
47104
+ outline: { $value: "rgba(26, 29, 36, 0.18)", $type: "color" },
47105
+ outlineVariant: { $value: "rgba(26, 29, 36, 0.10)", $type: "color" },
47106
+ onPrimary: { $value: "#0E1014", $type: "color" },
47107
+ primaryContainer: { $value: "#E9FFB8", $type: "color" },
47108
+ onPrimaryContainer: { $value: "#28390B", $type: "color" },
47109
+ onError: { $value: "#FFFFFF", $type: "color" },
47110
+ errorContainer: { $value: "#FFE9E8", $type: "color" },
47111
+ onErrorContainer: { $value: "#8A1F1F", $type: "color" },
47112
+ tertiary: { $value: "#D6247F", $type: "color" },
47113
+ onTertiary: { $value: "#FFFFFF", $type: "color" },
47114
+ tertiaryContainer: { $value: "#FFDCEE", $type: "color" },
47115
+ onTertiaryContainer: { $value: "#6B1240", $type: "color" }
47116
+ },
47117
+ ...shared8,
47118
+ shape: { radius: sharedRadius, shadow: lightShadows }
47119
+ };
47120
+ var theme8 = {
47121
+ light: guueyBrandLight,
47122
+ dark: guueyBrandDark
47123
+ };
46617
47124
  var themes = /* @__PURE__ */ new Map([
46618
47125
  ["ggui", theme],
46619
47126
  ["indigo", theme7],
@@ -46621,7 +47128,11 @@ var themes = /* @__PURE__ */ new Map([
46621
47128
  ["premium-cyberpunk", theme2],
46622
47129
  ["premium-zen", theme3],
46623
47130
  ["premium-neon-noir", theme4],
46624
- ["premium-botanical", theme5]
47131
+ ["premium-botanical", theme5],
47132
+ // Registered under the EXACT AppTheme.name the guuey widget stamps,
47133
+ // so the runtime's theme-name→registry binding (ggui#589 ask 3)
47134
+ // selects it as the base ladder with no sender-side change.
47135
+ ["guuey-brand-v1", theme8]
46625
47136
  ]);
46626
47137
  var parsedCache = /* @__PURE__ */ new Map();
46627
47138
  function resolveMode(reg, requested) {
@@ -46723,26 +47234,31 @@ function getScopedCssTokens(scopeClass, mode = "light") {
46723
47234
  return getScopedThemeCss(getDefaultThemeId(), scopeClass, mode);
46724
47235
  }
46725
47236
  function getScopedThemeCss(themeId, scopeClass, mode = "light") {
46726
- const theme8 = getTheme(themeId, mode);
46727
- if (!theme8) {
47237
+ const theme9 = getTheme(themeId, mode);
47238
+ if (!theme9) {
46728
47239
  const defaultId = getDefaultThemeId();
46729
47240
  if (themeId === defaultId)
46730
47241
  return "";
46731
47242
  return getScopedThemeCss(defaultId, scopeClass, mode);
46732
47243
  }
46733
- const primary500 = resolvePrimary500Hex(theme8.cssVariables);
46734
- const scoped = withColorMixFallback(theme8.cssVariables.replace(/^:root\s*\{/, `.${scopeClass} {`), `.${scopeClass}`, primary500);
47244
+ const primary500 = resolvePrimary500Hex(theme9.cssVariables);
47245
+ const scoped = withColorMixFallback(theme9.cssVariables.replace(/^:root\s*\{/, `.${scopeClass} {`), `.${scopeClass}`, primary500);
46735
47246
  const baseInherits = `.${scopeClass} {
46736
47247
  font-family: var(--ggui-font-family-sans);
46737
47248
  color: var(--ggui-color-onSurface);
46738
47249
  background-color: transparent;
46739
47250
  }`;
46740
47251
  const gradientTokens = buildGradientTokens(scopeClass, primary500);
47252
+ const framelessRule = theme9.metadata?.frameless === true ? `
47253
+ .${scopeClass} > :where(:not(style)) { border: none !important; }` : "";
46741
47254
  return `${scoped}
46742
47255
  ${baseInherits}
46743
47256
  ${gradientTokens}
46744
- ${theme8.cssKeyframes}
46745
- .${scopeClass} *, .${scopeClass} *::before, .${scopeClass} *::after { box-sizing: border-box; }
47257
+ ${theme9.cssKeyframes}
47258
+ ${structuralScaffolding(scopeClass)}${framelessRule}`;
47259
+ }
47260
+ function structuralScaffolding(scopeClass) {
47261
+ return `.${scopeClass} *, .${scopeClass} *::before, .${scopeClass} *::after { box-sizing: border-box; }
46746
47262
  .${scopeClass} h1, .${scopeClass} h2, .${scopeClass} h3, .${scopeClass} h4, .${scopeClass} h5, .${scopeClass} h6, .${scopeClass} button, .${scopeClass} input, .${scopeClass} textarea, .${scopeClass} select { font-family: inherit; }`;
46747
47263
  }
46748
47264
  function buildGradientTokens(scopeClass, primary500Hex) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggui-ai/dev-stack",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Shared local dev engine for the ggui protocol: local UI registry discovery, compile-on-demand, filesystem watcher with SSE, and a read-only HTTP surface for dev tooling. Framework-neutral — agent runtime supervision plugs in via an adapter seam, so no agent SDK is hardcoded.",
5
5
  "keywords": [
6
6
  "ggui",
@@ -28,9 +28,9 @@
28
28
  "dependencies": {
29
29
  "chokidar": "^4.0.3",
30
30
  "esbuild": "^0.25.12",
31
- "@ggui-ai/project-config": "0.10.0",
32
- "@ggui-ai/agent-runtime": "0.10.0",
33
- "@ggui-ai/ui-registry": "0.10.0"
31
+ "@ggui-ai/agent-runtime": "0.12.0",
32
+ "@ggui-ai/ui-registry": "0.12.0",
33
+ "@ggui-ai/project-config": "0.12.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^24.0.0",
@@ -40,9 +40,9 @@
40
40
  "react-dom": "^19.0.0",
41
41
  "typescript": "^5.0.0",
42
42
  "vitest": "^3.2.6",
43
- "@ggui-ai/mcp-apps-react": "0.10.0",
44
- "@ggui-ai/design": "0.10.0",
45
- "@ggui-ai/wire": "0.10.0"
43
+ "@ggui-ai/design": "0.12.0",
44
+ "@ggui-ai/mcp-apps-react": "0.12.0",
45
+ "@ggui-ai/wire": "0.12.0"
46
46
  },
47
47
  "repository": {
48
48
  "type": "git",