@shoplix-ai/block-kit 4.6.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +34 -7
  2. package/dist/account-links.d.ts +47 -0
  3. package/dist/account-links.d.ts.map +1 -0
  4. package/dist/account-links.js +61 -0
  5. package/dist/account-links.js.map +1 -0
  6. package/dist/address-list.d.ts +57 -0
  7. package/dist/address-list.d.ts.map +1 -0
  8. package/dist/address-list.js +57 -0
  9. package/dist/address-list.js.map +1 -0
  10. package/dist/capabilities.d.ts +8 -1
  11. package/dist/capabilities.d.ts.map +1 -1
  12. package/dist/capabilities.js.map +1 -1
  13. package/dist/contract.d.ts +20 -14
  14. package/dist/contract.d.ts.map +1 -1
  15. package/dist/contract.js +3 -2
  16. package/dist/contract.js.map +1 -1
  17. package/dist/hero-banner.d.ts +10 -1
  18. package/dist/hero-banner.d.ts.map +1 -1
  19. package/dist/hero-banner.js +17 -0
  20. package/dist/hero-banner.js.map +1 -1
  21. package/dist/index.d.ts +14 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +8 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/navigation.d.ts +8 -2
  26. package/dist/navigation.d.ts.map +1 -1
  27. package/dist/orders.d.ts +84 -0
  28. package/dist/orders.d.ts.map +1 -0
  29. package/dist/orders.js +188 -0
  30. package/dist/orders.js.map +1 -0
  31. package/dist/profile-header.d.ts +23 -0
  32. package/dist/profile-header.d.ts.map +1 -0
  33. package/dist/profile-header.js +29 -0
  34. package/dist/profile-header.js.map +1 -0
  35. package/dist/promo-banner.d.ts +11 -1
  36. package/dist/promo-banner.d.ts.map +1 -1
  37. package/dist/promo-banner.js +24 -0
  38. package/dist/promo-banner.js.map +1 -1
  39. package/dist/section-header.d.ts +5 -1
  40. package/dist/section-header.d.ts.map +1 -1
  41. package/dist/section-header.js +5 -1
  42. package/dist/section-header.js.map +1 -1
  43. package/dist/sign-in.d.ts +25 -0
  44. package/dist/sign-in.d.ts.map +1 -0
  45. package/dist/sign-in.js +24 -0
  46. package/dist/sign-in.js.map +1 -0
  47. package/dist/version.d.ts +2 -2
  48. package/dist/version.js +2 -2
  49. package/dist/words.d.ts +120 -0
  50. package/dist/words.d.ts.map +1 -1
  51. package/dist/words.js +351 -4
  52. package/dist/words.js.map +1 -1
  53. package/package.json +2 -2
package/dist/version.js CHANGED
@@ -4,6 +4,6 @@
4
4
  * The major is the compatibility line: a Shop package built against another
5
5
  * major never meets this runtime, and a major bump is an announced event.
6
6
  */
7
- export const CONTRACT_VERSION = '4.6.0';
8
- export const CONTRACT_MAJOR = 4;
7
+ export const CONTRACT_VERSION = '5.0.0';
8
+ export const CONTRACT_MAJOR = 5;
9
9
  //# sourceMappingURL=version.js.map
package/dist/words.d.ts CHANGED
@@ -74,6 +74,16 @@ declare const ENGLISH_WORDS: {
74
74
  readonly 'header.categories': "Categories";
75
75
  readonly 'header.language_country': "Language & country";
76
76
  readonly 'promo.promotion': "Promotion";
77
+ readonly 'promo.card_of': "Promotion {position} of {count}";
78
+ readonly 'promo.card_named': "{label}, {position} of {count}";
79
+ readonly 'promo.cards_zero': "No promotions";
80
+ readonly 'promo.cards_one': "1 promotion";
81
+ readonly 'promo.cards_two': "{count} promotions";
82
+ readonly 'promo.cards_few': "{count} promotions";
83
+ readonly 'promo.cards_many': "{count} promotions";
84
+ readonly 'promo.cards_other': "{count} promotions";
85
+ readonly 'hero.page_of': "Page {page} of {pages}";
86
+ readonly 'rail.scroll_hint': "Scroll sideways for more";
77
87
  readonly 'shipping.remaining': "Add {amount} more and your shipping is free";
78
88
  readonly 'shipping.reached': "Your shipping is free";
79
89
  readonly 'shipping.fee': "Shipping is {amount} until you do";
@@ -81,6 +91,7 @@ declare const ENGLISH_WORDS: {
81
91
  readonly 'search.placeholder': "Search";
82
92
  readonly 'search.prompt': "Search the shop for a product";
83
93
  readonly 'search.no_results': "Nothing matched your search";
94
+ readonly 'search.searching': "Searching";
84
95
  readonly 'countdown.days': "Days";
85
96
  readonly 'countdown.hours': "Hours";
86
97
  readonly 'countdown.minutes': "Minutes";
@@ -107,12 +118,119 @@ declare const ENGLISH_WORDS: {
107
118
  readonly 'account.notifications': "Notifications";
108
119
  readonly 'account.privacy': "Privacy";
109
120
  readonly 'account.share_diagnostics': "Share app diagnostics";
121
+ readonly 'account.sign_in': "Sign in";
122
+ readonly 'account.sign_out': "Sign out";
123
+ readonly 'account.email': "Email";
124
+ readonly 'account.continue': "Continue";
125
+ readonly 'account.code_note': "Shopify will email you a code on the next step.";
126
+ readonly 'account.greeting': "Hello, {name}";
127
+ readonly 'account.session_ended': "Your session ended. Sign in again when you need your account.";
128
+ readonly 'account.sign_in_failed': "Could not sign in. Please try again.";
129
+ readonly 'account.settings': "Settings";
130
+ readonly 'account.settings_close': "Close";
131
+ readonly 'account.privacy_policy': "Privacy policy";
132
+ readonly 'account.email_invalid': "Enter a valid email address.";
133
+ readonly 'account.edit_profile': "Edit profile";
134
+ readonly 'account.orders': "Orders";
135
+ readonly 'account.addresses': "Addresses";
136
+ readonly 'account.profile': "Profile";
137
+ readonly 'account.delete_account': "Delete account";
138
+ readonly 'account.complete_profile': "Tell us about you";
139
+ readonly 'account.profile_save': "Save";
140
+ readonly 'account.profile_answer_needed': "This answer is needed.";
141
+ readonly 'account.profile_failed': "Could not save your profile. Please try again.";
142
+ readonly 'account.profile_marketing': "Email me offers and news";
143
+ readonly 'account.manage_contact': "Manage email and phone";
144
+ readonly 'account.profile_choose': "Choose";
145
+ readonly 'account.deletion_title': "Delete your account";
146
+ readonly 'account.deletion_erased': "Your profile, your name and your saved addresses are erased.";
147
+ readonly 'account.deletion_orders_kept': "Your orders stay with the store, because the law requires it to keep them.";
148
+ readonly 'account.deletion_delay': "Shopify erases your data 10 days after this request.";
149
+ readonly 'account.deletion_confirm': "Delete my account";
150
+ readonly 'account.deletion_keep': "Keep my account";
151
+ readonly 'account.deletion_failed': "Could not delete your account. Please try again.";
152
+ readonly 'order.empty': "No orders yet";
153
+ readonly 'order.open': "Open order";
154
+ readonly 'order.items': "Items";
155
+ readonly 'order.tax': "Tax";
156
+ readonly 'order.shipping_address': "Shipping address";
157
+ readonly 'order.delivery_status': "Delivery status";
158
+ readonly 'order.shipment': "Shipment";
159
+ readonly 'order.shipment_failed': "Shipment failed";
160
+ readonly 'order.tracking': "Tracking number";
161
+ readonly 'order.track': "Track with the carrier";
162
+ readonly 'order.expected': "Expected {date}";
163
+ readonly 'order.buy_again': "Buy again";
164
+ readonly 'order.nothing_to_buy': "These items are no longer available";
165
+ readonly 'order.more': "More about this order";
166
+ readonly 'order.cancelled': "Cancelled";
167
+ readonly 'order.delivered': "Delivered";
168
+ readonly 'order.fulfillment.unfulfilled': "Processing";
169
+ readonly 'order.fulfillment.partially_fulfilled': "Partly shipped";
170
+ readonly 'order.fulfillment.fulfilled': "Shipped";
171
+ readonly 'order.fulfillment.in_progress': "In progress";
172
+ readonly 'order.fulfillment.on_hold': "On hold";
173
+ readonly 'order.fulfillment.open': "Open";
174
+ readonly 'order.fulfillment.pending_fulfillment': "Pending";
175
+ readonly 'order.fulfillment.restocked': "Restocked";
176
+ readonly 'order.fulfillment.scheduled': "Scheduled";
177
+ readonly 'order.payment.authorized': "Authorized";
178
+ readonly 'order.payment.expired': "Expired";
179
+ readonly 'order.payment.paid': "Paid";
180
+ readonly 'order.payment.partially_paid': "Partly paid";
181
+ readonly 'order.payment.partially_refunded': "Partly refunded";
182
+ readonly 'order.payment.pending': "Payment pending";
183
+ readonly 'order.payment.refunded': "Refunded";
184
+ readonly 'order.payment.voided': "Voided";
185
+ readonly 'order.event.attempted_delivery': "Delivery attempted";
186
+ readonly 'order.event.carrier_picked_up': "Picked up by the carrier";
187
+ readonly 'order.event.confirmed': "Confirmed";
188
+ readonly 'order.event.delayed': "Delayed";
189
+ readonly 'order.event.failure': "Delivery failed";
190
+ readonly 'order.event.in_transit': "In transit";
191
+ readonly 'order.event.label_printed': "Label printed";
192
+ readonly 'order.event.label_purchased': "Label purchased";
193
+ readonly 'order.event.out_for_delivery': "Out for delivery";
194
+ readonly 'order.event.picked_up': "Picked up";
195
+ readonly 'order.event.ready_for_pickup': "Ready for pickup";
196
+ readonly 'address.default': "Default";
197
+ readonly 'address.edit': "Edit";
198
+ readonly 'address.delete': "Delete";
199
+ readonly 'address.set_default': "Set as default";
200
+ readonly 'address.default_before_delete': "Make another address the default before you delete this one.";
201
+ readonly 'address.delete_confirm': "Delete this address?";
202
+ readonly 'address.keep': "Keep";
203
+ readonly 'address.empty': "No saved addresses yet";
204
+ readonly 'address.change_failed': "Could not update your addresses";
205
+ readonly 'address.add_title': "Add an address";
206
+ readonly 'address.edit_title': "Edit address";
207
+ readonly 'address.save': "Save address";
208
+ readonly 'address.save_failed': "Could not save the address";
209
+ readonly 'address.load_failed': "Could not load this address";
210
+ readonly 'address.choose': "Choose";
211
+ readonly 'address.country': "Country/region";
212
+ readonly 'address.first_name': "First name";
213
+ readonly 'address.last_name': "Last name";
214
+ readonly 'address.company': "Company (optional)";
215
+ readonly 'address.address1': "Address";
216
+ readonly 'address.address2': "Apartment, suite, etc (optional)";
217
+ readonly 'address.city': "City";
218
+ readonly 'address.zone': "Region";
219
+ readonly 'address.zip': "Postal code";
220
+ readonly 'address.phone': "Phone (optional)";
110
221
  };
111
222
  export type WordKey = keyof typeof ENGLISH_WORDS;
112
223
  /** Every functional word key, for a caller that walks the catalog. */
113
224
  export declare const WORD_KEYS: readonly WordKey[];
114
225
  /** The languages the catalog answers in its own right. */
115
226
  export declare const CATALOG_LANGUAGES: readonly LocaleCode[];
227
+ /**
228
+ * The three facts the Deletion Sheet draws under the merchant's own words, in
229
+ * the order it draws them: what is erased, what the store keeps and when
230
+ * Shopify acts. The merchant edits the tone above them and never this list, so
231
+ * every reader of the sheet says the same three things.
232
+ */
233
+ export declare const DELETION_FACTS: readonly ["account.deletion_erased", "account.deletion_orders_kept", "account.deletion_delay"];
116
234
  export interface PlatformWords {
117
235
  /** The platform's own word for this key, in the buyer's language. */
118
236
  own(key: WordKey): string;
@@ -122,6 +240,8 @@ export interface PlatformWords {
122
240
  */
123
241
  merchantOr(text: LocalizedText | undefined, key: WordKey): string;
124
242
  }
243
+ /** A number written in the form the buyer's language counts it in, over the six forms a counted word carries. */
244
+ export declare function countedWord(stem: 'cart.items' | 'promo.cards', count: number, language: LocaleCode, defaultLanguage: LocaleCode): string;
125
245
  /**
126
246
  * How many items a cart holds, written in the form the buyer's language counts
127
247
  * that number in. English and Turkish read no item count for an empty cart as
@@ -1 +1 @@
1
- {"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGzE;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGT,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,aAAa,CAAC;AA8MjD,sEAAsE;AACtE,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAA4C,CAAC;AAErF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAS,UAAU,EAAyB,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;CACnE;AA4BD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,UAAU,GAC1B,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,GAAG,aAAa,CAO9F"}
1
+ {"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGzE;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgNT,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,aAAa,CAAC;AA8ajD,sEAAsE;AACtE,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAA4C,CAAC;AAErF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,SAAS,UAAU,EAAyB,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,cAAc,gGAIY,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;CACnE;AA4BD,iHAAiH;AACjH,wBAAgB,WAAW,CACzB,IAAI,EAAE,YAAY,GAAG,aAAa,EAClC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,UAAU,GAC1B,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,UAAU,GAC1B,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,GAAG,aAAa,CAO9F"}
package/dist/words.js CHANGED
@@ -74,6 +74,16 @@ const ENGLISH_WORDS = {
74
74
  'header.categories': 'Categories',
75
75
  'header.language_country': 'Language & country',
76
76
  'promo.promotion': 'Promotion',
77
+ 'promo.card_of': 'Promotion {position} of {count}',
78
+ 'promo.card_named': '{label}, {position} of {count}',
79
+ 'promo.cards_zero': 'No promotions',
80
+ 'promo.cards_one': '1 promotion',
81
+ 'promo.cards_two': '{count} promotions',
82
+ 'promo.cards_few': '{count} promotions',
83
+ 'promo.cards_many': '{count} promotions',
84
+ 'promo.cards_other': '{count} promotions',
85
+ 'hero.page_of': 'Page {page} of {pages}',
86
+ 'rail.scroll_hint': 'Scroll sideways for more',
77
87
  'shipping.remaining': 'Add {amount} more and your shipping is free',
78
88
  'shipping.reached': 'Your shipping is free',
79
89
  'shipping.fee': 'Shipping is {amount} until you do',
@@ -81,6 +91,7 @@ const ENGLISH_WORDS = {
81
91
  'search.placeholder': 'Search',
82
92
  'search.prompt': 'Search the shop for a product',
83
93
  'search.no_results': 'Nothing matched your search',
94
+ 'search.searching': 'Searching',
84
95
  'countdown.days': 'Days',
85
96
  'countdown.hours': 'Hours',
86
97
  'countdown.minutes': 'Minutes',
@@ -107,6 +118,106 @@ const ENGLISH_WORDS = {
107
118
  'account.notifications': 'Notifications',
108
119
  'account.privacy': 'Privacy',
109
120
  'account.share_diagnostics': 'Share app diagnostics',
121
+ 'account.sign_in': 'Sign in',
122
+ 'account.sign_out': 'Sign out',
123
+ 'account.email': 'Email',
124
+ 'account.continue': 'Continue',
125
+ 'account.code_note': 'Shopify will email you a code on the next step.',
126
+ 'account.greeting': 'Hello, {name}',
127
+ 'account.session_ended': 'Your session ended. Sign in again when you need your account.',
128
+ 'account.sign_in_failed': 'Could not sign in. Please try again.',
129
+ 'account.settings': 'Settings',
130
+ 'account.settings_close': 'Close',
131
+ 'account.privacy_policy': 'Privacy policy',
132
+ 'account.email_invalid': 'Enter a valid email address.',
133
+ 'account.edit_profile': 'Edit profile',
134
+ 'account.orders': 'Orders',
135
+ 'account.addresses': 'Addresses',
136
+ 'account.profile': 'Profile',
137
+ 'account.delete_account': 'Delete account',
138
+ 'account.complete_profile': 'Tell us about you',
139
+ 'account.profile_save': 'Save',
140
+ 'account.profile_answer_needed': 'This answer is needed.',
141
+ 'account.profile_failed': 'Could not save your profile. Please try again.',
142
+ 'account.profile_marketing': 'Email me offers and news',
143
+ 'account.manage_contact': 'Manage email and phone',
144
+ 'account.profile_choose': 'Choose',
145
+ 'account.deletion_title': 'Delete your account',
146
+ 'account.deletion_erased': 'Your profile, your name and your saved addresses are erased.',
147
+ 'account.deletion_orders_kept': 'Your orders stay with the store, because the law requires it to keep them.',
148
+ 'account.deletion_delay': 'Shopify erases your data 10 days after this request.',
149
+ 'account.deletion_confirm': 'Delete my account',
150
+ 'account.deletion_keep': 'Keep my account',
151
+ 'account.deletion_failed': 'Could not delete your account. Please try again.',
152
+ 'order.empty': 'No orders yet',
153
+ 'order.open': 'Open order',
154
+ 'order.items': 'Items',
155
+ 'order.tax': 'Tax',
156
+ 'order.shipping_address': 'Shipping address',
157
+ 'order.delivery_status': 'Delivery status',
158
+ 'order.shipment': 'Shipment',
159
+ 'order.shipment_failed': 'Shipment failed',
160
+ 'order.tracking': 'Tracking number',
161
+ 'order.track': 'Track with the carrier',
162
+ 'order.expected': 'Expected {date}',
163
+ 'order.buy_again': 'Buy again',
164
+ 'order.nothing_to_buy': 'These items are no longer available',
165
+ 'order.more': 'More about this order',
166
+ 'order.cancelled': 'Cancelled',
167
+ 'order.delivered': 'Delivered',
168
+ 'order.fulfillment.unfulfilled': 'Processing',
169
+ 'order.fulfillment.partially_fulfilled': 'Partly shipped',
170
+ 'order.fulfillment.fulfilled': 'Shipped',
171
+ 'order.fulfillment.in_progress': 'In progress',
172
+ 'order.fulfillment.on_hold': 'On hold',
173
+ 'order.fulfillment.open': 'Open',
174
+ 'order.fulfillment.pending_fulfillment': 'Pending',
175
+ 'order.fulfillment.restocked': 'Restocked',
176
+ 'order.fulfillment.scheduled': 'Scheduled',
177
+ 'order.payment.authorized': 'Authorized',
178
+ 'order.payment.expired': 'Expired',
179
+ 'order.payment.paid': 'Paid',
180
+ 'order.payment.partially_paid': 'Partly paid',
181
+ 'order.payment.partially_refunded': 'Partly refunded',
182
+ 'order.payment.pending': 'Payment pending',
183
+ 'order.payment.refunded': 'Refunded',
184
+ 'order.payment.voided': 'Voided',
185
+ 'order.event.attempted_delivery': 'Delivery attempted',
186
+ 'order.event.carrier_picked_up': 'Picked up by the carrier',
187
+ 'order.event.confirmed': 'Confirmed',
188
+ 'order.event.delayed': 'Delayed',
189
+ 'order.event.failure': 'Delivery failed',
190
+ 'order.event.in_transit': 'In transit',
191
+ 'order.event.label_printed': 'Label printed',
192
+ 'order.event.label_purchased': 'Label purchased',
193
+ 'order.event.out_for_delivery': 'Out for delivery',
194
+ 'order.event.picked_up': 'Picked up',
195
+ 'order.event.ready_for_pickup': 'Ready for pickup',
196
+ 'address.default': 'Default',
197
+ 'address.edit': 'Edit',
198
+ 'address.delete': 'Delete',
199
+ 'address.set_default': 'Set as default',
200
+ 'address.default_before_delete': 'Make another address the default before you delete this one.',
201
+ 'address.delete_confirm': 'Delete this address?',
202
+ 'address.keep': 'Keep',
203
+ 'address.empty': 'No saved addresses yet',
204
+ 'address.change_failed': 'Could not update your addresses',
205
+ 'address.add_title': 'Add an address',
206
+ 'address.edit_title': 'Edit address',
207
+ 'address.save': 'Save address',
208
+ 'address.save_failed': 'Could not save the address',
209
+ 'address.load_failed': 'Could not load this address',
210
+ 'address.choose': 'Choose',
211
+ 'address.country': 'Country/region',
212
+ 'address.first_name': 'First name',
213
+ 'address.last_name': 'Last name',
214
+ 'address.company': 'Company (optional)',
215
+ 'address.address1': 'Address',
216
+ 'address.address2': 'Apartment, suite, etc (optional)',
217
+ 'address.city': 'City',
218
+ 'address.zone': 'Region',
219
+ 'address.zip': 'Postal code',
220
+ 'address.phone': 'Phone (optional)',
110
221
  };
111
222
  const ARABIC_WORDS = {
112
223
  'cart.title': 'السلة',
@@ -171,6 +282,16 @@ const ARABIC_WORDS = {
171
282
  'header.categories': 'التصنيفات',
172
283
  'header.language_country': 'اللغة والدولة',
173
284
  'promo.promotion': 'عرض ترويجي',
285
+ 'promo.card_of': 'العرض الترويجي {position} من {count}',
286
+ 'promo.card_named': '{label}، {position} من {count}',
287
+ 'promo.cards_zero': 'لا عروض ترويجية',
288
+ 'promo.cards_one': 'عرض ترويجي واحد',
289
+ 'promo.cards_two': 'عرضان ترويجيان',
290
+ 'promo.cards_few': '{count} عروض ترويجية',
291
+ 'promo.cards_many': '{count} عرضًا ترويجيًا',
292
+ 'promo.cards_other': '{count} عرض ترويجي',
293
+ 'hero.page_of': 'الصفحة {page} من {pages}',
294
+ 'rail.scroll_hint': 'مرّر جانبيًا لعرض المزيد',
174
295
  'shipping.remaining': 'أضف {amount} فقط وتحصل على شحن مجاني',
175
296
  'shipping.reached': 'حصلت على شحن مجاني',
176
297
  'shipping.fee': 'الشحن {amount} حتى تصل إلى الحد',
@@ -178,6 +299,7 @@ const ARABIC_WORDS = {
178
299
  'search.placeholder': 'بحث',
179
300
  'search.prompt': 'ابحث عن منتج في المتجر',
180
301
  'search.no_results': 'لا نتائج لبحثك',
302
+ 'search.searching': 'جارٍ البحث',
181
303
  'countdown.days': 'أيام',
182
304
  'countdown.hours': 'ساعات',
183
305
  'countdown.minutes': 'دقائق',
@@ -204,6 +326,106 @@ const ARABIC_WORDS = {
204
326
  'account.notifications': 'الإشعارات',
205
327
  'account.privacy': 'الخصوصية',
206
328
  'account.share_diagnostics': 'مشاركة بيانات تشخيص التطبيق',
329
+ 'account.sign_in': 'تسجيل الدخول',
330
+ 'account.sign_out': 'تسجيل الخروج',
331
+ 'account.email': 'البريد الإلكتروني',
332
+ 'account.continue': 'متابعة',
333
+ 'account.code_note': 'سترسل Shopify رمزًا إلى بريدك الإلكتروني في الخطوة التالية.',
334
+ 'account.greeting': 'مرحبًا، {name}',
335
+ 'account.session_ended': 'انتهت جلستك. سجّل الدخول مجددًا عندما تحتاج إلى حسابك.',
336
+ 'account.sign_in_failed': 'تعذّر تسجيل الدخول. حاول مرة أخرى.',
337
+ 'account.settings': 'الإعدادات',
338
+ 'account.settings_close': 'إغلاق',
339
+ 'account.privacy_policy': 'سياسة الخصوصية',
340
+ 'account.email_invalid': 'أدخل بريدًا إلكترونيًا صحيحًا.',
341
+ 'account.edit_profile': 'تعديل الملف الشخصي',
342
+ 'account.orders': 'الطلبات',
343
+ 'account.addresses': 'العناوين',
344
+ 'account.profile': 'الملف الشخصي',
345
+ 'account.delete_account': 'حذف الحساب',
346
+ 'account.complete_profile': 'عرّفنا بنفسك',
347
+ 'account.profile_save': 'حفظ',
348
+ 'account.profile_answer_needed': 'هذه الإجابة مطلوبة.',
349
+ 'account.profile_failed': 'تعذّر حفظ ملفك الشخصي. حاول مرة أخرى.',
350
+ 'account.profile_marketing': 'أرسل لي العروض والأخبار بالبريد',
351
+ 'account.manage_contact': 'إدارة البريد والهاتف',
352
+ 'account.profile_choose': 'اختر',
353
+ 'account.deletion_title': 'حذف حسابك',
354
+ 'account.deletion_erased': 'يُمسح ملفك الشخصي واسمك وعناوينك المحفوظة.',
355
+ 'account.deletion_orders_kept': 'تبقى طلباتك لدى المتجر، لأن القانون يلزمه بالاحتفاظ بها.',
356
+ 'account.deletion_delay': 'تمسح Shopify بياناتك بعد 10 أيام من هذا الطلب.',
357
+ 'account.deletion_confirm': 'احذف حسابي',
358
+ 'account.deletion_keep': 'احتفظ بحسابي',
359
+ 'account.deletion_failed': 'تعذّر حذف حسابك. حاول مرة أخرى.',
360
+ 'order.empty': 'لا توجد طلبات بعد',
361
+ 'order.open': 'فتح الطلب',
362
+ 'order.items': 'المنتجات',
363
+ 'order.tax': 'الضريبة',
364
+ 'order.shipping_address': 'عنوان الشحن',
365
+ 'order.delivery_status': 'حالة التوصيل',
366
+ 'order.shipment': 'الشحنة',
367
+ 'order.shipment_failed': 'فشلت الشحنة',
368
+ 'order.tracking': 'رقم التتبع',
369
+ 'order.track': 'تتبع لدى شركة الشحن',
370
+ 'order.expected': 'متوقع {date}',
371
+ 'order.buy_again': 'اشترِ مجدداً',
372
+ 'order.nothing_to_buy': 'هذه المنتجات لم تعد متوفرة',
373
+ 'order.more': 'المزيد عن هذا الطلب',
374
+ 'order.cancelled': 'ملغي',
375
+ 'order.delivered': 'تم التوصيل',
376
+ 'order.fulfillment.unfulfilled': 'قيد التجهيز',
377
+ 'order.fulfillment.partially_fulfilled': 'شُحن جزئياً',
378
+ 'order.fulfillment.fulfilled': 'تم الشحن',
379
+ 'order.fulfillment.in_progress': 'قيد التنفيذ',
380
+ 'order.fulfillment.on_hold': 'معلّق',
381
+ 'order.fulfillment.open': 'مفتوح',
382
+ 'order.fulfillment.pending_fulfillment': 'قيد الانتظار',
383
+ 'order.fulfillment.restocked': 'أُعيد للمخزون',
384
+ 'order.fulfillment.scheduled': 'مجدول',
385
+ 'order.payment.authorized': 'مُصرّح به',
386
+ 'order.payment.expired': 'منتهي الصلاحية',
387
+ 'order.payment.paid': 'مدفوع',
388
+ 'order.payment.partially_paid': 'مدفوع جزئياً',
389
+ 'order.payment.partially_refunded': 'مسترد جزئياً',
390
+ 'order.payment.pending': 'الدفع قيد الانتظار',
391
+ 'order.payment.refunded': 'مسترد',
392
+ 'order.payment.voided': 'ملغى',
393
+ 'order.event.attempted_delivery': 'محاولة توصيل',
394
+ 'order.event.carrier_picked_up': 'استلمته شركة الشحن',
395
+ 'order.event.confirmed': 'تم التأكيد',
396
+ 'order.event.delayed': 'متأخر',
397
+ 'order.event.failure': 'فشل التوصيل',
398
+ 'order.event.in_transit': 'في الطريق',
399
+ 'order.event.label_printed': 'طُبع ملصق الشحن',
400
+ 'order.event.label_purchased': 'تم شراء ملصق الشحن',
401
+ 'order.event.out_for_delivery': 'خرج للتوصيل',
402
+ 'order.event.picked_up': 'تم الاستلام',
403
+ 'order.event.ready_for_pickup': 'جاهز للاستلام',
404
+ 'address.default': 'الافتراضي',
405
+ 'address.edit': 'تعديل',
406
+ 'address.delete': 'حذف',
407
+ 'address.set_default': 'تعيين كافتراضي',
408
+ 'address.default_before_delete': 'اجعل عنوانًا آخر هو الافتراضي قبل حذف هذا العنوان.',
409
+ 'address.delete_confirm': 'هل تريد حذف هذا العنوان؟',
410
+ 'address.keep': 'إبقاء',
411
+ 'address.empty': 'لا توجد عناوين محفوظة بعد',
412
+ 'address.change_failed': 'تعذّر تحديث عناوينك',
413
+ 'address.add_title': 'إضافة عنوان',
414
+ 'address.edit_title': 'تعديل العنوان',
415
+ 'address.save': 'حفظ العنوان',
416
+ 'address.save_failed': 'تعذّر حفظ العنوان',
417
+ 'address.load_failed': 'تعذّر تحميل هذا العنوان',
418
+ 'address.choose': 'اختر',
419
+ 'address.country': 'البلد/المنطقة',
420
+ 'address.first_name': 'الاسم الأول',
421
+ 'address.last_name': 'الاسم الأخير',
422
+ 'address.company': 'الشركة (اختياري)',
423
+ 'address.address1': 'العنوان',
424
+ 'address.address2': 'شقة، جناح، إلخ (اختياري)',
425
+ 'address.city': 'المدينة',
426
+ 'address.zone': 'المنطقة',
427
+ 'address.zip': 'الرمز البريدي',
428
+ 'address.phone': 'الهاتف (اختياري)',
207
429
  };
208
430
  const TURKISH_WORDS = {
209
431
  'cart.title': 'Sepet',
@@ -268,6 +490,16 @@ const TURKISH_WORDS = {
268
490
  'header.categories': 'Kategoriler',
269
491
  'header.language_country': 'Dil ve ülke',
270
492
  'promo.promotion': 'Promosyon',
493
+ 'promo.card_of': '{count} promosyondan {position}. promosyon',
494
+ 'promo.card_named': '{label}, {count} promosyondan {position}.',
495
+ 'promo.cards_zero': 'Promosyon yok',
496
+ 'promo.cards_one': '1 promosyon',
497
+ 'promo.cards_two': '{count} promosyon',
498
+ 'promo.cards_few': '{count} promosyon',
499
+ 'promo.cards_many': '{count} promosyon',
500
+ 'promo.cards_other': '{count} promosyon',
501
+ 'hero.page_of': '{pages} sayfadan {page}. sayfa',
502
+ 'rail.scroll_hint': 'Daha fazlası için yana kaydırın',
271
503
  'shipping.remaining': 'Kargonuz ücretsiz olsun diye {amount} daha ekleyin',
272
504
  'shipping.reached': 'Kargonuz ücretsiz',
273
505
  'shipping.fee': 'O zamana kadar kargo {amount}',
@@ -275,6 +507,7 @@ const TURKISH_WORDS = {
275
507
  'search.placeholder': 'Ara',
276
508
  'search.prompt': 'Mağazada bir ürün arayın',
277
509
  'search.no_results': 'Aramanızla eşleşen bir sonuç yok',
510
+ 'search.searching': 'Aranıyor',
278
511
  'countdown.days': 'Gün',
279
512
  'countdown.hours': 'Saat',
280
513
  'countdown.minutes': 'Dakika',
@@ -301,6 +534,106 @@ const TURKISH_WORDS = {
301
534
  'account.notifications': 'Bildirimler',
302
535
  'account.privacy': 'Gizlilik',
303
536
  'account.share_diagnostics': 'Uygulama tanılama verilerini paylaş',
537
+ 'account.sign_in': 'Giriş yap',
538
+ 'account.sign_out': 'Çıkış yap',
539
+ 'account.email': 'E-posta',
540
+ 'account.continue': 'Devam et',
541
+ 'account.code_note': 'Shopify bir sonraki adımda e-postanıza bir kod gönderecek.',
542
+ 'account.greeting': 'Merhaba, {name}',
543
+ 'account.session_ended': 'Oturumunuz sona erdi. Hesabınıza ihtiyaç duyduğunuzda yeniden giriş yapın.',
544
+ 'account.sign_in_failed': 'Giriş yapılamadı. Lütfen tekrar deneyin.',
545
+ 'account.settings': 'Ayarlar',
546
+ 'account.settings_close': 'Kapat',
547
+ 'account.privacy_policy': 'Gizlilik politikası',
548
+ 'account.email_invalid': 'Geçerli bir e-posta adresi girin.',
549
+ 'account.edit_profile': 'Profili düzenle',
550
+ 'account.orders': 'Siparişler',
551
+ 'account.addresses': 'Adresler',
552
+ 'account.profile': 'Profil',
553
+ 'account.delete_account': 'Hesabı sil',
554
+ 'account.complete_profile': 'Bize kendinizi tanıtın',
555
+ 'account.profile_save': 'Kaydet',
556
+ 'account.profile_answer_needed': 'Bu yanıt gerekli.',
557
+ 'account.profile_failed': 'Profiliniz kaydedilemedi. Lütfen tekrar deneyin.',
558
+ 'account.profile_marketing': 'Bana kampanya ve haber e-postası gönder',
559
+ 'account.manage_contact': 'E-posta ve telefonu yönet',
560
+ 'account.profile_choose': 'Seçin',
561
+ 'account.deletion_title': 'Hesabınızı silin',
562
+ 'account.deletion_erased': 'Profiliniz, adınız ve kayıtlı adresleriniz silinir.',
563
+ 'account.deletion_orders_kept': 'Siparişleriniz mağazada kalır, çünkü yasa onları saklamasını zorunlu kılar.',
564
+ 'account.deletion_delay': 'Shopify verilerinizi bu istekten 10 gün sonra siler.',
565
+ 'account.deletion_confirm': 'Hesabımı sil',
566
+ 'account.deletion_keep': 'Hesabımı koru',
567
+ 'account.deletion_failed': 'Hesabınız silinemedi. Lütfen tekrar deneyin.',
568
+ 'order.empty': 'Henüz sipariş yok',
569
+ 'order.open': 'Siparişi aç',
570
+ 'order.items': 'Ürünler',
571
+ 'order.tax': 'Vergi',
572
+ 'order.shipping_address': 'Teslimat adresi',
573
+ 'order.delivery_status': 'Teslimat durumu',
574
+ 'order.shipment': 'Gönderi',
575
+ 'order.shipment_failed': 'Gönderi başarısız',
576
+ 'order.tracking': 'Takip numarası',
577
+ 'order.track': 'Kargo firmasında takip et',
578
+ 'order.expected': 'Tahmini {date}',
579
+ 'order.buy_again': 'Tekrar satın al',
580
+ 'order.nothing_to_buy': 'Bu ürünler artık mevcut değil',
581
+ 'order.more': 'Bu sipariş hakkında daha fazlası',
582
+ 'order.cancelled': 'İptal edildi',
583
+ 'order.delivered': 'Teslim edildi',
584
+ 'order.fulfillment.unfulfilled': 'Hazırlanıyor',
585
+ 'order.fulfillment.partially_fulfilled': 'Kısmen gönderildi',
586
+ 'order.fulfillment.fulfilled': 'Gönderildi',
587
+ 'order.fulfillment.in_progress': 'İşlemde',
588
+ 'order.fulfillment.on_hold': 'Beklemede',
589
+ 'order.fulfillment.open': 'Açık',
590
+ 'order.fulfillment.pending_fulfillment': 'Bekliyor',
591
+ 'order.fulfillment.restocked': 'Stoğa iade edildi',
592
+ 'order.fulfillment.scheduled': 'Planlandı',
593
+ 'order.payment.authorized': 'Provizyon alındı',
594
+ 'order.payment.expired': 'Süresi doldu',
595
+ 'order.payment.paid': 'Ödendi',
596
+ 'order.payment.partially_paid': 'Kısmen ödendi',
597
+ 'order.payment.partially_refunded': 'Kısmen iade edildi',
598
+ 'order.payment.pending': 'Ödeme bekliyor',
599
+ 'order.payment.refunded': 'İade edildi',
600
+ 'order.payment.voided': 'Geçersiz',
601
+ 'order.event.attempted_delivery': 'Teslimat denendi',
602
+ 'order.event.carrier_picked_up': 'Kargo firması teslim aldı',
603
+ 'order.event.confirmed': 'Onaylandı',
604
+ 'order.event.delayed': 'Gecikti',
605
+ 'order.event.failure': 'Teslimat başarısız',
606
+ 'order.event.in_transit': 'Yolda',
607
+ 'order.event.label_printed': 'Etiket yazdırıldı',
608
+ 'order.event.label_purchased': 'Etiket satın alındı',
609
+ 'order.event.out_for_delivery': 'Dağıtıma çıktı',
610
+ 'order.event.picked_up': 'Teslim alındı',
611
+ 'order.event.ready_for_pickup': 'Teslim almaya hazır',
612
+ 'address.default': 'Varsayılan',
613
+ 'address.edit': 'Düzenle',
614
+ 'address.delete': 'Sil',
615
+ 'address.set_default': 'Varsayılan yap',
616
+ 'address.default_before_delete': 'Bunu silmeden önce başka bir adresi varsayılan yapın.',
617
+ 'address.delete_confirm': 'Bu adres silinsin mi?',
618
+ 'address.keep': 'Vazgeç',
619
+ 'address.empty': 'Henüz kayıtlı adres yok',
620
+ 'address.change_failed': 'Adresleriniz güncellenemedi',
621
+ 'address.add_title': 'Adres ekle',
622
+ 'address.edit_title': 'Adresi düzenle',
623
+ 'address.save': 'Adresi kaydet',
624
+ 'address.save_failed': 'Adres kaydedilemedi',
625
+ 'address.load_failed': 'Bu adres yüklenemedi',
626
+ 'address.choose': 'Seçin',
627
+ 'address.country': 'Ülke/bölge',
628
+ 'address.first_name': 'Ad',
629
+ 'address.last_name': 'Soyad',
630
+ 'address.company': 'Şirket (isteğe bağlı)',
631
+ 'address.address1': 'Adres',
632
+ 'address.address2': 'Apartman, daire vb. (isteğe bağlı)',
633
+ 'address.city': 'Şehir',
634
+ 'address.zone': 'Bölge',
635
+ 'address.zip': 'Posta kodu',
636
+ 'address.phone': 'Telefon (isteğe bağlı)',
304
637
  };
305
638
  const CATALOG = {
306
639
  en: ENGLISH_WORDS,
@@ -311,6 +644,17 @@ const CATALOG = {
311
644
  export const WORD_KEYS = Object.keys(ENGLISH_WORDS);
312
645
  /** The languages the catalog answers in its own right. */
313
646
  export const CATALOG_LANGUAGES = Object.keys(CATALOG);
647
+ /**
648
+ * The three facts the Deletion Sheet draws under the merchant's own words, in
649
+ * the order it draws them: what is erased, what the store keeps and when
650
+ * Shopify acts. The merchant edits the tone above them and never this list, so
651
+ * every reader of the sheet says the same three things.
652
+ */
653
+ export const DELETION_FACTS = [
654
+ 'account.deletion_erased',
655
+ 'account.deletion_orders_kept',
656
+ 'account.deletion_delay',
657
+ ];
314
658
  /** The language the catalog answers a buyer's in, which is English where it carries none. */
315
659
  function tableLanguageOf(language) {
316
660
  if (CATALOG[language] !== undefined)
@@ -338,16 +682,19 @@ function pluralCategoryOf(count, language) {
338
682
  return 'few';
339
683
  return hundreds >= 11 && hundreds <= 99 ? 'many' : 'other';
340
684
  }
685
+ /** A number written in the form the buyer's language counts it in, over the six forms a counted word carries. */
686
+ export function countedWord(stem, count, language, defaultLanguage) {
687
+ const category = pluralCategoryOf(count, tableLanguageOf(language));
688
+ const word = platformWords(language, defaultLanguage).own(`${stem}_${category}`);
689
+ return word.replaceAll(COUNT_SLOT, String(count));
690
+ }
341
691
  /**
342
692
  * How many items a cart holds, written in the form the buyer's language counts
343
693
  * that number in. English and Turkish read no item count for an empty cart as
344
694
  * a plural of nothing, which is why the zero form is in the catalog too.
345
695
  */
346
696
  export function cartItemCount(count, language, defaultLanguage) {
347
- const spoken = tableLanguageOf(language);
348
- const category = pluralCategoryOf(count, spoken);
349
- const word = platformWords(language, defaultLanguage).own(`cart.items_${category}`);
350
- return word.replaceAll(COUNT_SLOT, String(count));
697
+ return countedWord('cart.items', count, language, defaultLanguage);
351
698
  }
352
699
  /**
353
700
  * The catalog bound to one buyer: their language for the platform's own words,