@salla.sa/twilight 2.14.371 → 2.14.372

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/lib/init-static-sections.js"],"sourcesContent":["//todo:: remove all the usages of the document, we need it to be SSR friendly\nexport default class InitStaticSections {\n constructor() {\n Salla.event.on('twilight::before.ready', () => this.renderAll());\n }\n async renderAll() {\n await Salla.lang.onLoaded();\n this.renderAppInstall();\n this.renderEdit();\n this.applyContentCopyright();\n this.renderTemplateStore();\n\n // Auto-mount components into hooks\n Salla.hooks.renderAutoComponents([\n { hook: 'body:end', tag: 'salla-cookies-bar', canRender: () => Salla.config.get('store.features')?.includes('website-cookies') },\n ]);\n\n if (!Salla.helpers.isIframe()) {\n this.renderMaintenance();\n this.renderThemePreview();\n }\n }\n\n\n\n renderMaintenance() {\n if (!Salla.config.get('maintenance')) {\n return;\n }\n\n document.body.classList.add('has-maintenance-bar');\n if (document.querySelector('salla-maintenance-alert')) {\n Salla.logger.warn('salla-maintenance-alert element Existed before!');\n return;\n }\n\n document.body.prepend(document.createElement('salla-maintenance-alert'));\n }\n\n renderTemplateStore() {\n if (!Salla.config.get('store.template')) {\n return;\n }\n\n document.body.classList.add('has-bottom-alert');\n if (document.querySelector('salla-bottom-alert')) {\n Salla.logger.warn('salla-bottom-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-bottom-alert'));\n }\n\n renderAppInstall() {\n if (!Salla.config.get('store.app_install_prompt') || !Salla.config.get('store.apps') || Salla.storage.get('app_install_prompt_disabled') || Salla.config.isMobileApp()) {\n return;\n }\n\n document.body.classList.add('has-app-install-alert');\n if (document.querySelector('salla-app-install-alert')) {\n Salla.logger.warn('salla-app-install-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-app-install-alert'));\n }\n renderThemePreview() {\n if (Salla.config.get('theme.mode') !== 'preview') {\n return;\n }\n document.body.classList.add('has-preview-bar');\n if (document.querySelector('#s-theme_preview_bar')) {\n Salla.logger.warn('#s-theme_preview_bar element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-theme_preview_bar';\n alertElement.setAttribute('style', 'display: flex; justify-content: space-between; text-align: center; background-color: #232323; color: #fff; padding: 10px; font-size: 0.875rem; line-height: 1.25rem; position: relative;');\n alertElement.innerHTML = `\n <div style=\"display:flex; align-items:center;\">\n <img width=\"32\" src=\"https://cdn.salla.network/images/logo/logo-light.svg\">\n <span style=\"margin:0 10px;\">${Salla.lang.get('blocks.header.preview_mode')}: <span style=\"background:rgba(255,255,255,0.25);border-radius:15px; padding:2px 15px 4px\">${Salla.config.get('theme.name')}</span></span>\n </div>\n <a href=\"${Salla.url.get('preview_theme/cancel/preview')}\" style=\"line-height:32px; width:32px;\"><i class=\"sicon-cancel\"></i></a>\n `;\n document.body.prepend(alertElement);\n }\n\n /**\n * @deprecated\n */\n renderEdit() {\n let edit = Salla.config.get('edit');\n if (!edit) {\n return;\n }\n if (document.querySelector('#s-edit-alert')) {\n Salla.logger.warn('#s-edit-alert element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-edit-alert';\n alertElement.innerHTML = `\n <a href=\"${edit}\" style=\"display:block; background-color:${Salla.config.get('theme.color.primary', '#5cd5c4')}; color:${Salla.config.get('theme.color.reverse', '#fff')}; padding: 10px; text-align:center; font-size: 0.875rem; line-height: 1.25rem;\">\n <i class=\"sicon-edit\"></i> \n ${Salla.lang.get('pages.products.quick_edit')}\n </a>\n `;\n document.body.prepend(alertElement);\n }\n\n applyContentCopyright() {\n if (!Salla.config.get('store.settings.content_copyright')) {\n return;\n }\n\n // Helper to check if element is an input\n const isInputElement = (element) => {\n if (!element) return false;\n const tagName = element.tagName?.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n };\n\n // Common event prevention (excluding inputs)\n const preventEvents = ['contextmenu', 'selectstart', 'copy'];\n preventEvents.forEach((event) => {\n document.addEventListener(event, (e) => {\n if (!isInputElement(e.target)) {\n e.preventDefault();\n }\n });\n });\n\n // Prevent common dev tools shortcuts\n document.addEventListener('keydown', (e) => {\n const key = e.key.toLowerCase();\n const blockedCombos = (\n key === 'f12' ||\n (e.ctrlKey && e.shiftKey && ['i', 'j', 'c'].includes(key)) ||\n (e.ctrlKey && key === 'u')\n );\n if (blockedCombos) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n // Inject protection styles (excluding inputs)\n const style = document.createElement('style');\n style.textContent = `\n body {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n input, textarea {\n -webkit-touch-callout: auto;\n -webkit-user-select: auto;\n -moz-user-select: auto;\n -ms-user-select: auto;\n user-select: auto;\n }\n img {\n pointer-events: none;\n -webkit-user-drag: none;\n }\n `;\n document.head.appendChild(style);\n }\n}"],"names":["InitStaticSections","constructor","Salla","event","on","this","renderAll","lang","onLoaded","renderAppInstall","renderEdit","applyContentCopyright","renderTemplateStore","hooks","renderAutoComponents","hook","tag","canRender","_Salla$config$get","config","get","includes","helpers","isIframe","renderMaintenance","renderThemePreview","document","body","classList","add","querySelector","logger","warn","prepend","createElement","append","storage","isMobileApp","alertElement","id","setAttribute","innerHTML","edit","forEach","addEventListener","e","element","_element$tagName","tagName","toLowerCase","isInputElement","target","preventDefault","key","ctrlKey","shiftKey","stopPropagation","style","textContent"],"mappings":"6zoEA+EA,MAAAA,EAAA,WAAAC,GAAAC,MAAAC,MAAAC,GAAA,0BAAA,IAAAC,KAAAC,aAAA,CAAA,eAAAA,SAAAJ,MAAAK,KAAAC,WAAAH,KAAAI,mBAAAJ,KAAAK,aAAAL,KAAAM,wBAAAN,KAAAO,sBAAAV,MAAAW,MAAAC,qBAAA,CAAA,CAAAC,KAAA,WAAAC,IAAA,oBAAAC,UAAA,KAAA,IAAAC,EAAA,OAAA,OAAAA,EAAAhB,MAAAiB,OAAAC,IAAA,wBAAA,EAAAF,EAAAG,SAAA,kBAAA,KAAAnB,MAAAoB,QAAAC,aAAAlB,KAAAmB,oBAAAnB,KAAAoB,qBAAA,CAAA,iBAAAD,GAAAtB,MAAAiB,OAAAC,IAAA,iBAAAM,SAAAC,KAAAC,UAAAC,IAAA,uBAAAH,SAAAI,cAAA,2BAAA5B,MAAA6B,OAAAC,KAAA,mDAAAN,SAAAC,KAAAM,QAAAP,SAAAQ,cAAA,4BAAA,CAAA,mBAAAtB,GAAAV,MAAAiB,OAAAC,IAAA,oBAAAM,SAAAC,KAAAC,UAAAC,IAAA,oBAAAH,SAAAI,cAAA,sBAAA5B,MAAA6B,OAAAC,KAAA,8CAAAN,SAAAC,KAAAQ,OAAAT,SAAAQ,cAAA,uBAAA,CAAA,gBAAAzB,GAAAP,MAAAiB,OAAAC,IAAA,6BAAAlB,MAAAiB,OAAAC,IAAA,gBAAAlB,MAAAkC,QAAAhB,IAAA,iCAAAlB,MAAAiB,OAAAkB,gBAAAX,SAAAC,KAAAC,UAAAC,IAAA,yBAAAH,SAAAI,cAAA,2BAAA5B,MAAA6B,OAAAC,KAAA,mDAAAN,SAAAC,KAAAQ,OAAAT,SAAAQ,cAAA,4BAAA,CAAA,kBAAAT,GAAA,GAAA,YAAAvB,MAAAiB,OAAAC,IAAA,cAAA,OAAA,GAAAM,SAAAC,KAAAC,UAAAC,IAAA,mBAAAH,SAAAI,cAAA,wBAAA,YAAA5B,MAAA6B,OAAAC,KAAA,gDAAA,IAAAM,EAAAZ,SAAAQ,cAAA,OAAAI,EAAAC,GAAA,sBAAAD,EAAAE,aAAA,QAAA,4LAAAF,EAAAG,UAAA,8MAGAvC,MAAAK,KAAAa,IAAA,2HAAAlB,MAAAiB,OAAAC,IAAA,mFAGkBa,IAAOb,IAACkB,wHAkB1BZ,SAAAC,KAAyBe,8BAAgDxC,MAAMiB,OAAOC,IAAI,QAAA,IAAAsB,EAAA,OAAuB,GAAAhB,SAAUI,cAAiBX,iBAAyC,YAA9BjB,MAAA6B,OAAuBC,KAAM,yCAAC,IAAAM,EAAAZ,SAAAQ,cAAA,OAAAI,EAAAC,GAAA,eAAAD,EAAAG,UAAA,4BACrLC,6CAAAxC,MAAAiB,OAAAC,IAAA,sBAAA,qBAAAlB,MAAAiB,OAAAC,IAAA,sBAAA,yJAEAlB,MAAAK,KAAAa,IAAA,iEA4CAM,SAAAC,KAAAM,QAAAK,EAAA,CAAA,qBAAA3B,GAAA,IAAAT,MAAAiB,OAAAC,IAAA,oCAAA,OAAA,CAAA,cAAA,cAAA,QAAAuB,SAAAxC,IAAAuB,SAAAkB,iBAAAzC,GAAA0C,IAAAC,KAAA,IAAAC,EAAA,IAAAD,EAAA,OAAA,EAAA,MAAAE,EAAA,OAAAD,EAAAD,EAAAE,cAAA,EAAAD,EAAAE,cAAA,MAAA,UAAAD,GAAA,aAAAA,CAAA,EAAAE,CAAAL,EAAAM,SAAAN,EAAAO,gBAAA,GAAA,IAAA1B,SAAAkB,iBAAA,WAAAC,IAAA,MAAAQ,EAAAR,EAAAQ,IAAAJ,eAAA,QAAAI,GAAAR,EAAAS,SAAAT,EAAAU,UAAA,CAAA,IAAA,IAAA,KAAAlC,SAAAgC,IAAAR,EAAAS,SAAA,MAAAD,KAAAR,EAAAO,iBAAAP,EAAAW,kBAAA,IAAA,MAAAC,EAAA/B,SAAAQ,cAAA,SAAAuB,EAAAC,YAAA"}
1
+ {"version":3,"file":"index.js","sources":["../../src/lib/init-static-sections.js"],"sourcesContent":["//todo:: remove all the usages of the document, we need it to be SSR friendly\nexport default class InitStaticSections {\n constructor() {\n Salla.event.on('twilight::before.ready', () => this.renderAll());\n }\n async renderAll() {\n await Salla.lang.onLoaded();\n this.renderAppInstall();\n this.renderEdit();\n this.applyContentCopyright();\n this.renderTemplateStore();\n\n // Auto-mount components into hooks\n Salla.hooks.renderAutoComponents([\n { hook: 'body:end', tag: 'salla-cookies-bar', canRender: () => Salla.config.get('store.features')?.includes('website-cookies') },\n { hook: 'body:end', tag: 'salla-bullet-delivery', canRender: () => Salla.config.get('store.features')?.includes('bullet-delivery-v2') },\n ]);\n\n if (!Salla.helpers.isIframe()) {\n this.renderMaintenance();\n this.renderThemePreview();\n }\n }\n\n\n\n renderMaintenance() {\n if (!Salla.config.get('maintenance')) {\n return;\n }\n\n document.body.classList.add('has-maintenance-bar');\n if (document.querySelector('salla-maintenance-alert')) {\n Salla.logger.warn('salla-maintenance-alert element Existed before!');\n return;\n }\n\n document.body.prepend(document.createElement('salla-maintenance-alert'));\n }\n\n renderTemplateStore() {\n if (!Salla.config.get('store.template')) {\n return;\n }\n\n document.body.classList.add('has-bottom-alert');\n if (document.querySelector('salla-bottom-alert')) {\n Salla.logger.warn('salla-bottom-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-bottom-alert'));\n }\n\n renderAppInstall() {\n if (!Salla.config.get('store.app_install_prompt') || !Salla.config.get('store.apps') || Salla.storage.get('app_install_prompt_disabled') || Salla.config.isMobileApp()) {\n return;\n }\n\n document.body.classList.add('has-app-install-alert');\n if (document.querySelector('salla-app-install-alert')) {\n Salla.logger.warn('salla-app-install-alert element Existed before!');\n return;\n }\n\n document.body.append(document.createElement('salla-app-install-alert'));\n }\n renderThemePreview() {\n if (Salla.config.get('theme.mode') !== 'preview') {\n return;\n }\n document.body.classList.add('has-preview-bar');\n if (document.querySelector('#s-theme_preview_bar')) {\n Salla.logger.warn('#s-theme_preview_bar element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-theme_preview_bar';\n alertElement.setAttribute('style', 'display: flex; justify-content: space-between; text-align: center; background-color: #232323; color: #fff; padding: 10px; font-size: 0.875rem; line-height: 1.25rem; position: relative;');\n alertElement.innerHTML = `\n <div style=\"display:flex; align-items:center;\">\n <img width=\"32\" src=\"https://cdn.salla.network/images/logo/logo-light.svg\">\n <span style=\"margin:0 10px;\">${Salla.lang.get('blocks.header.preview_mode')}: <span style=\"background:rgba(255,255,255,0.25);border-radius:15px; padding:2px 15px 4px\">${Salla.config.get('theme.name')}</span></span>\n </div>\n <a href=\"${Salla.url.get('preview_theme/cancel/preview')}\" style=\"line-height:32px; width:32px;\"><i class=\"sicon-cancel\"></i></a>\n `;\n document.body.prepend(alertElement);\n }\n\n /**\n * @deprecated\n */\n renderEdit() {\n let edit = Salla.config.get('edit');\n if (!edit) {\n return;\n }\n if (document.querySelector('#s-edit-alert')) {\n Salla.logger.warn('#s-edit-alert element Existed before!');\n return;\n }\n let alertElement = document.createElement('div');\n alertElement.id = 's-edit-alert';\n alertElement.innerHTML = `\n <a href=\"${edit}\" style=\"display:block; background-color:${Salla.config.get('theme.color.primary', '#5cd5c4')}; color:${Salla.config.get('theme.color.reverse', '#fff')}; padding: 10px; text-align:center; font-size: 0.875rem; line-height: 1.25rem;\">\n <i class=\"sicon-edit\"></i> \n ${Salla.lang.get('pages.products.quick_edit')}\n </a>\n `;\n document.body.prepend(alertElement);\n }\n\n applyContentCopyright() {\n if (!Salla.config.get('store.settings.content_copyright')) {\n return;\n }\n\n // Helper to check if element is an input\n const isInputElement = (element) => {\n if (!element) return false;\n const tagName = element.tagName?.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n };\n\n // Common event prevention (excluding inputs)\n const preventEvents = ['contextmenu', 'selectstart', 'copy'];\n preventEvents.forEach((event) => {\n document.addEventListener(event, (e) => {\n if (!isInputElement(e.target)) {\n e.preventDefault();\n }\n });\n });\n\n // Prevent common dev tools shortcuts\n document.addEventListener('keydown', (e) => {\n const key = e.key.toLowerCase();\n const blockedCombos = (\n key === 'f12' ||\n (e.ctrlKey && e.shiftKey && ['i', 'j', 'c'].includes(key)) ||\n (e.ctrlKey && key === 'u')\n );\n if (blockedCombos) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n // Inject protection styles (excluding inputs)\n const style = document.createElement('style');\n style.textContent = `\n body {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n input, textarea {\n -webkit-touch-callout: auto;\n -webkit-user-select: auto;\n -moz-user-select: auto;\n -ms-user-select: auto;\n user-select: auto;\n }\n img {\n pointer-events: none;\n -webkit-user-drag: none;\n }\n `;\n document.head.appendChild(style);\n }\n}"],"names":["InitStaticSections","constructor","Salla","event","on","this","renderAll","lang","onLoaded","renderAppInstall","renderEdit","applyContentCopyright","renderTemplateStore","hooks","renderAutoComponents","hook","tag","canRender","_Salla$config$get","config","get","includes","_Salla$config$get2","helpers","isIframe","renderMaintenance","renderThemePreview","document","body","classList","add","querySelector","logger","warn","prepend","createElement","append","storage","isMobileApp","alertElement","id","setAttribute","innerHTML","edit","forEach","addEventListener","e","element","_element$tagName","tagName","toLowerCase","isInputElement","target","preventDefault","key","ctrlKey","shiftKey","stopPropagation","style","textContent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salla.sa/twilight",
3
- "version": "2.14.371",
3
+ "version": "2.14.372",
4
4
  "description": "Salla Theme Toolkit, Webcomponents, Events, Requests, Utils",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -34,7 +34,7 @@
34
34
  "homepage": "https://salla.dev",
35
35
  "dependencies": {
36
36
  "@jitsu/js": "^1.10.0",
37
- "@salla.sa/base": "2.14.371",
37
+ "@salla.sa/base": "2.14.372",
38
38
  "axios": "^1.6.7",
39
39
  "infinite-scroll": "^4.0.1",
40
40
  "jwt-decode": "^4.0.0",
@@ -70,5 +70,5 @@
70
70
  "peerDependencies": {
71
71
  "webpack": "^4 || ^5"
72
72
  },
73
- "gitHead": "dacdae413d4284b3476d0ab9cc15aa714437355d"
73
+ "gitHead": "782d6ff694bfb8cc691ac9b54ee2cb7a725e20da"
74
74
  }
@@ -8,6 +8,212 @@ export interface Language {
8
8
  country_code: string;
9
9
  }
10
10
 
11
+ type Networks = 'mada' | 'masterCard' | 'visa';
12
+
13
+ export type Apps = {
14
+ appstore?: string;
15
+ googleplay?: string;
16
+ };
17
+
18
+ export type DevelopmentStoreTemplate = {
19
+ price: number;
20
+ price_details: {
21
+ currency: string;
22
+ items: {
23
+ product_price: number;
24
+ price: number;
25
+ quantity: number;
26
+ }[];
27
+ total: number;
28
+ };
29
+ developer?: {
30
+ name: string;
31
+ url?: string;
32
+ };
33
+ };
34
+
35
+ export type StoreSettings = {
36
+ auth: {
37
+ email_allowed: boolean;
38
+ mobile_allowed: boolean;
39
+ is_email_required: boolean;
40
+ countries?: string[];
41
+ force_login?: boolean;
42
+ };
43
+ cart?: {
44
+ apply_coupon_enabled: boolean;
45
+ };
46
+ product?: {
47
+ total_sold_enabled: boolean;
48
+ manual_quantity: boolean;
49
+ fit_type?: string;
50
+ related_products_enabled: boolean;
51
+ filters: {
52
+ category_id?: boolean;
53
+ brand_id?: boolean;
54
+ price?: boolean;
55
+ variants?: boolean;
56
+ rating?: boolean;
57
+ tag_name?: boolean;
58
+ };
59
+ show_comments?: boolean;
60
+ user_can_comment?: boolean;
61
+ show_price_as_dash?: boolean;
62
+ notify_options_availability?: boolean;
63
+ show_special_offers?: boolean;
64
+ show_more?: boolean;
65
+ availability_notify?: {
66
+ email?: boolean;
67
+ mobile?: boolean;
68
+ sms?: boolean;
69
+ whatsapp?: boolean;
70
+ };
71
+ category?: {
72
+ testimonial_enabled?: boolean;
73
+ };
74
+ };
75
+ payments: PaymentName[];
76
+ arabic_numbers_enabled: boolean;
77
+ content_copyright?: boolean;
78
+ use_sar_symbol?: boolean;
79
+ is_multilingual?: boolean;
80
+ currencies_enabled?: boolean;
81
+ rating_enabled?: boolean;
82
+ rating?: {
83
+ is_enabled?: boolean;
84
+ show_on_category?: boolean;
85
+ show_on_product?: boolean;
86
+ can_rate_store?: boolean;
87
+ can_rate_product?: boolean;
88
+ can_rate_shipping?: boolean;
89
+ show_rating_summary?: boolean;
90
+ show_recommendation?: boolean;
91
+ allow_likes?: boolean;
92
+ allow_attach_images?: boolean;
93
+ allow_contact_support?: boolean;
94
+ allow_update?: boolean;
95
+ update_period?: number;
96
+ can_customer_hide_name?: boolean;
97
+ visitor_can_comment?:boolean;
98
+ page_feedback_enabled?:boolean;
99
+ };
100
+ blog?: {
101
+ is_enabled?: boolean;
102
+ allow_likes_and_comments?: boolean;
103
+ };
104
+ is_loyalty_enabled?: boolean;
105
+ keys?: {
106
+ maps?: string;
107
+ gtm?: string[];
108
+ };
109
+ is_salla_gateway?: boolean;
110
+ upload_size?: number;
111
+ tax?: {
112
+ number?: string;
113
+ certificate?: string;
114
+ taxable_prices_enabled?: boolean;
115
+ };
116
+ certificate?: string;
117
+ made_in_ksa?: boolean;
118
+ commercial_number?: string;
119
+ freelance_number?: string;
120
+ buy_now?: {
121
+ networks?: Networks[];
122
+ countries: string[];
123
+ multi_currency: boolean;
124
+ is_digital: boolean;
125
+ };
126
+ installments: Installment[];
127
+ quick_order?: {
128
+ title?: string;
129
+ sub_title?: string;
130
+ thanks_message?: string;
131
+ order_now_button?: string;
132
+ is_email_required?: boolean;
133
+ show_agreement?: boolean;
134
+ style?: 'grey' | 'white' | 'default';
135
+ confirm_button?: string;
136
+ agreement?: string;
137
+ allowed_countries?: string[];
138
+ };
139
+ bullet_delivery?: {
140
+ enabled?: boolean;
141
+ supports_pickup?: boolean;
142
+ customer_location?: {
143
+ country?: string;
144
+ city?: string;
145
+ };
146
+ settings?: {
147
+ type?: string;
148
+ is_required?: boolean;
149
+ remember_last_session?: boolean;
150
+ };
151
+ };
152
+ };
153
+
154
+ export type StoreContacts = {
155
+ whatsapp?: string;
156
+ mobile?: string;
157
+ phone?: string;
158
+ email?: string;
159
+ telegram?: string;
160
+ };
161
+
162
+ export type StoreSocial = {
163
+ instagram?: string;
164
+ twitter?: string;
165
+ snapchat?: string;
166
+ tiktok?: string;
167
+ youtube?: string;
168
+ facebook?: string;
169
+ pinterest?: string;
170
+ };
171
+
172
+ export type StoreScope = {
173
+ id: number;
174
+ name: string;
175
+ selected: boolean;
176
+ type: string;
177
+ is_open: boolean;
178
+ display_as?: string;
179
+ languages: string[];
180
+ currencies: string[];
181
+ countries: string[];
182
+ always_ask: boolean;
183
+ allocation?: {
184
+ type: string;
185
+ branch_id: number;
186
+ };
187
+ };
188
+
189
+ export interface StoreConfig {
190
+ id: number;
191
+ url: string;
192
+ logo?: string;
193
+ name?: string;
194
+ username?: string;
195
+ description?: string;
196
+ icon?: string;
197
+ api?: string;
198
+ settings?: StoreSettings;
199
+ meta?: {
200
+ title?: string;
201
+ description?: string;
202
+ keywords?: string;
203
+ };
204
+ contacts?: StoreContacts;
205
+ social?: StoreSocial;
206
+ scope?: StoreScope;
207
+ store_country: string; // TODO: should be replace with country but for backward compatibility, we need to keep it for now.
208
+ country?: string;
209
+ /** Numeric store ray/shard identifier from the API. */
210
+ ray?: number;
211
+ /** Feature flags enabled for this store, e.g. ["guest-checkout", "salla-account"]. */
212
+ features?: string[];
213
+ template?: DevelopmentStoreTemplate;
214
+ apps?: Apps;
215
+ }
216
+
11
217
  type Installment = 'tabby_installment' | 'tamara_installment' | 'spotii_pay';
12
218
  type PaymentName = Installment | 'mada' | 'credit_card' | 'paypal' | 'bank' | 'stc_pay' | 'apple_pay' | 'knet';
13
219
  export type TwilightConfigName = 'maintenance'
@@ -20,6 +226,18 @@ export type TwilightConfigName = 'maintenance'
20
226
  | 'store.id'
21
227
  | 'store.logo'
22
228
  | 'store.name'
229
+ | 'store.username'
230
+ | 'store.description'
231
+ | 'store.icon'
232
+ | 'store.contacts'
233
+ | 'store.social'
234
+ | 'store.scope'
235
+ | 'store.store_country'
236
+ | 'store.country'
237
+ | 'store.ray'
238
+ | 'store.features'
239
+ | 'store.template'
240
+ | 'store.apps'
23
241
  | 'store.api'
24
242
  | 'store.settings'
25
243
  | 'store.settings.auth'
@@ -74,23 +292,7 @@ export interface TwilightConfig {
74
292
  sdk?: {
75
293
  notifier_handler_disabled: boolean
76
294
  },
77
- store: {
78
- url: string;
79
- id: number;
80
- logo?: string;
81
- name?: string;
82
- api?: string;
83
- settings?: {
84
- auth: {
85
- email_allowed: boolean;
86
- mobile_allowed: boolean;
87
- is_email_required: boolean;
88
- };
89
- arabic_numbers_enabled: boolean;
90
- payments: PaymentName[];
91
- installments: Installment[];
92
- };
93
- };
295
+ store: StoreConfig;
94
296
  user?: {
95
297
  type?: 'user' | 'guest';
96
298
  id?: string | number;
@@ -122,4 +324,4 @@ export interface TwilightConfig {
122
324
  slug?: string;
123
325
  id?: number;//available in product.single, customer.orders.single, cart, thank-you, page-single
124
326
  };
125
- }
327
+ }