@tanstack/create 0.65.0 → 0.67.0
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/CHANGELOG.md +72 -0
- package/dist/frameworks/react/add-ons/powersync/README.md.ejs +26 -0
- package/dist/frameworks/react/add-ons/powersync/assets/_dot_env.local.append +3 -0
- package/dist/frameworks/react/add-ons/powersync/assets/powersync-vite-plugin.ts +17 -0
- package/dist/frameworks/react/add-ons/powersync/assets/src/integrations/powersync/provider.tsx +26 -0
- package/dist/frameworks/react/add-ons/powersync/assets/src/lib/powersync/AppSchema.ts +17 -0
- package/dist/frameworks/react/add-ons/powersync/assets/src/lib/powersync/BackendConnector.ts +52 -0
- package/dist/frameworks/react/add-ons/powersync/assets/src/routes/demo/powersync.tsx +129 -0
- package/dist/frameworks/react/add-ons/powersync/info.json +46 -0
- package/dist/frameworks/react/add-ons/powersync/package.json.ejs +7 -0
- package/dist/frameworks/react/add-ons/powersync/small-logo.svg +6 -0
- package/dist/frameworks/react/add-ons/shopify/README.md +86 -0
- package/dist/frameworks/react/add-ons/shopify/assets/_dot_env.local.append +19 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/account-nav.tsx.ejs +41 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/add-to-cart-button.tsx +48 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-line-item.tsx +94 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-summary.tsx +111 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/empty-state.tsx +29 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/money.tsx +11 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/product-card.tsx +74 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/product-grid.tsx +24 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/shop-image.tsx +57 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/shop.css +58 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/variant-selector.tsx +79 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/hooks/use-cart.ts +276 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/hooks/use-customer.ts.ejs +22 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/integrations/shopify/header-cart.tsx +37 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/lib/shopify/customer-queries.ts.ejs +228 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/lib/shopify/format.ts +33 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/lib/shopify/queries.ts +684 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.addresses.tsx.ejs +67 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.callback.tsx.ejs +45 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.index.tsx.ejs +70 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.login.tsx.ejs +59 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.logout.tsx.ejs +16 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.$id.tsx.ejs +126 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.tsx.ejs +50 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.tsx.ejs +34 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.cart.tsx +45 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.collections.$handle.tsx +66 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.index.tsx +36 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.pages.$handle.tsx +39 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.policies.$handle.tsx +30 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.products.$handle.tsx +106 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.search.tsx +75 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.tsx +78 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/cart.functions.ts +207 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/catalog.functions.ts +244 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/cookies.ts +29 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-client.ts.ejs +99 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-cookies.ts.ejs +49 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer.functions.ts.ejs +168 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/env.ts +89 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/oauth.ts.ejs +301 -0
- package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/storefront-client.ts +101 -0
- package/dist/frameworks/react/add-ons/shopify/info.json +104 -0
- package/dist/frameworks/react/add-ons/shopify/package.json +6 -0
- package/dist/frameworks/react/add-ons/shopify/small-logo.svg +1 -0
- package/dist/frameworks/react/examples/shopify-storefront/README.md +39 -0
- package/dist/frameworks/react/examples/shopify-storefront/assets/src/components/FeaturedCollections.tsx +43 -0
- package/dist/frameworks/react/examples/shopify-storefront/assets/src/components/ShopHero.tsx +39 -0
- package/dist/frameworks/react/examples/shopify-storefront/assets/src/routes/index.tsx +65 -0
- package/dist/frameworks/react/examples/shopify-storefront/info.json +18 -0
- package/dist/frameworks/react/examples/shopify-storefront/package.json +3 -0
- package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +34 -34
- package/package.json +1 -1
- package/src/frameworks/react/add-ons/powersync/README.md.ejs +26 -0
- package/src/frameworks/react/add-ons/powersync/assets/_dot_env.local.append +3 -0
- package/src/frameworks/react/add-ons/powersync/assets/powersync-vite-plugin.ts +17 -0
- package/src/frameworks/react/add-ons/powersync/assets/src/integrations/powersync/provider.tsx +26 -0
- package/src/frameworks/react/add-ons/powersync/assets/src/lib/powersync/AppSchema.ts +17 -0
- package/src/frameworks/react/add-ons/powersync/assets/src/lib/powersync/BackendConnector.ts +52 -0
- package/src/frameworks/react/add-ons/powersync/assets/src/routes/demo/powersync.tsx +129 -0
- package/src/frameworks/react/add-ons/powersync/info.json +46 -0
- package/src/frameworks/react/add-ons/powersync/package.json.ejs +7 -0
- package/src/frameworks/react/add-ons/powersync/small-logo.svg +6 -0
- package/src/frameworks/react/add-ons/shopify/README.md +86 -0
- package/src/frameworks/react/add-ons/shopify/assets/_dot_env.local.append +19 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/account-nav.tsx.ejs +41 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/add-to-cart-button.tsx +48 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-line-item.tsx +94 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-summary.tsx +111 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/empty-state.tsx +29 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/money.tsx +11 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/product-card.tsx +74 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/product-grid.tsx +24 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/shop-image.tsx +57 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/shop.css +58 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/variant-selector.tsx +79 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/hooks/use-cart.ts +276 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/hooks/use-customer.ts.ejs +22 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/integrations/shopify/header-cart.tsx +37 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/lib/shopify/customer-queries.ts.ejs +228 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/lib/shopify/format.ts +33 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/lib/shopify/queries.ts +684 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.addresses.tsx.ejs +67 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.callback.tsx.ejs +45 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.index.tsx.ejs +70 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.login.tsx.ejs +59 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.logout.tsx.ejs +16 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.$id.tsx.ejs +126 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.tsx.ejs +50 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.tsx.ejs +34 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.cart.tsx +45 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.collections.$handle.tsx +66 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.index.tsx +36 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.pages.$handle.tsx +39 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.policies.$handle.tsx +30 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.products.$handle.tsx +106 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.search.tsx +75 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.tsx +78 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/cart.functions.ts +207 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/catalog.functions.ts +244 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/cookies.ts +29 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-client.ts.ejs +99 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-cookies.ts.ejs +49 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer.functions.ts.ejs +168 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/env.ts +89 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/oauth.ts.ejs +301 -0
- package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/storefront-client.ts +101 -0
- package/src/frameworks/react/add-ons/shopify/info.json +104 -0
- package/src/frameworks/react/add-ons/shopify/package.json +6 -0
- package/src/frameworks/react/add-ons/shopify/small-logo.svg +1 -0
- package/src/frameworks/react/examples/shopify-storefront/README.md +39 -0
- package/src/frameworks/react/examples/shopify-storefront/assets/src/components/FeaturedCollections.tsx +43 -0
- package/src/frameworks/react/examples/shopify-storefront/assets/src/components/ShopHero.tsx +39 -0
- package/src/frameworks/react/examples/shopify-storefront/assets/src/routes/index.tsx +65 -0
- package/src/frameworks/react/examples/shopify-storefront/info.json +18 -0
- package/src/frameworks/react/examples/shopify-storefront/package.json +3 -0
- package/src/frameworks/react/project/base/src/components/Header.tsx.ejs +34 -34
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Link, createFileRoute } from '@tanstack/react-router'
|
|
2
|
+
|
|
3
|
+
import '#/components/shop/shop.css'
|
|
4
|
+
import { ProductGrid } from '#/components/shop/product-grid'
|
|
5
|
+
import { FeaturedCollections } from '#/components/FeaturedCollections'
|
|
6
|
+
import { ShopHero } from '#/components/ShopHero'
|
|
7
|
+
import {
|
|
8
|
+
getCollections,
|
|
9
|
+
getProducts,
|
|
10
|
+
getShop,
|
|
11
|
+
} from '#/server/shopify/catalog.functions'
|
|
12
|
+
|
|
13
|
+
export const Route = createFileRoute('/')({
|
|
14
|
+
loader: async () => {
|
|
15
|
+
const [shop, collections, products] = await Promise.all([
|
|
16
|
+
getShop(),
|
|
17
|
+
getCollections(),
|
|
18
|
+
getProducts({ data: { first: 8, sortKey: 'BEST_SELLING' } }),
|
|
19
|
+
])
|
|
20
|
+
return { shop, collections, featured: products.nodes }
|
|
21
|
+
},
|
|
22
|
+
head: ({ loaderData }) => ({
|
|
23
|
+
meta: loaderData
|
|
24
|
+
? [
|
|
25
|
+
{ title: loaderData.shop.name },
|
|
26
|
+
{ name: 'description', content: loaderData.shop.description ?? '' },
|
|
27
|
+
]
|
|
28
|
+
: [],
|
|
29
|
+
}),
|
|
30
|
+
component: HomePage,
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
function HomePage() {
|
|
34
|
+
const { shop, collections, featured } = Route.useLoaderData()
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<div className="shop-root min-h-screen">
|
|
38
|
+
<ShopHero
|
|
39
|
+
title={shop.name}
|
|
40
|
+
tagline={shop.description ?? 'A TanStack Start + Shopify storefront.'}
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
{collections.length > 0 && (
|
|
44
|
+
<section className="mx-auto max-w-7xl px-4 pb-20 sm:px-6 lg:px-8">
|
|
45
|
+
<FeaturedCollections collections={collections.slice(0, 3)} />
|
|
46
|
+
</section>
|
|
47
|
+
)}
|
|
48
|
+
|
|
49
|
+
<section className="mx-auto max-w-7xl px-4 pb-24 sm:px-6 lg:px-8">
|
|
50
|
+
<div className="mb-8 flex items-baseline justify-between">
|
|
51
|
+
<h2 className="text-2xl font-medium tracking-tight sm:text-3xl">
|
|
52
|
+
Best sellers
|
|
53
|
+
</h2>
|
|
54
|
+
<Link
|
|
55
|
+
to="/shop"
|
|
56
|
+
className="text-sm underline underline-offset-4 hover:opacity-80"
|
|
57
|
+
>
|
|
58
|
+
Shop all →
|
|
59
|
+
</Link>
|
|
60
|
+
</div>
|
|
61
|
+
<ProductGrid products={featured} />
|
|
62
|
+
</section>
|
|
63
|
+
</div>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Shopify Storefront",
|
|
3
|
+
"description": "A polished Shopify storefront starter — TanStack Start + Shopify Storefront API + optional customer accounts. Hosted checkout, deploy anywhere.",
|
|
4
|
+
"phase": "example",
|
|
5
|
+
"modes": ["file-router"],
|
|
6
|
+
"type": "example",
|
|
7
|
+
"category": "other",
|
|
8
|
+
"color": "#5A31F4",
|
|
9
|
+
"priority": 5,
|
|
10
|
+
"link": "https://shopify.dev/docs/storefronts/headless",
|
|
11
|
+
"dependsOn": ["shopify"],
|
|
12
|
+
"default": true,
|
|
13
|
+
"routes": [
|
|
14
|
+
{ "url": "/", "path": "src/routes/index.tsx", "jsName": "ShopHome" }
|
|
15
|
+
],
|
|
16
|
+
"integrations": [],
|
|
17
|
+
"variables": []
|
|
18
|
+
}
|
|
@@ -32,7 +32,40 @@ export default function Header() {
|
|
|
32
32
|
</Link>
|
|
33
33
|
</h2>
|
|
34
34
|
|
|
35
|
-
<div className="
|
|
35
|
+
<div className="order-3 flex w-full flex-wrap items-center gap-x-4 gap-y-1 pb-1 text-sm font-semibold sm:order-none sm:w-auto sm:flex-nowrap sm:pb-0">
|
|
36
|
+
<Link to="/" className="nav-link" activeProps={{ className: 'nav-link is-active' }}>
|
|
37
|
+
Home
|
|
38
|
+
</Link>
|
|
39
|
+
<Link
|
|
40
|
+
to="/about"
|
|
41
|
+
className="nav-link"
|
|
42
|
+
activeProps={{ className: 'nav-link is-active' }}
|
|
43
|
+
>
|
|
44
|
+
About
|
|
45
|
+
</Link>
|
|
46
|
+
<a
|
|
47
|
+
href="https://tanstack.com/start/latest/docs/framework/react/overview"
|
|
48
|
+
className="nav-link"
|
|
49
|
+
target="_blank"
|
|
50
|
+
rel="noreferrer"
|
|
51
|
+
>
|
|
52
|
+
Docs
|
|
53
|
+
</a>
|
|
54
|
+
<% if (demoRoutes.length > 0) { %><details className="relative w-full sm:w-auto">
|
|
55
|
+
<summary className="nav-link list-none cursor-pointer">Demos</summary>
|
|
56
|
+
<div className="mt-2 min-w-56 rounded-xl border border-[var(--line)] bg-[var(--header-bg)] p-2 shadow-lg sm:absolute sm:right-0">
|
|
57
|
+
<% for (const route of demoRoutes) { %><a
|
|
58
|
+
href="<%= route.url %>"
|
|
59
|
+
className="block rounded-lg px-3 py-2 text-sm text-[var(--sea-ink-soft)] no-underline transition hover:bg-[var(--link-bg-hover)] hover:text-[var(--sea-ink)]"
|
|
60
|
+
>
|
|
61
|
+
<%= route.name %>
|
|
62
|
+
</a>
|
|
63
|
+
<% } %>
|
|
64
|
+
</div>
|
|
65
|
+
</details><% } %>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div className="ml-auto flex items-center gap-1.5 sm:gap-2">
|
|
36
69
|
<a
|
|
37
70
|
href="https://x.com/tan_stack"
|
|
38
71
|
target="_blank"
|
|
@@ -65,39 +98,6 @@ export default function Header() {
|
|
|
65
98
|
<% } %>
|
|
66
99
|
<ThemeToggle />
|
|
67
100
|
</div>
|
|
68
|
-
|
|
69
|
-
<div className="order-3 flex w-full flex-wrap items-center gap-x-4 gap-y-1 pb-1 text-sm font-semibold sm:order-2 sm:w-auto sm:flex-nowrap sm:pb-0">
|
|
70
|
-
<Link to="/" className="nav-link" activeProps={{ className: 'nav-link is-active' }}>
|
|
71
|
-
Home
|
|
72
|
-
</Link>
|
|
73
|
-
<Link
|
|
74
|
-
to="/about"
|
|
75
|
-
className="nav-link"
|
|
76
|
-
activeProps={{ className: 'nav-link is-active' }}
|
|
77
|
-
>
|
|
78
|
-
About
|
|
79
|
-
</Link>
|
|
80
|
-
<a
|
|
81
|
-
href="https://tanstack.com/start/latest/docs/framework/react/overview"
|
|
82
|
-
className="nav-link"
|
|
83
|
-
target="_blank"
|
|
84
|
-
rel="noreferrer"
|
|
85
|
-
>
|
|
86
|
-
Docs
|
|
87
|
-
</a>
|
|
88
|
-
<% if (demoRoutes.length > 0) { %><details className="relative w-full sm:w-auto">
|
|
89
|
-
<summary className="nav-link list-none cursor-pointer">Demos</summary>
|
|
90
|
-
<div className="mt-2 min-w-56 rounded-xl border border-[var(--line)] bg-[var(--header-bg)] p-2 shadow-lg sm:absolute sm:right-0">
|
|
91
|
-
<% for (const route of demoRoutes) { %><a
|
|
92
|
-
href="<%= route.url %>"
|
|
93
|
-
className="block rounded-lg px-3 py-2 text-sm text-[var(--sea-ink-soft)] no-underline transition hover:bg-[var(--link-bg-hover)] hover:text-[var(--sea-ink)]"
|
|
94
|
-
>
|
|
95
|
-
<%= route.name %>
|
|
96
|
-
</a>
|
|
97
|
-
<% } %>
|
|
98
|
-
</div>
|
|
99
|
-
</details><% } %>
|
|
100
|
-
</div>
|
|
101
101
|
</nav>
|
|
102
102
|
</header>
|
|
103
103
|
)
|