@ggui-ai/ui-visual-tester 0.10.0 → 0.11.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.
@@ -42344,7 +42344,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
42344
42344
 
42345
42345
  // ../protocol/dist/gadgets/stdlib-gadgets.js
42346
42346
  var STDLIB_GADGETS_PACKAGE = "@ggui-ai/gadgets";
42347
- var STDLIB_GADGETS_VERSION = "0.10.0";
42347
+ var STDLIB_GADGETS_VERSION = "0.11.0";
42348
42348
  var STDLIB_GADGETS = [
42349
42349
  {
42350
42350
  package: STDLIB_GADGETS_PACKAGE,
@@ -46694,6 +46694,349 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
46694
46694
  zIndex: standardZIndex
46695
46695
  };
46696
46696
 
46697
+ // ../design/dist/themes/definitions/guuey-brand.js
46698
+ var shared8 = {
46699
+ font: {
46700
+ family: {
46701
+ sans: {
46702
+ $value: '"DM Sans", system-ui, -apple-system, sans-serif',
46703
+ $type: "fontFamily"
46704
+ },
46705
+ mono: {
46706
+ $value: '"JetBrains Mono", ui-monospace, monospace',
46707
+ $type: "fontFamily"
46708
+ }
46709
+ },
46710
+ size: {
46711
+ sm: { $value: "0.875rem", $type: "dimension" },
46712
+ base: { $value: "1rem", $type: "dimension" },
46713
+ lg: { $value: "1.125rem", $type: "dimension" },
46714
+ xl: { $value: "1.25rem", $type: "dimension" },
46715
+ "2xl": { $value: "1.5rem", $type: "dimension" }
46716
+ },
46717
+ weight: {
46718
+ normal: { $value: "400", $type: "fontWeight" },
46719
+ medium: { $value: "500", $type: "fontWeight" },
46720
+ semibold: { $value: "600", $type: "fontWeight" },
46721
+ bold: { $value: "700", $type: "fontWeight" }
46722
+ },
46723
+ lineHeight: {
46724
+ tight: { $value: "1.25", $type: "number" },
46725
+ normal: { $value: "1.5", $type: "number" },
46726
+ relaxed: { $value: "1.75", $type: "number" }
46727
+ }
46728
+ },
46729
+ spacing: {
46730
+ "1": { $value: "0.25rem", $type: "dimension" },
46731
+ "2": { $value: "0.5rem", $type: "dimension" },
46732
+ "3": { $value: "0.75rem", $type: "dimension" },
46733
+ "4": { $value: "1rem", $type: "dimension" },
46734
+ "5": { $value: "1.25rem", $type: "dimension" },
46735
+ "6": { $value: "1.5rem", $type: "dimension" },
46736
+ "8": { $value: "2rem", $type: "dimension" },
46737
+ "10": { $value: "2.5rem", $type: "dimension" },
46738
+ "12": { $value: "3rem", $type: "dimension" }
46739
+ },
46740
+ // NOTE: `shape` is per-mode (round 4) — radius is shared via
46741
+ // `sharedRadius` below, but shadows split: dark wants near-none ink
46742
+ // (a visible black blob under a card on a dark surface was the
46743
+ // round-3 "borders looking ugly" residual's shadow half), light
46744
+ // wants classic soft grey.
46745
+ motion: {
46746
+ duration: {
46747
+ fast: { $value: "120ms", $type: "duration" },
46748
+ normal: { $value: "200ms", $type: "duration" },
46749
+ slow: { $value: "400ms", $type: "duration" },
46750
+ ambient: { $value: "2000ms", $type: "duration" }
46751
+ },
46752
+ easing: {
46753
+ default: { $value: "cubic-bezier(0.4, 0, 0.2, 1)", $type: "cubicBezier" },
46754
+ bounce: {
46755
+ $value: "cubic-bezier(0.68, -0.55, 0.27, 1.55)",
46756
+ $type: "cubicBezier"
46757
+ },
46758
+ spring: { $value: "cubic-bezier(0.22, 1, 0.36, 1)", $type: "cubicBezier" }
46759
+ },
46760
+ transition: {
46761
+ fast: { $value: "120ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46762
+ normal: { $value: "200ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46763
+ slow: { $value: "400ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46764
+ colors: {
46765
+ $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)",
46766
+ $type: "transition"
46767
+ },
46768
+ opacity: { $value: "opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)", $type: "transition" },
46769
+ transform: { $value: "transform 200ms cubic-bezier(0.22, 1, 0.36, 1)", $type: "transition" }
46770
+ },
46771
+ keyframes: {
46772
+ "fade-in": {
46773
+ $value: "0%{opacity:0}100%{opacity:1}",
46774
+ $type: "keyframes"
46775
+ },
46776
+ "slide-up": {
46777
+ $value: "0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:translateY(0)}",
46778
+ $type: "keyframes"
46779
+ },
46780
+ "pulse-soft": {
46781
+ $value: "0%{opacity:1}50%{opacity:0.65}100%{opacity:1}",
46782
+ $type: "keyframes"
46783
+ }
46784
+ }
46785
+ },
46786
+ accessibility: {
46787
+ focusRing: {
46788
+ color: { $value: "#B8FF3A", $type: "color" },
46789
+ width: { $value: "2px", $type: "dimension" },
46790
+ offset: { $value: "2px", $type: "dimension" }
46791
+ },
46792
+ reducedMotion: {
46793
+ duration: { $value: "0ms", $type: "duration" }
46794
+ },
46795
+ highContrast: {
46796
+ borderWidth: { $value: "2px", $type: "dimension" },
46797
+ textColor: { $value: "#FFFFFF", $type: "color" },
46798
+ backgroundColor: { $value: "#000000", $type: "color" },
46799
+ linkColor: { $value: "#CCFF66", $type: "color" }
46800
+ }
46801
+ },
46802
+ zIndex: standardZIndex
46803
+ };
46804
+ var sharedRadius = {
46805
+ sm: { $value: "0.375rem", $type: "dimension" },
46806
+ md: { $value: "0.5rem", $type: "dimension" },
46807
+ lg: { $value: "0.75rem", $type: "dimension" },
46808
+ xl: { $value: "1rem", $type: "dimension" },
46809
+ full: { $value: "9999px", $type: "dimension" }
46810
+ };
46811
+ var darkShadows = {
46812
+ sm: { $value: "0 1px 2px rgba(0, 0, 0, 0.2)", $type: "shadow" },
46813
+ md: { $value: "0 2px 8px rgba(0, 0, 0, 0.25)", $type: "shadow" },
46814
+ lg: { $value: "0 6px 16px rgba(0, 0, 0, 0.28)", $type: "shadow" },
46815
+ xl: { $value: "0 10px 24px rgba(0, 0, 0, 0.3)", $type: "shadow" }
46816
+ };
46817
+ var lightShadows = {
46818
+ sm: { $value: "0 1px 2px rgba(26, 29, 36, 0.06)", $type: "shadow" },
46819
+ md: { $value: "0 2px 8px rgba(26, 29, 36, 0.08)", $type: "shadow" },
46820
+ lg: { $value: "0 6px 16px rgba(26, 29, 36, 0.1)", $type: "shadow" },
46821
+ xl: { $value: "0 12px 28px rgba(26, 29, 36, 0.12)", $type: "shadow" }
46822
+ };
46823
+ var guueyBrandDark = {
46824
+ $name: "guuey-brand-v1",
46825
+ $description: "The guuey product brand (dark) \u2014 slate-ink surfaces, slime #B8FF3A accent, DM Sans.",
46826
+ $metadata: {
46827
+ font: "DM Sans",
46828
+ fontUrl: "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap",
46829
+ philosophy: "Agent-native. Slime on slate.",
46830
+ // Round 5 (founder-ruled): the guuey host clips the view with its
46831
+ // own rounded rim — the HOST owns the card silhouette; the theme
46832
+ // paints no border on the root layer. Inner hairlines stay.
46833
+ frameless: true
46834
+ },
46835
+ color: {
46836
+ // Inverted dark ladder — 50 darkest, 900 lightest; slime pinned at
46837
+ // 500, the portal's lifted #CCFF66 at the hover stop (600).
46838
+ primary: {
46839
+ "50": { $value: "#141D05", $type: "color" },
46840
+ "100": { $value: "#28390B", $type: "color" },
46841
+ "200": { $value: "#3F5A11", $type: "color" },
46842
+ "300": { $value: "#5F8719", $type: "color" },
46843
+ "400": { $value: "#8CC627", $type: "color" },
46844
+ "500": { $value: "#B8FF3A", $type: "color" },
46845
+ // slime (brand)
46846
+ "600": { $value: "#CCFF66", $type: "color" },
46847
+ // lifted hover (portal)
46848
+ "700": { $value: "#DBFF8F", $type: "color" },
46849
+ // pressed / emphasized
46850
+ "800": { $value: "#E9FFB8", $type: "color" },
46851
+ "900": { $value: "#F6FFE0", $type: "color" }
46852
+ },
46853
+ // Slate-ink foundation from the portal surface family: sunken →
46854
+ // surface → elevated → surfaceVariant, then up through the greys
46855
+ // to paper (#F6F5EE).
46856
+ neutral: {
46857
+ "50": { $value: "#0E1014", $type: "color" },
46858
+ // sunken
46859
+ "100": { $value: "#1A1D24", $type: "color" },
46860
+ // surface
46861
+ "200": { $value: "#232630", $type: "color" },
46862
+ // elevated
46863
+ "300": { $value: "#242938", $type: "color" },
46864
+ // surfaceVariant
46865
+ "400": { $value: "#3B4152", $type: "color" },
46866
+ "500": { $value: "#878C99", $type: "color" },
46867
+ // hint text
46868
+ "600": { $value: "#B7BAC4", $type: "color" },
46869
+ // secondary text
46870
+ "700": { $value: "#D5D6DC", $type: "color" },
46871
+ "800": { $value: "#E8E7E2", $type: "color" },
46872
+ "900": { $value: "#F6F5EE", $type: "color" }
46873
+ // paper (text)
46874
+ },
46875
+ // BRAND RULE: success IS slime — never green. Same family as
46876
+ // primary so an "Available" pill and a slime CTA read as one brand.
46877
+ success: {
46878
+ "50": { $value: "#141D05", $type: "color" },
46879
+ "100": { $value: "#28390B", $type: "color" },
46880
+ "200": { $value: "#3F5A11", $type: "color" },
46881
+ "500": { $value: "#B8FF3A", $type: "color" },
46882
+ // slime (brand rule)
46883
+ "600": { $value: "#CCFF66", $type: "color" },
46884
+ "700": { $value: "#DBFF8F", $type: "color" },
46885
+ "800": { $value: "#E9FFB8", $type: "color" }
46886
+ },
46887
+ warning: {
46888
+ "50": { $value: "#33240A", $type: "color" },
46889
+ "100": { $value: "#5C420F", $type: "color" },
46890
+ "200": { $value: "#8A6318", $type: "color" },
46891
+ "500": { $value: "#FFB020", $type: "color" },
46892
+ // portal warning
46893
+ "600": { $value: "#FFC24D", $type: "color" },
46894
+ "700": { $value: "#FFD37D", $type: "color" },
46895
+ "800": { $value: "#FFE5AE", $type: "color" }
46896
+ },
46897
+ error: {
46898
+ "50": { $value: "#33110E", $type: "color" },
46899
+ "100": { $value: "#5E1F1B", $type: "color" },
46900
+ "200": { $value: "#8F2F2A", $type: "color" },
46901
+ "500": { $value: "#FF5B5B", $type: "color" },
46902
+ // portal error
46903
+ "600": { $value: "#FF7D7A", $type: "color" },
46904
+ "700": { $value: "#FF9F9C", $type: "color" },
46905
+ "800": { $value: "#FFC3C0", $type: "color" }
46906
+ },
46907
+ info: {
46908
+ "50": { $value: "#0A2733", $type: "color" },
46909
+ "100": { $value: "#12455C", $type: "color" },
46910
+ "200": { $value: "#1E6A8A", $type: "color" },
46911
+ "500": { $value: "#3AC8FF", $type: "color" },
46912
+ // portal info
46913
+ "600": { $value: "#66D4FF", $type: "color" },
46914
+ "700": { $value: "#92E0FF", $type: "color" },
46915
+ "800": { $value: "#BFECFF", $type: "color" }
46916
+ },
46917
+ // M3 roles — portal values verbatim.
46918
+ surface: { $value: "#1A1D24", $type: "color" },
46919
+ onSurface: { $value: "#F6F5EE", $type: "color" },
46920
+ surfaceVariant: { $value: "#242938", $type: "color" },
46921
+ onSurfaceVariant: { $value: "#B7BAC4", $type: "color" },
46922
+ container: { $value: "#232630", $type: "color" },
46923
+ // elevated
46924
+ onContainer: { $value: "#F6F5EE", $type: "color" },
46925
+ // Round 4 (portal stops): .14 IS the base hairline; .18 is the
46926
+ // STRONG stop (no DtcgTheme slot — strong/interactive strokes
46927
+ // ride primary borders + the slime focusRing, receipted by the
46928
+ // Select button). Dividers sit softer still.
46929
+ outline: { $value: "rgba(246, 245, 238, 0.14)", $type: "color" },
46930
+ outlineVariant: { $value: "rgba(246, 245, 238, 0.1)", $type: "color" },
46931
+ onPrimary: { $value: "#0E1014", $type: "color" },
46932
+ // ink on slime
46933
+ primaryContainer: { $value: "#242938", $type: "color" },
46934
+ // portal
46935
+ onPrimaryContainer: { $value: "#CCFF66", $type: "color" },
46936
+ // portal
46937
+ onError: { $value: "#33110E", $type: "color" },
46938
+ errorContainer: { $value: "#5E1F1B", $type: "color" },
46939
+ onErrorContainer: { $value: "#FFC3C0", $type: "color" },
46940
+ // Pink accent — the portal's tertiary. (Purple #9B6AFF has no
46941
+ // DtcgTheme slot; see the file docstring.)
46942
+ tertiary: { $value: "#FF4FB0", $type: "color" },
46943
+ onTertiary: { $value: "#0E1014", $type: "color" },
46944
+ tertiaryContainer: { $value: "#451A35", $type: "color" },
46945
+ onTertiaryContainer: { $value: "#FFC1E4", $type: "color" }
46946
+ },
46947
+ ...shared8,
46948
+ shape: { radius: sharedRadius, shadow: darkShadows }
46949
+ };
46950
+ var guueyBrandLight = {
46951
+ $name: "guuey-brand-v1",
46952
+ $description: "The guuey product brand (light, provisional) \u2014 paper surfaces, slime accent held for fills, darkened slime for text emphasis.",
46953
+ $metadata: guueyBrandDark.$metadata,
46954
+ color: {
46955
+ // Normal (non-inverted) ramps; slime stays the 500 fill anchor,
46956
+ // text-emphasis stops (600/700) darken for contrast on paper.
46957
+ primary: {
46958
+ "50": { $value: "#F6FFE0", $type: "color" },
46959
+ "100": { $value: "#E9FFB8", $type: "color" },
46960
+ "200": { $value: "#DBFF8F", $type: "color" },
46961
+ "300": { $value: "#CCFF66", $type: "color" },
46962
+ "400": { $value: "#B8FF3A", $type: "color" },
46963
+ "500": { $value: "#9FE01C", $type: "color" },
46964
+ "600": { $value: "#7DB214", $type: "color" },
46965
+ "700": { $value: "#5C850D", $type: "color" },
46966
+ "800": { $value: "#3F5A11", $type: "color" },
46967
+ "900": { $value: "#28390B", $type: "color" }
46968
+ },
46969
+ neutral: {
46970
+ "50": { $value: "#FBFAF6", $type: "color" },
46971
+ "100": { $value: "#F6F5EE", $type: "color" },
46972
+ "200": { $value: "#E8E7E2", $type: "color" },
46973
+ "300": { $value: "#D5D6DC", $type: "color" },
46974
+ "400": { $value: "#B7BAC4", $type: "color" },
46975
+ "500": { $value: "#6E7380", $type: "color" },
46976
+ "600": { $value: "#4A4F5C", $type: "color" },
46977
+ "700": { $value: "#333846", $type: "color" },
46978
+ "800": { $value: "#242938", $type: "color" },
46979
+ "900": { $value: "#1A1D24", $type: "color" }
46980
+ },
46981
+ success: {
46982
+ "50": { $value: "#F6FFE0", $type: "color" },
46983
+ "100": { $value: "#E9FFB8", $type: "color" },
46984
+ "200": { $value: "#DBFF8F", $type: "color" },
46985
+ "500": { $value: "#7DB214", $type: "color" },
46986
+ "600": { $value: "#5C850D", $type: "color" },
46987
+ "700": { $value: "#476809", $type: "color" },
46988
+ "800": { $value: "#28390B", $type: "color" }
46989
+ },
46990
+ warning: {
46991
+ "50": { $value: "#FFF4DD", $type: "color" },
46992
+ "100": { $value: "#FFE5AE", $type: "color" },
46993
+ "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" }
46998
+ },
46999
+ error: {
47000
+ "50": { $value: "#FFE9E8", $type: "color" },
47001
+ "100": { $value: "#FFC3C0", $type: "color" },
47002
+ "200": { $value: "#FF9F9C", $type: "color" },
47003
+ "500": { $value: "#E23B3B", $type: "color" },
47004
+ "600": { $value: "#B62C2C", $type: "color" },
47005
+ "700": { $value: "#8A1F1F", $type: "color" },
47006
+ "800": { $value: "#5E1F1B", $type: "color" }
47007
+ },
47008
+ info: {
47009
+ "50": { $value: "#E5F7FF", $type: "color" },
47010
+ "100": { $value: "#BFECFF", $type: "color" },
47011
+ "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" }
47016
+ },
47017
+ surface: { $value: "#FFFFFF", $type: "color" },
47018
+ onSurface: { $value: "#1A1D24", $type: "color" },
47019
+ surfaceVariant: { $value: "#F6F5EE", $type: "color" },
47020
+ onSurfaceVariant: { $value: "#4A4F5C", $type: "color" },
47021
+ container: { $value: "#FBFAF6", $type: "color" },
47022
+ onContainer: { $value: "#1A1D24", $type: "color" },
47023
+ outline: { $value: "rgba(26, 29, 36, 0.18)", $type: "color" },
47024
+ outlineVariant: { $value: "rgba(26, 29, 36, 0.10)", $type: "color" },
47025
+ onPrimary: { $value: "#0E1014", $type: "color" },
47026
+ primaryContainer: { $value: "#E9FFB8", $type: "color" },
47027
+ onPrimaryContainer: { $value: "#28390B", $type: "color" },
47028
+ onError: { $value: "#FFFFFF", $type: "color" },
47029
+ errorContainer: { $value: "#FFE9E8", $type: "color" },
47030
+ onErrorContainer: { $value: "#8A1F1F", $type: "color" },
47031
+ tertiary: { $value: "#D6247F", $type: "color" },
47032
+ onTertiary: { $value: "#FFFFFF", $type: "color" },
47033
+ tertiaryContainer: { $value: "#FFDCEE", $type: "color" },
47034
+ onTertiaryContainer: { $value: "#6B1240", $type: "color" }
47035
+ },
47036
+ ...shared8,
47037
+ shape: { radius: sharedRadius, shadow: lightShadows }
47038
+ };
47039
+
46697
47040
  // ../design/dist/themes/ThemeProvider.js
46698
47041
  var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
46699
47042
  var import_react37 = __toESM(require_react(), 1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggui-ai/ui-visual-tester",
3
- "version": "0.10.0",
3
+ "version": "0.11.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/protocol": "0.10.0",
52
- "@ggui-ai/wire": "0.10.0",
53
- "@ggui-ai/design": "0.10.0"
51
+ "@ggui-ai/design": "0.11.0",
52
+ "@ggui-ai/protocol": "0.11.0",
53
+ "@ggui-ai/wire": "0.11.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@playwright/test": "^1.60.0",