@multiplatform.one/forms 7.88.7 → 7.88.8

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 (253) hide show
  1. package/dist/cjs/AdaptivePopup/index.native.js +2 -2
  2. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  3. package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
  4. package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
  5. package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
  6. package/dist/cjs/Button/index.cjs +30 -14
  7. package/dist/cjs/Button/index.native.js +40 -24
  8. package/dist/cjs/Button/index.native.js.map +1 -1
  9. package/dist/cjs/Button/webGlass.native.js.map +1 -1
  10. package/dist/cjs/Chip/index.native.js.map +1 -1
  11. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  12. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  13. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  14. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  15. package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
  16. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  17. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  18. package/dist/cjs/ControlGroup/index.native.js +1 -1
  19. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  20. package/dist/cjs/DescriptionList/index.native.js +2 -2
  21. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  22. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  23. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  24. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  25. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  26. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  27. package/dist/cjs/FieldGroup.native.js.map +1 -1
  28. package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
  29. package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -1
  30. package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
  31. package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -1
  32. package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
  33. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
  34. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  35. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
  36. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
  37. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  38. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
  39. package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
  40. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  41. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  42. package/dist/cjs/Form/index.native.js +1 -1
  43. package/dist/cjs/Form/index.native.js.map +1 -1
  44. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  45. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  46. package/dist/cjs/FormGrid.native.js.map +1 -1
  47. package/dist/cjs/FormSection.native.js.map +1 -1
  48. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  49. package/dist/cjs/InputParts/index.native.js.map +1 -1
  50. package/dist/cjs/InputParts/keyboardAppearance.native.js.map +1 -1
  51. package/dist/cjs/Label/index.native.js.map +1 -1
  52. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  53. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  54. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  55. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  56. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  57. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  58. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  59. package/dist/cjs/Table/index.native.js.map +1 -1
  60. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  61. package/dist/cjs/Wheel/index.native.js.map +1 -1
  62. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  63. package/dist/cjs/actionLabel.native.js.map +1 -1
  64. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  65. package/dist/cjs/fieldLayout.native.js +1 -1
  66. package/dist/cjs/fieldLayout.native.js.map +1 -1
  67. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  68. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
  69. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  70. package/dist/cjs/fields/Barcode/index.native.js +2 -2
  71. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  72. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  73. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  74. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
  75. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  76. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  77. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  78. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  79. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
  80. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  81. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  82. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  83. package/dist/cjs/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  84. package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
  85. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  86. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  87. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  88. package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  89. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  90. package/dist/cjs/fields/Combobox/index.native.js +5 -5
  91. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  92. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  93. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  94. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  95. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  96. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  97. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
  98. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  99. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  100. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  101. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  102. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
  103. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  104. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  105. package/dist/cjs/fields/DatePicker/index.native.js +2 -2
  106. package/dist/cjs/fields/DatePicker/parts.native.js +2 -2
  107. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  108. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  109. package/dist/cjs/fields/Duration/DurationWheel.native.js +1 -1
  110. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  111. package/dist/cjs/fields/Duration/durationWheelTypes.native.js.map +1 -1
  112. package/dist/cjs/fields/Duration/index.native.js +3 -3
  113. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  114. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  115. package/dist/cjs/fields/FileUpload/index.native.js +2 -2
  116. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  117. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  118. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  119. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  120. package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
  121. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
  122. package/dist/cjs/fields/Geolocation/index.native.js +5 -5
  123. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  124. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  125. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  126. package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  127. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  128. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  129. package/dist/cjs/fields/Icon/index.native.js +3 -3
  130. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  131. package/dist/cjs/fields/ImageField/index.native.js +2 -2
  132. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  133. package/dist/cjs/fields/Input/index.native.js +3 -3
  134. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  135. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  136. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  137. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  138. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  139. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  140. package/dist/cjs/fields/OTPInput/otpCellEdge.native.js.map +1 -1
  141. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  142. package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
  143. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  144. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  145. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  146. package/dist/cjs/fields/Progress/index.native.js +1 -1
  147. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  148. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  149. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  150. package/dist/cjs/fields/Rating/index.native.js +1 -1
  151. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  152. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  153. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  154. package/dist/cjs/fields/SearchInput/index.native.js +2 -2
  155. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  156. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  157. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
  158. package/dist/cjs/fields/Select/index.native.js +4 -4
  159. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  160. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  161. package/dist/cjs/fields/Signature/index.native.js +2 -2
  162. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  163. package/dist/cjs/fields/Slider/index.native.js +1 -1
  164. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  165. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  166. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  167. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  168. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  169. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  170. package/dist/cjs/fields/Switch/index.native.js +2 -2
  171. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  172. package/dist/cjs/fields/TextArea/index.native.js +2 -2
  173. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  174. package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
  175. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  176. package/dist/cjs/fields/TimePicker/index.native.js +2 -2
  177. package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
  178. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  179. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  180. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
  181. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  182. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
  183. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  184. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +1 -1
  185. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  186. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  187. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  188. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  189. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  190. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  191. package/dist/cjs/formSpacing.native.js.map +1 -1
  192. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  193. package/dist/cjs/index.native.js +45 -45
  194. package/dist/cjs/index.native.js.map +1 -1
  195. package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
  196. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  197. package/dist/cjs/keyboard/index.native.js.map +1 -1
  198. package/dist/cjs/keyboard/types.native.js.map +1 -1
  199. package/dist/cjs/requiredMarking.native.js.map +1 -1
  200. package/dist/cjs/shared/CheckGlyph.native.js.map +1 -1
  201. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  202. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  203. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  204. package/dist/cjs/shared/checkedOnField.native.js.map +1 -1
  205. package/dist/cjs/shared/choiceRowPress.native.js.map +1 -1
  206. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  207. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  208. package/dist/cjs/shared/fieldRowContext.native.js.map +1 -1
  209. package/dist/cjs/shared/floatingList.native.js +1 -1
  210. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  211. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  212. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  213. package/dist/cjs/shared/i18n.native.js.map +1 -1
  214. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  215. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  216. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  217. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -1
  218. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  219. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  220. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  221. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  222. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  223. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
  224. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
  225. package/dist/cjs/shared/systemControls.native.js.map +1 -1
  226. package/dist/cjs/shared/t.native.js.map +1 -1
  227. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  228. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  229. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  230. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  231. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  232. package/dist/cjs/shared/utils.native.js +1 -1
  233. package/dist/cjs/shared/utils.native.js.map +1 -1
  234. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  235. package/dist/cjs/standardActions.native.js.map +1 -1
  236. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  237. package/dist/cjs/types.native.js.map +1 -1
  238. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  239. package/dist/esm/Button/index.mjs +30 -14
  240. package/dist/esm/Button/index.mjs.map +1 -1
  241. package/dist/esm/Button/index.native.js +38 -22
  242. package/dist/esm/Button/index.native.js.map +1 -1
  243. package/dist/jsx/Button/index.mjs +30 -14
  244. package/dist/jsx/Button/index.mjs.map +1 -1
  245. package/dist/jsx/Button/index.native.js +38 -22
  246. package/dist/jsx/Button/index.native.js.map +1 -1
  247. package/package.json +8 -8
  248. package/src/Button/Button.accentInk.spec.tsx +13 -1
  249. package/src/Button/Button.iconButton.spec.tsx +55 -14
  250. package/src/Button/Button.scopeFlip.native.spec.tsx +208 -0
  251. package/src/Button/Button.scopeFlip.spec.tsx +350 -0
  252. package/src/Button/index.tsx +30 -16
  253. package/types/Button/index.d.ts.map +1 -1
@@ -0,0 +1,350 @@
1
+ /**
2
+ * @vitest-environment jsdom
3
+ *
4
+ * FZ-9617: a Button read some of its paints from the host scope's theme at
5
+ * render and painted the literal: the keyboard ring, a framed circle's plate
6
+ * ink, an icon button's hover and press washes and the bar glyph tint. A
7
+ * light/dark flip that moves only the root's t_light/t_dark class never
8
+ * re-renders the Button, so each kept the old scheme's colour. On web they now
9
+ * paint `var(--mp-host-*)` aliases that a span outside the intent and
10
+ * component themes declares.
11
+ *
12
+ * jsdom cascades no Tamagui CSS, so this reads what each node asks for: the
13
+ * atomic class, the injected rule behind it, the `--mp-host-*` alias on the
14
+ * ancestor that declares it, and for a `var(--token)` the house theme table of
15
+ * the scope that declares it.
16
+ */
17
+
18
+ import { PlusIcon } from "@phosphor-icons/react";
19
+ import { cleanup, render, screen } from "@testing-library/react";
20
+ import {
21
+ createDefaultThemeConfig,
22
+ createThemesBuilder,
23
+ defaultAccentTheme,
24
+ defaultBaseTheme,
25
+ defaultBuilderOptions,
26
+ type Knobs,
27
+ Preset,
28
+ Surface,
29
+ } from "@multiplatform.one/theme";
30
+ import type { ReactElement } from "react";
31
+ import { TamaguiProvider, YStack } from "tamagui";
32
+ import { afterEach, describe, expect, it } from "vitest";
33
+ import { Button } from "./index";
34
+
35
+ afterEach(() => {
36
+ cleanup();
37
+ document.documentElement.className = "";
38
+ });
39
+
40
+ const houseConfig = createDefaultThemeConfig();
41
+ const houseThemes = createThemesBuilder(
42
+ defaultBaseTheme,
43
+ defaultAccentTheme,
44
+ defaultBuilderOptions,
45
+ ).themes() as Record<string, Record<string, string>>;
46
+
47
+ const FLIPS = [
48
+ ["light", "dark"],
49
+ ["dark", "light"],
50
+ ] as const;
51
+ type Scheme = (typeof FLIPS)[number][number];
52
+
53
+ function* styleRules(rules: CSSRuleList): Generator<CSSStyleRule> {
54
+ for (const rule of Array.from(rules)) {
55
+ if (rule instanceof CSSStyleRule) yield rule;
56
+ else if ("cssRules" in rule) yield* styleRules((rule as CSSGroupingRule).cssRules);
57
+ }
58
+ }
59
+
60
+ function injectedRuleValue(className: string, property: string): string {
61
+ const selector = new RegExp(`\\.${className.replace(/[^\w-]/g, "\\$&")}(?![\\w-])`);
62
+ for (const sheet of Array.from(document.styleSheets)) {
63
+ for (const rule of styleRules(sheet.cssRules)) {
64
+ if (!selector.test(rule.selectorText)) continue;
65
+ const value = rule.style.getPropertyValue(property);
66
+ if (value) return value.trim();
67
+ }
68
+ }
69
+ throw new Error(`no injected ${property} rule for .${className}`);
70
+ }
71
+
72
+ /** The theme a node's custom properties resolve in: its scheme and sub-theme path. */
73
+ function themeOf(el: Element): string {
74
+ let sub: string | null = null;
75
+ for (let node: Element | null = el; node; node = node.parentElement) {
76
+ const classes = Array.from(node.classList);
77
+ const scheme = classes.includes("t_dark")
78
+ ? "dark"
79
+ : classes.includes("t_light")
80
+ ? "light"
81
+ : null;
82
+ const names = classes
83
+ .filter((c) => c.startsWith("t_") && !["t_sub_theme", "t_light", "t_dark"].includes(c))
84
+ .map((c) => c.slice(2));
85
+ if (sub === null && names.length) sub = names.sort((a, b) => b.length - a.length)[0];
86
+ if (scheme) return sub ? `${scheme}_${sub}` : scheme;
87
+ }
88
+ throw new Error("no scheme above this node");
89
+ }
90
+
91
+ function tokenIn(themeName: string, token: string): string {
92
+ const parts = themeName.split("_");
93
+ for (let end = parts.length; end > 0; end--) {
94
+ const hit = houseThemes[parts.slice(0, end).join("_")]?.[token];
95
+ if (hit) return hit;
96
+ }
97
+ throw new Error(`--${token} resolves nowhere in ${themeName}`);
98
+ }
99
+
100
+ /** What `value` paints on `el`, following aliases to the scope that declares them. */
101
+ function resolveOn(el: Element, value: string): string {
102
+ const name = value.match(/^var\((--[\w-]+)\)$/)?.[1];
103
+ if (!name) return value;
104
+ for (let node: Element | null = el; node; node = node.parentElement) {
105
+ const declared = (node as HTMLElement).style?.getPropertyValue(name);
106
+ if (declared) return resolveOn(node, declared.trim());
107
+ }
108
+ return tokenIn(themeOf(el), name.slice(2));
109
+ }
110
+
111
+ const PSEUDO = /^_[a-zA-Z]+-0(hover|active|focus|press|focus-visible)-/;
112
+
113
+ /** What `el` paints for one atomic property, at rest or under `pseudo`. */
114
+ function painted(el: Element, prefix: string, property: string, pseudo?: string): string | null {
115
+ const cls = Array.from(el.classList).find((c) =>
116
+ pseudo ? c.startsWith(`${prefix}0${pseudo}-`) : c.startsWith(prefix) && !PSEUDO.test(c),
117
+ );
118
+ return cls ? resolveOn(el, injectedRuleValue(cls, property)) : null;
119
+ }
120
+
121
+ /** An svg's fill, following `currentColor` to the CSS colour it inherits. */
122
+ function glyphFill(svg: Element): string | null {
123
+ const fill = svg.getAttribute("fill");
124
+ if (fill !== "currentColor") return fill;
125
+ for (let node = svg.parentElement; node; node = node.parentElement) {
126
+ const ink = painted(node, "_col-", "color");
127
+ if (ink) return ink;
128
+ }
129
+ return null;
130
+ }
131
+
132
+ function frameOf(name: string): HTMLElement {
133
+ return (screen.queryByRole("button", { name }) ??
134
+ screen.getByText(name).closest("[role=button]")) as HTMLElement;
135
+ }
136
+
137
+ function swapRootScheme(from: Scheme, to: Scheme) {
138
+ const root = document.querySelector("[data-scope-root]");
139
+ for (const el of Array.from(document.querySelectorAll(`.t_${from}`))) {
140
+ if (root && !el.contains(root)) continue;
141
+ el.classList.replace(`t_${from}`, `t_${to}`);
142
+ }
143
+ }
144
+
145
+ function mount(scheme: Scheme, tree: ReactElement) {
146
+ return render(
147
+ <TamaguiProvider config={houseConfig.tamagui} defaultTheme={scheme} disableInjectCSS>
148
+ <YStack backgroundColor="$background" data-scope-root="">
149
+ {tree}
150
+ </YStack>
151
+ </TamaguiProvider>,
152
+ );
153
+ }
154
+
155
+ function expectFlipFollows<T>(from: Scheme, to: Scheme, tree: ReactElement, read: () => T): T {
156
+ mount(to, tree);
157
+ const fresh = read();
158
+ cleanup();
159
+ mount(from, tree);
160
+ swapRootScheme(from, to);
161
+ try {
162
+ expect(read()).toEqual(fresh);
163
+ } finally {
164
+ swapRootScheme(to, from);
165
+ }
166
+ return fresh;
167
+ }
168
+
169
+ const RING_BUTTONS: [string, ReactElement][] = [
170
+ ["plain", <Button key="b">Go</Button>],
171
+ [
172
+ "outlined",
173
+ <Button key="b" outlined>
174
+ Go
175
+ </Button>,
176
+ ],
177
+ [
178
+ "chromeless",
179
+ <Button key="b" chromeless>
180
+ Go
181
+ </Button>,
182
+ ],
183
+ [
184
+ "accent",
185
+ <Button key="b" accent>
186
+ Go
187
+ </Button>,
188
+ ],
189
+ [
190
+ "error",
191
+ <Button key="b" error>
192
+ Go
193
+ </Button>,
194
+ ],
195
+ [
196
+ 'theme="accent" outlined',
197
+ <Button key="b" theme="accent" outlined>
198
+ Go
199
+ </Button>,
200
+ ],
201
+ ["icon-only", <Button key="b" icon={PlusIcon} aria-label="Go" />],
202
+ ];
203
+
204
+ describe("FZ-9617 DG-A11Y-01: a focused Button's ring follows a class-only root flip", () => {
205
+ for (const [from, to] of FLIPS) {
206
+ for (const [name, button] of RING_BUTTONS) {
207
+ it(`${from} -> ${to} ${name}: the ring is the host scope's $outlineColor`, () => {
208
+ const ring = expectFlipFollows(from, to, button, () => {
209
+ const frame = frameOf("Go");
210
+ frame.focus();
211
+ return painted(frame, "_outlineColor-", "outline-color", "focus-visible");
212
+ });
213
+ expect(ring).toBe(houseThemes[to]?.outlineColor);
214
+ });
215
+ }
216
+ }
217
+ });
218
+
219
+ describe("FZ-9617 LC-176: a framed circle with no intent inks its plate on the host scope's $color12", () => {
220
+ for (const [from, to] of FLIPS) {
221
+ it(`${from} -> ${to}`, () => {
222
+ const ink = expectFlipFollows(
223
+ from,
224
+ to,
225
+ <Button circular icon={PlusIcon} aria-label="Add" />,
226
+ () => {
227
+ const frame = frameOf("Add");
228
+ return {
229
+ frame: painted(frame, "_col-", "color"),
230
+ glyph: glyphFill(frame.querySelector("svg") as Element),
231
+ };
232
+ },
233
+ );
234
+ expect(ink).toEqual({ frame: houseThemes[to]?.color12, glyph: houseThemes[to]?.color12 });
235
+ });
236
+ }
237
+ });
238
+
239
+ const ICON_BUTTONS: [string, ReactElement][] = [
240
+ ["plain", <Button key="b" icon={PlusIcon} aria-label="Add" />],
241
+ ["accent", <Button key="b" accent icon={PlusIcon} aria-label="Add" />],
242
+ ["error", <Button key="b" error icon={PlusIcon} aria-label="Add" />],
243
+ ];
244
+
245
+ describe("FZ-9617 LC-176: an icon-only Button's hover and press washes follow a class-only root flip", () => {
246
+ for (const [from, to] of FLIPS) {
247
+ for (const [name, button] of ICON_BUTTONS) {
248
+ it(`${from} -> ${to} ${name}: the page scope's $backgroundHover and $backgroundPress`, () => {
249
+ const washes = expectFlipFollows(from, to, button, () => {
250
+ const frame = frameOf("Add");
251
+ return {
252
+ hover: painted(frame, "_bg-", "background-color", "hover"),
253
+ press: painted(frame, "_bg-", "background-color", "active"),
254
+ };
255
+ });
256
+ expect(washes).toEqual({
257
+ hover: houseThemes[to]?.backgroundHover,
258
+ press: houseThemes[to]?.backgroundPress,
259
+ });
260
+ });
261
+ }
262
+ }
263
+ });
264
+
265
+ function barRead(name: string) {
266
+ return () => {
267
+ const frame = frameOf(name);
268
+ return {
269
+ frame: painted(frame, "_col-", "color"),
270
+ glyph: glyphFill(frame.querySelector("svg") as Element),
271
+ };
272
+ };
273
+ }
274
+
275
+ const BAR_BUTTONS: [string, string, ReactElement][] = [
276
+ ["at the root", "Add", <Button key="b" chromeless accentInk icon={PlusIcon} aria-label="Add" />],
277
+ [
278
+ "in a bar Surface",
279
+ "Add",
280
+ <Surface key="b" bar>
281
+ <Button chromeless accentInk icon={PlusIcon} aria-label="Add" />
282
+ </Surface>,
283
+ ],
284
+ [
285
+ "with a label",
286
+ "Back",
287
+ <Button key="b" chromeless accentInk edge="start" icon={PlusIcon}>
288
+ Back
289
+ </Button>,
290
+ ],
291
+ ];
292
+
293
+ describe("FZ-9617 LC-176: a chromeless accentInk bar glyph follows a class-only root flip", () => {
294
+ for (const [from, to] of FLIPS) {
295
+ for (const [where, name, button] of BAR_BUTTONS) {
296
+ it(`${from} -> ${to} ${where}: the glyph paints the host scope's identity ink`, () => {
297
+ const ink = expectFlipFollows(from, to, button, barRead(name));
298
+ expect(ink.glyph).toBe(ink.frame);
299
+ expect(ink.glyph).toMatch(/^#|^rgb|^hsl/);
300
+ });
301
+ }
302
+ }
303
+
304
+ it("the glyph's svg never carries a var() or a token, only currentColor (LC-84)", () => {
305
+ mount("light", <Button chromeless accentInk icon={PlusIcon} aria-label="Add" />);
306
+ const svg = frameOf("Add").querySelector("svg") as Element;
307
+ expect(svg.getAttribute("fill")).toBe("currentColor");
308
+ });
309
+
310
+ it.each(["light", "dark"] as const)(
311
+ "%s: the house identity ink is the theme's $color12",
312
+ (scheme) => {
313
+ expect(houseThemes[scheme]?.identityInk).toBe(houseThemes[scheme]?.color12);
314
+ mount(scheme, <Button chromeless accentInk icon={PlusIcon} aria-label="Add" />);
315
+ expect(barRead("Add")()).toEqual({
316
+ frame: houseThemes[scheme]?.identityInk,
317
+ glyph: houseThemes[scheme]?.identityInk,
318
+ });
319
+ },
320
+ );
321
+ });
322
+
323
+ const WASH_KNOBS: Partial<Knobs> = {
324
+ disabledStyle: "keepLabel",
325
+ fillStyle: "filled",
326
+ borderWidth: "medium",
327
+ };
328
+
329
+ describe("FZ-9617: a disabled accent media plate washes from the dark scope on web", () => {
330
+ for (const scheme of ["light", "dark"] as const) {
331
+ it(`${scheme} page: fill, edge and ink are the dark scope's $color3, $color6 and $color11`, () => {
332
+ mount(
333
+ scheme,
334
+ <Preset overrides={WASH_KNOBS}>
335
+ <Button accent disabled plate="media" icon={PlusIcon} aria-label="Play" />
336
+ </Preset>,
337
+ );
338
+ const frame = frameOf("Play");
339
+ expect({
340
+ fill: painted(frame, "_bg-", "background-color"),
341
+ edge: painted(frame, "_btc-", "border-top-color"),
342
+ ink: painted(frame, "_col-", "color"),
343
+ }).toEqual({
344
+ fill: houseThemes.dark?.color3,
345
+ edge: houseThemes.dark?.color6,
346
+ ink: houseThemes.dark?.color11,
347
+ });
348
+ });
349
+ }
350
+ });
@@ -781,12 +781,17 @@ export function Button({
781
781
  const tierPaint = tier ? controlTierPaint(tier, darkScheme, elevatedGround) : undefined;
782
782
  const tierDisabled =
783
783
  tier && disabledState.style !== "dimWhole" ? controlTierDisabled(tier) : undefined;
784
+ const pageTheme = parentScopeTheme as unknown as Record<string, { val?: unknown } | undefined>;
785
+ const hostTheme =
786
+ (mediaPlate
787
+ ? (getConfig().themes as Record<string, Record<string, { val?: unknown }>>).dark
788
+ : undefined) ?? pageTheme;
784
789
  const hostScoped = <T extends object>(fragment: T): T =>
785
790
  Object.fromEntries(
786
791
  Object.entries(fragment).map(([key, value]) => [
787
792
  key,
788
793
  typeof value === "string" && value.startsWith("$")
789
- ? (parentScopeTheme[value.slice(1) as keyof typeof parentScopeTheme]?.val ?? value)
794
+ ? (hostTheme[value.slice(1)]?.val ?? value)
790
795
  : value,
791
796
  ]),
792
797
  ) as T;
@@ -909,6 +914,11 @@ export function Button({
909
914
  ? glyphTint.label
910
915
  : glyphTint.glyph
911
916
  : null;
917
+ const barInkPaint =
918
+ isWeb && barInk && !mediaPlate && pageTheme.identityInk?.val === barInk
919
+ ? hostWash({ color: "$identityInk" }).color
920
+ : barInk;
921
+ const barGlyphInk = barInk && isWeb && props.color == null ? "currentColor" : barInk;
912
922
  const inlineGlyph = iconButton && inline === true && !nested;
913
923
  // LC-176: back's caret beside its label is a bar glyph too, and so is the
914
924
  // glyph on a plate (media, or the overlay's confirm).
@@ -957,7 +967,7 @@ export function Button({
957
967
  : confirmPlate
958
968
  ? confirmInk
959
969
  : framedCircle && !activeThemeName
960
- ? hostScoped({ color: "$color12" }).color
970
+ ? hostWash({ color: "$color12" }).color
961
971
  : undefined;
962
972
  const framedCirclePx =
963
973
  touch && typeof sizeProp !== "number"
@@ -987,7 +997,7 @@ export function Button({
987
997
  const barGlyphFloor = barGlyph && !framedCircle && !inlineGlyph && !nested;
988
998
  const glyph =
989
999
  barGlyph || inlineGlyph || framedCircle
990
- ? withGlyphWeight(icon, iconSize, resolvedGlyphWeight, barGlyphFloor, barInk)
1000
+ ? withGlyphWeight(icon, iconSize, resolvedGlyphWeight, barGlyphFloor, barGlyphInk)
991
1001
  : icon;
992
1002
 
993
1003
  // LC-158: the frame keeps its recipe height under Dynamic Type, so the
@@ -1022,7 +1032,7 @@ export function Button({
1022
1032
  : outlinedInk
1023
1033
  ? { color: outlinedInk }
1024
1034
  : undefined)}
1025
- {...(barInk ? { color: barInk } : undefined)}
1035
+ {...(barInkPaint ? { color: barInkPaint } : undefined)}
1026
1036
  // LC-40: on the washed disabled chrome the label leaves the on-fill
1027
1037
  // foreground for the wash's AA ink (keepLabel keeps >=4.5:1).
1028
1038
  {...(unavailable ? disabledText : undefined)}
@@ -1079,7 +1089,7 @@ export function Button({
1079
1089
  ) : null;
1080
1090
  const glyphAfter =
1081
1091
  iconAfter && (barGlyph || inlineGlyph || framedCircle)
1082
- ? withGlyphWeight(iconAfter, iconSize, resolvedGlyphWeight, barGlyphFloor, barInk)
1092
+ ? withGlyphWeight(iconAfter, iconSize, resolvedGlyphWeight, barGlyphFloor, barGlyphInk)
1083
1093
  : iconAfter;
1084
1094
  const iconAfterElement = glyphAfter ? (
1085
1095
  <View flexShrink={0}>
@@ -1180,14 +1190,14 @@ export function Button({
1180
1190
  const glyphState = iconButton && !selectedFill;
1181
1191
  const iconHover = glyphState
1182
1192
  ? isWeb
1183
- ? hostScoped({ backgroundColor: "$backgroundHover" })
1193
+ ? hostWash({ backgroundColor: "$backgroundHover" })
1184
1194
  : { backgroundColor: "transparent" }
1185
1195
  : mediaPlate
1186
1196
  ? { backgroundColor: "$shadow5" }
1187
1197
  : undefined;
1188
1198
  const iconPress = glyphState
1189
1199
  ? isWeb
1190
- ? hostScoped({ backgroundColor: "$backgroundPress" })
1200
+ ? hostWash({ backgroundColor: "$backgroundPress" })
1191
1201
  : GlassView || glassGroup
1192
1202
  ? { backgroundColor: "transparent" }
1193
1203
  : { backgroundColor: "transparent", opacity: ICON_BUTTON_PRESS_OPACITY }
@@ -1277,7 +1287,7 @@ export function Button({
1277
1287
  // (LC-05); outlined frames sit on the page, so re-anchor inherited
1278
1288
  // text/icon color (currentColor) to the hue's readable text tier.
1279
1289
  {...(outlinedInk ? { color: outlinedInk } : undefined)}
1280
- {...(barInk ? { color: barInk } : undefined)}
1290
+ {...(barInkPaint ? { color: barInkPaint } : undefined)}
1281
1291
  {...(plateInk ? { color: plateInk } : undefined)}
1282
1292
  // LC-40 DISABLED-VISIBLE: keepLabel washes the chrome (muted fill/
1283
1293
  // border) while label/glyphs re-anchor to the lowest AA text tier
@@ -1320,13 +1330,13 @@ export function Button({
1320
1330
  focusStyle={{ outlineWidth: 0 }}
1321
1331
  // DG-A11Y-01 / LC-71: house keyboard ring (≥2px `$outlineColor`) on the
1322
1332
  // whole painted frame. Rest and mouse-focus paint none. Parent-scope
1323
- // `$outlineColor` literal: intent buttons re-theme the frame, and those
1333
+ // `$outlineColor`: intent buttons re-theme the frame, and those
1324
1334
  // sub-themes derive a ring for their own inverted surfaces — invisible
1325
1335
  // on the page the ring actually draws on (measured 1.17:1 on the accent
1326
1336
  // pagination button).
1327
1337
  focusVisibleStyle={ensureFocusVisibleRing({
1328
1338
  ...control.focusVisibleKnobProps,
1329
- ...(pageOutlineColor ? { outlineColor: pageOutlineColor } : undefined),
1339
+ ...(pageOutlineColor ? hostWash({ outlineColor: "$outlineColor" }) : undefined),
1330
1340
  })}
1331
1341
  onPress={handlePress}
1332
1342
  {...(isWeb ? { onKeyDown: handleKeyDown as unknown as () => void } : undefined)}
@@ -1470,17 +1480,21 @@ export function Button({
1470
1480
  disabledState.textKnobProps,
1471
1481
  { color: hostAccentInk },
1472
1482
  { color: textColor },
1483
+ { outlineColor: "$outlineColor" },
1484
+ { backgroundColor: "$backgroundHover" },
1485
+ { backgroundColor: "$backgroundPress" },
1486
+ { color: "$color12" },
1487
+ { color: "$identityInk" },
1473
1488
  ]
1474
1489
  .flatMap((fragment) => Object.values(fragment))
1475
1490
  .filter((value): value is string => typeof value === "string" && value.startsWith("$"))
1476
1491
  .map((value) => [hostWashVar(value.slice(1)), `var(--${value.slice(1)})`]),
1477
1492
  );
1478
- const hostedButton =
1479
- isWeb && activeThemeName && solidPaletteThemes.has(activeThemeName) ? (
1480
- <span style={{ display: "contents", ...hostWashScope } as CSSProperties}>{intentButton}</span>
1481
- ) : (
1482
- intentButton
1483
- );
1493
+ const hostedButton = isWeb ? (
1494
+ <span style={{ display: "contents", ...hostWashScope } as CSSProperties}>{intentButton}</span>
1495
+ ) : (
1496
+ intentButton
1497
+ );
1484
1498
  // The media plate reads the same over any picture in either scheme: a dark
1485
1499
  // material with a light glyph.
1486
1500
  const themedButton = mediaPlate ? <Theme name="dark">{hostedButton}</Theme> : hostedButton;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Button/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Button/index.tsx"],"names":[],"mappings":"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"}