@salla.sa/twilight-theme-engine 1.0.1 → 1.0.3

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 (127) hide show
  1. package/dist/{AddToCartForm-E6LDRNGM.js → AddToCartForm-6ODQJ32T.js} +3 -3
  2. package/dist/{AddToCartForm-E6LDRNGM.js.map → AddToCartForm-6ODQJ32T.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-SK7ZTUPN.js → BlogAuthorPage-ZXRBTZHT.js} +6 -6
  4. package/dist/{BlogAuthorPage-SK7ZTUPN.js.map → BlogAuthorPage-ZXRBTZHT.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-XEUUE3H2.js → BlogCategoryPage-CP7A7PZ5.js} +6 -6
  6. package/dist/{BlogCategoryPage-XEUUE3H2.js.map → BlogCategoryPage-CP7A7PZ5.js.map} +1 -1
  7. package/dist/{BlogPage-67ZEZTMY.js → BlogPage-6RW2SMNK.js} +5 -5
  8. package/dist/{BlogPage-67ZEZTMY.js.map → BlogPage-6RW2SMNK.js.map} +1 -1
  9. package/dist/{BlogSinglePage-H5NWL37R.js → BlogSinglePage-TRUQO3WQ.js} +5 -5
  10. package/dist/{BlogSinglePage-H5NWL37R.js.map → BlogSinglePage-TRUQO3WQ.js.map} +1 -1
  11. package/dist/{BlogTagPage-I6YXVDTH.js → BlogTagPage-CHV2OKQJ.js} +6 -6
  12. package/dist/{BlogTagPage-I6YXVDTH.js.map → BlogTagPage-CHV2OKQJ.js.map} +1 -1
  13. package/dist/{BrandsPage-RVK36ZAV.js → BrandsPage-JXPDOKSC.js} +5 -5
  14. package/dist/{BrandsPage-RVK36ZAV.js.map → BrandsPage-JXPDOKSC.js.map} +1 -1
  15. package/dist/{Breadcrumb-KINELHN4.js → Breadcrumb-XXDZNKOF.js} +5 -5
  16. package/dist/{Breadcrumb-KINELHN4.js.map → Breadcrumb-XXDZNKOF.js.map} +1 -1
  17. package/dist/{CartItem-YPIGZYJX.js → CartItem-FHHPWYRR.js} +5 -5
  18. package/dist/{CartItem-YPIGZYJX.js.map → CartItem-FHHPWYRR.js.map} +1 -1
  19. package/dist/{CartSummary-FHG4IR4S.js → CartSummary-EGJP4BUU.js} +5 -5
  20. package/dist/{CartSummary-FHG4IR4S.js.map → CartSummary-EGJP4BUU.js.map} +1 -1
  21. package/dist/{Copyright-TWAHRC7V.js → Copyright-7ES4656P.js} +3 -3
  22. package/dist/{Copyright-TWAHRC7V.js.map → Copyright-7ES4656P.js.map} +1 -1
  23. package/dist/{CustomerLayout-NI3HBOZB.js → CustomerLayout-N7GKGIXS.js} +5 -5
  24. package/dist/{CustomerLayout-NI3HBOZB.js.map → CustomerLayout-N7GKGIXS.js.map} +1 -1
  25. package/dist/{Footer-6XXLPWRH.js → Footer-KAGWXKEL.js} +5 -5
  26. package/dist/{Footer-6XXLPWRH.js.map → Footer-KAGWXKEL.js.map} +1 -1
  27. package/dist/{Header-56YZL6PB.js → Header-VA4OWWOM.js} +4 -4
  28. package/dist/{Header-56YZL6PB.js.map → Header-VA4OWWOM.js.map} +1 -1
  29. package/dist/{LoyaltyPage-3QLMFVWD.js → LoyaltyPage-4YZIEZSM.js} +5 -5
  30. package/dist/{LoyaltyPage-3QLMFVWD.js.map → LoyaltyPage-4YZIEZSM.js.map} +1 -1
  31. package/dist/{MainMenu-TDLQET2Y.js → MainMenu-CBABC47Y.js} +3 -3
  32. package/dist/{MainMenu-TDLQET2Y.js.map → MainMenu-CBABC47Y.js.map} +1 -1
  33. package/dist/{MasterLayout-4IYMFDYJ.js → MasterLayout-WNRFMFRD.js} +5 -5
  34. package/dist/{MasterLayout-4IYMFDYJ.js.map → MasterLayout-WNRFMFRD.js.map} +1 -1
  35. package/dist/{MobileMenu-GVXPV5HQ.js → MobileMenu-QTE7H54J.js} +5 -5
  36. package/dist/{MobileMenu-GVXPV5HQ.js.map → MobileMenu-QTE7H54J.js.map} +1 -1
  37. package/dist/{NotificationsPage-AOZRDULT.js → NotificationsPage-AOLSLCR5.js} +5 -5
  38. package/dist/{NotificationsPage-AOZRDULT.js.map → NotificationsPage-AOLSLCR5.js.map} +1 -1
  39. package/dist/{OrderSinglePage-M6GBDZPD.js → OrderSinglePage-LQWCJ47R.js} +5 -5
  40. package/dist/{OrderSinglePage-M6GBDZPD.js.map → OrderSinglePage-LQWCJ47R.js.map} +1 -1
  41. package/dist/{OrdersPage-DJMOQVJP.js → OrdersPage-XCTGUX35.js} +5 -5
  42. package/dist/{OrdersPage-DJMOQVJP.js.map → OrdersPage-XCTGUX35.js.map} +1 -1
  43. package/dist/{PageSingle-TQC47BEK.js → PageSingle-6EQW44FB.js} +3 -3
  44. package/dist/{PageSingle-TQC47BEK.js.map → PageSingle-6EQW44FB.js.map} +1 -1
  45. package/dist/{ProductDetails-4YZW7CKN.js → ProductDetails-4QSHAX64.js} +3 -3
  46. package/dist/{ProductDetails-4YZW7CKN.js.map → ProductDetails-4QSHAX64.js.map} +1 -1
  47. package/dist/{ProfilePage-KFR7PX6Z.js → ProfilePage-L3F4MIK6.js} +5 -5
  48. package/dist/{ProfilePage-KFR7PX6Z.js.map → ProfilePage-L3F4MIK6.js.map} +1 -1
  49. package/dist/{SeoCartWidget-N6KHTRZA.js → SeoCartWidget-2FHZJBPW.js} +5 -5
  50. package/dist/{SeoCartWidget-N6KHTRZA.js.map → SeoCartWidget-2FHZJBPW.js.map} +1 -1
  51. package/dist/{SettingsPage-7VCOR3YR.js → SettingsPage-WS2AUYFX.js} +5 -5
  52. package/dist/{SettingsPage-7VCOR3YR.js.map → SettingsPage-WS2AUYFX.js.map} +1 -1
  53. package/dist/{StoreClosedNotification-7XSPEVKM.js → StoreClosedNotification-35S2FGPZ.js} +6 -6
  54. package/dist/{StoreClosedNotification-7XSPEVKM.js.map → StoreClosedNotification-35S2FGPZ.js.map} +1 -1
  55. package/dist/{TestimonialsPage-YWWIGHDX.js → TestimonialsPage-3FPIE3P6.js} +3 -3
  56. package/dist/{TestimonialsPage-YWWIGHDX.js.map → TestimonialsPage-3FPIE3P6.js.map} +1 -1
  57. package/dist/{ThankYouPage-O6NMGVNQ.js → ThankYouPage-NH3L4RTM.js} +5 -5
  58. package/dist/{ThankYouPage-O6NMGVNQ.js.map → ThankYouPage-NH3L4RTM.js.map} +1 -1
  59. package/dist/{WalletPage-TGFDG6JQ.js → WalletPage-TGBU4BDJ.js} +5 -5
  60. package/dist/{WalletPage-TGFDG6JQ.js.map → WalletPage-TGBU4BDJ.js.map} +1 -1
  61. package/dist/{WishlistPage-XDXSQXME.js → WishlistPage-FLOWPCV3.js} +5 -5
  62. package/dist/{WishlistPage-XDXSQXME.js.map → WishlistPage-FLOWPCV3.js.map} +1 -1
  63. package/dist/{chunk-A4HWQ5PP.js → chunk-2I2AHEA5.js} +3 -3
  64. package/dist/{chunk-A4HWQ5PP.js.map → chunk-2I2AHEA5.js.map} +1 -1
  65. package/dist/{chunk-DHXE3JE6.js → chunk-6VBHU36Q.js} +4 -4
  66. package/dist/{chunk-DHXE3JE6.js.map → chunk-6VBHU36Q.js.map} +1 -1
  67. package/dist/{chunk-SSZR6JBK.js → chunk-7JV5XG3U.js} +4 -4
  68. package/dist/{chunk-SSZR6JBK.js.map → chunk-7JV5XG3U.js.map} +1 -1
  69. package/dist/{chunk-SM7VMQZY.js → chunk-BKYYWIPI.js} +3 -3
  70. package/dist/{chunk-SM7VMQZY.js.map → chunk-BKYYWIPI.js.map} +1 -1
  71. package/dist/{chunk-CJEBLY6D.js → chunk-EJYVXWJY.js} +6 -6
  72. package/dist/{chunk-CJEBLY6D.js.map → chunk-EJYVXWJY.js.map} +1 -1
  73. package/dist/{chunk-FH5YDZFQ.js → chunk-IIVKJ7LM.js} +5 -5
  74. package/dist/{chunk-FH5YDZFQ.js.map → chunk-IIVKJ7LM.js.map} +1 -1
  75. package/dist/{chunk-XECKVHG7.js → chunk-KLMYXYM5.js} +3 -3
  76. package/dist/{chunk-XECKVHG7.js.map → chunk-KLMYXYM5.js.map} +1 -1
  77. package/dist/{chunk-2FG3NNIK.js → chunk-TOMWZGRG.js} +7 -7
  78. package/dist/chunk-TOMWZGRG.js.map +1 -0
  79. package/dist/chunk-WSPSVX6J.js +14 -0
  80. package/dist/{chunk-P4M64WVZ.js.map → chunk-WSPSVX6J.js.map} +1 -1
  81. package/dist/{chunk-4UG4W72N.js → chunk-XEPYRJ3D.js} +4 -4
  82. package/dist/{chunk-4UG4W72N.js.map → chunk-XEPYRJ3D.js.map} +1 -1
  83. package/dist/{chunk-THMQ2Z3N.js → chunk-XGUMTPFW.js} +7 -7
  84. package/dist/{chunk-THMQ2Z3N.js.map → chunk-XGUMTPFW.js.map} +1 -1
  85. package/dist/components/cart/index.js +1 -1
  86. package/dist/components/common/index.js +1 -1
  87. package/dist/components/drawer/index.js +3 -3
  88. package/dist/components/home/index.js +5 -5
  89. package/dist/components/layout/index.js +5 -5
  90. package/dist/components/product/index.js +4 -4
  91. package/dist/components/store/index.js +5 -5
  92. package/dist/{document-class-4EILSNLT.js → document-class-UILUVJV4.js} +3 -3
  93. package/dist/{document-class-4EILSNLT.js.map → document-class-UILUVJV4.js.map} +1 -1
  94. package/dist/hooks/index.js +3 -3
  95. package/dist/hooks/useGtm.js +3 -3
  96. package/dist/hooks/useMoney.js +3 -3
  97. package/dist/hooks/useStore.js +3 -3
  98. package/dist/index.js +3 -3
  99. package/dist/{not-found-MGLRWOWH.js → not-found-HFWFWTI5.js} +5 -5
  100. package/dist/{not-found-MGLRWOWH.js.map → not-found-HFWFWTI5.js.map} +1 -1
  101. package/dist/providers/index.js +3 -3
  102. package/dist/routes/account/orders.js +1 -1
  103. package/dist/routes/account.js +6 -6
  104. package/dist/routes/blog.js +5 -5
  105. package/dist/routes/brands.js +1 -1
  106. package/dist/routes/cart.js +7 -7
  107. package/dist/routes/home.js +6 -6
  108. package/dist/routes/loyalty.js +1 -1
  109. package/dist/routes/page.js +1 -1
  110. package/dist/routes/product-listing.js +5 -5
  111. package/dist/routes/product.js +5 -5
  112. package/dist/routes/root/head.d.ts.map +1 -1
  113. package/dist/routes/testimonials.js +1 -1
  114. package/dist/routes/thank-you.js +1 -1
  115. package/dist/skeleton.js +6 -6
  116. package/dist/tanstack.js +2 -2
  117. package/dist/vite/index.d.ts +1 -0
  118. package/dist/vite/index.d.ts.map +1 -1
  119. package/dist/vite/index.js +46 -2
  120. package/dist/vite/index.js.map +1 -1
  121. package/dist/vite/plugins/twilight-manifest.d.ts +50 -0
  122. package/dist/vite/plugins/twilight-manifest.d.ts.map +1 -0
  123. package/dist/vite/plugins/twilight-schema.plugin.d.ts +4 -0
  124. package/dist/vite/plugins/twilight-schema.plugin.d.ts.map +1 -1
  125. package/package.json +1 -1
  126. package/dist/chunk-2FG3NNIK.js.map +0 -1
  127. package/dist/chunk-P4M64WVZ.js +0 -14
@@ -5,7 +5,7 @@ import { RouteId } from '../chunk-MTONGOJD.js';
5
5
  import '../chunk-KIPZQN3Y.js';
6
6
  import '../chunk-T72DAX7R.js';
7
7
  import '../chunk-DGUM43GV.js';
8
- import { readdir, readFile } from 'fs/promises';
8
+ import { readFile, readdir } from 'fs/promises';
9
9
  import { dirname, relative, resolve, join, basename, sep } from 'path';
10
10
  import { parseSync } from 'oxc-parser';
11
11
  import { existsSync, mkdirSync, writeFileSync, readFileSync, statSync } from 'fs';
@@ -234,6 +234,28 @@ function buildTwilightSchema(raw) {
234
234
  };
235
235
  }
236
236
 
237
+ // src/vite/plugins/twilight-manifest.ts
238
+ var REACT_THEME_TYPE = "react";
239
+ function getThemeType(raw) {
240
+ if (!raw || typeof raw !== "object") return void 0;
241
+ const { type } = raw;
242
+ return typeof type === "string" && type.trim() ? type : void 0;
243
+ }
244
+ function isReactThemeManifest(raw) {
245
+ return getThemeType(raw) === REACT_THEME_TYPE;
246
+ }
247
+ function describeThemeTypeIssue(raw, fileLabel = "twilight.json") {
248
+ const type = getThemeType(raw);
249
+ if (type === REACT_THEME_TYPE) return null;
250
+ if (!type) {
251
+ return `${fileLabel} has no "type": "${REACT_THEME_TYPE}" \u2014 the Salla CLI treats a manifest without it as a twig theme, so \`salla theme dev\` and publishing will take the wrong path. Add "type": "${REACT_THEME_TYPE}" as the first key.`;
252
+ }
253
+ if (type.trim() === REACT_THEME_TYPE) {
254
+ return `${fileLabel} declares "type": ${JSON.stringify(type)} \u2014 the Salla CLI compares this value exactly, so the surrounding whitespace still routes the theme to the twig path. Use "type": "${REACT_THEME_TYPE}".`;
255
+ }
256
+ return `${fileLabel} declares "type": "${type}", but this theme is built with the React theme engine. Change it to "${REACT_THEME_TYPE}" so the Salla CLI routes it correctly.`;
257
+ }
258
+
237
259
  // src/dev/schema-types.ts
238
260
  var EMPTY_DEV_SCHEMA = {
239
261
  settings: [],
@@ -246,15 +268,36 @@ var EMPTY_DEV_SCHEMA = {
246
268
  var VIRTUAL_ID2 = "virtual:twilight/schema";
247
269
  var RESOLVED_ID2 = "\0" + VIRTUAL_ID2;
248
270
  var EMPTY_MODULE = `export default ${JSON.stringify(EMPTY_DEV_SCHEMA)};`;
271
+ var LOG_PREFIX = "[twilight-react:schema]";
249
272
  function twilightSchemaPlugin(twilightJsonPath = "twilight.json") {
250
273
  let filePath;
251
274
  let isDevServer = false;
275
+ async function checkManifest() {
276
+ if (!isDevServer || !filePath) return;
277
+ let raw;
278
+ try {
279
+ raw = await readFile(filePath, "utf-8");
280
+ } catch {
281
+ return;
282
+ }
283
+ try {
284
+ const issue = describeThemeTypeIssue(JSON.parse(raw), twilightJsonPath);
285
+ if (issue) console.warn(`${LOG_PREFIX} ${issue}`);
286
+ } catch {
287
+ console.warn(
288
+ `${LOG_PREFIX} ${twilightJsonPath} is not valid JSON \u2014 theme settings and the dev widget will be empty.`
289
+ );
290
+ }
291
+ }
252
292
  return {
253
293
  name: "twilight:schema",
254
294
  configResolved(config) {
255
295
  isDevServer = config.command === "serve";
256
296
  filePath = resolve(config.root, twilightJsonPath);
257
297
  },
298
+ buildStart() {
299
+ return checkManifest();
300
+ },
258
301
  resolveId(id) {
259
302
  if (id === VIRTUAL_ID2) return RESOLVED_ID2;
260
303
  },
@@ -275,6 +318,7 @@ function twilightSchemaPlugin(twilightJsonPath = "twilight.json") {
275
318
  server.watcher.add(target);
276
319
  const invalidate = (file) => {
277
320
  if (file !== target) return;
321
+ void checkManifest();
278
322
  const mod = server.moduleGraph.getModuleById(RESOLVED_ID2);
279
323
  if (mod) {
280
324
  server.moduleGraph.invalidateModule(mod);
@@ -2366,6 +2410,6 @@ async function twilightReact(options = {}) {
2366
2410
  }
2367
2411
  var twilight_react_default = twilightReact;
2368
2412
 
2369
- export { bestPracticesPlugin, twilight_react_default as default, getFrameworkAdapter, nextjsAdapter as nextjs, tanstackAdapter as tanstack, twilightReact };
2413
+ export { REACT_THEME_TYPE, bestPracticesPlugin, twilight_react_default as default, describeThemeTypeIssue, getFrameworkAdapter, getThemeType, isReactThemeManifest, nextjsAdapter as nextjs, tanstackAdapter as tanstack, twilightReact };
2370
2414
  //# sourceMappingURL=index.js.map
2371
2415
  //# sourceMappingURL=index.js.map