astro-tractstack 2.2.10 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +1 -1
  2. package/bin/create-tractstack.js +2 -2
  3. package/dist/index.js +177 -18
  4. package/package.json +4 -2
  5. package/templates/custom/minimal/CodeHook.astro +22 -5
  6. package/templates/custom/shopify/Cart.tsx +372 -0
  7. package/templates/custom/shopify/CartIcon.tsx +47 -0
  8. package/templates/custom/shopify/CartModal.tsx +63 -0
  9. package/templates/custom/shopify/CheckoutModal.tsx +576 -0
  10. package/templates/custom/shopify/NativeBookingCalendar.tsx +375 -0
  11. package/templates/custom/shopify/ShopifyCartManager.tsx +200 -0
  12. package/templates/custom/shopify/ShopifyCheckout.tsx +167 -0
  13. package/templates/custom/shopify/ShopifyProductGrid.tsx +247 -0
  14. package/templates/custom/shopify/ShopifyServiceList.tsx +135 -0
  15. package/templates/custom/shopify/cart.astro +23 -0
  16. package/templates/custom/with-examples/CodeHook.astro +17 -1
  17. package/templates/custom/with-examples/ProductGrid.astro +1 -1
  18. package/templates/src/client/app.js +4 -2
  19. package/templates/src/components/Footer.astro +4 -4
  20. package/templates/src/components/Header.astro +44 -12
  21. package/templates/src/components/edit/pane/AddPanePanel_new.tsx +3 -3
  22. package/templates/src/components/edit/pane/AiRestylePaneModal.tsx +2 -2
  23. package/templates/src/components/edit/pane/steps/AiCreativeDesignStep.tsx +2 -2
  24. package/templates/src/components/edit/pane/steps/AiLibraryCopyStep.tsx +3 -3
  25. package/templates/src/components/edit/pane/steps/AiRefineDesignStep.tsx +2 -2
  26. package/templates/src/components/edit/pane/steps/AiStandardDesignStep.tsx +7 -7
  27. package/templates/src/components/form/advanced/APIConfigSection.tsx +407 -38
  28. package/templates/src/components/form/shopify/SchedulingSection.tsx +354 -0
  29. package/templates/src/components/storykeep/Dashboard.tsx +18 -4
  30. package/templates/src/components/storykeep/Dashboard_Advanced.tsx +1 -0
  31. package/templates/src/components/storykeep/Dashboard_Content.tsx +5 -96
  32. package/templates/src/components/storykeep/Dashboard_Shopify.tsx +668 -0
  33. package/templates/src/components/storykeep/StoryKeepBackdrop.astro +43 -23
  34. package/templates/src/components/storykeep/controls/content/BeliefTable.tsx +14 -5
  35. package/templates/src/components/storykeep/controls/content/ContentBrowser.tsx +0 -14
  36. package/templates/src/components/storykeep/controls/content/KnownResourceForm.tsx +36 -13
  37. package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +5 -2
  38. package/templates/src/components/storykeep/controls/content/ManageContent.tsx +4 -11
  39. package/templates/src/components/storykeep/controls/content/MenuTable.tsx +14 -5
  40. package/templates/src/components/storykeep/controls/content/ProductTable.tsx +333 -0
  41. package/templates/src/components/storykeep/controls/content/ResourceBulkIngest.tsx +9 -5
  42. package/templates/src/components/storykeep/controls/content/ResourceForm.tsx +108 -8
  43. package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +13 -4
  44. package/templates/src/components/storykeep/controls/content/StoryFragmentTable.tsx +14 -5
  45. package/templates/src/components/storykeep/shopify/ShopifyDashboard.tsx +111 -0
  46. package/templates/src/components/storykeep/shopify/ShopifyDashboard_Bookings.tsx +393 -0
  47. package/templates/src/components/storykeep/shopify/ShopifyDashboard_Products.tsx +46 -0
  48. package/templates/src/components/storykeep/shopify/ShopifyDashboard_Schedule.tsx +78 -0
  49. package/templates/src/components/storykeep/shopify/ShopifyDashboard_Search.tsx +55 -0
  50. package/templates/src/components/storykeep/shopify/ShopifyDashboard_Services.tsx +47 -0
  51. package/templates/src/lib/resources.ts +11 -21
  52. package/templates/src/pages/api/auth/lookup-lead.ts +72 -0
  53. package/templates/src/pages/api/booking/availability.ts +72 -0
  54. package/templates/src/pages/api/booking/cancel.ts +73 -0
  55. package/templates/src/pages/api/booking/confirm.ts +82 -0
  56. package/templates/src/pages/api/booking/hold.ts +75 -0
  57. package/templates/src/pages/api/booking/list.ts +66 -0
  58. package/templates/src/pages/api/booking/metrics.ts +60 -0
  59. package/templates/src/pages/api/booking/release.ts +76 -0
  60. package/templates/src/pages/api/sandbox.ts +2 -2
  61. package/templates/src/pages/api/shopify/createCart.ts +69 -0
  62. package/templates/src/pages/api/shopify/getProducts.ts +64 -0
  63. package/templates/src/pages/storykeep/login.astro +26 -24
  64. package/templates/src/pages/storykeep/logout.astro +1 -10
  65. package/templates/src/pages/storykeep/manage.astro +69 -0
  66. package/templates/src/pages/storykeep/{content.astro → pages.astro} +4 -8
  67. package/templates/src/pages/storykeep/shopify.astro +101 -0
  68. package/templates/src/stores/navigation.ts +3 -42
  69. package/templates/src/stores/nodes.ts +3 -1
  70. package/templates/src/stores/resources.ts +7 -10
  71. package/templates/src/stores/shopify.ts +266 -0
  72. package/templates/src/types/tractstack.ts +75 -0
  73. package/templates/src/utils/api/advancedConfig.ts +7 -1
  74. package/templates/src/utils/api/advancedHelpers.ts +87 -7
  75. package/templates/src/utils/api/bookingHelpers.ts +125 -0
  76. package/templates/src/utils/api/brandHelpers.ts +14 -0
  77. package/templates/src/utils/api/resourceConfig.ts +13 -5
  78. package/templates/src/utils/auth.ts +29 -9
  79. package/templates/src/utils/compositor/aiGeneration.ts +3 -3
  80. package/templates/src/utils/compositor/aiPaneParser.ts +2 -2
  81. package/templates/src/utils/customHelpers.ts +49 -0
  82. package/templates/src/utils/helpers.ts +59 -0
  83. package/templates/src/utils/profileStorage.ts +5 -0
  84. package/templates/src/utils/tenantResolver.ts +2 -1
  85. package/utils/inject-files.ts +161 -2
package/README.md CHANGED
@@ -75,7 +75,7 @@ For more recipes and community guides, visit [FreeWebPress.org](https://FreeWebP
75
75
 
76
76
  Expanding full-text search to include embedded video transcripts (via BunnyCDN).
77
77
 
78
- - **AI Visual Editor:** Powered by AssemblyAI askLemur to highlight and extract transcript sections.
78
+ - **AI Visual Editor:** Powered by AssemblyAI aai to highlight and extract transcript sections.
79
79
  - **Smart Content:** Automated chaptering and descriptions for long-form video.
80
80
  - **Video-to-Blog Pipeline:** Transform video highlights into rich, searchable blog pages using the design library.
81
81
 
@@ -348,7 +348,7 @@ PUBLIC_ENABLE_BUNNY="${finalResponses.enableBunny ? 'true' : 'false'}"
348
348
 
349
349
  // Install UI components
350
350
  execSync(
351
- `${addCommand} @ark-ui/react@^5.30.0 @heroicons/react@^2.1.1 @internationalized/date@^3.10.1`,
351
+ `${addCommand} @ark-ui/react@^5.30.0 @heroicons/react@^2.1.1 @internationalized/date@3.10.0`,
352
352
  {
353
353
  stdio: 'inherit',
354
354
  }
@@ -382,7 +382,7 @@ PUBLIC_ENABLE_BUNNY="${finalResponses.enableBunny ? 'true' : 'false'}"
382
382
  console.log('Please run manually:');
383
383
  console.log(
384
384
  kleur.cyan(
385
- `${addCommand} react@^19.0.0 react-dom@^19.0.0 @astrojs/react@^4.4.2 @astrojs/node@^9.4.3 @nanostores/react@^1.0.0 nanostores@^1.0.1 @nanostores/persistent ulid@^3.0.1 @ark-ui/react@^5.30.0 @heroicons/react@^2.1.1 @internationalized/date@^3.10.1 d3@^7.9.0 d3-sankey@^0.12.3 recharts@^3.1.2 player.js@^0.1.0 tinycolor2@1.6.0 html-to-image@^1.11.13 path-to-regexp@^8.0.0 postcss postcss-selector-parser`
385
+ `${addCommand} react@^19.0.0 react-dom@^19.0.0 @astrojs/react@^4.4.2 @astrojs/node@^9.4.3 @nanostores/react@^1.0.0 nanostores@^1.0.1 @nanostores/persistent ulid@^3.0.1 @ark-ui/react@^5.30.0 @heroicons/react@^2.1.1 @internationalized/date@3.10.0 d3@^7.9.0 d3-sankey@^0.12.3 recharts@^3.1.2 player.js@^0.1.0 tinycolor2@1.6.0 html-to-image@^1.11.13 path-to-regexp@^8.0.0 postcss postcss-selector-parser`
386
386
  )
387
387
  );
388
388
  console.log(
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ function b(t) {
10
10
  }
11
11
  function g(t, e) {
12
12
  e.info("TractStack configuration applied"), t.enableMultiTenant && e.info("Multi-tenant mode enabled"), t.includeExamples && e.info("Example components will be included");
13
- const c = process.env.PUBLIC_GO_BACKEND, r = process.env.PUBLIC_TENANTID;
13
+ const c = process.env.PUBLIC_GO_BACKEND, o = process.env.PUBLIC_TENANTID;
14
14
  if (!c)
15
15
  e.warn("PUBLIC_GO_BACKEND not set - this will be required at runtime");
16
16
  else
@@ -19,11 +19,11 @@ function g(t, e) {
19
19
  } catch {
20
20
  e.error(`PUBLIC_GO_BACKEND is not a valid URL: ${c}`);
21
21
  }
22
- return r ? /^[a-zA-Z0-9_-]+$/.test(r) ? e.info(`Tenant ID validated: ${r}`) : e.error(`PUBLIC_TENANTID contains invalid characters: ${r}`) : e.warn("PUBLIC_TENANTID not set - this will be required at runtime"), t;
22
+ return o ? /^[a-zA-Z0-9_-]+$/.test(o) ? e.info(`Tenant ID validated: ${o}`) : e.error(`PUBLIC_TENANTID contains invalid characters: ${o}`) : e.warn("PUBLIC_TENANTID not set - this will be required at runtime"), t;
23
23
  }
24
- async function w(t, e, c) {
24
+ async function y(t, e, c) {
25
25
  e.info("TractStack: Injecting template files");
26
- const r = [
26
+ const o = [
27
27
  // Core Configuration
28
28
  {
29
29
  src: t("../templates/env.example"),
@@ -586,6 +586,10 @@ async function w(t, e, c) {
586
586
  src: t("../templates/src/stores/resources.ts"),
587
587
  dest: "src/stores/resources.ts"
588
588
  },
589
+ {
590
+ src: t("../templates/src/stores/shopify.ts"),
591
+ dest: "src/stores/shopify.ts"
592
+ },
589
593
  // Compositor stores
590
594
  {
591
595
  src: t("../templates/src/stores/nodes.ts"),
@@ -811,6 +815,10 @@ async function w(t, e, c) {
811
815
  src: t("../templates/src/utils/api/resourceHelpers.ts"),
812
816
  dest: "src/utils/api/resourceHelpers.ts"
813
817
  },
818
+ {
819
+ src: t("../templates/src/utils/api/bookingHelpers.ts"),
820
+ dest: "src/utils/api/bookingHelpers.ts"
821
+ },
814
822
  {
815
823
  src: t("../templates/src/utils/api/menuHelpers.ts"),
816
824
  dest: "src/utils/api/menuHelpers.ts"
@@ -856,8 +864,12 @@ async function w(t, e, c) {
856
864
  dest: "src/pages/storykeep.astro"
857
865
  },
858
866
  {
859
- src: t("../templates/src/pages/storykeep/content.astro"),
860
- dest: "src/pages/storykeep/content.astro"
867
+ src: t("../templates/src/pages/storykeep/pages.astro"),
868
+ dest: "src/pages/storykeep/pages.astro"
869
+ },
870
+ {
871
+ src: t("../templates/src/pages/storykeep/manage.astro"),
872
+ dest: "src/pages/storykeep/manage.astro"
861
873
  },
862
874
  {
863
875
  src: t("../templates/src/pages/storykeep/branding.astro"),
@@ -867,10 +879,18 @@ async function w(t, e, c) {
867
879
  src: t("../templates/src/pages/storykeep/advanced.astro"),
868
880
  dest: "src/pages/storykeep/advanced.astro"
869
881
  },
882
+ {
883
+ src: t("../templates/src/pages/storykeep/shopify.astro"),
884
+ dest: "src/pages/storykeep/shopify.astro"
885
+ },
870
886
  {
871
887
  src: t("../templates/src/pages/maint.astro"),
872
888
  dest: "src/pages/maint.astro"
873
889
  },
890
+ {
891
+ src: t("../templates/custom/shopify/cart.astro"),
892
+ dest: "src/pages/cart.astro"
893
+ },
874
894
  {
875
895
  src: t("../templates/src/pages/404.astro"),
876
896
  dest: "src/pages/404.astro"
@@ -887,6 +907,14 @@ async function w(t, e, c) {
887
907
  src: t("../templates/src/pages/sitemap.xml.ts"),
888
908
  dest: "src/pages/sitemap.xml.ts"
889
909
  },
910
+ {
911
+ src: t("../templates/src/pages/api/shopify/getProducts.ts"),
912
+ dest: "src/pages/api/shopify/getProducts.ts"
913
+ },
914
+ {
915
+ src: t("../templates/src/pages/api/shopify/createCart.ts"),
916
+ dest: "src/pages/api/shopify/createCart.ts"
917
+ },
890
918
  {
891
919
  src: t("../templates/src/pages/api/tailwind.ts"),
892
920
  dest: "src/pages/api/tailwind.ts"
@@ -913,6 +941,38 @@ async function w(t, e, c) {
913
941
  dest: "src/pages/storykeep/profile.astro"
914
942
  },
915
943
  // API Routes
944
+ {
945
+ src: t("../templates/src/pages/api/booking/list.ts"),
946
+ dest: "src/pages/api/booking/list.ts"
947
+ },
948
+ {
949
+ src: t("../templates/src/pages/api/booking/metrics.ts"),
950
+ dest: "src/pages/api/booking/metrics.ts"
951
+ },
952
+ {
953
+ src: t("../templates/src/pages/api/booking/cancel.ts"),
954
+ dest: "src/pages/api/booking/cancel.ts"
955
+ },
956
+ {
957
+ src: t("../templates/src/pages/api/booking/confirm.ts"),
958
+ dest: "src/pages/api/booking/confirm.ts"
959
+ },
960
+ {
961
+ src: t("../templates/src/pages/api/booking/release.ts"),
962
+ dest: "src/pages/api/booking/release.ts"
963
+ },
964
+ {
965
+ src: t("../templates/src/pages/api/booking/availability.ts"),
966
+ dest: "src/pages/api/booking/availability.ts"
967
+ },
968
+ {
969
+ src: t("../templates/src/pages/api/booking/hold.ts"),
970
+ dest: "src/pages/api/booking/hold.ts"
971
+ },
972
+ {
973
+ src: t("../templates/src/pages/api/auth/lookup-lead.ts"),
974
+ dest: "src/pages/api/auth/lookup-lead.ts"
975
+ },
916
976
  {
917
977
  src: t("../templates/src/pages/api/auth/profile.ts"),
918
978
  dest: "src/pages/api/auth/profile.ts"
@@ -1094,6 +1154,12 @@ async function w(t, e, c) {
1094
1154
  src: t("../templates/src/components/form/brand/SEOSection.tsx"),
1095
1155
  dest: "src/components/form/brand/SEOSection.tsx"
1096
1156
  },
1157
+ {
1158
+ src: t(
1159
+ "../templates/src/components/form/shopify/SchedulingSection.tsx"
1160
+ ),
1161
+ dest: "src/components/form/shopify/SchedulingSection.tsx"
1162
+ },
1097
1163
  // Advanced Configuration Components
1098
1164
  {
1099
1165
  src: t(
@@ -1140,6 +1206,48 @@ async function w(t, e, c) {
1140
1206
  ),
1141
1207
  dest: "src/components/storykeep/Dashboard_Advanced.tsx"
1142
1208
  },
1209
+ {
1210
+ src: t(
1211
+ "../templates/src/components/storykeep/Dashboard_Shopify.tsx"
1212
+ ),
1213
+ dest: "src/components/storykeep/Dashboard_Shopify.tsx"
1214
+ },
1215
+ {
1216
+ src: t(
1217
+ "../templates/src/components/storykeep/shopify/ShopifyDashboard.tsx"
1218
+ ),
1219
+ dest: "src/components/storykeep/shopify/ShopifyDashboard.tsx"
1220
+ },
1221
+ {
1222
+ src: t(
1223
+ "../templates/src/components/storykeep/shopify/ShopifyDashboard_Bookings.tsx"
1224
+ ),
1225
+ dest: "src/components/storykeep/shopify/ShopifyDashboard_Bookings.tsx"
1226
+ },
1227
+ {
1228
+ src: t(
1229
+ "../templates/src/components/storykeep/shopify/ShopifyDashboard_Schedule.tsx"
1230
+ ),
1231
+ dest: "src/components/storykeep/shopify/ShopifyDashboard_Schedule.tsx"
1232
+ },
1233
+ {
1234
+ src: t(
1235
+ "../templates/src/components/storykeep/shopify/ShopifyDashboard_Products.tsx"
1236
+ ),
1237
+ dest: "src/components/storykeep/shopify/ShopifyDashboard_Products.tsx"
1238
+ },
1239
+ {
1240
+ src: t(
1241
+ "../templates/src/components/storykeep/shopify/ShopifyDashboard_Services.tsx"
1242
+ ),
1243
+ dest: "src/components/storykeep/shopify/ShopifyDashboard_Services.tsx"
1244
+ },
1245
+ {
1246
+ src: t(
1247
+ "../templates/src/components/storykeep/shopify/ShopifyDashboard_Search.tsx"
1248
+ ),
1249
+ dest: "src/components/storykeep/shopify/ShopifyDashboard_Search.tsx"
1250
+ },
1143
1251
  {
1144
1252
  src: t(
1145
1253
  "../templates/src/components/storykeep/Dashboard_Analytics.tsx"
@@ -1195,6 +1303,12 @@ async function w(t, e, c) {
1195
1303
  ),
1196
1304
  dest: "src/components/storykeep/controls/content/PaneTable.tsx"
1197
1305
  },
1306
+ {
1307
+ src: t(
1308
+ "../templates/src/components/storykeep/controls/content/ProductTable.tsx"
1309
+ ),
1310
+ dest: "src/components/storykeep/controls/content/ProductTable.tsx"
1311
+ },
1198
1312
  {
1199
1313
  src: t(
1200
1314
  "../templates/src/components/storykeep/controls/content/ContentBrowser.tsx"
@@ -2159,6 +2273,51 @@ async function w(t, e, c) {
2159
2273
  dest: "src/utils/customHelpers.ts",
2160
2274
  protected: !0
2161
2275
  },
2276
+ {
2277
+ src: t("../templates/custom/shopify/ShopifyProductGrid.tsx"),
2278
+ dest: "src/custom/shopify/ShopifyProductGrid.tsx",
2279
+ protected: !0
2280
+ },
2281
+ {
2282
+ src: t("../templates/custom/shopify/ShopifyServiceList.tsx"),
2283
+ dest: "src/custom/shopify/ShopifyServiceList.tsx",
2284
+ protected: !0
2285
+ },
2286
+ {
2287
+ src: t("../templates/custom/shopify/CartIcon.tsx"),
2288
+ dest: "src/custom/shopify/CartIcon.tsx",
2289
+ protected: !0
2290
+ },
2291
+ {
2292
+ src: t("../templates/custom/shopify/ShopifyCartManager.tsx"),
2293
+ dest: "src/custom/shopify/ShopifyCartManager.tsx",
2294
+ protected: !0
2295
+ },
2296
+ {
2297
+ src: t("../templates/custom/shopify/CartModal.tsx"),
2298
+ dest: "src/custom/shopify/CartModal.tsx",
2299
+ protected: !0
2300
+ },
2301
+ {
2302
+ src: t("../templates/custom/shopify/CheckoutModal.tsx"),
2303
+ dest: "src/custom/shopify/CheckoutModal.tsx",
2304
+ protected: !0
2305
+ },
2306
+ {
2307
+ src: t("../templates/custom/shopify/Cart.tsx"),
2308
+ dest: "src/custom/shopify/Cart.tsx",
2309
+ protected: !0
2310
+ },
2311
+ {
2312
+ src: t("../templates/custom/shopify/ShopifyCheckout.tsx"),
2313
+ dest: "src/custom/shopify/ShopifyCheckout.tsx",
2314
+ protected: !0
2315
+ },
2316
+ {
2317
+ src: t("../templates/custom/shopify/NativeBookingCalendar.tsx"),
2318
+ dest: "src/custom/shopify/NativeBookingCalendar.tsx",
2319
+ protected: !0
2320
+ },
2162
2321
  // Example Components (Conditional)
2163
2322
  ...c?.includeExamples ? [
2164
2323
  {
@@ -2204,25 +2363,25 @@ async function w(t, e, c) {
2204
2363
  }
2205
2364
  ] : []
2206
2365
  ];
2207
- for (const s of r)
2366
+ for (const s of o)
2208
2367
  try {
2209
2368
  const p = i(s.dest);
2210
2369
  n(p) || x(p, { recursive: !0 });
2211
- const o = !s.protected && (s.dest === "tailwind.config.cjs" || s.dest.startsWith("src/components/codehooks/") || s.dest.startsWith("src/components/widgets/") || s.dest.startsWith("src/") || s.dest.startsWith("public/client/") || s.dest === ".gitignore");
2212
- if (!n(s.dest) || o)
2370
+ const r = !s.protected && (s.dest === "tailwind.config.cjs" || s.dest.startsWith("src/components/codehooks/") || s.dest.startsWith("src/components/widgets/") || s.dest.startsWith("src/") || s.dest.startsWith("public/client/") || s.dest === ".gitignore");
2371
+ if (!n(s.dest) || r)
2213
2372
  if (n(s.src))
2214
2373
  k(s.src, s.dest), e.info(`Updated ${s.dest}`);
2215
2374
  else {
2216
- const m = y(s.dest);
2375
+ const m = w(s.dest);
2217
2376
  u(s.dest, m), e.info(`Created placeholder ${s.dest}`);
2218
2377
  }
2219
2378
  else s.protected ? e.info(`Protected: ${s.dest} (skipped overwrite)`) : e.info(`Skipped existing ${s.dest}`);
2220
2379
  } catch (p) {
2221
- const o = p instanceof Error ? p.message : String(p);
2222
- e.error(`Failed to create ${s.dest}: ${o}`);
2380
+ const r = p instanceof Error ? p.message : String(p);
2381
+ e.error(`Failed to create ${s.dest}: ${r}`);
2223
2382
  }
2224
2383
  }
2225
- function y(t) {
2384
+ function w(t) {
2226
2385
  return t.endsWith(".astro") ? `---
2227
2386
  // TractStack placeholder component
2228
2387
  ---
@@ -2233,17 +2392,17 @@ export default function Placeholder() {
2233
2392
  }` : t.endsWith(".ts") ? `// TractStack placeholder utility
2234
2393
  export const placeholder = "${t}";` : `# TractStack placeholder: ${t}`;
2235
2394
  }
2236
- function C(t = {}) {
2395
+ function P(t = {}) {
2237
2396
  const { resolve: e } = b(import.meta.url);
2238
2397
  return {
2239
2398
  name: "astro-tractstack",
2240
2399
  hooks: {
2241
- "astro:config:setup": async ({ config: c, updateConfig: r, logger: s }) => {
2400
+ "astro:config:setup": async ({ config: c, updateConfig: o, logger: s }) => {
2242
2401
  g(t, s);
2243
2402
  const p = t.enableMultiTenant || !1;
2244
2403
  if (s.info(
2245
2404
  `DEBUG: enableMultiTenant = ${p}, process.env.PUBLIC_ENABLE_MULTI_TENANT = ${process.env.PUBLIC_ENABLE_MULTI_TENANT}`
2246
- ), s.info("TractStack: Starting file injection..."), await w(e, s, {
2405
+ ), s.info("TractStack: Starting file injection..."), await y(e, s, {
2247
2406
  includeExamples: t.includeExamples,
2248
2407
  enableMultiTenant: p
2249
2408
  }), s.info("TractStack: File injection complete."), c.output !== "server")
@@ -2258,7 +2417,7 @@ function C(t = {}) {
2258
2417
  ), new Error(
2259
2418
  "TractStack requires an SSR adapter. Please add @astrojs/node adapter to your astro.config.mjs"
2260
2419
  );
2261
- r({
2420
+ o({
2262
2421
  vite: {
2263
2422
  define: {
2264
2423
  __TRACTSTACK_VERSION__: JSON.stringify("2.0.0-alpha.1"),
@@ -2315,5 +2474,5 @@ function C(t = {}) {
2315
2474
  };
2316
2475
  }
2317
2476
  export {
2318
- C as default
2477
+ P as default
2319
2478
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astro-tractstack",
3
- "version": "2.2.10",
3
+ "version": "2.3.1",
4
4
  "description": "Astro integration for TractStack - the free web press by At Risk Media",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,6 +24,7 @@
24
24
  "build": "vite build && tsc -p tsconfig.dts.json",
25
25
  "format": "prettier --write .",
26
26
  "dev": "vite build --watch",
27
+ "lint": "prettier --check .",
27
28
  "prepublishOnly": "pnpm format && pnpm tsc && pnpm build"
28
29
  },
29
30
  "keywords": [
@@ -50,6 +51,7 @@
50
51
  "react-dom": "^19.0.0"
51
52
  },
52
53
  "dependencies": {
54
+ "@calcom/embed-react": "^1.5.3",
53
55
  "kleur": "^4.1.5",
54
56
  "prompts": "^2.4.2"
55
57
  },
@@ -59,7 +61,7 @@
59
61
  "@heroicons/react": "^2.1.1",
60
62
  "@internationalized/date": "^3.10.1",
61
63
  "@mhsdesign/jit-browser-tailwindcss": "^0.4.2",
62
- "@nanostores/persistent": "^1.2.0",
64
+ "@nanostores/persistent": "^1.3.3",
63
65
  "@nanostores/react": "^1.0.0",
64
66
  "@types/d3": "^7.4.3",
65
67
  "@types/d3-sankey": "^0.12.5",
@@ -4,9 +4,12 @@ import ListContent from '@/components/codehooks/ListContent.astro';
4
4
  import SearchWidget from '@/components/codehooks/SearchWidget.tsx';
5
5
  import BunnyVideoWrapper from '@/components/codehooks/BunnyVideoWrapper.astro';
6
6
  import EpinetWrapper from '@/components/codehooks/EpinetWrapper';
7
+ import ShopifyProductGrid from '@/custom/shopify/ShopifyProductGrid';
8
+ import ShopifyServiceList from '@/custom/shopify/ShopifyServiceList';
7
9
  import type { FullContentMapItem } from '@/types/tractstack';
8
10
  import type { ResourceNode } from '@/types/compositorTypes';
9
- // import CustomHero from './CustomHero.astro'; // Uncomment to add custom components
11
+ // import CustomHero from './CustomHero.astro';
12
+ // Uncomment to add custom components
10
13
 
11
14
  export interface Props {
12
15
  target: string;
@@ -20,7 +23,7 @@ export interface Props {
20
23
  };
21
24
  }
22
25
 
23
- const { target, options, fullContentMap /*, resourcesPayload */ } = Astro.props;
26
+ const { target, options, fullContentMap, resourcesPayload = {} } = Astro.props;
24
27
 
25
28
  export const components = {
26
29
  'featured-article': true,
@@ -29,6 +32,8 @@ export const components = {
29
32
  'search-widget': true,
30
33
  'bunny-video': import.meta.env.PUBLIC_ENABLE_BUNNY === 'true',
31
34
  epinet: true,
35
+ 'shopify-product-grid': true,
36
+ 'shopify-service-list': true,
32
37
  // "custom-hero": true, // Uncomment when you create CustomHero.astro
33
38
  };
34
39
  ---
@@ -43,11 +48,23 @@ export const components = {
43
48
  ) : target === 'bunny-video' && import.meta.env.PUBLIC_ENABLE_BUNNY ? (
44
49
  <BunnyVideoWrapper options={options} />
45
50
  ) : target === 'epinet' ? (
46
- <EpinetWrapper fullContentMap={fullContentMap} client:only="react" /> /*
47
- : target === "custom-hero" ? (
51
+ <EpinetWrapper fullContentMap={fullContentMap} client:only="react" />
52
+ ) : target === 'shopify-product-grid' ? (
53
+ <ShopifyProductGrid
54
+ options={options}
55
+ resources={resourcesPayload}
56
+ client:only="react"
57
+ />
58
+ ) : target === 'shopify-service-list' ? (
59
+ <ShopifyServiceList
60
+ options={options}
61
+ resources={resourcesPayload}
62
+ client:only="react"
63
+ />
64
+ ) : (
65
+ /* : target === "custom-hero" ? (
48
66
  <CustomHero />
49
67
  ) */
50
- ) : (
51
68
  <div class="rounded-lg bg-gray-50 p-8 text-center">
52
69
  <p class="text-gray-600">CodeHook target "{target}" not found</p>
53
70
  </div>