@shopify/ui-extensions 2025.10.8 → 2025.10.10

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 (277) hide show
  1. package/build/cjs/surfaces/point-of-sale/types/storage.js +3 -0
  2. package/build/esm/surfaces/point-of-sale/types/storage.mjs +3 -0
  3. package/build/esnext/surfaces/point-of-sale/types/storage.esnext +3 -0
  4. package/build/ts/shared.d.ts +7 -7
  5. package/build/ts/shared.d.ts.map +1 -1
  6. package/build/ts/surfaces/admin/components/Avatar/Avatar.doc.d.ts.map +1 -1
  7. package/build/ts/surfaces/admin/components/Badge/Badge.doc.d.ts.map +1 -1
  8. package/build/ts/surfaces/admin/components/Banner/Banner.doc.d.ts.map +1 -1
  9. package/build/ts/surfaces/admin/components/Box/Box.doc.d.ts.map +1 -1
  10. package/build/ts/surfaces/admin/components/Button/Button.doc.d.ts.map +1 -1
  11. package/build/ts/surfaces/admin/components/ButtonGroup/ButtonGroup.doc.d.ts.map +1 -1
  12. package/build/ts/surfaces/admin/components/Checkbox/Checkbox.doc.d.ts.map +1 -1
  13. package/build/ts/surfaces/admin/components/Chip/Chip.doc.d.ts.map +1 -1
  14. package/build/ts/surfaces/admin/components/ChoiceList/ChoiceList.doc.d.ts.map +1 -1
  15. package/build/ts/surfaces/admin/components/ClickableChip/ClickableChip.doc.d.ts.map +1 -1
  16. package/build/ts/surfaces/admin/components/ColorField/ColorField.doc.d.ts.map +1 -1
  17. package/build/ts/surfaces/admin/components/ColorPicker/ColorPicker.doc.d.ts.map +1 -1
  18. package/build/ts/surfaces/admin/components/DateField/DateField.doc.d.ts.map +1 -1
  19. package/build/ts/surfaces/admin/components/DatePicker/DatePicker.doc.d.ts.map +1 -1
  20. package/build/ts/surfaces/admin/components/DropZone/{DropZone.ab.doc.d.ts → DropZone.doc.d.ts} +1 -1
  21. package/build/ts/surfaces/admin/components/DropZone/DropZone.doc.d.ts.map +1 -0
  22. package/build/ts/surfaces/admin/components/Grid/Grid.doc.d.ts.map +1 -1
  23. package/build/ts/surfaces/admin/components/Icon/Icon.doc.d.ts.map +1 -1
  24. package/build/ts/surfaces/admin/components/Image/Image.doc.d.ts.map +1 -1
  25. package/build/ts/surfaces/admin/components/Link/Link.doc.d.ts.map +1 -1
  26. package/build/ts/surfaces/admin/components/Menu/Menu.doc.d.ts.map +1 -1
  27. package/build/ts/surfaces/admin/components/Modal/Modal.ab.doc.d.ts.map +1 -1
  28. package/build/ts/surfaces/admin/components/OrderedList/OrderedList.doc.d.ts.map +1 -1
  29. package/build/ts/surfaces/admin/components/Page/Page.ab.doc.d.ts.map +1 -1
  30. package/build/ts/surfaces/admin/components/Popover/Popover.ab.doc.d.ts.map +1 -1
  31. package/build/ts/surfaces/admin/components/SearchField/SearchField.doc.d.ts.map +1 -1
  32. package/build/ts/surfaces/admin/components/Spinner/Spinner.doc.d.ts.map +1 -1
  33. package/build/ts/surfaces/admin/components/Stack/Stack.doc.d.ts.map +1 -1
  34. package/build/ts/surfaces/admin/components/Table/Table.doc.d.ts.map +1 -1
  35. package/build/ts/surfaces/admin/components/Text/Text.doc.d.ts.map +1 -1
  36. package/build/ts/surfaces/admin/components/Thumbnail/Thumbnail.doc.d.ts.map +1 -1
  37. package/build/ts/surfaces/admin/components/Tooltip/Tooltip.doc.d.ts.map +1 -1
  38. package/build/ts/surfaces/admin/components/UnorderedList/UnorderedList.doc.d.ts.map +1 -1
  39. package/build/ts/surfaces/point-of-sale/api/action-api/action-api.d.ts +3 -5
  40. package/build/ts/surfaces/point-of-sale/api/action-api/action-api.d.ts.map +1 -1
  41. package/build/ts/surfaces/point-of-sale/api/cart-api/cart-api.d.ts +38 -33
  42. package/build/ts/surfaces/point-of-sale/api/cart-api/cart-api.d.ts.map +1 -1
  43. package/build/ts/surfaces/point-of-sale/api/cart-line-item-api/cart-line-item-api.d.ts +2 -2
  44. package/build/ts/surfaces/point-of-sale/api/connectivity-api/connectivity-api.d.ts +6 -4
  45. package/build/ts/surfaces/point-of-sale/api/connectivity-api/connectivity-api.d.ts.map +1 -1
  46. package/build/ts/surfaces/point-of-sale/api/customer-api/customer-api.d.ts +4 -1
  47. package/build/ts/surfaces/point-of-sale/api/customer-api/customer-api.d.ts.map +1 -1
  48. package/build/ts/surfaces/point-of-sale/api/device-api/device-api.d.ts +4 -4
  49. package/build/ts/surfaces/point-of-sale/api/draft-order-api/draft-order-api.d.ts +6 -3
  50. package/build/ts/surfaces/point-of-sale/api/draft-order-api/draft-order-api.d.ts.map +1 -1
  51. package/build/ts/surfaces/point-of-sale/api/locale-api/locale-api.d.ts +2 -3
  52. package/build/ts/surfaces/point-of-sale/api/locale-api/locale-api.d.ts.map +1 -1
  53. package/build/ts/surfaces/point-of-sale/api/navigation-api/navigation-api.d.ts +17 -9
  54. package/build/ts/surfaces/point-of-sale/api/navigation-api/navigation-api.d.ts.map +1 -1
  55. package/build/ts/surfaces/point-of-sale/api/order-api/order-api.d.ts +5 -5
  56. package/build/ts/surfaces/point-of-sale/api/pin-pad-api.d.ts +6 -10
  57. package/build/ts/surfaces/point-of-sale/api/pin-pad-api.d.ts.map +1 -1
  58. package/build/ts/surfaces/point-of-sale/api/print-api/print-api.d.ts +10 -11
  59. package/build/ts/surfaces/point-of-sale/api/print-api/print-api.d.ts.map +1 -1
  60. package/build/ts/surfaces/point-of-sale/api/product-api/product-api.d.ts +5 -2
  61. package/build/ts/surfaces/point-of-sale/api/product-api/product-api.d.ts.map +1 -1
  62. package/build/ts/surfaces/point-of-sale/api/product-search-api/product-search-api.d.ts +24 -10
  63. package/build/ts/surfaces/point-of-sale/api/product-search-api/product-search-api.d.ts.map +1 -1
  64. package/build/ts/surfaces/point-of-sale/api/scanner-api/scanner-api.d.ts +26 -8
  65. package/build/ts/surfaces/point-of-sale/api/scanner-api/scanner-api.d.ts.map +1 -1
  66. package/build/ts/surfaces/point-of-sale/api/session-api/session-api.d.ts +3 -6
  67. package/build/ts/surfaces/point-of-sale/api/session-api/session-api.d.ts.map +1 -1
  68. package/build/ts/surfaces/point-of-sale/api/storage-api/storage-api.d.ts +3 -0
  69. package/build/ts/surfaces/point-of-sale/api/storage-api/storage-api.d.ts.map +1 -1
  70. package/build/ts/surfaces/point-of-sale/api/toast-api/toast-api.d.ts +11 -1
  71. package/build/ts/surfaces/point-of-sale/api/toast-api/toast-api.d.ts.map +1 -1
  72. package/build/ts/surfaces/point-of-sale/components/Badge/Badge.doc.d.ts.map +1 -1
  73. package/build/ts/surfaces/point-of-sale/components/Badge.d.ts +23 -4
  74. package/build/ts/surfaces/point-of-sale/components/Banner/Banner.doc.d.ts.map +1 -1
  75. package/build/ts/surfaces/point-of-sale/components/Banner.d.ts +24 -6
  76. package/build/ts/surfaces/point-of-sale/components/Box/Box.doc.d.ts.map +1 -1
  77. package/build/ts/surfaces/point-of-sale/components/Box.d.ts +34 -37
  78. package/build/ts/surfaces/point-of-sale/components/Button/Button.doc.d.ts.map +1 -1
  79. package/build/ts/surfaces/point-of-sale/components/Button.d.ts +56 -16
  80. package/build/ts/surfaces/point-of-sale/components/Choice.d.ts +14 -2
  81. package/build/ts/surfaces/point-of-sale/components/ChoiceList/ChoiceList.doc.d.ts.map +1 -1
  82. package/build/ts/surfaces/point-of-sale/components/ChoiceList.d.ts +41 -5
  83. package/build/ts/surfaces/point-of-sale/components/Clickable/Clickable.doc.d.ts.map +1 -1
  84. package/build/ts/surfaces/point-of-sale/components/Clickable.d.ts +40 -4
  85. package/build/ts/surfaces/point-of-sale/components/DateField/DateField.doc.d.ts.map +1 -1
  86. package/build/ts/surfaces/point-of-sale/components/DateField.d.ts +42 -6
  87. package/build/ts/surfaces/point-of-sale/components/DatePicker/DatePicker.doc.d.ts.map +1 -1
  88. package/build/ts/surfaces/point-of-sale/components/DatePicker.d.ts +42 -6
  89. package/build/ts/surfaces/point-of-sale/components/DateSpinner/DateSpinner.doc.d.ts.map +1 -1
  90. package/build/ts/surfaces/point-of-sale/components/DateSpinner.d.ts +42 -6
  91. package/build/ts/surfaces/point-of-sale/components/Divider/Divider.doc.d.ts.map +1 -1
  92. package/build/ts/surfaces/point-of-sale/components/Divider.d.ts +14 -2
  93. package/build/ts/surfaces/point-of-sale/components/EmailField/EmailField.doc.d.ts.map +1 -1
  94. package/build/ts/surfaces/point-of-sale/components/EmailField.d.ts +43 -7
  95. package/build/ts/surfaces/point-of-sale/components/Heading/Heading.doc.d.ts.map +1 -1
  96. package/build/ts/surfaces/point-of-sale/components/Heading.d.ts +15 -3
  97. package/build/ts/surfaces/point-of-sale/components/Icon/Icon.doc.d.ts.map +1 -1
  98. package/build/ts/surfaces/point-of-sale/components/Icon.d.ts +17 -2
  99. package/build/ts/surfaces/point-of-sale/components/Image/Image.doc.d.ts.map +1 -1
  100. package/build/ts/surfaces/point-of-sale/components/Image.d.ts +6 -3
  101. package/build/ts/surfaces/point-of-sale/components/Modal/Modal.doc.d.ts.map +1 -1
  102. package/build/ts/surfaces/point-of-sale/components/Modal.d.ts +43 -11
  103. package/build/ts/surfaces/point-of-sale/components/NumberField/NumberField.doc.d.ts.map +1 -1
  104. package/build/ts/surfaces/point-of-sale/components/NumberField.d.ts +56 -41
  105. package/build/ts/surfaces/point-of-sale/components/Page/Page.doc.d.ts.map +1 -1
  106. package/build/ts/surfaces/point-of-sale/components/Page.d.ts +19 -7
  107. package/build/ts/surfaces/point-of-sale/components/PosBlock/PosBlock.doc.d.ts.map +1 -1
  108. package/build/ts/surfaces/point-of-sale/components/PosBlock.d.ts +16 -4
  109. package/build/ts/surfaces/point-of-sale/components/QrCode.d.ts +14 -2
  110. package/build/ts/surfaces/point-of-sale/components/ScrollBox/ScrollBox.doc.d.ts.map +1 -1
  111. package/build/ts/surfaces/point-of-sale/components/ScrollBox.d.ts +33 -36
  112. package/build/ts/surfaces/point-of-sale/components/SearchField/SearchField.doc.d.ts.map +1 -1
  113. package/build/ts/surfaces/point-of-sale/components/SearchField.d.ts +42 -6
  114. package/build/ts/surfaces/point-of-sale/components/Section/Section.doc.d.ts.map +1 -1
  115. package/build/ts/surfaces/point-of-sale/components/Section.d.ts +17 -7
  116. package/build/ts/surfaces/point-of-sale/components/Stack/Stack.doc.d.ts.map +1 -1
  117. package/build/ts/surfaces/point-of-sale/components/Stack.d.ts +47 -61
  118. package/build/ts/surfaces/point-of-sale/components/Text/Text.doc.d.ts.map +1 -1
  119. package/build/ts/surfaces/point-of-sale/components/Text.d.ts +28 -6
  120. package/build/ts/surfaces/point-of-sale/components/TextArea/TextArea.doc.d.ts.map +1 -1
  121. package/build/ts/surfaces/point-of-sale/components/TextArea.d.ts +43 -7
  122. package/build/ts/surfaces/point-of-sale/components/TextField/TextField.doc.d.ts.map +1 -1
  123. package/build/ts/surfaces/point-of-sale/components/TextField.d.ts +43 -7
  124. package/build/ts/surfaces/point-of-sale/components/Tile/Tile.doc.d.ts.map +1 -1
  125. package/build/ts/surfaces/point-of-sale/components/Tile.d.ts +40 -4
  126. package/build/ts/surfaces/point-of-sale/components/TimeField/TimeField.doc.d.ts.map +1 -1
  127. package/build/ts/surfaces/point-of-sale/components/TimeField.d.ts +42 -6
  128. package/build/ts/surfaces/point-of-sale/components/TimePicker/TimePicker.doc.d.ts.map +1 -1
  129. package/build/ts/surfaces/point-of-sale/components/TimePicker.d.ts +42 -6
  130. package/build/ts/surfaces/point-of-sale/components/components-shared.d.ts +638 -878
  131. package/build/ts/surfaces/point-of-sale/components/targets/StandardComponents.d.ts +1 -1
  132. package/build/ts/surfaces/point-of-sale/components/targets/StandardComponents.d.ts.map +1 -1
  133. package/build/ts/surfaces/point-of-sale/event/data/BaseApi.d.ts +3 -0
  134. package/build/ts/surfaces/point-of-sale/event/data/BaseApi.d.ts.map +1 -1
  135. package/build/ts/surfaces/point-of-sale/event/data/BaseData.d.ts +15 -0
  136. package/build/ts/surfaces/point-of-sale/event/data/BaseData.d.ts.map +1 -1
  137. package/build/ts/surfaces/point-of-sale/event/data/CartUpdateEventData.d.ts +6 -0
  138. package/build/ts/surfaces/point-of-sale/event/data/CartUpdateEventData.d.ts.map +1 -1
  139. package/build/ts/surfaces/point-of-sale/event/data/CashTrackingSessionData.d.ts +27 -0
  140. package/build/ts/surfaces/point-of-sale/event/data/CashTrackingSessionData.d.ts.map +1 -1
  141. package/build/ts/surfaces/point-of-sale/event/data/ExchangeTransactionData.d.ts +18 -0
  142. package/build/ts/surfaces/point-of-sale/event/data/ExchangeTransactionData.d.ts.map +1 -1
  143. package/build/ts/surfaces/point-of-sale/event/data/ReprintReceiptData.d.ts +9 -0
  144. package/build/ts/surfaces/point-of-sale/event/data/ReprintReceiptData.d.ts.map +1 -1
  145. package/build/ts/surfaces/point-of-sale/event/data/ReturnTransactionData.d.ts +18 -0
  146. package/build/ts/surfaces/point-of-sale/event/data/ReturnTransactionData.d.ts.map +1 -1
  147. package/build/ts/surfaces/point-of-sale/event/data/SaleTransactionData.d.ts +12 -0
  148. package/build/ts/surfaces/point-of-sale/event/data/SaleTransactionData.d.ts.map +1 -1
  149. package/build/ts/surfaces/point-of-sale/event/data/TransactionCompleteData.d.ts +27 -0
  150. package/build/ts/surfaces/point-of-sale/event/data/TransactionCompleteData.d.ts.map +1 -1
  151. package/build/ts/surfaces/point-of-sale/event/output/BaseOutput.d.ts +17 -0
  152. package/build/ts/surfaces/point-of-sale/event/output/BaseOutput.d.ts.map +1 -1
  153. package/build/ts/surfaces/point-of-sale/extension-targets.d.ts +135 -0
  154. package/build/ts/surfaces/point-of-sale/extension-targets.d.ts.map +1 -1
  155. package/build/ts/surfaces/point-of-sale/types/base-transaction-complete.d.ts +43 -0
  156. package/build/ts/surfaces/point-of-sale/types/base-transaction-complete.d.ts.map +1 -1
  157. package/build/ts/surfaces/point-of-sale/types/cart.d.ts +227 -31
  158. package/build/ts/surfaces/point-of-sale/types/cart.d.ts.map +1 -1
  159. package/build/ts/surfaces/point-of-sale/types/country-code.d.ts +3 -0
  160. package/build/ts/surfaces/point-of-sale/types/country-code.d.ts.map +1 -1
  161. package/build/ts/surfaces/point-of-sale/types/device.d.ts +6 -3
  162. package/build/ts/surfaces/point-of-sale/types/device.d.ts.map +1 -1
  163. package/build/ts/surfaces/point-of-sale/types/direct-api-request-body.d.ts +3 -3
  164. package/build/ts/surfaces/point-of-sale/types/discount-allocation.d.ts +6 -0
  165. package/build/ts/surfaces/point-of-sale/types/discount-allocation.d.ts.map +1 -1
  166. package/build/ts/surfaces/point-of-sale/types/money.d.ts +18 -0
  167. package/build/ts/surfaces/point-of-sale/types/money.d.ts.map +1 -1
  168. package/build/ts/surfaces/point-of-sale/types/multiple-resource-result.d.ts +1 -2
  169. package/build/ts/surfaces/point-of-sale/types/multiple-resource-result.d.ts.map +1 -1
  170. package/build/ts/surfaces/point-of-sale/types/order.d.ts +18 -0
  171. package/build/ts/surfaces/point-of-sale/types/order.d.ts.map +1 -1
  172. package/build/ts/surfaces/point-of-sale/types/paginated-result.d.ts +2 -3
  173. package/build/ts/surfaces/point-of-sale/types/paginated-result.d.ts.map +1 -1
  174. package/build/ts/surfaces/point-of-sale/types/payment.d.ts +15 -0
  175. package/build/ts/surfaces/point-of-sale/types/payment.d.ts.map +1 -1
  176. package/build/ts/surfaces/point-of-sale/types/pin-pad.d.ts +36 -16
  177. package/build/ts/surfaces/point-of-sale/types/pin-pad.d.ts.map +1 -1
  178. package/build/ts/surfaces/point-of-sale/types/product.d.ts +170 -0
  179. package/build/ts/surfaces/point-of-sale/types/product.d.ts.map +1 -1
  180. package/build/ts/surfaces/point-of-sale/types/session.d.ts +7 -5
  181. package/build/ts/surfaces/point-of-sale/types/session.d.ts.map +1 -1
  182. package/build/ts/surfaces/point-of-sale/types/shipping-line.d.ts +32 -0
  183. package/build/ts/surfaces/point-of-sale/types/shipping-line.d.ts.map +1 -1
  184. package/build/ts/surfaces/point-of-sale/types/storage.d.ts +13 -11
  185. package/build/ts/surfaces/point-of-sale/types/storage.d.ts.map +1 -1
  186. package/build/ts/surfaces/point-of-sale/types/tax-line.d.ts +21 -0
  187. package/build/ts/surfaces/point-of-sale/types/tax-line.d.ts.map +1 -1
  188. package/build/ts/surfaces/point-of-sale/types/transaction-type.d.ts +7 -0
  189. package/build/ts/surfaces/point-of-sale/types/transaction-type.d.ts.map +1 -1
  190. package/build/tsconfig.tsbuildinfo +1 -1
  191. package/package.json +6 -1
  192. package/src/shared.ts +7 -7
  193. package/src/surfaces/admin/api/intents/examples/edit-metafield-definition.js +1 -0
  194. package/src/surfaces/admin/api/intents/examples/edit-metaobject-definition.js +1 -1
  195. package/src/surfaces/admin/components/Icon/icon-data.json +9 -0
  196. package/src/surfaces/point-of-sale/api/action-api/action-api.ts +3 -5
  197. package/src/surfaces/point-of-sale/api/cart-api/cart-api.ts +38 -33
  198. package/src/surfaces/point-of-sale/api/cart-line-item-api/cart-line-item-api.ts +2 -2
  199. package/src/surfaces/point-of-sale/api/connectivity-api/connectivity-api.ts +6 -4
  200. package/src/surfaces/point-of-sale/api/customer-api/customer-api.ts +4 -1
  201. package/src/surfaces/point-of-sale/api/device-api/device-api.ts +4 -4
  202. package/src/surfaces/point-of-sale/api/draft-order-api/draft-order-api.ts +6 -3
  203. package/src/surfaces/point-of-sale/api/locale-api/locale-api.ts +2 -3
  204. package/src/surfaces/point-of-sale/api/navigation-api/navigation-api.ts +17 -9
  205. package/src/surfaces/point-of-sale/api/order-api/order-api.ts +5 -5
  206. package/src/surfaces/point-of-sale/api/pin-pad-api.ts +6 -10
  207. package/src/surfaces/point-of-sale/api/print-api/print-api.ts +10 -11
  208. package/src/surfaces/point-of-sale/api/product-api/product-api.ts +5 -2
  209. package/src/surfaces/point-of-sale/api/product-search-api/product-search-api.ts +24 -10
  210. package/src/surfaces/point-of-sale/api/scanner-api/scanner-api.ts +26 -8
  211. package/src/surfaces/point-of-sale/api/session-api/session-api.ts +3 -6
  212. package/src/surfaces/point-of-sale/api/storage-api/storage-api.ts +3 -0
  213. package/src/surfaces/point-of-sale/api/toast-api/toast-api.ts +11 -1
  214. package/src/surfaces/point-of-sale/components/Badge.d.ts +23 -4
  215. package/src/surfaces/point-of-sale/components/Banner.d.ts +24 -6
  216. package/src/surfaces/point-of-sale/components/Box.d.ts +34 -37
  217. package/src/surfaces/point-of-sale/components/Button.d.ts +56 -16
  218. package/src/surfaces/point-of-sale/components/Choice.d.ts +14 -2
  219. package/src/surfaces/point-of-sale/components/ChoiceList/examples/composed-choices.jsx +35 -0
  220. package/src/surfaces/point-of-sale/components/ChoiceList.d.ts +41 -5
  221. package/src/surfaces/point-of-sale/components/Clickable.d.ts +40 -4
  222. package/src/surfaces/point-of-sale/components/DateField.d.ts +42 -6
  223. package/src/surfaces/point-of-sale/components/DatePicker.d.ts +42 -6
  224. package/src/surfaces/point-of-sale/components/DateSpinner.d.ts +42 -6
  225. package/src/surfaces/point-of-sale/components/Divider.d.ts +14 -2
  226. package/src/surfaces/point-of-sale/components/EmailField.d.ts +43 -7
  227. package/src/surfaces/point-of-sale/components/Heading.d.ts +15 -3
  228. package/src/surfaces/point-of-sale/components/Icon.d.ts +17 -2
  229. package/src/surfaces/point-of-sale/components/Image.d.ts +6 -3
  230. package/src/surfaces/point-of-sale/components/Modal.d.ts +43 -11
  231. package/src/surfaces/point-of-sale/components/NumberField.d.ts +56 -41
  232. package/src/surfaces/point-of-sale/components/Page.d.ts +19 -7
  233. package/src/surfaces/point-of-sale/components/PosBlock.d.ts +16 -4
  234. package/src/surfaces/point-of-sale/components/QrCode.d.ts +14 -2
  235. package/src/surfaces/point-of-sale/components/ScrollBox.d.ts +33 -36
  236. package/src/surfaces/point-of-sale/components/SearchField.d.ts +42 -6
  237. package/src/surfaces/point-of-sale/components/Section.d.ts +17 -7
  238. package/src/surfaces/point-of-sale/components/Stack.d.ts +47 -61
  239. package/src/surfaces/point-of-sale/components/Text.d.ts +28 -6
  240. package/src/surfaces/point-of-sale/components/TextArea.d.ts +43 -7
  241. package/src/surfaces/point-of-sale/components/TextField.d.ts +43 -7
  242. package/src/surfaces/point-of-sale/components/Tile.d.ts +40 -4
  243. package/src/surfaces/point-of-sale/components/TimeField.d.ts +42 -6
  244. package/src/surfaces/point-of-sale/components/TimePicker.d.ts +42 -6
  245. package/src/surfaces/point-of-sale/components/components-shared.d.ts +638 -878
  246. package/src/surfaces/point-of-sale/components/targets/StandardComponents.ts +0 -1
  247. package/src/surfaces/point-of-sale/components.d.ts +1506 -1537
  248. package/src/surfaces/point-of-sale/event/data/BaseApi.ts +3 -0
  249. package/src/surfaces/point-of-sale/event/data/BaseData.ts +15 -0
  250. package/src/surfaces/point-of-sale/event/data/CartUpdateEventData.ts +6 -0
  251. package/src/surfaces/point-of-sale/event/data/CashTrackingSessionData.ts +27 -0
  252. package/src/surfaces/point-of-sale/event/data/ExchangeTransactionData.ts +18 -0
  253. package/src/surfaces/point-of-sale/event/data/ReprintReceiptData.ts +9 -0
  254. package/src/surfaces/point-of-sale/event/data/ReturnTransactionData.ts +18 -0
  255. package/src/surfaces/point-of-sale/event/data/SaleTransactionData.ts +12 -0
  256. package/src/surfaces/point-of-sale/event/data/TransactionCompleteData.ts +27 -0
  257. package/src/surfaces/point-of-sale/event/output/BaseOutput.ts +17 -0
  258. package/src/surfaces/point-of-sale/extension-targets.ts +135 -0
  259. package/src/surfaces/point-of-sale/types/base-transaction-complete.ts +43 -0
  260. package/src/surfaces/point-of-sale/types/cart.ts +227 -31
  261. package/src/surfaces/point-of-sale/types/country-code.ts +3 -0
  262. package/src/surfaces/point-of-sale/types/device.ts +6 -3
  263. package/src/surfaces/point-of-sale/types/direct-api-request-body.ts +3 -3
  264. package/src/surfaces/point-of-sale/types/discount-allocation.ts +6 -0
  265. package/src/surfaces/point-of-sale/types/money.ts +18 -0
  266. package/src/surfaces/point-of-sale/types/multiple-resource-result.ts +1 -2
  267. package/src/surfaces/point-of-sale/types/order.ts +18 -1
  268. package/src/surfaces/point-of-sale/types/paginated-result.ts +2 -3
  269. package/src/surfaces/point-of-sale/types/payment.ts +16 -0
  270. package/src/surfaces/point-of-sale/types/pin-pad.ts +32 -14
  271. package/src/surfaces/point-of-sale/types/product.ts +170 -0
  272. package/src/surfaces/point-of-sale/types/session.ts +7 -5
  273. package/src/surfaces/point-of-sale/types/shipping-line.ts +32 -0
  274. package/src/surfaces/point-of-sale/types/storage.ts +13 -11
  275. package/src/surfaces/point-of-sale/types/tax-line.ts +21 -0
  276. package/src/surfaces/point-of-sale/types/transaction-type.ts +7 -0
  277. package/build/ts/surfaces/admin/components/DropZone/DropZone.ab.doc.d.ts.map +0 -1
@@ -10,84 +10,99 @@
10
10
  * TODO: Update `any` type here after this is resolved
11
11
  * https://github.com/Shopify/ui-api-design/issues/139
12
12
  */
13
+ /**
14
+ * Represents any valid child content that can be rendered within a component.
15
+ */
13
16
  export type ComponentChildren = any;
17
+ /**
18
+ * Represents text-only child content.
19
+ */
14
20
  export type StringChildren = string;
21
+ /**
22
+ * Properties that are available on all components.
23
+ */
15
24
  export interface GlobalProps {
16
25
  /**
17
- * A unique identifier for the element.
26
+ * A unique identifier for the element within the document. This ID is used for multiple purposes: targeting the element from JavaScript code, creating relationships between elements (using `commandFor`, `interestFor`, ARIA attributes), linking labels to form controls, enabling fragment navigation with URL anchors (for example, `#section-id`), and applying element-specific styles. The ID must be unique across the entire page—duplicate IDs will cause unexpected behavior and accessibility issues. IDs are case-sensitive and should only contain letters, digits, hyphens, and underscores.
18
27
  */
19
28
  id?: string;
20
29
  }
30
+ /**
31
+ * Provides slots for primary and secondary action elements.
32
+ */
21
33
  export interface ActionSlots {
22
34
  /**
23
- * The primary action to perform, provided as a button or link type element.
35
+ * The primary action element to display, typically a `Button` or clickable link representing the most important action available in the current context. This action aligns with the user's primary goal or the main purpose of the interface (for example, "Save changes", "Checkout", "Add to cart", "Submit order"). The primary action receives visual emphasis through styling to draw user attention. Only one primary action is displayed to maintain clear focus on the main call-to-action.
24
36
  */
25
37
  primaryAction?: ComponentChildren;
26
38
  /**
27
- * The secondary actions to perform, provided as button or link type elements.
39
+ * Secondary action elements to display, typically `Button` or clickable link elements representing alternative or supporting actions that are less important than the primary action (for example, "Cancel", "Save draft", "Skip", "Learn more"). Secondary actions receive less visual prominence than the primary action to maintain clear hierarchy. Multiple secondary actions can be provided and are displayed together, often in a different visual style or position than the primary action. The order of actions in the array may affect their display order depending on the component.
28
40
  */
29
41
  secondaryActions?: ComponentChildren;
30
42
  }
43
+ /**
44
+ * Properties for overlay lifecycle callbacks.
45
+ */
31
46
  export interface BaseOverlayProps {
32
47
  /**
33
- * Callback fired after the overlay is shown.
48
+ * Called when the overlay begins to appear, immediately after `showOverlay()` is called or the `hidden` property changes to `false`, but before any show animations start. The element may not be visible yet. Common operations include initializing overlay content, fetching data needed for display, setting focus on the first interactive element, or tracking analytics events. Layout calculations should be avoided here as the element may not have final dimensions yet.
34
49
  */
35
50
  onShow?: (event: Event) => void;
36
51
  /**
37
- * Callback fired when the overlay is shown **after** any animations to show the overlay have finished.
52
+ * Called after the overlay is fully visible and all show animations have completed. At this point, the overlay is completely rendered with final dimensions and positioning. Common operations include focusing specific elements after animations complete, measuring rendered content dimensions, triggering secondary animations, or initializing interactive features that depend on final layout. This is the safest point for DOM measurements and layout-dependent operations.
38
53
  */
39
54
  onAfterShow?: (event: Event) => void;
40
55
  /**
41
- * Callback fired after the overlay is hidden.
56
+ * Called when the overlay begins to hide, immediately after `hideOverlay()` is called or the `hidden` property changes to `true`, but before any hide animations start. The element is still visible. Common operations include cleanup tasks, saving overlay state before it disappears, canceling pending requests, or preparing for the post-hide state. This is the last opportunity to interact with the visible overlay before animations begin.
42
57
  */
43
58
  onHide?: (event: Event) => void;
44
59
  /**
45
- * Callback fired when the overlay is hidden **after** any animations to hide the overlay have finished.
60
+ * Called after the overlay is completely hidden and all hide animations have finished. The element is no longer visible or interactive. Common operations include final cleanup, focusing the element that triggered the overlay, navigating to another view, freeing resources, or performing operations that should only occur after the overlay is completely dismissed. Post-dismissal navigation or state updates that would be jarring during animations are appropriate here.
46
61
  */
47
62
  onAfterHide?: (event: Event) => void;
48
63
  }
49
64
  /**
50
- * Shared interfaces for web component methods.
51
- *
52
- * Methods are required (not optional) because:
65
+ * Methods for controlling overlay visibility. These methods are required (not optional) because:
53
66
  * - Components implementing this interface must provide all methods
54
- * - Unlike props/attributes, methods are not rendered in HTML but are JavaScript APIs
67
+ * - Unlike props/attributes, methods aren't rendered in HTML but are JavaScript APIs
55
68
  * - Consumers expect these methods to be consistently available on all instances
56
69
  */
57
70
  export interface BaseOverlayMethods {
58
71
  /**
59
- * Method to show an overlay.
72
+ * Programmatically displays the overlay element. When called, the overlay becomes visible and triggers any associated `onShow` and `onAfterShow` callbacks. This method opens modals, dialogs, or other overlay components in response to user actions or application state changes.
60
73
  *
61
74
  * @implementation This is a method to be called on the element and not a callback and should hence be camelCase
62
75
  */
63
76
  showOverlay: () => void;
64
77
  /**
65
- * Method to hide an overlay.
78
+ * Programmatically hides the overlay element. When called, the overlay becomes hidden and triggers any associated `onHide` and `onAfterHide` callbacks. This method closes modals, dismisses dialogs, or hides overlay components programmatically without requiring user interaction.
66
79
  *
67
80
  * @implementation This is a method to be called on the element and not a callback and should hence be camelCase
68
81
  */
69
82
  hideOverlay: () => void;
70
83
  /**
71
- * Method to toggle the visiblity of an overlay.
84
+ * Programmatically toggles the overlay's visibility state. If currently visible, the overlay will be hidden; if currently hidden, it will be shown. This triggers the appropriate show/hide callbacks based on the resulting state. This method enables toggle buttons or cyclic visibility controls.
72
85
  *
73
86
  * @implementation This is a method to be called on the element and not a callback and should hence be camelCase
74
87
  */
75
88
  toggleOverlay: () => void;
76
89
  }
90
+ /**
91
+ * Properties for focus event callbacks.
92
+ */
77
93
  export interface FocusEventProps {
78
94
  /**
79
- * Callback when the element loses focus.
80
- *
81
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
95
+ * Called when focus is removed from the element, either by the user moving to another field (tabbing, clicking elsewhere) or programmatically using `blur()`. This event fires before `onChange` for modified fields. The event contains information about which element is receiving focus next (`relatedTarget`). Common operations include triggering validation, saving in-progress changes, hiding related UI elements like autocomplete dropdowns, or tracking field interaction analytics. A common pattern is validating and showing errors on blur to avoid disrupting users while they're still typing. Learn more about [blur events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event).
82
96
  */
83
97
  onBlur?: (event: FocusEvent) => void;
84
98
  /**
85
- * Callback when the element receives focus.
86
- *
87
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
99
+ * Called when the element receives focus through user interaction (clicking, tabbing) or programmatic methods like `focus()`. This event fires before any input occurs. The event contains information about which element previously had focus (`relatedTarget`). Common operations include showing helper text, highlighting the active field, displaying related UI like autocomplete suggestions, preselecting content, or tracking which fields users interact with. A common pattern is clearing errors on focus to provide a fresh start when users re-attempt input after validation failure. Learn more about [focus events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event).
88
100
  */
89
101
  onFocus?: (event: FocusEvent) => void;
90
102
  }
103
+ /**
104
+ * Defines the available size options for icons using a semantic scale. Provides granular control over icon dimensions from compact inline sizes to prominent display sizes.
105
+ */
91
106
  export type SizeKeyword =
92
107
  | 'small-500'
93
108
  | 'small-400'
@@ -102,23 +117,27 @@ export type SizeKeyword =
102
117
  | 'large-300'
103
118
  | 'large-400'
104
119
  | 'large-500';
120
+ /**
121
+ * Defines the available color intensity options for icons. Controls the visual prominence and contrast of icon elements within the interface.
122
+ */
105
123
  export type ColorKeyword = 'subdued' | 'base' | 'strong';
124
+ /**
125
+ * A background color keyword including transparent option.
126
+ */
106
127
  export type BackgroundColorKeyword = 'transparent' | ColorKeyword;
128
+ /**
129
+ * Properties for controlling the background color of an element.
130
+ */
107
131
  export interface BackgroundProps {
108
132
  /**
109
- * Adjust the background of the element.
133
+ * Sets the background color intensity of the element. Controls how the element stands out from its surroundings.
110
134
  *
111
135
  * @default 'transparent'
112
136
  */
113
137
  background?: BackgroundColorKeyword;
114
138
  }
115
139
  /**
116
- * Tone is a property for defining the color treatment of a component.
117
- *
118
- * A tone can apply a grouping of colors to a component. For example,
119
- * critical may have a specific text color and background color.
120
- *
121
- * In some cases, like for Banner, the tone may also affect the semantic and accessibility treatment of the component.
140
+ * Defines the semantic tone options for icons. Controls the color and visual emphasis based on the information type and importance being communicated.
122
141
  *
123
142
  * @default 'auto'
124
143
  */
@@ -681,17 +700,29 @@ declare const privateIconArray: readonly [
681
700
  'x-circle',
682
701
  'x-circle-filled',
683
702
  ];
703
+ /**
704
+ * A valid icon identifier from the available icon set.
705
+ */
684
706
  export type IconType = (typeof privateIconArray)[number];
685
707
  /**
686
708
  * Like `Extract`, but ensures that the extracted type is a strict subtype of the input type.
687
709
  */
688
710
  export type ExtractStrict<T, U extends T> = Extract<T, U>;
711
+ /**
712
+ * A utility type for properties that support [1-to-4-value shorthand syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Cascade/Shorthand_properties#edges_of_a_box).
713
+ */
689
714
  export type MaybeAllValuesShorthandProperty<T extends string> =
690
715
  | T
691
716
  | `${T} ${T}`
692
717
  | `${T} ${T} ${T}`
693
718
  | `${T} ${T} ${T} ${T}`;
719
+ /**
720
+ * Defines a shorthand property that accepts either a single value or two space-separated values for directional properties like padding and spacing.
721
+ */
694
722
  export type MaybeTwoValuesShorthandProperty<T extends string> = T | `${T} ${T}`;
723
+ /**
724
+ * A utility type for values that can be responsive using container queries.
725
+ */
695
726
  export type MaybeResponsive<T> = T | `@container${string}`;
696
727
  /**
697
728
  * Prevents widening string literal types in a union to `string`.
@@ -703,41 +734,42 @@ export type MaybeResponsive<T> = T | `@container${string}`;
703
734
  */
704
735
  export type AnyString = string & {};
705
736
  /**
706
- * This is purely to give the ability
707
- * to have a space or not in the string literal types.
737
+ * A utility type that allows optional spacing in string literal values.
708
738
  *
709
- * For example in the `aspectRatio` property, `16/9` and `16 / 9` are both valid.
739
+ * For example, in the `aspectRatio` property, `16/9` and `16 / 9` are both valid.
710
740
  */
711
741
  export type optionalSpace = '' | ' ';
712
742
  export interface BadgeProps extends GlobalProps {
713
743
  /**
714
- * The content of the Badge.
744
+ * The child elements to render within this component.
715
745
  */
716
746
  children?: ComponentChildren;
717
747
  /**
718
- * Sets the tone of the Badge, based on the intention of the information being conveyed.
748
+ * The semantic tone of the badge, based on the intention of the information being conveyed. Badges rely on the tone system for semantic meaning, so using custom styling may not clearly convey meaning to merchants.
719
749
  *
720
750
  * @default 'auto'
721
751
  */
722
752
  tone?: ToneKeyword;
723
753
  /**
724
- * Modify the color to be more or less intense.
754
+ * The color intensity of the badge. Controls how prominent or subtle the badge appears within the interface.
725
755
  *
726
756
  * @default 'base'
727
757
  */
728
758
  color?: ColorKeyword;
729
759
  /**
730
- * The type of icon to be displayed in the badge.
760
+ * The icon identifier specifying which icon to display within the badge. Accepts any valid icon name from the icon set.
731
761
  *
732
762
  * @default ''
733
763
  */
734
764
  icon?: IconType | AnyString;
735
765
  /**
736
- * The position of the icon in relation to the text.
766
+ * The position of the icon relative to the badge text content:
767
+ * - `'start'`: Icon appears before the text
768
+ * - `'end'`: Icon appears after the text
737
769
  */
738
770
  iconPosition?: 'start' | 'end';
739
771
  /**
740
- * Adjusts the size.
772
+ * Adjusts the size of the badge and its icon. Available sizes range from `'small-500'` (smallest) through `'base'` (default) to `'large-500'` (largest), allowing you to match badge size to your interface hierarchy.
741
773
  *
742
774
  * @default 'base'
743
775
  */
@@ -745,60 +777,46 @@ export interface BadgeProps extends GlobalProps {
745
777
  }
746
778
  export interface BannerProps extends GlobalProps, ActionSlots {
747
779
  /**
748
- * The title of the banner.
780
+ * The title text displayed prominently at the top of the banner. This is the only property for text content—body text content isn't supported. You can't place `<s-text>` or other text elements as children.
749
781
  *
750
782
  * @default ''
751
783
  */
752
784
  heading?: string;
753
785
  /**
754
- * The content of the Banner.
786
+ * The child elements to render within this component.
755
787
  */
756
788
  children?: ComponentChildren;
757
789
  /**
758
- * Sets the tone of the Banner, based on the intention of the information being conveyed.
759
- *
760
- * The banner is a live region and the type of status will be dictated by the Tone selected.
790
+ * Sets the visual appearance and accessibility behavior of the banner. The tone determines both the color scheme and how screen readers announce the banner. Available options:
791
+ * - `'auto'` - Lets the system automatically choose the appropriate tone based on context.
792
+ * - `'success'` - Green styling for positive outcomes and successful operations. Creates an informative live region for screen readers.
793
+ * - `'info'` - Blue styling for general information and neutral updates. Creates an informative live region for screen readers.
794
+ * - `'warning'` - Orange styling for important notices that require attention. Creates an informative live region for screen readers.
795
+ * - `'critical'` - Red styling for errors and urgent issues requiring immediate action. Creates an assertive live region that is announced immediately by screen readers.
761
796
  *
762
- * - `critical` creates an [assertive live region](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/alert_role) that is announced by screen readers immediately.
763
- * - `neutral`, `info`, `success`, `warning` and `caution` creates an [informative live region](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/status_role) that is announced by screen readers after the current message.
764
- *
765
- * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions
766
- * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/alert_role
767
- * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/status_role
797
+ * Learn more about [ARIA live regions](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions), [alert role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/alert_role), and [status role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/status_role) on MDN.
768
798
  *
769
799
  * @default 'auto'
770
800
  */
771
801
  tone?: ToneKeyword;
772
802
  /**
773
- * Makes the content collapsible.
774
- * A collapsible banner will conceal child elements initially, but allow the user to expand the banner to see them.
803
+ * Whether the banner content can be collapsed and expanded. When `true`, the banner displays a collapse/expand toggle control and child elements are initially hidden. Users can click the toggle to reveal or hide the content. Typically applied to lengthy banners or supplementary information that users can choose to view. Collapsed state persists during the component lifecycle but resets on re-render.
775
804
  *
776
805
  * @default false
777
806
  */
778
807
  collapsible?: boolean;
779
808
  /**
780
- * Determines whether the close button of the banner is present.
781
- *
782
- * When the close button is pressed, the `dismiss` event will fire,
783
- * then `hidden` will be true,
784
- * any animation will complete,
785
- * and the `afterhide` event will fire.
809
+ * Whether a close button is displayed in the banner. When `true`, a close (X) button appears allowing users to permanently dismiss the banner. Once dismissed, the banner triggers the `onDismiss` callback and remains hidden until the component is re-rendered or the `hidden` property is changed. Typically applied to non-critical notifications or messages that users can choose to dismiss after reading.
786
810
  *
787
811
  * @default false
788
812
  */
789
813
  dismissible?: boolean;
790
814
  /**
791
- * Event handler when the banner is dismissed by the user.
792
- *
793
- * This does not fire when setting `hidden` manually.
794
- *
795
- * The `hidden` property will be `false` when this event fires.
815
+ * Called when the user dismisses the banner by clicking the close (X) button. This only fires for user-initiated dismissals through the UI close button, not when the banner is hidden programmatically using the `hidden` property. The callback fires after the user clicks but before hide animations begin. Common operations include tracking dismissal metrics, saving user preferences to avoid showing the banner again, performing cleanup when banners are dismissed, or triggering follow-up actions. The banner remains in the DOM after dismissal (just hidden) until re-rendered—complete removal requires controlling rendering at the component level based on dismissal state.
796
816
  */
797
817
  onDismiss?: (event: Event) => void;
798
818
  /**
799
- * Event handler when the banner has fully hidden.
800
- *
801
- * The `hidden` property will be `true` when this event fires.
819
+ * Called after the element is fully hidden and all hide animations have completed.
802
820
  *
803
821
  * @implementation If implementations animate the hiding of the banner,
804
822
  * this event must fire after the banner has fully hidden.
@@ -806,35 +824,29 @@ export interface BannerProps extends GlobalProps, ActionSlots {
806
824
  */
807
825
  onAfterHide?: (event: Event) => void;
808
826
  /**
809
- * Determines whether the banner is hidden.
810
- *
811
- * If this property is being set on each framework render (as in 'controlled' usage),
812
- * and the banner is `dismissible`,
813
- * ensure you update app state for this property when the `dismiss` event fires.
814
- *
815
- * If the banner is not `dismissible`, it can still be hidden by setting this property.
827
+ * Whether the banner is visible or hidden. When set to `true`, the banner is completely hidden from view and removed from the accessibility tree, meaning screen readers won't announce it. Changing this value triggers hide/show animations if configured. Unlike temporary dismissal with the close button, this property provides programmatic control for conditional visibility based on application state, user permissions, or other dynamic conditions.
816
828
  *
817
829
  * @default false
818
830
  */
819
831
  hidden?: boolean;
820
832
  }
833
+ /**
834
+ * Properties for controlling the display behavior of an element.
835
+ */
821
836
  export interface DisplayProps {
822
837
  /**
823
- * Sets the outer display type of the component. The outer type sets a component’s participation in [flow layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flow_layout).
838
+ * Sets the outer display type controlling the element's participation in flow layout. When set to `'none'`, the element is completely removed from both the visual layout and the accessibility tree—it takes up no space and screen readers ignore it entirely, as if it doesn't exist in the DOM. This is different from `hidden` which may keep some accessibility tree presence. The element's `children` and event listeners remain in memory. The value `'auto'` (default) applies normal display behavior. Learn more about the [CSS display property on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/display).
824
839
  *
825
- * - `auto`: the component’s initial value. The actual value depends on the component and context.
826
- * - `none`: hides the component from display and removes it from the accessibility tree, making it invisible to screen readers.
827
- *
828
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/display
829
840
  * @default 'auto'
830
841
  */
831
842
  display?: MaybeResponsive<'auto' | 'none'>;
832
843
  }
844
+ /**
845
+ * Properties for defining the semantic role of an element for assistive technologies.
846
+ */
833
847
  export interface AccessibilityRoleProps {
834
848
  /**
835
- * Sets the semantic meaning of the component’s content. When set,
836
- * the role will be used by assistive technologies to help users
837
- * navigate the page.
849
+ * Sets the semantic role for assistive technologies. Helps screen reader users navigate and understand page structure.
838
850
  *
839
851
  * @implementation Although, in HTML hosts, this property changes the element used,
840
852
  * changing this property must not impact the visual styling of inside or outside of the box.
@@ -845,28 +857,28 @@ export interface AccessibilityRoleProps {
845
857
  }
846
858
  export type AccessibilityRole =
847
859
  /**
848
- * Used to indicate the primary content.
860
+ * Used to indicate the primary content area of the page.
849
861
  *
850
862
  * In an HTML host, `main` will render a `<main>` element.
851
863
  * Learn more about the [`<main>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/main_role) in the MDN web docs.
852
864
  */
853
865
  | 'main'
854
866
  /**
855
- * Used to indicate the component is a header.
867
+ * Used to indicate the element is a header section.
856
868
  *
857
869
  * In an HTML host `header` will render a `<header>` element.
858
870
  * Learn more about the [`<header>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/main_role) in the MDN web docs.
859
871
  */
860
872
  | 'header'
861
873
  /**
862
- * Used to display information such as copyright information, navigation links, and privacy statements.
874
+ * Used to display footer information such as copyright information, navigation links, and privacy statements.
863
875
  *
864
876
  * In an HTML host `footer` will render a `<footer>` element.
865
877
  * Learn more about the [`<footer>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/contentinfo_role) in the MDN web docs.
866
878
  */
867
879
  | 'footer'
868
880
  /**
869
- * Used to indicate a generic section.
881
+ * Used to indicate a thematic grouping of content.
870
882
  * Sections should always have a `Heading` or an accessible name provided in the `accessibilityLabel` property.
871
883
  *
872
884
  * In an HTML host `section` will render a `<section>` element.
@@ -875,21 +887,21 @@ export type AccessibilityRole =
875
887
  */
876
888
  | 'section'
877
889
  /**
878
- * Used to designate a supporting section that relates to the main content.
890
+ * Used to designate a supporting section that is tangentially related to the main content.
879
891
  *
880
892
  * In an HTML host `aside` will render an `<aside>` element.
881
893
  * Learn more about the [`<aside>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/complementary_role) in the MDN web docs.
882
894
  */
883
895
  | 'aside'
884
896
  /**
885
- * Used to identify major groups of links used for navigating.
897
+ * Used to identify navigation link groups used for navigating through the site or page.
886
898
  *
887
899
  * In an HTML host `navigation` will render a `<nav>` element.
888
900
  * Learn more about the [`<nav>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/navigation_role) in the MDN web docs.
889
901
  */
890
902
  | 'navigation'
891
903
  /**
892
- * Used to identify a list of ordered items.
904
+ * Used to identify a list where items have a meaningful order or sequence.
893
905
  *
894
906
  * In an HTML host `ordered-list` will render a `<ol>` element.
895
907
  * Learn more about the [`<ol>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/list_role) in the MDN web docs.
@@ -903,79 +915,83 @@ export type AccessibilityRole =
903
915
  */
904
916
  | 'list-item'
905
917
  /**
906
- * Used to indicates the component acts as a divider that separates and distinguishes sections of content in a list of items.
918
+ * Used to indicate the component acts as a divider that separates and distinguishes sections of content in a list of items.
907
919
  *
908
920
  * In an HTML host `list-item-separator` will render as `<li role="separator">`.
909
921
  * Learn more about the [`<li>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li) and the [`separator` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/separator_role) in the MDN web docs.
910
922
  */
911
923
  | 'list-item-separator'
912
924
  /**
913
- * Used to identify a list of unordered items.
925
+ * Used to identify a list where item order has no significance.
914
926
  *
915
927
  * In an HTML host `unordered-list` will render a `<ul>` element.
916
928
  * Learn more about the [`<ul>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul) and its [implicit role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/list_role) in the MDN web docs.
917
929
  */
918
930
  | 'unordered-list'
919
931
  /**
920
- * Used to indicates the component acts as a divider that separates and distinguishes sections of content.
932
+ * Used to indicate the component acts as a divider that separates and distinguishes sections of content.
921
933
  *
922
934
  * In an HTML host `separator` will render as `<div role="separator">`.
923
935
  * Learn more about the [`separator` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/separator_role) in the MDN web docs.
924
936
  */
925
937
  | 'separator'
926
938
  /**
927
- * Used to define a live region containing advisory information for the user that is not important enough to be an alert.
939
+ * Used to define a live region containing advisory information for the user that isn't important enough to be an alert.
928
940
  *
929
941
  * In an HTML host `status` will render as `<div role="status">`.
930
942
  * Learn more about the [`status` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/status_role) in the MDN web docs.
931
943
  */
932
944
  | 'status'
933
945
  /**
934
- * Used for important, and usually time-sensitive, information.
946
+ * Used for important and usually time-sensitive information that requires immediate attention.
935
947
  *
936
948
  * In an HTML host `alert` will render as `<div role="alert">`.
937
949
  * Learn more about the [`alert` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/alert_role) in the MDN web docs.
938
950
  */
939
951
  | 'alert'
940
952
  /**
941
- * Used to create a nameless container element which has no semantic meaning on its own.
953
+ * Used to create a container element with no specific semantic meaning.
942
954
  *
943
955
  * In an HTML host `generic'` will render a `<div>` element.
944
956
  * Learn more about the [`generic` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/generic_role) in the MDN web docs.
945
957
  */
946
958
  | 'generic'
947
959
  /**
948
- * Used to strip the semantic meaning of an element, but leave the visual styling intact.
960
+ * Used to remove semantic meaning from an element while preserving its visual styling.
949
961
  *
950
962
  * Synonym for `none`
951
963
  * Learn more about the [`presentation` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/presentation_role) in the MDN web docs.
952
964
  */
953
965
  | 'presentation'
954
966
  /**
955
- * Used to strip the semantic meaning of an element, but leave the visual styling intact.
967
+ * Used to remove semantic meaning from an element while preserving its visual styling.
956
968
  *
957
969
  * Synonym for `presentation`
958
970
  * Learn more about the [`none` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/none_role) in the MDN web docs.
959
971
  */
960
972
  | 'none';
973
+ /**
974
+ * Properties for controlling visibility to assistive technologies.
975
+ */
961
976
  export interface AccessibilityVisibilityProps {
962
977
  /**
963
- * Changes the visibility of the element.
964
- *
965
- * - `visible`: the element is visible to all users.
966
- * - `hidden`: the element is removed from the accessibility tree but remains visible.
967
- * - `exclusive`: the element is visually hidden but remains in the accessibility tree.
978
+ * Controls visibility for assistive technologies:
979
+ * - `'visible'`: Announced normally by screen readers
980
+ * - `'hidden'`: Hidden from screen readers while remaining visually visible
981
+ * - `'exclusive'`: Only this element is announced to screen readers, hiding other content
968
982
  *
969
983
  * @default 'visible'
970
984
  */
971
985
  accessibilityVisibility?: 'visible' | 'hidden' | 'exclusive';
972
986
  }
987
+ /**
988
+ * Properties for controlling the visibility of field labels to screen readers.
989
+ */
973
990
  export interface LabelAccessibilityVisibilityProps {
974
991
  /**
975
- * Changes the visibility of the component's label.
976
- *
977
- * - `visible`: the label is visible to all users.
978
- * - `exclusive`: the label is visually hidden but remains in the accessibility tree.
992
+ * Controls whether the label is announced to screen readers:
993
+ * - `'visible'`: Label is announced normally by screen readers
994
+ * - `'exclusive'`: Only the label is announced, hiding other related content from screen readers
979
995
  *
980
996
  * @default 'visible'
981
997
  */
@@ -984,35 +1000,35 @@ export interface LabelAccessibilityVisibilityProps {
984
1000
  'visible' | 'exclusive'
985
1001
  >;
986
1002
  }
1003
+ /**
1004
+ * Defines the available padding size options using a semantic scale. Provides consistent spacing values that align with the POS design system.
1005
+ */
987
1006
  export type PaddingKeyword = SizeKeyword | 'none';
1007
+ /**
1008
+ * Properties for controlling the padding (internal spacing) of an element.
1009
+ */
988
1010
  export interface PaddingProps {
989
1011
  /**
990
- * Adjust the padding of all edges.
991
- *
992
- * [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) is
993
- * supported. Note that, contrary to the CSS, it uses flow-relative values and the order is:
1012
+ * The padding applied to all edges of the container. Supports [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Cascade/Shorthand_properties#edges_of_a_box) using flow-relative values in the order:
994
1013
  *
995
1014
  * - 4 values: `block-start inline-end block-end inline-start`
996
1015
  * - 3 values: `block-start inline block-end`
997
1016
  * - 2 values: `block inline`
998
1017
  *
999
1018
  * For example:
1019
+ *
1000
1020
  * - `large` means block-start, inline-end, block-end and inline-start paddings are `large`.
1001
1021
  * - `large none` means block-start and block-end paddings are `large`, inline-start and inline-end paddings are `none`.
1002
1022
  * - `large none large` means block-start padding is `large`, inline-end padding is `none`, block-end padding is `large` and inline-start padding is `none`.
1003
1023
  * - `large none large small` means block-start padding is `large`, inline-end padding is `none`, block-end padding is `large` and inline-start padding is `small`.
1004
1024
  *
1005
- * A padding value of `auto` will use the default padding for the closest container that has had its usual padding removed.
1025
+ * An `auto` value inherits the default padding from the closest container that has removed its usual padding.
1006
1026
  *
1007
1027
  * @default 'none'
1008
1028
  */
1009
1029
  padding?: MaybeResponsive<MaybeAllValuesShorthandProperty<PaddingKeyword>>;
1010
1030
  /**
1011
- * Adjust the block-padding.
1012
- *
1013
- * - `large none` means block-start padding is `large`, block-end padding is `none`.
1014
- *
1015
- * This overrides the block value of `padding`.
1031
+ * The block-axis padding for the container. Overrides the block value of the `padding` property.
1016
1032
  *
1017
1033
  * @default '' - meaning no override
1018
1034
  */
@@ -1020,27 +1036,19 @@ export interface PaddingProps {
1020
1036
  MaybeTwoValuesShorthandProperty<PaddingKeyword> | ''
1021
1037
  >;
1022
1038
  /**
1023
- * Adjust the block-start padding.
1024
- *
1025
- * This overrides the block-start value of `paddingBlock`.
1039
+ * The block-start padding for the container. Overrides the block-start value of the `paddingBlock` property.
1026
1040
  *
1027
1041
  * @default '' - meaning no override
1028
1042
  */
1029
1043
  paddingBlockStart?: MaybeResponsive<PaddingKeyword | ''>;
1030
1044
  /**
1031
- * Adjust the block-end padding.
1032
- *
1033
- * This overrides the block-end value of `paddingBlock`.
1045
+ * The block-end padding for the container. Overrides the block-end value of the `paddingBlock` property.
1034
1046
  *
1035
1047
  * @default '' - meaning no override
1036
1048
  */
1037
1049
  paddingBlockEnd?: MaybeResponsive<PaddingKeyword | ''>;
1038
1050
  /**
1039
- * Adjust the inline padding.
1040
- *
1041
- * - `large none` means inline-start padding is `large`, inline-end padding is `none`.
1042
- *
1043
- * This overrides the inline value of `padding`.
1051
+ * The inline-axis padding for the container. Supports two-value syntax where `large none` sets inline-start to `large` and inline-end to `none`. Overrides the inline value of the `padding` property.
1044
1052
  *
1045
1053
  * @default '' - meaning no override
1046
1054
  */
@@ -1048,82 +1056,87 @@ export interface PaddingProps {
1048
1056
  MaybeTwoValuesShorthandProperty<PaddingKeyword> | ''
1049
1057
  >;
1050
1058
  /**
1051
- * Adjust the inline-start padding.
1052
- *
1053
- * This overrides the inline-start value of `paddingInline`.
1059
+ * The inline-start padding for the container. Overrides the inline-start value of the `paddingInline` property.
1054
1060
  *
1055
1061
  * @default '' - meaning no override
1056
1062
  */
1057
1063
  paddingInlineStart?: MaybeResponsive<PaddingKeyword | ''>;
1058
1064
  /**
1059
- * Adjust the inline-end padding.
1060
- *
1061
- * This overrides the inline-end value of `paddingInline`.
1065
+ * The inline-end padding for the container. Overrides the inline-end value of the `paddingInline` property.
1062
1066
  *
1063
1067
  * @default '' - meaning no override
1064
1068
  */
1065
1069
  paddingInlineEnd?: MaybeResponsive<PaddingKeyword | ''>;
1066
1070
  }
1071
+ /**
1072
+ * Defines exact size measurements without automatic or unconstrained options. Limited to specific pixel values, percentages, or zero.
1073
+ */
1067
1074
  export type SizeUnits = `${number}px` | `${number}%` | `0`;
1075
+ /**
1076
+ * Defines size values that can be specified as exact measurements or automatic sizing. Supports pixel values, percentages, zero, or automatic sizing based on content.
1077
+ */
1068
1078
  export type SizeUnitsOrAuto = SizeUnits | 'auto';
1079
+ /**
1080
+ * Defines size values that can be specified as exact measurements or no constraint. Supports pixel values, percentages, zero, or no maximum limit.
1081
+ */
1069
1082
  export type SizeUnitsOrNone = SizeUnits | 'none';
1083
+ /**
1084
+ * Properties for controlling the dimensions of an element.
1085
+ */
1070
1086
  export interface SizingProps {
1071
1087
  /**
1072
- * Adjust the block size.
1073
- *
1074
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/block-size
1088
+ * The block size of the container. Auto automatically sizes based on the container's children.
1075
1089
  *
1076
1090
  * @default 'auto'
1077
1091
  */
1078
1092
  blockSize?: MaybeResponsive<SizeUnitsOrAuto>;
1079
1093
  /**
1080
- * Adjust the minimum block size.
1081
- *
1082
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/min-block-size
1094
+ * The minimum block size constraint for the container.
1083
1095
  *
1084
1096
  * @default '0'
1085
1097
  */
1086
1098
  minBlockSize?: MaybeResponsive<SizeUnits>;
1087
1099
  /**
1088
- * Adjust the maximum block size.
1089
- *
1090
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/max-block-size
1100
+ * The maximum block size constraint for the container.
1091
1101
  *
1092
1102
  * @default 'none'
1093
1103
  */
1094
1104
  maxBlockSize?: MaybeResponsive<SizeUnitsOrNone>;
1095
1105
  /**
1096
- * Adjust the inline size.
1097
- *
1098
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/inline-size
1106
+ * The inline size of the container. Auto automatically sizes based on the container's children.
1099
1107
  *
1100
1108
  * @default 'auto'
1101
1109
  */
1102
1110
  inlineSize?: MaybeResponsive<SizeUnitsOrAuto>;
1103
1111
  /**
1104
- * Adjust the minimum inline size.
1105
- *
1106
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/min-inline-size
1112
+ * The minimum inline size constraint for the container.
1107
1113
  *
1108
1114
  * @default '0'
1109
1115
  */
1110
1116
  minInlineSize?: MaybeResponsive<SizeUnits>;
1111
1117
  /**
1112
- * Adjust the maximum inline size.
1113
- *
1114
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/max-inline-size
1118
+ * The maximum inline size constraint for the container.
1115
1119
  *
1116
1120
  * @default 'none'
1117
1121
  */
1118
1122
  maxInlineSize?: MaybeResponsive<SizeUnitsOrNone>;
1119
1123
  }
1124
+ /**
1125
+ * A border line style keyword.
1126
+ */
1120
1127
  export type BorderStyleKeyword =
1121
1128
  | 'none'
1122
1129
  | 'solid'
1123
1130
  | 'dashed'
1124
1131
  | 'dotted'
1125
1132
  | 'auto';
1133
+ /**
1134
+ * A border thickness keyword.
1135
+ */
1126
1136
  export type BorderSizeKeyword = SizeKeyword | 'none';
1137
+ /**
1138
+ * A border radius keyword including maximum rounding option.
1139
+ */
1127
1140
  export type BorderRadiusKeyword = SizeKeyword | 'max' | 'none';
1128
1141
  /**
1129
1142
  * Represents a shorthand for defining a border. It can be a combination of size, optionally followed by color, optionally followed by style.
@@ -1132,17 +1145,12 @@ export type BorderShorthand =
1132
1145
  | BorderSizeKeyword
1133
1146
  | `${BorderSizeKeyword} ${ColorKeyword}`
1134
1147
  | `${BorderSizeKeyword} ${ColorKeyword} ${BorderStyleKeyword}`;
1148
+ /**
1149
+ * Properties for controlling the border styling of an element.
1150
+ */
1135
1151
  export interface BorderProps {
1136
1152
  /**
1137
- * Set the border via the shorthand property.
1138
- *
1139
- * This can be a size, optionally followed by a color, optionally followed by a style.
1140
- *
1141
- * If the color is not specified, it will be `base`.
1142
- *
1143
- * If the style is not specified, it will be `auto`.
1144
- *
1145
- * Values can be overridden by `borderWidth`, `borderStyle`, and `borderColor`.
1153
+ * Sets the border style, width, and color using shorthand syntax. Accepts a size keyword, optionally followed by a color keyword, optionally followed by a style keyword.
1146
1154
  *
1147
1155
  * @example
1148
1156
  * // The following are equivalent:
@@ -1153,82 +1161,49 @@ export interface BorderProps {
1153
1161
  */
1154
1162
  border?: BorderShorthand;
1155
1163
  /**
1156
- * Set the width of the border.
1157
- *
1158
- * If set, it takes precedence over the `border` property's width.
1159
- *
1160
- * Like CSS, up to 4 values can be specified.
1161
- *
1162
- * If one value is specified, it applies to all sides.
1163
- *
1164
- * If two values are specified, they apply to the block sides and inline sides respectively.
1165
- *
1166
- * If three values are specified, they apply to the block-start, both inline sides, and block-end respectively.
1167
- *
1168
- * If four values are specified, they apply to the block-start, block-end, inline-start, and inline-end sides respectively.
1164
+ * Sets the thickness of the border using size keywords. Supports [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) for specifying different widths per edge.
1169
1165
  *
1170
1166
  * @default '' - meaning no override
1171
1167
  */
1172
1168
  borderWidth?: MaybeAllValuesShorthandProperty<BorderSizeKeyword> | '';
1173
1169
  /**
1174
- * Set the style of the border.
1175
- *
1176
- * If set, it takes precedence over the `border` property's style.
1177
- *
1178
- * Like CSS, up to 4 values can be specified.
1179
- *
1180
- * If one value is specified, it applies to all sides.
1181
- *
1182
- * If two values are specified, they apply to the block sides and inline sides respectively.
1183
- *
1184
- * If three values are specified, they apply to the block-start, both inline sides, and block-end respectively.
1185
- *
1186
- * If four values are specified, they apply to the block-start, block-end, inline-start, and inline-end sides respectively.
1170
+ * Sets the line style of the border. Controls the visual pattern of the border lines (for example, solid, dashed, dotted). Supports [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) for specifying different styles per edge.
1187
1171
  *
1188
1172
  * @default '' - meaning no override
1189
1173
  */
1190
1174
  borderStyle?: MaybeAllValuesShorthandProperty<BorderStyleKeyword> | '';
1191
1175
  /**
1192
- * Set the color of the border.
1193
- *
1194
- * If set, it takes precedence over the `border` property's color.
1176
+ * Sets the color intensity of the border. Controls how prominent the border appears.
1195
1177
  *
1196
1178
  * @default '' - meaning no override
1197
1179
  */
1198
1180
  borderColor?: ColorKeyword | '';
1199
1181
  /**
1200
- * Set the radius of the border.
1201
- *
1202
- * [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) is
1203
- * supported. Note that, contrary to the CSS, it uses flow-relative values and the order is:
1204
- *
1205
- * - 4 values: `start-start start-end end-end end-start`
1206
- * - 3 values: `start-start (start-end & end-start) start-end`
1207
- * - 2 values: `(start-start & end-end) (start-end & end-start)`
1208
- *
1209
- * For example:
1210
- * - `small-100` means start-start, start-end, end-end and end-start border radii are `small-100`.
1211
- * - `small-100 none` means start-start and end-end border radii are `small-100`, start-end and end-start border radii are `none`.
1212
- * - `small-100 none large-100` means start-start border radius is `small-100`, start-end border radius is `none`, end-end border radius is `large-100` and end-start border radius is `none`.
1213
- * - `small-100 none large-100 small-100` means start-start border radius is `small-100`, start-end border radius is `none`, end-end border radius is `large-100` and end-start border radius is `small-100`.
1182
+ * Sets the corner rounding radius of the border. Supports [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) for specifying different radii per corner.
1214
1183
  *
1215
1184
  * @defaultValue 'none'
1216
1185
  */
1217
1186
  borderRadius?: MaybeAllValuesShorthandProperty<BorderRadiusKeyword>;
1218
1187
  }
1188
+ /**
1189
+ * Properties for controlling overflow behavior when content exceeds container bounds.
1190
+ */
1219
1191
  export interface OverflowProps {
1220
1192
  /**
1221
- * Sets the overflow behavior of the element.
1193
+ * Controls how the container handles content that exceeds its dimensions:
1194
+ * - `'visible'`: Content extends beyond the container's boundaries without clipping or scrolling. Overflow content is fully visible and may overlap other elements. This is the default behavior and works well for containers that should expand to fit their content naturally.
1195
+ * - `'hidden'`: Content that exceeds the container is clipped and hidden from view—users can't see or access the overflow content. No scrollbars appear. Typically applied to intentionally limit visible content, create masked effects, or prevent content from breaking layouts. Hidden content may include important information users can't access.
1196
+ * - `'auto'`: Only available in some components like `ScrollBox`. Adds scrollbars automatically when content exceeds the container, allowing users to scroll to view overflow content. Scrollbars only appear when needed. Commonly applied to scrollable regions, content lists, or containers where users should access all content but space is limited.
1222
1197
  *
1223
- * - `hidden`: clips the content when it is larger than the element’s container.
1224
- * The element will not be scrollable and the users will not be able
1225
- * to access the clipped content by dragging or using a scroll wheel on a mouse.
1226
- * - `visible`: the content that extends beyond the element’s container is visible.
1198
+ * The choice depends on layout needs: `'visible'` for flexible layouts, `'hidden'` for strict boundaries, `'auto'` for user-controlled scrolling. Setting overflow establishes a new block formatting context, which affects layout behaviors like margin collapsing and positioning.
1227
1199
  *
1228
1200
  * @default 'visible'
1229
1201
  */
1230
1202
  overflow?: 'hidden' | 'visible';
1231
1203
  }
1204
+ /**
1205
+ * Base properties for box-like container elements.
1206
+ */
1232
1207
  export interface BaseBoxProps
1233
1208
  extends AccessibilityVisibilityProps,
1234
1209
  BackgroundProps,
@@ -1238,400 +1213,387 @@ export interface BaseBoxProps
1238
1213
  BorderProps,
1239
1214
  OverflowProps {
1240
1215
  /**
1241
- * The content of the Box.
1216
+ * The child elements to render within this component.
1242
1217
  */
1243
1218
  children?: ComponentChildren;
1244
1219
  /**
1245
- * A label that describes the purpose or contents of the element.
1246
- * When set, it will be announced to users using assistive technologies and will provide them with more context.
1247
- *
1248
- * Only use this when the element's content is not enough context for users using assistive technologies.
1220
+ * A text label that describes the purpose, function, or contents of the element for users of assistive technologies like screen readers. This label is announced by screen readers but isn't visually displayed. Typically applied when an element doesn't have visible text that adequately describes it, such as icon-only buttons, image carousels, or complex interactive regions. The label is concise yet descriptive (for example, "Close modal", "Product image carousel", "Shopping cart with 3 items"). If the element already has clear visible labels or headings, this property may be unnecessary. For form fields, the `label` property is both visible and accessible.
1249
1221
  */
1250
1222
  accessibilityLabel?: string;
1251
1223
  }
1224
+ /**
1225
+ * Base properties for box-like container elements with semantic role support.
1226
+ */
1252
1227
  export interface BaseBoxPropsWithRole
1253
1228
  extends BaseBoxProps,
1254
1229
  AccessibilityRoleProps {}
1230
+ /**
1231
+ * Properties for button-like interactive elements with form-related behavior.
1232
+ */
1255
1233
  export interface ButtonBehaviorProps extends InteractionProps, FocusEventProps {
1256
1234
  /**
1257
- * The behavior of the Button.
1258
- *
1259
- * - `submit`: Used to indicate the component acts as a submit button, meaning it submits the closest form.
1260
- * - `button`: Used to indicate the component acts as a button, meaning it has no default action.
1261
- * - `reset`: Used to indicate the component acts as a reset button, meaning it resets the closest form (returning fields to their default values).
1262
- *
1263
- * This property is ignored if the component supports `href` or `commandFor`/`command` and one of them is set.
1235
+ * The semantic meaning of the button action within a form context:
1236
+ * - `'button'`: A standard button with no default form behavior
1237
+ * - `'submit'`: Submits the containing form when activated
1238
+ * - `'reset'`: Resets the containing form to its initial values when activated
1264
1239
  *
1265
1240
  * @default 'button'
1266
1241
  */
1267
1242
  type?: 'submit' | 'button' | 'reset';
1268
1243
  /**
1269
- * Callback when the Button is activated.
1270
- * This will be called before the action indicated by `type`.
1271
- *
1272
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event
1244
+ * Called when the element is clicked or activated. Learn more about [click events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event).
1273
1245
  */
1274
1246
  onClick?: (event: Event) => void;
1275
1247
  /**
1276
- * Disables the Button meaning it cannot be clicked or receive focus.
1248
+ * Whether the field is disabled, preventing user interaction. Use when the field is temporarily unavailable due to application state, permissions, or dependencies.
1277
1249
  *
1278
1250
  * @default false
1279
1251
  */
1280
1252
  disabled?: boolean;
1281
1253
  /**
1282
- * Replaces content with a loading indicator while a background action is being performed.
1283
- *
1284
- * This also disables the Button.
1254
+ * Indicates whether the button action is currently in progress. When `true`, replaces all button content with a loading spinner and prevents additional clicks to avoid duplicate submissions. The button remains visually enabled but unresponsive to interaction. Set to `true` when starting an async operation (for example, API call, navigation) and back to `false` when the operation completes or fails. This provides user feedback during long-running operations and prevents race conditions from multiple rapid clicks. Custom loading indicators or partial content updates aren't supported.
1285
1255
  *
1286
1256
  * @default false
1287
1257
  */
1288
1258
  loading?: boolean;
1289
1259
  }
1260
+ /**
1261
+ * Properties for link-like interactive elements with navigation behavior.
1262
+ */
1290
1263
  export interface LinkBehaviorProps extends InteractionProps, FocusEventProps {
1291
1264
  /**
1292
- * The URL to link to.
1293
- *
1294
- * - If set, it will navigate to the location specified by `href` after executing the `click` event.
1295
- * - If a `commandFor` is set, the `command` will be executed instead of the navigation.
1265
+ * The URL to navigate to when the element is clicked or activated. Supports absolute URLs (for example, `https://shopify.com`), relative URLs (for example, `/products`), and anchor links (for example, `#section-id`). Navigation is triggered after the `onClick` event completes, allowing navigation to be canceled by preventing the default event action. The actual navigation behavior depends on the `target` property—same page, new tab, or external navigation. For security, browsers may block navigation to certain protocols or untrusted origins. Commonly applied to create navigational links, external resource links, or in-app routing.
1296
1266
  */
1297
1267
  href?: string;
1298
1268
  /**
1299
- * Specifies where to display the linked URL.
1300
- *
1301
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target
1269
+ * Specifies where to display the linked URL:
1270
+ * - `'auto'`: The target is automatically determined based on the origin of the URL (typically behaves as `'_self'` but surfaces may handle cross-origin URLs differently)
1271
+ * - `'_blank'`: Opens the URL in a new tab or window
1272
+ * - `'_self'`: Opens the URL in the same browsing context
1273
+ * - `'_parent'`: Opens the URL in the parent browsing context
1274
+ * - `'_top'`: Opens the URL in the topmost browsing context
1275
+ * - Custom string: Any other valid target name
1302
1276
  *
1303
- * 'auto': The target is automatically determined based on the origin of the URL.
1277
+ * Learn more about the [`target` attribute on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target).
1304
1278
  *
1305
1279
  * @implementation Surfaces can set specific rules on how they handle each URL.
1306
- * @implementation Its expected that the behavior of `auto` is as `_self` except in specific cases.
1280
+ * @implementation It's expected that the behavior of `auto` is as `_self` except in specific cases.
1307
1281
  * @implementation For example, a surface could decide to open cross-origin URLs in a new window (as `_blank`).
1308
1282
  *
1309
1283
  * @default 'auto'
1310
1284
  */
1311
1285
  target?: 'auto' | '_blank' | '_self' | '_parent' | '_top' | AnyString;
1312
1286
  /**
1313
- * Causes the browser to treat the linked URL as a download with the string being the file name.
1314
- * Download only works for same-origin URLs or the `blob:` and `data:` schemes.
1315
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download
1287
+ * Treats the link as a file download instead of navigation. When set, clicking the link downloads the resource at the `href` URL rather than navigating to it. The value becomes the suggested filename shown in the download dialog or used by the browser's default save behavior (for example, `download="receipt.pdf"` saves as "receipt.pdf"). If the value is an empty string, the browser determines the filename from the URL or server headers. This only works for same-origin URLs (your app's domain) or `blob:` and `data:` URLs for security reasons—cross-origin URLs will navigate normally. Commonly applied to generate and download reports, receipts, CSV exports, or any file that should be saved rather than displayed. Learn more about the [`download` attribute on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download).
1316
1288
  */
1317
1289
  download?: string;
1318
1290
  /**
1319
- * Callback when the link is activated.
1320
- * This will be called before navigating to the location specified by `href`.
1321
- *
1322
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event
1291
+ * Called when the element is clicked or activated. Learn more about [click events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event).
1323
1292
  */
1324
1293
  onClick?: (event: Event) => void;
1325
1294
  }
1295
+ /**
1296
+ * Properties for controlling interactions between elements using commands.
1297
+ */
1326
1298
  export interface InteractionProps {
1327
1299
  /**
1328
- * ID of a component that should respond to activations (e.g. clicks) on this component.
1329
- *
1330
- * See `command` for how to control the behavior of the target.
1331
- *
1332
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#commandfor
1300
+ * The ID of the target element that should respond when this element is clicked or activated. This creates a relationship where clicking this control (button, clickable) triggers an action on another element in the DOM. The target element must have a matching `id` attribute. Use with the `command` property to specify what action should occur (show, hide, toggle). This enables declarative element control without writing custom click handlers, improving accessibility and reducing JavaScript. Common use cases include: opening modals from buttons, toggling content visibility, showing/hiding sidebars, or controlling overlay states. If both `commandFor` and `onClick` are present, both will execute—the command action occurs first, then the click handler. Learn more about [`commandfor` on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#commandfor).
1333
1301
  */
1334
1302
  commandFor?: string;
1335
1303
  /**
1336
- * Sets the action the `commandFor` should take when this clickable is activated.
1304
+ * The action to perform on the target element specified by `commandFor`:
1305
+ * - `'--auto'`: Execute the target element's default action (typically show for overlays, or the element's primary interaction)
1306
+ * - `'--show'`: Make the target element visible by calling its `showOverlay()` method or setting appropriate visibility properties
1307
+ * - `'--hide'`: Hide the target element by calling its `hideOverlay()` method or setting appropriate visibility properties
1308
+ * - `'--toggle'`: Switch the target element's visibility state—if visible, hide it; if hidden, show it
1309
+ * - `'--copy'`: Copy content to the clipboard (requires the target to be a compatible element with copy functionality)
1337
1310
  *
1338
- * See the documentation of particular components for the actions they support.
1339
- *
1340
- * - `--auto`: a default action for the target component.
1341
- * - `--show`: shows the target component.
1342
- * - `--hide`: hides the target component.
1343
- * - `--toggle`: toggles the target component.
1344
- * - `--copy`: copies the target ClipboardItem.
1311
+ * The command executes when this element is clicked, before any `onClick` handlers fire. If the target element doesn't support the specified command, the action may fail silently. Learn more about [button commands on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#command).
1345
1312
  *
1346
1313
  * @default '--auto'
1347
- *
1348
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#command
1349
1314
  */
1350
1315
  command?: '--auto' | '--show' | '--hide' | '--toggle' | '--copy';
1351
1316
  /**
1352
- * ID of a component that should respond to interest (e.g. hover and focus) on this component.
1317
+ * The ID of a target element that should respond to hover and focus events on this element, creating an "interest" relationship. When the user hovers over or focuses this element, the target element receives corresponding interest events, allowing it to preview or prepare content. This is useful for implementing tooltip-like previews, image zoom on hover, showing additional details before clicking, or loading content speculatively when the user shows interest. The target element must have a matching `id` and listen for interest events. Unlike `commandFor` which responds to clicks, this responds to hover and focus, providing earlier user intent signals.
1353
1318
  */
1354
1319
  interestFor?: string;
1355
1320
  }
1321
+ /**
1322
+ * Combined properties for elements that can behave as both buttons and links.
1323
+ */
1356
1324
  export interface BaseClickableProps
1357
1325
  extends ButtonBehaviorProps,
1358
1326
  LinkBehaviorProps {}
1359
1327
  export interface ButtonProps extends GlobalProps, BaseClickableProps {
1360
1328
  /**
1361
- * A label that describes the purpose or contents of the Button. It will be read to users using assistive technologies such as screen readers.
1362
- *
1363
- * Use this when using only an icon or the Button text is not enough context
1364
- * for users using assistive technologies.
1329
+ * A label that describes the purpose or contents of the element. Announced to users with assistive technologies such as screen readers to provide context.
1365
1330
  */
1366
1331
  accessibilityLabel?: string;
1367
1332
  /**
1368
- * The content of the Button.
1333
+ * The child elements to render within this component. Button content must be plain text.
1369
1334
  */
1370
1335
  children?: ComponentChildren;
1371
1336
  /**
1372
- * The type of icon to be displayed in the Button.
1337
+ * The icon identifier specifying which icon to display. Accepts any valid icon name from the icon set.
1373
1338
  *
1374
1339
  * @default ''
1375
1340
  */
1376
1341
  icon?: IconType | AnyString;
1377
1342
  /**
1378
- * The displayed inline width of the Button.
1379
- *
1380
- * - `auto`: the size of the button depends on the surface and context.
1381
- * - `fill`: the button will takes up 100% of the available inline size.
1382
- * - `fit-content`: the button will take up the minimum inline-size required to fit its content.
1343
+ * Controls how the element's width adapts to its container and content.
1383
1344
  *
1384
1345
  * @default 'auto'
1385
1346
  */
1386
1347
  inlineSize?: 'auto' | 'fill' | 'fit-content';
1387
1348
  /**
1388
- * Changes the visual appearance of the Button.
1349
+ * Changes the visual appearance and prominence of the button:
1350
+ * - `'auto'`: The variant is automatically determined by context
1351
+ * - `'primary'`: Creates a prominent call-to-action button with high visual emphasis for the most important action on a screen
1352
+ * - `'secondary'`: Provides a less prominent button appearance for supporting actions and secondary interactions
1353
+ * - `'tertiary'`: Provides the least prominent button appearance for tertiary or optional actions
1389
1354
  *
1390
- * @default 'auto' - the variant is automatically determined by the Button's context
1355
+ * @default 'auto'
1391
1356
  */
1392
1357
  variant?: 'auto' | 'primary' | 'secondary' | 'tertiary';
1393
1358
  /**
1394
- * Sets the tone of the Button based on the intention of the information being conveyed.
1359
+ * Sets the tone of the button, based on the intention of the information being conveyed.
1360
+ *
1361
+ * - `'auto'` - Automatically determines the appropriate tone based on context.
1362
+ * - `'neutral'` - The standard tone for general actions and interactions.
1363
+ * - `'caution'` - Indicates actions that require careful consideration.
1364
+ * - `'warning'` - Alerts users to potential issues or important information.
1365
+ * - `'critical'` - Used for destructive actions like deleting or removing content.
1395
1366
  *
1396
1367
  * @default 'auto'
1397
1368
  */
1398
1369
  tone?: ToneKeyword;
1399
1370
  /**
1400
- * Indicate the text language. Useful when the text is in a different language than the rest of the page.
1401
- * It will allow assistive technologies such as screen readers to invoke the correct pronunciation.
1402
- * [Reference of values](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) ("subtag" label)
1371
+ * Indicates the language of the text content. Useful when text is in a different language than the rest of the page, allowing assistive technologies to invoke correct pronunciation. [Reference of language subtag values](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).
1403
1372
  */
1404
1373
  lang?: string;
1405
1374
  }
1375
+ /**
1376
+ * Base properties for all form input elements.
1377
+ */
1406
1378
  export interface BaseInputProps {
1407
1379
  /**
1408
- * An identifier for the field that is unique within the nearest containing form.
1380
+ * An identifier for the field that is unique within the nearest containing form. This name is used as the key when the form data is submitted. If omitted, the field's value won't be included in form submissions. Meaningful names describe the data being collected (for example, `"email"`, `"quantity"`, `"customer-note"`).
1409
1381
  */
1410
1382
  name?: string;
1411
1383
  /**
1412
- * Disables the field, disallowing any interaction.
1384
+ * Whether the field is disabled, preventing any user interaction. When `true`, the field can't receive focus, be edited, or be interacted with. Disabled fields are visually dimmed, excluded from form submission, and announced as disabled to screen readers. Typically set when a field is temporarily unavailable due to application state, permissions, or dependencies on other fields.
1413
1385
  *
1414
1386
  * @default false
1415
1387
  */
1416
1388
  disabled?: boolean;
1417
1389
  }
1390
+ /**
1391
+ * Properties for controlled form input elements with value and change callbacks.
1392
+ */
1418
1393
  export interface InputProps extends BaseInputProps {
1419
1394
  /**
1420
- * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
1421
- *
1422
- * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
1395
+ * Called when the user has committed a value change, typically triggered when the field loses focus (blur) after the value has been modified. Unlike `onInput`, this fires only once after editing is complete, not during typing. The event contains the finalized value. Common operations include validation, saving data, or triggering actions that should occur after the user finishes editing rather than during typing. For controlled components, the `value` prop should be updated in this callback. This is ideal for expensive operations like API calls that shouldn't happen on every keystroke. Learn more about [change events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event).
1423
1396
  */
1424
1397
  onChange?: (event: Event) => void;
1425
1398
  /**
1426
- * Callback when the user makes any changes in the field.
1427
- *
1428
- * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
1399
+ * Called immediately when the user makes any change to the field value. Fires on every keystroke, paste, or other input modification before the field loses focus. The event contains the current field value. Common operations include real-time validation, character counting, formatting input as users type, or implementing autocomplete/search-as-you-type features. For controlled components, the `value` prop should be updated in this callback to keep state in sync. Expensive operations should be avoided here as this fires frequently during typing. Learn more about [input events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event).
1429
1400
  */
1430
1401
  onInput?: (event: Event) => void;
1431
1402
  /**
1432
- * The current value for the field. If omitted, the field will be empty.
1403
+ * The current value of the field. When provided, this creates a controlled component where this value must be updated in response to user input using `onChange` or `onInput` callbacks. The format and valid values depend on the specific field type. If both `value` and `defaultValue` are provided, `value` takes precedence.
1433
1404
  */
1434
1405
  value?: string;
1435
1406
  /**
1436
- * The default value for the field.
1407
+ * The default value used when the field is first rendered. Only applies if no `value` prop is provided, creating an uncontrolled component where the browser manages the field state internally. After initial render, the component handles its own state and the current value can be read from the DOM.
1437
1408
  *
1438
1409
  * @implementation `defaultValue` reflects to the `value` attribute.
1439
1410
  */
1440
1411
  defaultValue?: string;
1441
1412
  }
1413
+ /**
1414
+ * Properties for form inputs that support multiple selections.
1415
+ */
1442
1416
  export interface MultipleInputProps extends BaseInputProps {
1443
1417
  /**
1444
- * Callback when the user has selected option(s).
1445
- *
1446
- * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
1418
+ * Called when the user has finished editing the field, typically triggered on blur after the value has changed. Learn more about [change events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event).
1447
1419
  */
1448
1420
  onChange?: (event: Event) => void;
1449
1421
  /**
1450
- * Callback when the user has selected option(s).
1451
- *
1452
- * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
1422
+ * Called when the user makes any change to the field value. Fires on each keystroke or interaction. Learn more about [input events on MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event).
1453
1423
  */
1454
1424
  onInput?: (event: Event) => void;
1455
1425
  /**
1456
- * An array of the `value`s of the selected options.
1457
- *
1458
- * This is a convenience prop for setting the `selected` prop on child options.
1426
+ * An array containing the values of currently selected options in a multi-select choice list. When provided, this creates a controlled component where this array must be updated in response to user selections using the `onChange` callback. The array contains the `value` properties of selected child `Choice` components. For single-select lists (`multiple={false}`), this array contains zero or one items. For multi-select lists, it can contain multiple items. This is a convenience property that automatically sets the `selected` state on matching child choices based on their `value` properties. When a choice's value appears in this array, it's automatically marked as selected. The array should be updated immutably in callbacks (creating new arrays rather than mutating existing ones).
1459
1427
  */
1460
1428
  values?: string[];
1461
1429
  }
1430
+ /**
1431
+ * Properties for displaying field validation errors.
1432
+ */
1462
1433
  export interface FieldErrorProps {
1463
1434
  /**
1464
- * Indicate an error to the user. The field will be given a specific stylistic treatment
1465
- * to communicate problems that have to be resolved immediately.
1435
+ * An error message to display when the field contains invalid data or fails validation. When set, the field receives error styling (typically a red border and error icon) and the message appears below the field to guide users toward fixing the issue. The error is announced to screen readers for accessibility. The error is cleared by setting this to an empty string or `undefined`. Errors are typically displayed after validation fails, usually on blur or form submission.
1466
1436
  */
1467
1437
  error?: string;
1468
1438
  }
1439
+ /**
1440
+ * Basic properties for form fields including labels, validation requirements, and error states.
1441
+ */
1469
1442
  export interface BasicFieldProps
1470
1443
  extends FieldErrorProps,
1471
1444
  LabelAccessibilityVisibilityProps {
1472
1445
  /**
1473
- * Whether the field needs a value. This requirement adds semantic value
1474
- * to the field, but it will not cause an error to appear automatically.
1475
- * If you want to present an error when this field is empty, you can do
1476
- * so with the `error` property.
1446
+ * Whether the field must have a value before form submission. When `true`, the field is marked as required (typically with an asterisk), announced as required to screen readers, and triggers browser validation on form submit. This property adds semantic meaning but doesn't prevent submission on its own—validation logic must be implemented and the `error` property used to display validation messages.
1477
1447
  *
1478
1448
  * @default false
1479
1449
  */
1480
1450
  required?: boolean;
1481
1451
  /**
1482
- * Content to use as the field label.
1452
+ * The text label that describes what information the field is requesting from the user. Labels are always visible (unlike placeholders which disappear on input) and are announced by screen readers, making them critical for accessibility. Labels typically appear above or beside the field and remain visible while the user interacts with the field. Clear, concise labels describe the expected input (for example, "Email address", "Quantity", "Customer note").
1483
1453
  */
1484
1454
  label?: string;
1485
1455
  }
1456
+ /**
1457
+ * Properties for adding supplementary help text to form fields.
1458
+ */
1486
1459
  export interface FieldDetailsProps {
1487
1460
  /**
1488
- * Additional text to provide context or guidance for the field.
1489
- * This text is displayed along with the field and its label
1490
- * to offer more information or instructions to the user.
1491
- *
1492
- * This will also be exposed to screen reader users.
1461
+ * Supplementary help text that provides additional context, instructions, or constraints for the field. This text typically appears below the label in a smaller, subdued style and remains visible at all times (unlike placeholders). Screen readers announce this text along with the label to provide complete field context. Common content includes format requirements (for example, "Use YYYY-MM-DD format"), character limits (for example, "Maximum 500 characters"), helpful hints (for example, "This will be shown on the receipt"), or clarifying instructions (for example, "Leave blank to use default shipping address"). Information already in the label or placeholder shouldn't be duplicated here.
1493
1462
  */
1494
1463
  details?: string;
1495
1464
  }
1465
+ /**
1466
+ * Complete properties for standard form fields including value, label, placeholder, validation, and callbacks.
1467
+ */
1496
1468
  export interface FieldProps
1497
1469
  extends BasicFieldProps,
1498
1470
  InputProps,
1499
1471
  FocusEventProps,
1500
1472
  FieldDetailsProps {
1501
1473
  /**
1502
- * A short hint that describes the expected value of the field.
1474
+ * A short hint that provides guidance about the expected value or format of the field. Displayed when the field is empty and disappears once the user starts typing. Placeholders should supplement the label, not replace it—a `label` should always be provided as well since placeholders may not be accessible to all screen readers. Common placeholder content includes format examples (for example, "YYYY-MM-DD"), helpful hints (for example, "Leave blank for default"), or clarifying expected input (for example, "Enter SKU or product name").
1503
1475
  */
1504
1476
  placeholder?: string;
1505
1477
  }
1478
+ /**
1479
+ * Base properties for text-based input fields including placeholder and read-only state.
1480
+ */
1506
1481
  export interface BaseTextFieldProps extends FieldProps {
1507
1482
  /**
1508
- * The field cannot be edited by the user. It is focusable will be announced by screen readers.
1483
+ * Whether the field can be edited. When `true`, the field is focusable and announced by screen readers but can't be modified by the user. Unlike `disabled`, read-only fields can still receive focus, be copied, and participate in form submission. Typically applied to calculated values, reference information, or data that users need to see and interact with but shouldn't change.
1509
1484
  *
1510
1485
  * @default false
1511
1486
  */
1512
1487
  readOnly?: boolean;
1513
1488
  }
1489
+ /**
1490
+ * Properties for adding decorative elements like icons, prefixes, suffixes, and accessories to form fields.
1491
+ */
1514
1492
  export interface FieldDecorationProps {
1515
1493
  /**
1516
- * A value to be displayed immediately after the editable portion of the field.
1517
- *
1518
- * This is useful for displaying an implied part of the value, such as "@shopify.com", or "%".
1519
- *
1520
- * This cannot be edited by the user, and it isn't included in the value of the field.
1521
- *
1522
- * It may not be displayed until the user has interacted with the input.
1523
- * For example, an inline label may take the place of the suffix until the user focuses the input.
1494
+ * Static text displayed immediately after the editable portion of the field, typically inside the field border. This text is non-interactive and purely decorative—users can't edit it and it's not included in the field's value when submitted. The suffix remains visible at all times, even when the field is empty. Common uses include domain suffixes (for example, "@shopify.com" for email fields), units of measurement (for example, "kg", "%", "USD"), or clarifying context (for example, "/month" for subscription pricing). Choose between suffix and prefix based on natural reading order for your use case.
1524
1495
  *
1525
1496
  * @default ''
1526
1497
  */
1527
1498
  suffix?: string;
1528
1499
  /**
1529
- * A value to be displayed immediately before the editable portion of the field.
1530
- *
1531
- * This is useful for displaying an implied part of the value, such as "https://" or "+353".
1532
- *
1533
- * This cannot be edited by the user, and it isn't included in the value of the field.
1534
- *
1535
- * It may not be displayed until the user has interacted with the input.
1536
- * For example, an inline label may take the place of the prefix until the user focuses the input.
1500
+ * Static text displayed immediately before the editable portion of the field, typically inside the field border. This text is non-interactive and purely decorative—users can't edit it and it's not included in the field's value when submitted. The prefix remains visible at all times, even when the field is empty. Common uses include currency symbols (for example, "$", "€", "£"), protocol indicators (for example, "https://"), measurement prefixes (for example, "#", "@"), or fixed identifiers. The prefix helps users understand the expected format without consuming characters from maxLength limits.
1537
1501
  *
1538
1502
  * @default ''
1539
1503
  */
1540
1504
  prefix?: string;
1541
1505
  /**
1542
- * The type of icon to be displayed in the field.
1506
+ * The icon identifier specifying which icon to display in the field, typically positioned at the start of the field before the input area. The icon is decorative and helps users quickly identify the field's purpose through visual recognition. The icon is announced to screen readers along with the field's accessible name. Use icons that clearly communicate the field's purpose (for example, search icon for search fields, calendar icon for date fields, lock icon for password fields). The icon doesn't affect the field's functionality but improves visual recognition and scannability in forms. Avoid using both icon and prefix simultaneously as this can create visual clutter.
1543
1507
  *
1544
1508
  * @default ''
1545
1509
  */
1546
1510
  icon?: IconType | AnyString;
1547
1511
  /**
1548
- * Additional content to be displayed in the field.
1549
- * Commonly used to display an icon that activates a tooltip providing more information.
1512
+ * Additional interactive content displayed within the field, typically positioned at the end of the field after the input area. Only text-only `Button` and `Clickable` components are supported—no icons or complex content. Use the `slot="accessory"` attribute to place elements here. Common uses include action buttons (for example, "Copy" button, "Generate" button, "Clear" button), toggle visibility controls (for example, "Show password" button), or quick actions related to the field (for example, "Paste from clipboard"). The accessory must not interfere with the field's primary input functionality. Ensure sufficient contrast and touch target sizes for mobile usability.
1550
1513
  */
1551
1514
  accessory?: ComponentChildren;
1552
1515
  }
1516
+ /**
1517
+ * Properties for defining numeric value constraints and controls.
1518
+ */
1553
1519
  export interface NumberConstraintsProps {
1554
1520
  /**
1555
- * The highest decimal or integer to be accepted for the field.
1556
- * When used with `step` the value will round down to the max number.
1557
- *
1558
- * Note: a user will still be able to use the keyboard to input a number higher than
1559
- * the max. It is up to the developer to add appropriate validation.
1521
+ * The highest decimal or integer value that the field accepts. When used with `stepper` controls, the increment button becomes disabled at this value and attempting to increment rounds down to max. When users type values using keyboard, they can enter numbers above max—browser validation will flag these as invalid but won't prevent entry, so validation should be implemented in `onChange` or before form submission. Commonly applied to enforce business rules like maximum quantities, price caps, or valid ranges. Setting to `Infinity` (default) removes the upper limit.
1560
1522
  *
1561
1523
  * @default Infinity
1562
1524
  */
1563
1525
  max?: number;
1564
1526
  /**
1565
- * The lowest decimal or integer to be accepted for the field.
1566
- * When used with `step` the value will round up to the min number.
1567
- *
1568
- * Note: a user will still be able to use the keyboard to input a number lower than
1569
- * the min. It is up to the developer to add appropriate validation.
1527
+ * The lowest decimal or integer value that the field accepts. When used with `stepper` controls, the decrement button becomes disabled at this value and attempting to decrement rounds up to min. When users type values using keyboard, they can enter numbers below min—browser validation will flag these as invalid but won't prevent entry, so validation should be implemented in `onChange` or before form submission. Commonly applied to enforce business rules like minimum quantities, prevent negative values, or define valid ranges. Setting to `-Infinity` (default) removes the lower limit.
1570
1528
  *
1571
1529
  * @default -Infinity
1572
1530
  */
1573
1531
  min?: number;
1574
1532
  /**
1575
- * The amount the value can increase or decrease by. This can be an integer or decimal.
1576
- * If a `max` or `min` is specified with `step` when increasing/decreasing the value
1577
- * via the buttons, the final value will always round to the `max` or `min`
1578
- * rather than the closest valid amount.
1533
+ * The increment/decrement amount for adjusting the numeric value. Determines how much the value changes when users click stepper buttons or press keyboard arrow keys (up/down). For example, `step="0.01"` allows currency precision, `step="5"` for quantities in increments of 5, or `step="0.25"` for quarter-hour time intervals. The browser may also use this for validation, flagging values that aren't valid steps from the `min` value. Decimals are supported unless using `stepper` controls which only accept integers.
1579
1534
  *
1580
1535
  * @default 1
1581
1536
  */
1582
1537
  step?: number;
1583
1538
  /**
1584
- * Sets the type of controls displayed in the field.
1539
+ * The type of controls displayed for the field:
1585
1540
  *
1586
- * - `stepper`: displays buttons to increase or decrease the value of the field by the stepping interval defined in the `step` property.
1587
- * Appropriate mouse and [keyboard interactions](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/spinbutton_role#keyboard_interactions) to control the value of the field are enabled.
1588
- * - `none`: no controls are displayed and users must input the value manually. Arrow keys and scroll wheels can’t be used either to avoid accidental changes.
1589
- * - `auto`: the presence of the controls depends on the surface and context.
1541
+ * - `'auto'` - An automatic setting where the presence of controls depends on the surface and context. The system determines the most appropriate control type based on the usage scenario.
1542
+ * - `'stepper'` - Displays increment (+) and decrement (-) buttons for adjusting the numeric value. When `stepper` controls are enabled, the field behavior is constrained: it accepts only integer values, always contains a value (never empty), and automatically validates against `min` and `max` bounds. The `label`, `details`, `placeholder`, `error`, `required`, and `inputMode` properties aren't supported with `stepper` controls.
1543
+ * - `'none'` - A control type with no visible controls where users must input the value manually using the keyboard.
1590
1544
  *
1591
1545
  * @default 'auto'
1592
1546
  */
1593
1547
  controls?: 'auto' | 'stepper' | 'none';
1594
1548
  }
1549
+ /**
1550
+ * Properties for defining minimum and maximum character length constraints on text inputs.
1551
+ */
1595
1552
  export interface MinMaxLengthProps {
1596
1553
  /**
1597
- * Specifies the maximum number of characters allowed.
1554
+ * The maximum number of characters allowed in the text field. The browser prevents users from typing or pasting beyond this limit—additional characters are automatically truncated. The character count includes all characters (letters, numbers, spaces, special characters). This provides immediate feedback by blocking input rather than showing validation errors. Commonly applied to enforce hard limits like database column sizes, API constraints, or UX requirements. Often combined with character counter displays to show remaining space (for example, "45/100 characters").
1598
1555
  *
1599
1556
  * @default Infinity
1600
1557
  */
1601
1558
  maxLength?: number;
1602
1559
  /**
1603
- * Specifies the min number of characters allowed.
1560
+ * The minimum number of characters required for the field value to be considered valid. Unlike `maxLength`, this doesn't prevent users from entering fewer characters—instead, browser validation marks the field as invalid if the value is too short. Validation typically occurs on form submission or blur. The field can be empty unless also marked `required`. Commonly applied to ensure sufficient input quality, such as minimum password lengths, meaningful descriptions, or codes with fixed lengths. The `error` property can be combined with this to display user-friendly validation messages.
1604
1561
  *
1605
1562
  * @default 0
1606
1563
  */
1607
1564
  minLength?: number;
1608
1565
  }
1566
+ /**
1567
+ * Base properties for selectable options including value, disabled state, and accessibility labels.
1568
+ */
1609
1569
  export interface BaseSelectableProps {
1610
1570
  /**
1611
- * A label used for users using assistive technologies like screen readers. When set, any children or `label` supplied will not be announced.
1612
- * This can also be used to display a control without a visual label, while still providing context to users using screen readers.
1571
+ * A label that describes the purpose or contents of the element. Announced to users with assistive technologies such as screen readers to provide context.
1613
1572
  */
1614
1573
  accessibilityLabel?: string;
1615
1574
  /**
1616
- * Disables the control, disallowing any interaction.
1575
+ * Whether the field is disabled, preventing user interaction. Use when the field is temporarily unavailable due to application state, permissions, or dependencies.
1617
1576
  *
1618
1577
  * @default false
1619
1578
  */
1620
1579
  disabled?: boolean;
1621
1580
  /**
1622
- * The value used in form data when the control is checked.
1581
+ * The unique value associated with this selectable option. This value is what gets submitted with forms when the option is selected, and is used to identify which options are selected in the parent `ChoiceList`'s `values` array. The value should be unique among siblings within the same choice list to avoid selection ambiguity. When a choice is selected, this value appears in form data and in the parent's `values` array. Use meaningful, stable values that identify the choice semantically (for example, `"small"`, `"express-shipping"`, `"agree-to-terms"`) rather than display text which may change or be localized. The value isn't displayed to users—use the choice's `children` or label for visible text.
1623
1582
  */
1624
1583
  value?: string;
1625
1584
  }
1585
+ /**
1586
+ * Properties for individual options within choice lists, including selection state management.
1587
+ */
1626
1588
  export interface BaseOptionProps extends BaseSelectableProps {
1627
1589
  /**
1628
- * Whether the control is active.
1590
+ * Whether the choice control is currently active or selected. This creates a controlled component—this value must be updated in response to user interactions using `onChange` handlers. When `true`, the choice appears selected with appropriate visual styling and is included in form submissions. If both `selected` and `defaultSelected` are provided, `selected` takes precedence.
1629
1591
  *
1630
1592
  * @default false
1631
1593
  */
1632
1594
  selected?: boolean;
1633
1595
  /**
1634
- * Whether the control is active by default.
1596
+ * Whether the control is selected by default when first rendered. This creates an uncontrolled component where the browser manages selection state internally after the initial render. The component handles selection internally without requiring updates using callbacks.
1635
1597
  *
1636
1598
  * @implementation `defaultSelected` reflects to the `selected` attribute.
1637
1599
  *
@@ -1639,9 +1601,12 @@ export interface BaseOptionProps extends BaseSelectableProps {
1639
1601
  */
1640
1602
  defaultSelected?: boolean;
1641
1603
  }
1604
+ /**
1605
+ * Properties for a single choice option including label, details, selection state, and additional content.
1606
+ */
1642
1607
  export interface ChoiceProps extends GlobalProps, BaseOptionProps {
1643
1608
  /**
1644
- * Content to use as the choice label.
1609
+ * The label content for the choice option.
1645
1610
  *
1646
1611
  * @implementation (StringChildren) The label is produced by extracting and
1647
1612
  * concatenating the text nodes from the provided content; any markup or
@@ -1653,64 +1618,57 @@ export interface ChoiceProps extends GlobalProps, BaseOptionProps {
1653
1618
  */
1654
1619
  children?: ComponentChildren | StringChildren;
1655
1620
  /**
1656
- * Additional text to provide context or guidance for the input.
1657
- *
1658
- * This text is displayed along with the input and its label
1659
- * to offer more information or instructions to the user.
1621
+ * Additional text or content that provides context or guidance for the choice option. Displayed alongside the option label to offer more information or instructions to the user. Also exposed to screen reader users.
1660
1622
  *
1661
1623
  * @implementation this content should be linked to the input with an `aria-describedby` attribute.
1662
1624
  */
1663
1625
  details?: ComponentChildren;
1664
1626
  /**
1665
- * Set to `true` to associate a choice with the error passed to `ChoiceList`
1627
+ * An error state indicator for the choice option. When `true`, the option will be given specific stylistic treatment to communicate validation issues.
1666
1628
  *
1667
1629
  * @default false
1668
1630
  */
1669
1631
  error?: boolean;
1670
1632
  /**
1671
- * Secondary content for a choice.
1633
+ * The additional content displayed alongside the primary choice label. Useful for providing supplementary information or context.
1672
1634
  */
1673
1635
  secondaryContent?: ComponentChildren;
1674
1636
  /**
1675
- * Content to display when the option is selected.
1676
- *
1677
- * This can be used to provide additional information or options related to the choice.
1637
+ * The content displayed only when the option is selected. Useful for showing additional details or confirmation information.
1678
1638
  */
1679
1639
  selectedContent?: ComponentChildren;
1680
1640
  }
1641
+ /**
1642
+ * Properties for a list of choice options with support for single or multiple selection modes.
1643
+ */
1681
1644
  export interface ChoiceListProps
1682
1645
  extends GlobalProps,
1683
1646
  Pick<BasicFieldProps, 'label' | 'labelAccessibilityVisibility' | 'error'>,
1684
1647
  MultipleInputProps,
1685
1648
  FieldDetailsProps {
1686
1649
  /**
1687
- * Whether multiple choices can be selected.
1650
+ * Whether multiple choices can be selected simultaneously. When `true`, users can select multiple options and the `values` array will contain all selected values. When `false`, only one option can be selected at a time and selecting a new option automatically deselects the previous one.
1688
1651
  *
1689
1652
  * @default false
1690
1653
  */
1691
1654
  multiple?: boolean;
1692
1655
  /**
1693
- * The choices a user can select from.
1694
- *
1695
- * Accepts `Choice` components.
1656
+ * The child elements to render within this component. Within `ChoiceList`, use only `Choice` components as children. Other component types can't be used as options within the choice list.
1696
1657
  */
1697
1658
  children?: ComponentChildren;
1698
1659
  /**
1699
- * Disables the field, disallowing any interaction.
1700
- *
1701
- * `disabled` on any child choices is ignored when this is true.
1660
+ * Whether the field is disabled, preventing user interaction. Use when the field is temporarily unavailable due to application state, permissions, or dependencies.
1702
1661
  *
1703
1662
  * @default false
1704
1663
  */
1705
1664
  disabled?: MultipleInputProps['disabled'];
1706
1665
  /**
1707
- * The variant of the choice grid.
1708
- *
1709
- * - `auto`: The variant is determined by the context.
1710
- * - `list`: The choices are displayed in a list.
1711
- * - `inline`: The choices are displayed on the inline axis.
1712
- * - `block`: The choices are displayed on the block axis.
1713
- * - `grid`: The choices are displayed in a grid.
1666
+ * Controls the visual layout and presentation style of the choice options:
1667
+ * - `'auto'`: The layout is automatically determined based on context
1668
+ * - `'list'`: Displays choices in a vertical list format
1669
+ * - `'inline'`: Displays choices in a horizontal inline format
1670
+ * - `'block'`: Displays choices as block-level button-like elements
1671
+ * - `'grid'`: Displays choices in a grid layout
1714
1672
  *
1715
1673
  * @implementation The `block`, `inline` and `grid` variants are more suitable for button looking choices, but it's at the
1716
1674
  * discretion of each surface.
@@ -1724,49 +1682,28 @@ export interface ClickableProps
1724
1682
  BaseBoxProps,
1725
1683
  BaseClickableProps {
1726
1684
  /**
1727
- * Disables the clickable, and indicates to assistive technology that the loading is in progress.
1728
- *
1729
- * This also disables the clickable.
1685
+ * Indicates whether the action is currently in progress. When `true`, typically displays a loading indicator and may disable interaction.
1730
1686
  */
1731
1687
  loading?: BaseClickableProps['loading'];
1732
1688
  /**
1733
- * Disables the clickable, meaning it cannot be clicked or receive focus.
1734
- *
1735
- * In this state, onClick will not fire.
1736
- * If the click event originates from a child element, the event will immediately stop propagating from this element.
1737
- *
1738
- * However, items within the clickable can still receive focus and be interacted with.
1739
- *
1740
- * This has no impact on the visual state by default,
1741
- * but developers are encouraged to style the clickable accordingly.
1689
+ * Whether the element is disabled, preventing user interaction. Use when temporarily unavailable due to application state, permissions, or dependencies. Child elements can still receive focus and be interacted with.
1742
1690
  */
1743
1691
  disabled?: BaseClickableProps['disabled'];
1744
1692
  /**
1745
- * Indicate the text language. Useful when the text is in a different language than the rest of the page.
1746
- * It will allow assistive technologies such as screen readers to invoke the correct pronunciation.
1747
- * [Reference of values](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) ("subtag" label)
1693
+ * Specifies the language of text content using an [IETF BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) language tag (for example, `"en"` for English, `"fr"` for French, `"es-MX"` for Mexican Spanish, `"zh-Hans"` for Simplified Chinese). This enables assistive technologies to use correct pronunciation and language-specific text rendering.
1748
1694
  *
1749
1695
  * @default ''
1750
1696
  */
1751
1697
  lang?: string;
1752
1698
  }
1699
+ /**
1700
+ * Properties for enabling browser autocomplete functionality on form fields.
1701
+ */
1753
1702
  export interface AutocompleteProps<
1754
1703
  AutocompleteField extends AnyAutocompleteField,
1755
1704
  > {
1756
1705
  /**
1757
- * A hint as to the intended content of the field.
1758
- *
1759
- * When set to `on` (the default), this property indicates that the field should support
1760
- * autofill, but you do not have any more semantic information on the intended
1761
- * contents.
1762
- *
1763
- * When set to `off`, you are indicating that this field contains sensitive
1764
- * information, or contents that are never saved, like one-time codes.
1765
- *
1766
- * Alternatively, you can provide value which describes the
1767
- * specific data you would like to be entered into this field during autofill.
1768
- *
1769
- * @see Learn more about the set of {@link https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill-detail-tokens|autocomplete values} supported in browsers.
1706
+ * Specifies the type of data expected in the field to enable browser autocomplete functionality. When set to a specific field type (for example, `'email'`, `'name'`, `'address-line1'`), browsers offer suggestions from previously entered or saved information, improving data entry speed and accuracy. Set to `'on'` to enable generic autocomplete without specifying data type. Set to `'off'` to disable autocomplete entirely for sensitive fields (for example, one-time codes, PINs, credit card security codes). The browser respects user preferences and privacy settings, so autocomplete suggestions may not always appear even when enabled. Prefix field types with section identifiers (`section-shipping`) or groups (`billing`, `shipping`) to disambiguate when multiple similar fields exist on the same page. Accepts standard [HTML autocomplete tokens per the WHATWG specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill-detail-tokens).
1770
1707
  *
1771
1708
  * @default 'tel' for PhoneField
1772
1709
  * @default 'email' for EmailField
@@ -1782,19 +1719,18 @@ export interface AutocompleteProps<
1782
1719
  | 'off';
1783
1720
  }
1784
1721
  /**
1785
- * The section scopes the autocomplete data that should be inserted
1786
- * to a specific area of the page.
1722
+ * A section prefix that scopes the autocomplete data to a specific area of the page.
1787
1723
  *
1788
1724
  * Commonly used when there are multiple fields with the same autocomplete needs
1789
1725
  * in the same page. For example: 2 shipping address forms in the same page.
1790
1726
  */
1791
1727
  export type AutocompleteSection = `section-${string}`;
1792
1728
  /**
1793
- * The contact information group the autocomplete data should be sourced from.
1729
+ * The contact information category that autocomplete data should be sourced from.
1794
1730
  */
1795
1731
  export type AutocompleteGroup = 'shipping' | 'billing';
1796
1732
  /**
1797
- * The contact information subgroup the autocomplete data should be sourced from.
1733
+ * The contact information subcategory that autocomplete data should be sourced from.
1798
1734
  */
1799
1735
  export type AutocompleteAddressGroup = 'fax' | 'home' | 'mobile' | 'pager';
1800
1736
  export type AnyAutocompleteField =
@@ -1862,6 +1798,9 @@ export type AnyAutocompleteField =
1862
1798
  | `${AutocompleteAddressGroup} tel-local-suffix`
1863
1799
  | `${AutocompleteAddressGroup} tel-local`
1864
1800
  | `${AutocompleteAddressGroup} tel-national`;
1801
+ /**
1802
+ * Autocomplete field types applicable to text input fields.
1803
+ */
1865
1804
  export type TextAutocompleteField = ExtractStrict<
1866
1805
  AnyAutocompleteField,
1867
1806
  | 'additional-name'
@@ -1895,12 +1834,15 @@ export type TextAutocompleteField = ExtractStrict<
1895
1834
  | 'cc-family-name'
1896
1835
  | 'cc-type'
1897
1836
  >;
1837
+ /**
1838
+ * Properties for an interactive date picker component with single, multiple, or range selection modes.
1839
+ */
1898
1840
  export interface DatePickerProps
1899
1841
  extends GlobalProps,
1900
1842
  InputProps,
1901
1843
  FocusEventProps {
1902
1844
  /**
1903
- * Default month to display in `YYYY-MM` format.
1845
+ * The default month to display in `YYYY-MM` format when the picker is first shown.
1904
1846
  *
1905
1847
  * This value is used until `view` is set, either directly or as a result of user interaction.
1906
1848
  *
@@ -1908,74 +1850,35 @@ export interface DatePickerProps
1908
1850
  */
1909
1851
  defaultView?: string;
1910
1852
  /**
1911
- * Displayed month in `YYYY-MM` format.
1912
- *
1913
- * `onViewChange` is called when this value changes.
1914
- *
1915
- * Defaults to `defaultView`.
1853
+ * The currently displayed month in `YYYY-MM` format. Controls which month is visible in the date picker.
1916
1854
  */
1917
1855
  view?: string;
1918
1856
  /**
1919
- * Called whenever the month to display changes.
1920
- *
1921
- * @param view The new month to display in `YYYY-MM` format.
1857
+ * Called when the visible month displayed in the date picker changes, either through user navigation (clicking next/previous month buttons) or programmatic updates to the `view` property. The callback receives the new month as a string in `YYYY-MM` format (for example, `"2024-05"`). Common operations include tracking which month users are viewing, loading month-specific data (like availability or pricing), syncing the view with external state, or implementing custom navigation controls. For controlled date pickers, the `view` property should be updated in this callback to keep the displayed month in sync with application state. The callback fires after the month has changed but before the new month's dates are fully rendered, making it well-suited for triggering data fetches.
1922
1858
  */
1923
1859
  onViewChange?: (view: string) => void;
1924
1860
  /**
1925
- * The type of selection the date picker allows.
1926
- *
1927
- * - `single` allows selecting a single date.
1928
- * - `multiple` allows selecting multiple non-contiguous dates.
1929
- * - `range` allows selecting a single range of dates.
1861
+ * Controls the selection mode of the date picker:
1862
+ * - `'single'`: Allows selecting one date
1863
+ * - `'multiple'`: Allows selecting multiple individual dates
1864
+ * - `'range'`: Allows selecting a continuous range of dates
1930
1865
  *
1931
1866
  * @default "single"
1932
1867
  */
1933
1868
  type?: 'single' | 'multiple' | 'range';
1934
1869
  /**
1935
- * Dates that can be selected.
1936
- *
1937
- * A comma-separated list of dates, date ranges. Whitespace is allowed after commas.
1938
- *
1939
- * The default `''` allows all dates.
1940
- *
1941
- * - Dates in `YYYY-MM-DD` format allow a single date.
1942
- * - Dates in `YYYY-MM` format allow a whole month.
1943
- * - Dates in `YYYY` format allow a whole year.
1944
- * - Ranges are expressed as `start--end`.
1945
- * - Ranges are inclusive.
1946
- * - If either `start` or `end` is omitted, the range is unbounded in that direction.
1947
- * - If parts of the date are omitted for `start`, they are assumed to be the minimum possible value.
1948
- * So `2024--` is equivalent to `2024-01-01--`.
1949
- * - If parts of the date are omitted for `end`, they are assumed to be the maximum possible value.
1950
- * So `--2024` is equivalent to `--2024-12-31`.
1951
- * - Whitespace is allowed either side of `--`.
1870
+ * Specifies allowed date values or ranges for selection. Uses ISO date format (YYYY-MM-DD) or partial dates (YYYY-MM, YYYY). Supports range syntax with `--` separator and comma-separated values.
1952
1871
  *
1953
1872
  * @default ""
1954
1873
  *
1955
1874
  * @example
1956
1875
  * `2024-02--2025` // allow any date from February 2024 to the end of 2025
1957
- * `2024-02--` // allow any date from February 2024 to the end of the month
1876
+ * `2024-02--` // allow any date from February 2024 onwards
1958
1877
  * `2024-05-09, 2024-05-11` // allow only the 9th and 11th of May 2024
1959
1878
  */
1960
1879
  allow?: string;
1961
1880
  /**
1962
- * Dates that cannot be selected. These subtract from `allow`.
1963
- *
1964
- * A comma-separated list of dates, date ranges. Whitespace is allowed after commas.
1965
- *
1966
- * The default `''` has no effect on `allow`.
1967
- *
1968
- * - Dates in `YYYY-MM-DD` format disallow a single date.
1969
- * - Dates in `YYYY-MM` format disallow a whole month.
1970
- * - Dates in `YYYY` format disallow a whole year.
1971
- * - Ranges are expressed as `start--end`.
1972
- * - Ranges are inclusive.
1973
- * - If either `start` or `end` is omitted, the range is unbounded in that direction.
1974
- * - If parts of the date are omitted for `start`, they are assumed to be the minimum possible value.
1975
- * So `2024--` is equivalent to `2024-01-01--`.
1976
- * - If parts of the date are omitted for `end`, they are assumed to be the maximum possible value.
1977
- * So `--2024` is equivalent to `--2024-12-31`.
1978
- * - Whitespace is allowed either side of `--`.
1881
+ * Specifies disallowed date values or ranges that can't be selected. Uses ISO date format (YYYY-MM-DD) or partial dates (YYYY-MM, YYYY). Supports range syntax with `--` separator and comma-separated values. Takes precedence over `allow`.
1979
1882
  *
1980
1883
  * @default ""
1981
1884
  *
@@ -1985,82 +1888,49 @@ export interface DatePickerProps
1985
1888
  */
1986
1889
  disallow?: string;
1987
1890
  /**
1988
- * Days of the week that can be selected. These intersect with the result of `allow` and `disallow`.
1989
- *
1990
- * A comma-separated list of days. Whitespace is allowed after commas.
1991
- *
1992
- * The default `''` has no effect on the result of `allow` and `disallow`.
1993
- *
1994
- * Days are `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
1891
+ * Specifies which days of the week can be selected. Accepts comma-separated day names (case-insensitive). Further restricts dates within the result of `allow` and `disallow`.
1995
1892
  *
1996
1893
  * @default ""
1997
1894
  *
1998
1895
  * @example
1999
- * 'saturday, sunday' // allow only weekends within the result of `allow` and `disallow`.
1896
+ * 'saturday, sunday' // allow only weekends
1897
+ * 'monday, wednesday, friday' // allow only specific weekdays
2000
1898
  */
2001
1899
  allowDays?: string;
2002
1900
  /**
2003
- * Days of the week that cannot be selected. This subtracts from `allowDays`, and intersects with the result of `allow` and `disallow`.
2004
- *
2005
- * A comma-separated list of days. Whitespace is allowed after commas.
2006
- *
2007
- * The default `''` has no effect on `allowDays`.
2008
- *
2009
- * Days are `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`.
1901
+ * Specifies which days of the week can't be selected. Accepts comma-separated day names (case-insensitive). Further restricts dates within the result of `allow` and `disallow`.
2010
1902
  *
2011
1903
  * @default ""
2012
1904
  *
2013
1905
  * @example
2014
- * 'saturday, sunday' // disallow weekends within the result of `allow` and `disallow`.
1906
+ * 'saturday, sunday' // disallow weekends
1907
+ * 'monday' // disallow Mondays
2015
1908
  */
2016
1909
  disallowDays?: string;
2017
1910
  /**
2018
- * Default selected value.
2019
- *
2020
- * The default means no date is selected.
2021
- *
2022
- * If the provided value is invalid, no date is selected.
2023
- *
2024
- * - If `type="single"`, this is a date in `YYYY-MM-DD` format.
2025
- * - If `type="multiple"`, this is a comma-separated list of dates in `YYYY-MM-DD` format.
2026
- * - If `type="range"`, this is a range in `YYYY-MM-DD--YYYY-MM-DD` format. The range is inclusive.
1911
+ * The default date value used when the field is first rendered, in ISO date format (YYYY-MM-DD, for example, `"2024-05-15"`). An empty string means no default date. For date ranges, use comma-separated dates. Only applies if no `value` prop is provided.
2027
1912
  *
2028
1913
  * @default ""
2029
1914
  */
2030
1915
  defaultValue?: string;
2031
1916
  /**
2032
- * Current selected value.
2033
- *
2034
- * The default means no date is selected.
2035
- *
2036
- * If the provided value is invalid, no date is selected.
2037
- *
2038
- * Otherwise:
2039
- *
2040
- * - If `type="single"`, this is a date in `YYYY-MM-DD` format.
2041
- * - If `type="multiple"`, this is a comma-separated list of dates in `YYYY-MM-DD` format.
2042
- * - If `type="range"`, this is a range in `YYYY-MM-DD--YYYY-MM-DD` format. The range is inclusive.
1917
+ * The currently selected date value in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DD`, for example, `"2024-05-15"`). An empty string means no date is selected. For date ranges, use comma-separated dates (for example, `"2024-05-15,2024-05-20"`). Other date formats require conversion before setting this property. The selection mode (`type` property) is inferred from the value format: single date for one value, multiple dates for comma-separated values without a range, and range for two comma-separated dates when `type` is set to 'range'.
2043
1918
  *
2044
1919
  * @default ""
2045
1920
  */
2046
1921
  value?: string;
2047
1922
  /**
2048
- * Callback when any date is selected.
2049
- *
2050
- * - If `type="single"`, fires when a date is selected and happens before `onChange`.
2051
- * - If `type="multiple"`, fires when a date is selected before `onChange`.
2052
- * - If `type="range"`, fires when a first date is selected (with the partial value formatted as `YYYY-MM-DD--`), and when the last date is selected before `onChange`.
1923
+ * Called when the user makes any change to the field value. Fires on each keystroke or interaction.
2053
1924
  */
2054
1925
  onInput?: (event: Event) => void;
2055
1926
  /**
2056
- * Callback when the value is committed.
2057
- *
2058
- * - If `type="single"`, fires when a date is selected after `onInput`.
2059
- * - If `type="multiple"`, fires when a date is selected after `onInput`.
2060
- * - If `type="range"`, fires when a range is completed by selecting the end date after `onInput`.
1927
+ * Called when the user has finished editing the field, typically triggered on blur after the value has changed.
2061
1928
  */
2062
1929
  onChange?: (event: Event) => void;
2063
1930
  }
1931
+ /**
1932
+ * Properties for a text-based date input field with validation and autocomplete support.
1933
+ */
2064
1934
  export interface DateFieldProps
2065
1935
  extends GlobalProps,
2066
1936
  BaseTextFieldProps,
@@ -2078,22 +1948,13 @@ export interface DateFieldProps
2078
1948
  >,
2079
1949
  AutocompleteProps<DateAutocompleteField> {
2080
1950
  /**
2081
- * Callback when the field has an invalid date.
2082
- * This callback will be called, if the date typed is invalid or disabled.
2083
- *
2084
- * Dates that don’t exist or have formatting errors are considered invalid. Some examples of invalid dates are:
2085
- * - 2021-02-31: February doesn’t have 31 days
2086
- * - 2021-02-00: The day can’t be 00
2087
- *
2088
- * Disallowed dates are considered invalid.
2089
- *
2090
- * It’s important to note that this callback will be called only when the user **finishes editing** the date,
2091
- * and it’s called right after the `onChange` callback.
2092
- * The field is **not** validated on every change to the input. Once the buyer has signalled that
2093
- * they have finished editing the field (typically, by blurring the field), the field gets validated and the callback is run if the value is invalid.
1951
+ * Called when the user enters an invalid value. Fires after change validation fails.
2094
1952
  */
2095
1953
  onInvalid?: (event: Event) => void;
2096
1954
  }
1955
+ /**
1956
+ * Autocomplete field types applicable to date input fields.
1957
+ */
2097
1958
  export type DateAutocompleteField = ExtractStrict<
2098
1959
  AnyAutocompleteField,
2099
1960
  | 'bday'
@@ -2104,6 +1965,9 @@ export type DateAutocompleteField = ExtractStrict<
2104
1965
  | 'cc-expiry-month'
2105
1966
  | 'cc-expiry-year'
2106
1967
  >;
1968
+ /**
1969
+ * Properties for a spinner-style date selector with increment/decrement controls.
1970
+ */
2107
1971
  export interface DateSpinnerProps
2108
1972
  extends GlobalProps,
2109
1973
  Pick<
@@ -2111,102 +1975,114 @@ export interface DateSpinnerProps
2111
1975
  'defaultValue' | 'value' | 'onInput' | 'onChange' | 'onBlur' | 'onFocus'
2112
1976
  > {
2113
1977
  /**
2114
- * Default selected value for the spinner.
2115
- *
2116
- * This uses a date in `YYYY-MM-DD` format.
1978
+ * The default date value used when the field is first rendered, in ISO date format (YYYY-MM-DD, for example, `"2024-05-15"`). An empty string means no default date. Only applies if no `value` prop is provided.
2117
1979
  *
2118
1980
  * @default ""
2119
1981
  */
2120
1982
  defaultValue?: string;
2121
1983
  /**
2122
- * Current selected value for the spinner.
2123
- *
2124
- * This uses a date in `YYYY-MM-DD` format.
1984
+ * The currently selected date value in ISO date format (YYYY-MM-DD, for example, `"2024-05-15"`). An empty string means no date is selected.
2125
1985
  *
2126
1986
  * @default ""
2127
1987
  */
2128
1988
  value?: string;
2129
1989
  /**
2130
- * Callback after the wheels have finished spinning and the value has
2131
- * settled.
2132
- *
2133
- * Fires once when inertial/momentum scrolling stops and the selection snaps
2134
- * into place.
1990
+ * Called when the user makes any change to the field value. Fires on each keystroke or interaction.
2135
1991
  */
2136
1992
  onInput?: (event: Event) => void;
2137
1993
  /**
2138
- * Callback when the selection has been confirmed by the user.
2139
- *
2140
- * Fires only when the user explicitly commits the selection (for example, by
2141
- * pressing a confirmation control).
1994
+ * Called when the user has finished editing the field, typically triggered on blur after the value has changed. Date validation occurs when the user finishes editing (on blur), rather than on every keystroke.
2142
1995
  */
2143
1996
  onChange?: (event: Event) => void;
2144
1997
  }
1998
+ /**
1999
+ * Properties for a visual divider line that separates content sections.
2000
+ */
2145
2001
  export interface DividerProps extends GlobalProps {
2146
2002
  /**
2147
- * Specify the direction of the divider. This uses [logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values).
2003
+ * The direction of the divider using [logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values). An inline divider runs horizontally across the content flow, while a block divider runs vertically along the content flow.
2004
+ *
2005
+ * Available options:
2006
+ * - `'inline'`: A horizontal divider that runs perpendicular to the text direction, creating separation between vertically stacked content sections.
2007
+ * - `'block'`: A vertical divider that runs parallel to the text direction, creating separation between horizontally arranged content sections.
2148
2008
  *
2149
2009
  * @default 'inline'
2150
2010
  */
2151
2011
  direction?: 'inline' | 'block';
2152
2012
  /**
2153
- * Modify the color to be more or less intense.
2013
+ * The color intensity of the divider. Controls how prominent or subtle the divider appears.
2154
2014
  *
2155
2015
  * @default 'base'
2156
2016
  */
2157
2017
  color?: ColorKeyword;
2158
2018
  }
2019
+ /**
2020
+ * Properties for an email address input field with validation and autocomplete support.
2021
+ */
2159
2022
  export interface EmailFieldProps
2160
2023
  extends GlobalProps,
2161
2024
  BaseTextFieldProps,
2162
2025
  MinMaxLengthProps,
2163
2026
  AutocompleteProps<EmailAutocompleteField> {}
2027
+ /**
2028
+ * Autocomplete field types applicable to email input fields.
2029
+ */
2164
2030
  export type EmailAutocompleteField = ExtractStrict<
2165
2031
  AnyAutocompleteField,
2166
2032
  'email' | `${AutocompleteAddressGroup} email`
2167
2033
  >;
2034
+ /**
2035
+ * A spacing size keyword including the option for no spacing.
2036
+ */
2168
2037
  export type SpacingKeyword = SizeKeyword | 'none';
2038
+ /**
2039
+ * Properties for controlling the spacing between child elements in a container.
2040
+ */
2169
2041
  export interface GapProps {
2170
2042
  /**
2171
- * Adjust spacing between elements.
2172
- *
2173
- * A single value applies to both axes.
2174
- * A pair of values (eg `large-100 large-500`) can be used to set the inline and block axes respectively.
2043
+ * The spacing between child elements. A single value applies to both axes. Two values (for example, `large-100 large-500`) set the block axis (first value) and inline axis (second value) respectively.
2175
2044
  *
2176
2045
  * @default 'none'
2177
2046
  */
2178
2047
  gap?: MaybeResponsive<MaybeTwoValuesShorthandProperty<SpacingKeyword>>;
2179
2048
  /**
2180
- * Adjust spacing between elements in the block axis.
2181
- *
2182
- * This overrides the row value of `gap`.
2049
+ * The spacing between child elements along the block axis (typically vertical). Overrides the block axis value from `gap`.
2183
2050
  *
2184
2051
  * @default '' - meaning no override
2185
2052
  */
2186
2053
  rowGap?: MaybeResponsive<SpacingKeyword | ''>;
2187
2054
  /**
2188
- * Adjust spacing between elements in the inline axis.
2189
- *
2190
- * This overrides the column value of `gap`.
2055
+ * The spacing between child elements along the inline axis (typically horizontal). Overrides the inline axis value from `gap`.
2191
2056
  *
2192
2057
  * @default '' - meaning no override
2193
2058
  */
2194
2059
  columnGap?: MaybeResponsive<SpacingKeyword | ''>;
2195
2060
  }
2061
+ /**
2062
+ * A baseline alignment position keyword.
2063
+ */
2196
2064
  export type BaselinePosition = 'baseline' | 'first baseline' | 'last baseline';
2065
+ /**
2066
+ * A content distribution strategy keyword for spacing.
2067
+ */
2197
2068
  export type ContentDistribution =
2198
2069
  | 'space-between'
2199
2070
  | 'space-around'
2200
2071
  | 'space-evenly'
2201
2072
  | 'stretch';
2073
+ /**
2074
+ * A content position alignment keyword.
2075
+ */
2202
2076
  export type ContentPosition = 'center' | 'start' | 'end';
2077
+ /**
2078
+ * A content position with optional overflow safety modifier.
2079
+ */
2203
2080
  export type OverflowPosition =
2204
2081
  | `unsafe ${ContentPosition}`
2205
2082
  | `safe ${ContentPosition}`;
2206
2083
  /**
2207
- * Align items sets the align-self value on all direct children as a group.
2208
- *
2209
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
2084
+ * A type that defines how children are aligned along the cross axis.
2085
+ * Sets the align-self value on all direct children as a group. Learn more about [`align-items` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items).
2210
2086
  */
2211
2087
  export type AlignItemsKeyword =
2212
2088
  | 'normal'
@@ -2215,9 +2091,7 @@ export type AlignItemsKeyword =
2215
2091
  | OverflowPosition
2216
2092
  | ContentPosition;
2217
2093
  /**
2218
- * Justify content defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container.
2219
- *
2220
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content
2094
+ * A type that defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. Learn more about [`justify-content` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content).
2221
2095
  */
2222
2096
  export type JustifyContentKeyword =
2223
2097
  | 'normal'
@@ -2225,9 +2099,7 @@ export type JustifyContentKeyword =
2225
2099
  | OverflowPosition
2226
2100
  | ContentPosition;
2227
2101
  /**
2228
- *Align content sets the distribution of space between and around content items along a flexbox's cross axis, or a grid or block-level element's block axis.
2229
- *
2230
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/align-content
2102
+ * A type that defines the distribution of space between and around content items along a flexbox's cross axis, or a grid or block-level element's block axis. Learn more about [`align-content` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-content).
2231
2103
  */
2232
2104
  export type AlignContentKeyword =
2233
2105
  | 'normal'
@@ -2235,90 +2107,90 @@ export type AlignContentKeyword =
2235
2107
  | ContentDistribution
2236
2108
  | OverflowPosition
2237
2109
  | ContentPosition;
2110
+ /**
2111
+ * Base properties for text styling and appearance.
2112
+ */
2238
2113
  export interface BaseTypographyProps {
2239
2114
  /**
2240
- * Modify the color to be more or less intense.
2115
+ * The color intensity of the text. Controls how prominent or subtle the text appears within the interface.
2241
2116
  *
2242
2117
  * @default 'base'
2243
2118
  */
2244
2119
  color?: ColorKeyword;
2245
2120
  /**
2246
- * Sets the tone of the component, based on the intention of the information being conveyed.
2121
+ * The semantic tone of the text, based on the intention of the information being conveyed. Affects color and styling to communicate meaning.
2247
2122
  *
2248
2123
  * @default 'auto'
2249
2124
  */
2250
2125
  tone?: ToneKeyword;
2251
2126
  /**
2252
- * Set the numeric properties of the font.
2127
+ * Controls how numbers are displayed in the text:
2128
+ * - `'auto'`: Inherits the setting from the parent element.
2129
+ * - `'normal'`: Uses the default number rendering for the font.
2130
+ * - `'tabular-nums'`: Uses fixed-width numbers for better alignment in tables and lists.
2253
2131
  *
2254
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-numeric
2132
+ * Learn more about [`font-variant-numeric` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-numeric).
2255
2133
  *
2256
- * @default 'auto' - inherit from the parent element
2134
+ * @default 'auto'
2257
2135
  */
2258
2136
  fontVariantNumeric?: 'auto' | 'normal' | 'tabular-nums';
2259
2137
  /**
2260
- * Indicate the text language. Useful when the text is in a different language than the rest of the page.
2261
- * It will allow assistive technologies such as screen readers to invoke the correct pronunciation.
2262
- * [Reference of values](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) ("subtag" label)
2263
- *
2264
- * It is recommended to combine it with the `dir` attribute to ensure the text is rendered correctly if the surrounding content’s direction is different.
2138
+ * Specifies the language of text content using an [IETF BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) language tag (for example, `"en"` for English, `"fr"` for French, `"es-MX"` for Mexican Spanish, `"zh-Hans"` for Simplified Chinese). This enables assistive technologies to use correct pronunciation and language-specific text rendering.
2265
2139
  *
2266
2140
  * @default ''
2267
2141
  */
2268
2142
  lang?: string;
2269
2143
  /**
2270
- * Indicates the directionality of the elements text.
2271
- *
2272
- * - `ltr`: languages written from left to right (e.g. English)
2273
- * - `rtl`: languages written from right to left (e.g. Arabic)
2274
- * - `auto`: the user agent determines the direction based on the content
2275
- * - `''`: direction is inherited from parent elements (equivalent to not setting the attribute)
2144
+ * Indicates the directionality of the element's text:
2145
+ * - `ltr`: languages written from left to right (for example, English).
2146
+ * - `rtl`: languages written from right to left (for example, Arabic).
2147
+ * - `auto`: the user agent determines the direction based on the content.
2148
+ * - `''`: direction is inherited from parent elements (equivalent to not setting the attribute).
2276
2149
  *
2277
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir
2150
+ * Learn more about the [`dir` attribute on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir).
2278
2151
  *
2279
2152
  * @default ''
2280
2153
  */
2281
2154
  dir?: 'ltr' | 'rtl' | 'auto' | '';
2282
2155
  }
2156
+ /**
2157
+ * Properties for controlling multi-line text behavior and truncation.
2158
+ */
2283
2159
  export interface BlockTypographyProps {
2284
2160
  /**
2285
- * Truncates the text content to the specified number of lines.
2286
- *
2287
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp
2161
+ * Limits the text content to a specified number of visible lines. When text exceeds this limit, it's truncated and an ellipsis (`…`) appears at the end of the last visible line to indicate more content exists. The truncation happens automatically based on the container's width, font size, and line height—narrow containers or large fonts will show fewer words per line. For example, `lineClamp={3}` allows maximum three lines of text regardless of total content length. Users can't access the hidden text unless an expansion mechanism (like a "Read more" button) or tooltip is provided. Commonly applied to maintain consistent layout heights in cards, lists, or grids where varying text lengths would disrupt visual alignment. Common values include 1-2 for titles/labels, 2-3 for descriptions, and 4-6 for preview text. The actual text content remains in the DOM and is accessible to screen readers (full text is announced), search engines, and selection—only the visual display is truncated. Learn more about [`line-clamp` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp).
2288
2162
  *
2289
2163
  * @default Infinity - no truncation is applied
2290
2164
  */
2291
2165
  lineClamp?: number;
2292
2166
  }
2167
+ /**
2168
+ * Properties for heading text elements with semantic structure and line clamping.
2169
+ */
2293
2170
  export interface HeadingProps
2294
2171
  extends GlobalProps,
2295
2172
  AccessibilityVisibilityProps,
2296
2173
  BlockTypographyProps {
2297
2174
  /**
2298
- * The content of the Heading.
2175
+ * The child elements to render within this component. Use plain text or simple inline elements only for heading content. Rich text format isn't supported.
2299
2176
  */
2300
2177
  children?: ComponentChildren;
2301
2178
  /**
2302
- * Sets the semantic meaning of the component’s content. When set,
2303
- * the role will be used by assistive technologies to help users
2304
- * navigate the page.
2305
- *
2306
- * - `heading`: defines the element as a heading to a page or section.
2307
- * - `presentation`: the heading level will be stripped,
2308
- * and will prevent the element’s implicit ARIA semantics from
2309
- * being exposed to the accessibility tree.
2310
- * - `none`: a synonym for the `presentation` role.
2179
+ * Sets the semantic role for assistive technologies. Helps screen reader users navigate and understand page structure.
2311
2180
  *
2312
2181
  * @default 'heading'
2313
2182
  *
2314
2183
  * @implementation The `heading` role doesn't need to be applied if
2315
2184
  * the host applies it for you; for example, an HTML host rendering
2316
- * an `<h2>` element should not apply the `heading` role.
2185
+ * an `<h2>` element shouldn't apply the `heading` role.
2317
2186
  */
2318
2187
  accessibilityRole?:
2319
2188
  | 'heading'
2320
2189
  | ExtractStrict<AccessibilityRole, 'presentation' | 'none'>;
2321
2190
  }
2191
+ /**
2192
+ * Properties for icon elements including type, size, color, and tone.
2193
+ */
2322
2194
  export interface IconProps
2323
2195
  extends GlobalProps,
2324
2196
  Pick<InteractionProps, 'interestFor'> {
@@ -2329,182 +2201,155 @@ export interface IconProps
2329
2201
  */
2330
2202
  tone?: ToneKeyword;
2331
2203
  /**
2332
- * Modify the color to be more or less intense.
2204
+ * Modify the color to be more or less intense. Use `'subdued'` for secondary icons, `'base'` for standard visibility, or `'strong'` for emphasized icons that need to stand out.
2333
2205
  *
2334
2206
  * @default 'base'
2335
2207
  */
2336
2208
  color?: ColorKeyword;
2337
2209
  /**
2338
- * Adjusts the size of the icon.
2210
+ * Adjusts the size of the icon. Available sizes range from `'small-500'` (smallest) through `'base'` (default) to `'large-500'` (largest), allowing you to match icon size to your interface hierarchy.
2339
2211
  *
2340
2212
  * @default 'base'
2341
2213
  */
2342
2214
  size?: SizeKeyword;
2215
+ /**
2216
+ * The type of icon to display.
2217
+ */
2343
2218
  type?: IconType | AnyString;
2344
2219
  }
2220
+ /**
2221
+ * Base properties for image elements including source URLs and alternative text.
2222
+ */
2345
2223
  export interface BaseImageProps {
2346
2224
  /**
2347
- * An alternative text description that describe the image for the reader to
2348
- * understand what it is about. It is extremely useful for both users using
2349
- * assistive technology and sighted users. A well written description
2350
- * provides people with visual impairments the ability to participate in
2351
- * consuming non-text content. When a screen readers encounters an `s-image`,
2352
- * the description is read and announced aloud. If an image fails to load,
2353
- * potentially due to a poor connection, the `alt` is displayed on
2354
- * screen instead. This has the benefit of letting a sighted buyer know an
2355
- * image was meant to load here, but as an alternative, they’re still able to
2356
- * consume the text content. Read
2357
- * [considerations when writing alternative text](https://www.shopify.com/ca/blog/image-alt-text#4)
2358
- * to learn more.
2225
+ * Alternative text that describes the image content for users who can't see the image. This text is announced by screen readers, displayed when images fail to load or are blocked, and used by search engines for image indexing. Write concise, descriptive alt text that conveys the image's purpose and content (for example, "Product photo of blue running shoes" not "image" or "photo"). For decorative images that don't convey information, use an empty string (`alt=""`) to hide them from screen readers. For images containing text, include that text in the alt description. For complex images like charts or diagrams, consider providing a longer description elsewhere and summarizing in alt text. Alt text is required for accessibility compliance and should describe what users would miss if they couldn't see the image. Learn more about [`alt` on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#alt).
2359
2226
  *
2360
2227
  * @default `''`
2361
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#alt
2362
2228
  */
2363
2229
  alt?: string;
2364
2230
  /**
2365
- * A set of media conditions and their corresponding sizes.
2366
- *
2367
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#sizes
2231
+ * Defines the image sizes for different viewport widths to help the browser select the optimal image from `srcSet`. This is a comma-separated list of media conditions and corresponding sizes (for example, `"(max-width: 600px) 480px, 800px"`). The browser uses this with `srcSet` to determine which image variant to download based on the device's screen size and pixel density, improving performance by loading appropriately-sized images. For example, mobile devices receive smaller images while desktops get larger, higher-resolution versions. When `srcSet` provides multiple image sizes, `sizes` tells the browser the rendered size at different viewport widths. If omitted, the browser assumes `100vw` (full viewport width). This only affects which image is selected, not how it's displayed—use CSS or `inlineSize` for display sizing. Learn more about [`sizes` on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#sizes).
2368
2232
  */
2369
2233
  sizes?: string;
2370
2234
  /**
2371
- * The image source (either a remote URL or a local file resource).
2372
- *
2373
- * When the image is loading or no `src` is provided, a placeholder will be rendered.
2235
+ * The image source URL (remote URL or local file resource). When loading or no src is provided, a placeholder is rendered. Ensure URLs are properly formatted and properly formatted.
2374
2236
  *
2375
2237
  * @implementation Surfaces may choose the style of the placeholder, but the space the image occupies should be
2376
- * reserved, except in cases where the image area does not have a contextual inline or block size, which should be rare.
2377
- *
2378
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#src
2238
+ * reserved, except in cases where the image area doesn't have a contextual inline or block size, which should be rare.
2379
2239
  */
2380
2240
  src?: string;
2381
2241
  /**
2382
- * A set of image sources and their width or pixel density descriptors.
2383
- *
2384
- * This overrides the `src` property.
2385
- *
2386
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#srcset
2242
+ * A set of image source URLs with descriptors for responsive image selection. Provides multiple image variants at different widths or pixel densities, allowing browsers to choose the most appropriate image for the user's device and screen. Format: comma-separated list of `URL descriptor` pairs where descriptors are either width (`w`) or pixel density (`x`). For example: `"small.jpg 480w, medium.jpg 800w, large.jpg 1200w"` for different widths, or `"standard.jpg 1x, retina.jpg 2x"` for different pixel densities. The browser considers the device's screen size, resolution, network speed, and user preferences when selecting which image to download. This improves performance (smaller images on mobile) and quality (high-DPI images on retina displays). When used with `sizes`, enables fully responsive images. The `src` property serves as fallback for browsers that don't support `srcSet`. Learn more about [img srcset on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#srcset).
2387
2243
  */
2388
2244
  srcSet?: string;
2389
2245
  }
2246
+ /**
2247
+ * Properties for image elements including size, aspect ratio, loading behavior, and border styling.
2248
+ */
2390
2249
  export interface ImageProps extends GlobalProps, BaseImageProps, BorderProps {
2391
2250
  /**
2392
- * Sets the semantic meaning of the component’s content. When set,
2393
- * the role will be used by assistive technologies to help users
2394
- * navigate the page.
2251
+ * Sets the semantic role for assistive technologies. Helps screen reader users navigate and understand page structure.
2395
2252
  *
2396
2253
  * @default 'img'
2397
2254
  *
2398
2255
  * @implementation The `img` role doesn't need to be applied if
2399
2256
  * the host applies it for you; for example, an HTML host rendering
2400
- * an `<img>` element should not apply the `img` role.
2257
+ * an `<img>` element shouldn't apply the `img` role.
2401
2258
  */
2402
2259
  accessibilityRole?:
2403
2260
  | 'img'
2404
2261
  | ExtractStrict<AccessibilityRole, 'presentation' | 'none'>;
2405
2262
  /**
2406
- * The displayed inline width of the image.
2263
+ * Controls the displayed width of the image. Choose based on your layout requirements. For mobile interfaces, consider using `'fill'` with defined container dimensions to ensure consistent image display, as dynamic container heights can cause layout inconsistencies in scrollable views.
2407
2264
  *
2408
- * - `fill`: the image will takes up 100% of the available inline size.
2409
- * - `auto`: the image will be displayed at its natural size.
2265
+ * - `'auto'` - Displays the image at its natural size. The image will not render until it has loaded, and the aspect ratio will be ignored. Use for images where maintaining original dimensions is important.
2266
+ * - `'fill'` - Makes the image take up 100% of the available inline size. The aspect ratio will be respected and the image will take the necessary space. Use for responsive layouts and flexible image containers.
2410
2267
  *
2411
2268
  * @default 'fill'
2412
- *
2413
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#width
2414
2269
  */
2415
2270
  inlineSize?: 'fill' | 'auto';
2416
2271
  /**
2417
- * The aspect ratio of the image.
2272
+ * The aspect ratio of the image, expressed as width divided by height.
2418
2273
  *
2419
2274
  * The rendering of the image will depend on the `inlineSize` value:
2420
2275
  *
2421
2276
  * - `inlineSize="fill"`: the aspect ratio will be respected and the image will take the necessary space.
2422
- * - `inlineSize="auto"`: the image will not render until it has loaded and the aspect ratio will be ignored.
2277
+ * - `inlineSize="auto"`: the image won't render until it has loaded and the aspect ratio will be ignored.
2423
2278
  *
2424
2279
  * For example, if the value is set as `50 / 100`, the getter returns `50 / 100`.
2425
2280
  * If the value is set as `0.5`, the getter returns `0.5 / 1`.
2426
2281
  *
2427
2282
  * @default '1/1'
2428
- *
2429
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio
2430
2283
  */
2431
2284
  aspectRatio?:
2432
2285
  | `${number}${optionalSpace}/${optionalSpace}${number}`
2433
2286
  | `${number}`;
2434
2287
  /**
2435
- * Determines how the content of the image is resized to fit its container.
2436
- * The image is positioned in the center of the container.
2288
+ * Controls how the image content is resized within its container.
2437
2289
  *
2438
- * @default 'contain'
2290
+ * - `'contain'` - Scales the image to fit within the container while maintaining aspect ratio. The entire image will be visible, but there may be empty space. Use when showing the complete image is important.
2291
+ * - `'cover'` - Scales the image to fill the entire container while maintaining aspect ratio. Parts of the image may be cropped. Use when filling the container completely is more important than showing the entire image.
2439
2292
  *
2440
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
2293
+ * @default 'contain'
2441
2294
  */
2442
2295
  objectFit?: 'contain' | 'cover';
2443
2296
  /**
2444
- * Determines the loading behavior of the image:
2445
- * - `eager`: Immediately loads the image, irrespective of its position within the visible viewport.
2446
- * - `lazy`: Delays loading the image until it approaches a specified distance from the viewport.
2297
+ * Controls when the browser should begin loading the image resource:
2298
+ * - `'eager'`: Loads the image immediately when the page loads, regardless of whether it's visible in the viewport. The image downloads in parallel with other page resources. Typically applied to above-the-fold images, critical product photos, or images that will definitely be viewed. This ensures images are ready when needed but increases initial page load bandwidth.
2299
+ * - `'lazy'`: Defers image loading until the image is approaching the viewport (typically a few hundred pixels before becoming visible). The browser only downloads the image when the user is likely to see it soon. Commonly applied to below-the-fold images, gallery images, or images in scrollable lists. This improves initial page load performance and saves bandwidth for images users may never scroll to. The browser maintains a buffer distance so images load before users reach them, preventing visible loading delays.
2300
+ *
2301
+ * Lazy loading is most effective for pages with many images, long scrollable content, or mobile users on limited bandwidth. Modern browsers support native lazy loading—older browsers ignore this and load eagerly. Learn more about [`loading` on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#loading).
2447
2302
  *
2448
2303
  * @default 'eager'
2449
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#loading
2450
2304
  */
2451
2305
  loading?: 'eager' | 'lazy';
2452
2306
  /**
2453
- * Invoked when load completes successfully.
2454
- *
2455
- * @see https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload
2307
+ * Called when the image finishes loading successfully and is ready to display. This fires after the browser has downloaded the image data and decoded it, but may fire before the image is actually painted to the screen. Common operations include hiding loading indicators, triggering dependent actions that require the image (like image processing), tracking image load metrics, or executing layout operations that depend on image dimensions. For performance tracking, timestamps between navigation start and this callback can be compared. Cached images may trigger this callback synchronously (immediately), so both async and sync invocation should be handled in code. This won't fire if the image fails to load—`onError` fires for failures. Learn more about [`onload` on MDN](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload).
2456
2308
  */
2457
2309
  onLoad?: (event: Event) => void;
2458
2310
  /**
2459
- * Invoked on load error.
2460
- *
2461
- * @see https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror
2311
+ * Called when the image fails to load due to network errors, invalid URLs, unsupported formats, [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) issues, or server errors (for example, 404, 500). The event contains limited error details for security reasons—the browser console provides specific failure reasons. Common operations include displaying fallback images (`event.target.src = 'fallback.jpg'`), showing error messages to users, logging failures for monitoring, hiding broken image icons, or providing alternative content when images are unavailable. A common pattern involves attempting to load a fallback image, and if that fails too, hiding the image container entirely. For critical images like product photos, a placeholder SVG or icon may be shown instead of a broken image indicator. This callback doesn't fire for images that are blocked by browser content policies or ad blockers. Learn more about [`onerror` on MDN](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror).
2462
2312
  */
2463
2313
  onError?: (event: Event) => void;
2464
2314
  }
2315
+ /**
2316
+ * Properties for modal overlay dialogs including size, padding, actions, and lifecycle callbacks.
2317
+ */
2465
2318
  export interface ModalProps
2466
2319
  extends GlobalProps,
2467
2320
  BaseOverlayProps,
2468
2321
  BaseOverlayMethods,
2469
2322
  ActionSlots {
2470
2323
  /**
2471
- * A label that describes the purpose of the modal. When set,
2472
- * it will be announced to users using assistive technologies and will
2473
- * provide them with more context.
2474
- *
2475
- * This overrides the `heading` prop for screen readers.
2324
+ * A text label that describes the purpose, function, or contents of the element for users of assistive technologies like screen readers. This label is announced by screen readers but isn't visually displayed. Typically applied when an element doesn't have visible text that adequately describes it, such as icon-only buttons, image carousels, or complex interactive regions. The label is concise yet descriptive (for example, "Close modal", "Product image carousel", "Shopping cart with 3 items"). If the element already has clear visible labels or headings, this property may be unnecessary. For form fields, the `label` property is both visible and accessible.
2476
2325
  */
2477
2326
  accessibilityLabel?: string;
2478
2327
  /**
2479
- * A title that describes the content of the Modal.
2480
- *
2328
+ * The title text displayed prominently in the modal's header section. This heading identifies the modal's purpose and provides context for the modal's content. When provided along with action buttons, creates a full modal header with title and actions. If both `heading` and actions (`primaryAction`/`secondaryActions`) are omitted, the modal renders without a header section entirely, starting directly with the modal content. The heading is automatically announced by screen readers when the modal opens. Clear, descriptive headings immediately communicate the modal's purpose (for example, "Confirm deletion", "Edit product details", "Select payment method").
2481
2329
  */
2482
2330
  heading?: string;
2483
2331
  /**
2484
- * Adjust the padding around the Modal content.
2485
- *
2486
- * `base`: applies padding that is appropriate for the element.
2487
- *
2488
- * `none`: removes all padding from the element. This can be useful when elements inside the Modal need to span
2489
- * to the edge of the Modal. For example, a full-width image. In this case, rely on `Box` with a padding of 'base'
2490
- * to bring back the desired padding for the rest of the content.
2332
+ * The padding applied to all edges of the modal content.
2491
2333
  *
2492
2334
  * @default 'base'
2493
2335
  */
2494
2336
  padding?: 'base' | 'none';
2495
2337
  /**
2496
- * Adjust the size of the Modal.
2497
- *
2498
- * `max`: expands the Modal to its maximum size as defined by the host application, on both the horizontal and vertical axes.
2338
+ * Controls the display size of the modal:
2339
+ * - Size keywords (for example, `'small'`, `'base'`, `'large'`): Fixed size options.
2340
+ * - `'max'`: Modal expands to fill the maximum available space.
2499
2341
  *
2500
2342
  * @default 'base'
2501
2343
  */
2502
2344
  size?: SizeKeyword | 'max';
2503
2345
  /**
2504
- * The content of the Modal.
2346
+ * The child elements to render within this component.
2505
2347
  */
2506
2348
  children?: ComponentChildren;
2507
2349
  }
2350
+ /**
2351
+ * Properties for numeric input fields with validation, constraints, and optional stepper controls.
2352
+ */
2508
2353
  export interface NumberFieldProps
2509
2354
  extends GlobalProps,
2510
2355
  BaseTextFieldProps,
@@ -2512,64 +2357,71 @@ export interface NumberFieldProps
2512
2357
  NumberConstraintsProps,
2513
2358
  FieldDecorationProps {
2514
2359
  /**
2515
- * Sets the virtual keyboard.
2360
+ * The virtual keyboard layout that the field displays for numeric input. This property isn't supported when using `stepper` controls.
2361
+ *
2362
+ * - `'decimal'` - A keyboard layout that includes decimal point support for entering fractional numbers, prices, or measurements with decimal precision.
2363
+ * - `'numeric'` - A keyboard layout optimized for integer-only entry without decimal point support, ideal for quantities, counts, or whole number values.
2516
2364
  *
2517
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode
2518
2365
  * @default 'decimal'
2519
2366
  */
2520
2367
  inputMode?: 'decimal' | 'numeric';
2521
2368
  }
2369
+ /**
2370
+ * Autocomplete field types applicable to number input fields.
2371
+ */
2522
2372
  export type NumberAutocompleteField = ExtractStrict<
2523
2373
  AnyAutocompleteField,
2524
2374
  'one-time-code' | 'cc-number' | 'cc-csc'
2525
2375
  >;
2376
+ /**
2377
+ * Properties for page-level layouts including header, breadcrumbs, actions, and sidebar content.
2378
+ */
2526
2379
  export interface PageProps extends GlobalProps, ActionSlots {
2527
2380
  /**
2528
- * The content of the Page.
2381
+ * The child elements to render within this component.
2529
2382
  */
2530
2383
  children?: ComponentChildren;
2531
2384
  /**
2532
- * The main page heading
2385
+ * The main title text displayed prominently in the page header's title area. This heading identifies the page's primary purpose and provides context for all page content. When provided along with action buttons or breadcrumbs, creates a complete page header with navigation and actions. If both `heading` and all header elements (`primaryAction`, `secondaryActions`, `breadcrumbActions`, `accessory`) are omitted, the page renders without a header section, starting directly with page content. The heading is typically the largest text on the page and helps users understand where they are in the application. Clear, descriptive headings identify the page's purpose (for example, "Product catalog", "Customer details", "Order #1234").
2533
2386
  */
2534
2387
  heading?: string;
2535
2388
  /**
2536
- * The text to be used as subtitle.
2389
+ * Secondary descriptive text displayed directly below the main heading in a smaller, subdued style. Provides additional context, status information, or supplementary details about the page without overwhelming the primary heading. Common content includes page descriptions ("Manage your product inventory"), status indicators ("Last updated 2 hours ago"), record counts ("145 products"), or contextual metadata. The subheading is optional and typically applied when additional context genuinely helps users understand the page. Brevity is important as it competes with the main heading for attention.
2537
2390
  */
2538
2391
  subheading?: string;
2539
2392
  /**
2540
- * Additional contextual information about the page.
2393
+ * Additional content displayed in the header area, typically action buttons or clickable text elements that complement the primary and secondary actions. Only `Button` and `Clickable` components with text content are supported in this slot. Elements must use the `slot="accessory"` attribute to be placed in this area. Commonly displays contextual actions like "View history", "Export data", or status indicators.
2541
2394
  */
2542
2395
  accessory?: ComponentChildren;
2543
2396
  /**
2544
- * The breadcrumb actions to perform, provided as link elements.
2397
+ * Navigation breadcrumb links displayed in the page header as a series of link elements showing the hierarchical path to the current page. Breadcrumbs help users understand their location within the app structure and provide quick navigation to parent pages (for example, "Home > Products > Electronics > Smartphones"). Each breadcrumb item is typically a clickable link except the current page, which may be displayed as plain text or a disabled link.
2545
2398
  */
2546
2399
  breadcrumbActions?: ComponentChildren;
2547
2400
  /**
2548
- * The aside element is section of a page that contains content that is tangentially related to the content around the aside element, and which could be considered separate from that content.
2549
- * Such sections are often represented as sidebars in printed typography.
2401
+ * The content to display in the page's sidebar area. This area contains content that is tangentially related to the main content, such as navigation menus, contextual help, related links, or supplementary information. Elements placed here must use the `slot="aside"` attribute. The sidebar content is visually separated from the main content and may be positioned differently depending on the layout (typically to the side of the main content).
2402
+ *
2550
2403
  * @implementation surfaces built ontop of the web platform should implement this using the <aside> element https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside
2551
2404
  */
2552
2405
  aside?: ComponentChildren;
2553
2406
  /**
2554
- * The inline size of the page
2555
- * - `base` corresponds to a set default inline size
2556
- * - `large` full width with whitespace
2407
+ * Controls the maximum width of the page content.
2557
2408
  *
2558
2409
  * @default 'base'
2559
2410
  */
2560
2411
  inlineSize?: SizeKeyword;
2561
2412
  }
2413
+ /**
2414
+ * Properties for POS-specific content blocks with optional heading and secondary actions.
2415
+ */
2562
2416
  export interface POSBlockProps
2563
2417
  extends GlobalProps,
2564
2418
  Pick<ActionSlots, 'secondaryActions'> {
2565
2419
  /**
2566
- * The heading to display within the POSBlock.
2567
- *
2568
- * If not provided, the description of the extension will be used when a heading is appropriate.
2420
+ * The title text displayed in the block's header section, identifying the purpose or content of this block. When provided along with `secondaryActions`, creates a block header with both title and action buttons. If both `heading` and `secondaryActions` are omitted, the block renders without a header, starting directly with the block's child content. Blocks are typically used to organize related content within a page into distinct, titled sections. Clear, descriptive headings identify the block's content type (for example, "Recent orders", "Quick actions", "Customer information").
2569
2421
  */
2570
2422
  heading?: string;
2571
2423
  /**
2572
- * The content to display within the POSBlock.
2424
+ * The child elements to render within this component.
2573
2425
  */
2574
2426
  children?: ComponentChildren;
2575
2427
  /**
@@ -2577,158 +2429,149 @@ export interface POSBlockProps
2577
2429
  */
2578
2430
  secondaryActions?: ComponentChildren;
2579
2431
  }
2432
+ /**
2433
+ * Properties for QR code elements including content, size, border, and optional logo.
2434
+ */
2580
2435
  export interface QRCodeProps extends GlobalProps {
2581
2436
  /**
2582
- * Set the border of the QR code.
2583
- *
2584
- * `base`: applies border that is appropriate for the element.
2585
- * `none`: removes the border from the element.
2437
+ * Controls whether a border is displayed around the QR code.
2586
2438
  *
2587
2439
  * @default 'base'
2588
2440
  */
2589
2441
  border?: 'base' | 'none';
2590
2442
  /**
2591
- * The content to be encoded in the QR code, which can be any string such as a URL, email address, plain text, etc.
2592
- * Specific string formatting can trigger actions on the user's device when scanned, like opening geolocation
2593
- * coordinates on a map, opening a preferred app or app store entry, preparing an email, text message, and more.
2443
+ * The content to be encoded in the QR code. This can be any string such as a URL, email address, plain text, or other data. Specific string formatting can trigger actions on the user's device when scanned, like opening geolocation coordinates on a map, opening a preferred app or app store entry, preparing an email, text message, and more.
2594
2444
  */
2595
2445
  content?: string;
2596
2446
  /**
2597
- * The displayed size of the QR code.
2598
- *
2599
- * `fill`: the QR code will takes up 100% of the available inline-size and maintain a 1:1 aspect ratio.
2600
- * `base`: the QR code will be displayed at its default size.
2447
+ * Controls the display size of the QR code:
2448
+ * - `'base'`: Fixed size QR code
2449
+ * - `'fill'`: QR code expands to fill available space
2601
2450
  *
2602
2451
  * @default 'base'
2603
2452
  */
2604
2453
  size?: 'base' | 'fill';
2605
2454
  /**
2606
- * A label that describes the purpose or contents of the QR code. When set,
2607
- * it will be announced to users using assistive technologies and will
2608
- * provide more context about what the QR code may do when scanned.
2455
+ * A label that describes the purpose or contents of the element. Announced to users with assistive technologies such as screen readers to provide context.
2609
2456
  *
2610
2457
  * @default 'QR code' (translated to the user's locale)
2611
2458
  */
2612
2459
  accessibilityLabel?: string;
2613
2460
  /**
2614
- * Invoked when the conversion of `content` to a QR code fails.
2615
- * If an error occurs, the QR code and its child elements will not be displayed.
2461
+ * Called when the resource fails to load.
2616
2462
  */
2617
2463
  onError?: (event: Event) => void;
2618
2464
  /**
2619
- * URL of an image to be displayed in the center of the QR code.
2465
+ * The URL of an image to be displayed in the center of the QR code.
2620
2466
  * This is useful for branding or to indicate to the user what scanning the QR code will do.
2621
2467
  * By default, no image is displayed.
2622
2468
  */
2623
2469
  logo?: string;
2624
2470
  }
2471
+ /**
2472
+ * Properties for scroll-related event callbacks and edge detection.
2473
+ */
2625
2474
  export interface ScrollEventProps {
2626
2475
  /**
2627
- * Callback when the scroll position reaches any edge.
2476
+ * Called when scrolling reaches or moves away from any edge of the scrollable container.
2628
2477
  *
2629
- * Provides information about which edges have been reached:
2630
- * - `inline: 'start'` - reached the inline-start edge
2631
- * - `inline: 'end'` - reached the inline-end edge
2632
- * - `block: 'start'` - reached the block-start edge
2633
- * - `block: 'end'` - reached the block-end edge
2478
+ * Provides information about which edges are currently reached:
2479
+ * - `inline: 'start'` - at the inline-start edge (typically left in LTR)
2480
+ * - `inline: 'end'` - at the inline-end edge (typically right in LTR)
2481
+ * - `block: 'start'` - at the block-start edge (typically top)
2482
+ * - `block: 'end'` - at the block-end edge (typically bottom)
2634
2483
  * - `null` - not at that edge
2635
- *
2636
- * Uses the flow‑relative axes.
2637
2484
  */
2638
2485
  onScrollToEdge?: (
2639
2486
  inline: 'start' | 'end' | null,
2640
2487
  block: 'start' | 'end' | null,
2641
2488
  ) => void;
2642
2489
  /**
2643
- * Distance from the edge at which `onScrollToEdge` fires.
2644
- * Percentage values are relative to the scrollable content's size in that axis.
2645
- *
2646
- * [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) is
2647
- * supported.
2648
- *
2649
- * The order is:
2490
+ * The threshold distance from each edge at which `onScrollToEdge` triggers. Percentage values are relative to the scrollable content's size in that axis. Supports [1-to-4-value syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties#edges_of_a_box) in the order:
2650
2491
  * - 4 values: `block-start inline-end block-end inline-start`
2651
2492
  * - 3 values: `block-start inline block-end`
2652
2493
  * - 2 values: `block inline`
2494
+ * - 1 value: applies to all edges
2653
2495
  *
2654
2496
  * For example:
2655
- * - `48px` means the distance from the edge at which `onScrollToEdge` fires from block-start, inline-end, block-end and inline-start is `48px`.
2656
- * - `48px 0` means the distance from the edge at which `onScrollToEdge` fires from block-start and block-end is `48px`, and for inline-start and inline-end is `0`.
2657
- * - `48 0 48` means the distance from the edge at which `onScrollToEdge` fires from block-start is `48px`, for inline-end is `0`, for block-end is `48px` and for inline-start is `0`.
2658
- * - `48px 0 48px 10%` means the distance from the edge at which `onScrollToEdge` fires from block-start is `48px`, for inline-end is `0`, for block-end is `48px` and for inline-start is `10%`.
2497
+ * - `48px` - triggers 48px from all edges
2498
+ * - `48px 0` - triggers 48px from block edges, 0px from inline edges
2499
+ * - `48px 0 48px 10%` - custom distance for each edge
2500
+ *
2501
+ * Learn more about [`scrollMargin` on MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/scrollMargin).
2659
2502
  *
2660
2503
  * @default '0'
2661
- * Refer to [MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/scrollMargin) for more details.
2662
2504
  */
2663
2505
  scrollMargin?: MaybeAllValuesShorthandProperty<SizeUnits>;
2664
2506
  }
2507
+ /**
2508
+ * An overflow behavior keyword.
2509
+ */
2665
2510
  export type OverflowKeyword = 'auto' | 'hidden';
2511
+ /**
2512
+ * Properties for scrollable container elements with overflow control and scroll event detection.
2513
+ */
2666
2514
  export interface ScrollBoxProps
2667
2515
  extends GlobalProps,
2668
2516
  ScrollEventProps,
2669
2517
  Omit<BaseBoxPropsWithRole, 'overflow'> {
2670
2518
  /**
2671
- * Sets the overflow behavior of the element.
2672
- *
2673
- * - `hidden`: clips the content when it is larger than the element’s container and the element will not be scrollable in that axis.
2674
- * - `auto`: clips the content when it is larger than the element’s container and make it scrollable in that axis.
2675
- *
2676
- * 1-to-2-value syntax is supported but note that, contrary to the CSS, it uses flow-relative values and the order is:
2677
- *
2678
- * - 2 values: `block inline`
2519
+ * Sets overflow behavior when content exceeds container dimensions. Use `'auto'` for scrolling or `'hidden'` to clip content. Learn more about [CSS overflow on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow).
2679
2520
  *
2680
2521
  * @default 'auto'
2681
- *
2682
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/overflow
2683
2522
  */
2684
2523
  overflow?: OverflowKeyword | `${OverflowKeyword} ${OverflowKeyword}`;
2685
2524
  }
2525
+ /**
2526
+ * Properties for search input fields with text validation and autocomplete support.
2527
+ */
2686
2528
  export interface SearchFieldProps
2687
2529
  extends GlobalProps,
2688
2530
  BaseTextFieldProps,
2689
2531
  MinMaxLengthProps,
2690
2532
  AutocompleteProps<SearchAutocompleteField> {}
2533
+ /**
2534
+ * Autocomplete field types applicable to search input fields (same as text fields).
2535
+ */
2691
2536
  export type SearchAutocompleteField = TextAutocompleteField;
2537
+ /**
2538
+ * Properties for content sections with optional heading and actions.
2539
+ */
2692
2540
  export interface SectionProps extends GlobalProps, ActionSlots {
2693
2541
  /**
2694
- * The content of the Section.
2542
+ * The child elements to render within this component.
2695
2543
  */
2696
2544
  children?: ComponentChildren;
2697
2545
  /**
2698
- * A label used to describe the section that will be announced by assistive technologies.
2699
- *
2700
- * When no `heading` property is provided or included as a children of the Section, you **must** provide an
2701
- * `accessibilityLabel` to describe the Section. This is important as it allows assistive technologies to provide
2702
- * the right context to users.
2546
+ * A text label that describes the purpose, function, or contents of the element for users of assistive technologies like screen readers. This label is announced by screen readers but isn't visually displayed. Typically applied when an element doesn't have visible text that adequately describes it, such as icon-only buttons, image carousels, or complex interactive regions. The label is concise yet descriptive (for example, "Close modal", "Product image carousel", "Shopping cart with 3 items"). If the element already has clear visible labels or headings, this property may be unnecessary. For form fields, the `label` property is both visible and accessible.
2703
2547
  */
2704
2548
  accessibilityLabel?: string;
2705
2549
  /**
2706
- * A title that describes the content of the section.
2550
+ * The title text displayed in the section's header, identifying the thematic grouping or purpose of the section's content. Sections represent thematic groups of content, and the heading helps users understand what the section contains. When provided along with action buttons, creates a section header with both title and actions. If both `heading` and `secondaryActions` are omitted, the section renders without a header, though sections generally have headings for accessibility—screen readers rely on headings to help users navigate page structure. Descriptive headings clearly identify the section's content (for example, "Order summary", "Shipping details", "Payment options").
2707
2551
  */
2708
2552
  heading?: string;
2709
2553
  /**
2710
- * Adjust the padding of all edges.
2711
- *
2712
- * - `base`: applies padding that is appropriate for the element. Note that it may result in no padding if
2713
- * this is the right design decision in a particular context.
2714
- * - `none`: removes all padding from the element. This can be useful when elements inside the Section need to span
2715
- * to the edge of the Section. For example, a full-width image. In this case, rely on `s-box` with a padding of 'base'
2716
- * to bring back the desired padding for the rest of the content.
2554
+ * The padding applied to all edges of the section content.
2717
2555
  *
2718
2556
  * @default 'base'
2719
2557
  */
2720
2558
  padding?: 'base' | 'none';
2721
2559
  }
2560
+ /**
2561
+ * Properties for flexible layout containers with directional flow and alignment control.
2562
+ */
2722
2563
  export interface StackProps
2723
2564
  extends GlobalProps,
2724
2565
  BaseBoxPropsWithRole,
2725
2566
  GapProps {
2726
2567
  /**
2727
- * The content of the Stack.
2568
+ * The child elements to render within this component.
2728
2569
  */
2729
2570
  children?: ComponentChildren;
2730
2571
  /**
2731
- * Sets how the children are placed within the Stack. This uses [logical properties](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values).
2572
+ * The direction in which children are laid out using logical properties:
2573
+ * - `'block'`: Vertical arrangement along the block axis (typically top to bottom) without wrapping
2574
+ * - `'inline'`: Horizontal arrangement along the inline axis (typically left to right) with automatic wrapping when space is insufficient
2732
2575
  *
2733
2576
  * @default 'block'
2734
2577
  *
@@ -2736,27 +2579,27 @@ export interface StackProps
2736
2579
  */
2737
2580
  direction?: MaybeResponsive<'block' | 'inline'>;
2738
2581
  /**
2739
- * Aligns the Stack along the main axis.
2582
+ * Controls the distribution and alignment of children along the main axis (the axis defined by the `direction` property). Learn more about [`justify-content` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content).
2740
2583
  *
2741
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content
2742
2584
  * @default 'normal'
2743
2585
  */
2744
2586
  justifyContent?: MaybeResponsive<JustifyContentKeyword>;
2745
2587
  /**
2746
- * Aligns the Stack's children along the cross axis.
2588
+ * Controls the alignment of individual children along the cross axis (perpendicular to the main axis). Learn more about [`align-items` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items).
2747
2589
  *
2748
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
2749
2590
  * @default 'normal'
2750
2591
  */
2751
2592
  alignItems?: MaybeResponsive<AlignItemsKeyword>;
2752
2593
  /**
2753
- * Aligns the Stack along the cross axis.
2594
+ * Controls the distribution of space between and around lines of wrapped content along the cross axis. Learn more about [`align-content` on MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-content).
2754
2595
  *
2755
- * @see https://developer.mozilla.org/en-US/docs/Web/CSS/align-content
2756
2596
  * @default 'normal'
2757
2597
  */
2758
2598
  alignContent?: MaybeResponsive<AlignContentKeyword>;
2759
2599
  }
2600
+ /**
2601
+ * Properties for inline text elements with semantic meaning and styling options.
2602
+ */
2760
2603
  export interface TextProps
2761
2604
  extends GlobalProps,
2762
2605
  AccessibilityVisibilityProps,
@@ -2764,13 +2607,11 @@ export interface TextProps
2764
2607
  DisplayProps,
2765
2608
  Pick<InteractionProps, 'interestFor'> {
2766
2609
  /**
2767
- * The content of the Text.
2610
+ * The child elements to render within this component.
2768
2611
  */
2769
2612
  children?: ComponentChildren;
2770
2613
  /**
2771
- * Provide semantic meaning and default styling to the text.
2772
- *
2773
- * Other presentation properties on Text override the default styling.
2614
+ * The semantic meaning of the text, which may affect its default styling and how screen readers announce it. Other presentation properties can override the default styling.
2774
2615
  *
2775
2616
  * @default 'generic'
2776
2617
  */
@@ -2778,225 +2619,178 @@ export interface TextProps
2778
2619
  }
2779
2620
  export type TextType =
2780
2621
  /**
2781
- * Indicate the text is contact information. Typically used for addresses.
2622
+ * Indicates that the text is contact information. Typically used for addresses.
2782
2623
  *
2783
2624
  * This must have `inline` layout (despite the default being `block` in HTML hosts).
2784
2625
  *
2785
2626
  * Surfaces may apply styling to this type.
2786
2627
  *
2787
- * In an HTML host, the text will be rendered in an `<address>` element.
2628
+ * In an HTML host, the text will be rendered in an `<address>` element. Learn more about the [`address` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address).
2788
2629
  *
2789
2630
  * @implementation vertical alignment should be `baseline` (`vertical-align: baseline`)
2790
- *
2791
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address
2792
2631
  */
2793
2632
  | 'address'
2794
2633
  /**
2795
- * Indicate the text is no longer accurate or no longer relevant. One such use-case is discounted prices.
2634
+ * Indicates that the text is no longer accurate or no longer relevant. One such use-case is discounted prices.
2796
2635
  *
2797
2636
  * Surfaces should apply styling to this type to suggest its content no longer applies.
2798
2637
  *
2799
- * In an HTML host, the text will be rendered in a `<s>` element.
2800
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s
2638
+ * In an HTML host, the text will be rendered in a `<s>` element. Learn more about the [`s` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s).
2801
2639
  */
2802
2640
  | 'redundant'
2803
2641
  /**
2804
- * Indicate the text is marked or highlighted and relevant to the users current action.
2642
+ * Indicates that the text is marked or highlighted and relevant to the user's current action.
2805
2643
  * One such use-case is to indicate the characters that matched a search query.
2806
2644
  *
2807
2645
  * Surfaces should apply styling to this type to draw attention to the content.
2808
2646
  *
2809
- * In an HTML host, the text will be rendered in a `<mark>` element.
2810
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark
2647
+ * In an HTML host, the text will be rendered in a `<mark>` element. Learn more about the [`mark` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark).
2811
2648
  */
2812
2649
  | 'mark'
2813
2650
  /**
2814
- * Indicate emphatic stress. Typically for words that have a stressed emphasis compared to surrounding text.
2651
+ * Indicates emphatic stress. Typically for words that have a stressed emphasis compared to surrounding text.
2815
2652
  *
2816
2653
  * Surfaces should apply styling to this type to distinguish it from surrounding text. Italicization is a common choice, but not required.
2817
2654
  *
2818
- * In an HTML host, the text will be rendered in an `<em>` element.
2819
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em
2655
+ * In an HTML host, the text will be rendered in an `<em>` element. Learn more about the [`em` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em).
2820
2656
  */
2821
2657
  | 'emphasis'
2822
2658
  /**
2823
- * Indicate an offset from the normal prose of the text. Typically used to indicate
2659
+ * Indicates an offset from the normal prose of the text. Typically used to indicate
2824
2660
  * a foreign word, fictional character thoughts, or when the text refers to the definition of a word
2825
2661
  * instead of representing its semantic meaning.
2826
2662
  *
2827
2663
  * Surfaces should italicize this content by default.
2828
2664
  *
2829
- * In an HTML host, the text will be rendered in a `<i>` tag.
2830
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i
2665
+ * In an HTML host, the text will be rendered in a `<i>` tag. Learn more about the [`i` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i).
2831
2666
  */
2832
2667
  | 'offset'
2833
2668
  /**
2834
- * Indicate strong importance, seriousness, or urgency.
2669
+ * Indicates strong importance, seriousness, or urgency.
2835
2670
  *
2836
2671
  * Surfaces should render this content bold by default.
2837
2672
  *
2838
- * In an HTML host, the text will be rendered in a `<strong>` tag.
2839
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong
2673
+ * In an HTML host, the text will be rendered in a `<strong>` tag. Learn more about the [`strong` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong).
2840
2674
  */
2841
2675
  | 'strong'
2842
2676
  /**
2843
- * Indicates the text is considered less important than the main content, but is still necessary for the reader to understand.
2677
+ * Indicates that the text is considered less important than the main content, but is still necessary for the reader to understand.
2844
2678
  * It can be used for secondary content but also for disclaimers, terms and conditions, or legal information.
2845
2679
  *
2846
2680
  * Surfaces should apply a smaller font size than the default size.
2847
2681
  *
2848
- * In an HTML host, the text will be rendered in a `<small>` element.
2849
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small
2682
+ * In an HTML host, the text will be rendered in a `<small>` element. Learn more about the [`small` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small).
2850
2683
  */
2851
2684
  | 'small'
2852
2685
  /**
2853
- * No additional semantics or styling is applied.
2686
+ * Indicates that no additional semantics or styling is applied.
2854
2687
  *
2855
2688
  * Surfaces must not apply any default styling to this type.
2856
2689
  *
2857
- * In an HTML host, the text will be rendered in a `<span>` tag.
2858
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span
2690
+ * In an HTML host, the text will be rendered in a `<span>` tag. Learn more about the [`span` element on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span).
2859
2691
  */
2860
2692
  | 'generic';
2693
+ /**
2694
+ * Properties for multi-line text input areas with character length constraints and autocomplete support.
2695
+ */
2861
2696
  export interface TextAreaProps
2862
2697
  extends GlobalProps,
2863
2698
  BaseTextFieldProps,
2864
2699
  MinMaxLengthProps,
2865
2700
  AutocompleteProps<TextAutocompleteField> {
2866
2701
  /**
2867
- * A number of visible text lines.
2702
+ * The number of visible text lines that determines the initial height of the text area. Each row represents one line of text at the current font size. When users enter more content than fits in the specified rows, the text area becomes scrollable vertically, allowing access to overflow content. The text area doesn't auto-expand beyond this height. For example, `rows={3}` displays three lines of text at once. Use smaller values (2-3) for brief inputs like comments or notes, larger values (5-10) for substantial text entry like descriptions or feedback. This only sets initial height—users can resize the text area if the browser/surface allows it. The actual pixel height depends on font size and line height.
2868
2703
  *
2869
2704
  * @default 2
2870
2705
  */
2871
2706
  rows?: number;
2872
2707
  }
2708
+ /**
2709
+ * Properties for single-line text input fields with decorations, constraints, and autocomplete support.
2710
+ */
2873
2711
  export interface TextFieldProps
2874
2712
  extends GlobalProps,
2875
2713
  BaseTextFieldProps,
2876
2714
  MinMaxLengthProps,
2877
2715
  AutocompleteProps<TextAutocompleteField>,
2878
2716
  FieldDecorationProps {}
2717
+ /**
2718
+ * Properties for clickable tile elements with heading, subheading, and optional count indicator.
2719
+ */
2879
2720
  export interface TileProps
2880
2721
  extends GlobalProps,
2881
2722
  Pick<BaseClickableProps, 'onClick' | 'disabled'> {
2882
2723
  /**
2883
- * A title that describes the content of the Tile.
2724
+ * The primary title text that describes the tile's purpose or action. Clear, action-oriented language immediately communicates what the tile does (for example, "Apply loyalty discount", "Add popular item").
2884
2725
  *
2885
2726
  * @default ''
2886
2727
  */
2887
2728
  heading?: string;
2888
2729
  /**
2889
- * Supporting text displayed below the heading.
2730
+ * Supporting text displayed below the heading that provides additional context or dynamic information. Common content includes cart totals, eligibility requirements, current status, or helpful details that complement the heading.
2890
2731
  *
2891
2732
  * @default ''
2892
2733
  */
2893
2734
  subheading?: string;
2894
2735
  /**
2895
- * A numeric indicator rendered within the Tile (for example, a count or a step number).
2896
- *
2897
- * - When provided, the indicator is displayed inside the tile.
2898
- * - Intended for small integers. It may clamp, truncate, or abbreviate larger values.
2899
- *
2736
+ * A numeric indicator displayed within the tile, typically used for counts, notifications, or step numbers. When provided, the indicator appears inside the tile. Intended for small integers—larger values may be clamped, truncated, or abbreviated by the system.
2900
2737
  */
2901
2738
  itemCount?: number;
2902
2739
  /**
2903
- * Sets the tone of the Tile, based on the intention of the information being conveyed.
2740
+ * Sets the visual tone of the tile based on the intention of the information being conveyed. Use `'accent'` to highlight important or primary actions, `'neutral'` for standard actions, or `'auto'` (default) to let the system determine the appropriate tone based on context.
2741
+ *
2904
2742
  * @default 'auto'
2905
2743
  */
2906
2744
  tone?: ExtractStrict<ToneKeyword, 'auto' | 'neutral' | 'accent'>;
2907
2745
  }
2746
+ /**
2747
+ * Properties for an interactive time picker component with allow/disallow time ranges.
2748
+ */
2908
2749
  export interface TimePickerProps
2909
2750
  extends GlobalProps,
2910
2751
  InputProps,
2911
2752
  FocusEventProps {
2912
2753
  /**
2913
- * Times that can be selected.
2914
- *
2915
- * A comma-separated list of allowed time ranges. Whitespace is allowed after commas.
2916
- *
2917
- * The default `''` allows all times.
2918
- *
2919
- * Each time range is in `HH:MM--HH:MM` format.
2920
- *
2921
- * The end of the range is exclusive, so `09:00--10:00` allows selecting `09:00` but not `10:00`.
2922
- *
2923
- * Either side of `--` can be omitted to create an unbounded range.
2924
- *
2925
- * Whitespace is allowed either side of `--`.
2754
+ * Specifies allowed time values or ranges for selection. Uses 24-hour format (HH:mm or HH:mm:ss). Supports range syntax with `--` separator and comma-separated values.
2926
2755
  *
2927
2756
  * @default ''
2928
2757
  *
2929
2758
  * @example
2930
- * `09:00--10:00, 13:00--14:00` - assuming the step is 1 hour, this allows selecting `09:00` or `13:00`.
2931
- * `12:00--` - allows selecting `12:00` and all times after it.
2759
+ * `09:00--10:00, 13:00--14:00` - allows selecting times within these ranges based on step value
2760
+ * `12:00--` - allows selecting `12:00` and all times after it
2932
2761
  */
2933
2762
  allow?: string;
2934
2763
  /**
2935
- * Times that cannot be selected. This subtracts from `allow`.
2936
- *
2937
- * A comma-separated list of allowed time ranges. Whitespace is allowed after commas.
2938
- *
2939
- * The default `''` has no effect on `allow`.
2940
- *
2941
- * Each time range is in `HH:MM--HH:MM` format.
2942
- *
2943
- * The end of the range is exclusive, so `09:00--10:00` disallows selecting `09:00` but not `10:00`.
2944
- *
2945
- * Either side of `--` can be omitted to create an unbounded range.
2946
- *
2947
- * Whitespace is allowed either side of `--`.
2764
+ * Specifies disallowed time values or ranges that can't be selected. Uses 24-hour format (HH:mm or HH:mm:ss). Supports range syntax with `--` separator and comma-separated values. Takes precedence over `allow`.
2948
2765
  *
2949
2766
  * @default ''
2950
2767
  *
2951
2768
  * @example
2952
- * `09:00--10:00, 13:00--14:00` - assuming the step is 1 hour, this disallows selecting `09:00` or `13:00`.
2769
+ * `09:00--10:00, 13:00--14:00` - disallows selecting times within these ranges
2953
2770
  */
2954
2771
  disallow?: string;
2955
2772
  /**
2956
- * Default selected value.
2957
- *
2958
- * The default, `''`, means no time is selected.
2959
- *
2960
- * The value must be a 24-hour time in `HH:mm:ss` format, with leading zeros.
2961
- *
2962
- * Examples: `"00:00:00"`, `"09:05:00"`, `"23:59:00"`, `"14:03:30"`.
2963
- *
2964
- * This follows the HTML time input value format, which is always 24-hour with
2965
- * leading zeros regardless of UI presentation.
2966
- *
2967
- * See: https://developer.mozilla.org/docs/Web/HTML/Element/input/time
2968
- *
2969
- * If the provided value is invalid, '' is used as the value.
2773
+ * The default time value used when the field is first rendered, in 24-hour format with leading zeros (HH:mm:ss format, for example, `"09:05:00"`). An empty string means no default time. Only applies if no `value` prop is provided.
2970
2774
  *
2971
2775
  * @default ''
2972
2776
  */
2973
2777
  defaultValue?: string;
2974
2778
  /**
2975
- * Current selected value.
2976
- *
2977
- * The default, `''`, means no time is selected.
2978
- *
2979
- * The value must be a 24-hour time in `HH:mm:ss` format, with leading zeros.
2980
- *
2981
- * Examples: `"00:00:00"`, `"09:05:00"`, `"23:59:00"`, `"14:03:30"`.
2982
- *
2983
- * This follows the HTML time input value format, which is always 24-hour with
2984
- * leading zeros regardless of UI presentation.
2985
- *
2986
- * See: https://developer.mozilla.org/docs/Web/HTML/Element/input/time
2987
- *
2988
- * If the provided value is invalid, '' is used as the value.
2779
+ * The currently selected time value in 24-hour format with leading zeros (HH:mm:ss format, for example, `"00:00:00"`, `"09:05:00"`, `"23:59:00"`, `"14:03:30"`). An empty string means no time is selected. This follows the [HTML time input value format](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time#value).
2989
2780
  *
2990
2781
  * @default ''
2991
2782
  */
2992
2783
  value?: string;
2993
2784
  /**
2994
- * The step between selectable times, in seconds.
2785
+ * The increment step between selectable time values, specified in seconds. For example, `60` for one-minute intervals or `3600` for one-hour intervals.
2995
2786
  *
2996
2787
  * @default 60
2997
2788
  */
2998
2789
  step?: number;
2999
2790
  }
2791
+ /**
2792
+ * Properties for a text-based time input field with validation and time range constraints.
2793
+ */
3000
2794
  export interface TimeFieldProps
3001
2795
  extends GlobalProps,
3002
2796
  BaseTextFieldProps,
@@ -3005,49 +2799,15 @@ export interface TimeFieldProps
3005
2799
  'value' | 'defaultValue' | 'allow' | 'disallow' | 'step'
3006
2800
  > {
3007
2801
  /**
3008
- * Callback when the field has an invalid time.
3009
- * This callback will be called, if the time typed is invalid or disabled.
3010
- *
3011
- * Times that don’t exist or have formatting errors are considered invalid. Some examples of invalid times are:
3012
- * - 24:00
3013
- * - 12:60
3014
- *
3015
- * Disallowed times are considered invalid.
3016
- *
3017
- * It’s important to note that this callback will be called only when the user **finishes editing** the time,
3018
- * and it’s called right after the `onChange` callback.
3019
- * The field is **not** validated on every change to the input. Once the buyer has signalled that
3020
- * they have finished editing the field (typically, by blurring the field), the field gets validated and the callback is run if the value is invalid.
2802
+ * Called when the user enters an invalid value. Fires after change validation fails.
3021
2803
  */
3022
2804
  onInvalid?: (event: Event) => void;
3023
2805
  /**
3024
- * Current selected value.
3025
- *
3026
- * The default, `''`, means no time is selected.
3027
- *
3028
- * The value must be a 24-hour time in `HH:mm:ss` format, with leading zeros.
3029
- *
3030
- * Examples: `"00:00:00"`, `"09:05:00"`, `"23:59:00"`, `"14:03:30"`.
3031
- *
3032
- * This follows the HTML time input value format, which is always 24-hour with
3033
- * leading zeros regardless of UI presentation.
3034
- *
3035
- * See: https://developer.mozilla.org/docs/Web/HTML/Element/input/time
2806
+ * The currently selected time value in 24-hour format with leading zeros (HH:mm:ss format, for example, `"00:00:00"`, `"09:05:00"`, `"23:59:00"`, `"14:03:30"`). An empty string means no time is selected.
3036
2807
  */
3037
2808
  value?: string;
3038
2809
  /**
3039
- * Default selected value.
3040
- *
3041
- * The default, `''`, means no time is selected.
3042
- *
3043
- * The value must be a 24-hour time in `HH:mm:ss` format, with leading zeros.
3044
- *
3045
- * Examples: `"00:00:00"`, `"09:05:00"`, `"23:59:00"`, `"14:03:30"`.
3046
- *
3047
- * This follows the HTML time input value format, which is always 24-hour with
3048
- * leading zeros regardless of UI presentation.
3049
- *
3050
- * See: https://developer.mozilla.org/docs/Web/HTML/Element/input/time
2810
+ * The default time value used when the field is first rendered, in 24-hour format with leading zeros (HH:mm:ss format, for example, `"09:05:00"`). An empty string means no default time. Only applies if no `value` prop is provided.
3051
2811
  */
3052
2812
  defaultValue?: string;
3053
2813
  }
@@ -3061,7 +2821,7 @@ export interface VNode<P = {}> {
3061
2821
  };
3062
2822
  key: Key;
3063
2823
  /**
3064
- * ref is not guaranteed by React.ReactElement, for compatibility reasons
2824
+ * ref isn't guaranteed by React.ReactElement, for compatibility reasons
3065
2825
  * with popular react libs we define it as optional too
3066
2826
  */
3067
2827
  ref?: Ref<any> | null;
@@ -3157,9 +2917,9 @@ declare abstract class Component<P, S> {
3157
2917
  static displayName?: string;
3158
2918
  static defaultProps?: any;
3159
2919
  static contextType?: Context<any>;
3160
- // Static members cannot reference class type parameters. This is not
2920
+ // Static members can't reference class type parameters. This isn't
3161
2921
  // supported in TypeScript. Reusing the same type arguments from `Component`
3162
- // will lead to an impossible state where one cannot satisfy the type
2922
+ // will lead to an impossible state where one can't satisfy the type
3163
2923
  // constraint under no circumstances, see #1356.In general type arguments
3164
2924
  // seem to be a bit buggy and not supported well at the time of this
3165
2925
  // writing with TS 3.3.3333.