@multiplatform.one/theme 7.11.0 → 7.16.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.
Files changed (54) hide show
  1. package/README.md +22 -2
  2. package/package.json +6 -6
  3. package/src/audit/constraintAudit.spec.ts +180 -0
  4. package/src/audit/constraintAudit.ts +116 -37
  5. package/src/audit/themeMatrix.ts +4 -1
  6. package/src/figma/figmaTokens.spec.ts +1 -2
  7. package/src/numbers.spec.ts +27 -1
  8. package/src/numbers.ts +40 -0
  9. package/src/theme/Surface.spec.tsx +9 -4
  10. package/src/theme/createDefaultThemeConfig.ts +8 -1
  11. package/src/theme/createThemes.ts +43 -6
  12. package/src/theme/index.ts +3 -0
  13. package/src/theme/intent.spec.tsx +9 -7
  14. package/src/theme/layoutTokensHooks.spec.tsx +3 -2
  15. package/src/theme/radiusClass.ts +18 -0
  16. package/src/theme/resolveKnobs.spec.ts +73 -7
  17. package/src/theme/resolveKnobs.ts +99 -25
  18. package/src/theme/semanticEntryText.spec.ts +85 -0
  19. package/src/theme/sizeRecipes.ts +8 -5
  20. package/src/theme/subsetThemes.spec.ts +102 -0
  21. package/src/theme/subsetThemes.ts +56 -0
  22. package/src/theme/theme.tsx +15 -5
  23. package/src/theme/transitionProps.native.ts +15 -0
  24. package/src/theme/transitionProps.spec.ts +14 -0
  25. package/src/theme/transitionProps.ts +16 -0
  26. package/src/theme/useResolvedKnobs.hydration.spec.tsx +141 -0
  27. package/src/theme/useResolvedKnobs.ts +28 -22
  28. package/src/theme/useResolvedKnobsBehavior.spec.tsx +15 -1
  29. package/src/theme/useTouchSurface.ts +8 -0
  30. package/types/audit/constraintAudit.d.ts.map +1 -1
  31. package/types/audit/themeMatrix.d.ts.map +1 -1
  32. package/types/numbers.d.ts +12 -0
  33. package/types/numbers.d.ts.map +1 -1
  34. package/types/theme/createDefaultThemeConfig.d.ts +7 -0
  35. package/types/theme/createDefaultThemeConfig.d.ts.map +1 -1
  36. package/types/theme/createThemes.d.ts.map +1 -1
  37. package/types/theme/index.d.ts +3 -0
  38. package/types/theme/index.d.ts.map +1 -1
  39. package/types/theme/radiusClass.d.ts +14 -0
  40. package/types/theme/radiusClass.d.ts.map +1 -1
  41. package/types/theme/resolveKnobs.d.ts +35 -1
  42. package/types/theme/resolveKnobs.d.ts.map +1 -1
  43. package/types/theme/sizeRecipes.d.ts +8 -5
  44. package/types/theme/sizeRecipes.d.ts.map +1 -1
  45. package/types/theme/subsetThemes.d.ts +39 -0
  46. package/types/theme/subsetThemes.d.ts.map +1 -0
  47. package/types/theme/theme.d.ts.map +1 -1
  48. package/types/theme/transitionProps.d.ts +14 -0
  49. package/types/theme/transitionProps.d.ts.map +1 -0
  50. package/types/theme/transitionProps.native.d.ts +13 -0
  51. package/types/theme/transitionProps.native.d.ts.map +1 -0
  52. package/types/theme/useResolvedKnobs.d.ts.map +1 -1
  53. package/types/theme/useTouchSurface.d.ts +3 -0
  54. package/types/theme/useTouchSurface.d.ts.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,MAAM,IAAI,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAE5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,MAAM,IAAI,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
@@ -64,6 +64,20 @@ export interface RadiusClassDeclaration {
64
64
  * <Frame {...radiusClassProps("R-IDENTITY", "Avatar")} circular />
65
65
  */
66
66
  export declare function radiusClassProps(radiusClass: KnobImmuneRadiusClass, part: string): RadiusClassDeclaration;
67
+ export interface RadiusResolutionDeclaration {
68
+ "data-radius-resolution": "BINARY";
69
+ }
70
+ /**
71
+ * Declare that a part resolves through the BINARY row (DG-RAD-03), so the
72
+ * constraint audit measures it as 0 or half its own shorter edge. The token
73
+ * scale has no h/2 value, so an undeclared thumb or track reads off-scale at
74
+ * every stop. Spread it only where the painted radius IS the resolved one: a
75
+ * consumer radius override ejects the part from the class.
76
+ *
77
+ * @example
78
+ * <StyledSwitch.Thumb {...radiusResolutionProps("BINARY")} borderRadius={thumbRadius} />
79
+ */
80
+ export declare function radiusResolutionProps(radiusClass: "BINARY"): RadiusResolutionDeclaration;
67
81
  /**
68
82
  * The geometry a doctrine cell may need. `h/2` cells need the part's own
69
83
  * painted height (shorter edge); CONTAINER-CAP cells need the container's own
@@ -1 +1 @@
1
- {"version":3,"file":"radiusClass.d.ts","sourceRoot":"","sources":["../../src/theme/radiusClass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAEL,6BAA6B,EAE7B,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,qBAAqB,EAClC,IAAI,EAAE,MAAM,GACX,sBAAsB,CAExB;AAID;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqCD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,qBAAqB,EAClC,IAAI,EAAE,YAAY,EAClB,QAAQ,GAAE,mBAAwB,GACjC,MAAM,CAcR;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAG/E;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,mCAAmC;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,MAAM,EAAE,oBAAoB,CAAC;IAC7B,uEAAuE;IACvE,WAAW,EAAE,qBAAqB,CAAC;IACnC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,kBAAkB,CAkC7F"}
1
+ {"version":3,"file":"radiusClass.d.ts","sourceRoot":"","sources":["../../src/theme/radiusClass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAEL,6BAA6B,EAE7B,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,qBAAqB,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,qBAAqB,EAClC,IAAI,EAAE,MAAM,GACX,sBAAsB,CAExB;AAED,MAAM,WAAW,2BAA2B;IAC1C,wBAAwB,EAAE,QAAQ,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,2BAA2B,CAExF;AAID;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqCD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,qBAAqB,EAClC,IAAI,EAAE,YAAY,EAClB,QAAQ,GAAE,mBAAwB,GACjC,MAAM,CAcR;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAG/E;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,mCAAmC;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,MAAM,EAAE,oBAAoB,CAAC;IAC7B,uEAAuE;IACvE,WAAW,EAAE,qBAAqB,CAAC;IACnC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,kBAAkB,CAkC7F"}
@@ -40,9 +40,43 @@ export declare function resolvePageTitleScale(scale: PageTitleScale): {
40
40
  * while it fits, or the padding px number once the token would exceed it.
41
41
  */
42
42
  export declare function capContainerRadius(borderRadius: Knobs["borderRadius"], space: Knobs["space"]): string | number;
43
+ /**
44
+ * The borderRadius knob stop a `borderRadiusMap` token came from, so a part
45
+ * can resolve its DG-RAD class at that stop. Undefined for any value the
46
+ * knob did not produce.
47
+ */
48
+ export declare function radiusStopFromToken(token: unknown): Knobs["borderRadius"] | undefined;
49
+ /**
50
+ * Containers the constraint audit measures against the cap (DG-RAD-04).
51
+ * `StackedRow` is one row of a vertical stack: it also carries
52
+ * `data-stack-position`, and only its outer corners take the cap.
53
+ * `OwnInset` pads with a fixed token instead of panelPadding, so the audit
54
+ * caps it at its measured padding and ignores the space stop.
55
+ */
56
+ export type CappedContainer = "PageSection" | "TextArea" | "StackedRow" | "OwnInset";
57
+ export interface ContainerCapDeclaration {
58
+ "data-constraint-container": CappedContainer;
59
+ "data-radius-knob": Knobs["borderRadius"];
60
+ "data-space-knob": Knobs["space"];
61
+ }
62
+ /**
63
+ * Declare a container that spreads `containerRadius`, with the knob stops it
64
+ * resolved, so the constraint audit checks its painted corners against
65
+ * `capContainerRadius` for those stops. The cap is a padding px value, not a
66
+ * radius token, so an undeclared capped container reads off-scale at `full`.
67
+ * Returns nothing when `radiusToken` is not a `borderRadiusMap` token or
68
+ * `space` is not a space stop: a part whose radius did not come from the knob
69
+ * makes no claim.
70
+ *
71
+ * @example
72
+ * <YStack {...knobProps.containerRadius} {...containerCapProps("PageSection", knobProps.borderRadius.borderRadius, knobProps.space)} />
73
+ */
74
+ export declare function containerCapProps(container: CappedContainer, radiusToken: unknown, space: string): ContainerCapDeclaration | undefined;
43
75
  export declare const elevationMap: Record<string, string | number | undefined>;
44
76
  export declare const overlayElevationMap: Record<string, string | number | undefined>;
45
77
  /** Scheme the resolver was invoked with. Defaults light so unit tests stay stable. */
46
78
  export type ColorScheme = "light" | "dark";
47
- export declare function resolveKnobs(knobs: Knobs, override?: KnobPropsOverride, scheme?: ColorScheme): ResolvedKnobs;
79
+ export declare function resolveKnobs(knobs: Knobs, override?: KnobPropsOverride, scheme?: ColorScheme, environment?: {
80
+ touch?: boolean;
81
+ }): ResolvedKnobs;
48
82
  //# sourceMappingURL=resolveKnobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/resolveKnobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAU9D,OAAO,KAAK,EAA8B,KAAK,EAAE,cAAc,EAAc,MAAM,SAAS,CAAC;AAE7F,OAAO,KAAK,EAOV,iBAAiB,EAEjB,aAAa,EAEd,MAAM,WAAW,CAAC;AAKnB;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAI/D,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAIlE,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAU3E;AAID,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAqDX;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAErF;AA0BD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,EACnC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GACpB,MAAM,GAAG,MAAM,CAIjB;AAqFD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEZ,CAAC;AAE1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnB,CAAC;AAE1D,sFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AA2N3C,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,MAAM,GAAE,WAAqB,GAC5B,aAAa,CAyNf"}
1
+ {"version":3,"file":"resolveKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/resolveKnobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAU9D,OAAO,KAAK,EAA8B,KAAK,EAAE,cAAc,EAAc,MAAM,SAAS,CAAC;AAE7F,OAAO,KAAK,EAOV,iBAAiB,EAEjB,aAAa,EAEd,MAAM,WAAW,CAAC;AAKnB;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAI/D,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAIlE,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAU3E;AAID,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAqDX;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAErF;AA0BD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,EACnC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GACpB,MAAM,GAAG,MAAM,CAIjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAIrF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;AAErF,MAAM,WAAW,uBAAuB;IACtC,2BAA2B,EAAE,eAAe,CAAC;IAC7C,kBAAkB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1C,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,MAAM,GACZ,uBAAuB,GAAG,SAAS,CAQrC;AAuFD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEL,CAAC;AAEjE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnB,CAAC;AAE1D,sFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AA8O3C,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,MAAM,GAAE,WAAqB,EAC7B,WAAW,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,aAAa,CAyNf"}
@@ -68,14 +68,17 @@ export declare function sizeRecipeForToken(token: string, options?: {
68
68
  /**
69
69
  * Identity helper for the LC-65 SIZE-RECIPE ESCAPE lint
70
70
  * (`scripts/lint-conventions.mjs`). Wrap a numeric height / minHeight /
71
- * paddingHorizontal / fontSize that must stay a literal:
71
+ * paddingHorizontal / fontSize that must stay a literal, and say why:
72
72
  *
73
- * height={sizeRecipeEscape(20)}
73
+ * height={sizeRecipeEscape(20, "toolbar chrome match")}
74
74
  *
75
- * Or comment `// size-recipe-escape:` on the previous line or same
76
- * statement. Pilot: Button/, InputParts/, fields/Select/.
75
+ * Or write the same reason in a `size-recipe-escape:` line comment on the
76
+ * previous line or same statement. Pilot: Button/, InputParts/,
77
+ * fields/Select/. Either way the file and the reason must be a row in
78
+ * `docs/theme-propagation-spec.md` `## Size-recipe escapes` (MPO-23, `00` L8
79
+ * E8); an undeclared escape fails `lint-conventions`.
77
80
  */
78
- export declare function sizeRecipeEscape<T>(value: T): T;
81
+ export declare function sizeRecipeEscape<T>(value: T, _reason?: string): T;
79
82
  /**
80
83
  * LC-84 TEXT-INSET — optical vertical inset of a text field, never larger
81
84
  * than the recipe padX. Extra horizontal space is legal only when an icon
@@ -1 +1 @@
1
- {"version":3,"file":"sizeRecipes.d.ts","sourceRoot":"","sources":["../../src/theme/sizeRecipes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AA0BxB;;;GAGG;AACH,eAAO,MAAM,cAAc,yCAAmB,CAAC;AAE/C,oFAAoF;AACpF,eAAO,MAAM,WAAW,4BAAiC,CAAC;AAC1D,eAAO,MAAM,qBAAqB,+DAAqC,CAAC;AACxE,eAAO,MAAM,sBAAsB,gEAAsC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,gEAAsC,CAAC;AAC1E,eAAO,MAAM,mBAAmB,wBAAiC,CAAC;AAClE,eAAO,MAAM,yBAAyB,wBAAsC,CAAC;AAC7E,eAAO,MAAM,iBAAiB,wBAA+B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,2CAAgC,CAAC;AAChE,eAAO,MAAM,0BAA0B,2CAAuC,CAAC;AAE/E,eAAO,MAAM,wBAAwB,wCAAyC,CAAC;AAE/E;;;;GAIG;AACH,eAAO,MAAM,cAAc,sCAAgB,CAAC;AAE5C,wBAAgB,iBAAiB,IAAI,OAAO,cAAc,CAEzD;AAyBD,oGAAoG;AACpG,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,oBAAoB,CAE7F;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,gBAA4B,GAAG,gBAAgB,CAExF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAY,CAAC,QAAQ,CAAyB,GACrD,UAAU,CAEZ;AAOD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAC3C,UAAU,CAQZ;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;CAAE,GAC1E,UAAU,CAKZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,mBAAmB,GAAG,UAAU,CAAC,GACpE,MAAM,CAER"}
1
+ {"version":3,"file":"sizeRecipes.d.ts","sourceRoot":"","sources":["../../src/theme/sizeRecipes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gCAAgC,EAChC,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AA0BxB;;;GAGG;AACH,eAAO,MAAM,cAAc,yCAAmB,CAAC;AAE/C,oFAAoF;AACpF,eAAO,MAAM,WAAW,4BAAiC,CAAC;AAC1D,eAAO,MAAM,qBAAqB,+DAAqC,CAAC;AACxE,eAAO,MAAM,sBAAsB,gEAAsC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,gEAAsC,CAAC;AAC1E,eAAO,MAAM,mBAAmB,wBAAiC,CAAC;AAClE,eAAO,MAAM,yBAAyB,wBAAsC,CAAC;AAC7E,eAAO,MAAM,iBAAiB,wBAA+B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,2CAAgC,CAAC;AAChE,eAAO,MAAM,0BAA0B,2CAAuC,CAAC;AAE/E,eAAO,MAAM,wBAAwB,wCAAyC,CAAC;AAE/E;;;;GAIG;AACH,eAAO,MAAM,cAAc,sCAAgB,CAAC;AAE5C,wBAAgB,iBAAiB,IAAI,OAAO,cAAc,CAEzD;AAyBD,oGAAoG;AACpG,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,oBAAoB,CAE7F;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,gBAA4B,GAAG,gBAAgB,CAExF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAY,CAAC,QAAQ,CAAyB,GACrD,UAAU,CAEZ;AAOD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAC3C,UAAU,CAQZ;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;CAAE,GAC1E,UAAU,CAKZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAEjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,mBAAmB,GAAG,UAAU,CAAC,GACpE,MAAM,CAER"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The themes one surface can reach (`10` AC-6, MPO-23).
3
+ *
4
+ * Themes are emitted into the served document as CSS, so a surface pays for
5
+ * every theme it will never enter. shc measured it on the live storefront:
6
+ * 721,818 of 1,232,058 decompressed bytes were the theme sheet, 921 classes of
7
+ * which the rendered routes asked for seven, and building the same house
8
+ * config over a named subset cut the sheet from 697,788 to 186,158 bytes
9
+ * (`shc/packages/themes/storefront.ts`). This is that subset as a pure
10
+ * function over the built matrix, so every app can do it the same way.
11
+ *
12
+ * It filters WHICH themes exist, never what a theme contains: `$color5` means
13
+ * the same thing in every theme that survives. A subset is a loaded gun, all
14
+ * the same. A component whose sub-theme was dropped does not crash, it renders
15
+ * in its parent's colours, so list everything the surface renders.
16
+ */
17
+ export interface ThemeSubset {
18
+ /**
19
+ * Component sub-themes the surface renders, by Tamagui componentName
20
+ * (`Button`, `Input`, `ListItem`, `SelectTrigger`, …). Tamagui enters one
21
+ * by rendering the component, so this is "which components exist on this
22
+ * surface", not a style choice.
23
+ */
24
+ components: readonly string[];
25
+ /**
26
+ * Named themes the surface can enter beside the bare `light`/`dark`
27
+ * schemes: `accent`, the semantic children (`error`, `success`,
28
+ * `warning`), Tamagui's state children (`active`, `alt1`, `alt2`), and any
29
+ * decorative hue a `theme="…"` or `<Theme name="…">` on the surface names.
30
+ */
31
+ tints: readonly string[];
32
+ }
33
+ /**
34
+ * Keep a theme when its component suffix (if any) is in `components` and
35
+ * every other non-scheme segment of its name is in `tints`. Names are
36
+ * `[light|dark_]<tint>*[_Component]`, so `light` and `dark` always survive.
37
+ */
38
+ export declare function subsetThemes<T>(themes: Record<string, T>, subset: ThemeSubset): Record<string, T>;
39
+ //# sourceMappingURL=subsetThemes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsetThemes.d.ts","sourceRoot":"","sources":["../../src/theme/subsetThemes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAejG"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/theme/theme.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,kBAAkB,EAAmB,KAAK,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAS/C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI,CAkB5D;AAMD,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CACjD,SAAQ,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAC;IAChF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,UAAU,CAAC,cAAc,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC;AAMD,wBAAgB,aAAa,CAAC,CAAC,SAAS,kBAAkB,EAAE,EAC1D,QAAQ,EACR,MAAM,EACN,WAAqB,EACrB,GAAG,YAAY,EAChB,EAAE,kBAAkB,CAAC,CAAC,CAAC,2CAiFvB"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/theme/theme.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,kBAAkB,EAEvB,KAAK,oBAAoB,EAE1B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAS/C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI,CAkB5D;AAMD,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CACjD,SAAQ,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAC;IAChF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,UAAU,CAAC,cAAc,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC;AAMD,wBAAgB,aAAa,CAAC,CAAC,SAAS,kBAAkB,EAAE,EAC1D,QAAQ,EACR,MAAM,EACN,WAAqB,EACrB,GAAG,YAAY,EAChB,EAAE,kBAAkB,CAAC,CAAC,CAAC,2CAsFvB"}
@@ -0,0 +1,14 @@
1
+ import type { TransitionProp } from "tamagui";
2
+ /**
3
+ * Spreadable `transition` for a part that rides the animation knob.
4
+ *
5
+ * Tamagui decides whether a component runs its animation hooks from
6
+ * `"transition" in props`, so a part that drops the key at animation `none`
7
+ * throws "Rendered more hooks than during the previous render" the moment the
8
+ * knob flips to any other stop (MPO-327). On web the key therefore stays, and
9
+ * an undefined value paints no CSS transition. The native twin differs.
10
+ */
11
+ export declare function transitionProps(transition: TransitionProp | undefined): {
12
+ transition?: TransitionProp;
13
+ };
14
+ //# sourceMappingURL=transitionProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitionProps.d.ts","sourceRoot":"","sources":["../../src/theme/transitionProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,GAAG;IACvE,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAEA"}
@@ -0,0 +1,13 @@
1
+ import type { TransitionProp } from "tamagui";
2
+ /**
3
+ * Native twin of `transitionProps.ts`.
4
+ *
5
+ * The React Native driver resolves an undefined `transition` to an empty
6
+ * config and animates with a default spring (LC-59), so keeping the key at
7
+ * animation `none` would put motion on every part that is meant to be still.
8
+ * Native keeps omitting it until the driver has an instant token to pass.
9
+ */
10
+ export declare function transitionProps(transition: TransitionProp | undefined): {
11
+ transition?: TransitionProp;
12
+ };
13
+ //# sourceMappingURL=transitionProps.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitionProps.native.d.ts","sourceRoot":"","sources":["../../src/theme/transitionProps.native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,GAAG;IACvE,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAEA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useResolvedKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/useResolvedKnobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,SAAS,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAWlE,eAAO,MAAM,aAAa,wCAAqC,CAAC;AAEhE,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAsDD,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,mCAAmC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAYD,eAAO,MAAM,kBAAkB,aAA2C,CAAC;AAE3E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,aAAa,CAqGjF"}
1
+ {"version":3,"file":"useResolvedKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/useResolvedKnobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,SAAS,CAAC;AAIxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAWlE,eAAO,MAAM,aAAa,wCAAqC,CAAC;AAEhE,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAyDD,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,mCAAmC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAYD,eAAO,MAAM,kBAAkB,aAA2C,CAAC;AAE3E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,aAAa,CAuGjF"}
@@ -0,0 +1,3 @@
1
+ /** Match web SSR before adopting touch geometry. Native applies its floor immediately. */
2
+ export declare function useTouchSurface(): boolean;
3
+ //# sourceMappingURL=useTouchSurface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTouchSurface.d.ts","sourceRoot":"","sources":["../../src/theme/useTouchSurface.ts"],"names":[],"mappings":"AAGA,0FAA0F;AAC1F,wBAAgB,eAAe,IAAI,OAAO,CAGzC"}