@shopify/ui-extensions 2025.10.5 → 2025.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/build/ts/surfaces/checkout/api/address-autocomplete/standard.d.ts +2 -2
  2. package/build/ts/surfaces/checkout/api/standard/standard.d.ts +6 -6
  3. package/build/ts/surfaces/checkout/components/Announcement/Announcement.doc.d.ts.map +1 -1
  4. package/build/ts/surfaces/checkout/components/Announcement.d.ts +10 -5
  5. package/build/ts/surfaces/checkout/components/Banner/Banner.doc.d.ts.map +1 -1
  6. package/build/ts/surfaces/checkout/components/Banner.d.ts +4 -4
  7. package/build/ts/surfaces/checkout/components/Button/Button.doc.d.ts.map +1 -1
  8. package/build/ts/surfaces/checkout/components/Button.d.ts +3 -3
  9. package/build/ts/surfaces/checkout/components/Checkbox/Checkbox.doc.d.ts.map +1 -1
  10. package/build/ts/surfaces/checkout/components/Checkbox.d.ts +3 -3
  11. package/build/ts/surfaces/checkout/components/Chip/Chip.doc.d.ts.map +1 -1
  12. package/build/ts/surfaces/checkout/components/ChoiceList/ChoiceList.doc.d.ts.map +1 -1
  13. package/build/ts/surfaces/checkout/components/ChoiceList.d.ts +3 -3
  14. package/build/ts/surfaces/checkout/components/Clickable/Clickable.doc.d.ts.map +1 -1
  15. package/build/ts/surfaces/checkout/components/Clickable.d.ts +5 -5
  16. package/build/ts/surfaces/checkout/components/ClickableChip/ClickableChip.doc.d.ts.map +1 -1
  17. package/build/ts/surfaces/checkout/components/ClickableChip.d.ts +5 -5
  18. package/build/ts/surfaces/checkout/components/ClipboardItem/ClipboardItem.doc.d.ts.map +1 -1
  19. package/build/ts/surfaces/checkout/components/ClipboardItem.d.ts +4 -4
  20. package/build/ts/surfaces/checkout/components/ConsentCheckbox/ConsentCheckbox.doc.d.ts.map +1 -1
  21. package/build/ts/surfaces/checkout/components/ConsentCheckbox.d.ts +3 -3
  22. package/build/ts/surfaces/checkout/components/ConsentPhoneField/ConsentPhoneField.doc.d.ts.map +1 -1
  23. package/build/ts/surfaces/checkout/components/ConsentPhoneField.d.ts +7 -7
  24. package/build/ts/surfaces/checkout/components/DateField/DateField.doc.d.ts.map +1 -1
  25. package/build/ts/surfaces/checkout/components/DateField.d.ts +8 -8
  26. package/build/ts/surfaces/checkout/components/DatePicker/DatePicker.doc.d.ts.map +1 -1
  27. package/build/ts/surfaces/checkout/components/DatePicker.d.ts +7 -7
  28. package/build/ts/surfaces/checkout/components/Details/Details.doc.d.ts.map +1 -1
  29. package/build/ts/surfaces/checkout/components/Details.d.ts +9 -4
  30. package/build/ts/surfaces/checkout/components/DropZone/DropZone.doc.d.ts.map +1 -1
  31. package/build/ts/surfaces/checkout/components/DropZone.d.ts +5 -5
  32. package/build/ts/surfaces/checkout/components/EmailField/EmailField.doc.d.ts.map +1 -1
  33. package/build/ts/surfaces/checkout/components/EmailField.d.ts +13 -7
  34. package/build/ts/surfaces/checkout/components/Form/Form.doc.d.ts.map +1 -1
  35. package/build/ts/surfaces/checkout/components/Form.d.ts +3 -3
  36. package/build/ts/surfaces/checkout/components/Link/Link.doc.d.ts.map +1 -1
  37. package/build/ts/surfaces/checkout/components/Link.d.ts +3 -3
  38. package/build/ts/surfaces/checkout/components/Map/Map.doc.d.ts.map +1 -1
  39. package/build/ts/surfaces/checkout/components/Map.d.ts +23 -7
  40. package/build/ts/surfaces/checkout/components/MapMarker.d.ts +3 -3
  41. package/build/ts/surfaces/checkout/components/Modal/Modal.doc.d.ts.map +1 -1
  42. package/build/ts/surfaces/checkout/components/Modal.d.ts +6 -6
  43. package/build/ts/surfaces/checkout/components/MoneyField/MoneyField.doc.d.ts.map +1 -1
  44. package/build/ts/surfaces/checkout/components/MoneyField.d.ts +6 -6
  45. package/build/ts/surfaces/checkout/components/NumberField/NumberField.doc.d.ts.map +1 -1
  46. package/build/ts/surfaces/checkout/components/NumberField.d.ts +43 -14
  47. package/build/ts/surfaces/checkout/components/PasswordField/PasswordField.doc.d.ts.map +1 -1
  48. package/build/ts/surfaces/checkout/components/PasswordField.d.ts +6 -6
  49. package/build/ts/surfaces/checkout/components/PhoneField/PhoneField.doc.d.ts.map +1 -1
  50. package/build/ts/surfaces/checkout/components/PhoneField.d.ts +6 -6
  51. package/build/ts/surfaces/checkout/components/Popover/Popover.doc.d.ts.map +1 -1
  52. package/build/ts/surfaces/checkout/components/Popover.d.ts +4 -4
  53. package/build/ts/surfaces/checkout/components/PressButton/PressButton.doc.d.ts.map +1 -1
  54. package/build/ts/surfaces/checkout/components/PressButton.d.ts +5 -5
  55. package/build/ts/surfaces/checkout/components/QRCode/QRCode.doc.d.ts.map +1 -1
  56. package/build/ts/surfaces/checkout/components/QRCode.d.ts +3 -3
  57. package/build/ts/surfaces/checkout/components/QueryContainer/QueryContainer.doc.d.ts.map +1 -1
  58. package/build/ts/surfaces/checkout/components/Select/Select.doc.d.ts.map +1 -1
  59. package/build/ts/surfaces/checkout/components/Select.d.ts +5 -5
  60. package/build/ts/surfaces/checkout/components/Sheet/Sheet.doc.d.ts.map +1 -1
  61. package/build/ts/surfaces/checkout/components/Sheet.d.ts +6 -6
  62. package/build/ts/surfaces/checkout/components/Switch/Switch.doc.d.ts.map +1 -1
  63. package/build/ts/surfaces/checkout/components/Switch.d.ts +3 -3
  64. package/build/ts/surfaces/checkout/components/TextArea/TextArea.doc.d.ts.map +1 -1
  65. package/build/ts/surfaces/checkout/components/TextArea.d.ts +6 -6
  66. package/build/ts/surfaces/checkout/components/TextField/TextField.doc.d.ts.map +1 -1
  67. package/build/ts/surfaces/checkout/components/TextField.d.ts +7 -7
  68. package/build/ts/surfaces/checkout/components/UrlField/UrlField.doc.d.ts.map +1 -1
  69. package/build/ts/surfaces/checkout/components/UrlField.d.ts +6 -6
  70. package/build/ts/surfaces/checkout/components/components.d.ts +5 -4
  71. package/build/ts/surfaces/checkout/helper.docs.d.ts.map +1 -1
  72. package/build/ts/surfaces/customer-account/components/Announcement.d.ts +10 -5
  73. package/build/ts/surfaces/customer-account/components/Banner.d.ts +4 -4
  74. package/build/ts/surfaces/customer-account/components/Button.d.ts +3 -3
  75. package/build/ts/surfaces/customer-account/components/Checkbox.d.ts +3 -3
  76. package/build/ts/surfaces/customer-account/components/ChoiceList.d.ts +3 -3
  77. package/build/ts/surfaces/customer-account/components/Clickable.d.ts +5 -5
  78. package/build/ts/surfaces/customer-account/components/ClickableChip.d.ts +5 -5
  79. package/build/ts/surfaces/customer-account/components/ClipboardItem.d.ts +4 -4
  80. package/build/ts/surfaces/customer-account/components/ConsentCheckbox.d.ts +3 -3
  81. package/build/ts/surfaces/customer-account/components/ConsentPhoneField.d.ts +7 -7
  82. package/build/ts/surfaces/customer-account/components/DateField.d.ts +8 -8
  83. package/build/ts/surfaces/customer-account/components/DatePicker.d.ts +7 -7
  84. package/build/ts/surfaces/customer-account/components/Details.d.ts +9 -4
  85. package/build/ts/surfaces/customer-account/components/DropZone.d.ts +5 -5
  86. package/build/ts/surfaces/customer-account/components/EmailField.d.ts +13 -7
  87. package/build/ts/surfaces/customer-account/components/Form.d.ts +3 -3
  88. package/build/ts/surfaces/customer-account/components/Link.d.ts +3 -3
  89. package/build/ts/surfaces/customer-account/components/Map.d.ts +23 -7
  90. package/build/ts/surfaces/customer-account/components/MapMarker.d.ts +3 -3
  91. package/build/ts/surfaces/customer-account/components/Modal.d.ts +6 -6
  92. package/build/ts/surfaces/customer-account/components/MoneyField.d.ts +6 -6
  93. package/build/ts/surfaces/customer-account/components/NumberField.d.ts +43 -14
  94. package/build/ts/surfaces/customer-account/components/PasswordField.d.ts +6 -6
  95. package/build/ts/surfaces/customer-account/components/PhoneField.d.ts +6 -6
  96. package/build/ts/surfaces/customer-account/components/Popover.d.ts +4 -4
  97. package/build/ts/surfaces/customer-account/components/PressButton.d.ts +5 -5
  98. package/build/ts/surfaces/customer-account/components/QRCode.d.ts +3 -3
  99. package/build/ts/surfaces/customer-account/components/Select.d.ts +5 -5
  100. package/build/ts/surfaces/customer-account/components/Sheet.d.ts +6 -6
  101. package/build/ts/surfaces/customer-account/components/Switch.d.ts +3 -3
  102. package/build/ts/surfaces/customer-account/components/TextArea.d.ts +6 -6
  103. package/build/ts/surfaces/customer-account/components/TextField.d.ts +7 -7
  104. package/build/ts/surfaces/customer-account/components/UrlField.d.ts +6 -6
  105. package/build/ts/surfaces/customer-account/components/components.d.ts +5 -4
  106. package/build/ts/surfaces/point-of-sale/types/cart.d.ts +26 -0
  107. package/build/ts/surfaces/point-of-sale/types/cart.d.ts.map +1 -1
  108. package/build/tsconfig.tsbuildinfo +1 -1
  109. package/package.json +1 -1
  110. package/src/surfaces/admin/components/DatePicker/examples/analytics-dashboard.html +2 -2
  111. package/src/surfaces/checkout/api/address-autocomplete/standard.ts +2 -2
  112. package/src/surfaces/checkout/api/standard/standard.ts +6 -6
  113. package/src/surfaces/checkout/components/Announcement.d.ts +10 -5
  114. package/src/surfaces/checkout/components/Banner.d.ts +4 -4
  115. package/src/surfaces/checkout/components/Button.d.ts +3 -3
  116. package/src/surfaces/checkout/components/Checkbox.d.ts +3 -3
  117. package/src/surfaces/checkout/components/ChoiceList/examples/basic-choice-list.example.html +3 -3
  118. package/src/surfaces/checkout/components/ChoiceList/examples/block-choice-variant.example.html +47 -0
  119. package/src/surfaces/checkout/components/ChoiceList/examples/grid-choice-variant.example.html +5 -0
  120. package/src/surfaces/checkout/components/ChoiceList/examples/inline-choice-variant.example.html +6 -0
  121. package/src/surfaces/checkout/components/ChoiceList/examples/list-choice-variant.example.html +5 -0
  122. package/src/surfaces/checkout/components/ChoiceList.d.ts +3 -3
  123. package/src/surfaces/checkout/components/Clickable.d.ts +5 -5
  124. package/src/surfaces/checkout/components/ClickableChip.d.ts +5 -5
  125. package/src/surfaces/checkout/components/ClipboardItem.d.ts +4 -4
  126. package/src/surfaces/checkout/components/ConsentCheckbox.d.ts +3 -3
  127. package/src/surfaces/checkout/components/ConsentPhoneField.d.ts +7 -7
  128. package/src/surfaces/checkout/components/DateField.d.ts +8 -8
  129. package/src/surfaces/checkout/components/DatePicker.d.ts +7 -7
  130. package/src/surfaces/checkout/components/Details.d.ts +9 -4
  131. package/src/surfaces/checkout/components/DropZone.d.ts +5 -5
  132. package/src/surfaces/checkout/components/EmailField.d.ts +13 -7
  133. package/src/surfaces/checkout/components/Form.d.ts +3 -3
  134. package/src/surfaces/checkout/components/Icon/examples/basic-icon.example.html +4 -4
  135. package/src/surfaces/checkout/components/Link.d.ts +3 -3
  136. package/src/surfaces/checkout/components/Map/examples/map-marker-graphic.example.html +14 -0
  137. package/src/surfaces/checkout/components/Map/examples/map-marker-popover.example.html +14 -0
  138. package/src/surfaces/checkout/components/Map.d.ts +23 -7
  139. package/src/surfaces/checkout/components/MapMarker.d.ts +3 -3
  140. package/src/surfaces/checkout/components/Modal.d.ts +6 -6
  141. package/src/surfaces/checkout/components/MoneyField.d.ts +6 -6
  142. package/src/surfaces/checkout/components/NumberField.d.ts +43 -14
  143. package/src/surfaces/checkout/components/PasswordField.d.ts +6 -6
  144. package/src/surfaces/checkout/components/PaymentIcon/examples/basic-payment-icon.example.html +7 -7
  145. package/src/surfaces/checkout/components/PhoneField.d.ts +6 -6
  146. package/src/surfaces/checkout/components/Popover.d.ts +4 -4
  147. package/src/surfaces/checkout/components/PressButton.d.ts +5 -5
  148. package/src/surfaces/checkout/components/ProductThumbnail/examples/basic-product-thumbnail.example.html +1 -1
  149. package/src/surfaces/checkout/components/QRCode.d.ts +3 -3
  150. package/src/surfaces/checkout/components/Select.d.ts +5 -5
  151. package/src/surfaces/checkout/components/Sheet.d.ts +6 -6
  152. package/src/surfaces/checkout/components/Switch.d.ts +3 -3
  153. package/src/surfaces/checkout/components/TextArea.d.ts +6 -6
  154. package/src/surfaces/checkout/components/TextField.d.ts +7 -7
  155. package/src/surfaces/checkout/components/UrlField.d.ts +6 -6
  156. package/src/surfaces/checkout/components/components.d.ts +5 -4
  157. package/src/surfaces/checkout/helper.docs.ts +1 -67
  158. package/src/surfaces/point-of-sale/components/ChoiceList/examples/event-handling.jsx +2 -2
  159. package/src/surfaces/point-of-sale/components/ChoiceList/examples/multiple-selection.jsx +1 -1
  160. package/src/surfaces/point-of-sale/components/DateField/examples/event-handling.jsx +4 -4
  161. package/src/surfaces/point-of-sale/components/DatePicker/examples/command-system.jsx +1 -1
  162. package/src/surfaces/point-of-sale/components/DatePicker/examples/event-handling.jsx +2 -2
  163. package/src/surfaces/point-of-sale/components/DateSpinner/examples/command-system.jsx +1 -1
  164. package/src/surfaces/point-of-sale/components/DateSpinner/examples/event-handling.jsx +2 -2
  165. package/src/surfaces/point-of-sale/components/EmailField/examples/event-handling.jsx +2 -2
  166. package/src/surfaces/point-of-sale/components/NumberField/examples/controls-constraints.jsx +2 -2
  167. package/src/surfaces/point-of-sale/components/NumberField/examples/input-mode.jsx +2 -2
  168. package/src/surfaces/point-of-sale/components/SearchField/examples/event-handling.jsx +2 -2
  169. package/src/surfaces/point-of-sale/components/TextArea/examples/event-handling.jsx +2 -2
  170. package/src/surfaces/point-of-sale/components/TextArea/examples/rows-configuration.jsx +1 -1
  171. package/src/surfaces/point-of-sale/components/TextField/examples/common-props.jsx +1 -1
  172. package/src/surfaces/point-of-sale/components/TextField/examples/event-handling.jsx +5 -5
  173. package/src/surfaces/point-of-sale/components/TimeField/examples/event-handling.jsx +2 -2
  174. package/src/surfaces/point-of-sale/components/TimePicker/examples/command-system.jsx +1 -1
  175. package/src/surfaces/point-of-sale/components/TimePicker/examples/event-handling.jsx +2 -2
  176. package/src/surfaces/point-of-sale/types/cart.ts +27 -0
  177. package/src/surfaces/checkout/style/examples/style.example.tsx +0 -22
@@ -18,11 +18,17 @@ export interface BaseElementProps<TClass = HTMLElement> {
18
18
  ref?: preact.Ref<TClass>;
19
19
  slot?: Lowercase<string>;
20
20
  }
21
+ /**
22
+ * Used when an element has children.
23
+ */
24
+ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends BaseElementProps<TClass> {
25
+ children?: preact.ComponentChildren;
26
+ }
21
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
22
28
  currentTarget: HTMLElementTagNameMap[TTagName];
23
29
  };
24
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
25
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
26
32
  }) | null;
27
33
 
28
34
  declare const tagName = "s-email-field";
@@ -41,25 +47,25 @@ export interface EmailFieldElementEvents {
41
47
  *
42
48
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
43
49
  */
44
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
50
+ blur?: CallbackEventListener<typeof tagName>;
45
51
  /**
46
52
  * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
47
53
  *
48
54
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
49
55
  */
50
- change?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
56
+ change?: CallbackEventListener<typeof tagName>;
51
57
  /**
52
58
  * Callback when the element receives focus.
53
59
  *
54
60
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
55
61
  */
56
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
62
+ focus?: CallbackEventListener<typeof tagName>;
57
63
  /**
58
64
  * Callback when the user makes any changes in the field.
59
65
  *
60
66
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
61
67
  */
62
- input?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
68
+ input?: CallbackEventListener<typeof tagName>;
63
69
  }
64
70
  export interface EmailFieldElementSlots {
65
71
  /**
@@ -84,7 +90,7 @@ declare global {
84
90
  declare module 'preact' {
85
91
  namespace createElement.JSX {
86
92
  interface IntrinsicElements {
87
- [tagName]: EmailFieldProps & BaseElementProps<EmailFieldElement>;
93
+ [tagName]: EmailFieldProps & BaseElementPropsWithChildren<EmailFieldElement>;
88
94
  }
89
95
  }
90
96
  }
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-form";
@@ -44,7 +44,7 @@ export interface FormElementEvents {
44
44
  /**
45
45
  * A callback that is run when the form is submitted.
46
46
  */
47
- submit?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
47
+ submit?: CallbackEventListener<typeof tagName>;
48
48
  }
49
49
  export interface FormElement extends FormElementProps, Omit<HTMLElement, 'id' | 'onsubmit'> {
50
50
  onsubmit: FormEvents['onSubmit'];
@@ -1,4 +1,4 @@
1
- <s-icon type="store"></s-icon>
2
- <s-icon type="star"></s-icon>
3
- <s-icon type="settings"></s-icon>
4
- <s-icon type="image"></s-icon>
1
+ <s-icon type="store" />
2
+ <s-icon type="star" />
3
+ <s-icon type="settings" />
4
+ <s-icon type="image" />
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-link";
@@ -45,7 +45,7 @@ export interface LinkElementEvents {
45
45
  *
46
46
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event
47
47
  */
48
- click?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
48
+ click?: CallbackEventListener<typeof tagName>;
49
49
  }
50
50
  export interface LinkElement extends LinkElementProps, Omit<HTMLElement, 'id' | 'lang' | 'onclick'> {
51
51
  onclick: LinkEvents['onClick'];
@@ -0,0 +1,14 @@
1
+ <s-map
2
+ apiKey="YOUR_API_KEY"
3
+ blockSize="400px"
4
+ inlineSize="400px"
5
+ latitude={37.7749}
6
+ longitude={-122.4194}
7
+ >
8
+ <s-map-marker
9
+ latitude={37.7749}
10
+ longitude={-122.4194}
11
+ >
12
+ <s-image src="https://cdn.shopify.com/YOUR_IMAGE_HERE" slot="graphic"></s-image>
13
+ </s-map-marker>
14
+ </s-map>
@@ -0,0 +1,14 @@
1
+ <s-map
2
+ apiKey="YOUR_API_KEY"
3
+ blockSize="400px"
4
+ inlineSize="400px"
5
+ latitude={37.7749}
6
+ longitude={-122.4194}
7
+ >
8
+ <s-map-marker
9
+ latitude={37.7749}
10
+ longitude={-122.4194}
11
+ commandFor="popover-san-francisco"
12
+ ></s-map-marker>
13
+ <s-popover id="popover-san-francisco">San Francisco</s-popover>
14
+ </s-map>
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-map";
@@ -36,23 +36,39 @@ export interface MapElementProps extends Pick<MapProps$1, 'accessibilityLabel' |
36
36
  }
37
37
  export interface MapEvents extends Pick<MapProps$1, 'onBoundsChange' | 'onClick' | 'onDblClick' | 'onViewChange'> {
38
38
  }
39
+ export interface MapLocation {
40
+ latitude?: number;
41
+ longitude?: number;
42
+ }
43
+ export interface MapLocationEvent {
44
+ location?: MapLocation;
45
+ }
46
+ export interface MapBoundsEvent {
47
+ bounds?: {
48
+ northEast?: MapLocation;
49
+ southWest?: MapLocation;
50
+ };
51
+ }
52
+ export interface MapViewChangeEvent extends MapLocationEvent {
53
+ zoom?: number;
54
+ }
39
55
  export interface MapElementEvents {
40
56
  /**
41
57
  * Callback when the viewport bounds have changed or the map is resized.
42
58
  */
43
- boundschange?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
59
+ boundschange?: CallbackEventListener<typeof tagName, MapBoundsEvent>;
44
60
  /**
45
61
  * Callback when the user clicks on the map.
46
62
  */
47
- click?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
63
+ click?: CallbackEventListener<typeof tagName, MapLocationEvent>;
48
64
  /**
49
65
  * Callback when the user double-clicks on the map.
50
66
  */
51
- dblclick?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
67
+ dblclick?: CallbackEventListener<typeof tagName, MapLocationEvent>;
52
68
  /**
53
69
  * Callback when the map view changes.
54
70
  */
55
- viewchange?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
71
+ viewchange?: CallbackEventListener<typeof tagName, MapViewChangeEvent>;
56
72
  }
57
73
  export interface MapElement extends MapElementProps, Omit<HTMLElement, 'id' | 'onclick' | 'ondblclick'> {
58
74
  onboundschange: MapEvents['onBoundsChange'];
@@ -75,4 +91,4 @@ declare module 'preact' {
75
91
  }
76
92
  }
77
93
 
78
- export type { MapElement, MapElementEvents, MapElementProps, MapEvents, MapProps };
94
+ export type { MapBoundsEvent, MapElement, MapElementEvents, MapElementProps, MapEvents, MapLocation, MapLocationEvent, MapProps, MapViewChangeEvent };
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-map-marker";
@@ -43,7 +43,7 @@ export interface MapMarkerElementEvents {
43
43
  *
44
44
  * It does not trigger a click event on the map itself.
45
45
  */
46
- click?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
46
+ click?: CallbackEventListener<typeof tagName>;
47
47
  }
48
48
  export interface MapMarkerElementSlots {
49
49
  /**
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-modal";
@@ -53,19 +53,19 @@ export interface ModalElementEvents {
53
53
  /**
54
54
  * Callback fired when the overlay is hidden **after** any animations to hide the overlay have finished.
55
55
  */
56
- afterhide?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
56
+ afterhide?: CallbackEventListener<typeof tagName>;
57
57
  /**
58
58
  * Callback fired when the overlay is shown **after** any animations to show the overlay have finished.
59
59
  */
60
- aftershow?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
60
+ aftershow?: CallbackEventListener<typeof tagName>;
61
61
  /**
62
62
  * Callback fired after the overlay is hidden.
63
63
  */
64
- hide?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
64
+ hide?: CallbackEventListener<typeof tagName>;
65
65
  /**
66
66
  * Callback fired after the overlay is shown.
67
67
  */
68
- show?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
68
+ show?: CallbackEventListener<typeof tagName>;
69
69
  }
70
70
  export interface ModalElement extends ModalElementProps, ModalElementMethods, Omit<HTMLElement, 'id'> {
71
71
  onafterhide: ModalEvents['onAfterHide'];
@@ -21,8 +21,8 @@ export interface BaseElementProps<TClass = HTMLElement> {
21
21
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
22
22
  currentTarget: HTMLElementTagNameMap[TTagName];
23
23
  };
24
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
25
- (event: CallbackEvent<TTagName, TEvent>): void;
24
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
25
+ (event: CallbackEvent<TTagName, Event> & TData): void;
26
26
  }) | null;
27
27
 
28
28
  declare const tagName = "s-money-field";
@@ -36,25 +36,25 @@ export interface MoneyFieldElementEvents {
36
36
  *
37
37
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
38
38
  */
39
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
39
+ blur?: CallbackEventListener<typeof tagName>;
40
40
  /**
41
41
  * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
42
42
  *
43
43
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
44
44
  */
45
- change?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
45
+ change?: CallbackEventListener<typeof tagName>;
46
46
  /**
47
47
  * Callback when the element receives focus.
48
48
  *
49
49
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
50
50
  */
51
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
51
+ focus?: CallbackEventListener<typeof tagName>;
52
52
  /**
53
53
  * Callback when the user makes any changes in the field.
54
54
  *
55
55
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
56
56
  */
57
- input?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
57
+ input?: CallbackEventListener<typeof tagName>;
58
58
  }
59
59
  export interface MoneyFieldElement extends MoneyFieldElementProps {
60
60
  onblur: MoneyFieldEvents['onBlur'];
@@ -8,7 +8,7 @@
8
8
  /* eslint-disable import-x/namespace */
9
9
  // eslint-disable-next-line @typescript-eslint/triple-slash-reference, spaced-comment
10
10
  /// <reference lib="DOM" />
11
- import type {NumberFieldProps$1} from './components-shared.d.ts';
11
+ import type {IconProps$1, NumberFieldProps$1} from './components-shared.d.ts';
12
12
 
13
13
  /**
14
14
  * Used when an element does not have children.
@@ -24,15 +24,44 @@ export interface BaseElementProps<TClass = HTMLElement> {
24
24
  export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends BaseElementProps<TClass> {
25
25
  children?: preact.ComponentChildren;
26
26
  }
27
+ /**
28
+ * Used as the single source of truth for checkout icon types.
29
+ *
30
+ * @see https://github.com/Shopify/ui-api-design/blob/main/packages/ui-api-design/src/components/Icon/Icon.ts#L10
31
+ */
32
+ declare const CHECKOUT_AVAILABLE_ICONS: readonly ["alert-circle", "alert-triangle-filled", "alert-triangle", "arrow-down", "arrow-left", "arrow-right", "arrow-up-right", "arrow-up", "bag", "bullet", "calendar", "camera", "caret-down", "cart", "cash-dollar", "categories", "check-circle", "check", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "circle", "clipboard", "clock", "credit-card", "delete", "delivered", "delivery", "disabled", "discount", "edit", "email", "empty", "external", "filter", "geolocation", "gift-card", "globe", "grid", "image", "info-filled", "info", "list-bulleted", "location", "lock", "map", "menu-horizontal", "menu-vertical", "menu", "minus", "mobile", "note", "order", "organization", "plus", "profile", "question-circle-filled", "question-circle", "reorder", "reset", "return", "savings", "search", "settings", "star-filled", "star-half", "star", "store", "truck", "upload", "x-circle-filled", "x-circle", "x"];
33
+ export type ReducedIconTypes = (typeof CHECKOUT_AVAILABLE_ICONS)[number];
27
34
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
35
  currentTarget: HTMLElementTagNameMap[TTagName];
29
36
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
37
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
38
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
39
  }) | null;
33
40
 
41
+ declare const tagName$1 = "s-icon";
42
+ export interface IconProps extends Pick<IconProps$1, 'id' | 'size' | 'tone' | 'type'> {
43
+ tone?: Extract<IconProps$1['tone'], 'auto' | 'neutral' | 'info' | 'success' | 'warning' | 'critical' | 'custom'>;
44
+ size?: Extract<IconProps$1['size'], 'small-200' | 'small-100' | 'small' | 'base' | 'large' | 'large-100'>;
45
+ type?: '' | ReducedIconTypes;
46
+ }
47
+ export interface IconElement extends IconProps, Omit<HTMLElement, 'id'> {
48
+ }
49
+ declare global {
50
+ interface HTMLElementTagNameMap {
51
+ [tagName$1]: IconElement;
52
+ }
53
+ }
54
+ declare module 'preact' {
55
+ namespace createElement.JSX {
56
+ interface IntrinsicElements {
57
+ [tagName$1]: IconProps & BaseElementProps<IconElement>;
58
+ }
59
+ }
60
+ }
61
+
34
62
  declare const tagName = "s-number-field";
35
- export interface NumberFieldElementProps extends Pick<NumberFieldProps$1, 'autocomplete' | 'controls' | 'defaultValue' | 'details' | 'disabled' | 'error' | 'icon' | 'id' | 'inputMode' | 'label' | 'labelAccessibilityVisibility' | 'max' | 'min' | 'name' | 'prefix' | 'readOnly' | 'required' | 'step' | 'suffix' | 'value'> {
63
+ export interface NumberFieldElementProps extends Pick<NumberFieldProps$1, 'autocomplete' | 'controls' | 'defaultValue' | 'disabled' | 'error' | 'icon' | 'inputMode' | 'id' | 'label' | 'labelAccessibilityVisibility' | 'max' | 'min' | 'name' | 'prefix' | 'readOnly' | 'required' | 'step' | 'suffix' | 'value'> {
64
+ icon?: IconProps['type'];
36
65
  /**
37
66
  * @deprecated Use `label` instead.
38
67
  * @private
@@ -47,31 +76,25 @@ export interface NumberFieldElementEvents {
47
76
  *
48
77
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
49
78
  */
50
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
79
+ blur?: CallbackEventListener<typeof tagName>;
51
80
  /**
52
81
  * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
53
82
  *
54
83
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
55
84
  */
56
- change?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
85
+ change?: CallbackEventListener<typeof tagName>;
57
86
  /**
58
87
  * Callback when the element receives focus.
59
88
  *
60
89
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
61
90
  */
62
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
91
+ focus?: CallbackEventListener<typeof tagName>;
63
92
  /**
64
93
  * Callback when the user makes any changes in the field.
65
94
  *
66
95
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
67
96
  */
68
- input?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
69
- }
70
- export interface NumberFieldElement extends NumberFieldElementProps, Omit<HTMLElement, 'id' | 'inputMode' | 'onblur' | 'onchange' | 'onfocus' | 'oninput' | 'prefix'> {
71
- onblur: NumberFieldEvents['onBlur'];
72
- onchange: NumberFieldEvents['onChange'];
73
- onfocus: NumberFieldEvents['onFocus'];
74
- oninput: NumberFieldEvents['onInput'];
97
+ input?: CallbackEventListener<typeof tagName>;
75
98
  }
76
99
  export interface NumberFieldElementSlots {
77
100
  /**
@@ -80,6 +103,12 @@ export interface NumberFieldElementSlots {
80
103
  */
81
104
  accessory?: HTMLElement;
82
105
  }
106
+ export interface NumberFieldElement extends NumberFieldElementProps, Omit<HTMLElement, 'id' | 'inputMode' | 'onblur' | 'onchange' | 'onfocus' | 'oninput' | 'prefix'> {
107
+ onblur: NumberFieldEvents['onBlur'];
108
+ onchange: NumberFieldEvents['onChange'];
109
+ onfocus: NumberFieldEvents['onFocus'];
110
+ oninput: NumberFieldEvents['onInput'];
111
+ }
83
112
  export interface NumberFieldProps extends NumberFieldElementProps, NumberFieldEvents {
84
113
  }
85
114
  declare global {
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-password-field";
@@ -42,25 +42,25 @@ export interface PasswordFieldElementEvents {
42
42
  *
43
43
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
44
44
  */
45
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
45
+ blur?: CallbackEventListener<typeof tagName>;
46
46
  /**
47
47
  * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
48
48
  *
49
49
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
50
50
  */
51
- change?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
51
+ change?: CallbackEventListener<typeof tagName>;
52
52
  /**
53
53
  * Callback when the element receives focus.
54
54
  *
55
55
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
56
56
  */
57
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
57
+ focus?: CallbackEventListener<typeof tagName>;
58
58
  /**
59
59
  * Callback when the user makes any changes in the field.
60
60
  *
61
61
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
62
62
  */
63
- input?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
63
+ input?: CallbackEventListener<typeof tagName>;
64
64
  }
65
65
  export interface PasswordFieldElementSlots {
66
66
  /**
@@ -1,7 +1,7 @@
1
- <s-payment-icon type="paypal"></s-payment-icon>
2
- <s-payment-icon type="apple-pay"></s-payment-icon>
3
- <s-payment-icon type="mastercard"></s-payment-icon>
4
- <s-payment-icon type="shop-pay"></s-payment-icon>
5
- <s-payment-icon type="visa"></s-payment-icon>
6
- <s-payment-icon type="amex"></s-payment-icon>
7
- <s-payment-icon type="klarna"></s-payment-icon>
1
+ <s-payment-icon type="paypal" />
2
+ <s-payment-icon type="apple-pay" />
3
+ <s-payment-icon type="mastercard" />
4
+ <s-payment-icon type="shop-pay" />
5
+ <s-payment-icon type="visa" />
6
+ <s-payment-icon type="amex" />
7
+ <s-payment-icon type="klarna" />
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-phone-field";
@@ -47,25 +47,25 @@ export interface PhoneFieldElementEvents {
47
47
  *
48
48
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
49
49
  */
50
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
50
+ blur?: CallbackEventListener<typeof tagName>;
51
51
  /**
52
52
  * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
53
53
  *
54
54
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
55
55
  */
56
- change?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
56
+ change?: CallbackEventListener<typeof tagName>;
57
57
  /**
58
58
  * Callback when the element receives focus.
59
59
  *
60
60
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
61
61
  */
62
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
62
+ focus?: CallbackEventListener<typeof tagName>;
63
63
  /**
64
64
  * Callback when the user makes any changes in the field.
65
65
  *
66
66
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
67
67
  */
68
- input?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
68
+ input?: CallbackEventListener<typeof tagName>;
69
69
  }
70
70
  export interface PhoneFieldElementSlots {
71
71
  /**
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-popover";
@@ -88,11 +88,11 @@ export interface PopoverElementEvents {
88
88
  /**
89
89
  * Callback fired after the overlay is hidden.
90
90
  */
91
- hide?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
91
+ hide?: CallbackEventListener<typeof tagName>;
92
92
  /**
93
93
  * Callback fired after the overlay is shown.
94
94
  */
95
- show?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
95
+ show?: CallbackEventListener<typeof tagName>;
96
96
  }
97
97
  export interface PopoverElement extends Omit<PopoverProps, 'onHide' | 'onShow'>, Omit<HTMLElement, 'id'> {
98
98
  onhide: PopoverProps['onHide'];
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-press-button";
@@ -42,19 +42,19 @@ export interface PressButtonElementEvents {
42
42
  *
43
43
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event
44
44
  */
45
- click?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
45
+ click?: CallbackEventListener<typeof tagName>;
46
46
  /**
47
47
  * Callback when the button has lost focus.
48
48
  *
49
49
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
50
50
  */
51
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
51
+ blur?: CallbackEventListener<typeof tagName>;
52
52
  /**
53
53
  * Callback when the button has received focus.
54
54
  *
55
55
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
56
56
  */
57
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
57
+ focus?: CallbackEventListener<typeof tagName>;
58
58
  }
59
59
  export interface PressButtonElement extends PressButtonElementProps, Omit<HTMLElement, 'children' | 'lang' | 'id' | 'onblur' | 'onclick' | 'onfocus'> {
60
60
  onblur: PressButtonEvents['onBlur'];
@@ -1,4 +1,4 @@
1
1
  <s-product-thumbnail
2
2
  src="https://cdn.shopify.com/YOUR_IMAGE_HERE"
3
- totalItems={1}
3
+ totalItems={2}
4
4
  ></s-product-thumbnail>
@@ -21,8 +21,8 @@ export interface BaseElementProps<TClass = HTMLElement> {
21
21
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
22
22
  currentTarget: HTMLElementTagNameMap[TTagName];
23
23
  };
24
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
25
- (event: CallbackEvent<TTagName, TEvent>): void;
24
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
25
+ (event: CallbackEvent<TTagName, Event> & TData): void;
26
26
  }) | null;
27
27
 
28
28
  declare const tagName = "s-qr-code";
@@ -35,7 +35,7 @@ export interface QRCodeElementEvents {
35
35
  * Invoked when the conversion of `content` to a QR code fails.
36
36
  * If an error occurs, the QR code and its child elements will not be displayed.
37
37
  */
38
- error?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
38
+ error?: CallbackEventListener<typeof tagName>;
39
39
  }
40
40
  export interface QRCodelement extends QRCodeElementProps, Omit<HTMLElement, 'id' | 'onerror'> {
41
41
  onerror: QRCodeEvents['onError'];
@@ -27,8 +27,8 @@ export interface BaseElementPropsWithChildren<TClass = HTMLElement> extends Base
27
27
  export type CallbackEvent<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = TEvent & {
28
28
  currentTarget: HTMLElementTagNameMap[TTagName];
29
29
  };
30
- export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TEvent extends Event = Event> = (EventListener & {
31
- (event: CallbackEvent<TTagName, TEvent>): void;
30
+ export type CallbackEventListener<TTagName extends keyof HTMLElementTagNameMap, TData = object> = (EventListener & {
31
+ (event: CallbackEvent<TTagName, Event> & TData): void;
32
32
  }) | null;
33
33
 
34
34
  declare const tagName = "s-select";
@@ -42,19 +42,19 @@ export interface SelectElementEvents {
42
42
  *
43
43
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
44
44
  */
45
- blur?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
45
+ blur?: CallbackEventListener<typeof tagName>;
46
46
  /**
47
47
  * Callback when the user has **finished editing** a field, e.g. once they have blurred the field.
48
48
  *
49
49
  * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
50
50
  */
51
- change?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
51
+ change?: CallbackEventListener<typeof tagName>;
52
52
  /**
53
53
  * Callback when the element receives focus.
54
54
  *
55
55
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/focus_event
56
56
  */
57
- focus?: ((event: CallbackEventListener<typeof tagName>) => void) | null;
57
+ focus?: CallbackEventListener<typeof tagName>;
58
58
  }
59
59
  export interface SelectElement extends SelectElementProps, Omit<HTMLElement, 'id' | 'onblur' | 'onchange' | 'onfocus'> {
60
60
  onblur: SelectEvents['onBlur'];