@salla.sa/twilight-theme-engine 1.0.90 → 1.0.92

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 (142) hide show
  1. package/dist/{AddToCartForm-QMTJMDBE.js → AddToCartForm-NJDWY5UO.js} +3 -3
  2. package/dist/{AddToCartForm-QMTJMDBE.js.map → AddToCartForm-NJDWY5UO.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-JFPJVF5V.js → BlogAuthorPage-KNLY6INT.js} +7 -7
  4. package/dist/{BlogAuthorPage-JFPJVF5V.js.map → BlogAuthorPage-KNLY6INT.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-PC5O2VXV.js → BlogCategoryPage-PKJJEVJN.js} +7 -7
  6. package/dist/{BlogCategoryPage-PC5O2VXV.js.map → BlogCategoryPage-PKJJEVJN.js.map} +1 -1
  7. package/dist/{BlogPage-Q7C2PQ4S.js → BlogPage-JSCQWH4K.js} +6 -6
  8. package/dist/{BlogPage-Q7C2PQ4S.js.map → BlogPage-JSCQWH4K.js.map} +1 -1
  9. package/dist/{BlogSinglePage-BFJVMLFS.js → BlogSinglePage-VGSUYBPQ.js} +6 -6
  10. package/dist/{BlogSinglePage-BFJVMLFS.js.map → BlogSinglePage-VGSUYBPQ.js.map} +1 -1
  11. package/dist/{BlogTagPage-K2MV4GUT.js → BlogTagPage-7RBVWWVO.js} +7 -7
  12. package/dist/{BlogTagPage-K2MV4GUT.js.map → BlogTagPage-7RBVWWVO.js.map} +1 -1
  13. package/dist/{BrandsPage-A267NG34.js → BrandsPage-2EZAYDFS.js} +6 -6
  14. package/dist/{BrandsPage-A267NG34.js.map → BrandsPage-2EZAYDFS.js.map} +1 -1
  15. package/dist/{Breadcrumb-PPVWWX5S.js → Breadcrumb-3BZBCWDK.js} +6 -6
  16. package/dist/{Breadcrumb-PPVWWX5S.js.map → Breadcrumb-3BZBCWDK.js.map} +1 -1
  17. package/dist/{CartItem-AHUDNTQR.js → CartItem-O6DFABXA.js} +6 -6
  18. package/dist/{CartItem-AHUDNTQR.js.map → CartItem-O6DFABXA.js.map} +1 -1
  19. package/dist/{CartSummary-S67UB3AG.js → CartSummary-3U4F2BLY.js} +6 -6
  20. package/dist/{CartSummary-S67UB3AG.js.map → CartSummary-3U4F2BLY.js.map} +1 -1
  21. package/dist/{Copyright-DR4ZT2CS.js → Copyright-UGII52NH.js} +3 -3
  22. package/dist/{Copyright-DR4ZT2CS.js.map → Copyright-UGII52NH.js.map} +1 -1
  23. package/dist/{CustomerLayout-MPRNNYLC.js → CustomerLayout-EI2PAOU6.js} +6 -6
  24. package/dist/{CustomerLayout-MPRNNYLC.js.map → CustomerLayout-EI2PAOU6.js.map} +1 -1
  25. package/dist/{Footer-JLIWTJ5D.js → Footer-TW4N2GMF.js} +4 -4
  26. package/dist/{Footer-JLIWTJ5D.js.map → Footer-TW4N2GMF.js.map} +1 -1
  27. package/dist/{Header-5WISG7DQ.js → Header-YW7FOVIW.js} +4 -4
  28. package/dist/{Header-5WISG7DQ.js.map → Header-YW7FOVIW.js.map} +1 -1
  29. package/dist/{LoyaltyPage-2DNT5B4C.js → LoyaltyPage-G6IYKWME.js} +6 -6
  30. package/dist/{LoyaltyPage-2DNT5B4C.js.map → LoyaltyPage-G6IYKWME.js.map} +1 -1
  31. package/dist/{LoyaltyPointsPage-XQUSSPMN.js → LoyaltyPointsPage-RXXL6C74.js} +3 -3
  32. package/dist/{LoyaltyPointsPage-XQUSSPMN.js.map → LoyaltyPointsPage-RXXL6C74.js.map} +1 -1
  33. package/dist/{MainMenu-32JMOTLQ.js → MainMenu-7KRYJ7OP.js} +3 -3
  34. package/dist/{MainMenu-32JMOTLQ.js.map → MainMenu-7KRYJ7OP.js.map} +1 -1
  35. package/dist/{MasterLayout-OMAGB4P6.js → MasterLayout-WLLTQJAY.js} +6 -6
  36. package/dist/{MasterLayout-OMAGB4P6.js.map → MasterLayout-WLLTQJAY.js.map} +1 -1
  37. package/dist/{MobileMenu-GJFKTT7L.js → MobileMenu-MV4SBF2W.js} +6 -6
  38. package/dist/{MobileMenu-GJFKTT7L.js.map → MobileMenu-MV4SBF2W.js.map} +1 -1
  39. package/dist/{NotificationsPage-6DFTZNHX.js → NotificationsPage-MSVZN25W.js} +6 -6
  40. package/dist/{NotificationsPage-6DFTZNHX.js.map → NotificationsPage-MSVZN25W.js.map} +1 -1
  41. package/dist/{OrderSinglePage-F7WGLADB.js → OrderSinglePage-3YXNPLEV.js} +6 -6
  42. package/dist/{OrderSinglePage-F7WGLADB.js.map → OrderSinglePage-3YXNPLEV.js.map} +1 -1
  43. package/dist/{OrdersPage-EPGA6BGW.js → OrdersPage-JXQSQLSQ.js} +6 -6
  44. package/dist/{OrdersPage-EPGA6BGW.js.map → OrdersPage-JXQSQLSQ.js.map} +1 -1
  45. package/dist/{PageSingle-MGSXARK3.js → PageSingle-4S2G45RQ.js} +3 -3
  46. package/dist/{PageSingle-MGSXARK3.js.map → PageSingle-4S2G45RQ.js.map} +1 -1
  47. package/dist/{ProductDetails-UJHQNBZY.js → ProductDetails-OUZMXQCC.js} +3 -3
  48. package/dist/{ProductDetails-UJHQNBZY.js.map → ProductDetails-OUZMXQCC.js.map} +1 -1
  49. package/dist/{ProfilePage-K4IK2NFB.js → ProfilePage-HK5LZYDT.js} +6 -6
  50. package/dist/{ProfilePage-K4IK2NFB.js.map → ProfilePage-HK5LZYDT.js.map} +1 -1
  51. package/dist/{ReviewsPage-5HOLWY3F.js → ReviewsPage-V3MPIT6B.js} +3 -3
  52. package/dist/{ReviewsPage-5HOLWY3F.js.map → ReviewsPage-V3MPIT6B.js.map} +1 -1
  53. package/dist/{SeoCartWidget-SWCLBEG4.js → SeoCartWidget-JOCFGXSU.js} +6 -6
  54. package/dist/{SeoCartWidget-SWCLBEG4.js.map → SeoCartWidget-JOCFGXSU.js.map} +1 -1
  55. package/dist/{SettingsPage-6A6VZQSL.js → SettingsPage-4BBBQQQJ.js} +6 -6
  56. package/dist/{SettingsPage-6A6VZQSL.js.map → SettingsPage-4BBBQQQJ.js.map} +1 -1
  57. package/dist/{StoreClosedNotification-AJ5NQTHL.js → StoreClosedNotification-BL5BRSY7.js} +7 -7
  58. package/dist/{StoreClosedNotification-AJ5NQTHL.js.map → StoreClosedNotification-BL5BRSY7.js.map} +1 -1
  59. package/dist/{TestimonialsPage-W6MLKTNP.js → TestimonialsPage-KT5PM4SO.js} +3 -3
  60. package/dist/{TestimonialsPage-W6MLKTNP.js.map → TestimonialsPage-KT5PM4SO.js.map} +1 -1
  61. package/dist/{ThankYouPage-MJFQH7UO.js → ThankYouPage-4MXMOGE3.js} +6 -6
  62. package/dist/{ThankYouPage-MJFQH7UO.js.map → ThankYouPage-4MXMOGE3.js.map} +1 -1
  63. package/dist/{WalletPage-4OOSR2VC.js → WalletPage-SPNV3SVO.js} +6 -6
  64. package/dist/{WalletPage-4OOSR2VC.js.map → WalletPage-SPNV3SVO.js.map} +1 -1
  65. package/dist/{WishlistPage-B3BWGZXX.js → WishlistPage-GZYVL7M4.js} +6 -6
  66. package/dist/{WishlistPage-B3BWGZXX.js.map → WishlistPage-GZYVL7M4.js.map} +1 -1
  67. package/dist/chunk-3LZJXKVO.js +43 -0
  68. package/dist/chunk-3LZJXKVO.js.map +1 -0
  69. package/dist/{chunk-ARLCEQNY.js → chunk-A2F2YCMS.js} +7 -7
  70. package/dist/{chunk-ARLCEQNY.js.map → chunk-A2F2YCMS.js.map} +1 -1
  71. package/dist/{chunk-PVVQ55WU.js → chunk-AMSEXJGY.js} +4 -4
  72. package/dist/{chunk-PVVQ55WU.js.map → chunk-AMSEXJGY.js.map} +1 -1
  73. package/dist/{chunk-PWCHXVAW.js → chunk-FCWHOLVA.js} +5 -5
  74. package/dist/{chunk-PWCHXVAW.js.map → chunk-FCWHOLVA.js.map} +1 -1
  75. package/dist/{chunk-S4TW6BTW.js → chunk-I4O4BOJV.js} +6 -6
  76. package/dist/{chunk-S4TW6BTW.js.map → chunk-I4O4BOJV.js.map} +1 -1
  77. package/dist/chunk-JPQSCLDG.js +14 -0
  78. package/dist/{chunk-PIXAIGO3.js.map → chunk-JPQSCLDG.js.map} +1 -1
  79. package/dist/{chunk-FSXQMBRZ.js → chunk-JWJK5K6G.js} +7 -7
  80. package/dist/{chunk-FSXQMBRZ.js.map → chunk-JWJK5K6G.js.map} +1 -1
  81. package/dist/{chunk-ABOH7PAS.js → chunk-L2JL2J2X.js} +3 -3
  82. package/dist/{chunk-ABOH7PAS.js.map → chunk-L2JL2J2X.js.map} +1 -1
  83. package/dist/{chunk-WF4ZYBTN.js → chunk-L5RO65A4.js} +3 -3
  84. package/dist/{chunk-WF4ZYBTN.js.map → chunk-L5RO65A4.js.map} +1 -1
  85. package/dist/{chunk-LCN5ZEXS.js → chunk-ROZYGY5L.js} +3 -3
  86. package/dist/{chunk-LCN5ZEXS.js.map → chunk-ROZYGY5L.js.map} +1 -1
  87. package/dist/{chunk-HXWTCFXD.js → chunk-VBZFPXFW.js} +4 -4
  88. package/dist/{chunk-HXWTCFXD.js.map → chunk-VBZFPXFW.js.map} +1 -1
  89. package/dist/{chunk-NVT4D5XH.js → chunk-VCIGJB62.js} +4 -4
  90. package/dist/{chunk-NVT4D5XH.js.map → chunk-VCIGJB62.js.map} +1 -1
  91. package/dist/{chunk-TY4GLQHS.js → chunk-X35KC3VM.js} +3 -3
  92. package/dist/{chunk-TY4GLQHS.js.map → chunk-X35KC3VM.js.map} +1 -1
  93. package/dist/{chunk-3JUS56LJ.js → chunk-Y2SZHUTP.js} +3 -3
  94. package/dist/{chunk-3JUS56LJ.js.map → chunk-Y2SZHUTP.js.map} +1 -1
  95. package/dist/components/cart/index.js +1 -1
  96. package/dist/components/common/index.js +1 -1
  97. package/dist/components/drawer/index.js +4 -4
  98. package/dist/components/home/index.js +6 -6
  99. package/dist/components/layout/index.js +1 -1
  100. package/dist/components/product/index.js +5 -5
  101. package/dist/components/store/index.js +6 -6
  102. package/dist/{document-class-HHFG6GA4.js → document-class-DUYOFGG5.js} +3 -3
  103. package/dist/{document-class-HHFG6GA4.js.map → document-class-DUYOFGG5.js.map} +1 -1
  104. package/dist/hooks/index.js +4 -4
  105. package/dist/hooks/useGtm.js +4 -4
  106. package/dist/hooks/useMoney.js +4 -4
  107. package/dist/hooks/useStore.js +4 -4
  108. package/dist/index.js +4 -4
  109. package/dist/{not-found-R7F34VWV.js → not-found-GEOZNKN5.js} +6 -6
  110. package/dist/{not-found-R7F34VWV.js.map → not-found-GEOZNKN5.js.map} +1 -1
  111. package/dist/providers/index.js +4 -4
  112. package/dist/routes/account/orders.js +1 -1
  113. package/dist/routes/account.js +6 -6
  114. package/dist/routes/blog.js +5 -5
  115. package/dist/routes/brands.js +1 -1
  116. package/dist/routes/cart.js +8 -8
  117. package/dist/routes/home.js +7 -7
  118. package/dist/routes/loyalty.js +2 -2
  119. package/dist/routes/page.js +1 -1
  120. package/dist/routes/product-listing/ProductListPage.d.ts.map +1 -1
  121. package/dist/routes/product-listing/loader.d.ts.map +1 -1
  122. package/dist/routes/product-listing.js +20 -12
  123. package/dist/routes/product-listing.js.map +1 -1
  124. package/dist/routes/product.js +6 -6
  125. package/dist/routes/testimonials.js +2 -2
  126. package/dist/routes/thank-you.js +1 -1
  127. package/dist/skeleton.js +7 -7
  128. package/dist/tanstack.js +1 -1
  129. package/dist/types/index.d.ts +2 -0
  130. package/dist/types/index.d.ts.map +1 -1
  131. package/dist/utils/index.js +1 -1
  132. package/dist/utils/sort-options.d.ts +9 -2
  133. package/dist/utils/sort-options.d.ts.map +1 -1
  134. package/dist/utils/sort-options.js +4 -0
  135. package/dist/utils/sort-options.js.map +1 -0
  136. package/dist/vite/index.js +2 -2
  137. package/package.json +5 -1
  138. package/tailwind/routes/product-listing/ProductListPage.tsx.txt +15 -3
  139. package/tailwind/routes/product-listing/loader.ts.txt +3 -1
  140. package/dist/chunk-6Z4MOC4S.js +0 -32
  141. package/dist/chunk-6Z4MOC4S.js.map +0 -1
  142. package/dist/chunk-PIXAIGO3.js +0 -14
@@ -3,7 +3,7 @@ import { HookSlot, useStore } from '../../hooks';
3
3
  import { useTranslation } from '../../providers/I18nProvider';
4
4
  import { useNavigate, useLocation } from '../../providers/NavigationProvider';
5
5
  import { useTwilight } from '../../providers/TwilightProvider';
6
- import { sortOptions } from '../../utils/sort-options';
6
+ import { availableSortIds, sortOptions } from '../../utils/sort-options';
7
7
  import { Drawer } from '../../components/drawer';
8
8
  import { Breadcrumb } from '../../components/common';
9
9
  import { SallaFilters } from '@salla.sa/twilight-components-react/filters';
@@ -56,7 +56,14 @@ export function ProductListPage({
56
56
  useReorderButtons(isReorder);
57
57
 
58
58
  // Generate sort options with translations
59
- const sortOptionsWithTrans = useMemo(() => sortOptions(selectedSort, t), [selectedSort, t]);
59
+ const sortIds = availableSortIds(source.type, store?.settings?.product?.sort_options);
60
+ const sortOptionsWithTrans = useMemo(
61
+ () => sortOptions(selectedSort, t, sortIds),
62
+ [selectedSort, t, sortIds]
63
+ );
64
+ // The merchant may have turned off the sort the list is in (the default, or an old link's):
65
+ // show no choice rather than an option that does not describe the order.
66
+ const shownSort = sortOptionsWithTrans.some((option) => option.is_selected) ? selectedSort : '';
60
67
 
61
68
  // Get location from hook for consistent URL handling
62
69
  const location = useLocation();
@@ -221,9 +228,14 @@ export function ProductListPage({
221
228
  <select
222
229
  id="product-sort"
223
230
  className="form-input pt-0 pb-1 rtl:md:pl-10 ltr:md:pr-10"
224
- value={selectedSort}
231
+ value={shownSort}
225
232
  onChange={handleSortChange}
226
233
  >
234
+ {shownSort === '' && (
235
+ <option value="" disabled hidden>
236
+ {t('pages.categories.sorting', 'Sort By')}
237
+ </option>
238
+ )}
227
239
  {sortOptionsWithTrans.map((option) => (
228
240
  <option key={option.id} value={option.id}>
229
241
  {option.name}
@@ -7,6 +7,7 @@ import { notFound, orThrow, unauthorized } from '../../providers/NavigationProvi
7
7
  import { getAuthToken } from '../../api/client';
8
8
  import { getTwilightContext } from '../../twilight/context';
9
9
  import { RouteId } from '../../router/route-ids';
10
+ import { SORT_IDS } from '../../utils/sort-options';
10
11
 
11
12
  const DEFAULT_SORT = 'ourSuggest';
12
13
 
@@ -44,7 +45,8 @@ export async function productListLoader(
44
45
  // A number is a page from an old Twig link; the API pages only by its own cursor.
45
46
  const page = search?.page ? String(search.page) : undefined;
46
47
  const cursor = page && Number.isNaN(Number(page)) ? page : undefined;
47
- const sort = search?.sort ?? DEFAULT_SORT;
48
+ // A sort the API does not know is a 422 for the whole page; fall back to the default.
49
+ const sort = search?.sort && SORT_IDS.includes(search.sort) ? search.sort : DEFAULT_SORT;
48
50
 
49
51
  const sourceType = params.source ?? (params.id ? 'categories' : undefined);
50
52
 
@@ -1,32 +0,0 @@
1
- // src/utils/sort-options.ts
2
- var sortOptions = (currentSort, t) => [
3
- {
4
- id: "ourSuggest",
5
- name: t("pages.categories.sort_by_suggestions", "Our Suggestions"),
6
- is_selected: currentSort === "ourSuggest"
7
- },
8
- {
9
- id: "bestSell",
10
- name: t("pages.categories.sort_by_sales", "Best Seller"),
11
- is_selected: currentSort === "bestSell"
12
- },
13
- {
14
- id: "topRated",
15
- name: t("pages.categories.sort_by_rating", "Top Rated"),
16
- is_selected: currentSort === "topRated"
17
- },
18
- {
19
- id: "priceFromLowToTop",
20
- name: t("pages.categories.sort_by_price_az", "Price Low to High"),
21
- is_selected: currentSort === "priceFromLowToTop"
22
- },
23
- {
24
- id: "priceFromTopToLow",
25
- name: t("pages.categories.sort_by_price_za", "Price High to Low"),
26
- is_selected: currentSort === "priceFromTopToLow"
27
- }
28
- ];
29
-
30
- export { sortOptions };
31
- //# sourceMappingURL=chunk-6Z4MOC4S.js.map
32
- //# sourceMappingURL=chunk-6Z4MOC4S.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/sort-options.ts"],"names":[],"mappings":";AAEO,IAAM,WAAA,GAAc,CAAC,WAAA,EAAqB,CAAA,KAAmB;AAAA,EAClE;AAAA,IACE,EAAA,EAAI,YAAA;AAAA,IACJ,IAAA,EAAM,CAAA,CAAE,sCAAA,EAAwC,iBAAiB,CAAA;AAAA,IACjE,aAAa,WAAA,KAAgB;AAAA,GAC/B;AAAA,EACA;AAAA,IACE,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,CAAA,CAAE,gCAAA,EAAkC,aAAa,CAAA;AAAA,IACvD,aAAa,WAAA,KAAgB;AAAA,GAC/B;AAAA,EACA;AAAA,IACE,EAAA,EAAI,UAAA;AAAA,IACJ,IAAA,EAAM,CAAA,CAAE,iCAAA,EAAmC,WAAW,CAAA;AAAA,IACtD,aAAa,WAAA,KAAgB;AAAA,GAC/B;AAAA,EACA;AAAA,IACE,EAAA,EAAI,mBAAA;AAAA,IACJ,IAAA,EAAM,CAAA,CAAE,mCAAA,EAAqC,mBAAmB,CAAA;AAAA,IAChE,aAAa,WAAA,KAAgB;AAAA,GAC/B;AAAA,EACA;AAAA,IACE,EAAA,EAAI,mBAAA;AAAA,IACJ,IAAA,EAAM,CAAA,CAAE,mCAAA,EAAqC,mBAAmB,CAAA;AAAA,IAChE,aAAa,WAAA,KAAgB;AAAA;AAEjC","file":"chunk-6Z4MOC4S.js","sourcesContent":["type TranslateFn = (key: string, fallback: string) => string;\n\nexport const sortOptions = (currentSort: string, t: TranslateFn) => [\n {\n id: 'ourSuggest',\n name: t('pages.categories.sort_by_suggestions', 'Our Suggestions'),\n is_selected: currentSort === 'ourSuggest',\n },\n {\n id: 'bestSell',\n name: t('pages.categories.sort_by_sales', 'Best Seller'),\n is_selected: currentSort === 'bestSell',\n },\n {\n id: 'topRated',\n name: t('pages.categories.sort_by_rating', 'Top Rated'),\n is_selected: currentSort === 'topRated',\n },\n {\n id: 'priceFromLowToTop',\n name: t('pages.categories.sort_by_price_az', 'Price Low to High'),\n is_selected: currentSort === 'priceFromLowToTop',\n },\n {\n id: 'priceFromTopToLow',\n name: t('pages.categories.sort_by_price_za', 'Price High to Low'),\n is_selected: currentSort === 'priceFromTopToLow',\n },\n];\n"]}
@@ -1,14 +0,0 @@
1
- import { lazy } from 'react';
2
-
3
- // src/components/cart/lazy.ts
4
- var LazyCartItem = lazy(() => import('./CartItem-AHUDNTQR.js').then((m) => ({ default: m.CartItem })));
5
- var LazyCartSummary = lazy(
6
- () => import('./CartSummary-S67UB3AG.js').then((m) => ({ default: m.CartSummary }))
7
- );
8
- var LazySeoCartWidget = lazy(
9
- () => import('./SeoCartWidget-SWCLBEG4.js').then((m) => ({ default: m.SeoCartWidget }))
10
- );
11
-
12
- export { LazyCartItem, LazyCartSummary, LazySeoCartWidget };
13
- //# sourceMappingURL=chunk-PIXAIGO3.js.map
14
- //# sourceMappingURL=chunk-PIXAIGO3.js.map