@ggui-ai/ui-visual-tester 0.11.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.
@@ -20288,7 +20288,10 @@
20288
20288
  var variantStyles = {
20289
20289
  primary: {
20290
20290
  backgroundColor: "var(--ggui-color-primary-600, #0284c7)",
20291
- color: "#ffffff",
20291
+ // The on-accent PAIR, never a literal (ggui#589 round 7): a theme
20292
+ // whose primary is bright (slime) pairs dark ink via onPrimary —
20293
+ // hardcoded white was unreadable on it.
20294
+ color: "var(--ggui-color-onPrimary, #ffffff)",
20292
20295
  border: "none"
20293
20296
  },
20294
20297
  secondary: {
@@ -20308,7 +20311,7 @@
20308
20311
  },
20309
20312
  danger: {
20310
20313
  backgroundColor: "var(--ggui-color-error-600, #dc2626)",
20311
- color: "#ffffff",
20314
+ color: "var(--ggui-color-onError, #ffffff)",
20312
20315
  border: "none"
20313
20316
  }
20314
20317
  };
@@ -20496,7 +20499,7 @@
20496
20499
  alignItems: "center",
20497
20500
  justifyContent: "center",
20498
20501
  transition: "all 0.2s"
20499
- }, children: (checked || indeterminate) && (0, import_jsx_runtime10.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", style: { color: "#ffffff" }, children: indeterminate ? (0, import_jsx_runtime10.jsx)("path", { d: "M2.5 6H9.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) : (0, import_jsx_runtime10.jsx)("path", { d: "M2.5 6L5 8.5L9.5 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })] }), (label || description) && (0, import_jsx_runtime10.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [label && (0, import_jsx_runtime10.jsx)("span", { style: {
20502
+ }, children: (checked || indeterminate) && (0, import_jsx_runtime10.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_runtime10.jsx)("path", { d: "M2.5 6H9.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) : (0, import_jsx_runtime10.jsx)("path", { d: "M2.5 6L5 8.5L9.5 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) })] }), (label || description) && (0, import_jsx_runtime10.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "2px" }, children: [label && (0, import_jsx_runtime10.jsx)("span", { style: {
20500
20503
  fontSize: "var(--ggui-font-size-sm, 14px)",
20501
20504
  fontWeight: "var(--ggui-font-weight-medium, 500)",
20502
20505
  color: "var(--ggui-color-onSurfaceVariant, #52525b)"
@@ -25073,7 +25076,9 @@
25073
25076
  left: coords.left,
25074
25077
  transform: getTransform(),
25075
25078
  backgroundColor: "var(--ggui-color-onSurface, #18181b)",
25076
- color: "#ffffff",
25079
+ // Inverse pair: text on the inverted (onSurface) ground is
25080
+ // the surface color — white was only right for light themes.
25081
+ color: "var(--ggui-color-surface, #ffffff)",
25077
25082
  padding: "6px 10px",
25078
25083
  borderRadius: "var(--ggui-shape-radius-md, 8px)",
25079
25084
  fontSize: "var(--ggui-font-size-xs, 12px)",
@@ -25234,7 +25239,7 @@
25234
25239
  if (variant === "pills") {
25235
25240
  return {
25236
25241
  ...base,
25237
- color: isActive ? "#ffffff" : "var(--ggui-color-onSurfaceVariant, #52525b)",
25242
+ color: isActive ? "var(--ggui-color-onPrimary, #ffffff)" : "var(--ggui-color-onSurfaceVariant, #52525b)",
25238
25243
  backgroundColor: isActive ? "var(--ggui-color-primary-600, #0284c7)" : "transparent",
25239
25244
  borderRadius: "var(--ggui-shape-radius-md, 6px)"
25240
25245
  };
@@ -42344,7 +42349,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
42344
42349
 
42345
42350
  // ../protocol/dist/gadgets/stdlib-gadgets.js
42346
42351
  var STDLIB_GADGETS_PACKAGE = "@ggui-ai/gadgets";
42347
- var STDLIB_GADGETS_VERSION = "0.11.0";
42352
+ var STDLIB_GADGETS_VERSION = "0.12.0";
42348
42353
  var STDLIB_GADGETS = [
42349
42354
  {
42350
42355
  package: STDLIB_GADGETS_PACKAGE,
@@ -43108,14 +43113,29 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
43108
43113
  * existing props back believing it changed the UI, and this field is
43109
43114
  * its feedback channel.
43110
43115
  */
43111
- warning: external_exports.string().optional()
43116
+ warning: external_exports.string().optional(),
43117
+ /**
43118
+ * Schema attestation (ggui#560): identity hash of the enforced props
43119
+ * schema this mutation was validated against — the same schema the
43120
+ * paired handshake disclosed. Present when the session declares a
43121
+ * `propsSpec`; equal to the handshake's `propsSchemaHash` under the
43122
+ * session-continuity guarantee, so a mismatch is the observable form
43123
+ * of a contract changing mid-session.
43124
+ */
43125
+ propsSchemaHash: external_exports.string().optional(),
43126
+ /** Present with `propsSchemaHash`; same profile classifier as the handshake's. */
43127
+ propsSchemaProfile: external_exports.string().optional()
43112
43128
  });
43113
43129
  var amendOutputSchema = external_exports.object({
43114
43130
  sessionId: external_exports.string(),
43115
43131
  updated: external_exports.boolean(),
43116
43132
  resourceUri: external_exports.string(),
43117
43133
  /** Same no-op feedback channel as ggui_update's `warning`. */
43118
- warning: external_exports.string().optional()
43134
+ warning: external_exports.string().optional(),
43135
+ /** Schema attestation (ggui#560) — same semantics as ggui_update's. */
43136
+ propsSchemaHash: external_exports.string().optional(),
43137
+ /** Present with `propsSchemaHash`. */
43138
+ propsSchemaProfile: external_exports.string().optional()
43119
43139
  });
43120
43140
  var declareToolCatalogInputSchema = external_exports.object({
43121
43141
  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.")
@@ -43279,10 +43299,27 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
43279
43299
  var GGUI_CSS_VAR_KEY_RE = /^--ggui-[a-zA-Z0-9-]+$/;
43280
43300
  var CSS_VALUE_SAFE_RE = /^[^;{}<>@]*$/;
43281
43301
  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");
43302
+ 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)");
43282
43303
  var appThemeSchema = external_exports.object({
43283
43304
  mode: external_exports.enum(["light", "dark"]),
43284
- 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)"),
43285
- name: external_exports.string().min(1).max(64).optional()
43305
+ cssVariables: cssVariableMap,
43306
+ name: external_exports.string().min(1).max(64).optional(),
43307
+ /**
43308
+ * The REGISTERED base ladder, delivered (runtime theme
43309
+ * registration): both modes' resolved variable sets ride the
43310
+ * envelope so a mid-session mode switch is a local operation and
43311
+ * delivery never depends on the iframe being able to fetch. The
43312
+ * renderer injects the mode-selected set BELOW `cssVariables` (the
43313
+ * per-app overlay) in the documented precedence. `documentHash` is
43314
+ * the registration's identity: it joins painted ladders to
43315
+ * registration records, and a receiver holding the hash may be
43316
+ * served a future envelope without the variable sets.
43317
+ */
43318
+ base: external_exports.object({
43319
+ documentHash: external_exports.string().regex(/^[0-9a-f]{64}$/, "documentHash must be sha256 lowercase hex"),
43320
+ light: cssVariableMap,
43321
+ dark: cssVariableMap
43322
+ }).strict().optional()
43286
43323
  }).strict();
43287
43324
 
43288
43325
  // ../protocol/dist/registry/canonicalize-contract.js
@@ -43989,6 +44026,115 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
43989
44026
  return code.replace(/__GGUI_META__[\s\S]*?__GGUI_META_END__/g, "").replace(/__GGUI_STREAM_SPEC__[\s\S]*?__GGUI_STREAM_SPEC_END__/g, "");
43990
44027
  }
43991
44028
 
44029
+ // ../design/dist/themes/consumed-tokens.manifest.json
44030
+ var consumed_tokens_manifest_default = {
44031
+ version: 1,
44032
+ tokens: [
44033
+ "--ggui-color-container",
44034
+ "--ggui-color-error-100",
44035
+ "--ggui-color-error-200",
44036
+ "--ggui-color-error-50",
44037
+ "--ggui-color-error-500",
44038
+ "--ggui-color-error-600",
44039
+ "--ggui-color-error-700",
44040
+ "--ggui-color-error-800",
44041
+ "--ggui-color-info-100",
44042
+ "--ggui-color-info-200",
44043
+ "--ggui-color-info-50",
44044
+ "--ggui-color-info-500",
44045
+ "--ggui-color-info-700",
44046
+ "--ggui-color-info-800",
44047
+ "--ggui-color-neutral-100",
44048
+ "--ggui-color-neutral-200",
44049
+ "--ggui-color-neutral-300",
44050
+ "--ggui-color-neutral-400",
44051
+ "--ggui-color-neutral-50",
44052
+ "--ggui-color-neutral-500",
44053
+ "--ggui-color-neutral-600",
44054
+ "--ggui-color-neutral-800",
44055
+ "--ggui-color-onContainer",
44056
+ "--ggui-color-onError",
44057
+ "--ggui-color-onPrimary",
44058
+ "--ggui-color-onSurface",
44059
+ "--ggui-color-onSurfaceVariant",
44060
+ "--ggui-color-outline",
44061
+ "--ggui-color-outlineVariant",
44062
+ "--ggui-color-primary",
44063
+ "--ggui-color-primary-100",
44064
+ "--ggui-color-primary-200",
44065
+ "--ggui-color-primary-300",
44066
+ "--ggui-color-primary-400",
44067
+ "--ggui-color-primary-50",
44068
+ "--ggui-color-primary-500",
44069
+ "--ggui-color-primary-600",
44070
+ "--ggui-color-primary-700",
44071
+ "--ggui-color-primary-800",
44072
+ "--ggui-color-primary-900",
44073
+ "--ggui-color-success-100",
44074
+ "--ggui-color-success-200",
44075
+ "--ggui-color-success-50",
44076
+ "--ggui-color-success-500",
44077
+ "--ggui-color-success-700",
44078
+ "--ggui-color-success-800",
44079
+ "--ggui-color-surface",
44080
+ "--ggui-color-surface-gradient",
44081
+ "--ggui-color-surface-subtle",
44082
+ "--ggui-color-surface-sunken",
44083
+ "--ggui-color-surfaceVariant",
44084
+ "--ggui-color-warning-100",
44085
+ "--ggui-color-warning-200",
44086
+ "--ggui-color-warning-50",
44087
+ "--ggui-color-warning-500",
44088
+ "--ggui-color-warning-700",
44089
+ "--ggui-color-warning-800",
44090
+ "--ggui-flash-color",
44091
+ "--ggui-font-family-mono",
44092
+ "--ggui-font-family-sans",
44093
+ "--ggui-font-lineHeight-normal",
44094
+ "--ggui-font-size-2xl",
44095
+ "--ggui-font-size-3xl",
44096
+ "--ggui-font-size-4xl",
44097
+ "--ggui-font-size-base",
44098
+ "--ggui-font-size-lg",
44099
+ "--ggui-font-size-sm",
44100
+ "--ggui-font-size-xl",
44101
+ "--ggui-font-size-xs",
44102
+ "--ggui-font-weight-bold",
44103
+ "--ggui-font-weight-medium",
44104
+ "--ggui-font-weight-normal",
44105
+ "--ggui-font-weight-semibold",
44106
+ "--ggui-radius-md",
44107
+ "--ggui-radius-sm",
44108
+ "--ggui-shape-radius-full",
44109
+ "--ggui-shape-radius-lg",
44110
+ "--ggui-shape-radius-md",
44111
+ "--ggui-shape-radius-sm",
44112
+ "--ggui-shape-radius-xl",
44113
+ "--ggui-shape-shadow-lg",
44114
+ "--ggui-shape-shadow-md",
44115
+ "--ggui-shape-shadow-sm",
44116
+ "--ggui-shape-shadow-xl",
44117
+ "--ggui-spacing-1",
44118
+ "--ggui-spacing-10",
44119
+ "--ggui-spacing-12",
44120
+ "--ggui-spacing-2",
44121
+ "--ggui-spacing-2xl",
44122
+ "--ggui-spacing-3",
44123
+ "--ggui-spacing-4",
44124
+ "--ggui-spacing-5",
44125
+ "--ggui-spacing-6",
44126
+ "--ggui-spacing-8",
44127
+ "--ggui-spacing-lg",
44128
+ "--ggui-spacing-md",
44129
+ "--ggui-spacing-sm",
44130
+ "--ggui-spacing-xl",
44131
+ "--ggui-spacing-xs"
44132
+ ]
44133
+ };
44134
+
44135
+ // ../design/dist/themes/consumed-tokens.js
44136
+ var consumedTokenManifest = consumed_tokens_manifest_default.tokens;
44137
+
43992
44138
  // ../design/dist/themes/definitions/_shared.js
43993
44139
  var standardSemanticScales = {
43994
44140
  light: {
@@ -44337,7 +44483,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44337
44483
  "50": { $value: "#fbf3e0", $type: "color" },
44338
44484
  "100": { $value: "#f3e1b0", $type: "color" },
44339
44485
  "200": { $value: "#e6c46e", $type: "color" },
44340
- "500": { $value: "#a87b0e", $type: "color" },
44486
+ "500": { $value: "#8e680c", $type: "color" },
44341
44487
  // draft
44342
44488
  "600": { $value: "#86620b", $type: "color" },
44343
44489
  "700": { $value: "#654a08", $type: "color" },
@@ -44347,7 +44493,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44347
44493
  "50": { $value: "#fbe7e3", $type: "color" },
44348
44494
  "100": { $value: "#f4bbb1", $type: "color" },
44349
44495
  "200": { $value: "#ea8a7a", $type: "color" },
44350
- "500": { $value: "#d93822", $type: "color" },
44496
+ "500": { $value: "#cc3520", $type: "color" },
44351
44497
  // signal
44352
44498
  "600": { $value: "#ae2d1b", $type: "color" },
44353
44499
  "700": { $value: "#822214", $type: "color" },
@@ -44717,7 +44863,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44717
44863
  "400": { $value: "#22d3ee", $type: "color" },
44718
44864
  "500": { $value: "#06b6d4", $type: "color" },
44719
44865
  "600": { $value: "#0891b2", $type: "color" },
44720
- "700": { $value: "#0e7490", $type: "color" },
44866
+ "700": { $value: "#1085a5", $type: "color" },
44721
44867
  "800": { $value: "#155e75", $type: "color" },
44722
44868
  "900": { $value: "#164e63", $type: "color" }
44723
44869
  },
@@ -44727,7 +44873,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44727
44873
  "200": { $value: "#1a1a24", $type: "color" },
44728
44874
  "300": { $value: "#25252f", $type: "color" },
44729
44875
  "400": { $value: "#3a3a48", $type: "color" },
44730
- "500": { $value: "#55556a", $type: "color" },
44876
+ "500": { $value: "#5d5d74", $type: "color" },
44731
44877
  "600": { $value: "#8888a0", $type: "color" },
44732
44878
  "700": { $value: "#aaaabe", $type: "color" },
44733
44879
  "800": { $value: "#d0d0e0", $type: "color" },
@@ -44854,7 +45000,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44854
45000
  "200": { $value: "#111118", $type: "color" },
44855
45001
  "300": { $value: "#1a1a24", $type: "color" },
44856
45002
  "400": { $value: "#3a3a48", $type: "color" },
44857
- "500": { $value: "#55556a", $type: "color" },
45003
+ "500": { $value: "#5a5a70", $type: "color" },
44858
45004
  "600": { $value: "#8888a0", $type: "color" },
44859
45005
  "700": { $value: "#aaaabe", $type: "color" },
44860
45006
  "800": { $value: "#d0d0e0", $type: "color" },
@@ -45088,7 +45234,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45088
45234
  "200": { $value: "#e7e4de", $type: "color" },
45089
45235
  "300": { $value: "#d5d0c8", $type: "color" },
45090
45236
  "400": { $value: "#b8b0a4", $type: "color" },
45091
- "500": { $value: "#9a9084", $type: "color" },
45237
+ "500": { $value: "#988d81", $type: "color" },
45092
45238
  "600": { $value: "#7a7068", $type: "color" },
45093
45239
  "700": { $value: "#5e5650", $type: "color" },
45094
45240
  "800": { $value: "#3e3a36", $type: "color" },
@@ -45101,7 +45247,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45101
45247
  "50": { $type: "color", $value: "#f0f4ee" },
45102
45248
  "100": { $type: "color", $value: "#dde6d8" },
45103
45249
  "200": { $type: "color", $value: "#c6d4be" },
45104
- "500": { $type: "color", $value: "#6b8f5e" },
45250
+ "500": { $type: "color", $value: "#5b7950" },
45105
45251
  "600": { $type: "color", $value: "#58754d" },
45106
45252
  "700": { $type: "color", $value: "#43583a" },
45107
45253
  "800": { $type: "color", $value: "#2f3e29" }
@@ -45110,7 +45256,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45110
45256
  "50": { $type: "color", $value: "#faf6ea" },
45111
45257
  "100": { $type: "color", $value: "#f4ebcb" },
45112
45258
  "200": { $type: "color", $value: "#ecdda4" },
45113
- "500": { $type: "color", $value: "#c9a84c" },
45259
+ "500": { $type: "color", $value: "#886f29" },
45114
45260
  "600": { $type: "color", $value: "#a88a3a" },
45115
45261
  "700": { $type: "color", $value: "#7e672c" },
45116
45262
  "800": { $type: "color", $value: "#59481f" }
@@ -45238,7 +45384,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45238
45384
  "50": { $type: "color", $value: "#faeae9" },
45239
45385
  "100": { $type: "color", $value: "#f1cac8" },
45240
45386
  "200": { $type: "color", $value: "#e4a5a1" },
45241
- "500": { $type: "color", $value: "#cf6f6a" },
45387
+ "500": { $type: "color", $value: "#d17570" },
45242
45388
  "600": { $type: "color", $value: "#a85753" },
45243
45389
  "700": { $type: "color", $value: "#7d403c" },
45244
45390
  "800": { $type: "color", $value: "#552a27" }
@@ -45439,7 +45585,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45439
45585
  "400": { $value: "#f472b6", $type: "color" },
45440
45586
  "500": { $value: "#ec4899", $type: "color" },
45441
45587
  "600": { $value: "#db2777", $type: "color" },
45442
- "700": { $value: "#be185d", $type: "color" },
45588
+ "700": { $value: "#e42574", $type: "color" },
45443
45589
  "800": { $value: "#9d174d", $type: "color" },
45444
45590
  "900": { $value: "#831843", $type: "color" }
45445
45591
  },
@@ -45449,7 +45595,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45449
45595
  "200": { $value: "#19191e", $type: "color" },
45450
45596
  "300": { $value: "#232329", $type: "color" },
45451
45597
  "400": { $value: "#3b3b44", $type: "color" },
45452
- "500": { $value: "#5a5a68", $type: "color" },
45598
+ "500": { $value: "#5e5e6c", $type: "color" },
45453
45599
  "600": { $value: "#8a8a9a", $type: "color" },
45454
45600
  "700": { $value: "#b0b0be", $type: "color" },
45455
45601
  "800": { $value: "#d4d4de", $type: "color" },
@@ -45481,7 +45627,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45481
45627
  outline: { $value: "#3b3b44", $type: "color" },
45482
45628
  outlineVariant: { $value: "#232329", $type: "color" },
45483
45629
  // Primary role pair — onPrimary is deep noir so hot pink CTAs pop.
45484
- onPrimary: { $value: "#09090b", $type: "color" },
45630
+ onPrimary: { $value: "#ffffff", $type: "color" },
45485
45631
  primaryContainer: { $value: "#9d174d", $type: "color" },
45486
45632
  // primary-800
45487
45633
  onPrimaryContainer: { $value: "#fce7f3", $type: "color" },
@@ -45741,15 +45887,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45741
45887
  "200": { $value: "#f8f0df", $type: "color" },
45742
45888
  "300": { $value: "#f0e4c9", $type: "color" },
45743
45889
  "400": { $value: "#dccba5", $type: "color" },
45744
- "500": { $value: "#bfaa80", $type: "color" },
45890
+ "500": { $value: "#aa8e56", $type: "color" },
45745
45891
  "600": { $value: "#9a8660", $type: "color" },
45746
45892
  "700": { $value: "#746448", $type: "color" },
45747
45893
  "800": { $value: "#504530", $type: "color" },
45748
45894
  "900": { $value: "#352e20", $type: "color" }
45749
45895
  },
45750
- success: standardSemanticScales.light.success,
45751
- warning: standardSemanticScales.light.warning,
45752
- error: standardSemanticScales.light.error,
45896
+ // #594 founder-approved light override (2026-08-22): shared success-500
45897
+ // is sub-AA as TEXT on botanical's warm paper — override the 500 stop
45898
+ // only, light only (same pattern as warning/error below).
45899
+ success: {
45900
+ ...standardSemanticScales.light.success,
45901
+ "500": { $type: "color", $value: "#17843f" }
45902
+ },
45903
+ // #594 founder-approved light overrides (2026-08-22): the shared
45904
+ // standardSemantic 500s are sub-AA as TEXT on botanical's warm paper
45905
+ // (#fefcf8) — override ONLY the 500 stop, only in light; the shared
45906
+ // scales stay untouched for every other theme and for dark.
45907
+ warning: {
45908
+ ...standardSemanticScales.light.warning,
45909
+ "500": { $type: "color", $value: "#a06707" }
45910
+ },
45911
+ error: {
45912
+ ...standardSemanticScales.light.error,
45913
+ "500": { $type: "color", $value: "#e51414" }
45914
+ },
45753
45915
  info: standardSemanticScales.light.info,
45754
45916
  // Semantic roles
45755
45917
  surface: { $value: "#fefcf8", $type: "color" },
@@ -45761,7 +45923,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45761
45923
  outline: { $value: "#f0e4c9", $type: "color" },
45762
45924
  outlineVariant: { $value: "#f8f0df", $type: "color" },
45763
45925
  // Primary role pair — onPrimary is cream for the leaf-green brand hex.
45764
- onPrimary: { $value: "#fefcf8", $type: "color" },
45926
+ onPrimary: { $value: "#332407", $type: "color" },
45765
45927
  primaryContainer: { $value: "#dcfce7", $type: "color" },
45766
45928
  // primary-100
45767
45929
  onPrimaryContainer: { $value: "#14532d", $type: "color" },
@@ -46058,7 +46220,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46058
46220
  "50": { $value: "#f4f7ec", $type: "color" },
46059
46221
  "100": { $value: "#e3ecd0", $type: "color" },
46060
46222
  "200": { $value: "#c8d8a5", $type: "color" },
46061
- "500": { $value: "#6b8e3d", $type: "color" },
46223
+ "500": { $value: "#5c7a35", $type: "color" },
46062
46224
  // brand: olive
46063
46225
  "600": { $value: "#587634", $type: "color" },
46064
46226
  "700": { $value: "#465c29", $type: "color" },
@@ -46068,7 +46230,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46068
46230
  "50": { $value: "#fbf3e3", $type: "color" },
46069
46231
  "100": { $value: "#f6e2bb", $type: "color" },
46070
46232
  "200": { $value: "#eac786", $type: "color" },
46071
- "500": { $value: "#c98e2e", $type: "color" },
46233
+ "500": { $value: "#956922", $type: "color" },
46072
46234
  // brand: amber-orange
46073
46235
  "600": { $value: "#a87725", $type: "color" },
46074
46236
  "700": { $value: "#825c1d", $type: "color" },
@@ -46108,7 +46270,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46108
46270
  outline: { $value: "#dad8cc", $type: "color" },
46109
46271
  outlineVariant: { $value: "#ebe9df", $type: "color" },
46110
46272
  // Primary role pair — text on Crail CTAs is ivory, container is Crail-50.
46111
- onPrimary: { $value: "#faf9f5", $type: "color" },
46273
+ onPrimary: { $value: "#15130a", $type: "color" },
46112
46274
  // Ivory
46113
46275
  primaryContainer: { $value: "#fbf2ee", $type: "color" },
46114
46276
  // primary-50
@@ -46219,7 +46381,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46219
46381
  "50": { $value: "#2a1410", $type: "color" },
46220
46382
  "100": { $value: "#52271f", $type: "color" },
46221
46383
  "200": { $value: "#7a3a2e", $type: "color" },
46222
- "500": { $value: "#d56b59", $type: "color" },
46384
+ "500": { $value: "#d7705f", $type: "color" },
46223
46385
  // brand: brick (lifted for dark)
46224
46386
  "600": { $value: "#df8576", $type: "color" },
46225
46387
  "700": { $value: "#e3a294", $type: "color" },
@@ -46466,7 +46628,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46466
46628
  "50": { $value: "#ecfdf5", $type: "color" },
46467
46629
  "100": { $value: "#d1fae5", $type: "color" },
46468
46630
  "200": { $value: "#a7f3d0", $type: "color" },
46469
- "500": { $value: "#0e9d6e", $type: "color" },
46631
+ "500": { $value: "#0b815a", $type: "color" },
46470
46632
  // brand emerald
46471
46633
  "600": { $value: "#0b8259", $type: "color" },
46472
46634
  "700": { $value: "#086847", $type: "color" },
@@ -46476,7 +46638,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46476
46638
  "50": { $value: "#fff8eb", $type: "color" },
46477
46639
  "100": { $value: "#fdecc8", $type: "color" },
46478
46640
  "200": { $value: "#fbd897", $type: "color" },
46479
- "500": { $value: "#e08515", $type: "color" },
46641
+ "500": { $value: "#a66210", $type: "color" },
46480
46642
  // brand amber
46481
46643
  "600": { $value: "#b86b0e", $type: "color" },
46482
46644
  "700": { $value: "#90530a", $type: "color" },
@@ -46587,7 +46749,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46587
46749
  "300": { $value: "#2a2839", $type: "color" },
46588
46750
  // outline
46589
46751
  "400": { $value: "#3e3c50", $type: "color" },
46590
- "500": { $value: "#5e5c70", $type: "color" },
46752
+ "500": { $value: "#636176", $type: "color" },
46591
46753
  // muted
46592
46754
  "600": { $value: "#8b8898", $type: "color" },
46593
46755
  "700": { $value: "#b8b6c2", $type: "color" },
@@ -46962,7 +47124,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46962
47124
  "400": { $value: "#B8FF3A", $type: "color" },
46963
47125
  "500": { $value: "#9FE01C", $type: "color" },
46964
47126
  "600": { $value: "#7DB214", $type: "color" },
46965
- "700": { $value: "#5C850D", $type: "color" },
47127
+ // 700 is the 'emphasized' TEXT stop — AA on paper (round 7 sweep).
47128
+ "700": { $value: "#476809", $type: "color" },
46966
47129
  "800": { $value: "#3F5A11", $type: "color" },
46967
47130
  "900": { $value: "#28390B", $type: "color" }
46968
47131
  },
@@ -46978,41 +47141,44 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46978
47141
  "800": { $value: "#242938", $type: "color" },
46979
47142
  "900": { $value: "#1A1D24", $type: "color" }
46980
47143
  },
47144
+ // Semantic -500s are TEXT stops on paper ('success'/'warning'/…
47145
+ // tones + Alert) — every 500 below clears AA on #FFFFFF (round 7
47146
+ // sweep; the pre-sweep pastel values measured 2.5–4.3).
46981
47147
  success: {
46982
47148
  "50": { $value: "#F6FFE0", $type: "color" },
46983
47149
  "100": { $value: "#E9FFB8", $type: "color" },
46984
47150
  "200": { $value: "#DBFF8F", $type: "color" },
46985
- "500": { $value: "#7DB214", $type: "color" },
46986
- "600": { $value: "#5C850D", $type: "color" },
46987
- "700": { $value: "#476809", $type: "color" },
47151
+ "500": { $value: "#517709", $type: "color" },
47152
+ "600": { $value: "#476809", $type: "color" },
47153
+ "700": { $value: "#35510B", $type: "color" },
46988
47154
  "800": { $value: "#28390B", $type: "color" }
46989
47155
  },
46990
47156
  warning: {
46991
47157
  "50": { $value: "#FFF4DD", $type: "color" },
46992
47158
  "100": { $value: "#FFE5AE", $type: "color" },
46993
47159
  "200": { $value: "#FFD37D", $type: "color" },
46994
- "500": { $value: "#D98A0A", $type: "color" },
46995
- "600": { $value: "#A96A06", $type: "color" },
46996
- "700": { $value: "#7C4D04", $type: "color" },
46997
- "800": { $value: "#523203", $type: "color" }
47160
+ "500": { $value: "#9C6205", $type: "color" },
47161
+ "600": { $value: "#7C4D04", $type: "color" },
47162
+ "700": { $value: "#5E3A03", $type: "color" },
47163
+ "800": { $value: "#3F2702", $type: "color" }
46998
47164
  },
46999
47165
  error: {
47000
47166
  "50": { $value: "#FFE9E8", $type: "color" },
47001
47167
  "100": { $value: "#FFC3C0", $type: "color" },
47002
47168
  "200": { $value: "#FF9F9C", $type: "color" },
47003
- "500": { $value: "#E23B3B", $type: "color" },
47004
- "600": { $value: "#B62C2C", $type: "color" },
47005
- "700": { $value: "#8A1F1F", $type: "color" },
47169
+ "500": { $value: "#CC2F2F", $type: "color" },
47170
+ "600": { $value: "#A62626", $type: "color" },
47171
+ "700": { $value: "#7E1D1D", $type: "color" },
47006
47172
  "800": { $value: "#5E1F1B", $type: "color" }
47007
47173
  },
47008
47174
  info: {
47009
47175
  "50": { $value: "#E5F7FF", $type: "color" },
47010
47176
  "100": { $value: "#BFECFF", $type: "color" },
47011
47177
  "200": { $value: "#92E0FF", $type: "color" },
47012
- "500": { $value: "#0E93C9", $type: "color" },
47013
- "600": { $value: "#0B739E", $type: "color" },
47014
- "700": { $value: "#085572", $type: "color" },
47015
- "800": { $value: "#12455C", $type: "color" }
47178
+ "500": { $value: "#0B739E", $type: "color" },
47179
+ "600": { $value: "#085572", $type: "color" },
47180
+ "700": { $value: "#06455D", $type: "color" },
47181
+ "800": { $value: "#0A3346", $type: "color" }
47016
47182
  },
47017
47183
  surface: { $value: "#FFFFFF", $type: "color" },
47018
47184
  onSurface: { $value: "#1A1D24", $type: "color" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggui-ai/ui-visual-tester",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Behavioral validator for ggui-generated component code. Renders a component in real Chromium via Playwright, clicks each action declared in its contract, and verifies the action actually does something — mutating bound state or dispatching to the agent. Catches buttons wired to no-op handlers that structural validators miss. Playwright is an optional peer dependency, injected by the caller.",
5
5
  "keywords": [
6
6
  "ggui",
@@ -48,9 +48,9 @@
48
48
  "dependencies": {
49
49
  "react": "^19.0.0",
50
50
  "react-dom": "^19.0.0",
51
- "@ggui-ai/design": "0.11.0",
52
- "@ggui-ai/protocol": "0.11.0",
53
- "@ggui-ai/wire": "0.11.0"
51
+ "@ggui-ai/design": "0.12.0",
52
+ "@ggui-ai/protocol": "0.12.0",
53
+ "@ggui-ai/wire": "0.12.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@playwright/test": "^1.60.0",