@salla.sa/twilight-components 2.14.537 → 2.14.539

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 (685) hide show
  1. package/dist/cjs/{cancel-B5SbMYEk.js → cancel-De6vslRA.js} +2 -2
  2. package/dist/cjs/{check-BnVBPQNp.js → check-x3w3-gpj.js} +2 -2
  3. package/dist/cjs/{filepond-BKilDzmk.js → filepond-CIpOpiw6.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-poster-DMIbAyAM.js → filepond-plugin-file-poster-CPV_SZrj.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-size-NaEK453w.js → filepond-plugin-file-validate-size-C_XGylG1.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-file-validate-type-C4fSQyfm.js → filepond-plugin-file-validate-type-CmVS48lk.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-edit-M4p4znH2.js → filepond-plugin-image-edit-KfqhH5F9.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-exif-orientation-BmZUQ1qY.js → filepond-plugin-image-exif-orientation-BfRIDxO-.js} +1 -1
  9. package/dist/cjs/{filepond-plugin-image-preview-DQeJbx48.js → filepond-plugin-image-preview-DlvO4sHZ.js} +1 -1
  10. package/dist/cjs/{gift-DbNivqYO.js → gift-CJ-3Yw_x.js} +2 -2
  11. package/dist/cjs/{gift-sharing-BE0uszUm.js → gift-sharing-CStz46FA.js} +2 -2
  12. package/dist/cjs/{index-B_5gLFr2.js → index-CMDyFi6Q.js} +112 -66
  13. package/dist/cjs/{intlTelInput-B5hswC8S.js → intlTelInput-BK34b4sR.js} +1 -1
  14. package/dist/cjs/{iphone-x-qC21wCLj.js → iphone-x-B683VspR.js} +2 -2
  15. package/dist/cjs/loader.cjs.js +2 -2
  16. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-accordion_6.cjs.entry.js +10 -10
  18. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +8 -8
  19. package/dist/cjs/salla-advertisement.cjs.entry.js +2 -2
  20. package/dist/cjs/salla-alert_2.cjs.entry.js +3 -3
  21. package/dist/cjs/salla-app-install-alert.cjs.entry.js +2 -2
  22. package/dist/cjs/salla-apps-icons.cjs.entry.js +2 -2
  23. package/dist/cjs/salla-badge.cjs.entry.js +2 -2
  24. package/dist/cjs/salla-basket-gap.cjs.entry.js +2 -2
  25. package/dist/cjs/salla-booking-field_7.cjs.entry.js +16 -16
  26. package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +42 -39
  27. package/dist/cjs/salla-cart-coupons.cjs.entry.js +2 -2
  28. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +5 -5
  29. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +4 -1
  30. package/dist/cjs/salla-cashback-banner.cjs.entry.js +2 -2
  31. package/dist/cjs/salla-comment-factors.cjs.entry.js +2 -2
  32. package/dist/cjs/salla-comment-form_8.cjs.entry.js +15 -13
  33. package/dist/cjs/salla-conditional-offer.cjs.entry.js +2 -2
  34. package/dist/cjs/salla-contacts.cjs.entry.js +2 -2
  35. package/dist/cjs/salla-cookies-bar.cjs.entry.js +2 -2
  36. package/dist/cjs/{salla-count-down_2.cjs.entry.js → salla-count-down.cjs.entry.js} +2 -210
  37. package/dist/cjs/salla-custom-fields.cjs.entry.js +2 -2
  38. package/dist/cjs/salla-delivery-promise.cjs.entry.js +4 -1
  39. package/dist/cjs/salla-edit-order-button.cjs.entry.js +2 -2
  40. package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
  41. package/dist/cjs/salla-filters.cjs.entry.js +2 -2
  42. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +4 -1
  43. package/dist/cjs/salla-gifting.cjs.entry.js +7 -7
  44. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +2 -2
  46. package/dist/cjs/salla-installment.cjs.entry.js +2 -2
  47. package/dist/cjs/salla-list-tile.cjs.entry.js +2 -2
  48. package/dist/cjs/salla-localization-modal.cjs.entry.js +5 -2
  49. package/dist/cjs/salla-login-modal.cjs.entry.js +2 -2
  50. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +980 -0
  51. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +27 -0
  52. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +2 -2
  53. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +7 -4
  54. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-loyalty.cjs.entry.js +4 -4
  56. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +4 -4
  57. package/dist/cjs/salla-map_2.cjs.entry.js +3 -3
  58. package/dist/cjs/salla-menu.cjs.entry.js +2 -2
  59. package/dist/cjs/salla-metadata.cjs.entry.js +2 -2
  60. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +2 -2
  63. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +2 -2
  64. package/dist/cjs/salla-notification-item_2.cjs.entry.js +172 -0
  65. package/dist/cjs/salla-offer-modal.cjs.entry.js +6 -7
  66. package/dist/cjs/salla-offer.cjs.entry.js +2 -2
  67. package/dist/cjs/salla-order-branch.cjs.entry.js +2 -2
  68. package/dist/cjs/salla-order-cancel.cjs.entry.js +2 -2
  69. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-details.cjs.entry.js +2 -2
  72. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-edit.cjs.entry.js +2 -2
  75. package/dist/cjs/salla-order-options-modal_2.cjs.entry.js +367 -0
  76. package/dist/cjs/salla-order-shipments.cjs.entry.js +2 -2
  77. package/dist/cjs/salla-order-summary.cjs.entry.js +4 -4
  78. package/dist/cjs/salla-order-totals-card.cjs.entry.js +2 -2
  79. package/dist/cjs/salla-orders.cjs.entry.js +5 -3
  80. package/dist/cjs/salla-payments.cjs.entry.js +2 -2
  81. package/dist/cjs/salla-placeholder.cjs.entry.js +2 -2
  82. package/dist/cjs/salla-price-range.cjs.entry.js +2 -2
  83. package/dist/cjs/salla-product-card-embed.cjs.entry.js +2 -2
  84. package/dist/cjs/salla-product-size-guide.cjs.entry.js +2 -2
  85. package/dist/cjs/salla-products-list.cjs.entry.js +5 -3
  86. package/dist/cjs/salla-products-slider.cjs.entry.js +167 -0
  87. package/dist/cjs/salla-quick-order.cjs.entry.js +6 -6
  88. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +2 -2
  89. package/dist/cjs/salla-rating-modal.cjs.entry.js +2 -2
  90. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +2 -2
  91. package/dist/cjs/salla-scopes.cjs.entry.js +2 -2
  92. package/dist/cjs/salla-search.cjs.entry.js +2 -2
  93. package/dist/cjs/salla-skeleton.cjs.entry.js +2 -2
  94. package/dist/cjs/salla-slider.cjs.entry.js +2 -2
  95. package/dist/cjs/salla-social-share.cjs.entry.js +5 -5
  96. package/dist/cjs/salla-social.cjs.entry.js +2 -2
  97. package/dist/cjs/salla-tab-content_3.cjs.entry.js +2 -2
  98. package/dist/cjs/salla-tiered-offer.cjs.entry.js +2 -2
  99. package/dist/cjs/salla-tooltip.cjs.entry.js +2 -2
  100. package/dist/cjs/salla-trust-badges.cjs.entry.js +2 -2
  101. package/dist/cjs/salla-user-menu.cjs.entry.js +6 -6
  102. package/dist/cjs/salla-user-profile.cjs.entry.js +2 -2
  103. package/dist/cjs/salla-user-settings.cjs.entry.js +2 -2
  104. package/dist/cjs/salla-verify.cjs.entry.js +2 -2
  105. package/dist/cjs/salla-wallet.cjs.entry.js +5 -3
  106. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +2 -2
  107. package/dist/cjs/{cart2-B98PSAFN.js → tag-BH5n_Nx3.js} +9 -2
  108. package/dist/cjs/twilight.cjs.js +2 -2
  109. package/dist/cjs/{vanilla-picker-DcX-oQDe.js → vanilla-picker-DYTpjTDj.js} +1 -1
  110. package/dist/collection/collection-manifest.json +20 -0
  111. package/dist/collection/components/salla-accordion/salla-accordion.css +233 -0
  112. package/dist/collection/components/salla-add-product-button/salla-add-product-button.css +248 -1
  113. package/dist/collection/components/salla-advertisement/salla-advertisement.css +53 -2
  114. package/dist/collection/components/salla-alert/salla-alert.css +57 -2
  115. package/dist/collection/components/salla-app-install-alert/salla-app-install-alert.css +123 -2
  116. package/dist/collection/components/salla-apps-icons/salla-apps-icons.css +15 -2
  117. package/dist/collection/components/salla-badge/salla-badge.css +72 -0
  118. package/dist/collection/components/salla-basket-gap/salla-basket-gap.css +282 -2
  119. package/dist/collection/components/salla-booking-field/salla-booking-field.css +108 -2
  120. package/dist/collection/components/salla-bottom-alert/salla-bottom-alert.css +273 -2
  121. package/dist/collection/components/salla-bought-together/salla-bought-together.css +139 -2
  122. package/dist/collection/components/salla-breadcrumb/salla-breadcrumb.css +49 -2
  123. package/dist/collection/components/salla-bullet-delivery/helpers.js +14 -0
  124. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.css +1170 -5
  125. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.js +20 -19
  126. package/dist/collection/components/salla-button/salla-button.css +681 -2
  127. package/dist/collection/components/salla-cart-coupons/salla-cart-coupons.css +344 -2
  128. package/dist/collection/components/salla-cart-item-offers/salla-cart-item-offers.css +108 -2
  129. package/dist/collection/components/salla-cart-summary/salla-cart-summary.css +43 -0
  130. package/dist/collection/components/salla-cart-summary-card/salla-cart-summary-card.css +308 -0
  131. package/dist/collection/components/salla-cart-summary-card/salla-cart-summary-card.js +10 -0
  132. package/dist/collection/components/salla-cashback-banner/salla-cashback-banner.css +39 -0
  133. package/dist/collection/components/salla-color-picker/salla-color-picker.css +48 -0
  134. package/dist/collection/components/salla-comment-form/salla-comment-form.css +94 -2
  135. package/dist/collection/components/salla-comments/salla-comments.css +626 -2
  136. package/dist/collection/components/salla-comments/salla-comments.js +2 -2
  137. package/dist/collection/components/salla-conditional-offer/salla-conditional-offer.css +293 -2
  138. package/dist/collection/components/salla-contacts/salla-contacts.css +105 -2
  139. package/dist/collection/components/salla-cookies-bar/salla-cookies-bar.css +91 -2
  140. package/dist/collection/components/salla-count-down/salla-count-down.css +395 -2
  141. package/dist/collection/components/salla-custom-fields/salla-custom-fields.css +86 -2
  142. package/dist/collection/components/salla-datetime-picker/salla-datetime-picker.css +88 -2
  143. package/dist/collection/components/salla-delivery-promise/salla-delivery-promise.css +452 -0
  144. package/dist/collection/components/salla-delivery-promise/salla-delivery-promise.js +10 -0
  145. package/dist/collection/components/salla-drawer/salla-drawer.css +403 -0
  146. package/dist/collection/components/salla-edit-order-button/salla-edit-order-button.css +2 -2
  147. package/dist/collection/components/salla-file-upload/salla-file-upload.css +277 -2
  148. package/dist/collection/components/salla-filters/salla-filters.css +199 -2
  149. package/dist/collection/components/salla-filters-widget/salla-filters-widget.css +169 -2
  150. package/dist/collection/components/salla-fulfillment-methods/salla-fulfillment-methods.css +140 -0
  151. package/dist/collection/components/salla-fulfillment-methods/salla-fulfillment-methods.js +10 -0
  152. package/dist/collection/components/salla-gifting/salla-gifting.css +593 -2
  153. package/dist/collection/components/salla-infinite-scroll/salla-infinite-scroll.css +107 -2
  154. package/dist/collection/components/salla-installment/salla-installment.css +8 -2
  155. package/dist/collection/components/salla-list-tile/salla-list-tile.css +190 -0
  156. package/dist/collection/components/salla-loading/salla-loading.css +13 -2
  157. package/dist/collection/components/salla-localization-modal/salla-localization-modal.css +170 -0
  158. package/dist/collection/components/salla-localization-modal/salla-localization-modal.js +11 -1
  159. package/dist/collection/components/salla-login-modal/salla-login-modal.css +8 -2
  160. package/dist/collection/components/salla-loyalty/salla-loyalty.css +377 -0
  161. package/dist/collection/components/salla-loyalty-points-banner/salla-loyalty-points-banner.css +36 -0
  162. package/dist/collection/components/salla-loyalty-points-history/salla-loyalty-points-history.css +365 -0
  163. package/dist/collection/components/salla-loyalty-points-history/salla-loyalty-points-history.js +11 -1
  164. package/dist/collection/components/salla-loyalty-program/salla-loyalty-program.css +1621 -2
  165. package/dist/collection/components/salla-maintenance-alert/salla-maintenance-alert.css +156 -2
  166. package/dist/collection/components/salla-map/salla-map.css +88 -2
  167. package/dist/collection/components/salla-menu/salla-menu.css +175 -2
  168. package/dist/collection/components/salla-metadata/salla-metadata.css +49 -0
  169. package/dist/collection/components/salla-modal/salla-modal.css +556 -2
  170. package/dist/collection/components/salla-multiple-bundle-product/salla-multiple-bundle-product.css +342 -2
  171. package/dist/collection/components/salla-next-order-coupon/salla-next-order-coupon.css +190 -2
  172. package/dist/collection/components/salla-notifications/salla-notifications.css +217 -0
  173. package/dist/collection/components/salla-notifications/salla-notifications.js +2 -2
  174. package/dist/collection/components/salla-offer/salla-offer.css +961 -2
  175. package/dist/collection/components/salla-offer-modal/salla-offer-modal.css +514 -2
  176. package/dist/collection/components/salla-order-branch/salla-order-branch.css +269 -2
  177. package/dist/collection/components/salla-order-cancel/salla-order-cancel.css +283 -2
  178. package/dist/collection/components/salla-order-details/salla-order-details.css +319 -0
  179. package/dist/collection/components/salla-order-edit/salla-order-edit.css +773 -2
  180. package/dist/collection/components/salla-order-options-modal/salla-order-options-modal.css +50 -2
  181. package/dist/collection/components/salla-order-shipments/salla-order-shipments.css +110 -2
  182. package/dist/collection/components/salla-order-summary/salla-order-summary.css +117 -2
  183. package/dist/collection/components/salla-order-totals-card/salla-order-totals-card.css +116 -2
  184. package/dist/collection/components/salla-orders/salla-orders.css +367 -2
  185. package/dist/collection/components/salla-orders/salla-orders.js +2 -2
  186. package/dist/collection/components/salla-payments/salla-payments.css +40 -2
  187. package/dist/collection/components/salla-placeholder/salla-placeholder.css +121 -0
  188. package/dist/collection/components/salla-price-range/salla-price-range.css +146 -2
  189. package/dist/collection/components/salla-product-availability/salla-product-availability.css +188 -2
  190. package/dist/collection/components/salla-product-card/salla-product-card.css +694 -2
  191. package/dist/collection/components/salla-product-card-embed/salla-product-card-embed.css +42 -2
  192. package/dist/collection/components/salla-product-options/salla-product-options.css +749 -0
  193. package/dist/collection/components/salla-product-size-guide/salla-product-size-guide.css +105 -2
  194. package/dist/collection/components/salla-products-list/salla-products-list.css +286 -2
  195. package/dist/collection/components/salla-products-list/salla-products-list.js +2 -2
  196. package/dist/collection/components/salla-products-slider/salla-products-slider.css +48 -0
  197. package/dist/collection/components/salla-progress-bar/salla-progress-bar.css +53 -0
  198. package/dist/collection/components/salla-quantity-input/salla-quantity-input.css +47 -2
  199. package/dist/collection/components/salla-quick-buy/salla-quick-buy.css +32 -2
  200. package/dist/collection/components/salla-quick-order/salla-quick-order.css +233 -1
  201. package/dist/collection/components/salla-rating-modal/salla-rating-modal.css +540 -2
  202. package/dist/collection/components/salla-rating-stars/salla-rating-stars.css +91 -2
  203. package/dist/collection/components/salla-review-card/salla-review-card.css +213 -1
  204. package/dist/collection/components/salla-review-factors-tags/salla-review-factors-tags.css +45 -2
  205. package/dist/collection/components/salla-reviews/salla-reviews.css +378 -0
  206. package/dist/collection/components/salla-reviews-page/salla-reviews-page.css +124 -2
  207. package/dist/collection/components/salla-reviews-summary/salla-reviews-summary.css +118 -2
  208. package/dist/collection/components/salla-scopes/salla-scopes.css +299 -2
  209. package/dist/collection/components/salla-search/salla-search.css +298 -2
  210. package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.css +508 -0
  211. package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.js +14 -4
  212. package/dist/collection/components/salla-skeleton/salla-skeleton.css +31 -2
  213. package/dist/collection/components/salla-slider/salla-slider.css +749 -2
  214. package/dist/collection/components/salla-social/salla-social.css +31 -2
  215. package/dist/collection/components/salla-social-share/salla-social-share.css +56 -2
  216. package/dist/collection/components/salla-tabs/salla-tabs.css +233 -2
  217. package/dist/collection/components/salla-tel-input/salla-tel-input.css +82 -2
  218. package/dist/collection/components/salla-tiered-offer/salla-tiered-offer.css +305 -2
  219. package/dist/collection/components/salla-tooltip/salla-tooltip.css +10 -3
  220. package/dist/collection/components/salla-trust-badges/salla-trust-badges.css +36 -0
  221. package/dist/collection/components/salla-user-menu/salla-user-menu.css +395 -0
  222. package/dist/collection/components/salla-user-profile/salla-user-profile.css +79 -2
  223. package/dist/collection/components/salla-user-settings/salla-user-settings.css +299 -2
  224. package/dist/collection/components/salla-verify/salla-verify.css +226 -2
  225. package/dist/collection/components/salla-wallet/salla-wallet.css +333 -2
  226. package/dist/collection/components/salla-wallet/salla-wallet.js +2 -2
  227. package/dist/collection/components/salla-wishlist-actions/salla-wishlist-actions.css +88 -2
  228. package/dist/collection/global/app.js +60 -0
  229. package/dist/collection/global/app.ts +60 -0
  230. package/dist/collection/global/base-css.js +5 -0
  231. package/dist/collection/global/base-css.ts +2 -0
  232. package/dist/collection/plugins/build-base-css.js +43 -0
  233. package/dist/collection/plugins/css-coverage-check.js +363 -0
  234. package/dist/collection/plugins/tailwind-per-component.js +146 -0
  235. package/dist/collection/plugins/watch-utilities.js +22 -0
  236. package/dist/components/index.js +64 -2
  237. package/dist/components/salla-accordion2.js +1 -1
  238. package/dist/components/salla-add-product-button2.js +1 -1
  239. package/dist/components/salla-advertisement.js +1 -1
  240. package/dist/components/salla-alert.js +1 -1
  241. package/dist/components/salla-app-install-alert.js +1 -1
  242. package/dist/components/salla-apps-icons.js +1 -1
  243. package/dist/components/salla-badge2.js +1 -1
  244. package/dist/components/salla-basket-gap.js +1 -1
  245. package/dist/components/salla-booking-field2.js +1 -1
  246. package/dist/components/salla-bottom-alert.js +1 -1
  247. package/dist/components/salla-bought-together.js +1 -1
  248. package/dist/components/salla-breadcrumb.js +1 -1
  249. package/dist/components/salla-bullet-delivery.js +34 -34
  250. package/dist/components/salla-button2.js +1 -1
  251. package/dist/components/salla-cart-coupons.js +1 -1
  252. package/dist/components/salla-cart-item-offers.js +1 -1
  253. package/dist/components/salla-cart-summary-card.js +3 -0
  254. package/dist/components/salla-cart-summary.js +1 -1
  255. package/dist/components/salla-cashback-banner.js +1 -1
  256. package/dist/components/salla-color-picker2.js +1 -1
  257. package/dist/components/salla-comment-factors2.js +1 -1
  258. package/dist/components/salla-comment-form2.js +1 -1
  259. package/dist/components/salla-comment-item2.js +1 -1
  260. package/dist/components/salla-comments.js +4 -2
  261. package/dist/components/salla-conditional-offer.js +1 -1
  262. package/dist/components/salla-contacts.js +1 -1
  263. package/dist/components/salla-cookies-bar.js +1 -1
  264. package/dist/components/salla-count-down2.js +1 -1
  265. package/dist/components/salla-custom-fields.js +1 -1
  266. package/dist/components/salla-datetime-picker2.js +1 -1
  267. package/dist/components/salla-delivery-promise.js +3 -0
  268. package/dist/components/salla-drawer2.js +1 -1
  269. package/dist/components/salla-edit-order-button.js +1 -1
  270. package/dist/components/salla-file-upload2.js +1 -1
  271. package/dist/components/salla-filters-widget2.js +1 -1
  272. package/dist/components/salla-filters.js +1 -1
  273. package/dist/components/salla-fulfillment-methods.js +3 -0
  274. package/dist/components/salla-gifting.js +1 -1
  275. package/dist/components/salla-infinite-scroll.js +1 -1
  276. package/dist/components/salla-installment.js +1 -1
  277. package/dist/components/salla-list-tile2.js +1 -1
  278. package/dist/components/salla-loading2.js +1 -1
  279. package/dist/components/salla-localization-modal.js +4 -1
  280. package/dist/components/salla-login-modal2.js +1 -1
  281. package/dist/components/salla-loyalty-banner.js +1 -1
  282. package/dist/components/salla-loyalty-exchange-product-card2.js +1 -1
  283. package/dist/components/salla-loyalty-hero2.js +1 -1
  284. package/dist/components/salla-loyalty-panel.js +1 -1
  285. package/dist/components/salla-loyalty-point2.js +1 -1
  286. package/dist/components/salla-loyalty-points-banner.js +1 -1
  287. package/dist/components/salla-loyalty-points-history.js +4 -1
  288. package/dist/components/salla-loyalty-program.js +1 -1
  289. package/dist/components/salla-loyalty-reward.js +1 -1
  290. package/dist/components/salla-loyalty.js +1 -1
  291. package/dist/components/salla-maintenance-alert.js +1 -1
  292. package/dist/components/salla-map2.js +1 -1
  293. package/dist/components/salla-menu.js +1 -1
  294. package/dist/components/salla-metadata.js +1 -1
  295. package/dist/components/salla-modal2.js +1 -1
  296. package/dist/components/salla-multiple-bundle-product.js +1 -1
  297. package/dist/components/salla-next-order-coupon.js +1 -1
  298. package/dist/components/salla-notification-item2.js +1 -1
  299. package/dist/components/salla-notifications.js +4 -2
  300. package/dist/components/salla-offer-modal.js +1 -1
  301. package/dist/components/salla-offer.js +1 -1
  302. package/dist/components/salla-order-branch.js +1 -1
  303. package/dist/components/salla-order-cancel.js +1 -1
  304. package/dist/components/salla-order-details.js +1 -1
  305. package/dist/components/salla-order-edit.js +1 -1
  306. package/dist/components/salla-order-options-modal2.js +1 -1
  307. package/dist/components/salla-order-shipments.js +1 -1
  308. package/dist/components/salla-order-summary.js +1 -1
  309. package/dist/components/salla-order-totals-card.js +1 -1
  310. package/dist/components/salla-orders.js +4 -2
  311. package/dist/components/salla-payments.js +1 -1
  312. package/dist/components/salla-placeholder2.js +1 -1
  313. package/dist/components/salla-price-range2.js +1 -1
  314. package/dist/components/salla-product-availability2.js +1 -1
  315. package/dist/components/salla-product-card-embed.js +1 -1
  316. package/dist/components/salla-product-card2.js +1 -1
  317. package/dist/components/salla-product-options2.js +1 -1
  318. package/dist/components/salla-product-size-guide.js +1 -1
  319. package/dist/components/salla-products-list2.js +4 -2
  320. package/dist/components/salla-products-slider2.js +1 -1
  321. package/dist/components/salla-progress-bar2.js +1 -1
  322. package/dist/components/salla-quantity-input2.js +1 -1
  323. package/dist/components/salla-quick-buy2.js +1 -1
  324. package/dist/components/salla-quick-order.js +1 -1
  325. package/dist/components/salla-rating-modal-v22.js +1 -1
  326. package/dist/components/salla-rating-modal.js +1 -1
  327. package/dist/components/salla-rating-stars2.js +1 -1
  328. package/dist/components/salla-review-card2.js +1 -1
  329. package/dist/components/salla-review-factors-tags2.js +1 -1
  330. package/dist/components/salla-reviews-page.js +1 -1
  331. package/dist/components/salla-reviews-summary2.js +1 -1
  332. package/dist/components/salla-reviews.js +1 -1
  333. package/dist/components/salla-reward-action2.js +1 -1
  334. package/dist/components/salla-reward-card2.js +1 -1
  335. package/dist/components/salla-reward-details2.js +1 -1
  336. package/dist/components/salla-reward-exchange2.js +1 -1
  337. package/dist/components/salla-scopes.js +1 -1
  338. package/dist/components/salla-search.js +1 -1
  339. package/dist/components/salla-searchable-dropdown2.js +7 -4
  340. package/dist/components/salla-skeleton2.js +1 -1
  341. package/dist/components/salla-slider2.js +1 -1
  342. package/dist/components/salla-social-share2.js +1 -1
  343. package/dist/components/salla-social.js +1 -1
  344. package/dist/components/salla-tabs2.js +1 -1
  345. package/dist/components/salla-tel-input2.js +1 -1
  346. package/dist/components/salla-tiered-offer.js +1 -1
  347. package/dist/components/salla-tooltip2.js +1 -1
  348. package/dist/components/salla-trust-badges.js +1 -1
  349. package/dist/components/salla-user-menu.js +1 -1
  350. package/dist/components/salla-user-profile.js +1 -1
  351. package/dist/components/salla-user-settings.js +1 -1
  352. package/dist/components/salla-verify.js +1 -1
  353. package/dist/components/salla-wallet.js +4 -2
  354. package/dist/components/salla-wishlist-actions.js +1 -1
  355. package/dist/esm/{cancel-8Tsmrwno.js → cancel-BsLF_HK7.js} +2 -2
  356. package/dist/esm/{check-BZp0rKEO.js → check-BsXh13x8.js} +2 -2
  357. package/dist/esm/{filepond-Co-IypIA.js → filepond-DMUE9Fyj.js} +1 -1
  358. package/dist/esm/{filepond-plugin-file-poster-CoRXw3k-.js → filepond-plugin-file-poster-DBZQTm7s.js} +1 -1
  359. package/dist/esm/{filepond-plugin-file-validate-size-CGJ0QOyy.js → filepond-plugin-file-validate-size-CrKxdsNW.js} +1 -1
  360. package/dist/esm/{filepond-plugin-file-validate-type-DDAxGYz8.js → filepond-plugin-file-validate-type-DvEJrucY.js} +1 -1
  361. package/dist/esm/{filepond-plugin-image-edit-BTbI51S8.js → filepond-plugin-image-edit-C6ptCg9o.js} +1 -1
  362. package/dist/esm/{filepond-plugin-image-exif-orientation-C0VSH5eq.js → filepond-plugin-image-exif-orientation-IcgeTieF.js} +1 -1
  363. package/dist/esm/{filepond-plugin-image-preview-DZbIdviE.js → filepond-plugin-image-preview-CDMh74os.js} +1 -1
  364. package/dist/esm/{gift-CXRKXFgT.js → gift-BChI23pG.js} +2 -2
  365. package/dist/esm/{gift-sharing-0-eTJXSD.js → gift-sharing-DxkgAGoT.js} +2 -2
  366. package/dist/esm/{index-BICKbbaT.js → index-CjQzkU95.js} +112 -66
  367. package/dist/esm/{intlTelInput-CcU6kFYO.js → intlTelInput-Dsx2z7pR.js} +1 -1
  368. package/dist/esm/{iphone-x-CciN5Q_x.js → iphone-x-Z7udRKSZ.js} +2 -2
  369. package/dist/esm/loader.js +3 -3
  370. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  371. package/dist/esm/salla-accordion_6.entry.js +10 -10
  372. package/dist/esm/salla-add-product-button_5.entry.js +8 -8
  373. package/dist/esm/salla-advertisement.entry.js +2 -2
  374. package/dist/esm/salla-alert_2.entry.js +3 -3
  375. package/dist/esm/salla-app-install-alert.entry.js +2 -2
  376. package/dist/esm/salla-apps-icons.entry.js +2 -2
  377. package/dist/esm/salla-badge.entry.js +2 -2
  378. package/dist/esm/salla-basket-gap.entry.js +2 -2
  379. package/dist/esm/salla-booking-field_7.entry.js +16 -16
  380. package/dist/esm/salla-bullet-delivery_2.entry.js +42 -39
  381. package/dist/esm/salla-cart-coupons.entry.js +2 -2
  382. package/dist/esm/salla-cart-item-offers_2.entry.js +5 -5
  383. package/dist/esm/salla-cart-summary-card.entry.js +4 -1
  384. package/dist/esm/salla-cashback-banner.entry.js +2 -2
  385. package/dist/esm/salla-comment-factors.entry.js +2 -2
  386. package/dist/esm/salla-comment-form_8.entry.js +15 -13
  387. package/dist/esm/salla-conditional-offer.entry.js +2 -2
  388. package/dist/esm/salla-contacts.entry.js +2 -2
  389. package/dist/esm/salla-cookies-bar.entry.js +2 -2
  390. package/dist/esm/{salla-count-down_2.entry.js → salla-count-down.entry.js} +3 -210
  391. package/dist/esm/salla-custom-fields.entry.js +2 -2
  392. package/dist/esm/salla-delivery-promise.entry.js +4 -1
  393. package/dist/esm/salla-edit-order-button.entry.js +2 -2
  394. package/dist/esm/salla-filters-widget.entry.js +2 -2
  395. package/dist/esm/salla-filters.entry.js +2 -2
  396. package/dist/esm/salla-fulfillment-methods.entry.js +4 -1
  397. package/dist/esm/salla-gifting.entry.js +7 -7
  398. package/dist/esm/salla-hook.entry.js +1 -1
  399. package/dist/esm/salla-infinite-scroll.entry.js +2 -2
  400. package/dist/esm/salla-installment.entry.js +2 -2
  401. package/dist/esm/salla-list-tile.entry.js +2 -2
  402. package/dist/esm/salla-localization-modal.entry.js +5 -2
  403. package/dist/esm/salla-login-modal.entry.js +2 -2
  404. package/dist/esm/salla-loyalty-banner_10.entry.js +969 -0
  405. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +25 -0
  406. package/dist/esm/salla-loyalty-points-banner.entry.js +2 -2
  407. package/dist/esm/salla-loyalty-points-history.entry.js +7 -4
  408. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  409. package/dist/esm/salla-loyalty.entry.js +4 -4
  410. package/dist/esm/salla-maintenance-alert.entry.js +4 -4
  411. package/dist/esm/salla-map_2.entry.js +3 -3
  412. package/dist/esm/salla-menu.entry.js +2 -2
  413. package/dist/esm/salla-metadata.entry.js +2 -2
  414. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  415. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  416. package/dist/esm/salla-multiple-bundle-product.entry.js +2 -2
  417. package/dist/esm/salla-next-order-coupon.entry.js +2 -2
  418. package/dist/esm/salla-notification-item_2.entry.js +169 -0
  419. package/dist/esm/salla-offer-modal.entry.js +6 -7
  420. package/dist/esm/salla-offer.entry.js +2 -2
  421. package/dist/esm/salla-order-branch.entry.js +2 -2
  422. package/dist/esm/salla-order-cancel.entry.js +2 -2
  423. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  424. package/dist/esm/salla-order-details-options.entry.js +1 -1
  425. package/dist/esm/salla-order-details.entry.js +2 -2
  426. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  427. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  428. package/dist/esm/salla-order-edit.entry.js +2 -2
  429. package/dist/esm/salla-order-options-modal_2.entry.js +364 -0
  430. package/dist/esm/salla-order-shipments.entry.js +2 -2
  431. package/dist/esm/salla-order-summary.entry.js +4 -4
  432. package/dist/esm/salla-order-totals-card.entry.js +2 -2
  433. package/dist/esm/salla-orders.entry.js +5 -3
  434. package/dist/esm/salla-payments.entry.js +2 -2
  435. package/dist/esm/salla-placeholder.entry.js +2 -2
  436. package/dist/esm/salla-price-range.entry.js +2 -2
  437. package/dist/esm/salla-product-card-embed.entry.js +2 -2
  438. package/dist/esm/salla-product-size-guide.entry.js +2 -2
  439. package/dist/esm/salla-products-list.entry.js +5 -3
  440. package/dist/esm/salla-products-slider.entry.js +165 -0
  441. package/dist/esm/salla-quick-order.entry.js +6 -6
  442. package/dist/esm/salla-rating-modal-v2.entry.js +2 -2
  443. package/dist/esm/salla-rating-modal.entry.js +2 -2
  444. package/dist/esm/salla-review-factors-tags.entry.js +2 -2
  445. package/dist/esm/salla-scopes.entry.js +2 -2
  446. package/dist/esm/salla-search.entry.js +2 -2
  447. package/dist/esm/salla-skeleton.entry.js +2 -2
  448. package/dist/esm/salla-slider.entry.js +2 -2
  449. package/dist/esm/salla-social-share.entry.js +5 -5
  450. package/dist/esm/salla-social.entry.js +2 -2
  451. package/dist/esm/salla-tab-content_3.entry.js +2 -2
  452. package/dist/esm/salla-tiered-offer.entry.js +2 -2
  453. package/dist/esm/salla-tooltip.entry.js +2 -2
  454. package/dist/esm/salla-trust-badges.entry.js +2 -2
  455. package/dist/esm/salla-user-menu.entry.js +6 -6
  456. package/dist/esm/salla-user-profile.entry.js +2 -2
  457. package/dist/esm/salla-user-settings.entry.js +2 -2
  458. package/dist/esm/salla-verify.entry.js +2 -2
  459. package/dist/esm/salla-wallet.entry.js +5 -3
  460. package/dist/esm/salla-wishlist-actions.entry.js +2 -2
  461. package/dist/esm/{cart2-D1s2kXqL.js → tag-DRvZV5oe.js} +8 -2
  462. package/dist/esm/twilight.js +3 -3
  463. package/dist/esm/{vanilla-picker-ZYaCOUKK.js → vanilla-picker-oYjMgYry.js} +1 -1
  464. package/dist/twilight/global/app.ts +60 -0
  465. package/dist/twilight/global/base-css.ts +2 -0
  466. package/dist/twilight/p-0a1271e1.entry.js +4 -0
  467. package/dist/twilight/p-1151ebd7.entry.js +4 -0
  468. package/dist/twilight/p-116e7555.entry.js +4 -0
  469. package/dist/twilight/{p-a5d54ce0.entry.js → p-1470e96a.entry.js} +1 -1
  470. package/dist/twilight/p-14c72ffd.entry.js +4 -0
  471. package/dist/twilight/p-152c657e.entry.js +4 -0
  472. package/dist/twilight/p-1754903f.entry.js +4 -0
  473. package/dist/twilight/{p-e24e104a.entry.js → p-187a502c.entry.js} +1 -1
  474. package/dist/twilight/p-1c31cec0.entry.js +4 -0
  475. package/dist/twilight/p-1c369bcf.entry.js +4 -0
  476. package/dist/twilight/{p-eb1bdbee.entry.js → p-1d2804ac.entry.js} +1 -1
  477. package/dist/twilight/p-1dd1fef0.entry.js +4 -0
  478. package/dist/twilight/p-1fb46b43.entry.js +4 -0
  479. package/dist/twilight/p-236f371d.entry.js +4 -0
  480. package/dist/twilight/{p-54f5ab92.entry.js → p-250d7ab2.entry.js} +1 -1
  481. package/dist/twilight/{p-45199451.entry.js → p-27a0a4cc.entry.js} +1 -1
  482. package/dist/twilight/p-298ff716.entry.js +4 -0
  483. package/dist/twilight/p-2babb4bd.entry.js +4 -0
  484. package/dist/twilight/p-2c6c0844.entry.js +4 -0
  485. package/dist/twilight/p-2e112687.entry.js +4 -0
  486. package/dist/twilight/p-2e43ddf0.entry.js +4 -0
  487. package/dist/twilight/p-3052178c.entry.js +4 -0
  488. package/dist/twilight/p-31c36417.entry.js +4 -0
  489. package/dist/twilight/p-331679d8.entry.js +4 -0
  490. package/dist/twilight/p-37413a02.entry.js +4 -0
  491. package/dist/twilight/{p-036f67e4.entry.js → p-3b6b3c54.entry.js} +1 -1
  492. package/dist/twilight/p-3bc64439.entry.js +4 -0
  493. package/dist/twilight/p-3bdba697.entry.js +4 -0
  494. package/dist/twilight/{p-3ff03500.entry.js → p-3c22551b.entry.js} +1 -1
  495. package/dist/twilight/p-3f26f1c5.entry.js +4 -0
  496. package/dist/twilight/p-40217fcc.entry.js +4 -0
  497. package/dist/twilight/p-4058b619.entry.js +4 -0
  498. package/dist/twilight/{p-b4a173be.entry.js → p-437fe6f1.entry.js} +1 -1
  499. package/dist/twilight/{p-15f20a28.entry.js → p-44cfb2c2.entry.js} +1 -1
  500. package/dist/twilight/p-4868c03c.entry.js +4 -0
  501. package/dist/twilight/p-48db7b95.entry.js +4 -0
  502. package/dist/twilight/p-49e6fe86.entry.js +4 -0
  503. package/dist/twilight/p-51a860bc.entry.js +4 -0
  504. package/dist/twilight/p-54d0db9a.entry.js +4 -0
  505. package/dist/twilight/p-58184ae2.entry.js +4 -0
  506. package/dist/twilight/p-5b03dca8.entry.js +4 -0
  507. package/dist/twilight/{p-149e1143.entry.js → p-5bbf829e.entry.js} +1 -1
  508. package/dist/twilight/{p-b10e56fd.entry.js → p-5d01f25c.entry.js} +1 -1
  509. package/dist/twilight/p-5e9fb02d.entry.js +4 -0
  510. package/dist/twilight/p-664f0936.entry.js +4 -0
  511. package/dist/twilight/{p-e8d773b2.entry.js → p-665bca88.entry.js} +1 -1
  512. package/dist/twilight/p-67e88dc4.entry.js +4 -0
  513. package/dist/twilight/p-68c8772a.entry.js +4 -0
  514. package/dist/twilight/p-699bea26.entry.js +4 -0
  515. package/dist/twilight/p-6ed4c9bb.entry.js +4 -0
  516. package/dist/twilight/p-7c74dc6e.entry.js +4 -0
  517. package/dist/twilight/{p-3c52b097.entry.js → p-7f73ff43.entry.js} +1 -1
  518. package/dist/twilight/{p-c1caae26.entry.js → p-80ff5572.entry.js} +1 -1
  519. package/dist/twilight/{p-b8980a7c.entry.js → p-8230c543.entry.js} +38 -38
  520. package/dist/twilight/p-82c12191.entry.js +4 -0
  521. package/dist/twilight/p-84f35767.entry.js +4 -0
  522. package/dist/twilight/{p-56f180b1.entry.js → p-8ae7bf96.entry.js} +1 -1
  523. package/dist/twilight/p-8bce41c8.entry.js +4 -0
  524. package/dist/twilight/{p-3be661be.entry.js → p-8ef3693b.entry.js} +1 -1
  525. package/dist/twilight/p-8fa84b87.entry.js +4 -0
  526. package/dist/twilight/p-91b4a1a0.entry.js +4 -0
  527. package/dist/twilight/{p-710a3ce8.entry.js → p-997c4966.entry.js} +1 -1
  528. package/dist/twilight/p-9b6db6a7.entry.js +4 -0
  529. package/dist/twilight/p-9c7fcbb0.entry.js +4 -0
  530. package/dist/twilight/p-9fa351ab.entry.js +4 -0
  531. package/dist/twilight/{p-DwA0FvNE.js → p-B9VKgTTF.js} +1 -1
  532. package/dist/twilight/{p-CXRKXFgT.js → p-BChI23pG.js} +1 -1
  533. package/dist/twilight/{p-gy7RAvBD.js → p-BiyhYWus.js} +1 -1
  534. package/dist/twilight/{p-8Tsmrwno.js → p-BsLF_HK7.js} +1 -1
  535. package/dist/twilight/{p-BZp0rKEO.js → p-BsXh13x8.js} +1 -1
  536. package/dist/twilight/{p-BqKKpKiZ.js → p-BtymczNp.js} +1 -1
  537. package/dist/twilight/{p-BBYplmag.js → p-C1wu6qA1.js} +1 -1
  538. package/dist/twilight/{p-BMmR9fBv.js → p-C6w35AiQ.js} +1 -1
  539. package/dist/twilight/{p-CnydhXLD.js → p-CGDRqU6i.js} +1 -1
  540. package/dist/twilight/{p-BICKbbaT.js → p-CjQzkU95.js} +2 -2
  541. package/dist/twilight/{p-DGAX-mOJ.js → p-CmQyEOxJ.js} +2 -2
  542. package/dist/twilight/{p-Dbba1-no.js → p-D2uiOzVz.js} +1 -1
  543. package/dist/twilight/{p-D1s2kXqL.js → p-DRvZV5oe.js} +1 -1
  544. package/dist/twilight/{p-CH2gmG7u.js → p-DfJdKB52.js} +1 -1
  545. package/dist/twilight/{p-0-eTJXSD.js → p-DxkgAGoT.js} +1 -1
  546. package/dist/twilight/{p-CciN5Q_x.js → p-Z7udRKSZ.js} +1 -1
  547. package/dist/twilight/p-a1494e64.entry.js +4 -0
  548. package/dist/twilight/p-a3f00389.entry.js +4 -0
  549. package/dist/twilight/p-a669483e.entry.js +4 -0
  550. package/dist/twilight/p-a802826b.entry.js +4 -0
  551. package/dist/twilight/p-ae536a61.entry.js +4 -0
  552. package/dist/twilight/p-aeb76c46.entry.js +4 -0
  553. package/dist/twilight/p-b0e86201.entry.js +4 -0
  554. package/dist/twilight/p-b1812d5c.entry.js +4 -0
  555. package/dist/twilight/p-b193c991.entry.js +4 -0
  556. package/dist/twilight/p-b3fe5e44.entry.js +4 -0
  557. package/dist/twilight/p-b69e98a8.entry.js +4 -0
  558. package/dist/twilight/{p-2ac47b6b.entry.js → p-bbe79568.entry.js} +1 -1
  559. package/dist/twilight/{p-99b6543b.entry.js → p-bf183f3a.entry.js} +1 -1
  560. package/dist/twilight/p-c254b6fa.entry.js +4 -0
  561. package/dist/twilight/{p-064d4340.entry.js → p-cb179aba.entry.js} +1 -1
  562. package/dist/twilight/{p-8ea78b6a.entry.js → p-cc2b960c.entry.js} +1 -1
  563. package/dist/twilight/p-db02986a.entry.js +4 -0
  564. package/dist/twilight/{p-5d14a4ee.entry.js → p-dd5800dd.entry.js} +1 -1
  565. package/dist/twilight/p-e020f1c3.entry.js +4 -0
  566. package/dist/twilight/p-e701a3dc.entry.js +4 -0
  567. package/dist/twilight/p-f1eebeda.entry.js +4 -0
  568. package/dist/twilight/p-f4bdf19e.entry.js +4 -0
  569. package/dist/twilight/p-f7298462.entry.js +4 -0
  570. package/dist/twilight/{p-24cb77eb.entry.js → p-fa28a89f.entry.js} +1 -1
  571. package/dist/twilight/p-faaf4423.entry.js +4 -0
  572. package/dist/twilight/p-fe7990b7.entry.js +4 -0
  573. package/dist/twilight/twilight.esm.js +1 -1
  574. package/dist/types/components/salla-bullet-delivery/helpers.d.ts +9 -0
  575. package/dist/types/components/salla-bullet-delivery/interfaces.d.ts +1 -0
  576. package/dist/types/components/salla-loyalty-program/interfaces.d.ts +1 -1
  577. package/dist/types/global/base-css.d.ts +1 -0
  578. package/package.json +8 -7
  579. package/dist/cjs/functions-BbsKJYTv.js +0 -102
  580. package/dist/cjs/percentage-Fs83gq6Q.js +0 -21
  581. package/dist/cjs/salla-loyalty-banner.cjs.entry.js +0 -67
  582. package/dist/cjs/salla-loyalty-exchange-product-card_5.cjs.entry.js +0 -305
  583. package/dist/cjs/salla-loyalty-hero_2.cjs.entry.js +0 -255
  584. package/dist/cjs/salla-loyalty-panel.cjs.entry.js +0 -104
  585. package/dist/cjs/salla-loyalty-program.cjs.entry.js +0 -134
  586. package/dist/cjs/salla-loyalty-reward.cjs.entry.js +0 -54
  587. package/dist/cjs/salla-notification-item.cjs.entry.js +0 -20
  588. package/dist/cjs/salla-notifications.cjs.entry.js +0 -157
  589. package/dist/cjs/salla-product-card_2.cjs.entry.js +0 -319
  590. package/dist/cjs/shipping-CPYcgyCL.js +0 -13
  591. package/dist/cjs/tag-D-PcUR33.js +0 -12
  592. package/dist/cjs/tracked-promise-FYMkib0n.js +0 -31
  593. package/dist/cjs/user-add-BCGrddZS.js +0 -13
  594. package/dist/esm/functions-DBwN_PnC.js +0 -95
  595. package/dist/esm/percentage-Bs6JxDkg.js +0 -18
  596. package/dist/esm/salla-loyalty-banner.entry.js +0 -65
  597. package/dist/esm/salla-loyalty-exchange-product-card_5.entry.js +0 -299
  598. package/dist/esm/salla-loyalty-hero_2.entry.js +0 -252
  599. package/dist/esm/salla-loyalty-panel.entry.js +0 -102
  600. package/dist/esm/salla-loyalty-program.entry.js +0 -132
  601. package/dist/esm/salla-loyalty-reward.entry.js +0 -52
  602. package/dist/esm/salla-notification-item.entry.js +0 -18
  603. package/dist/esm/salla-notifications.entry.js +0 -155
  604. package/dist/esm/salla-product-card_2.entry.js +0 -316
  605. package/dist/esm/shipping-CZRcMGA9.js +0 -11
  606. package/dist/esm/tag-cgSL_BIo.js +0 -10
  607. package/dist/esm/tracked-promise-BGUdJ_Y7.js +0 -29
  608. package/dist/esm/user-add-QpH8MU22.js +0 -11
  609. package/dist/twilight/p-035e0ede.entry.js +0 -4
  610. package/dist/twilight/p-0a34505a.entry.js +0 -4
  611. package/dist/twilight/p-123ea3ce.entry.js +0 -4
  612. package/dist/twilight/p-169db5a8.entry.js +0 -4
  613. package/dist/twilight/p-182271b9.entry.js +0 -4
  614. package/dist/twilight/p-1d6e569d.entry.js +0 -4
  615. package/dist/twilight/p-21eef21b.entry.js +0 -4
  616. package/dist/twilight/p-22da89fa.entry.js +0 -4
  617. package/dist/twilight/p-23e937b6.entry.js +0 -4
  618. package/dist/twilight/p-2b07007d.entry.js +0 -4
  619. package/dist/twilight/p-2bf03b63.entry.js +0 -4
  620. package/dist/twilight/p-2c78a0ef.entry.js +0 -4
  621. package/dist/twilight/p-30660cd8.entry.js +0 -4
  622. package/dist/twilight/p-34ed76ac.entry.js +0 -4
  623. package/dist/twilight/p-3eb13818.entry.js +0 -4
  624. package/dist/twilight/p-3ff42b07.entry.js +0 -4
  625. package/dist/twilight/p-44a81e6e.entry.js +0 -4
  626. package/dist/twilight/p-44b0d992.entry.js +0 -4
  627. package/dist/twilight/p-45982933.entry.js +0 -4
  628. package/dist/twilight/p-45b975c2.entry.js +0 -4
  629. package/dist/twilight/p-492415ef.entry.js +0 -4
  630. package/dist/twilight/p-4c9e1e69.entry.js +0 -4
  631. package/dist/twilight/p-4f75de82.entry.js +0 -4
  632. package/dist/twilight/p-4ffb3087.entry.js +0 -4
  633. package/dist/twilight/p-598c5098.entry.js +0 -4
  634. package/dist/twilight/p-5c333767.entry.js +0 -4
  635. package/dist/twilight/p-5c452062.entry.js +0 -4
  636. package/dist/twilight/p-60901520.entry.js +0 -4
  637. package/dist/twilight/p-649e1e03.entry.js +0 -4
  638. package/dist/twilight/p-670e6462.entry.js +0 -4
  639. package/dist/twilight/p-6a814b15.entry.js +0 -4
  640. package/dist/twilight/p-6def828f.entry.js +0 -4
  641. package/dist/twilight/p-70e3120c.entry.js +0 -4
  642. package/dist/twilight/p-74d7660d.entry.js +0 -4
  643. package/dist/twilight/p-7518b9d3.entry.js +0 -4
  644. package/dist/twilight/p-8638175a.entry.js +0 -4
  645. package/dist/twilight/p-8ea18b13.entry.js +0 -4
  646. package/dist/twilight/p-95ef5ed3.entry.js +0 -4
  647. package/dist/twilight/p-9c98fca1.entry.js +0 -4
  648. package/dist/twilight/p-9ee5b0f7.entry.js +0 -4
  649. package/dist/twilight/p-BgfpunEY.js +0 -4
  650. package/dist/twilight/p-Bs6JxDkg.js +0 -4
  651. package/dist/twilight/p-CZRcMGA9.js +0 -4
  652. package/dist/twilight/p-QpH8MU22.js +0 -4
  653. package/dist/twilight/p-a0a248bd.entry.js +0 -4
  654. package/dist/twilight/p-a0cf8839.entry.js +0 -4
  655. package/dist/twilight/p-a665082c.entry.js +0 -4
  656. package/dist/twilight/p-abe7ac70.entry.js +0 -4
  657. package/dist/twilight/p-ad38c3e0.entry.js +0 -4
  658. package/dist/twilight/p-adf1ebf6.entry.js +0 -4
  659. package/dist/twilight/p-aec408ec.entry.js +0 -4
  660. package/dist/twilight/p-afa12e38.entry.js +0 -4
  661. package/dist/twilight/p-b17da4d5.entry.js +0 -4
  662. package/dist/twilight/p-b5ca8b9f.entry.js +0 -4
  663. package/dist/twilight/p-b5cc3e95.entry.js +0 -4
  664. package/dist/twilight/p-b725b869.entry.js +0 -4
  665. package/dist/twilight/p-bba004e0.entry.js +0 -4
  666. package/dist/twilight/p-bcef7f80.entry.js +0 -4
  667. package/dist/twilight/p-bdc23bcf.entry.js +0 -4
  668. package/dist/twilight/p-bfdb98db.entry.js +0 -4
  669. package/dist/twilight/p-c139be2a.entry.js +0 -4
  670. package/dist/twilight/p-c47486be.entry.js +0 -4
  671. package/dist/twilight/p-c861e9f8.entry.js +0 -4
  672. package/dist/twilight/p-cc6eb9fd.entry.js +0 -4
  673. package/dist/twilight/p-cdb0d7fb.entry.js +0 -4
  674. package/dist/twilight/p-cdc3ac03.entry.js +0 -4
  675. package/dist/twilight/p-cgSL_BIo.js +0 -4
  676. package/dist/twilight/p-d6941dc6.entry.js +0 -4
  677. package/dist/twilight/p-dd6ec724.entry.js +0 -4
  678. package/dist/twilight/p-ddabd5f2.entry.js +0 -4
  679. package/dist/twilight/p-e7a1f0c1.entry.js +0 -4
  680. package/dist/twilight/p-eafff38c.entry.js +0 -4
  681. package/dist/twilight/p-efccc05e.entry.js +0 -4
  682. package/dist/twilight/p-faec58b8.entry.js +0 -4
  683. package/dist/twilight/p-fdbe9913.entry.js +0 -4
  684. package/dist/twilight/p-fde5aae7.entry.js +0 -4
  685. package/dist/twilight/p-g9J0grSR.js +0 -4
@@ -0,0 +1,43 @@
1
+ // Generates src/global/base-css.ts: the small always-loaded global utilities
2
+ // (s-hidden, form classes, checkbox/toggle/scrollbar) used outside components.
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const tailwindcss = require('tailwindcss');
6
+ const twPlugin = require('tailwindcss/plugin');
7
+ const core = require('@salla.sa/twilight-tailwind-theme/plugin-core');
8
+ const generatorGlobals = require('@salla.sa/twilight-tailwind-theme/generator-globals');
9
+ const globalUtilities = require('@salla.sa/twilight-tailwind-theme/global-utilities');
10
+ const tokens = require('@salla.sa/twilight-tailwind-theme/component-tokens');
11
+ const postcss = require(require.resolve('postcss', {
12
+ paths: [path.dirname(require.resolve('tailwindcss/package.json'))],
13
+ }));
14
+
15
+ const names = new Set();
16
+ for (const group of [...globalUtilities, generatorGlobals]) {
17
+ for (const key of Object.keys(group)) {
18
+ const m = key.match(/^\.([\w-]+)/); // leading class (pseudo/descendant keys count too)
19
+ if (m) names.add(m[1]);
20
+ }
21
+ }
22
+
23
+ const basePlugin = twPlugin((api) => {
24
+ core.handler(api);
25
+ api.addUtilities(generatorGlobals);
26
+ }, core.config);
27
+
28
+ (async () => {
29
+ const result = await postcss([tailwindcss({
30
+ important: false,
31
+ darkMode: 'class',
32
+ corePlugins: { preflight: false, outline: false },
33
+ content: [{ raw: '' }],
34
+ safelist: [...names],
35
+ theme: tokens,
36
+ plugins: [basePlugin],
37
+ })]).process('@tailwind utilities;', { from: undefined });
38
+
39
+ const css = result.css.replace(/\n\s*/g, ''); // values never span lines
40
+ const out = path.resolve(__dirname, '../global/base-css.ts');
41
+ fs.writeFileSync(out, `// GENERATED by src/plugins/build-base-css.js. Do not edit.\nexport const BASE_CSS = ${JSON.stringify(css)};\n`);
42
+ console.log('base-css.ts:', css.length, 'bytes');
43
+ })();
@@ -0,0 +1,363 @@
1
+ #!/usr/bin/env node
2
+ // CSS coverage REPORT - advisory, non-blocking. Lists every s-* class a component
3
+ // renders whose rule lands in no chunk or base-css (a sibling that may be absent).
4
+ // ALWAYS exits 0; it never gates a build. Runs PR-side only (build-for-testing.yaml)
5
+ // to post a reference comment for the author, and is deliberately NOT in the release
6
+ // workflow: coverage is a heuristic presence check, so blocking a release on it would
7
+ // fail with no safe remediation. Run: node src/plugins/css-coverage-check.js [--json]
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ const ROOT = path.resolve(__dirname, '..', '..');
13
+ const DIST_ESM = path.join(ROOT, 'dist', 'esm');
14
+ const COMPONENTS_DIR = path.join(ROOT, 'src', 'components');
15
+ const BASE_CSS_TS = path.join(ROOT, 'src', 'global', 'base-css.ts');
16
+ // Snapshot: classes styled by the pre-split build / by a migrated theme.
17
+ const BASELINE_JSON = path.join(__dirname, 'css-coverage-baseline.json');
18
+
19
+ // Known-safe flags, each with the contract that makes it safe.
20
+ const WHITELIST = [
21
+ { component: 'salla-loyalty', class: 's-button-solid', reason: 'only styles a loader child; the raw anchor has none' },
22
+ { component: 'salla-products-list', class: 's-product-card-fit-height', reason: 'default card loads the chunk; custom cards ship their own CSS' },
23
+ { component: 'salla-login-modal', class: 's-login-modal', reason: 'utilities emptied upstream; baseline rule from a stale published package' },
24
+ ];
25
+
26
+ // ---------- helpers ----------
27
+
28
+ const read = (p) => fs.readFileSync(p, 'utf8');
29
+ const exists = (p) => fs.existsSync(p);
30
+
31
+ // Unescape a JS double-quoted string body.
32
+ function unescapeJsString(raw) {
33
+ try {
34
+ return JSON.parse('"' + raw + '"');
35
+ } catch {
36
+ return raw
37
+ .replace(/\\n/g, '\n').replace(/\\t/g, '\t')
38
+ .replace(/\\"/g, '"').replace(/\\'/g, "'").replace(/\\\\/g, '\\');
39
+ }
40
+ }
41
+
42
+ // Class names appearing in CSS selectors (skips declaration bodies).
43
+ function cssClasses(css) {
44
+ const classes = new Set();
45
+ let depth = 0;
46
+ let buf = '';
47
+ for (let i = 0; i < css.length; i++) {
48
+ const ch = css[i];
49
+ if (ch === '{') {
50
+ const sel = buf.trim();
51
+ // at-rule preludes carry no classes
52
+ if (sel && !sel.startsWith('@')) {
53
+ for (const m of sel.matchAll(/\.(-?[A-Za-z_][\w-]*)/g)) classes.add(m[1]);
54
+ }
55
+ buf = '';
56
+ depth++;
57
+ } else if (ch === '}') {
58
+ buf = '';
59
+ depth = Math.max(0, depth - 1);
60
+ } else {
61
+ buf += ch;
62
+ }
63
+ }
64
+ return classes;
65
+ }
66
+
67
+ // All `const fooCss = "..."` strings inside a built entry chunk.
68
+ function chunkCssClasses(file) {
69
+ const src = read(file);
70
+ const classes = new Set();
71
+ for (const m of src.matchAll(/Css\s*=\s*"((?:[^"\\]|\\.)*)"/g)) {
72
+ for (const c of cssClasses(unescapeJsString(m[1]))) classes.add(c);
73
+ }
74
+ return classes;
75
+ }
76
+
77
+ // String literal bodies + template literal static chunks from a TS/TSX source.
78
+ // Returns { literals: string[], dynamicPrefixes: string[] }.
79
+ function extractLiterals(src) {
80
+ const literals = [];
81
+ const dynamicPrefixes = [];
82
+ let i = 0;
83
+ const n = src.length;
84
+ while (i < n) {
85
+ const ch = src[i];
86
+ if (ch === '/' && src[i + 1] === '/') { // line comment
87
+ while (i < n && src[i] !== '\n') i++;
88
+ } else if (ch === '/' && src[i + 1] === '*') { // block comment
89
+ i += 2;
90
+ while (i < n && !(src[i] === '*' && src[i + 1] === '/')) i++;
91
+ i += 2;
92
+ } else if (ch === "'" || ch === '"') {
93
+ const quote = ch;
94
+ let buf = '';
95
+ i++;
96
+ while (i < n && src[i] !== quote) {
97
+ if (src[i] === '\\') { buf += src[i + 1] ?? ''; i += 2; }
98
+ else buf += src[i++];
99
+ }
100
+ i++;
101
+ literals.push(buf);
102
+ } else if (ch === '`') {
103
+ i++;
104
+ let buf = '';
105
+ while (i < n) {
106
+ if (src[i] === '\\') { buf += src[i + 1] ?? ''; i += 2; continue; }
107
+ if (src[i] === '`') { i++; break; }
108
+ if (src[i] === '$' && src[i + 1] === '{') {
109
+ literals.push(buf);
110
+ const dyn = buf.match(/(?:^|[\s"'>])((?:s|salla)-[\w-]*)$/);
111
+ if (dyn) dynamicPrefixes.push(dyn[1]);
112
+ buf = '';
113
+ // scan the interpolation body too (classes live in ternaries)
114
+ i += 2;
115
+ const start = i;
116
+ let braces = 1;
117
+ while (i < n && braces > 0) {
118
+ if (src[i] === '{') braces++;
119
+ else if (src[i] === '}') braces--;
120
+ i++;
121
+ }
122
+ const inner = extractLiterals(src.slice(start, i - 1));
123
+ literals.push(...inner.literals);
124
+ dynamicPrefixes.push(...inner.dynamicPrefixes);
125
+ continue;
126
+ }
127
+ buf += src[i++];
128
+ }
129
+ literals.push(buf);
130
+ } else {
131
+ i++;
132
+ }
133
+ }
134
+ return { literals, dynamicPrefixes };
135
+ }
136
+
137
+ // Rendered s-* class tokens in one literal. Skips selector usage (.s-foo / #s-foo).
138
+ function classTokens(literal) {
139
+ const out = [];
140
+ for (const m of literal.matchAll(/(?<![.#\w$-])s-[a-z][\w-]*/g)) out.push(m[0]);
141
+ return out;
142
+ }
143
+
144
+ // ---------- pass 1: ownership ----------
145
+
146
+ function loadTagToBundle() {
147
+ const loader = read(path.join(DIST_ESM, 'loader.js'));
148
+ const m = loader.match(/JSON\.parse\("((?:[^"\\]|\\.)*)"\)/);
149
+ if (!m) throw new Error('Cannot find bundle map in dist/esm/loader.js');
150
+ const bundles = JSON.parse(unescapeJsString(m[1]));
151
+ const tagToBundle = new Map();
152
+ for (const [bundleName, cmps] of bundles) {
153
+ for (const cmp of cmps) tagToBundle.set(cmp[1], bundleName);
154
+ }
155
+ return tagToBundle;
156
+ }
157
+
158
+ function loadBaseCssClasses() {
159
+ const src = read(BASE_CSS_TS);
160
+ const m = src.match(/BASE_CSS\s*=\s*"((?:[^"\\]|\\.)*)"/);
161
+ if (!m) throw new Error('Cannot find BASE_CSS in base-css.ts');
162
+ return cssClasses(unescapeJsString(m[1]));
163
+ }
164
+
165
+ // Classes in selectors any utilities.json defines (plugin's mapping).
166
+ function sdkDefinedClasses() {
167
+ const classes = new Set();
168
+ for (const dir of fs.readdirSync(COMPONENTS_DIR)) {
169
+ const p = path.join(COMPONENTS_DIR, dir, 'utilities.json');
170
+ if (!exists(p)) continue;
171
+ let json;
172
+ try { json = JSON.parse(read(p)); } catch { continue; }
173
+ const owner = dir.replace('salla-', '');
174
+ for (const [key, value] of Object.entries(json)) {
175
+ const selector = typeof value === 'string'
176
+ ? (key.startsWith('@at-root') ? key.replace('@at-root ', '') : `.s-${owner}-${key}`)
177
+ : key;
178
+ for (const m of selector.matchAll(/\.([\w-]+)/g)) classes.add(m[1]);
179
+ }
180
+ }
181
+ return classes;
182
+ }
183
+
184
+ // ---------- pass 2 + 3: usage & composition ----------
185
+
186
+ // All non-test source files under a component dir, nested folders included.
187
+ function walkSources(dirPath) {
188
+ const out = [];
189
+ for (const entry of fs.readdirSync(dirPath, { withFileTypes: true })) {
190
+ const p = path.join(dirPath, entry.name);
191
+ if (entry.isDirectory()) {
192
+ if (!/^tests?$/.test(entry.name)) out.push(...walkSources(p));
193
+ } else if (/\.(tsx|ts)$/.test(entry.name)
194
+ && !/\.(spec|e2e|d)\.tsx?$/.test(entry.name) && !/interface/i.test(entry.name)) {
195
+ out.push(p);
196
+ }
197
+ }
198
+ return out;
199
+ }
200
+
201
+ function scanComponents() {
202
+ const components = []; // { tag, dir, ownClasses(after), used:Set, dynamic:[], children:Set }
203
+ for (const dir of fs.readdirSync(COMPONENTS_DIR)) {
204
+ const dirPath = path.join(COMPONENTS_DIR, dir);
205
+ if (!fs.statSync(dirPath).isDirectory()) continue;
206
+ const tagFiles = [];
207
+ const sharedSrcs = [];
208
+ for (const f of walkSources(dirPath)) {
209
+ const src = read(f);
210
+ const tagMatch = src.match(/tag:\s*['"`]([\w-]+)['"`]/);
211
+ if (tagMatch) tagFiles.push({ tag: tagMatch[1], src });
212
+ else sharedSrcs.push(src);
213
+ }
214
+ for (const { tag, src } of tagFiles) {
215
+ const used = new Set();
216
+ const dynamic = [];
217
+ const children = new Set();
218
+ for (const body of [src, ...sharedSrcs]) {
219
+ const { literals, dynamicPrefixes } = extractLiterals(body);
220
+ for (const lit of literals) {
221
+ // template prefixes count as dynamic, not usage
222
+ for (const t of classTokens(lit)) if (!t.endsWith('-')) used.add(t);
223
+ // bare tag literals catch createElement(variable); skip import paths
224
+ if (!lit.includes('/')) {
225
+ for (const m of lit.matchAll(/(?<![.#\w-])salla-[a-z][\w-]*/g)) children.add(m[0]);
226
+ }
227
+ }
228
+ dynamic.push(...dynamicPrefixes);
229
+ for (const m of body.matchAll(/<(salla-[a-z][\w-]*)/g)) children.add(m[1]);
230
+ }
231
+ children.delete(tag);
232
+ components.push({ tag, dir, used, dynamic, children });
233
+ }
234
+ }
235
+ return components.sort((a, b) => a.tag.localeCompare(b.tag));
236
+ }
237
+
238
+ // ---------- pass 4: coverage ----------
239
+
240
+ function main() {
241
+ const asJson = process.argv.includes('--json');
242
+
243
+ const tagToBundle = loadTagToBundle();
244
+ const baseClasses = loadBaseCssClasses();
245
+ const components = scanComponents();
246
+ const sdkDefined = sdkDefinedClasses();
247
+
248
+ const bundleClasses = new Map(); // bundleName -> Set
249
+ for (const bundle of new Set(tagToBundle.values())) {
250
+ const file = path.join(DIST_ESM, bundle + '.entry.js');
251
+ bundleClasses.set(bundle, exists(file) ? chunkCssClasses(file) : new Set());
252
+ }
253
+
254
+ const baseline = JSON.parse(read(BASELINE_JSON));
255
+ const baselineClasses = new Set(baseline.centralBuildClasses);
256
+ const themeClasses = new Set(baseline.themeOwnedClasses);
257
+
258
+ const whitelistFor = (component, cls) =>
259
+ WHITELIST.find((w) => w.class === cls && (!w.component || w.component === component));
260
+
261
+ // class -> set of bundles whose chunk styles it
262
+ const classOwners = new Map();
263
+ for (const [bundle, classes] of bundleClasses) {
264
+ for (const c of classes) {
265
+ if (!classOwners.has(c)) classOwners.set(c, new Set());
266
+ classOwners.get(c).add(bundle);
267
+ }
268
+ }
269
+
270
+ // Transitive children per tag (descendants whose chunks load alongside).
271
+ const byTag = new Map(components.map((c) => [c.tag, c]));
272
+ function descendants(tag, seen = new Set()) {
273
+ for (const child of byTag.get(tag)?.children ?? []) {
274
+ if (!seen.has(child)) { seen.add(child); descendants(child, seen); }
275
+ }
276
+ return seen;
277
+ }
278
+ // transitive ancestors
279
+ const directAncestors = new Map();
280
+ for (const c of components) {
281
+ for (const child of c.children) {
282
+ if (!directAncestors.has(child)) directAncestors.set(child, new Set());
283
+ directAncestors.get(child).add(c.tag);
284
+ }
285
+ }
286
+ function ancestors(tag, seen = new Set()) {
287
+ for (const a of directAncestors.get(tag) ?? []) {
288
+ if (!seen.has(a)) { seen.add(a); ancestors(a, seen); }
289
+ }
290
+ return seen;
291
+ }
292
+ // dir utilities ride the dir-main component's chunk only
293
+ const dirMainTag = new Map();
294
+ for (const c of components) if (c.tag === c.dir) dirMainTag.set(c.dir, c.tag);
295
+
296
+ const flags = [];
297
+ for (const c of components) {
298
+ const bundle = tagToBundle.get(c.tag);
299
+ if (!bundle) { flags.push({ component: c.tag, class: '(whole component)', type: 'no-bundle', detail: 'tag missing from loader map' }); continue; }
300
+ const own = bundleClasses.get(bundle) ?? new Set();
301
+ const desc = descendants(c.tag);
302
+
303
+ for (const cls of [...c.used].sort()) {
304
+ if (own.has(cls) || baseClasses.has(cls)) continue;
305
+ const wl = whitelistFor(c.tag, cls);
306
+ if (wl) { flags.push({ component: c.tag, class: cls, type: 'whitelisted', detail: wl.reason }); continue; }
307
+ const owners = classOwners.get(cls);
308
+ if (owners && owners.size) {
309
+ const ownerTags = [...tagToBundle].filter(([, b]) => owners.has(b)).map(([t]) => t);
310
+ const anc = ancestors(c.tag);
311
+ const viaChild = ownerTags.filter((t) => desc.has(t));
312
+ const viaAncestor = ownerTags.filter((t) => anc.has(t));
313
+ const dirMain = dirMainTag.get(c.dir);
314
+ if (dirMain && dirMain !== c.tag && ownerTags.includes(dirMain)) {
315
+ flags.push({ component: c.tag, class: cls, type: 'same-dir-split', detail: `dir utilities ride main chunk only: ${dirMain}` });
316
+ } else if (viaChild.length) {
317
+ flags.push({ component: c.tag, class: cls, type: 'fragile-composition', detail: `styled only by rendered child: ${viaChild.join(', ')}` });
318
+ } else if (viaAncestor.length) {
319
+ flags.push({ component: c.tag, class: cls, type: 'ancestor-provided', detail: `styled only by ancestor that renders it: ${viaAncestor.join(', ')}` });
320
+ } else {
321
+ flags.push({ component: c.tag, class: cls, type: 'hard-drop', detail: `styled only by unrelated: ${ownerTags.join(', ') || owners.size + ' bundle(s)'}` });
322
+ }
323
+ } else if (sdkDefined.has(cls)) {
324
+ // SDK ownership beats theme-owned
325
+ flags.push({ component: c.tag, class: cls, type: 'lost-rule', detail: 'selector defined in a utilities.json but emitted into no chunk' });
326
+ } else if (themeClasses.has(cls)) {
327
+ flags.push({ component: c.tag, class: cls, type: 'theme-owned', detail: 'styled by the migrated theme css, not an SDK rule' });
328
+ } else if (baselineClasses.has(cls)) {
329
+ flags.push({ component: c.tag, class: cls, type: 'lost-rule', detail: 'rule existed in central build, now in no chunk' });
330
+ } else {
331
+ flags.push({ component: c.tag, class: cls, type: 'never-styled', detail: 'no rule anywhere, incl. central baseline' });
332
+ }
333
+ }
334
+ for (const prefix of [...new Set(c.dynamic)].sort()) {
335
+ if (prefix.startsWith('salla-')) continue;
336
+ flags.push({ component: c.tag, class: prefix + '${...}', type: 'dynamic-wildcard', detail: 'runtime-built class, verify owner chunk covers all variants' });
337
+ }
338
+ }
339
+
340
+ if (asJson) {
341
+ console.log(JSON.stringify({ components: components.length, flags }, null, 2));
342
+ } else {
343
+ const order = ['lost-rule', 'hard-drop', 'same-dir-split', 'fragile-composition', 'ancestor-provided', 'dynamic-wildcard', 'theme-owned', 'whitelisted', 'never-styled', 'no-bundle'];
344
+ const missing = flags.filter((f) => f.type === 'lost-rule' || f.type === 'hard-drop');
345
+ console.log(`Scanned ${components.length} components, ${bundleClasses.size} bundles.`);
346
+ console.log(missing.length
347
+ ? `⚠️ ${missing.length} class(es) now styled by no chunk - see lost-rule/hard-drop below. Verify each is intentionally dropped.\n`
348
+ : `✅ No dropped classes.\n`);
349
+ for (const type of order) {
350
+ const group = flags.filter((f) => f.type === type);
351
+ if (!group.length) continue;
352
+ console.log(`== ${type} (${group.length}) ==`);
353
+ for (const f of group) console.log(` ${f.component} ${f.class} -> ${f.detail}`);
354
+ console.log('');
355
+ }
356
+ if (!flags.length) console.log('No flags. Invariant holds.');
357
+ }
358
+
359
+ // Report only - never blocks the build or CI; dropped classes print above under lost-rule/hard-drop.
360
+ process.exit(0);
361
+ }
362
+
363
+ main();
@@ -0,0 +1,146 @@
1
+ // Per-component Tailwind: appends each component's CSS (utilities.json rules +
2
+ // classes used in its own tsx) to its styleUrl output, so styles lazy-load with
3
+ // the component chunk instead of one big global CSS file.
4
+ // Third-party-lib selectors (flatpickr, filepond) must live with the component
5
+ // that imports the lib, so the styles ride the same chunk as the lib itself.
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+ const tailwindcss = require('tailwindcss');
9
+ const twPlugin = require('tailwindcss/plugin');
10
+ const core = require('@salla.sa/twilight-tailwind-theme/plugin-core');
11
+ const generatorGlobals = require('@salla.sa/twilight-tailwind-theme/generator-globals');
12
+ const tokens = require('@salla.sa/twilight-tailwind-theme/component-tokens');
13
+ const postcss = require(require.resolve('postcss', {
14
+ paths: [path.dirname(require.resolve('tailwindcss/package.json'))],
15
+ }));
16
+
17
+ const crypto = require('crypto');
18
+ const { isDevMode } = require('./commonjs-cache-fix');
19
+
20
+ const componentsDir = path.resolve(__dirname, '../components');
21
+ const CLASS_RE = /\.((?:[\w-]|\\.)+)/g;
22
+ const md5 = (s) => crypto.createHash('md5').update(s).digest('hex');
23
+
24
+ let cachedRules = null;
25
+ let aggregateSig = '';
26
+ // Pre-existing collisions, frozen as the central generator shipped them.
27
+ const KNOWN_COLLISIONS = new Set(['.s-modal-header']);
28
+
29
+ // Aggregate all utilities.json (same mapping as tailwind-theme/generator.js).
30
+ function allRules() {
31
+ if (cachedRules && !isDevMode()) return cachedRules;
32
+ const map = new Map(); // selector -> {owner, css}
33
+ for (const dir of fs.readdirSync(componentsDir, { withFileTypes: true })) {
34
+ if (!dir.isDirectory()) continue;
35
+ let json;
36
+ try {
37
+ json = JSON.parse(fs.readFileSync(path.join(componentsDir, dir.name, 'utilities.json'), 'utf8'));
38
+ } catch (e) {
39
+ continue;
40
+ }
41
+ const owner = dir.name.replace('salla-', '');
42
+ for (const [key, value] of Object.entries(json)) {
43
+ const selector = typeof value === 'string'
44
+ ? (key.startsWith('@at-root') ? key.replace('@at-root ', '') : `.s-${owner}-${key}`)
45
+ : key;
46
+ const prev = map.get(selector);
47
+ if (prev && prev.owner !== owner && !KNOWN_COLLISIONS.has(selector)) {
48
+ throw new Error(`utilities.json selector collision: "${selector}" is defined by both `
49
+ + `salla-${prev.owner} and salla-${owner}; the aggregate is last-write-wins, so one `
50
+ + `silently loses its rule. Scope the selector under your component's own class instead.`);
51
+ }
52
+ map.set(selector, { owner, css: typeof value === 'string' ? { [`@apply ${value}`]: {} } : value });
53
+ }
54
+ }
55
+ cachedRules = [...map.entries()].map(([selector, r]) => ({ selector, ...r }));
56
+ aggregateSig = md5(JSON.stringify(cachedRules));
57
+ return cachedRules;
58
+ }
59
+
60
+ // Component dir state (tsx content scan + utilities.json) for cache invalidation.
61
+ function dirSignature(dirName) {
62
+ const dir = path.join(componentsDir, dirName);
63
+ return fs.readdirSync(dir)
64
+ .filter((f) => /\.(tsx|ts|json)$/.test(f))
65
+ .map((f) => f + ':' + fs.statSync(path.join(dir, f)).mtimeMs)
66
+ .join('|');
67
+ }
68
+
69
+ // Candidate classes that force-emit this component's rules (covers `s-x-${dynamic}` names).
70
+ function safelistFor(owner) {
71
+ const own = `s-${owner}`;
72
+ const out = new Set();
73
+ for (const rule of allRules()) {
74
+ if (rule.owner !== owner) continue;
75
+ const classes = Array.from(rule.selector.matchAll(CLASS_RE), (m) => m[1].replace(/\\/g, ''));
76
+ const owned = classes.filter((c) => c === own || c.startsWith(`${own}-`));
77
+ for (const c of owned.length ? owned : classes) out.add(c);
78
+ }
79
+ return [...out];
80
+ }
81
+
82
+ // Own rules + foreign rules that mention this component's classes.
83
+ function rulesFor(owner) {
84
+ const own = `s-${owner}`;
85
+ return allRules().filter((rule) => {
86
+ if (rule.owner === owner) return true;
87
+ return Array.from(rule.selector.matchAll(CLASS_RE), (m) => m[1].replace(/\\/g, ''))
88
+ .some((c) => c === own || c.startsWith(`${own}-`));
89
+ });
90
+ }
91
+
92
+ function tailwindConfigFor(owner, dirName) {
93
+ const componentPlugin = twPlugin((api) => {
94
+ core.handler(api);
95
+ api.addUtilities(generatorGlobals);
96
+ api.addUtilities(rulesFor(owner).map((r) => ({ [r.selector]: r.css })));
97
+ }, core.config);
98
+
99
+ return {
100
+ important: false,
101
+ darkMode: 'class',
102
+ corePlugins: { preflight: false, outline: false },
103
+ content: [
104
+ path.join(componentsDir, dirName, '**/*.{tsx,ts}'),
105
+ '!' + path.join(componentsDir, dirName, '**/test/**'),
106
+ ],
107
+ safelist: safelistFor(owner),
108
+ theme: tokens,
109
+ plugins: [componentPlugin],
110
+ };
111
+ }
112
+
113
+ // Stencil compiles styles once per output target (dist, custom-elements,
114
+ // hydrate): share one compute per input state instead of running 3x.
115
+ const resultCache = new Map(); // `${fileName}:${dirName}` -> {key, promise}
116
+
117
+ exports.tailwindPerComponent = () => ({
118
+ name: 'tailwind-per-component',
119
+ pluginType: 'css',
120
+ async transform(sourceText, fileName) {
121
+ if (process.env.TWPC_DEBUG) console.log('TWPC transform:', fileName);
122
+ // Stencil passes sass output as .css (original styleUrl is .scss).
123
+ if (!fileName || !/\.s?css$/.test(fileName)) return null;
124
+ const rel = path.relative(componentsDir, fileName);
125
+ if (rel.startsWith('..')) return null;
126
+ const [dirName, base] = rel.split(path.sep);
127
+ // Utilities ride the main component file only (sub-component scss pass through).
128
+ if (base !== `${dirName}.css` && base !== `${dirName}.scss`) return null;
129
+ const owner = dirName.replace('salla-', '');
130
+ allRules();
131
+ const key = md5(sourceText) + aggregateSig + md5(dirSignature(dirName));
132
+ // Key by file + dir: dir drives owner/config, several components share one styleUrl.
133
+ const cacheKey = `${fileName}:${dirName}`;
134
+ const hit = resultCache.get(cacheKey);
135
+ if (hit && hit.key === key) return { code: await hit.promise };
136
+ const promise = postcss([tailwindcss(tailwindConfigFor(owner, dirName))])
137
+ .process(`${sourceText}\n@tailwind utilities;\n`, { from: fileName })
138
+ .then((result) => {
139
+ if (isDevMode()) console.log(`✅ [utilities] ${dirName} compiled (${Math.round(result.css.length / 1024)}kb)`);
140
+ // Marker lets the global script keep this chunk's <style> ahead of the theme css.
141
+ return `/*!twlt*/${result.css}`;
142
+ });
143
+ resultCache.set(cacheKey, { key, promise });
144
+ return { code: await promise };
145
+ },
146
+ });
@@ -0,0 +1,22 @@
1
+ // Stencil doesn't watch json: on utilities.json change, touch the component's
2
+ // scss so the watch build re-runs the per-component Tailwind transform.
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ const componentsDir = path.resolve(__dirname, '../components');
7
+
8
+ const lastSeen = new Map();
9
+ fs.watch(componentsDir, { recursive: true }, (event, file) => {
10
+ if (!file || !file.endsWith('utilities.json')) return;
11
+ // macOS fires twice per save
12
+ if (Date.now() - (lastSeen.get(file) || 0) < 200) return;
13
+ lastSeen.set(file, Date.now());
14
+ const dir = path.dirname(file);
15
+ const scss = path.join(componentsDir, dir, `${path.basename(dir)}.scss`);
16
+ if (!fs.existsSync(scss)) return console.log(`⚠️ [utilities] no scss for ${dir}, styles won't rebuild`);
17
+ const now = new Date();
18
+ fs.utimesSync(scss, now, now);
19
+ console.log(`⚙️ [utilities] ${dir} changed, compiling new utilities...`);
20
+ });
21
+
22
+ console.log('👀 [utilities] watching src/components/**/utilities.json');