@compact-design/core 0.1.0 → 0.3.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.
@@ -462,7 +462,7 @@ declare const _default: {
462
462
  readonly required: readonly ["type"];
463
463
  readonly properties: {
464
464
  readonly type: {
465
- readonly enum: readonly ["DROP_SHADOW", "INNER_SHADOW", "LAYER_BLUR", "BACKGROUND_BLUR"];
465
+ readonly enum: readonly ["DROP_SHADOW", "INNER_SHADOW", "LAYER_BLUR", "BACKGROUND_BLUR", "NOISE", "TEXTURE", "GLASS", "SHADER"];
466
466
  };
467
467
  readonly color: {
468
468
  readonly oneOf: readonly [{
@@ -489,7 +489,94 @@ declare const _default: {
489
489
  readonly blendMode: {
490
490
  readonly type: "string";
491
491
  };
492
+ readonly showShadowBehindNode: {
493
+ readonly type: "boolean";
494
+ };
495
+ readonly blurType: {
496
+ readonly enum: readonly ["NORMAL", "PROGRESSIVE"];
497
+ };
498
+ readonly startRadius: {
499
+ readonly $ref: "#/$defs/nonNegativeNumber";
500
+ };
501
+ readonly startOffset: {
502
+ readonly $ref: "#/$defs/vector";
503
+ };
504
+ readonly endOffset: {
505
+ readonly $ref: "#/$defs/vector";
506
+ };
507
+ readonly noiseType: {
508
+ readonly enum: readonly ["MONOTONE", "DUOTONE", "MULTITONE"];
509
+ };
510
+ readonly noiseSize: {
511
+ readonly $ref: "#/$defs/nonNegativeNumber";
512
+ };
513
+ readonly density: {
514
+ readonly type: "number";
515
+ readonly minimum: 0;
516
+ readonly maximum: 1;
517
+ };
518
+ readonly secondaryColor: {
519
+ readonly oneOf: readonly [{
520
+ readonly $ref: "#/$defs/hexColor";
521
+ }, {
522
+ readonly $ref: "#/$defs/color";
523
+ }];
524
+ };
525
+ readonly opacity: {
526
+ readonly type: "number";
527
+ readonly minimum: 0;
528
+ readonly maximum: 1;
529
+ };
530
+ readonly clipToShape: {
531
+ readonly type: "boolean";
532
+ };
533
+ readonly lightIntensity: {
534
+ readonly type: "number";
535
+ readonly minimum: 0;
536
+ readonly maximum: 1;
537
+ };
538
+ readonly lightAngle: {
539
+ readonly type: "number";
540
+ };
541
+ readonly refraction: {
542
+ readonly type: "number";
543
+ readonly minimum: 0;
544
+ readonly maximum: 1;
545
+ };
546
+ readonly depth: {
547
+ readonly type: "number";
548
+ readonly minimum: 1;
549
+ };
550
+ readonly dispersion: {
551
+ readonly type: "number";
552
+ readonly minimum: 0;
553
+ readonly maximum: 1;
554
+ };
555
+ readonly id: {
556
+ readonly type: "string";
557
+ readonly minLength: 1;
558
+ };
559
+ readonly properties: {
560
+ readonly type: "object";
561
+ readonly description: "SHADER property assignments keyed by Figma property-definition id. Values pass through verbatim (numbers, booleans, strings, colors, points, gradients, or variable aliases).";
562
+ readonly additionalProperties: {
563
+ readonly type: readonly ["boolean", "string", "number", "object"];
564
+ };
565
+ };
492
566
  };
567
+ readonly allOf: readonly [{
568
+ readonly if: {
569
+ readonly properties: {
570
+ readonly type: {
571
+ readonly const: "SHADER";
572
+ };
573
+ };
574
+ readonly required: readonly ["type"];
575
+ };
576
+ readonly then: {
577
+ readonly required: readonly ["id"];
578
+ };
579
+ }];
493
580
  };
494
581
  readonly shadow: {
495
582
  readonly type: "object";
@@ -867,13 +954,51 @@ declare const _default: {
867
954
  };
868
955
  };
869
956
  };
957
+ readonly componentPropertyReferences: {
958
+ readonly type: "object";
959
+ readonly description: "Links this child layer to component properties on its nearest ancestor COMPONENT (Figma componentPropertyReferences). Values are the authored property names from that COMPONENT's componentProperties. characters → TEXT (TEXT nodes only); visible → BOOLEAN (any node); mainComponent → INSTANCE_SWAP (INSTANCE nodes only).";
960
+ readonly additionalProperties: false;
961
+ readonly properties: {
962
+ readonly characters: {
963
+ readonly type: "string";
964
+ readonly minLength: 1;
965
+ };
966
+ readonly visible: {
967
+ readonly type: "string";
968
+ readonly minLength: 1;
969
+ };
970
+ readonly mainComponent: {
971
+ readonly type: "string";
972
+ readonly minLength: 1;
973
+ };
974
+ };
975
+ };
976
+ readonly componentPropertyReferencesPatch: {
977
+ readonly type: "object";
978
+ readonly description: "Patch form of componentPropertyReferences: null field clears that link.";
979
+ readonly additionalProperties: false;
980
+ readonly properties: {
981
+ readonly characters: {
982
+ readonly type: readonly ["string", "null"];
983
+ readonly minLength: 1;
984
+ };
985
+ readonly visible: {
986
+ readonly type: readonly ["string", "null"];
987
+ readonly minLength: 1;
988
+ };
989
+ readonly mainComponent: {
990
+ readonly type: readonly ["string", "null"];
991
+ readonly minLength: 1;
992
+ };
993
+ };
994
+ };
870
995
  readonly vectorPath: {
871
996
  readonly type: "object";
872
997
  readonly additionalProperties: false;
873
998
  readonly required: readonly ["data"];
874
999
  readonly properties: {
875
1000
  readonly windingRule: {
876
- readonly enum: readonly ["NONZERO", "EVENODD"];
1001
+ readonly enum: readonly ["NONZERO", "EVENODD", "NONE"];
877
1002
  };
878
1003
  readonly data: {
879
1004
  readonly type: "string";
@@ -1160,6 +1285,9 @@ declare const _default: {
1160
1285
  readonly instanceProperties: {
1161
1286
  readonly type: "object";
1162
1287
  };
1288
+ readonly componentPropertyReferences: {
1289
+ readonly $ref: "#/$defs/componentPropertyReferences";
1290
+ };
1163
1291
  readonly variantAxes: {
1164
1292
  readonly type: "object";
1165
1293
  readonly additionalProperties: {
@@ -1187,7 +1315,7 @@ declare const _default: {
1187
1315
  };
1188
1316
  };
1189
1317
  readonly overflowDirection: {
1190
- readonly enum: readonly ["NONE", "HORIZONTAL_SCROLLING", "VERTICAL_SCROLLING", "HORIZONTAL_AND_VERTICAL_SCROLLING"];
1318
+ readonly enum: readonly ["NONE", "HORIZONTAL", "VERTICAL", "BOTH", "HORIZONTAL_SCROLLING", "VERTICAL_SCROLLING", "HORIZONTAL_AND_VERTICAL_SCROLLING"];
1191
1319
  };
1192
1320
  readonly numberOfFixedChildren: {
1193
1321
  readonly type: "integer";
@@ -1601,48 +1729,603 @@ declare const _default: {
1601
1729
  readonly $ref: "#/$defs/textStyle";
1602
1730
  }];
1603
1731
  };
1604
- readonly patchOperation: {
1605
- readonly oneOf: readonly [{
1606
- readonly type: "object";
1607
- readonly additionalProperties: false;
1608
- readonly required: readonly ["op", "id", "set"];
1609
- readonly properties: {
1610
- readonly op: {
1611
- readonly const: "set";
1612
- };
1613
- readonly id: {
1614
- readonly type: "string";
1615
- };
1616
- readonly set: {
1617
- readonly type: "object";
1618
- readonly minProperties: 1;
1619
- };
1732
+ readonly fontPatch: {
1733
+ readonly description: "Partial font for patch set. Merges into the target's font: unmentioned family/style/size are kept.";
1734
+ readonly allOf: readonly [{
1735
+ readonly $ref: "#/$defs/font";
1736
+ }];
1737
+ readonly minProperties: 1;
1738
+ };
1739
+ readonly paddingPatch: {
1740
+ readonly description: "Partial padding for patch set. Merges per side into the target's padding.";
1741
+ readonly allOf: readonly [{
1742
+ readonly $ref: "#/$defs/padding";
1743
+ }];
1744
+ readonly minProperties: 1;
1745
+ };
1746
+ readonly layoutPatch: {
1747
+ readonly type: "object";
1748
+ readonly description: "Partial Auto Layout for patch set. Deep-merges into the target's layout (padding merges per side). direction is required only when the target has no Auto Layout yet.";
1749
+ readonly additionalProperties: false;
1750
+ readonly minProperties: 1;
1751
+ readonly properties: {
1752
+ readonly direction: {
1753
+ readonly enum: readonly ["HORIZONTAL", "VERTICAL", "GRID"];
1620
1754
  };
1621
- }, {
1622
- readonly type: "object";
1623
- readonly additionalProperties: false;
1624
- readonly required: readonly ["op", "id"];
1625
- readonly properties: {
1626
- readonly op: {
1627
- readonly const: "remove";
1755
+ readonly itemSpacing: {
1756
+ readonly type: "number";
1757
+ };
1758
+ readonly counterAxisSpacing: {
1759
+ readonly type: "number";
1760
+ };
1761
+ readonly padding: {
1762
+ readonly $ref: "#/$defs/paddingPatch";
1763
+ };
1764
+ readonly primaryAxisAlignItems: {
1765
+ readonly enum: readonly ["MIN", "MAX", "CENTER", "SPACE_BETWEEN"];
1766
+ };
1767
+ readonly counterAxisAlignItems: {
1768
+ readonly enum: readonly ["MIN", "MAX", "CENTER", "BASELINE"];
1769
+ readonly description: "STRETCH is not patchable yet; set layoutAlign: STRETCH on children.";
1770
+ };
1771
+ readonly primaryAxisSizingMode: {
1772
+ readonly enum: readonly ["FIXED", "HUG", "AUTO"];
1773
+ };
1774
+ readonly counterAxisSizingMode: {
1775
+ readonly enum: readonly ["FIXED", "HUG", "AUTO"];
1776
+ };
1777
+ readonly wrap: {
1778
+ readonly type: "boolean";
1779
+ };
1780
+ };
1781
+ };
1782
+ readonly constraintsPatch: {
1783
+ readonly type: "object";
1784
+ readonly description: "Partial constraints for patch set. Merges into the target's constraints (missing axes default to MIN, Figma's default).";
1785
+ readonly additionalProperties: false;
1786
+ readonly minProperties: 1;
1787
+ readonly properties: {
1788
+ readonly horizontal: {
1789
+ readonly enum: readonly ["MIN", "CENTER", "MAX", "STRETCH", "SCALE"];
1790
+ };
1791
+ readonly vertical: {
1792
+ readonly enum: readonly ["MIN", "CENTER", "MAX", "STRETCH", "SCALE"];
1793
+ };
1794
+ };
1795
+ };
1796
+ readonly patchSet: {
1797
+ readonly type: "object";
1798
+ readonly description: "Properties for a patch set operation. Derived from node properties minus id, type, children and coordinateMode. Unknown keys are rejected. x/y are parent-relative. Objects (layout, layout.padding, font, constraints) deep-merge; arrays (fills, strokes, effects, runs, layoutGrids, vectorPaths, dashPattern, cornerRadii) replace. font is partial (its fields merge).";
1799
+ readonly additionalProperties: false;
1800
+ readonly minProperties: 1;
1801
+ readonly properties: {
1802
+ readonly name: {
1803
+ readonly type: "string";
1804
+ };
1805
+ readonly x: {
1806
+ readonly type: "number";
1807
+ };
1808
+ readonly y: {
1809
+ readonly type: "number";
1810
+ };
1811
+ readonly w: {
1812
+ readonly $ref: "#/$defs/positiveNumber";
1813
+ };
1814
+ readonly h: {
1815
+ readonly $ref: "#/$defs/positiveNumber";
1816
+ };
1817
+ readonly rotation: {
1818
+ readonly type: "number";
1819
+ };
1820
+ readonly fill: {
1821
+ readonly $ref: "#/$defs/paint";
1822
+ };
1823
+ readonly fills: {
1824
+ readonly type: "array";
1825
+ readonly items: {
1826
+ readonly $ref: "#/$defs/paint";
1628
1827
  };
1629
- readonly id: {
1630
- readonly type: "string";
1828
+ };
1829
+ readonly stroke: {
1830
+ readonly $ref: "#/$defs/paint";
1831
+ };
1832
+ readonly strokes: {
1833
+ readonly type: "array";
1834
+ readonly items: {
1835
+ readonly $ref: "#/$defs/paint";
1631
1836
  };
1632
1837
  };
1633
- }, {
1634
- readonly type: "object";
1635
- readonly additionalProperties: false;
1636
- readonly required: readonly ["op", "parent", "node"];
1637
- readonly properties: {
1638
- readonly op: {
1639
- readonly const: "append";
1838
+ readonly strokeWeight: {
1839
+ readonly $ref: "#/$defs/nonNegativeNumber";
1840
+ };
1841
+ readonly strokeTopWeight: {
1842
+ readonly $ref: "#/$defs/nonNegativeNumber";
1843
+ };
1844
+ readonly strokeRightWeight: {
1845
+ readonly $ref: "#/$defs/nonNegativeNumber";
1846
+ };
1847
+ readonly strokeBottomWeight: {
1848
+ readonly $ref: "#/$defs/nonNegativeNumber";
1849
+ };
1850
+ readonly strokeLeftWeight: {
1851
+ readonly $ref: "#/$defs/nonNegativeNumber";
1852
+ };
1853
+ readonly strokeAlign: {
1854
+ readonly enum: readonly ["CENTER", "INSIDE", "OUTSIDE"];
1855
+ };
1856
+ readonly strokeCap: {
1857
+ readonly enum: readonly ["NONE", "ROUND", "SQUARE", "LINE_ARROW", "TRIANGLE_ARROW", "DIAMOND_FILLED", "CIRCLE_FILLED", "TRIANGLE_FILLED", "WASHI_TAPE_1", "WASHI_TAPE_2", "WASHI_TAPE_3", "WASHI_TAPE_4", "WASHI_TAPE_5", "WASHI_TAPE_6"];
1858
+ };
1859
+ readonly strokeJoin: {
1860
+ readonly enum: readonly ["MITER", "BEVEL", "ROUND"];
1861
+ };
1862
+ readonly dashPattern: {
1863
+ readonly type: "array";
1864
+ readonly items: {
1865
+ readonly $ref: "#/$defs/nonNegativeNumber";
1640
1866
  };
1641
- readonly parent: {
1642
- readonly type: "string";
1867
+ };
1868
+ readonly cornerRadius: {
1869
+ readonly $ref: "#/$defs/nonNegativeNumber";
1870
+ };
1871
+ readonly cornerRadii: {
1872
+ readonly type: "array";
1873
+ readonly minItems: 4;
1874
+ readonly maxItems: 4;
1875
+ readonly items: {
1876
+ readonly $ref: "#/$defs/nonNegativeNumber";
1643
1877
  };
1644
- readonly node: {
1645
- readonly $ref: "#/$defs/node";
1878
+ };
1879
+ readonly opacity: {
1880
+ readonly type: "number";
1881
+ readonly minimum: 0;
1882
+ readonly maximum: 1;
1883
+ };
1884
+ readonly blendMode: {
1885
+ readonly type: "string";
1886
+ };
1887
+ readonly visible: {
1888
+ readonly type: "boolean";
1889
+ };
1890
+ readonly locked: {
1891
+ readonly type: "boolean";
1892
+ };
1893
+ readonly isMask: {
1894
+ readonly type: "boolean";
1895
+ };
1896
+ readonly clipsContent: {
1897
+ readonly type: "boolean";
1898
+ };
1899
+ readonly effects: {
1900
+ readonly type: "array";
1901
+ readonly items: {
1902
+ readonly $ref: "#/$defs/effect";
1903
+ };
1904
+ };
1905
+ readonly elevation: {
1906
+ readonly enum: readonly ["NONE", "LOW", "MEDIUM", "HIGH", "FLOATING"];
1907
+ };
1908
+ readonly shadow: {
1909
+ readonly oneOf: readonly [{
1910
+ readonly $ref: "#/$defs/shadow";
1911
+ }, {
1912
+ readonly type: "array";
1913
+ readonly items: {
1914
+ readonly $ref: "#/$defs/shadow";
1915
+ };
1916
+ }];
1917
+ };
1918
+ readonly layout: {
1919
+ readonly $ref: "#/$defs/layoutPatch";
1920
+ };
1921
+ readonly constraints: {
1922
+ readonly $ref: "#/$defs/constraintsPatch";
1923
+ };
1924
+ readonly layoutSizingHorizontal: {
1925
+ readonly enum: readonly ["FIXED", "HUG", "FILL"];
1926
+ };
1927
+ readonly layoutSizingVertical: {
1928
+ readonly enum: readonly ["FIXED", "HUG", "FILL"];
1929
+ };
1930
+ readonly layoutAlign: {
1931
+ readonly enum: readonly ["INHERIT", "STRETCH"];
1932
+ };
1933
+ readonly layoutGrow: {
1934
+ readonly type: "number";
1935
+ readonly minimum: 0;
1936
+ };
1937
+ readonly layoutPositioning: {
1938
+ readonly enum: readonly ["AUTO", "ABSOLUTE"];
1939
+ };
1940
+ readonly minWidth: {
1941
+ readonly $ref: "#/$defs/nullablePositiveNumber";
1942
+ };
1943
+ readonly maxWidth: {
1944
+ readonly $ref: "#/$defs/nullablePositiveNumber";
1945
+ };
1946
+ readonly minHeight: {
1947
+ readonly $ref: "#/$defs/nullablePositiveNumber";
1948
+ };
1949
+ readonly maxHeight: {
1950
+ readonly $ref: "#/$defs/nullablePositiveNumber";
1951
+ };
1952
+ readonly layoutGrids: {
1953
+ readonly type: "array";
1954
+ readonly items: {
1955
+ readonly $ref: "#/$defs/grid";
1956
+ };
1957
+ };
1958
+ readonly text: {
1959
+ readonly type: "string";
1960
+ };
1961
+ readonly font: {
1962
+ readonly $ref: "#/$defs/fontPatch";
1963
+ };
1964
+ readonly lineHeight: {
1965
+ readonly oneOf: readonly [{
1966
+ readonly type: "number";
1967
+ readonly exclusiveMinimum: 0;
1968
+ }, {
1969
+ readonly $ref: "#/$defs/lineHeightObject";
1970
+ }];
1971
+ };
1972
+ readonly letterSpacing: {
1973
+ readonly $ref: "#/$defs/letterSpacing";
1974
+ };
1975
+ readonly align: {
1976
+ readonly enum: readonly ["LEFT", "CENTER", "RIGHT", "JUSTIFIED"];
1977
+ };
1978
+ readonly verticalAlignment: {
1979
+ readonly enum: readonly ["TOP", "CENTER", "BOTTOM"];
1980
+ };
1981
+ readonly textDecoration: {
1982
+ readonly enum: readonly ["NONE", "UNDERLINE", "STRIKETHROUGH"];
1983
+ };
1984
+ readonly textCase: {
1985
+ readonly enum: readonly ["ORIGINAL", "UPPER", "LOWER", "TITLE", "SMALL_CAPS", "SMALL_CAPS_FORCED"];
1986
+ };
1987
+ readonly paragraphSpacing: {
1988
+ readonly $ref: "#/$defs/nonNegativeNumber";
1989
+ };
1990
+ readonly paragraphIndent: {
1991
+ readonly $ref: "#/$defs/nonNegativeNumber";
1992
+ };
1993
+ readonly listSpacing: {
1994
+ readonly $ref: "#/$defs/nonNegativeNumber";
1995
+ };
1996
+ readonly hangingPunctuation: {
1997
+ readonly type: "boolean";
1998
+ };
1999
+ readonly hangingList: {
2000
+ readonly type: "boolean";
2001
+ };
2002
+ readonly textAutoResize: {
2003
+ readonly enum: readonly ["NONE", "WIDTH_AND_HEIGHT", "HEIGHT", "TRUNCATE"];
2004
+ };
2005
+ readonly textTruncation: {
2006
+ readonly enum: readonly ["DISABLED", "ENDING"];
2007
+ };
2008
+ readonly maxLines: {
2009
+ readonly type: readonly ["integer", "null"];
2010
+ readonly minimum: 1;
2011
+ };
2012
+ readonly runs: {
2013
+ readonly type: "array";
2014
+ readonly minItems: 1;
2015
+ readonly items: {
2016
+ readonly $ref: "#/$defs/textRun";
2017
+ };
2018
+ };
2019
+ readonly pointCount: {
2020
+ readonly type: "integer";
2021
+ readonly minimum: 3;
2022
+ };
2023
+ readonly innerRadius: {
2024
+ readonly type: "number";
2025
+ readonly minimum: 0;
2026
+ readonly maximum: 1;
2027
+ };
2028
+ readonly startingAngle: {
2029
+ readonly type: "number";
2030
+ };
2031
+ readonly endingAngle: {
2032
+ readonly type: "number";
2033
+ };
2034
+ readonly innerRadiusRatio: {
2035
+ readonly type: "number";
2036
+ readonly minimum: 0;
2037
+ readonly maximum: 1;
2038
+ };
2039
+ readonly svg: {
2040
+ readonly type: "string";
2041
+ readonly minLength: 1;
2042
+ readonly description: "SVG markup cannot be patched in place: core and the Figma plugin reject it. Remove and insert a new SVG node.";
2043
+ };
2044
+ readonly vectorPaths: {
2045
+ readonly type: "array";
2046
+ readonly minItems: 1;
2047
+ readonly items: {
2048
+ readonly $ref: "#/$defs/vectorPath";
2049
+ };
2050
+ };
2051
+ readonly componentId: {
2052
+ readonly type: "string";
2053
+ readonly minLength: 1;
2054
+ readonly description: "Recognised but not patchable yet: core and the Figma plugin reject it with PATCH_SET_UNSUPPORTED. Re-import, or remove and insert the node.";
2055
+ };
2056
+ readonly componentProperties: {
2057
+ readonly description: "Name-keyed upsert of COMPONENT property definitions (not a full wipe). Field null deletes a TEXT/BOOLEAN/INSTANCE_SWAP property. type is immutable after create. INSTANCE_SWAP defaultValue must be a COMPONENT id.";
2058
+ readonly oneOf: readonly [{
2059
+ readonly type: "null";
2060
+ }, {
2061
+ readonly type: "object";
2062
+ readonly additionalProperties: {
2063
+ readonly oneOf: readonly [{
2064
+ readonly type: "null";
2065
+ }, {
2066
+ readonly type: "object";
2067
+ readonly additionalProperties: false;
2068
+ readonly properties: {
2069
+ readonly type: {
2070
+ readonly enum: readonly ["TEXT", "BOOLEAN", "INSTANCE_SWAP"];
2071
+ };
2072
+ readonly defaultValue: {};
2073
+ readonly options: {
2074
+ readonly type: "object";
2075
+ };
2076
+ };
2077
+ }];
2078
+ };
2079
+ }];
2080
+ };
2081
+ readonly instanceProperties: {
2082
+ readonly description: "Shallow-merge instance overrides (authored names). Field null clears that override. Whole-key null clears all. INSTANCE_SWAP values must be COMPONENT ids.";
2083
+ readonly oneOf: readonly [{
2084
+ readonly type: "null";
2085
+ }, {
2086
+ readonly type: "object";
2087
+ }];
2088
+ };
2089
+ readonly componentPropertyReferences: {
2090
+ readonly description: "Shallow-merge onto the node. Field null clears that link. Whole-key null clears all refs. Values are authored property names on the owning COMPONENT.";
2091
+ readonly oneOf: readonly [{
2092
+ readonly type: "null";
2093
+ }, {
2094
+ readonly $ref: "#/$defs/componentPropertyReferencesPatch";
2095
+ }];
2096
+ };
2097
+ readonly variantAxes: {
2098
+ readonly description: "Shallow-merge on COMPONENT_SET. A string array replaces that axis's options and NEVER renames. Object form { rename?, options?, renameOptions? } renames explicitly. Axis null is an error (Figma cannot delete VARIANT properties). Every declared option must be carried by a COMPONENT child after the patch (Figma derives options from child names).";
2099
+ readonly type: "object";
2100
+ readonly additionalProperties: {
2101
+ readonly oneOf: readonly [{
2102
+ readonly type: "null";
2103
+ }, {
2104
+ readonly type: "array";
2105
+ readonly minItems: 1;
2106
+ readonly items: {
2107
+ readonly type: "string";
2108
+ readonly minLength: 1;
2109
+ };
2110
+ readonly uniqueItems: true;
2111
+ }, {
2112
+ readonly type: "object";
2113
+ readonly additionalProperties: false;
2114
+ readonly properties: {
2115
+ readonly rename: {
2116
+ readonly type: "string";
2117
+ readonly minLength: 1;
2118
+ readonly description: "Rename this axis to the given name.";
2119
+ };
2120
+ readonly options: {
2121
+ readonly type: "array";
2122
+ readonly minItems: 1;
2123
+ readonly items: {
2124
+ readonly type: "string";
2125
+ readonly minLength: 1;
2126
+ };
2127
+ readonly uniqueItems: true;
2128
+ readonly description: "Final option list after renameOptions are applied.";
2129
+ };
2130
+ readonly renameOptions: {
2131
+ readonly type: "object";
2132
+ readonly additionalProperties: {
2133
+ readonly type: "string";
2134
+ readonly minLength: 1;
2135
+ };
2136
+ readonly description: "Explicit old→new option renames on this axis (after axis rename, if any).";
2137
+ };
2138
+ };
2139
+ }];
2140
+ };
2141
+ };
2142
+ readonly variant: {
2143
+ readonly description: "Merge variant selection on a COMPONENT inside a COMPONENT_SET. Every axis/value must be declared on the parent variantAxes. Rewrites the component name. Whole-key null and per-axis null are rejected (variant components require a selection).";
2144
+ readonly oneOf: readonly [{
2145
+ readonly type: "null";
2146
+ }, {
2147
+ readonly type: "object";
2148
+ readonly additionalProperties: {
2149
+ readonly type: readonly ["string", "null"];
2150
+ readonly minLength: 1;
2151
+ };
2152
+ }];
2153
+ };
2154
+ readonly operation: {
2155
+ readonly enum: readonly ["UNION", "SUBTRACT", "INTERSECT", "EXCLUDE"];
2156
+ };
2157
+ readonly prototype: {
2158
+ readonly type: "array";
2159
+ readonly items: {
2160
+ readonly $ref: "#/$defs/prototype";
2161
+ };
2162
+ readonly description: "Replace the full reaction list (like runs/effects). [] clears. Destinations must exist (including ids created earlier in the same patch). NAVIGATE/SWAP/OVERLAY destinations must be top-level frames; AFTER_TIMEOUT only on a top-level target. No whole-key null.";
2163
+ };
2164
+ readonly overflowDirection: {
2165
+ readonly enum: readonly ["NONE", "HORIZONTAL", "VERTICAL", "BOTH", "HORIZONTAL_SCROLLING", "VERTICAL_SCROLLING", "HORIZONTAL_AND_VERTICAL_SCROLLING"];
2166
+ };
2167
+ readonly numberOfFixedChildren: {
2168
+ readonly type: "integer";
2169
+ readonly minimum: 0;
2170
+ };
2171
+ readonly styleRefs: {
2172
+ readonly description: "Shallow-merge style refs. Field null clears that ref. Whole-key null clears all styleRefs.";
2173
+ readonly oneOf: readonly [{
2174
+ readonly type: "null";
2175
+ }, {
2176
+ readonly type: "object";
2177
+ readonly additionalProperties: {
2178
+ readonly type: readonly ["string", "null"];
2179
+ };
2180
+ }];
2181
+ };
2182
+ readonly bindings: {
2183
+ readonly description: "Shallow-merge variable bindings. Field null clears that binding. Whole-key null clears all bindings.";
2184
+ readonly oneOf: readonly [{
2185
+ readonly type: "null";
2186
+ }, {
2187
+ readonly type: "object";
2188
+ readonly additionalProperties: {
2189
+ readonly type: readonly ["string", "null"];
2190
+ };
2191
+ }];
2192
+ };
2193
+ readonly variableModes: {
2194
+ readonly description: "Shallow-merge collection→mode. Field null clears that collection mode. Whole-key null clears all.";
2195
+ readonly oneOf: readonly [{
2196
+ readonly type: "null";
2197
+ }, {
2198
+ readonly type: "object";
2199
+ readonly additionalProperties: {
2200
+ readonly type: readonly ["string", "null"];
2201
+ };
2202
+ }];
2203
+ };
2204
+ };
2205
+ readonly not: {
2206
+ readonly anyOf: readonly [{
2207
+ readonly required: readonly ["fill", "fills"];
2208
+ }, {
2209
+ readonly required: readonly ["stroke", "strokes"];
2210
+ }];
2211
+ };
2212
+ };
2213
+ readonly patchOperation: {
2214
+ readonly oneOf: readonly [{
2215
+ readonly type: "object";
2216
+ readonly additionalProperties: false;
2217
+ readonly required: readonly ["op", "id", "set"];
2218
+ readonly properties: {
2219
+ readonly op: {
2220
+ readonly const: "set";
2221
+ };
2222
+ readonly id: {
2223
+ readonly type: "string";
2224
+ };
2225
+ readonly set: {
2226
+ readonly $ref: "#/$defs/patchSet";
2227
+ };
2228
+ };
2229
+ }, {
2230
+ readonly type: "object";
2231
+ readonly additionalProperties: false;
2232
+ readonly required: readonly ["op", "id"];
2233
+ readonly properties: {
2234
+ readonly op: {
2235
+ readonly const: "remove";
2236
+ };
2237
+ readonly id: {
2238
+ readonly type: "string";
2239
+ };
2240
+ };
2241
+ }, {
2242
+ readonly type: "object";
2243
+ readonly additionalProperties: false;
2244
+ readonly required: readonly ["op", "parent", "node"];
2245
+ readonly properties: {
2246
+ readonly op: {
2247
+ readonly const: "append";
2248
+ };
2249
+ readonly parent: {
2250
+ readonly type: "string";
2251
+ };
2252
+ readonly node: {
2253
+ readonly $ref: "#/$defs/node";
2254
+ };
2255
+ };
2256
+ }, {
2257
+ readonly type: "object";
2258
+ readonly additionalProperties: false;
2259
+ readonly required: readonly ["op", "parent", "index", "node"];
2260
+ readonly properties: {
2261
+ readonly op: {
2262
+ readonly const: "insert";
2263
+ };
2264
+ readonly parent: {
2265
+ readonly type: "string";
2266
+ };
2267
+ readonly index: {
2268
+ readonly type: "integer";
2269
+ readonly minimum: 0;
2270
+ };
2271
+ readonly node: {
2272
+ readonly $ref: "#/$defs/node";
2273
+ };
2274
+ };
2275
+ }, {
2276
+ readonly type: "object";
2277
+ readonly additionalProperties: false;
2278
+ readonly required: readonly ["op", "id", "parent", "index"];
2279
+ readonly properties: {
2280
+ readonly op: {
2281
+ readonly const: "move";
2282
+ };
2283
+ readonly id: {
2284
+ readonly type: "string";
2285
+ };
2286
+ readonly parent: {
2287
+ readonly type: "string";
2288
+ };
2289
+ readonly index: {
2290
+ readonly type: "integer";
2291
+ readonly minimum: 0;
2292
+ };
2293
+ };
2294
+ }, {
2295
+ readonly type: "object";
2296
+ readonly additionalProperties: false;
2297
+ readonly required: readonly ["op", "id", "idSuffix"];
2298
+ readonly properties: {
2299
+ readonly op: {
2300
+ readonly const: "duplicate";
2301
+ };
2302
+ readonly id: {
2303
+ readonly type: "string";
2304
+ readonly minLength: 1;
2305
+ readonly description: "Source node to duplicate.";
2306
+ };
2307
+ readonly idSuffix: {
2308
+ readonly type: "string";
2309
+ readonly minLength: 1;
2310
+ readonly description: "Appended to every subtree id unless overridden in ids.";
2311
+ };
2312
+ readonly parent: {
2313
+ readonly type: "string";
2314
+ readonly minLength: 1;
2315
+ readonly description: "Optional new parent; omit to keep the source parent (or page-level for a top-level screen).";
2316
+ };
2317
+ readonly index: {
2318
+ readonly type: "integer";
2319
+ readonly minimum: 0;
2320
+ readonly description: "Optional insert index; default is right after the source when same parent, else end.";
2321
+ };
2322
+ readonly ids: {
2323
+ readonly type: "object";
2324
+ readonly additionalProperties: {
2325
+ readonly type: "string";
2326
+ readonly minLength: 1;
2327
+ };
2328
+ readonly description: "Optional sourceId→newId overrides. Keys must be ids within the source subtree.";
1646
2329
  };
1647
2330
  };
1648
2331
  }];