@salla.sa/twilight-components 2.9.49 → 2.10.1

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 (85) hide show
  1. package/dist/cjs/{index-7b85482c.js → app-globals-0a1abeac.js} +31 -2
  2. package/dist/cjs/index-1d2b3370.js +0 -4
  3. package/dist/cjs/loader.cjs.js +3 -2
  4. package/dist/cjs/salla-add-product-button.cjs.entry.js +7 -3
  5. package/dist/cjs/salla-button_35.cjs.entry.js +614 -1947
  6. package/dist/cjs/twilight.cjs.js +3 -2
  7. package/dist/collection/collection-manifest.json +0 -1
  8. package/dist/collection/components/salla-add-product-button/salla-add-product-button.js +9 -5
  9. package/dist/collection/components/salla-button/salla-button.js +5 -1
  10. package/dist/collection/components/salla-file-upload/salla-file-upload.js +9 -8
  11. package/dist/collection/components/salla-gifting/salla-gifting.js +16 -15
  12. package/dist/collection/components/salla-loyalty/salla-loyalty.js +5 -3
  13. package/dist/collection/components/salla-map/salla-map.css +1 -56
  14. package/dist/collection/components/salla-map/salla-map.js +6 -6
  15. package/dist/collection/components/salla-offer-modal/salla-offer-modal.js +17 -16
  16. package/dist/collection/components/salla-quick-order/salla-quick-order.css +0 -71
  17. package/dist/collection/components/salla-quick-order/salla-quick-order.js +65 -102
  18. package/dist/collection/components/salla-rating-stars/salla-rating-stars.js +14 -10
  19. package/dist/collection/components/salla-slider/salla-slider.css +242 -0
  20. package/dist/collection/components/salla-slider/salla-slider.js +461 -109
  21. package/dist/collection/components/salla-tel-input/salla-tel-input.js +1 -2
  22. package/dist/collection/global/app-dev.js +2 -1
  23. package/dist/collection/global/app.js +15 -0
  24. package/dist/components/index.d.ts +0 -1
  25. package/dist/components/index.js +31 -3
  26. package/dist/components/salla-add-product-button.js +7 -3
  27. package/dist/components/salla-button2.js +5 -1
  28. package/dist/components/salla-file-upload2.js +249 -3
  29. package/dist/components/salla-gifting.js +24 -17
  30. package/dist/components/salla-loyalty.js +3 -3
  31. package/dist/components/salla-map.js +4 -4
  32. package/dist/components/salla-offer-modal.js +10 -9
  33. package/dist/components/salla-quick-order.js +58 -95
  34. package/dist/components/salla-rating-stars2.js +8 -4
  35. package/dist/components/salla-slider2.js +253 -1805
  36. package/dist/components/salla-tel-input2.js +2 -2
  37. package/dist/esm/{index-adc28dc8.js → app-globals-d3b05078.js} +31 -2
  38. package/dist/esm/index-f1d446ac.js +0 -4
  39. package/dist/esm/loader.js +3 -2
  40. package/dist/esm/salla-add-product-button.entry.js +7 -3
  41. package/dist/esm/salla-button_35.entry.js +613 -1946
  42. package/dist/esm/twilight.js +3 -2
  43. package/dist/esm-es5/{index-adc28dc8.js → app-globals-d3b05078.js} +2 -2
  44. package/dist/esm-es5/index-f1d446ac.js +2 -2
  45. package/dist/esm-es5/loader.js +1 -1
  46. package/dist/esm-es5/salla-add-product-button.entry.js +1 -1
  47. package/dist/esm-es5/salla-button_35.entry.js +11 -5
  48. package/dist/esm-es5/twilight.js +1 -1
  49. package/dist/twilight/p-1b14dc52.js +24 -0
  50. package/dist/twilight/{p-486ce499.system.entry.js → p-5a1197bb.system.entry.js} +1 -1
  51. package/dist/twilight/p-6bb79b61.entry.js +30 -0
  52. package/dist/twilight/p-70235d2a.system.js +24 -0
  53. package/dist/twilight/p-97f66179.system.js +4 -0
  54. package/dist/twilight/{p-6f41faf8.entry.js → p-dbb379ce.entry.js} +1 -1
  55. package/dist/twilight/p-ec1b297c.system.entry.js +47 -0
  56. package/dist/twilight/twilight.esm.js +1 -1
  57. package/dist/twilight/twilight.js +1 -1
  58. package/dist/types/components/salla-quick-order/salla-quick-order.d.ts +4 -7
  59. package/dist/types/components/salla-slider/salla-slider.d.ts +87 -14
  60. package/dist/types/components.d.ts +99 -60
  61. package/dist/types/global/app-dev.d.ts +0 -1
  62. package/package.json +6 -4
  63. package/dist/cjs/core-c7a9fb22.js +0 -4982
  64. package/dist/cjs/salla-swiper.cjs.entry.js +0 -62
  65. package/dist/collection/components/salla-swiper/salla-swiper.css +0 -177
  66. package/dist/collection/components/salla-swiper/salla-swiper.js +0 -152
  67. package/dist/components/arrow-left.js +0 -11
  68. package/dist/components/core.js +0 -4959
  69. package/dist/components/salla-swiper.d.ts +0 -11
  70. package/dist/components/salla-swiper.js +0 -92
  71. package/dist/esm/core-572aabd0.js +0 -4973
  72. package/dist/esm/salla-swiper.entry.js +0 -58
  73. package/dist/esm-es5/core-572aabd0.js +0 -4
  74. package/dist/esm-es5/salla-swiper.entry.js +0 -4
  75. package/dist/twilight/p-00e66d1a.system.js +0 -4
  76. package/dist/twilight/p-684a004a.system.entry.js +0 -4
  77. package/dist/twilight/p-6ed7d3a2.js +0 -4
  78. package/dist/twilight/p-7234a2a2.entry.js +0 -30
  79. package/dist/twilight/p-a84812f4.system.js +0 -4
  80. package/dist/twilight/p-d3daf7a7.system.entry.js +0 -41
  81. package/dist/twilight/p-e55e8d3d.js +0 -24
  82. package/dist/twilight/p-e8c3c209.entry.js +0 -4
  83. package/dist/twilight/p-ea021b56.system.js +0 -24
  84. package/dist/types/components/salla-swiper/salla-swiper.d.ts +0 -31
  85. package/dist/types/index.d.ts +0 -7
@@ -1,17 +1,14 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { Component, Host, h, Prop, State, Event } from '@stencil/core';
5
- import HideIcon from '../../assets/svg/eye-off.svg';
4
+ import { Component, Host, h, Prop, State, Event, Element } from '@stencil/core';
6
5
  import CelebrationIcon from '../../assets/svg/party-horn.svg';
6
+ import PortraitIcon from '../../assets/svg/portrait.svg';
7
+ import IphoneXIcon from '../../assets/svg/iphone-x.svg';
8
+ import MailIcon from '../../assets/svg/mail.svg';
9
+ import CancelIcon from '../../assets/svg/cancel.svg';
7
10
  export class SallaQuickOrder {
8
11
  constructor() {
9
- this.errorMessages = {
10
- terms: 'Terms should be agreed.',
11
- name: 'Name with at least 3 chars is required.',
12
- email: 'Correct email is required.',
13
- phone: 'Correct Phone is required.',
14
- };
15
12
  /**
16
13
  * quick order title
17
14
  */
@@ -45,7 +42,6 @@ export class SallaQuickOrder {
45
42
  this.expanded = false;
46
43
  this.isTermsRequired = false;
47
44
  this.countryCode = salla.config.get('user.country_code', 'SA') || 'SA';
48
- this.errors = [];
49
45
  this.submitSucess = false;
50
46
  //Langugae states
51
47
  this.placeHolderEmail = salla.lang.get('common.elements.email');
@@ -61,36 +57,22 @@ export class SallaQuickOrder {
61
57
  this.agreementShowText = salla.lang.get('pages.checkout.show_full_agreement');
62
58
  this.agreementModalHead = salla.lang.get('pages.checkout.full_agreement');
63
59
  this.userNameLabel = salla.lang.get('pages.products.your_name');
64
- this.errorMessages.terms = salla.lang.get('pages.checkout.check_agreement');
65
- this.errorMessages.email = salla.lang.get('pages.checkout.email_required');
66
- this.errorMessages.phone = salla.lang.get('common.errors.field_required', { attribute: salla.lang.get('common.elements.mobile') });
67
- this.errorMessages.name = salla.lang.get('common.errors.field_required', { attribute: this.userNameLabel });
68
60
  });
69
61
  }
70
- fetchQuickCheckout() {
71
- return salla.api.withoutNotifier(() => salla.api.cart.getQuickCheckoutSettings().then(res => {
72
- var _a, _b;
73
- this.isAvailable = true;
74
- this.quickOrderTitle = res.data.title;
75
- this.subTitle = res.data.sub_title;
76
- this.payButtonTitle = res.data.order_now_button;
77
- this.isEmailRequired = res.data.is_email_required;
78
- this.isTermsRequired = res.data.show_agreement;
79
- this.agreementText = res.data.agreement;
80
- this.confirmPayButtonTitle = res.data.confirm_button;
81
- this.thanksMessage = res.data.thanks_message;
82
- this.quickOrderStyle = res.data.style;
83
- this.user = salla.config.get('user') || salla.storage.get('user') || {};
84
- this.countryCode = ((_a = this.user) === null || _a === void 0 ? void 0 : _a.country_code) || this.countryCode;
85
- // make email required if user is gust or is required from server
86
- this.isEmailRequired = ((_b = this.user) === null || _b === void 0 ? void 0 : _b.email) ? false : this.isEmailRequired;
87
- // check if one click is available
88
- this.oneClick = !(this.isTermsRequired || this.isEmailRequired) && this.user !== null;
89
- }));
90
- }
91
62
  getBtnColor() {
92
63
  return this.quickOrderStyle === 'default' ? 'light' : 'primary';
93
64
  }
65
+ async setWrapperHeight() {
66
+ let expandable = this.host.querySelector('.s-quick-order-expandable');
67
+ setTimeout(() => {
68
+ if (expandable.style.maxHeight || this.oneClick) {
69
+ expandable.style.maxHeight = null;
70
+ }
71
+ else {
72
+ expandable.style.maxHeight = expandable.scrollHeight + "px";
73
+ }
74
+ }, 50);
75
+ }
94
76
  getDarkOrLight() {
95
77
  return this.quickOrderStyle === 'default' && salla.config.get('theme.color.is_dark') ? 'dark' : 'light';
96
78
  }
@@ -101,9 +83,11 @@ export class SallaQuickOrder {
101
83
  default: salla.config.get('theme.color.primary'),
102
84
  }[this.quickOrderStyle] || '#f3f3f3';
103
85
  }
104
- async submit(checkOneClick = false) {
86
+ async submit(e, checkOneClick = false) {
87
+ e.preventDefault();
105
88
  if (checkOneClick && !this.oneClick) {
106
89
  this.expanded = !this.expanded;
90
+ this.setWrapperHeight();
107
91
  return;
108
92
  }
109
93
  return this.getPayload()
@@ -114,40 +98,6 @@ export class SallaQuickOrder {
114
98
  })
115
99
  .catch(error => error && console.error(error));
116
100
  }
117
- async isValid() {
118
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
119
- const inputErrorClass = 's-has-error';
120
- this.errors = [];
121
- if (this.isTermsRequired && !this.termsChecked) {
122
- this.termsInput.classList.add(inputErrorClass);
123
- this.errors.push(this.errorMessages.terms);
124
- }
125
- const emailValue = (_a = this.emailInput) === null || _a === void 0 ? void 0 : _a.value;
126
- const nameValue = (_b = this.nameInput) === null || _b === void 0 ? void 0 : _b.value;
127
- const phone = await ((_c = this.phoneInput) === null || _c === void 0 ? void 0 : _c.getValues());
128
- const phoneValue = phone === null || phone === void 0 ? void 0 : phone.phone;
129
- if (Salla.config.isGuest()) {
130
- (_d = this.nameInput) === null || _d === void 0 ? void 0 : _d.classList.remove(inputErrorClass);
131
- (_e = this.emailInput) === null || _e === void 0 ? void 0 : _e.classList.remove(inputErrorClass);
132
- (_f = this.phoneInput) === null || _f === void 0 ? void 0 : _f.classList.remove(inputErrorClass);
133
- // email check
134
- if (this.isEmailRequired && (!emailValue || !/\S+@\S+\.\S+/.test(emailValue))) {
135
- (_g = this.emailInput) === null || _g === void 0 ? void 0 : _g.classList.add(inputErrorClass);
136
- this.errors.push(this.errorMessages.email);
137
- }
138
- // phone check
139
- if (!phoneValue || !/^\d+$/.test(phoneValue)) {
140
- (_h = this.phoneInput) === null || _h === void 0 ? void 0 : _h.classList.add(inputErrorClass);
141
- this.errors.push(this.errorMessages.phone);
142
- }
143
- // name check
144
- if (!nameValue || nameValue.length < 3) {
145
- (_j = this.nameInput) === null || _j === void 0 ? void 0 : _j.classList.add(inputErrorClass);
146
- this.errors.push(this.errorMessages.name);
147
- }
148
- }
149
- return this.errors.length === 0;
150
- }
151
101
  async getPayload() {
152
102
  var _a, _b, _c, _d, _e, _f;
153
103
  if (this.oneClick) {
@@ -156,14 +106,10 @@ export class SallaQuickOrder {
156
106
  agreement: true,
157
107
  };
158
108
  }
159
- if (!(await this.isValid())) {
160
- this.errors.forEach(error => console.error(error));
161
- throw 'Validation failed.';
162
- }
163
109
  return {
164
110
  product_ids: [this.productId],
165
111
  email: (_a = this.emailInput) === null || _a === void 0 ? void 0 : _a.value,
166
- phone: (_c = (await ((_b = this.phoneInput) === null || _b === void 0 ? void 0 : _b.getValues()))) === null || _c === void 0 ? void 0 : _c.phone,
112
+ phone: Number((_c = (await ((_b = this.phoneInput) === null || _b === void 0 ? void 0 : _b.getValues()))) === null || _c === void 0 ? void 0 : _c.phone),
167
113
  country_code: ((_e = (await ((_d = this.phoneInput) === null || _d === void 0 ? void 0 : _d.getValues()))) === null || _e === void 0 ? void 0 : _e.countryCode) || this.countryCode,
168
114
  name: (_f = this.nameInput) === null || _f === void 0 ? void 0 : _f.value,
169
115
  agreement: this.termsChecked,
@@ -177,14 +123,6 @@ export class SallaQuickOrder {
177
123
  const parsedToDOM = new DOMParser().parseFromString(agreement_text, 'text/html');
178
124
  return parsedToDOM.documentElement.innerText.substring(0, length) + '...';
179
125
  }
180
- clearErrors() {
181
- var _a, _b, _c, _d;
182
- this.errors = [];
183
- (_a = this.termsInput) === null || _a === void 0 ? void 0 : _a.classList.remove('s-has-error');
184
- (_b = this.emailInput) === null || _b === void 0 ? void 0 : _b.classList.remove('s-has-error');
185
- (_c = this.nameInput) === null || _c === void 0 ? void 0 : _c.classList.remove('s-has-error');
186
- (_d = this.phoneInput) === null || _d === void 0 ? void 0 : _d.classList.remove('s-has-error');
187
- }
188
126
  render() {
189
127
  if (!this.isAvailable) {
190
128
  return;
@@ -199,29 +137,54 @@ export class SallaQuickOrder {
199
137
  h("div", { class: `s-quick-order-container s-quick-order-${this.quickOrderStyle}`, style: { backgroundColor: this.getStyleColor() } },
200
138
  h("div", { class: "s-quick-order-button-cont" },
201
139
  h("div", null,
202
- h("h1", null, this.quickOrderTitle),
140
+ h("h3", null, this.quickOrderTitle),
203
141
  h("p", null, this.subTitle)),
204
- h("salla-button", { onClick: () => this.submit(true), color: this.getBtnColor() }, this.oneClick
205
- ? this.confirmPayButtonTitle : this.expanded ? h("i", { innerHTML: HideIcon }) : this.confirmPayButtonTitle)),
206
- h("div", { class: 's-quick-order-expandable ' + (this.expanded ? 's-quick-order-show' : '') },
207
- Salla.config.isGuest() && [
208
- h("input", { type: "text", value: this.user.name, placeholder: this.user.name || this.userNameLabel, ref: el => (this.nameInput = el), onFocus: () => this.clearErrors() }),
209
- h("div", { class: 's-quick-order-flex-input' },
210
- h("input", { type: "email", value: this.user.email, required: this.isEmailRequired, placeholder: this.placeHolderEmail + ' ' + (this.isEmailRequired ? '' : this.emailOptional), ref: el => (this.emailInput = el), onFocus: () => this.clearErrors() }),
211
- h("salla-tel-input", { phone: this.user.mobile, ref: el => (this.phoneInput = el), onFocus: () => this.clearErrors(), onBlur: () => this.clearErrors() })),
212
- ],
213
- this.isTermsRequired && (h("label", { class: "s-quick-order-checkbox-container" },
214
- h("input", { onChange: () => (this.termsChecked = this.termsInput.checked), ref: el => (this.termsInput = el), type: "checkbox", onFocus: () => this.clearErrors() }),
215
- this.agreementText && (h("div", { innerHTML: this.formatAgreementText(this.agreementText, 150) }, this.agreementText.length > 150 && (h("salla-button", { shape: "link", onClick: () => this.agreementModal.open() }, this.agreementShowText)))))),
216
- this.errors.length > 0 && (h("div", { class: "s-quick-order-errors" }, this.errors.map(error => h("p", null,
217
- "- ",
218
- error)))),
219
- h("salla-button", { color: this.getBtnColor(), width: "wide", onClick: () => this.submit() }, this.payButtonTitle)),
142
+ h("salla-button", { onClick: (e) => this.submit(e, true), color: this.getBtnColor() }, this.oneClick
143
+ ? this.confirmPayButtonTitle : this.expanded ? h("i", { innerHTML: CancelIcon }) : this.confirmPayButtonTitle)),
144
+ h("form", { onSubmit: (e) => this.submit(e), class: 's-quick-order-expandable ' + (this.expanded ? 's-quick-order-shown' : '') },
145
+ Salla.config.isGuest() &&
146
+ [
147
+ h("div", { class: "s-form-group" },
148
+ h("span", { innerHTML: PortraitIcon }),
149
+ h("input", { type: "text", required: true, class: "s-form-control", placeholder: this.userNameLabel, ref: el => (this.nameInput = el) })),
150
+ h("div", { class: "s-quick-order-flex-input" },
151
+ h("div", { class: "s-form-group" },
152
+ h("span", { innerHTML: IphoneXIcon }),
153
+ h("salla-tel-input", { ref: el => (this.phoneInput = el) })),
154
+ h("div", { class: "s-form-group" },
155
+ h("span", { innerHTML: MailIcon }),
156
+ h("input", { type: "email", class: "s-form-control", required: this.isEmailRequired, placeholder: this.placeHolderEmail + ' ' + (this.isEmailRequired ? '' : this.emailOptional), ref: el => (this.emailInput = el) }))),
157
+ ],
158
+ this.isTermsRequired && (h("label", { htmlFor: "terms", class: "s-quick-order-terms" },
159
+ h("input", { type: "checkbox", required: true, name: 'terms', id: 'terms', ref: el => (this.termsInput = el), onChange: () => (this.termsChecked = this.termsInput.checked), class: "s-checkbox" }),
160
+ h("span", { class: "s-form-label" },
161
+ " ",
162
+ h("div", { innerHTML: this.formatAgreementText(this.agreementText, 150) }, this.agreementText.length > 150 && (h("salla-button", { shape: "link", onClick: () => this.agreementModal.open() }, this.agreementShowText))),
163
+ " "))),
164
+ h("salla-button", { type: "submit", color: this.getBtnColor(), width: "wide" }, this.payButtonTitle)),
220
165
  h("salla-modal", { "modal-title": this.agreementModalHead, ref: modal => (this.agreementModal = modal) },
221
166
  h("article", { innerHTML: this.agreementText })))));
222
167
  }
223
- componentDidLoad() {
224
- this.fetchQuickCheckout();
168
+ componentWillLoad() {
169
+ return salla.api.withoutNotifier(() => salla.api.cart.getQuickCheckoutSettings().then(res => {
170
+ var _a, _b;
171
+ this.isAvailable = true;
172
+ this.quickOrderTitle = res.data.title;
173
+ this.subTitle = res.data.sub_title;
174
+ this.payButtonTitle = res.data.order_now_button;
175
+ this.isEmailRequired = res.data.is_email_required;
176
+ this.isTermsRequired = res.data.show_agreement;
177
+ this.agreementText = res.data.agreement;
178
+ this.confirmPayButtonTitle = res.data.confirm_button;
179
+ this.thanksMessage = res.data.thanks_message;
180
+ this.quickOrderStyle = res.data.style;
181
+ this.user = salla.config.get('user') || salla.storage.get('user') || {};
182
+ this.countryCode = ((_a = this.user) === null || _a === void 0 ? void 0 : _a.country_code) || this.countryCode;
183
+ // make email required if user is gust or is required from server
184
+ this.isEmailRequired = ((_b = this.user) === null || _b === void 0 ? void 0 : _b.email) ? false : this.isEmailRequired;
185
+ // check if one click is available
186
+ this.oneClick = !(this.isTermsRequired || this.isEmailRequired) && this.user !== null;
187
+ }));
225
188
  }
226
189
  static get is() { return "salla-quick-order"; }
227
190
  static get originalStyleUrls() { return {
@@ -399,7 +362,6 @@ export class SallaQuickOrder {
399
362
  "expanded": {},
400
363
  "isTermsRequired": {},
401
364
  "countryCode": {},
402
- "errors": {},
403
365
  "submitSucess": {},
404
366
  "placeHolderEmail": {},
405
367
  "emailOptional": {},
@@ -424,4 +386,5 @@ export class SallaQuickOrder {
424
386
  "references": {}
425
387
  }
426
388
  }]; }
389
+ static get elementRef() { return "host"; }
427
390
  }
@@ -59,16 +59,20 @@ export class SallaRatingStars {
59
59
  return stars;
60
60
  }
61
61
  render() {
62
- return (h(Host, null, this.value || this.value == 0 ?
63
- h("div", { class: "s-rating-stars-wrapper" },
64
- " ",
65
- this.createStars(this.value),
66
- " ")
67
- :
68
- h("div", { class: "s-rating-stars-element", ref: (el) => this.startsElem = el },
69
- h("input", { type: "hidden", class: "rating_hidden_input", name: this.name, value: "" }),
70
- [1, 2, 3, 4, 5].map(star => h("button", { class: `s-rating-stars-btn-star s-rating-stars-` + this.size, "data-star": star },
71
- h("span", { innerHTML: Star2 }))))));
62
+ var _a;
63
+ //TODO:: find a better fix, this is a patch for issue that duplicates the stars twice @see the screenshot inside this folder
64
+ return ((_a = this.host.closest('.swiper-slide')) === null || _a === void 0 ? void 0 : _a.classList.contains('swiper-slide-duplicate'))
65
+ ? ''
66
+ : (h(Host, null, this.value || this.value == 0 ?
67
+ h("div", { class: "s-rating-stars-wrapper" },
68
+ " ",
69
+ this.createStars(this.value),
70
+ " ")
71
+ :
72
+ h("div", { class: "s-rating-stars-element", ref: (el) => this.startsElem = el },
73
+ h("input", { type: "hidden", class: "rating_hidden_input", name: this.name, value: "" }),
74
+ [1, 2, 3, 4, 5].map(star => h("button", { class: `s-rating-stars-btn-star s-rating-stars-` + this.size, "data-star": star },
75
+ h("span", { innerHTML: Star2 }))))));
72
76
  }
73
77
  componentDidLoad() {
74
78
  this.initiateRating();
@@ -170,4 +170,246 @@
170
170
  }
171
171
  .swiper-centered > .swiper-wrapper > .swiper-slide {
172
172
  scroll-snap-align: center center;
173
+ }
174
+
175
+ :root {
176
+ /*
177
+ --swiper-pagination-color: var(--swiper-theme-color);
178
+ --swiper-pagination-bullet-size: 8px;
179
+ --swiper-pagination-bullet-width: 8px;
180
+ --swiper-pagination-bullet-height: 8px;
181
+ --swiper-pagination-bullet-inactive-color: #000;
182
+ --swiper-pagination-bullet-inactive-opacity: 0.2;
183
+ --swiper-pagination-bullet-opacity: 1;
184
+ --swiper-pagination-bullet-horizontal-gap: 4px;
185
+ --swiper-pagination-bullet-vertical-gap: 6px;
186
+ */
187
+ }
188
+
189
+ .swiper-pagination {
190
+ position: absolute;
191
+ text-align: center;
192
+ transition: 300ms opacity;
193
+ transform: translate3d(0, 0, 0);
194
+ z-index: 10;
195
+ }
196
+ .swiper-pagination.swiper-pagination-hidden {
197
+ opacity: 0;
198
+ }
199
+ .swiper-pagination-disabled > .swiper-pagination, .swiper-pagination.swiper-pagination-disabled {
200
+ display: none !important;
201
+ }
202
+
203
+ /* Common Styles */
204
+ .swiper-pagination-fraction,
205
+ .swiper-pagination-custom,
206
+ .swiper-horizontal > .swiper-pagination-bullets,
207
+ .swiper-pagination-bullets.swiper-pagination-horizontal {
208
+ bottom: 10px;
209
+ left: 0;
210
+ width: 100%;
211
+ }
212
+
213
+ /* Bullets */
214
+ .swiper-pagination-bullets-dynamic {
215
+ overflow: hidden;
216
+ font-size: 0;
217
+ }
218
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
219
+ transform: scale(0.33);
220
+ position: relative;
221
+ }
222
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
223
+ transform: scale(1);
224
+ }
225
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
226
+ transform: scale(1);
227
+ }
228
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
229
+ transform: scale(0.66);
230
+ }
231
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
232
+ transform: scale(0.33);
233
+ }
234
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
235
+ transform: scale(0.66);
236
+ }
237
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
238
+ transform: scale(0.33);
239
+ }
240
+
241
+ .swiper-pagination-bullet {
242
+ width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));
243
+ height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));
244
+ display: inline-block;
245
+ border-radius: 50%;
246
+ background: var(--swiper-pagination-bullet-inactive-color, #000);
247
+ opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);
248
+ }
249
+ button.swiper-pagination-bullet {
250
+ border: none;
251
+ margin: 0;
252
+ padding: 0;
253
+ box-shadow: none;
254
+ appearance: none;
255
+ }
256
+
257
+ .swiper-pagination-clickable .swiper-pagination-bullet {
258
+ cursor: pointer;
259
+ }
260
+ .swiper-pagination-bullet:only-child {
261
+ display: none !important;
262
+ }
263
+
264
+ .swiper-pagination-bullet-active {
265
+ opacity: var(--swiper-pagination-bullet-opacity, 1);
266
+ background: var(--swiper-pagination-color, var(--swiper-theme-color));
267
+ }
268
+
269
+ .swiper-vertical > .swiper-pagination-bullets,
270
+ .swiper-pagination-vertical.swiper-pagination-bullets {
271
+ right: 10px;
272
+ top: 50%;
273
+ transform: translate3d(0px, -50%, 0);
274
+ }
275
+ .swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,
276
+ .swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {
277
+ margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;
278
+ display: block;
279
+ }
280
+ .swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
281
+ .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
282
+ top: 50%;
283
+ transform: translateY(-50%);
284
+ width: 8px;
285
+ }
286
+ .swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,
287
+ .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
288
+ display: inline-block;
289
+ transition: 200ms transform, 200ms top;
290
+ }
291
+
292
+ .swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,
293
+ .swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {
294
+ margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);
295
+ }
296
+ .swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
297
+ .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
298
+ left: 50%;
299
+ transform: translateX(-50%);
300
+ white-space: nowrap;
301
+ }
302
+ .swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,
303
+ .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
304
+ transition: 200ms transform, 200ms left;
305
+ }
306
+
307
+ .swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
308
+ transition: 200ms transform, 200ms right;
309
+ }
310
+
311
+ /* Progress */
312
+ .swiper-pagination-progressbar {
313
+ background: rgba(0, 0, 0, 0.25);
314
+ position: absolute;
315
+ }
316
+ .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
317
+ background: var(--swiper-pagination-color, var(--swiper-theme-color));
318
+ position: absolute;
319
+ left: 0;
320
+ top: 0;
321
+ width: 100%;
322
+ height: 100%;
323
+ transform: scale(0);
324
+ transform-origin: left top;
325
+ }
326
+ .swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
327
+ transform-origin: right top;
328
+ }
329
+ .swiper-horizontal > .swiper-pagination-progressbar, .swiper-pagination-progressbar.swiper-pagination-horizontal, .swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, .swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {
330
+ width: 100%;
331
+ height: 4px;
332
+ left: 0;
333
+ top: 0;
334
+ }
335
+ .swiper-vertical > .swiper-pagination-progressbar, .swiper-pagination-progressbar.swiper-pagination-vertical, .swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, .swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {
336
+ width: 4px;
337
+ height: 100%;
338
+ left: 0;
339
+ top: 0;
340
+ }
341
+
342
+ .swiper-pagination-lock {
343
+ display: none;
344
+ }
345
+
346
+ :root {
347
+ --swiper-navigation-size: 44px;
348
+ /*
349
+ --swiper-navigation-color: var(--swiper-theme-color);
350
+ */
351
+ }
352
+
353
+ .swiper-button-prev,
354
+ .swiper-button-next {
355
+ position: absolute;
356
+ top: 50%;
357
+ width: calc(var(--swiper-navigation-size) / 44 * 27);
358
+ height: var(--swiper-navigation-size);
359
+ margin-top: calc(0px - var(--swiper-navigation-size) / 2);
360
+ z-index: 10;
361
+ cursor: pointer;
362
+ display: flex;
363
+ align-items: center;
364
+ justify-content: center;
365
+ color: var(--swiper-navigation-color, var(--swiper-theme-color));
366
+ }
367
+ .swiper-button-prev.swiper-button-disabled,
368
+ .swiper-button-next.swiper-button-disabled {
369
+ opacity: 0.35;
370
+ cursor: auto;
371
+ pointer-events: none;
372
+ }
373
+ .swiper-button-prev.swiper-button-hidden,
374
+ .swiper-button-next.swiper-button-hidden {
375
+ opacity: 0;
376
+ cursor: auto;
377
+ pointer-events: none;
378
+ }
379
+ .swiper-navigation-disabled .swiper-button-prev,
380
+ .swiper-navigation-disabled .swiper-button-next {
381
+ display: none !important;
382
+ }
383
+ .swiper-button-prev:after,
384
+ .swiper-button-next:after {
385
+ font-family: swiper-icons;
386
+ font-size: var(--swiper-navigation-size);
387
+ text-transform: none !important;
388
+ letter-spacing: 0;
389
+ font-variant: initial;
390
+ line-height: 1;
391
+ }
392
+
393
+ .swiper-button-prev,
394
+ .swiper-rtl .swiper-button-next {
395
+ left: 10px;
396
+ right: auto;
397
+ }
398
+ .swiper-button-prev:after,
399
+ .swiper-rtl .swiper-button-next:after {
400
+ content: "prev";
401
+ }
402
+
403
+ .swiper-button-next,
404
+ .swiper-rtl .swiper-button-prev {
405
+ right: 10px;
406
+ left: auto;
407
+ }
408
+ .swiper-button-next:after,
409
+ .swiper-rtl .swiper-button-prev:after {
410
+ content: "next";
411
+ }
412
+
413
+ .swiper-button-lock {
414
+ display: none;
173
415
  }