@wordpress/components 36.0.1 → 37.0.1-next.v.202607070741.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 (706) hide show
  1. package/CHANGELOG.md +62 -3
  2. package/CONTRIBUTING.md +6 -4
  3. package/build/border-box-control/border-box-control/component.cjs +4 -9
  4. package/build/border-box-control/border-box-control/component.cjs.map +2 -2
  5. package/build/border-box-control/border-box-control/hook.cjs +3 -10
  6. package/build/border-box-control/border-box-control/hook.cjs.map +2 -2
  7. package/build/border-box-control/border-box-control-linked-button/hook.cjs +2 -3
  8. package/build/border-box-control/border-box-control-linked-button/hook.cjs.map +2 -2
  9. package/build/border-box-control/border-box-control-split-controls/component.cjs +2 -6
  10. package/build/border-box-control/border-box-control-split-controls/component.cjs.map +2 -2
  11. package/build/border-box-control/border-box-control-split-controls/hook.cjs +2 -4
  12. package/build/border-box-control/border-box-control-split-controls/hook.cjs.map +2 -2
  13. package/build/border-box-control/border-box-control-visualizer/hook.cjs +2 -3
  14. package/build/border-box-control/border-box-control-visualizer/hook.cjs.map +2 -2
  15. package/build/border-box-control/styles.cjs +20 -17
  16. package/build/border-box-control/styles.cjs.map +2 -2
  17. package/build/border-control/border-control/component.cjs +3 -11
  18. package/build/border-control/border-control/component.cjs.map +2 -2
  19. package/build/border-control/border-control/hook.cjs +11 -21
  20. package/build/border-control/border-control/hook.cjs.map +3 -3
  21. package/build/border-control/border-control-dropdown/component.cjs +1 -2
  22. package/build/border-control/border-control-dropdown/component.cjs.map +2 -2
  23. package/build/border-control/border-control-dropdown/hook.cjs +2 -4
  24. package/build/border-control/border-control-dropdown/hook.cjs.map +2 -2
  25. package/build/border-control/border-control-style-picker/component.cjs +0 -1
  26. package/build/border-control/border-control-style-picker/component.cjs.map +2 -2
  27. package/build/border-control/styles.cjs +27 -15
  28. package/build/border-control/styles.cjs.map +2 -2
  29. package/build/box-control/box-input-control.cjs +0 -5
  30. package/build/box-control/box-input-control.cjs.map +2 -2
  31. package/build/card/card/hook.cjs +4 -1
  32. package/build/card/card/hook.cjs.map +2 -2
  33. package/build/card/card-footer/hook.cjs +12 -12
  34. package/build/card/card-footer/hook.cjs.map +2 -2
  35. package/build/card/card-header/hook.cjs +12 -12
  36. package/build/card/card-header/hook.cjs.map +2 -2
  37. package/build/card/styles.cjs +43 -13
  38. package/build/card/styles.cjs.map +2 -2
  39. package/build/color-picker/component.cjs.map +2 -2
  40. package/build/color-picker/input-with-slider.cjs +0 -1
  41. package/build/color-picker/input-with-slider.cjs.map +2 -2
  42. package/build/combobox-control/index.cjs +1 -10
  43. package/build/combobox-control/index.cjs.map +2 -2
  44. package/build/combobox-control/styles.cjs +1 -5
  45. package/build/combobox-control/styles.cjs.map +2 -2
  46. package/build/custom-gradient-picker/index.cjs +0 -1
  47. package/build/custom-gradient-picker/index.cjs.map +2 -2
  48. package/build/custom-select-control/index.cjs +4 -19
  49. package/build/custom-select-control/index.cjs.map +2 -2
  50. package/build/date-time/time-picker/index.cjs +0 -1
  51. package/build/date-time/time-picker/index.cjs.map +2 -2
  52. package/build/date-time/time-picker/time-input/index.cjs +0 -1
  53. package/build/date-time/time-picker/time-input/index.cjs.map +2 -2
  54. package/build/divider/component.cjs +1 -1
  55. package/build/divider/component.cjs.map +2 -2
  56. package/build/elevation/hook.cjs +6 -5
  57. package/build/elevation/hook.cjs.map +2 -2
  58. package/build/external-link/index.cjs +0 -3
  59. package/build/external-link/index.cjs.map +2 -2
  60. package/build/flex/flex/hook.cjs +97 -18
  61. package/build/flex/flex/hook.cjs.map +4 -4
  62. package/build/flex/flex-item/hook.cjs +94 -10
  63. package/build/flex/flex-item/hook.cjs.map +4 -4
  64. package/build/focal-point-picker/controls.cjs +0 -1
  65. package/build/focal-point-picker/controls.cjs.map +2 -2
  66. package/build/focal-point-picker/index.cjs +1 -0
  67. package/build/focal-point-picker/index.cjs.map +2 -2
  68. package/build/font-size-picker/font-size-picker-select.cjs +1 -6
  69. package/build/font-size-picker/font-size-picker-select.cjs.map +2 -2
  70. package/build/font-size-picker/font-size-picker-toggle-group.cjs +0 -5
  71. package/build/font-size-picker/font-size-picker-toggle-group.cjs.map +2 -2
  72. package/build/font-size-picker/index.cjs +1 -18
  73. package/build/font-size-picker/index.cjs.map +2 -2
  74. package/build/form-file-upload/index.cjs +7 -18
  75. package/build/form-file-upload/index.cjs.map +2 -2
  76. package/build/form-token-field/index.cjs +1 -11
  77. package/build/form-token-field/index.cjs.map +2 -2
  78. package/build/form-token-field/styles.cjs +1 -7
  79. package/build/form-token-field/styles.cjs.map +2 -2
  80. package/build/number-control/index.cjs.map +2 -2
  81. package/build/query-controls/author-select.cjs +1 -3
  82. package/build/query-controls/author-select.cjs.map +2 -2
  83. package/build/query-controls/category-select.cjs +1 -3
  84. package/build/query-controls/category-select.cjs.map +2 -2
  85. package/build/query-controls/index.cjs +0 -5
  86. package/build/query-controls/index.cjs.map +2 -2
  87. package/build/radio-group/radio.cjs +6 -14
  88. package/build/radio-group/radio.cjs.map +2 -2
  89. package/build/range-control/index.cjs +6 -15
  90. package/build/range-control/index.cjs.map +2 -2
  91. package/build/range-control/styles/range-control-styles.cjs +32 -30
  92. package/build/range-control/styles/range-control-styles.cjs.map +2 -2
  93. package/build/resizable-box/index.cjs.map +2 -2
  94. package/build/search-control/index.cjs +2 -1
  95. package/build/search-control/index.cjs.map +2 -2
  96. package/build/select-control/index.cjs +7 -15
  97. package/build/select-control/index.cjs.map +2 -2
  98. package/build/select-control/styles/select-control-styles.cjs +8 -16
  99. package/build/select-control/styles/select-control-styles.cjs.map +2 -2
  100. package/build/slot-fill/index.cjs.map +2 -2
  101. package/build/spacer/hook.cjs +4 -3
  102. package/build/spacer/hook.cjs.map +2 -2
  103. package/build/surface/hook.cjs +103 -16
  104. package/build/surface/hook.cjs.map +4 -4
  105. package/build/text/hook.cjs +11 -11
  106. package/build/text/hook.cjs.map +2 -2
  107. package/build/theme/index.cjs +119 -7
  108. package/build/theme/index.cjs.map +4 -4
  109. package/build/toggle-group-control/toggle-group-control/as-button-group.cjs +1 -3
  110. package/build/toggle-group-control/toggle-group-control/as-button-group.cjs.map +2 -2
  111. package/build/toggle-group-control/toggle-group-control/as-radio-group.cjs +1 -3
  112. package/build/toggle-group-control/toggle-group-control/as-radio-group.cjs.map +2 -2
  113. package/build/toggle-group-control/toggle-group-control/component.cjs +6 -16
  114. package/build/toggle-group-control/toggle-group-control/component.cjs.map +2 -2
  115. package/build/toggle-group-control/toggle-group-control/styles.cjs +11 -37
  116. package/build/toggle-group-control/toggle-group-control/styles.cjs.map +2 -2
  117. package/build/toggle-group-control/toggle-group-control-option/component.cjs.map +2 -2
  118. package/build/toggle-group-control/toggle-group-control-option-base/component.cjs +3 -5
  119. package/build/toggle-group-control/toggle-group-control-option-base/component.cjs.map +2 -2
  120. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs +14 -18
  121. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs.map +2 -2
  122. package/build/toggle-group-control/toggle-group-control-option-icon/component.cjs.map +1 -1
  123. package/build/tools-panel/styles.cjs +24 -15
  124. package/build/tools-panel/styles.cjs.map +2 -2
  125. package/build/tools-panel/tools-panel/component.cjs.map +2 -2
  126. package/build/tools-panel/tools-panel/hook.cjs +5 -3
  127. package/build/tools-panel/tools-panel/hook.cjs.map +2 -2
  128. package/build/tree-select/index.cjs +9 -20
  129. package/build/tree-select/index.cjs.map +2 -2
  130. package/build/truncate/hook.cjs +95 -9
  131. package/build/truncate/hook.cjs.map +4 -4
  132. package/build/unit-control/index.cjs +3 -12
  133. package/build/unit-control/index.cjs.map +2 -2
  134. package/build/utils/config-values.cjs +0 -6
  135. package/build/utils/config-values.cjs.map +2 -2
  136. package/build/utils/hooks/use-cx.cjs.map +2 -2
  137. package/build/utils/polymorphic-element.cjs +123 -0
  138. package/build/utils/polymorphic-element.cjs.map +7 -0
  139. package/build/validated-form-controls/components/combobox-control.cjs +0 -1
  140. package/build/validated-form-controls/components/combobox-control.cjs.map +2 -2
  141. package/build/validated-form-controls/components/custom-select-control.cjs +0 -1
  142. package/build/validated-form-controls/components/custom-select-control.cjs.map +2 -2
  143. package/build/validated-form-controls/components/form-token-field.cjs +0 -1
  144. package/build/validated-form-controls/components/form-token-field.cjs.map +2 -2
  145. package/build/validated-form-controls/components/range-control.cjs +0 -1
  146. package/build/validated-form-controls/components/range-control.cjs.map +2 -2
  147. package/build/validated-form-controls/components/select-control.cjs +0 -1
  148. package/build/validated-form-controls/components/select-control.cjs.map +2 -2
  149. package/build/validated-form-controls/components/toggle-group-control.cjs +0 -1
  150. package/build/validated-form-controls/components/toggle-group-control.cjs.map +2 -2
  151. package/build/view/component.cjs +4 -20
  152. package/build/view/component.cjs.map +3 -3
  153. package/build-module/border-box-control/border-box-control/component.mjs +4 -9
  154. package/build-module/border-box-control/border-box-control/component.mjs.map +2 -2
  155. package/build-module/border-box-control/border-box-control/hook.mjs +3 -10
  156. package/build-module/border-box-control/border-box-control/hook.mjs.map +2 -2
  157. package/build-module/border-box-control/border-box-control-linked-button/hook.mjs +2 -3
  158. package/build-module/border-box-control/border-box-control-linked-button/hook.mjs.map +2 -2
  159. package/build-module/border-box-control/border-box-control-split-controls/component.mjs +2 -6
  160. package/build-module/border-box-control/border-box-control-split-controls/component.mjs.map +2 -2
  161. package/build-module/border-box-control/border-box-control-split-controls/hook.mjs +2 -4
  162. package/build-module/border-box-control/border-box-control-split-controls/hook.mjs.map +2 -2
  163. package/build-module/border-box-control/border-box-control-visualizer/hook.mjs +2 -3
  164. package/build-module/border-box-control/border-box-control-visualizer/hook.mjs.map +2 -2
  165. package/build-module/border-box-control/styles.mjs +20 -17
  166. package/build-module/border-box-control/styles.mjs.map +2 -2
  167. package/build-module/border-control/border-control/component.mjs +3 -11
  168. package/build-module/border-control/border-control/component.mjs.map +2 -2
  169. package/build-module/border-control/border-control/hook.mjs +11 -21
  170. package/build-module/border-control/border-control/hook.mjs.map +3 -3
  171. package/build-module/border-control/border-control-dropdown/component.mjs +1 -2
  172. package/build-module/border-control/border-control-dropdown/component.mjs.map +2 -2
  173. package/build-module/border-control/border-control-dropdown/hook.mjs +2 -4
  174. package/build-module/border-control/border-control-dropdown/hook.mjs.map +2 -2
  175. package/build-module/border-control/border-control-style-picker/component.mjs +0 -1
  176. package/build-module/border-control/border-control-style-picker/component.mjs.map +2 -2
  177. package/build-module/border-control/styles.mjs +26 -15
  178. package/build-module/border-control/styles.mjs.map +2 -2
  179. package/build-module/box-control/box-input-control.mjs +0 -5
  180. package/build-module/box-control/box-input-control.mjs.map +2 -2
  181. package/build-module/card/card/hook.mjs +4 -1
  182. package/build-module/card/card/hook.mjs.map +2 -2
  183. package/build-module/card/card-footer/hook.mjs +12 -12
  184. package/build-module/card/card-footer/hook.mjs.map +2 -2
  185. package/build-module/card/card-header/hook.mjs +12 -12
  186. package/build-module/card/card-header/hook.mjs.map +2 -2
  187. package/build-module/card/styles.mjs +40 -13
  188. package/build-module/card/styles.mjs.map +2 -2
  189. package/build-module/color-picker/component.mjs.map +2 -2
  190. package/build-module/color-picker/input-with-slider.mjs +0 -1
  191. package/build-module/color-picker/input-with-slider.mjs.map +2 -2
  192. package/build-module/combobox-control/index.mjs +1 -10
  193. package/build-module/combobox-control/index.mjs.map +2 -2
  194. package/build-module/combobox-control/styles.mjs +1 -5
  195. package/build-module/combobox-control/styles.mjs.map +2 -2
  196. package/build-module/custom-gradient-picker/index.mjs +0 -1
  197. package/build-module/custom-gradient-picker/index.mjs.map +2 -2
  198. package/build-module/custom-select-control/index.mjs +4 -19
  199. package/build-module/custom-select-control/index.mjs.map +2 -2
  200. package/build-module/date-time/time-picker/index.mjs +0 -1
  201. package/build-module/date-time/time-picker/index.mjs.map +2 -2
  202. package/build-module/date-time/time-picker/time-input/index.mjs +0 -1
  203. package/build-module/date-time/time-picker/time-input/index.mjs.map +2 -2
  204. package/build-module/divider/component.mjs +1 -1
  205. package/build-module/divider/component.mjs.map +2 -2
  206. package/build-module/elevation/hook.mjs +6 -5
  207. package/build-module/elevation/hook.mjs.map +2 -2
  208. package/build-module/external-link/index.mjs +0 -3
  209. package/build-module/external-link/index.mjs.map +2 -2
  210. package/build-module/flex/flex/hook.mjs +97 -18
  211. package/build-module/flex/flex/hook.mjs.map +3 -3
  212. package/build-module/flex/flex-item/hook.mjs +94 -10
  213. package/build-module/flex/flex-item/hook.mjs.map +3 -3
  214. package/build-module/focal-point-picker/controls.mjs +0 -1
  215. package/build-module/focal-point-picker/controls.mjs.map +2 -2
  216. package/build-module/focal-point-picker/index.mjs +1 -0
  217. package/build-module/focal-point-picker/index.mjs.map +2 -2
  218. package/build-module/font-size-picker/font-size-picker-select.mjs +1 -6
  219. package/build-module/font-size-picker/font-size-picker-select.mjs.map +2 -2
  220. package/build-module/font-size-picker/font-size-picker-toggle-group.mjs +0 -5
  221. package/build-module/font-size-picker/font-size-picker-toggle-group.mjs.map +2 -2
  222. package/build-module/font-size-picker/index.mjs +1 -18
  223. package/build-module/font-size-picker/index.mjs.map +2 -2
  224. package/build-module/form-file-upload/index.mjs +7 -18
  225. package/build-module/form-file-upload/index.mjs.map +2 -2
  226. package/build-module/form-token-field/index.mjs +1 -11
  227. package/build-module/form-token-field/index.mjs.map +2 -2
  228. package/build-module/form-token-field/styles.mjs +1 -7
  229. package/build-module/form-token-field/styles.mjs.map +2 -2
  230. package/build-module/number-control/index.mjs.map +2 -2
  231. package/build-module/query-controls/author-select.mjs +1 -3
  232. package/build-module/query-controls/author-select.mjs.map +2 -2
  233. package/build-module/query-controls/category-select.mjs +1 -3
  234. package/build-module/query-controls/category-select.mjs.map +2 -2
  235. package/build-module/query-controls/index.mjs +0 -5
  236. package/build-module/query-controls/index.mjs.map +2 -2
  237. package/build-module/radio-group/radio.mjs +6 -14
  238. package/build-module/radio-group/radio.mjs.map +2 -2
  239. package/build-module/range-control/index.mjs +6 -15
  240. package/build-module/range-control/index.mjs.map +2 -2
  241. package/build-module/range-control/styles/range-control-styles.mjs +32 -30
  242. package/build-module/range-control/styles/range-control-styles.mjs.map +2 -2
  243. package/build-module/resizable-box/index.mjs.map +2 -2
  244. package/build-module/search-control/index.mjs +2 -1
  245. package/build-module/search-control/index.mjs.map +2 -2
  246. package/build-module/select-control/index.mjs +7 -15
  247. package/build-module/select-control/index.mjs.map +2 -2
  248. package/build-module/select-control/styles/select-control-styles.mjs +8 -16
  249. package/build-module/select-control/styles/select-control-styles.mjs.map +2 -2
  250. package/build-module/slot-fill/index.mjs.map +2 -2
  251. package/build-module/spacer/hook.mjs +4 -3
  252. package/build-module/spacer/hook.mjs.map +2 -2
  253. package/build-module/surface/hook.mjs +103 -16
  254. package/build-module/surface/hook.mjs.map +3 -3
  255. package/build-module/text/hook.mjs +11 -11
  256. package/build-module/text/hook.mjs.map +2 -2
  257. package/build-module/theme/index.mjs +109 -7
  258. package/build-module/theme/index.mjs.map +3 -3
  259. package/build-module/toggle-group-control/toggle-group-control/as-button-group.mjs +1 -3
  260. package/build-module/toggle-group-control/toggle-group-control/as-button-group.mjs.map +2 -2
  261. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.mjs +1 -3
  262. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.mjs.map +2 -2
  263. package/build-module/toggle-group-control/toggle-group-control/component.mjs +6 -16
  264. package/build-module/toggle-group-control/toggle-group-control/component.mjs.map +2 -2
  265. package/build-module/toggle-group-control/toggle-group-control/styles.mjs +10 -35
  266. package/build-module/toggle-group-control/toggle-group-control/styles.mjs.map +2 -2
  267. package/build-module/toggle-group-control/toggle-group-control-option/component.mjs.map +2 -2
  268. package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs +3 -5
  269. package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs.map +2 -2
  270. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs +14 -18
  271. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs.map +2 -2
  272. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.mjs.map +1 -1
  273. package/build-module/tools-panel/styles.mjs +22 -14
  274. package/build-module/tools-panel/styles.mjs.map +2 -2
  275. package/build-module/tools-panel/tools-panel/component.mjs.map +2 -2
  276. package/build-module/tools-panel/tools-panel/hook.mjs +5 -3
  277. package/build-module/tools-panel/tools-panel/hook.mjs.map +2 -2
  278. package/build-module/tree-select/index.mjs +9 -20
  279. package/build-module/tree-select/index.mjs.map +2 -2
  280. package/build-module/truncate/hook.mjs +95 -9
  281. package/build-module/truncate/hook.mjs.map +3 -3
  282. package/build-module/unit-control/index.mjs +3 -12
  283. package/build-module/unit-control/index.mjs.map +2 -2
  284. package/build-module/utils/config-values.mjs +0 -6
  285. package/build-module/utils/config-values.mjs.map +2 -2
  286. package/build-module/utils/hooks/use-cx.mjs.map +2 -2
  287. package/build-module/utils/polymorphic-element.mjs +98 -0
  288. package/build-module/utils/polymorphic-element.mjs.map +7 -0
  289. package/build-module/validated-form-controls/components/combobox-control.mjs +0 -1
  290. package/build-module/validated-form-controls/components/combobox-control.mjs.map +2 -2
  291. package/build-module/validated-form-controls/components/custom-select-control.mjs +0 -1
  292. package/build-module/validated-form-controls/components/custom-select-control.mjs.map +2 -2
  293. package/build-module/validated-form-controls/components/form-token-field.mjs +0 -1
  294. package/build-module/validated-form-controls/components/form-token-field.mjs.map +2 -2
  295. package/build-module/validated-form-controls/components/range-control.mjs +0 -1
  296. package/build-module/validated-form-controls/components/range-control.mjs.map +2 -2
  297. package/build-module/validated-form-controls/components/select-control.mjs +0 -1
  298. package/build-module/validated-form-controls/components/select-control.mjs.map +2 -2
  299. package/build-module/validated-form-controls/components/toggle-group-control.mjs +0 -1
  300. package/build-module/validated-form-controls/components/toggle-group-control.mjs.map +2 -2
  301. package/build-module/view/component.mjs +4 -10
  302. package/build-module/view/component.mjs.map +2 -2
  303. package/build-style/style-rtl.css +31 -48
  304. package/build-style/style.css +31 -48
  305. package/build-types/border-box-control/border-box-control/component.d.ts +2 -2
  306. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  307. package/build-types/border-box-control/border-box-control/hook.d.ts +0 -1
  308. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  309. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts +2 -4
  310. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -1
  311. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  312. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  313. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  314. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +0 -1
  315. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  316. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts +2 -3
  317. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  318. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  319. package/build-types/border-box-control/stories/index.story.d.ts +2 -1
  320. package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
  321. package/build-types/border-box-control/styles.d.ts +3 -3
  322. package/build-types/border-box-control/styles.d.ts.map +1 -1
  323. package/build-types/border-box-control/types.d.ts +13 -5
  324. package/build-types/border-box-control/types.d.ts.map +1 -1
  325. package/build-types/border-control/border-control/component.d.ts +0 -2
  326. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  327. package/build-types/border-control/border-control/hook.d.ts +0 -2
  328. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  329. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  330. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  331. package/build-types/border-control/border-control-dropdown/hook.d.ts +0 -1
  332. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  333. package/build-types/border-control/border-control-style-picker/component.d.ts.map +1 -1
  334. package/build-types/border-control/stories/index.story.d.ts +5 -10
  335. package/build-types/border-control/stories/index.story.d.ts.map +1 -1
  336. package/build-types/border-control/styles.d.ts +5 -2
  337. package/build-types/border-control/styles.d.ts.map +1 -1
  338. package/build-types/border-control/types.d.ts +5 -10
  339. package/build-types/border-control/types.d.ts.map +1 -1
  340. package/build-types/box-control/box-input-control.d.ts.map +1 -1
  341. package/build-types/box-control/styles/box-control-styles.d.ts +2 -1
  342. package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
  343. package/build-types/card/card/hook.d.ts +1 -1
  344. package/build-types/card/card/hook.d.ts.map +1 -1
  345. package/build-types/card/card-footer/hook.d.ts.map +1 -1
  346. package/build-types/card/card-header/hook.d.ts.map +1 -1
  347. package/build-types/card/styles.d.ts +4 -0
  348. package/build-types/card/styles.d.ts.map +1 -1
  349. package/build-types/color-picker/component.d.ts +4 -0
  350. package/build-types/color-picker/component.d.ts.map +1 -1
  351. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  352. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  353. package/build-types/combobox-control/index.d.ts +0 -1
  354. package/build-types/combobox-control/index.d.ts.map +1 -1
  355. package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
  356. package/build-types/combobox-control/styles.d.ts +1 -2
  357. package/build-types/combobox-control/styles.d.ts.map +1 -1
  358. package/build-types/combobox-control/types.d.ts +2 -1
  359. package/build-types/combobox-control/types.d.ts.map +1 -1
  360. package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
  361. package/build-types/custom-select-control/index.d.ts +5 -0
  362. package/build-types/custom-select-control/index.d.ts.map +1 -1
  363. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  364. package/build-types/custom-select-control/types.d.ts +2 -1
  365. package/build-types/custom-select-control/types.d.ts.map +1 -1
  366. package/build-types/date-time/time-picker/index.d.ts.map +1 -1
  367. package/build-types/date-time/time-picker/time-input/index.d.ts.map +1 -1
  368. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  369. package/build-types/elevation/hook.d.ts.map +1 -1
  370. package/build-types/external-link/index.d.ts.map +1 -1
  371. package/build-types/flex/flex/hook.d.ts +864 -4
  372. package/build-types/flex/flex/hook.d.ts.map +1 -1
  373. package/build-types/flex/flex-block/hook.d.ts +860 -1
  374. package/build-types/flex/flex-block/hook.d.ts.map +1 -1
  375. package/build-types/flex/flex-item/hook.d.ts +860 -4
  376. package/build-types/flex/flex-item/hook.d.ts.map +1 -1
  377. package/build-types/focal-point-picker/index.d.ts +1 -1
  378. package/build-types/focal-point-picker/index.d.ts.map +1 -1
  379. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +252 -1
  380. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  381. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
  382. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -1
  383. package/build-types/font-size-picker/index.d.ts.map +1 -1
  384. package/build-types/font-size-picker/stories/e2e/index.story.d.ts.map +1 -1
  385. package/build-types/font-size-picker/stories/index.story.d.ts.map +1 -1
  386. package/build-types/font-size-picker/types.d.ts +6 -5
  387. package/build-types/font-size-picker/types.d.ts.map +1 -1
  388. package/build-types/form-file-upload/index.d.ts +1 -2
  389. package/build-types/form-file-upload/index.d.ts.map +1 -1
  390. package/build-types/form-file-upload/stories/index.story.d.ts.map +1 -1
  391. package/build-types/form-file-upload/types.d.ts +2 -2
  392. package/build-types/form-file-upload/types.d.ts.map +1 -1
  393. package/build-types/form-token-field/index.d.ts.map +1 -1
  394. package/build-types/form-token-field/stories/index.story.d.ts.map +1 -1
  395. package/build-types/form-token-field/styles.d.ts +1 -6
  396. package/build-types/form-token-field/styles.d.ts.map +1 -1
  397. package/build-types/form-token-field/types.d.ts +2 -1
  398. package/build-types/form-token-field/types.d.ts.map +1 -1
  399. package/build-types/h-stack/hook.d.ts +864 -1
  400. package/build-types/h-stack/hook.d.ts.map +1 -1
  401. package/build-types/heading/hook.d.ts +1 -1
  402. package/build-types/navigator/stories/index.story.d.ts.map +1 -1
  403. package/build-types/number-control/index.d.ts +4 -0
  404. package/build-types/number-control/index.d.ts.map +1 -1
  405. package/build-types/palette-edit/styles.d.ts +750 -0
  406. package/build-types/palette-edit/styles.d.ts.map +1 -1
  407. package/build-types/query-controls/author-select.d.ts +1 -1
  408. package/build-types/query-controls/author-select.d.ts.map +1 -1
  409. package/build-types/query-controls/category-select.d.ts +1 -1
  410. package/build-types/query-controls/category-select.d.ts.map +1 -1
  411. package/build-types/query-controls/index.d.ts.map +1 -1
  412. package/build-types/query-controls/types.d.ts +0 -2
  413. package/build-types/query-controls/types.d.ts.map +1 -1
  414. package/build-types/radio-group/radio.d.ts +2 -4
  415. package/build-types/radio-group/radio.d.ts.map +1 -1
  416. package/build-types/radio-group/stories/index.story.d.ts.map +1 -1
  417. package/build-types/radio-group/types.d.ts +8 -5
  418. package/build-types/radio-group/types.d.ts.map +1 -1
  419. package/build-types/range-control/index.d.ts +0 -1
  420. package/build-types/range-control/index.d.ts.map +1 -1
  421. package/build-types/range-control/stories/index.story.d.ts.map +1 -1
  422. package/build-types/range-control/styles/range-control-styles.d.ts +2 -4
  423. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  424. package/build-types/range-control/types.d.ts +3 -1
  425. package/build-types/range-control/types.d.ts.map +1 -1
  426. package/build-types/resizable-box/index.d.ts +4 -0
  427. package/build-types/resizable-box/index.d.ts.map +1 -1
  428. package/build-types/search-control/index.d.ts.map +1 -1
  429. package/build-types/select-control/index.d.ts +0 -1
  430. package/build-types/select-control/index.d.ts.map +1 -1
  431. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  432. package/build-types/select-control/styles/select-control-styles.d.ts +1 -1
  433. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  434. package/build-types/select-control/types.d.ts +8 -1
  435. package/build-types/select-control/types.d.ts.map +1 -1
  436. package/build-types/slot-fill/index.d.ts +5 -0
  437. package/build-types/slot-fill/index.d.ts.map +1 -1
  438. package/build-types/spacer/hook.d.ts.map +1 -1
  439. package/build-types/surface/hook.d.ts +1 -1
  440. package/build-types/surface/hook.d.ts.map +1 -1
  441. package/build-types/text/hook.d.ts +2 -2
  442. package/build-types/text/hook.d.ts.map +1 -1
  443. package/build-types/theme/index.d.ts +1 -4
  444. package/build-types/theme/index.d.ts.map +1 -1
  445. package/build-types/toggle-group-control/stories/index.story.d.ts.map +1 -1
  446. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +1 -1
  447. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
  448. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +1 -1
  449. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  450. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +0 -1
  451. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  452. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -4
  453. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  454. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +0 -1
  455. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  456. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  457. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +1 -1
  458. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  459. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  460. package/build-types/toggle-group-control/types.d.ts +5 -4
  461. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  462. package/build-types/tools-panel/stories/index.story.d.ts.map +1 -1
  463. package/build-types/tools-panel/styles.d.ts +5 -0
  464. package/build-types/tools-panel/styles.d.ts.map +1 -1
  465. package/build-types/tools-panel/tools-panel/component.d.ts +0 -2
  466. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  467. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  468. package/build-types/tree-select/index.d.ts +0 -1
  469. package/build-types/tree-select/index.d.ts.map +1 -1
  470. package/build-types/tree-select/stories/index.story.d.ts.map +1 -1
  471. package/build-types/tree-select/types.d.ts +8 -1
  472. package/build-types/tree-select/types.d.ts.map +1 -1
  473. package/build-types/truncate/hook.d.ts +1 -1
  474. package/build-types/truncate/hook.d.ts.map +1 -1
  475. package/build-types/unit-control/index.d.ts +3 -2
  476. package/build-types/unit-control/index.d.ts.map +1 -1
  477. package/build-types/unit-control/stories/index.story.d.ts.map +1 -1
  478. package/build-types/unit-control/types.d.ts +8 -1
  479. package/build-types/unit-control/types.d.ts.map +1 -1
  480. package/build-types/utils/config-values.d.ts +0 -6
  481. package/build-types/utils/hooks/use-cx.d.ts +4 -0
  482. package/build-types/utils/hooks/use-cx.d.ts.map +1 -1
  483. package/build-types/utils/polymorphic-element.d.ts +17 -0
  484. package/build-types/utils/polymorphic-element.d.ts.map +1 -0
  485. package/build-types/utils/test/polymorphic-element.d.ts +2 -0
  486. package/build-types/utils/test/polymorphic-element.d.ts.map +1 -0
  487. package/build-types/v-stack/hook.d.ts +864 -1
  488. package/build-types/v-stack/hook.d.ts.map +1 -1
  489. package/build-types/validated-form-controls/components/combobox-control.d.ts +1 -1
  490. package/build-types/validated-form-controls/components/custom-select-control.d.ts +1 -1
  491. package/build-types/validated-form-controls/components/custom-select-control.d.ts.map +1 -1
  492. package/build-types/validated-form-controls/components/form-token-field.d.ts +1 -1
  493. package/build-types/validated-form-controls/components/form-token-field.d.ts.map +1 -1
  494. package/build-types/validated-form-controls/components/range-control.d.ts +2 -2
  495. package/build-types/validated-form-controls/components/range-control.d.ts.map +1 -1
  496. package/build-types/validated-form-controls/components/select-control.d.ts +1 -1
  497. package/build-types/validated-form-controls/components/select-control.d.ts.map +1 -1
  498. package/build-types/validated-form-controls/components/toggle-group-control.d.ts +2 -2
  499. package/build-types/validated-form-controls/components/toggle-group-control.d.ts.map +1 -1
  500. package/build-types/view/component.d.ts +1125 -0
  501. package/build-types/view/component.d.ts.map +1 -1
  502. package/package.json +24 -24
  503. package/src/border-box-control/border-box-control/README.md +0 -16
  504. package/src/border-box-control/border-box-control/component.tsx +1 -9
  505. package/src/border-box-control/border-box-control/hook.ts +3 -13
  506. package/src/border-box-control/border-box-control-linked-button/hook.ts +6 -7
  507. package/src/border-box-control/border-box-control-split-controls/component.tsx +1 -12
  508. package/src/border-box-control/border-box-control-split-controls/hook.ts +2 -4
  509. package/src/border-box-control/border-box-control-visualizer/hook.ts +6 -11
  510. package/src/border-box-control/stories/index.story.tsx +0 -2
  511. package/src/border-box-control/styles.ts +22 -34
  512. package/src/border-box-control/test/index.tsx +1 -3
  513. package/src/border-box-control/types.ts +13 -5
  514. package/src/border-control/border-control/README.md +0 -15
  515. package/src/border-control/border-control/component.tsx +0 -9
  516. package/src/border-control/border-control/hook.ts +10 -22
  517. package/src/border-control/border-control-dropdown/component.tsx +1 -2
  518. package/src/border-control/border-control-dropdown/hook.ts +2 -4
  519. package/src/border-control/border-control-style-picker/component.tsx +0 -1
  520. package/src/border-control/stories/index.story.tsx +0 -2
  521. package/src/border-control/styles.ts +11 -12
  522. package/src/border-control/test/index.js +32 -1
  523. package/src/border-control/types.ts +5 -10
  524. package/src/box-control/box-input-control.tsx +0 -5
  525. package/src/button/style.scss +25 -71
  526. package/src/card/card/hook.ts +4 -3
  527. package/src/card/card-footer/hook.ts +12 -16
  528. package/src/card/card-header/hook.ts +12 -16
  529. package/src/card/styles.ts +49 -0
  530. package/src/card/test/__snapshots__/index.tsx.snap +94 -139
  531. package/src/card/test/index.tsx +97 -0
  532. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +1 -1
  533. package/src/circular-option-picker/style.scss +0 -1
  534. package/src/color-picker/component.tsx +4 -0
  535. package/src/color-picker/input-with-slider.tsx +0 -1
  536. package/src/color-picker/stories/index.story.tsx +5 -0
  537. package/src/combobox-control/README.md +0 -9
  538. package/src/combobox-control/index.tsx +2 -14
  539. package/src/combobox-control/stories/index.story.tsx +0 -2
  540. package/src/combobox-control/styles.ts +0 -21
  541. package/src/combobox-control/test/index.tsx +1 -1
  542. package/src/combobox-control/types.ts +2 -1
  543. package/src/context/stories/ComponentsProvider.stories.jsx +3 -3
  544. package/src/custom-gradient-picker/index.tsx +0 -1
  545. package/src/custom-select-control/README.md +0 -9
  546. package/src/custom-select-control/index.tsx +9 -24
  547. package/src/custom-select-control/stories/index.story.tsx +0 -2
  548. package/src/custom-select-control/test/index.tsx +1 -1
  549. package/src/custom-select-control/types.ts +2 -1
  550. package/src/date-time/time-picker/index.tsx +0 -1
  551. package/src/date-time/time-picker/time-input/index.tsx +0 -1
  552. package/src/disabled/stories/index.story.tsx +0 -1
  553. package/src/divider/style.module.scss +4 -2
  554. package/src/elevation/hook.ts +4 -3
  555. package/src/elevation/test/__snapshots__/index.tsx.snap +6 -6
  556. package/src/elevation/test/index.tsx +21 -0
  557. package/src/external-link/index.tsx +1 -7
  558. package/src/flex/flex/hook.ts +24 -43
  559. package/src/flex/flex-item/hook.ts +10 -27
  560. package/src/flex/style.module.scss +40 -0
  561. package/src/flex/test/__snapshots__/index.tsx.snap +6 -156
  562. package/src/flex/test/index.tsx +80 -49
  563. package/src/focal-point-picker/controls.tsx +0 -1
  564. package/src/focal-point-picker/index.tsx +1 -0
  565. package/src/font-size-picker/README.md +0 -15
  566. package/src/font-size-picker/font-size-picker-select.tsx +1 -11
  567. package/src/font-size-picker/font-size-picker-toggle-group.tsx +1 -11
  568. package/src/font-size-picker/index.tsx +1 -26
  569. package/src/font-size-picker/stories/e2e/index.story.tsx +0 -2
  570. package/src/font-size-picker/stories/index.story.tsx +0 -2
  571. package/src/font-size-picker/test/font-size-picker-select.tsx +0 -16
  572. package/src/font-size-picker/test/font-size-picker-toggle-group.tsx +0 -22
  573. package/src/font-size-picker/test/index.tsx +2 -16
  574. package/src/font-size-picker/types.ts +6 -5
  575. package/src/form-file-upload/README.md +0 -10
  576. package/src/form-file-upload/index.tsx +2 -14
  577. package/src/form-file-upload/stories/index.story.tsx +1 -2
  578. package/src/form-file-upload/test/index.tsx +1 -16
  579. package/src/form-file-upload/types.ts +2 -2
  580. package/src/form-token-field/README.md +0 -2
  581. package/src/form-token-field/index.tsx +1 -12
  582. package/src/form-token-field/stories/index.story.tsx +0 -4
  583. package/src/form-token-field/styles.ts +0 -19
  584. package/src/form-token-field/test/index.tsx +1 -5
  585. package/src/form-token-field/types.ts +2 -1
  586. package/src/h-stack/test/__snapshots__/index.tsx.snap +12 -91
  587. package/src/heading/test/__snapshots__/index.tsx.snap +1 -1
  588. package/src/item-group/test/__snapshots__/index.js.snap +27 -21
  589. package/src/navigator/stories/index.story.tsx +5 -0
  590. package/src/notice/test/__snapshots__/index.tsx.snap +1 -1
  591. package/src/number-control/index.tsx +4 -0
  592. package/src/query-controls/README.md +0 -7
  593. package/src/query-controls/author-select.tsx +0 -2
  594. package/src/query-controls/category-select.tsx +0 -2
  595. package/src/query-controls/index.tsx +0 -5
  596. package/src/query-controls/types.ts +0 -2
  597. package/src/radio-group/README.md +8 -8
  598. package/src/radio-group/radio.tsx +2 -9
  599. package/src/radio-group/stories/index.story.tsx +3 -9
  600. package/src/radio-group/types.ts +8 -6
  601. package/src/range-control/README.md +0 -8
  602. package/src/range-control/index.tsx +7 -26
  603. package/src/range-control/stories/index.story.tsx +0 -11
  604. package/src/range-control/styles/range-control-styles.ts +1 -10
  605. package/src/range-control/test/index.tsx +1 -14
  606. package/src/range-control/types.ts +3 -1
  607. package/src/resizable-box/index.tsx +4 -0
  608. package/src/scrollable/test/__snapshots__/index.tsx.snap +16 -11
  609. package/src/search-control/index.tsx +3 -1
  610. package/src/select-control/README.md +0 -11
  611. package/src/select-control/index.tsx +7 -16
  612. package/src/select-control/stories/index.story.tsx +0 -4
  613. package/src/select-control/styles/select-control-styles.ts +3 -22
  614. package/src/select-control/test/select-control.tsx +6 -12
  615. package/src/select-control/types.ts +7 -1
  616. package/src/slot-fill/index.tsx +5 -0
  617. package/src/slot-fill/test/__snapshots__/slot.js.snap +4 -12
  618. package/src/spacer/hook.ts +4 -3
  619. package/src/spacer/test/__snapshots__/index.tsx.snap +1 -1
  620. package/src/spacer/test/index.tsx +28 -0
  621. package/src/surface/hook.ts +30 -36
  622. package/src/surface/style.module.scss +53 -0
  623. package/src/surface/test/index.tsx +22 -29
  624. package/src/text/README.md +1 -1
  625. package/src/text/hook.ts +11 -12
  626. package/src/text/test/__snapshots__/index.tsx.snap +2 -2
  627. package/src/text/test/index.tsx +19 -4
  628. package/src/theme/index.tsx +43 -18
  629. package/src/theme/style.module.scss +4 -0
  630. package/src/theme/test/index.tsx +23 -6
  631. package/src/toggle-group-control/stories/index.story.tsx +0 -1
  632. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +76 -76
  633. package/src/toggle-group-control/test/index.tsx +20 -4
  634. package/src/toggle-group-control/toggle-group-control/README.md +0 -8
  635. package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +0 -3
  636. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +0 -3
  637. package/src/toggle-group-control/toggle-group-control/component.tsx +6 -20
  638. package/src/toggle-group-control/toggle-group-control/styles.ts +8 -25
  639. package/src/toggle-group-control/toggle-group-control-option/README.md +0 -1
  640. package/src/toggle-group-control/toggle-group-control-option/component.tsx +0 -1
  641. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +3 -7
  642. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +8 -18
  643. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  644. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +1 -1
  645. package/src/toggle-group-control/types.ts +5 -4
  646. package/src/tools-panel/stories/index.story.tsx +0 -15
  647. package/src/tools-panel/styles.ts +16 -0
  648. package/src/tools-panel/test/index.tsx +39 -0
  649. package/src/tools-panel/tools-panel/component.tsx +0 -2
  650. package/src/tools-panel/tools-panel/hook.ts +5 -9
  651. package/src/tree-select/README.md +0 -9
  652. package/src/tree-select/index.tsx +4 -14
  653. package/src/tree-select/stories/index.story.tsx +0 -2
  654. package/src/tree-select/types.ts +8 -1
  655. package/src/truncate/hook.ts +23 -28
  656. package/src/truncate/style.module.scss +21 -0
  657. package/src/unit-control/README.md +3 -9
  658. package/src/unit-control/index.tsx +4 -17
  659. package/src/unit-control/stories/index.story.tsx +0 -3
  660. package/src/unit-control/test/index.tsx +1 -5
  661. package/src/unit-control/types.ts +11 -1
  662. package/src/utils/config-values.js +0 -6
  663. package/src/utils/hooks/use-cx.ts +4 -0
  664. package/src/utils/polymorphic-element.tsx +152 -0
  665. package/src/utils/test/polymorphic-element.tsx +231 -0
  666. package/src/v-stack/test/__snapshots__/index.tsx.snap +12 -90
  667. package/src/validated-form-controls/components/combobox-control.tsx +1 -1
  668. package/src/validated-form-controls/components/custom-select-control.tsx +1 -5
  669. package/src/validated-form-controls/components/form-token-field.tsx +2 -6
  670. package/src/validated-form-controls/components/range-control.tsx +2 -10
  671. package/src/validated-form-controls/components/select-control.tsx +2 -6
  672. package/src/validated-form-controls/components/toggle-group-control.tsx +2 -9
  673. package/src/view/README.md +0 -6
  674. package/src/view/component.tsx +17 -8
  675. package/src/view/test/__snapshots__/index.js.snap +24 -16
  676. package/src/view/test/index.js +60 -4
  677. package/build/flex/styles.cjs +0 -82
  678. package/build/flex/styles.cjs.map +0 -7
  679. package/build/surface/styles.cjs +0 -97
  680. package/build/surface/styles.cjs.map +0 -7
  681. package/build/theme/styles.cjs +0 -66
  682. package/build/theme/styles.cjs.map +0 -7
  683. package/build/truncate/styles.cjs +0 -42
  684. package/build/truncate/styles.cjs.map +0 -7
  685. package/build-module/flex/styles.mjs +0 -53
  686. package/build-module/flex/styles.mjs.map +0 -7
  687. package/build-module/surface/styles.mjs +0 -64
  688. package/build-module/surface/styles.mjs.map +0 -7
  689. package/build-module/theme/styles.mjs +0 -30
  690. package/build-module/theme/styles.mjs.map +0 -7
  691. package/build-module/truncate/styles.mjs +0 -17
  692. package/build-module/truncate/styles.mjs.map +0 -7
  693. package/build-types/flex/styles.d.ts +0 -17
  694. package/build-types/flex/styles.d.ts.map +0 -1
  695. package/build-types/surface/styles.d.ts +0 -11
  696. package/build-types/surface/styles.d.ts.map +0 -1
  697. package/build-types/theme/styles.d.ts +0 -10
  698. package/build-types/theme/styles.d.ts.map +0 -1
  699. package/build-types/truncate/styles.d.ts +0 -2
  700. package/build-types/truncate/styles.d.ts.map +0 -1
  701. package/src/flex/styles.ts +0 -44
  702. package/src/focal-point-picker/style.scss +0 -58
  703. package/src/surface/styles.ts +0 -139
  704. package/src/surface/test/__snapshots__/index.tsx.snap +0 -104
  705. package/src/theme/styles.ts +0 -35
  706. package/src/truncate/styles.ts +0 -11
@@ -1,22 +1,16 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { css } from '@emotion/react';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { useMemo } from '@wordpress/element';
4
+ import clsx from 'clsx';
10
5
 
11
6
  /**
12
7
  * Internal dependencies
13
8
  */
14
9
  import type { WordPressComponentProps } from '../context';
15
10
  import { useContextSystem } from '../context';
16
- import * as styles from './styles';
17
11
  import { TRUNCATE_ELLIPSIS, TRUNCATE_TYPE, truncateContent } from './utils';
18
- import { useCx } from '../utils/hooks/use-cx';
19
12
  import type { TruncateProps } from './types';
13
+ import styles from './style.module.scss';
20
14
 
21
15
  export default function useTruncate(
22
16
  props: WordPressComponentProps< TruncateProps, 'span' >
@@ -28,11 +22,10 @@ export default function useTruncate(
28
22
  ellipsizeMode = TRUNCATE_TYPE.auto,
29
23
  limit = 0,
30
24
  numberOfLines = 0,
25
+ style,
31
26
  ...otherProps
32
27
  } = useContextSystem( props, 'Truncate' );
33
28
 
34
- const cx = useCx();
35
-
36
29
  let childrenAsText;
37
30
  if ( typeof children === 'string' ) {
38
31
  childrenAsText = children;
@@ -51,25 +44,27 @@ export default function useTruncate(
51
44
 
52
45
  const shouldTruncate =
53
46
  !! childrenAsText && ellipsizeMode === TRUNCATE_TYPE.auto;
47
+ const shouldClampLines = shouldTruncate && !! numberOfLines;
48
+ const shouldClampSingleLine = shouldClampLines && numberOfLines === 1;
54
49
 
55
- const classes = useMemo( () => {
56
- // The `word-break: break-all` property first makes sure a text line
57
- // breaks even when it contains 'unbreakable' content such as long URLs.
58
- // See https://github.com/WordPress/gutenberg/issues/60860.
59
- const truncateLines = css`
60
- ${ numberOfLines === 1 ? 'word-break: break-all;' : '' }
61
- -webkit-box-orient: vertical;
62
- -webkit-line-clamp: ${ numberOfLines };
63
- display: -webkit-box;
64
- overflow: hidden;
65
- `;
50
+ const classes = clsx(
51
+ shouldTruncate && ! numberOfLines && styles.truncate,
52
+ shouldClampLines && styles[ 'is-line-clamp' ],
53
+ shouldClampSingleLine && styles[ 'is-single-line' ],
54
+ className
55
+ );
66
56
 
67
- return cx(
68
- shouldTruncate && ! numberOfLines && styles.Truncate,
69
- shouldTruncate && !! numberOfLines && truncateLines,
70
- className
71
- );
72
- }, [ className, cx, numberOfLines, shouldTruncate ] );
57
+ const truncateStyle = shouldClampLines
58
+ ? {
59
+ ...style,
60
+ '--wp-components-truncate-lines': numberOfLines,
61
+ }
62
+ : style;
73
63
 
74
- return { ...otherProps, className: classes, children: truncatedContent };
64
+ return {
65
+ ...otherProps,
66
+ className: classes,
67
+ style: truncateStyle,
68
+ children: truncatedContent,
69
+ };
75
70
  }
@@ -0,0 +1,21 @@
1
+ .truncate {
2
+ display: block;
3
+ overflow: hidden;
4
+ text-overflow: ellipsis;
5
+ white-space: nowrap;
6
+ }
7
+
8
+ .is-line-clamp {
9
+ /* stylelint-disable-next-line plugin/use-logical-properties-and-values -- -webkit-line-clamp requires this legacy physical value. */
10
+ -webkit-box-orient: vertical;
11
+ -webkit-line-clamp: var(--wp-components-truncate-lines);
12
+ display: -webkit-box;
13
+ overflow: hidden;
14
+
15
+ // The `word-break: break-all` property first makes sure a text line
16
+ // breaks even when it contains 'unbreakable' content such as long URLs.
17
+ // See https://github.com/WordPress/gutenberg/issues/60860.
18
+ &.is-single-line {
19
+ word-break: break-all;
20
+ }
21
+ }
@@ -15,7 +15,7 @@ import { __experimentalUnitControl as UnitControl } from '@wordpress/components'
15
15
  const Example = () => {
16
16
  const [ value, setValue ] = useState( '10px' );
17
17
 
18
- return <UnitControl __next40pxDefaultSize onChange={ setValue } value={ value } />;
18
+ return <UnitControl onChange={ setValue } value={ value } />;
19
19
  };
20
20
  ```
21
21
 
@@ -128,7 +128,7 @@ const Example = () => {
128
128
  ];
129
129
 
130
130
  return (
131
- <UnitControl __next40pxDefaultSize onChange={ setValue } value={ value } units={ units } />
131
+ <UnitControl onChange={ setValue } value={ value } units={ units } />
132
132
  );
133
133
  };
134
134
  ```
@@ -143,14 +143,8 @@ For example, a `value` of `50%` will set the current unit to `%`.
143
143
  Example:
144
144
 
145
145
  ```jsx
146
- <UnitControl __next40pxDefaultSize value="50%" />
146
+ <UnitControl value="50%" />
147
147
  ```
148
148
 
149
149
  - Required: No
150
150
 
151
- ### `__next40pxDefaultSize`: `boolean`
152
-
153
- Start opting into the larger default height that will become the default size in a future version.
154
-
155
- - Required: No
156
- - Default: `false`
@@ -26,8 +26,6 @@ import {
26
26
  import { useControlledState } from '../utils/hooks';
27
27
  import { escapeRegExp } from '../utils/strings';
28
28
  import type { UnitControlProps, UnitControlOnChangeCallback } from './types';
29
- import { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';
30
- import { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';
31
29
 
32
30
  function UnforwardedUnitControl(
33
31
  unitControlProps: WordPressComponentProps<
@@ -56,16 +54,8 @@ function UnforwardedUnitControl(
56
54
  units: unitsProp = CSS_UNITS,
57
55
  value: valueProp,
58
56
  onFocus: onFocusProp,
59
- __shouldNotWarnDeprecated36pxSize,
60
57
  ...props
61
- } = useDeprecated36pxDefaultSizeProp( unitControlProps );
62
-
63
- maybeWarnDeprecated36pxSize( {
64
- componentName: 'UnitControl',
65
- __next40pxDefaultSize: props.__next40pxDefaultSize,
66
- size,
67
- __shouldNotWarnDeprecated36pxSize,
68
- } );
58
+ } = unitControlProps;
69
59
 
70
60
  if ( 'unit' in unitControlProps ) {
71
61
  deprecated( 'UnitControl unit prop', {
@@ -198,10 +188,7 @@ function UnforwardedUnitControl(
198
188
  isUnitSelectTabbable={ isUnitSelectTabbable }
199
189
  onChange={ handleOnUnitChange }
200
190
  size={
201
- [ 'small', 'compact' ].includes( size ) ||
202
- ( size === 'default' && ! props.__next40pxDefaultSize )
203
- ? 'small'
204
- : 'default'
191
+ [ 'small', 'compact' ].includes( size ) ? 'small' : 'default'
205
192
  }
206
193
  unit={ unit }
207
194
  units={ units }
@@ -224,7 +211,7 @@ function UnforwardedUnitControl(
224
211
  return (
225
212
  <ValueInput
226
213
  { ...props }
227
- __shouldNotWarnDeprecated36pxSize
214
+ __next40pxDefaultSize
228
215
  autoComplete={ autoComplete }
229
216
  className={ classes }
230
217
  disabled={ disabled }
@@ -256,7 +243,7 @@ function UnforwardedUnitControl(
256
243
  * const Example = () => {
257
244
  * const [ value, setValue ] = useState( '10px' );
258
245
  *
259
- * return <UnitControl __next40pxDefaultSize onChange={ setValue } value={ value } />;
246
+ * return <UnitControl onChange={ setValue } value={ value } />;
260
247
  * };
261
248
  * ```
262
249
  */
@@ -55,7 +55,6 @@ const DefaultTemplate: StoryFn< typeof UnitControl > = ( {
55
55
 
56
56
  return (
57
57
  <UnitControl
58
- __next40pxDefaultSize
59
58
  { ...args }
60
59
  value={ value }
61
60
  onChange={ ( v, extra ) => {
@@ -71,7 +70,6 @@ export const Default: StoryFn< typeof UnitControl > = DefaultTemplate.bind(
71
70
  );
72
71
  Default.args = {
73
72
  label: 'Label',
74
- __next40pxDefaultSize: true,
75
73
  };
76
74
 
77
75
  /**
@@ -123,7 +121,6 @@ export const WithCustomUnits: StoryFn< typeof UnitControl > = ( {
123
121
 
124
122
  return (
125
123
  <UnitControl
126
- __next40pxDefaultSize
127
124
  { ...args }
128
125
  value={ value }
129
126
  onChange={ ( v, extra ) => {
@@ -12,13 +12,9 @@ import { useState } from '@wordpress/element';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import _UnitControl from '..';
15
+ import UnitControl from '..';
16
16
  import { CSS_UNITS, parseQuantityAndUnitFromRawValue } from '../utils';
17
17
 
18
- const UnitControl = ( props: React.ComponentProps< typeof _UnitControl > ) => (
19
- <_UnitControl __next40pxDefaultSize { ...props } />
20
- );
21
-
22
18
  const getInput = ( {
23
19
  isInputTypeText = false,
24
20
  }: {
@@ -70,7 +70,10 @@ export type UnitSelectControlProps = {
70
70
 
71
71
  export type UnitControlProps = Pick< InputControlProps, 'size' > &
72
72
  Omit< UnitSelectControlProps, 'size' | 'unit' > &
73
- Omit< NumberControlProps, 'spinControls' | 'suffix' | 'type' > & {
73
+ Omit<
74
+ NumberControlProps,
75
+ 'spinControls' | 'suffix' | 'type' | '__next40pxDefaultSize'
76
+ > & {
74
77
  /**
75
78
  * If `true`, the unit `<select>` is hidden.
76
79
  *
@@ -114,4 +117,11 @@ export type UnitControlProps = Pick< InputControlProps, 'size' > &
114
117
  * @ignore
115
118
  */
116
119
  __shouldNotWarnDeprecated36pxSize?: boolean;
120
+ /**
121
+ * Start opting into the larger default height that will become the default size in a future version.
122
+ *
123
+ * @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
124
+ * @ignore
125
+ */
126
+ __next40pxDefaultSize?: boolean;
117
127
  };
@@ -57,13 +57,7 @@ export default Object.assign( {}, CONTROL_PROPS, {
57
57
  elevationSmall: `0 1px 2px rgba(0, 0, 0, 0.05), 0 2px 3px rgba(0, 0, 0, 0.04), 0 6px 6px rgba(0, 0, 0, 0.03), 0 8px 8px rgba(0, 0, 0, 0.02)`,
58
58
  elevationMedium: `0 2px 3px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.04), 0 12px 12px rgba(0, 0, 0, 0.03), 0 16px 16px rgba(0, 0, 0, 0.02)`,
59
59
  elevationLarge: `0 5px 15px rgba(0, 0, 0, 0.08), 0 15px 27px rgba(0, 0, 0, 0.07), 0 30px 36px rgba(0, 0, 0, 0.04), 0 50px 43px rgba(0, 0, 0, 0.02)`,
60
- surfaceBackgroundColor: COLORS.white,
61
- surfaceBackgroundSubtleColor: '#F3F3F3',
62
- surfaceBackgroundTintColor: '#F5F5F5',
63
60
  surfaceBorderColor: 'rgba(0, 0, 0, 0.1)',
64
- surfaceBorderBoldColor: 'rgba(0, 0, 0, 0.15)',
65
- surfaceBorderSubtleColor: 'rgba(0, 0, 0, 0.05)',
66
- surfaceBackgroundTertiaryColor: COLORS.white,
67
61
  surfaceColor: COLORS.white,
68
62
  // Modal exit animation: `use-modal-exit-animation` parses this for the
69
63
  // `animationend` timeout race; keep the numeric duration equal to the WPDS
@@ -24,6 +24,10 @@ const isSerializedStyles = ( o: any ): o is SerializedStyles =>
24
24
  * `cx` normally knows how to handle. It also hooks into the Emotion
25
25
  * Cache, allowing `css` calls to work inside iframes.
26
26
  *
27
+ * Passing multiple `SerializedStyles` arguments emits multiple classes. When
28
+ * fragments rely on source-order overrides, compose them in a single `css()`
29
+ * call before passing them to `cx`.
30
+ *
27
31
  * ```jsx
28
32
  * import { css } from '@emotion/react';
29
33
  *
@@ -0,0 +1,152 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type * as React from 'react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { forwardRef } from '@wordpress/element';
10
+
11
+ type PolymorphicElementProps< T extends React.ElementType > = Omit<
12
+ React.ComponentPropsWithoutRef< T >,
13
+ 'as'
14
+ > & {
15
+ as?: T;
16
+ };
17
+
18
+ type PolymorphicElementRef< T extends React.ElementType > =
19
+ React.ComponentPropsWithRef< T >[ 'ref' ];
20
+
21
+ const customAttributeRegExp = /^(data|aria|x)-/i;
22
+ const eventHandlerRegExp = /^on[A-Z]/;
23
+
24
+ // Derived from @emotion/is-prop-valid's React prop allowlist, but split by
25
+ // element type so SVG-only props are intentionally filtered from HTML elements.
26
+ // The event-handler check is also deliberately stricter than Emotion's
27
+ // charCode-based `on*` fallback.
28
+ const svgElementNames = new Set(
29
+ `animate animateMotion animateTransform circle clipPath defs desc ellipse
30
+ feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix
31
+ feDiffuseLighting feDisplacementMap feDistantLight feDropShadow feFlood
32
+ feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode
33
+ feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile
34
+ feTurbulence filter foreignObject g image line linearGradient marker mask
35
+ metadata mpath path pattern polygon polyline radialGradient rect set stop svg
36
+ switch symbol text textPath tspan use view`.split( /\s+/ )
37
+ );
38
+
39
+ const baseElementProps = new Set(
40
+ `children dangerouslySetInnerHTML key autoFocus defaultValue defaultChecked
41
+ innerHTML suppressContentEditableWarning suppressHydrationWarning valueLink
42
+ abbr accept acceptCharset accessKey action allow allowUserMedia
43
+ allowPaymentRequest allowFullScreen allowTransparency alt async autoComplete
44
+ autoPlay capture cellPadding cellSpacing challenge charSet checked cite classID
45
+ className cols colSpan content contentEditable contextMenu controls controlsList
46
+ coords crossOrigin data dateTime decoding default defer dir disabled
47
+ disablePictureInPicture disableRemotePlayback download draggable encType
48
+ enterKeyHint fetchpriority fetchPriority form formAction formEncType formMethod
49
+ formNoValidate formTarget frameBorder headers height hidden high href hrefLang
50
+ htmlFor httpEquiv id inputMode integrity is keyParams keyType kind label lang
51
+ list loading loop low marginHeight marginWidth max maxLength media mediaGroup
52
+ method min minLength multiple muted name nonce noValidate open optimum pattern
53
+ placeholder playsInline popover popoverTarget popoverTargetAction poster
54
+ preload profile radioGroup readOnly referrerPolicy rel required reversed role
55
+ rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes
56
+ slot span spellCheck src srcDoc srcLang srcSet start step style summary
57
+ tabIndex target title translate type useMap value width wmode wrap about
58
+ datatype inlist prefix property resource typeof vocab autoCapitalize
59
+ autoCorrect autoSave color incremental fallback inert itemProp itemScope
60
+ itemType itemID itemRef on option results security unselectable`.split( /\s+/ )
61
+ );
62
+
63
+ const svgElementProps = new Set(
64
+ `accentHeight accumulate additive alignmentBaseline allowReorder alphabetic
65
+ amplitude arabicForm ascent attributeName attributeType autoReverse azimuth
66
+ baseFrequency baselineShift baseProfile bbox begin bias by calcMode capHeight
67
+ clip clipPathUnits clipPath clipRule colorInterpolation
68
+ colorInterpolationFilters colorProfile colorRendering contentScriptType
69
+ contentStyleType cursor cx cy d decelerate descent diffuseConstant direction
70
+ display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground
71
+ end exponent externalResourcesRequired fill fillOpacity fillRule filter
72
+ filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize
73
+ fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fr fx
74
+ fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical
75
+ glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX
76
+ ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix
77
+ kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust
78
+ letterSpacing lightingColor limitingConeAngle local markerEnd markerMid
79
+ markerStart markerHeight markerUnits markerWidth mask maskContentUnits
80
+ maskUnits mathematical mode numOctaves offset opacity operator order orient
81
+ orientation origin overflow overlinePosition overlineThickness panose1
82
+ paintOrder pathLength patternContentUnits patternTransform patternUnits
83
+ pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha
84
+ preserveAspectRatio primitiveUnits r radius refX refY renderingIntent
85
+ repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate
86
+ rx ry scale seed shapeRendering slope spacing specularConstant
87
+ specularExponent speed spreadMethod startOffset stdDeviation stemh stemv
88
+ stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness
89
+ string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin
90
+ strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage
91
+ tableValues targetX targetY textAnchor textDecoration textRendering textLength
92
+ to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi
93
+ unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values
94
+ vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget
95
+ visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector
96
+ xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType
97
+ xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z
98
+ zoomAndPan`.split( /\s+/ )
99
+ );
100
+
101
+ const compatElementProps = new Set( [ 'autofocus', 'class', 'for' ] );
102
+
103
+ function isValidIntrinsicElementProp( prop: string, element: string ) {
104
+ if (
105
+ customAttributeRegExp.test( prop ) ||
106
+ eventHandlerRegExp.test( prop )
107
+ ) {
108
+ return true;
109
+ }
110
+
111
+ if ( baseElementProps.has( prop ) || compatElementProps.has( prop ) ) {
112
+ return true;
113
+ }
114
+
115
+ return svgElementNames.has( element ) && svgElementProps.has( prop );
116
+ }
117
+
118
+ function filterIntrinsicElementProps(
119
+ props: PolymorphicElementProps< React.ElementType >,
120
+ element: string
121
+ ) {
122
+ return Object.fromEntries(
123
+ Object.entries( props ).filter( ( [ prop ] ) =>
124
+ isValidIntrinsicElementProp( prop, element )
125
+ )
126
+ );
127
+ }
128
+
129
+ function UnforwardedPolymorphicElement(
130
+ { as, ...props }: PolymorphicElementProps< React.ElementType >,
131
+ ref: React.ForwardedRef< unknown >
132
+ ) {
133
+ const Element = as || 'div';
134
+ const forwardedProps =
135
+ typeof Element === 'string'
136
+ ? filterIntrinsicElementProps( props, Element )
137
+ : props;
138
+
139
+ return <Element ref={ ref } { ...forwardedProps } />;
140
+ }
141
+
142
+ /**
143
+ * Internal utility for components that need Emotion-compatible `as` behavior
144
+ * while rendering with plain React elements.
145
+ */
146
+ export const PolymorphicElement = forwardRef(
147
+ UnforwardedPolymorphicElement
148
+ ) as < T extends React.ElementType = 'div' >(
149
+ props: PolymorphicElementProps< T > & {
150
+ ref?: PolymorphicElementRef< T >;
151
+ }
152
+ ) => React.ReactElement | null;
@@ -0,0 +1,231 @@
1
+ import styled from '@emotion/styled';
2
+ import { render, screen } from '@testing-library/react';
3
+ import { renderToString } from 'react-dom/server';
4
+
5
+ import { createElement, createRef } from '@wordpress/element';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { PolymorphicElement } from '../polymorphic-element';
11
+
12
+ const StyledDiv = styled.div``;
13
+
14
+ const components = [
15
+ {
16
+ name: 'PolymorphicElement',
17
+ Component: PolymorphicElement,
18
+ },
19
+ {
20
+ name: 'styled.div',
21
+ Component: StyledDiv,
22
+ },
23
+ ] as const;
24
+
25
+ describe.each( components )( '$name', ( { Component: RawComponent } ) => {
26
+ const Component = RawComponent as typeof PolymorphicElement;
27
+
28
+ it( 'filters invalid props from intrinsic elements', () => {
29
+ render(
30
+ createElement( Component, {
31
+ as: 'label',
32
+ 'data-testid': 'label',
33
+ htmlFor: 'field',
34
+ labelPosition: 'top',
35
+ } as Parameters< typeof Component >[ 0 ] & {
36
+ labelPosition: string;
37
+ } )
38
+ );
39
+
40
+ const label = screen.getByTestId( 'label' );
41
+
42
+ expect( label ).toHaveAttribute( 'for', 'field' );
43
+ expect( label ).not.toHaveAttribute( 'labelPosition' );
44
+ expect( label ).not.toHaveAttribute( 'labelposition' );
45
+ } );
46
+
47
+ it( 'preserves standard props for intrinsic elements', () => {
48
+ render(
49
+ <Component
50
+ aria-label="Notice"
51
+ className="custom-class"
52
+ data-testid="notice"
53
+ style={ { color: 'red' } }
54
+ title="Notice title"
55
+ />
56
+ );
57
+
58
+ const element = screen.getByTestId( 'notice' );
59
+
60
+ expect( element ).toHaveAttribute( 'aria-label', 'Notice' );
61
+ expect( element ).toHaveAttribute( 'title', 'Notice title' );
62
+ expect( element ).toHaveClass( 'custom-class' );
63
+ expect( element ).toHaveStyle( { color: 'rgb(255, 0, 0)' } );
64
+ } );
65
+
66
+ it( 'preserves standard props without relying on the DOM', () => {
67
+ const view = renderToString(
68
+ createElement( Component, {
69
+ as: 'form',
70
+ acceptCharset: 'utf-8',
71
+ } as Parameters< typeof Component >[ 0 ] & {
72
+ acceptCharset: string;
73
+ } )
74
+ );
75
+
76
+ expect( view ).toContain( 'accept-charset="utf-8"' );
77
+ } );
78
+
79
+ it( 'preserves SVG props for SVG intrinsic elements', () => {
80
+ render(
81
+ <Component
82
+ as="svg"
83
+ data-testid="svg"
84
+ fill="currentColor"
85
+ preserveAspectRatio="xMidYMid meet"
86
+ stroke="none"
87
+ strokeWidth={ 2 }
88
+ viewBox="0 0 24 24"
89
+ />
90
+ );
91
+
92
+ const svg = screen.getByTestId( 'svg' );
93
+
94
+ expect( svg ).toHaveAttribute( 'fill', 'currentColor' );
95
+ expect( svg ).toHaveAttribute( 'preserveAspectRatio', 'xMidYMid meet' );
96
+ expect( svg ).toHaveAttribute( 'stroke', 'none' );
97
+ expect( svg ).toHaveAttribute( 'stroke-width', '2' );
98
+ expect( svg ).toHaveAttribute( 'viewBox', '0 0 24 24' );
99
+ } );
100
+
101
+ it( 'preserves SVG props without relying on the DOM', () => {
102
+ const view = renderToString(
103
+ <Component
104
+ as="svg"
105
+ fill="currentColor"
106
+ strokeWidth={ 2 }
107
+ viewBox="0 0 24 24"
108
+ />
109
+ );
110
+
111
+ expect( view ).toContain( 'fill="currentColor"' );
112
+ expect( view ).toContain( 'stroke-width="2"' );
113
+ expect( view ).toContain( 'viewBox="0 0 24 24"' );
114
+ } );
115
+
116
+ it( 'preserves SVG props for non-SVG-root intrinsic elements', () => {
117
+ render(
118
+ <svg>
119
+ <Component
120
+ as="path"
121
+ d="M0 0h24v24H0z"
122
+ data-testid="path"
123
+ fillRule="evenodd"
124
+ clipPath="url(#clip)"
125
+ />
126
+ </svg>
127
+ );
128
+
129
+ const path = screen.getByTestId( 'path' );
130
+
131
+ expect( path ).toHaveAttribute( 'clip-path', 'url(#clip)' );
132
+ expect( path ).toHaveAttribute( 'd', 'M0 0h24v24H0z' );
133
+ expect( path ).toHaveAttribute( 'fill-rule', 'evenodd' );
134
+ } );
135
+
136
+ it( 'filters invalid props from SVG intrinsic elements', () => {
137
+ render(
138
+ createElement( Component, {
139
+ as: 'svg',
140
+ 'data-testid': 'svg',
141
+ labelPosition: 'top',
142
+ viewBox: '0 0 24 24',
143
+ } as Parameters< typeof Component >[ 0 ] & {
144
+ labelPosition: string;
145
+ } )
146
+ );
147
+
148
+ const svg = screen.getByTestId( 'svg' );
149
+
150
+ expect( svg ).toHaveAttribute( 'viewBox', '0 0 24 24' );
151
+ expect( svg ).not.toHaveAttribute( 'labelPosition' );
152
+ expect( svg ).not.toHaveAttribute( 'labelposition' );
153
+ } );
154
+
155
+ it( 'passes custom props through to custom components', () => {
156
+ function CustomComponent( {
157
+ variant,
158
+ ...props
159
+ }: JSX.IntrinsicElements[ 'section' ] & {
160
+ variant: string;
161
+ } ) {
162
+ return <section data-variant={ variant } { ...props } />;
163
+ }
164
+
165
+ render(
166
+ <Component
167
+ as={ CustomComponent }
168
+ data-testid="custom"
169
+ variant="primary"
170
+ />
171
+ );
172
+
173
+ expect( screen.getByTestId( 'custom' ) ).toHaveAttribute(
174
+ 'data-variant',
175
+ 'primary'
176
+ );
177
+ } );
178
+
179
+ it( 'forwards refs to the rendered element', () => {
180
+ const ref = createRef< HTMLButtonElement >();
181
+
182
+ render(
183
+ <Component
184
+ as="button"
185
+ data-testid="button"
186
+ ref={ ref }
187
+ type="button"
188
+ />
189
+ );
190
+
191
+ expect( ref.current ).toBe( screen.getByTestId( 'button' ) );
192
+ } );
193
+ } );
194
+
195
+ describe( 'PolymorphicElement prop filtering', () => {
196
+ it( 'filters invalid on-prefixed props from intrinsic elements', () => {
197
+ render(
198
+ createElement( PolymorphicElement, {
199
+ 'data-testid': 'element',
200
+ on1: 'invalid',
201
+ 'on-foo': 'invalid',
202
+ } as Parameters< typeof PolymorphicElement >[ 0 ] & {
203
+ on1: string;
204
+ 'on-foo': string;
205
+ } )
206
+ );
207
+
208
+ const element = screen.getByTestId( 'element' );
209
+
210
+ expect( element ).not.toHaveAttribute( 'on1' );
211
+ expect( element ).not.toHaveAttribute( 'on-foo' );
212
+ } );
213
+
214
+ it( 'filters SVG-only props from HTML intrinsic elements', () => {
215
+ render(
216
+ createElement( PolymorphicElement, {
217
+ 'data-testid': 'element',
218
+ fill: 'currentColor',
219
+ strokeWidth: 2,
220
+ } as Parameters< typeof PolymorphicElement >[ 0 ] & {
221
+ fill: string;
222
+ strokeWidth: number;
223
+ } )
224
+ );
225
+
226
+ const element = screen.getByTestId( 'element' );
227
+
228
+ expect( element ).not.toHaveAttribute( 'fill' );
229
+ expect( element ).not.toHaveAttribute( 'stroke-width' );
230
+ } );
231
+ } );