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.
- package/README.md +1 -1
- package/bin/create-tractstack.js +2 -2
- package/dist/index.js +177 -18
- package/package.json +4 -2
- package/templates/custom/minimal/CodeHook.astro +22 -5
- package/templates/custom/shopify/Cart.tsx +372 -0
- package/templates/custom/shopify/CartIcon.tsx +47 -0
- package/templates/custom/shopify/CartModal.tsx +63 -0
- package/templates/custom/shopify/CheckoutModal.tsx +576 -0
- package/templates/custom/shopify/NativeBookingCalendar.tsx +375 -0
- package/templates/custom/shopify/ShopifyCartManager.tsx +200 -0
- package/templates/custom/shopify/ShopifyCheckout.tsx +167 -0
- package/templates/custom/shopify/ShopifyProductGrid.tsx +247 -0
- package/templates/custom/shopify/ShopifyServiceList.tsx +135 -0
- package/templates/custom/shopify/cart.astro +23 -0
- package/templates/custom/with-examples/CodeHook.astro +17 -1
- package/templates/custom/with-examples/ProductGrid.astro +1 -1
- package/templates/src/client/app.js +4 -2
- package/templates/src/components/Footer.astro +4 -4
- package/templates/src/components/Header.astro +44 -12
- package/templates/src/components/edit/pane/AddPanePanel_new.tsx +3 -3
- package/templates/src/components/edit/pane/AiRestylePaneModal.tsx +2 -2
- package/templates/src/components/edit/pane/steps/AiCreativeDesignStep.tsx +2 -2
- package/templates/src/components/edit/pane/steps/AiLibraryCopyStep.tsx +3 -3
- package/templates/src/components/edit/pane/steps/AiRefineDesignStep.tsx +2 -2
- package/templates/src/components/edit/pane/steps/AiStandardDesignStep.tsx +7 -7
- package/templates/src/components/form/advanced/APIConfigSection.tsx +407 -38
- package/templates/src/components/form/shopify/SchedulingSection.tsx +354 -0
- package/templates/src/components/storykeep/Dashboard.tsx +18 -4
- package/templates/src/components/storykeep/Dashboard_Advanced.tsx +1 -0
- package/templates/src/components/storykeep/Dashboard_Content.tsx +5 -96
- package/templates/src/components/storykeep/Dashboard_Shopify.tsx +668 -0
- package/templates/src/components/storykeep/StoryKeepBackdrop.astro +43 -23
- package/templates/src/components/storykeep/controls/content/BeliefTable.tsx +14 -5
- package/templates/src/components/storykeep/controls/content/ContentBrowser.tsx +0 -14
- package/templates/src/components/storykeep/controls/content/KnownResourceForm.tsx +36 -13
- package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +5 -2
- package/templates/src/components/storykeep/controls/content/ManageContent.tsx +4 -11
- package/templates/src/components/storykeep/controls/content/MenuTable.tsx +14 -5
- package/templates/src/components/storykeep/controls/content/ProductTable.tsx +333 -0
- package/templates/src/components/storykeep/controls/content/ResourceBulkIngest.tsx +9 -5
- package/templates/src/components/storykeep/controls/content/ResourceForm.tsx +108 -8
- package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +13 -4
- package/templates/src/components/storykeep/controls/content/StoryFragmentTable.tsx +14 -5
- package/templates/src/components/storykeep/shopify/ShopifyDashboard.tsx +111 -0
- package/templates/src/components/storykeep/shopify/ShopifyDashboard_Bookings.tsx +393 -0
- package/templates/src/components/storykeep/shopify/ShopifyDashboard_Products.tsx +46 -0
- package/templates/src/components/storykeep/shopify/ShopifyDashboard_Schedule.tsx +78 -0
- package/templates/src/components/storykeep/shopify/ShopifyDashboard_Search.tsx +55 -0
- package/templates/src/components/storykeep/shopify/ShopifyDashboard_Services.tsx +47 -0
- package/templates/src/lib/resources.ts +11 -21
- package/templates/src/pages/api/auth/lookup-lead.ts +72 -0
- package/templates/src/pages/api/booking/availability.ts +72 -0
- package/templates/src/pages/api/booking/cancel.ts +73 -0
- package/templates/src/pages/api/booking/confirm.ts +82 -0
- package/templates/src/pages/api/booking/hold.ts +75 -0
- package/templates/src/pages/api/booking/list.ts +66 -0
- package/templates/src/pages/api/booking/metrics.ts +60 -0
- package/templates/src/pages/api/booking/release.ts +76 -0
- package/templates/src/pages/api/sandbox.ts +2 -2
- package/templates/src/pages/api/shopify/createCart.ts +69 -0
- package/templates/src/pages/api/shopify/getProducts.ts +64 -0
- package/templates/src/pages/storykeep/login.astro +26 -24
- package/templates/src/pages/storykeep/logout.astro +1 -10
- package/templates/src/pages/storykeep/manage.astro +69 -0
- package/templates/src/pages/storykeep/{content.astro → pages.astro} +4 -8
- package/templates/src/pages/storykeep/shopify.astro +101 -0
- package/templates/src/stores/navigation.ts +3 -42
- package/templates/src/stores/nodes.ts +3 -1
- package/templates/src/stores/resources.ts +7 -10
- package/templates/src/stores/shopify.ts +266 -0
- package/templates/src/types/tractstack.ts +75 -0
- package/templates/src/utils/api/advancedConfig.ts +7 -1
- package/templates/src/utils/api/advancedHelpers.ts +87 -7
- package/templates/src/utils/api/bookingHelpers.ts +125 -0
- package/templates/src/utils/api/brandHelpers.ts +14 -0
- package/templates/src/utils/api/resourceConfig.ts +13 -5
- package/templates/src/utils/auth.ts +29 -9
- package/templates/src/utils/compositor/aiGeneration.ts +3 -3
- package/templates/src/utils/compositor/aiPaneParser.ts +2 -2
- package/templates/src/utils/customHelpers.ts +49 -0
- package/templates/src/utils/helpers.ts +59 -0
- package/templates/src/utils/profileStorage.ts +5 -0
- package/templates/src/utils/tenantResolver.ts +2 -1
- 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
|
|
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
|
|
package/bin/create-tractstack.js
CHANGED
|
@@ -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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
24
|
+
async function y(t, e, c) {
|
|
25
25
|
e.info("TractStack: Injecting template files");
|
|
26
|
-
const
|
|
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/
|
|
860
|
-
dest: "src/pages/storykeep/
|
|
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
|
|
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
|
|
2212
|
-
if (!n(s.dest) ||
|
|
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 =
|
|
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
|
|
2222
|
-
e.error(`Failed to create ${s.dest}: ${
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
2477
|
+
P as default
|
|
2319
2478
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "astro-tractstack",
|
|
3
|
-
"version": "2.
|
|
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.
|
|
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';
|
|
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
|
|
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 ===
|
|
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>
|