@shopify/ui-extensions 2025.10.8 → 2025.10.9
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.
- package/build/cjs/surfaces/point-of-sale/types/storage.js +3 -0
- package/build/esm/surfaces/point-of-sale/types/storage.mjs +3 -0
- package/build/esnext/surfaces/point-of-sale/types/storage.esnext +3 -0
- package/build/ts/shared.d.ts +7 -7
- package/build/ts/shared.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Avatar/Avatar.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Badge/Badge.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Banner/Banner.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Box/Box.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Button/Button.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/ButtonGroup/ButtonGroup.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Checkbox/Checkbox.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Chip/Chip.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/ChoiceList/ChoiceList.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/ClickableChip/ClickableChip.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/ColorField/ColorField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/ColorPicker/ColorPicker.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/DateField/DateField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/DatePicker/DatePicker.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/DropZone/{DropZone.ab.doc.d.ts → DropZone.doc.d.ts} +1 -1
- package/build/ts/surfaces/admin/components/DropZone/DropZone.doc.d.ts.map +1 -0
- package/build/ts/surfaces/admin/components/Grid/Grid.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Icon/Icon.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Image/Image.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Link/Link.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Menu/Menu.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Modal/Modal.ab.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/OrderedList/OrderedList.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Page/Page.ab.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Popover/Popover.ab.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/SearchField/SearchField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Spinner/Spinner.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Stack/Stack.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Table/Table.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Text/Text.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Thumbnail/Thumbnail.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/Tooltip/Tooltip.doc.d.ts.map +1 -1
- package/build/ts/surfaces/admin/components/UnorderedList/UnorderedList.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/action-api/action-api.d.ts +3 -5
- package/build/ts/surfaces/point-of-sale/api/action-api/action-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/cart-api/cart-api.d.ts +38 -33
- package/build/ts/surfaces/point-of-sale/api/cart-api/cart-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/cart-line-item-api/cart-line-item-api.d.ts +2 -2
- package/build/ts/surfaces/point-of-sale/api/connectivity-api/connectivity-api.d.ts +6 -4
- package/build/ts/surfaces/point-of-sale/api/connectivity-api/connectivity-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/customer-api/customer-api.d.ts +4 -1
- package/build/ts/surfaces/point-of-sale/api/customer-api/customer-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/device-api/device-api.d.ts +4 -4
- package/build/ts/surfaces/point-of-sale/api/draft-order-api/draft-order-api.d.ts +6 -3
- package/build/ts/surfaces/point-of-sale/api/draft-order-api/draft-order-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/locale-api/locale-api.d.ts +2 -3
- package/build/ts/surfaces/point-of-sale/api/locale-api/locale-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/navigation-api/navigation-api.d.ts +17 -9
- package/build/ts/surfaces/point-of-sale/api/navigation-api/navigation-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/order-api/order-api.d.ts +5 -5
- package/build/ts/surfaces/point-of-sale/api/pin-pad-api.d.ts +6 -10
- package/build/ts/surfaces/point-of-sale/api/pin-pad-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/print-api/print-api.d.ts +10 -11
- package/build/ts/surfaces/point-of-sale/api/print-api/print-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/product-api/product-api.d.ts +5 -2
- package/build/ts/surfaces/point-of-sale/api/product-api/product-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/product-search-api/product-search-api.d.ts +24 -10
- package/build/ts/surfaces/point-of-sale/api/product-search-api/product-search-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/scanner-api/scanner-api.d.ts +26 -8
- package/build/ts/surfaces/point-of-sale/api/scanner-api/scanner-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/session-api/session-api.d.ts +3 -6
- package/build/ts/surfaces/point-of-sale/api/session-api/session-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/storage-api/storage-api.d.ts +3 -0
- package/build/ts/surfaces/point-of-sale/api/storage-api/storage-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/api/toast-api/toast-api.d.ts +11 -1
- package/build/ts/surfaces/point-of-sale/api/toast-api/toast-api.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Badge/Badge.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Badge.d.ts +23 -4
- package/build/ts/surfaces/point-of-sale/components/Banner/Banner.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Banner.d.ts +24 -6
- package/build/ts/surfaces/point-of-sale/components/Box/Box.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Box.d.ts +34 -37
- package/build/ts/surfaces/point-of-sale/components/Button/Button.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Button.d.ts +56 -16
- package/build/ts/surfaces/point-of-sale/components/Choice.d.ts +14 -2
- package/build/ts/surfaces/point-of-sale/components/ChoiceList/ChoiceList.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/ChoiceList.d.ts +41 -5
- package/build/ts/surfaces/point-of-sale/components/Clickable/Clickable.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Clickable.d.ts +40 -4
- package/build/ts/surfaces/point-of-sale/components/DateField/DateField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/DateField.d.ts +42 -6
- package/build/ts/surfaces/point-of-sale/components/DatePicker/DatePicker.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/DatePicker.d.ts +42 -6
- package/build/ts/surfaces/point-of-sale/components/DateSpinner/DateSpinner.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/DateSpinner.d.ts +42 -6
- package/build/ts/surfaces/point-of-sale/components/Divider/Divider.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Divider.d.ts +14 -2
- package/build/ts/surfaces/point-of-sale/components/EmailField/EmailField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/EmailField.d.ts +43 -7
- package/build/ts/surfaces/point-of-sale/components/Heading/Heading.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Heading.d.ts +15 -3
- package/build/ts/surfaces/point-of-sale/components/Icon/Icon.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Icon.d.ts +17 -2
- package/build/ts/surfaces/point-of-sale/components/Image/Image.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Image.d.ts +6 -3
- package/build/ts/surfaces/point-of-sale/components/Modal/Modal.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Modal.d.ts +43 -11
- package/build/ts/surfaces/point-of-sale/components/NumberField/NumberField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/NumberField.d.ts +56 -41
- package/build/ts/surfaces/point-of-sale/components/Page/Page.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Page.d.ts +19 -7
- package/build/ts/surfaces/point-of-sale/components/PosBlock/PosBlock.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/PosBlock.d.ts +16 -4
- package/build/ts/surfaces/point-of-sale/components/QrCode.d.ts +14 -2
- package/build/ts/surfaces/point-of-sale/components/ScrollBox/ScrollBox.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/ScrollBox.d.ts +33 -36
- package/build/ts/surfaces/point-of-sale/components/SearchField/SearchField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/SearchField.d.ts +42 -6
- package/build/ts/surfaces/point-of-sale/components/Section/Section.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Section.d.ts +17 -7
- package/build/ts/surfaces/point-of-sale/components/Stack/Stack.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Stack.d.ts +47 -61
- package/build/ts/surfaces/point-of-sale/components/Text/Text.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Text.d.ts +28 -6
- package/build/ts/surfaces/point-of-sale/components/TextArea/TextArea.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/TextArea.d.ts +43 -7
- package/build/ts/surfaces/point-of-sale/components/TextField/TextField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/TextField.d.ts +43 -7
- package/build/ts/surfaces/point-of-sale/components/Tile/Tile.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/Tile.d.ts +40 -4
- package/build/ts/surfaces/point-of-sale/components/TimeField/TimeField.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/TimeField.d.ts +42 -6
- package/build/ts/surfaces/point-of-sale/components/TimePicker/TimePicker.doc.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/components/TimePicker.d.ts +42 -6
- package/build/ts/surfaces/point-of-sale/components/components-shared.d.ts +638 -878
- package/build/ts/surfaces/point-of-sale/components/targets/StandardComponents.d.ts +1 -1
- package/build/ts/surfaces/point-of-sale/components/targets/StandardComponents.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/BaseApi.d.ts +3 -0
- package/build/ts/surfaces/point-of-sale/event/data/BaseApi.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/BaseData.d.ts +15 -0
- package/build/ts/surfaces/point-of-sale/event/data/BaseData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/CartUpdateEventData.d.ts +6 -0
- package/build/ts/surfaces/point-of-sale/event/data/CartUpdateEventData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/CashTrackingSessionData.d.ts +27 -0
- package/build/ts/surfaces/point-of-sale/event/data/CashTrackingSessionData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/ExchangeTransactionData.d.ts +18 -0
- package/build/ts/surfaces/point-of-sale/event/data/ExchangeTransactionData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/ReprintReceiptData.d.ts +9 -0
- package/build/ts/surfaces/point-of-sale/event/data/ReprintReceiptData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/ReturnTransactionData.d.ts +18 -0
- package/build/ts/surfaces/point-of-sale/event/data/ReturnTransactionData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/SaleTransactionData.d.ts +12 -0
- package/build/ts/surfaces/point-of-sale/event/data/SaleTransactionData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/data/TransactionCompleteData.d.ts +27 -0
- package/build/ts/surfaces/point-of-sale/event/data/TransactionCompleteData.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/event/output/BaseOutput.d.ts +17 -0
- package/build/ts/surfaces/point-of-sale/event/output/BaseOutput.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/extension-targets.d.ts +135 -0
- package/build/ts/surfaces/point-of-sale/extension-targets.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/base-transaction-complete.d.ts +43 -0
- package/build/ts/surfaces/point-of-sale/types/base-transaction-complete.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/cart.d.ts +227 -31
- package/build/ts/surfaces/point-of-sale/types/cart.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/country-code.d.ts +3 -0
- package/build/ts/surfaces/point-of-sale/types/country-code.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/device.d.ts +6 -3
- package/build/ts/surfaces/point-of-sale/types/device.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/direct-api-request-body.d.ts +3 -3
- package/build/ts/surfaces/point-of-sale/types/discount-allocation.d.ts +6 -0
- package/build/ts/surfaces/point-of-sale/types/discount-allocation.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/money.d.ts +18 -0
- package/build/ts/surfaces/point-of-sale/types/money.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/multiple-resource-result.d.ts +1 -2
- package/build/ts/surfaces/point-of-sale/types/multiple-resource-result.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/order.d.ts +18 -0
- package/build/ts/surfaces/point-of-sale/types/order.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/paginated-result.d.ts +2 -3
- package/build/ts/surfaces/point-of-sale/types/paginated-result.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/payment.d.ts +15 -0
- package/build/ts/surfaces/point-of-sale/types/payment.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/pin-pad.d.ts +36 -16
- package/build/ts/surfaces/point-of-sale/types/pin-pad.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/product.d.ts +170 -0
- package/build/ts/surfaces/point-of-sale/types/product.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/session.d.ts +7 -5
- package/build/ts/surfaces/point-of-sale/types/session.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/shipping-line.d.ts +32 -0
- package/build/ts/surfaces/point-of-sale/types/shipping-line.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/storage.d.ts +13 -11
- package/build/ts/surfaces/point-of-sale/types/storage.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/tax-line.d.ts +21 -0
- package/build/ts/surfaces/point-of-sale/types/tax-line.d.ts.map +1 -1
- package/build/ts/surfaces/point-of-sale/types/transaction-type.d.ts +7 -0
- package/build/ts/surfaces/point-of-sale/types/transaction-type.d.ts.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -1
- package/src/shared.ts +7 -7
- package/src/surfaces/admin/api/intents/examples/edit-metafield-definition.js +1 -0
- package/src/surfaces/admin/api/intents/examples/edit-metaobject-definition.js +1 -1
- package/src/surfaces/admin/components/Icon/icon-data.json +9 -0
- package/src/surfaces/point-of-sale/api/action-api/action-api.ts +3 -5
- package/src/surfaces/point-of-sale/api/cart-api/cart-api.ts +38 -33
- package/src/surfaces/point-of-sale/api/cart-line-item-api/cart-line-item-api.ts +2 -2
- package/src/surfaces/point-of-sale/api/connectivity-api/connectivity-api.ts +6 -4
- package/src/surfaces/point-of-sale/api/customer-api/customer-api.ts +4 -1
- package/src/surfaces/point-of-sale/api/device-api/device-api.ts +4 -4
- package/src/surfaces/point-of-sale/api/draft-order-api/draft-order-api.ts +6 -3
- package/src/surfaces/point-of-sale/api/locale-api/locale-api.ts +2 -3
- package/src/surfaces/point-of-sale/api/navigation-api/navigation-api.ts +17 -9
- package/src/surfaces/point-of-sale/api/order-api/order-api.ts +5 -5
- package/src/surfaces/point-of-sale/api/pin-pad-api.ts +6 -10
- package/src/surfaces/point-of-sale/api/print-api/print-api.ts +10 -11
- package/src/surfaces/point-of-sale/api/product-api/product-api.ts +5 -2
- package/src/surfaces/point-of-sale/api/product-search-api/product-search-api.ts +24 -10
- package/src/surfaces/point-of-sale/api/scanner-api/scanner-api.ts +26 -8
- package/src/surfaces/point-of-sale/api/session-api/session-api.ts +3 -6
- package/src/surfaces/point-of-sale/api/storage-api/storage-api.ts +3 -0
- package/src/surfaces/point-of-sale/api/toast-api/toast-api.ts +11 -1
- package/src/surfaces/point-of-sale/components/Badge.d.ts +23 -4
- package/src/surfaces/point-of-sale/components/Banner.d.ts +24 -6
- package/src/surfaces/point-of-sale/components/Box.d.ts +34 -37
- package/src/surfaces/point-of-sale/components/Button.d.ts +56 -16
- package/src/surfaces/point-of-sale/components/Choice.d.ts +14 -2
- package/src/surfaces/point-of-sale/components/ChoiceList/examples/composed-choices.jsx +35 -0
- package/src/surfaces/point-of-sale/components/ChoiceList.d.ts +41 -5
- package/src/surfaces/point-of-sale/components/Clickable.d.ts +40 -4
- package/src/surfaces/point-of-sale/components/DateField.d.ts +42 -6
- package/src/surfaces/point-of-sale/components/DatePicker.d.ts +42 -6
- package/src/surfaces/point-of-sale/components/DateSpinner.d.ts +42 -6
- package/src/surfaces/point-of-sale/components/Divider.d.ts +14 -2
- package/src/surfaces/point-of-sale/components/EmailField.d.ts +43 -7
- package/src/surfaces/point-of-sale/components/Heading.d.ts +15 -3
- package/src/surfaces/point-of-sale/components/Icon.d.ts +17 -2
- package/src/surfaces/point-of-sale/components/Image.d.ts +6 -3
- package/src/surfaces/point-of-sale/components/Modal.d.ts +43 -11
- package/src/surfaces/point-of-sale/components/NumberField.d.ts +56 -41
- package/src/surfaces/point-of-sale/components/Page.d.ts +19 -7
- package/src/surfaces/point-of-sale/components/PosBlock.d.ts +16 -4
- package/src/surfaces/point-of-sale/components/QrCode.d.ts +14 -2
- package/src/surfaces/point-of-sale/components/ScrollBox.d.ts +33 -36
- package/src/surfaces/point-of-sale/components/SearchField.d.ts +42 -6
- package/src/surfaces/point-of-sale/components/Section.d.ts +17 -7
- package/src/surfaces/point-of-sale/components/Stack.d.ts +47 -61
- package/src/surfaces/point-of-sale/components/Text.d.ts +28 -6
- package/src/surfaces/point-of-sale/components/TextArea.d.ts +43 -7
- package/src/surfaces/point-of-sale/components/TextField.d.ts +43 -7
- package/src/surfaces/point-of-sale/components/Tile.d.ts +40 -4
- package/src/surfaces/point-of-sale/components/TimeField.d.ts +42 -6
- package/src/surfaces/point-of-sale/components/TimePicker.d.ts +42 -6
- package/src/surfaces/point-of-sale/components/components-shared.d.ts +638 -878
- package/src/surfaces/point-of-sale/components/targets/StandardComponents.ts +0 -1
- package/src/surfaces/point-of-sale/components.d.ts +1506 -1537
- package/src/surfaces/point-of-sale/event/data/BaseApi.ts +3 -0
- package/src/surfaces/point-of-sale/event/data/BaseData.ts +15 -0
- package/src/surfaces/point-of-sale/event/data/CartUpdateEventData.ts +6 -0
- package/src/surfaces/point-of-sale/event/data/CashTrackingSessionData.ts +27 -0
- package/src/surfaces/point-of-sale/event/data/ExchangeTransactionData.ts +18 -0
- package/src/surfaces/point-of-sale/event/data/ReprintReceiptData.ts +9 -0
- package/src/surfaces/point-of-sale/event/data/ReturnTransactionData.ts +18 -0
- package/src/surfaces/point-of-sale/event/data/SaleTransactionData.ts +12 -0
- package/src/surfaces/point-of-sale/event/data/TransactionCompleteData.ts +27 -0
- package/src/surfaces/point-of-sale/event/output/BaseOutput.ts +17 -0
- package/src/surfaces/point-of-sale/extension-targets.ts +135 -0
- package/src/surfaces/point-of-sale/types/base-transaction-complete.ts +43 -0
- package/src/surfaces/point-of-sale/types/cart.ts +227 -31
- package/src/surfaces/point-of-sale/types/country-code.ts +3 -0
- package/src/surfaces/point-of-sale/types/device.ts +6 -3
- package/src/surfaces/point-of-sale/types/direct-api-request-body.ts +3 -3
- package/src/surfaces/point-of-sale/types/discount-allocation.ts +6 -0
- package/src/surfaces/point-of-sale/types/money.ts +18 -0
- package/src/surfaces/point-of-sale/types/multiple-resource-result.ts +1 -2
- package/src/surfaces/point-of-sale/types/order.ts +18 -1
- package/src/surfaces/point-of-sale/types/paginated-result.ts +2 -3
- package/src/surfaces/point-of-sale/types/payment.ts +16 -0
- package/src/surfaces/point-of-sale/types/pin-pad.ts +32 -14
- package/src/surfaces/point-of-sale/types/product.ts +170 -0
- package/src/surfaces/point-of-sale/types/session.ts +7 -5
- package/src/surfaces/point-of-sale/types/shipping-line.ts +32 -0
- package/src/surfaces/point-of-sale/types/storage.ts +13 -11
- package/src/surfaces/point-of-sale/types/tax-line.ts +21 -0
- package/src/surfaces/point-of-sale/types/transaction-type.ts +7 -0
- 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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
744
|
+
* The child elements to render within this component.
|
|
715
745
|
*/
|
|
716
746
|
children?: ComponentChildren;
|
|
717
747
|
/**
|
|
718
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
786
|
+
* The child elements to render within this component.
|
|
755
787
|
*/
|
|
756
788
|
children?: ComponentChildren;
|
|
757
789
|
/**
|
|
758
|
-
* Sets the
|
|
759
|
-
*
|
|
760
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
964
|
-
*
|
|
965
|
-
* - `
|
|
966
|
-
* - `
|
|
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
|
-
*
|
|
976
|
-
*
|
|
977
|
-
* - `
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
1258
|
-
*
|
|
1259
|
-
* - `submit`:
|
|
1260
|
-
* - `
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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 It
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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'
|
|
1355
|
+
* @default 'auto'
|
|
1391
1356
|
*/
|
|
1392
1357
|
variant?: 'auto' | 'primary' | 'secondary' | 'tertiary';
|
|
1393
1358
|
/**
|
|
1394
|
-
* Sets the tone of the
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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`
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
1539
|
+
* The type of controls displayed for the field:
|
|
1585
1540
|
*
|
|
1586
|
-
* - `
|
|
1587
|
-
*
|
|
1588
|
-
* - `none
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
1708
|
-
*
|
|
1709
|
-
* - `
|
|
1710
|
-
* - `
|
|
1711
|
-
* - `
|
|
1712
|
-
* - `
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
1926
|
-
*
|
|
1927
|
-
* - `
|
|
1928
|
-
* - `
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
1896
|
+
* 'saturday, sunday' // allow only weekends
|
|
1897
|
+
* 'monday, wednesday, friday' // allow only specific weekdays
|
|
2000
1898
|
*/
|
|
2001
1899
|
allowDays?: string;
|
|
2002
1900
|
/**
|
|
2003
|
-
*
|
|
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
|
|
1906
|
+
* 'saturday, sunday' // disallow weekends
|
|
1907
|
+
* 'monday' // disallow Mondays
|
|
2015
1908
|
*/
|
|
2016
1909
|
disallowDays?: string;
|
|
2017
1910
|
/**
|
|
2018
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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'
|
|
2134
|
+
* @default 'auto'
|
|
2257
2135
|
*/
|
|
2258
2136
|
fontVariantNumeric?: 'auto' | 'normal' | 'tabular-nums';
|
|
2259
2137
|
/**
|
|
2260
|
-
*
|
|
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 element
|
|
2271
|
-
*
|
|
2272
|
-
* - `
|
|
2273
|
-
* - `
|
|
2274
|
-
* - `
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
* - `
|
|
2409
|
-
* - `
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
2293
|
+
* @default 'contain'
|
|
2441
2294
|
*/
|
|
2442
2295
|
objectFit?: 'contain' | 'cover';
|
|
2443
2296
|
/**
|
|
2444
|
-
*
|
|
2445
|
-
* - `eager`:
|
|
2446
|
-
* - `lazy`:
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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.
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
2497
|
-
*
|
|
2498
|
-
* `max`: expands
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
2549
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
2598
|
-
*
|
|
2599
|
-
* `fill`:
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
2476
|
+
* Called when scrolling reaches or moves away from any edge of the scrollable container.
|
|
2628
2477
|
*
|
|
2629
|
-
* Provides information about which edges
|
|
2630
|
-
* - `inline: 'start'` -
|
|
2631
|
-
* - `inline: 'end'` -
|
|
2632
|
-
* - `block: 'start'` -
|
|
2633
|
-
* - `block: 'end'` -
|
|
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
|
-
*
|
|
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`
|
|
2656
|
-
* - `48px 0`
|
|
2657
|
-
* - `
|
|
2658
|
-
*
|
|
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
|
|
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
|
|
2542
|
+
* The child elements to render within this component.
|
|
2695
2543
|
*/
|
|
2696
2544
|
children?: ComponentChildren;
|
|
2697
2545
|
/**
|
|
2698
|
-
* A label
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
2568
|
+
* The child elements to render within this component.
|
|
2728
2569
|
*/
|
|
2729
2570
|
children?: ComponentChildren;
|
|
2730
2571
|
/**
|
|
2731
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
2610
|
+
* The child elements to render within this component.
|
|
2768
2611
|
*/
|
|
2769
2612
|
children?: ComponentChildren;
|
|
2770
2613
|
/**
|
|
2771
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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` -
|
|
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
|
-
*
|
|
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` -
|
|
2769
|
+
* `09:00--10:00, 13:00--14:00` - disallows selecting times within these ranges
|
|
2953
2770
|
*/
|
|
2954
2771
|
disallow?: string;
|
|
2955
2772
|
/**
|
|
2956
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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.
|