@ggui-ai/ui-visual-tester 0.11.0 → 0.13.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.13.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,114 @@ 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-onContainer",
44055
+ "--ggui-color-onError",
44056
+ "--ggui-color-onPrimary",
44057
+ "--ggui-color-onSurface",
44058
+ "--ggui-color-onSurfaceVariant",
44059
+ "--ggui-color-outline",
44060
+ "--ggui-color-outlineVariant",
44061
+ "--ggui-color-primary",
44062
+ "--ggui-color-primary-100",
44063
+ "--ggui-color-primary-200",
44064
+ "--ggui-color-primary-300",
44065
+ "--ggui-color-primary-400",
44066
+ "--ggui-color-primary-50",
44067
+ "--ggui-color-primary-500",
44068
+ "--ggui-color-primary-600",
44069
+ "--ggui-color-primary-700",
44070
+ "--ggui-color-primary-800",
44071
+ "--ggui-color-primary-900",
44072
+ "--ggui-color-success-100",
44073
+ "--ggui-color-success-200",
44074
+ "--ggui-color-success-50",
44075
+ "--ggui-color-success-500",
44076
+ "--ggui-color-success-700",
44077
+ "--ggui-color-success-800",
44078
+ "--ggui-color-surface",
44079
+ "--ggui-color-surface-gradient",
44080
+ "--ggui-color-surface-subtle",
44081
+ "--ggui-color-surface-sunken",
44082
+ "--ggui-color-surfaceVariant",
44083
+ "--ggui-color-warning-100",
44084
+ "--ggui-color-warning-200",
44085
+ "--ggui-color-warning-50",
44086
+ "--ggui-color-warning-500",
44087
+ "--ggui-color-warning-700",
44088
+ "--ggui-color-warning-800",
44089
+ "--ggui-flash-color",
44090
+ "--ggui-font-family-mono",
44091
+ "--ggui-font-family-sans",
44092
+ "--ggui-font-lineHeight-normal",
44093
+ "--ggui-font-size-2xl",
44094
+ "--ggui-font-size-3xl",
44095
+ "--ggui-font-size-4xl",
44096
+ "--ggui-font-size-base",
44097
+ "--ggui-font-size-lg",
44098
+ "--ggui-font-size-sm",
44099
+ "--ggui-font-size-xl",
44100
+ "--ggui-font-size-xs",
44101
+ "--ggui-font-weight-bold",
44102
+ "--ggui-font-weight-medium",
44103
+ "--ggui-font-weight-normal",
44104
+ "--ggui-font-weight-semibold",
44105
+ "--ggui-radius-md",
44106
+ "--ggui-radius-sm",
44107
+ "--ggui-shape-radius-full",
44108
+ "--ggui-shape-radius-lg",
44109
+ "--ggui-shape-radius-md",
44110
+ "--ggui-shape-radius-sm",
44111
+ "--ggui-shape-radius-xl",
44112
+ "--ggui-shape-shadow-lg",
44113
+ "--ggui-shape-shadow-md",
44114
+ "--ggui-shape-shadow-sm",
44115
+ "--ggui-shape-shadow-xl",
44116
+ "--ggui-spacing-1",
44117
+ "--ggui-spacing-10",
44118
+ "--ggui-spacing-12",
44119
+ "--ggui-spacing-2",
44120
+ "--ggui-spacing-2xl",
44121
+ "--ggui-spacing-3",
44122
+ "--ggui-spacing-4",
44123
+ "--ggui-spacing-5",
44124
+ "--ggui-spacing-6",
44125
+ "--ggui-spacing-8",
44126
+ "--ggui-spacing-lg",
44127
+ "--ggui-spacing-md",
44128
+ "--ggui-spacing-sm",
44129
+ "--ggui-spacing-xl",
44130
+ "--ggui-spacing-xs"
44131
+ ]
44132
+ };
44133
+
44134
+ // ../design/dist/themes/consumed-tokens.js
44135
+ var consumedTokenManifest = consumed_tokens_manifest_default.tokens;
44136
+
43992
44137
  // ../design/dist/themes/definitions/_shared.js
43993
44138
  var standardSemanticScales = {
43994
44139
  light: {
@@ -44337,7 +44482,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44337
44482
  "50": { $value: "#fbf3e0", $type: "color" },
44338
44483
  "100": { $value: "#f3e1b0", $type: "color" },
44339
44484
  "200": { $value: "#e6c46e", $type: "color" },
44340
- "500": { $value: "#a87b0e", $type: "color" },
44485
+ "500": { $value: "#8e680c", $type: "color" },
44341
44486
  // draft
44342
44487
  "600": { $value: "#86620b", $type: "color" },
44343
44488
  "700": { $value: "#654a08", $type: "color" },
@@ -44347,7 +44492,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44347
44492
  "50": { $value: "#fbe7e3", $type: "color" },
44348
44493
  "100": { $value: "#f4bbb1", $type: "color" },
44349
44494
  "200": { $value: "#ea8a7a", $type: "color" },
44350
- "500": { $value: "#d93822", $type: "color" },
44495
+ "500": { $value: "#cc3520", $type: "color" },
44351
44496
  // signal
44352
44497
  "600": { $value: "#ae2d1b", $type: "color" },
44353
44498
  "700": { $value: "#822214", $type: "color" },
@@ -44717,7 +44862,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44717
44862
  "400": { $value: "#22d3ee", $type: "color" },
44718
44863
  "500": { $value: "#06b6d4", $type: "color" },
44719
44864
  "600": { $value: "#0891b2", $type: "color" },
44720
- "700": { $value: "#0e7490", $type: "color" },
44865
+ "700": { $value: "#1085a5", $type: "color" },
44721
44866
  "800": { $value: "#155e75", $type: "color" },
44722
44867
  "900": { $value: "#164e63", $type: "color" }
44723
44868
  },
@@ -44727,7 +44872,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44727
44872
  "200": { $value: "#1a1a24", $type: "color" },
44728
44873
  "300": { $value: "#25252f", $type: "color" },
44729
44874
  "400": { $value: "#3a3a48", $type: "color" },
44730
- "500": { $value: "#55556a", $type: "color" },
44875
+ "500": { $value: "#5d5d74", $type: "color" },
44731
44876
  "600": { $value: "#8888a0", $type: "color" },
44732
44877
  "700": { $value: "#aaaabe", $type: "color" },
44733
44878
  "800": { $value: "#d0d0e0", $type: "color" },
@@ -44854,7 +44999,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
44854
44999
  "200": { $value: "#111118", $type: "color" },
44855
45000
  "300": { $value: "#1a1a24", $type: "color" },
44856
45001
  "400": { $value: "#3a3a48", $type: "color" },
44857
- "500": { $value: "#55556a", $type: "color" },
45002
+ "500": { $value: "#5a5a70", $type: "color" },
44858
45003
  "600": { $value: "#8888a0", $type: "color" },
44859
45004
  "700": { $value: "#aaaabe", $type: "color" },
44860
45005
  "800": { $value: "#d0d0e0", $type: "color" },
@@ -45088,7 +45233,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45088
45233
  "200": { $value: "#e7e4de", $type: "color" },
45089
45234
  "300": { $value: "#d5d0c8", $type: "color" },
45090
45235
  "400": { $value: "#b8b0a4", $type: "color" },
45091
- "500": { $value: "#9a9084", $type: "color" },
45236
+ "500": { $value: "#988d81", $type: "color" },
45092
45237
  "600": { $value: "#7a7068", $type: "color" },
45093
45238
  "700": { $value: "#5e5650", $type: "color" },
45094
45239
  "800": { $value: "#3e3a36", $type: "color" },
@@ -45101,7 +45246,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45101
45246
  "50": { $type: "color", $value: "#f0f4ee" },
45102
45247
  "100": { $type: "color", $value: "#dde6d8" },
45103
45248
  "200": { $type: "color", $value: "#c6d4be" },
45104
- "500": { $type: "color", $value: "#6b8f5e" },
45249
+ "500": { $type: "color", $value: "#5b7950" },
45105
45250
  "600": { $type: "color", $value: "#58754d" },
45106
45251
  "700": { $type: "color", $value: "#43583a" },
45107
45252
  "800": { $type: "color", $value: "#2f3e29" }
@@ -45110,7 +45255,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45110
45255
  "50": { $type: "color", $value: "#faf6ea" },
45111
45256
  "100": { $type: "color", $value: "#f4ebcb" },
45112
45257
  "200": { $type: "color", $value: "#ecdda4" },
45113
- "500": { $type: "color", $value: "#c9a84c" },
45258
+ "500": { $type: "color", $value: "#886f29" },
45114
45259
  "600": { $type: "color", $value: "#a88a3a" },
45115
45260
  "700": { $type: "color", $value: "#7e672c" },
45116
45261
  "800": { $type: "color", $value: "#59481f" }
@@ -45238,7 +45383,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45238
45383
  "50": { $type: "color", $value: "#faeae9" },
45239
45384
  "100": { $type: "color", $value: "#f1cac8" },
45240
45385
  "200": { $type: "color", $value: "#e4a5a1" },
45241
- "500": { $type: "color", $value: "#cf6f6a" },
45386
+ "500": { $type: "color", $value: "#d17570" },
45242
45387
  "600": { $type: "color", $value: "#a85753" },
45243
45388
  "700": { $type: "color", $value: "#7d403c" },
45244
45389
  "800": { $type: "color", $value: "#552a27" }
@@ -45439,7 +45584,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45439
45584
  "400": { $value: "#f472b6", $type: "color" },
45440
45585
  "500": { $value: "#ec4899", $type: "color" },
45441
45586
  "600": { $value: "#db2777", $type: "color" },
45442
- "700": { $value: "#be185d", $type: "color" },
45587
+ "700": { $value: "#e42574", $type: "color" },
45443
45588
  "800": { $value: "#9d174d", $type: "color" },
45444
45589
  "900": { $value: "#831843", $type: "color" }
45445
45590
  },
@@ -45449,7 +45594,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45449
45594
  "200": { $value: "#19191e", $type: "color" },
45450
45595
  "300": { $value: "#232329", $type: "color" },
45451
45596
  "400": { $value: "#3b3b44", $type: "color" },
45452
- "500": { $value: "#5a5a68", $type: "color" },
45597
+ "500": { $value: "#5e5e6c", $type: "color" },
45453
45598
  "600": { $value: "#8a8a9a", $type: "color" },
45454
45599
  "700": { $value: "#b0b0be", $type: "color" },
45455
45600
  "800": { $value: "#d4d4de", $type: "color" },
@@ -45481,7 +45626,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45481
45626
  outline: { $value: "#3b3b44", $type: "color" },
45482
45627
  outlineVariant: { $value: "#232329", $type: "color" },
45483
45628
  // Primary role pair — onPrimary is deep noir so hot pink CTAs pop.
45484
- onPrimary: { $value: "#09090b", $type: "color" },
45629
+ onPrimary: { $value: "#ffffff", $type: "color" },
45485
45630
  primaryContainer: { $value: "#9d174d", $type: "color" },
45486
45631
  // primary-800
45487
45632
  onPrimaryContainer: { $value: "#fce7f3", $type: "color" },
@@ -45741,15 +45886,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45741
45886
  "200": { $value: "#f8f0df", $type: "color" },
45742
45887
  "300": { $value: "#f0e4c9", $type: "color" },
45743
45888
  "400": { $value: "#dccba5", $type: "color" },
45744
- "500": { $value: "#bfaa80", $type: "color" },
45889
+ "500": { $value: "#aa8e56", $type: "color" },
45745
45890
  "600": { $value: "#9a8660", $type: "color" },
45746
45891
  "700": { $value: "#746448", $type: "color" },
45747
45892
  "800": { $value: "#504530", $type: "color" },
45748
45893
  "900": { $value: "#352e20", $type: "color" }
45749
45894
  },
45750
- success: standardSemanticScales.light.success,
45751
- warning: standardSemanticScales.light.warning,
45752
- error: standardSemanticScales.light.error,
45895
+ // #594 founder-approved light override (2026-08-22): shared success-500
45896
+ // is sub-AA as TEXT on botanical's warm paper — override the 500 stop
45897
+ // only, light only (same pattern as warning/error below).
45898
+ success: {
45899
+ ...standardSemanticScales.light.success,
45900
+ "500": { $type: "color", $value: "#17843f" }
45901
+ },
45902
+ // #594 founder-approved light overrides (2026-08-22): the shared
45903
+ // standardSemantic 500s are sub-AA as TEXT on botanical's warm paper
45904
+ // (#fefcf8) — override ONLY the 500 stop, only in light; the shared
45905
+ // scales stay untouched for every other theme and for dark.
45906
+ warning: {
45907
+ ...standardSemanticScales.light.warning,
45908
+ "500": { $type: "color", $value: "#a06707" }
45909
+ },
45910
+ error: {
45911
+ ...standardSemanticScales.light.error,
45912
+ "500": { $type: "color", $value: "#e51414" }
45913
+ },
45753
45914
  info: standardSemanticScales.light.info,
45754
45915
  // Semantic roles
45755
45916
  surface: { $value: "#fefcf8", $type: "color" },
@@ -45761,7 +45922,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
45761
45922
  outline: { $value: "#f0e4c9", $type: "color" },
45762
45923
  outlineVariant: { $value: "#f8f0df", $type: "color" },
45763
45924
  // Primary role pair — onPrimary is cream for the leaf-green brand hex.
45764
- onPrimary: { $value: "#fefcf8", $type: "color" },
45925
+ onPrimary: { $value: "#332407", $type: "color" },
45765
45926
  primaryContainer: { $value: "#dcfce7", $type: "color" },
45766
45927
  // primary-100
45767
45928
  onPrimaryContainer: { $value: "#14532d", $type: "color" },
@@ -46058,7 +46219,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46058
46219
  "50": { $value: "#f4f7ec", $type: "color" },
46059
46220
  "100": { $value: "#e3ecd0", $type: "color" },
46060
46221
  "200": { $value: "#c8d8a5", $type: "color" },
46061
- "500": { $value: "#6b8e3d", $type: "color" },
46222
+ "500": { $value: "#5c7a35", $type: "color" },
46062
46223
  // brand: olive
46063
46224
  "600": { $value: "#587634", $type: "color" },
46064
46225
  "700": { $value: "#465c29", $type: "color" },
@@ -46068,7 +46229,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46068
46229
  "50": { $value: "#fbf3e3", $type: "color" },
46069
46230
  "100": { $value: "#f6e2bb", $type: "color" },
46070
46231
  "200": { $value: "#eac786", $type: "color" },
46071
- "500": { $value: "#c98e2e", $type: "color" },
46232
+ "500": { $value: "#956922", $type: "color" },
46072
46233
  // brand: amber-orange
46073
46234
  "600": { $value: "#a87725", $type: "color" },
46074
46235
  "700": { $value: "#825c1d", $type: "color" },
@@ -46108,7 +46269,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46108
46269
  outline: { $value: "#dad8cc", $type: "color" },
46109
46270
  outlineVariant: { $value: "#ebe9df", $type: "color" },
46110
46271
  // Primary role pair — text on Crail CTAs is ivory, container is Crail-50.
46111
- onPrimary: { $value: "#faf9f5", $type: "color" },
46272
+ onPrimary: { $value: "#15130a", $type: "color" },
46112
46273
  // Ivory
46113
46274
  primaryContainer: { $value: "#fbf2ee", $type: "color" },
46114
46275
  // primary-50
@@ -46219,7 +46380,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46219
46380
  "50": { $value: "#2a1410", $type: "color" },
46220
46381
  "100": { $value: "#52271f", $type: "color" },
46221
46382
  "200": { $value: "#7a3a2e", $type: "color" },
46222
- "500": { $value: "#d56b59", $type: "color" },
46383
+ "500": { $value: "#d7705f", $type: "color" },
46223
46384
  // brand: brick (lifted for dark)
46224
46385
  "600": { $value: "#df8576", $type: "color" },
46225
46386
  "700": { $value: "#e3a294", $type: "color" },
@@ -46466,7 +46627,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46466
46627
  "50": { $value: "#ecfdf5", $type: "color" },
46467
46628
  "100": { $value: "#d1fae5", $type: "color" },
46468
46629
  "200": { $value: "#a7f3d0", $type: "color" },
46469
- "500": { $value: "#0e9d6e", $type: "color" },
46630
+ "500": { $value: "#0b815a", $type: "color" },
46470
46631
  // brand emerald
46471
46632
  "600": { $value: "#0b8259", $type: "color" },
46472
46633
  "700": { $value: "#086847", $type: "color" },
@@ -46476,7 +46637,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46476
46637
  "50": { $value: "#fff8eb", $type: "color" },
46477
46638
  "100": { $value: "#fdecc8", $type: "color" },
46478
46639
  "200": { $value: "#fbd897", $type: "color" },
46479
- "500": { $value: "#e08515", $type: "color" },
46640
+ "500": { $value: "#a66210", $type: "color" },
46480
46641
  // brand amber
46481
46642
  "600": { $value: "#b86b0e", $type: "color" },
46482
46643
  "700": { $value: "#90530a", $type: "color" },
@@ -46587,7 +46748,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46587
46748
  "300": { $value: "#2a2839", $type: "color" },
46588
46749
  // outline
46589
46750
  "400": { $value: "#3e3c50", $type: "color" },
46590
- "500": { $value: "#5e5c70", $type: "color" },
46751
+ "500": { $value: "#636176", $type: "color" },
46591
46752
  // muted
46592
46753
  "600": { $value: "#8b8898", $type: "color" },
46593
46754
  "700": { $value: "#b8b6c2", $type: "color" },
@@ -46962,7 +47123,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46962
47123
  "400": { $value: "#B8FF3A", $type: "color" },
46963
47124
  "500": { $value: "#9FE01C", $type: "color" },
46964
47125
  "600": { $value: "#7DB214", $type: "color" },
46965
- "700": { $value: "#5C850D", $type: "color" },
47126
+ // 700 is the 'emphasized' TEXT stop — AA on paper (round 7 sweep).
47127
+ "700": { $value: "#476809", $type: "color" },
46966
47128
  "800": { $value: "#3F5A11", $type: "color" },
46967
47129
  "900": { $value: "#28390B", $type: "color" }
46968
47130
  },
@@ -46978,41 +47140,44 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46978
47140
  "800": { $value: "#242938", $type: "color" },
46979
47141
  "900": { $value: "#1A1D24", $type: "color" }
46980
47142
  },
47143
+ // Semantic -500s are TEXT stops on paper ('success'/'warning'/…
47144
+ // tones + Alert) — every 500 below clears AA on #FFFFFF (round 7
47145
+ // sweep; the pre-sweep pastel values measured 2.5–4.3).
46981
47146
  success: {
46982
47147
  "50": { $value: "#F6FFE0", $type: "color" },
46983
47148
  "100": { $value: "#E9FFB8", $type: "color" },
46984
47149
  "200": { $value: "#DBFF8F", $type: "color" },
46985
- "500": { $value: "#7DB214", $type: "color" },
46986
- "600": { $value: "#5C850D", $type: "color" },
46987
- "700": { $value: "#476809", $type: "color" },
47150
+ "500": { $value: "#517709", $type: "color" },
47151
+ "600": { $value: "#476809", $type: "color" },
47152
+ "700": { $value: "#35510B", $type: "color" },
46988
47153
  "800": { $value: "#28390B", $type: "color" }
46989
47154
  },
46990
47155
  warning: {
46991
47156
  "50": { $value: "#FFF4DD", $type: "color" },
46992
47157
  "100": { $value: "#FFE5AE", $type: "color" },
46993
47158
  "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" }
47159
+ "500": { $value: "#9C6205", $type: "color" },
47160
+ "600": { $value: "#7C4D04", $type: "color" },
47161
+ "700": { $value: "#5E3A03", $type: "color" },
47162
+ "800": { $value: "#3F2702", $type: "color" }
46998
47163
  },
46999
47164
  error: {
47000
47165
  "50": { $value: "#FFE9E8", $type: "color" },
47001
47166
  "100": { $value: "#FFC3C0", $type: "color" },
47002
47167
  "200": { $value: "#FF9F9C", $type: "color" },
47003
- "500": { $value: "#E23B3B", $type: "color" },
47004
- "600": { $value: "#B62C2C", $type: "color" },
47005
- "700": { $value: "#8A1F1F", $type: "color" },
47168
+ "500": { $value: "#CC2F2F", $type: "color" },
47169
+ "600": { $value: "#A62626", $type: "color" },
47170
+ "700": { $value: "#7E1D1D", $type: "color" },
47006
47171
  "800": { $value: "#5E1F1B", $type: "color" }
47007
47172
  },
47008
47173
  info: {
47009
47174
  "50": { $value: "#E5F7FF", $type: "color" },
47010
47175
  "100": { $value: "#BFECFF", $type: "color" },
47011
47176
  "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" }
47177
+ "500": { $value: "#0B739E", $type: "color" },
47178
+ "600": { $value: "#085572", $type: "color" },
47179
+ "700": { $value: "#06455D", $type: "color" },
47180
+ "800": { $value: "#0A3346", $type: "color" }
47016
47181
  },
47017
47182
  surface: { $value: "#FFFFFF", $type: "color" },
47018
47183
  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.13.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.13.0",
52
+ "@ggui-ai/protocol": "0.13.0",
53
+ "@ggui-ai/wire": "0.13.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@playwright/test": "^1.60.0",