@tanstack/create 0.65.0 → 0.66.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/frameworks/react/add-ons/shopify/README.md +86 -0
  3. package/dist/frameworks/react/add-ons/shopify/assets/_dot_env.local.append +19 -0
  4. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/account-nav.tsx.ejs +41 -0
  5. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/add-to-cart-button.tsx +48 -0
  6. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-line-item.tsx +94 -0
  7. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-summary.tsx +111 -0
  8. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/empty-state.tsx +29 -0
  9. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/money.tsx +11 -0
  10. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/product-card.tsx +74 -0
  11. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/product-grid.tsx +24 -0
  12. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/shop-image.tsx +57 -0
  13. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/shop.css +58 -0
  14. package/dist/frameworks/react/add-ons/shopify/assets/src/components/shop/variant-selector.tsx +79 -0
  15. package/dist/frameworks/react/add-ons/shopify/assets/src/hooks/use-cart.ts +276 -0
  16. package/dist/frameworks/react/add-ons/shopify/assets/src/hooks/use-customer.ts.ejs +22 -0
  17. package/dist/frameworks/react/add-ons/shopify/assets/src/integrations/shopify/header-cart.tsx +37 -0
  18. package/dist/frameworks/react/add-ons/shopify/assets/src/lib/shopify/customer-queries.ts.ejs +228 -0
  19. package/dist/frameworks/react/add-ons/shopify/assets/src/lib/shopify/format.ts +33 -0
  20. package/dist/frameworks/react/add-ons/shopify/assets/src/lib/shopify/queries.ts +684 -0
  21. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.addresses.tsx.ejs +67 -0
  22. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.callback.tsx.ejs +45 -0
  23. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.index.tsx.ejs +70 -0
  24. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.login.tsx.ejs +59 -0
  25. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.logout.tsx.ejs +16 -0
  26. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.$id.tsx.ejs +126 -0
  27. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.tsx.ejs +50 -0
  28. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.tsx.ejs +34 -0
  29. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.cart.tsx +45 -0
  30. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.collections.$handle.tsx +66 -0
  31. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.index.tsx +36 -0
  32. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.pages.$handle.tsx +39 -0
  33. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.policies.$handle.tsx +30 -0
  34. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.products.$handle.tsx +106 -0
  35. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.search.tsx +75 -0
  36. package/dist/frameworks/react/add-ons/shopify/assets/src/routes/shop.tsx +78 -0
  37. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/cart.functions.ts +207 -0
  38. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/catalog.functions.ts +244 -0
  39. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/cookies.ts +29 -0
  40. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-client.ts.ejs +99 -0
  41. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-cookies.ts.ejs +49 -0
  42. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer.functions.ts.ejs +168 -0
  43. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/env.ts +89 -0
  44. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/oauth.ts.ejs +301 -0
  45. package/dist/frameworks/react/add-ons/shopify/assets/src/server/shopify/storefront-client.ts +101 -0
  46. package/dist/frameworks/react/add-ons/shopify/info.json +104 -0
  47. package/dist/frameworks/react/add-ons/shopify/package.json +6 -0
  48. package/dist/frameworks/react/add-ons/shopify/small-logo.svg +1 -0
  49. package/dist/frameworks/react/examples/shopify-storefront/README.md +39 -0
  50. package/dist/frameworks/react/examples/shopify-storefront/assets/src/components/FeaturedCollections.tsx +43 -0
  51. package/dist/frameworks/react/examples/shopify-storefront/assets/src/components/ShopHero.tsx +39 -0
  52. package/dist/frameworks/react/examples/shopify-storefront/assets/src/routes/index.tsx +65 -0
  53. package/dist/frameworks/react/examples/shopify-storefront/info.json +18 -0
  54. package/dist/frameworks/react/examples/shopify-storefront/package.json +3 -0
  55. package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +34 -34
  56. package/package.json +1 -1
  57. package/src/frameworks/react/add-ons/shopify/README.md +86 -0
  58. package/src/frameworks/react/add-ons/shopify/assets/_dot_env.local.append +19 -0
  59. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/account-nav.tsx.ejs +41 -0
  60. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/add-to-cart-button.tsx +48 -0
  61. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-line-item.tsx +94 -0
  62. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/cart-summary.tsx +111 -0
  63. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/empty-state.tsx +29 -0
  64. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/money.tsx +11 -0
  65. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/product-card.tsx +74 -0
  66. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/product-grid.tsx +24 -0
  67. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/shop-image.tsx +57 -0
  68. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/shop.css +58 -0
  69. package/src/frameworks/react/add-ons/shopify/assets/src/components/shop/variant-selector.tsx +79 -0
  70. package/src/frameworks/react/add-ons/shopify/assets/src/hooks/use-cart.ts +276 -0
  71. package/src/frameworks/react/add-ons/shopify/assets/src/hooks/use-customer.ts.ejs +22 -0
  72. package/src/frameworks/react/add-ons/shopify/assets/src/integrations/shopify/header-cart.tsx +37 -0
  73. package/src/frameworks/react/add-ons/shopify/assets/src/lib/shopify/customer-queries.ts.ejs +228 -0
  74. package/src/frameworks/react/add-ons/shopify/assets/src/lib/shopify/format.ts +33 -0
  75. package/src/frameworks/react/add-ons/shopify/assets/src/lib/shopify/queries.ts +684 -0
  76. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.addresses.tsx.ejs +67 -0
  77. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.callback.tsx.ejs +45 -0
  78. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.index.tsx.ejs +70 -0
  79. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.login.tsx.ejs +59 -0
  80. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.logout.tsx.ejs +16 -0
  81. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.$id.tsx.ejs +126 -0
  82. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.orders.tsx.ejs +50 -0
  83. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.account.tsx.ejs +34 -0
  84. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.cart.tsx +45 -0
  85. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.collections.$handle.tsx +66 -0
  86. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.index.tsx +36 -0
  87. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.pages.$handle.tsx +39 -0
  88. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.policies.$handle.tsx +30 -0
  89. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.products.$handle.tsx +106 -0
  90. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.search.tsx +75 -0
  91. package/src/frameworks/react/add-ons/shopify/assets/src/routes/shop.tsx +78 -0
  92. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/cart.functions.ts +207 -0
  93. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/catalog.functions.ts +244 -0
  94. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/cookies.ts +29 -0
  95. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-client.ts.ejs +99 -0
  96. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer-cookies.ts.ejs +49 -0
  97. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/customer.functions.ts.ejs +168 -0
  98. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/env.ts +89 -0
  99. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/oauth.ts.ejs +301 -0
  100. package/src/frameworks/react/add-ons/shopify/assets/src/server/shopify/storefront-client.ts +101 -0
  101. package/src/frameworks/react/add-ons/shopify/info.json +104 -0
  102. package/src/frameworks/react/add-ons/shopify/package.json +6 -0
  103. package/src/frameworks/react/add-ons/shopify/small-logo.svg +1 -0
  104. package/src/frameworks/react/examples/shopify-storefront/README.md +39 -0
  105. package/src/frameworks/react/examples/shopify-storefront/assets/src/components/FeaturedCollections.tsx +43 -0
  106. package/src/frameworks/react/examples/shopify-storefront/assets/src/components/ShopHero.tsx +39 -0
  107. package/src/frameworks/react/examples/shopify-storefront/assets/src/routes/index.tsx +65 -0
  108. package/src/frameworks/react/examples/shopify-storefront/info.json +18 -0
  109. package/src/frameworks/react/examples/shopify-storefront/package.json +3 -0
  110. 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
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "dependencies": {}
3
+ }
@@ -32,7 +32,40 @@ export default function Header() {
32
32
  </Link>
33
33
  </h2>
34
34
 
35
- <div className="ml-auto flex items-center gap-1.5 sm:ml-0 sm:gap-2">
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
  )