tanstack_start_ts 1.0.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 (336) hide show
  1. package/.wrangler/deploy/config.json +1 -0
  2. package/bunfig.toml +6 -0
  3. package/components.json +22 -0
  4. package/config.json +0 -0
  5. package/dist/client/.assetsignore +2 -0
  6. package/dist/client/assets/ProductCard-DbIkJAE-.js +1 -0
  7. package/dist/client/assets/about-AskxOruL.js +1 -0
  8. package/dist/client/assets/admin-BZVcAQM3.js +1 -0
  9. package/dist/client/assets/admin.functions--RdVcuBx.js +1 -0
  10. package/dist/client/assets/admin.login-QgrF_9Fp.js +1 -0
  11. package/dist/client/assets/affiliate-disclosure-BIAsA-HO.js +1 -0
  12. package/dist/client/assets/categories-D0N418mK.js +1 -0
  13. package/dist/client/assets/category._slug-aCaQm14E.js +1 -0
  14. package/dist/client/assets/contact-PhvO-V15.js +1 -0
  15. package/dist/client/assets/faq-BsiHWPM8.js +1 -0
  16. package/dist/client/assets/hero-bg-BP2eVUIX.jpg +0 -0
  17. package/dist/client/assets/index-BU9rnkF3.js +1 -0
  18. package/dist/client/assets/index-BpJWZkva.js +1 -0
  19. package/dist/client/assets/index-vRX-zAyq.js +1 -0
  20. package/dist/client/assets/login-DteE0ZGp.js +1 -0
  21. package/dist/client/assets/logo-pSNfLJQk.png +0 -0
  22. package/dist/client/assets/privacy-B_Pu7040.js +1 -0
  23. package/dist/client/assets/product-links-BkZ41Gv3.js +1 -0
  24. package/dist/client/assets/product._id-BVUysCW-.js +1 -0
  25. package/dist/client/assets/products.functions-cGzRziKO.js +1 -0
  26. package/dist/client/assets/profile-CveRcKq2.js +1 -0
  27. package/dist/client/assets/reset-password-ySEjItX_.js +1 -0
  28. package/dist/client/assets/saved-CHtdQDJF.js +1 -0
  29. package/dist/client/assets/search-CXWfET1y.js +1 -0
  30. package/dist/client/assets/signup-CEx90iuV.js +1 -0
  31. package/dist/client/assets/styles-DrNJG0BO.css +1 -0
  32. package/dist/client/assets/terms-VqJ9kX9b.js +1 -0
  33. package/dist/client/assets/update-password-C-d0ix5e.js +1 -0
  34. package/dist/client/assets/vendor-aria-hidden-DvXkyWUv.js +1 -0
  35. package/dist/client/assets/vendor-class-variance-authority-5VPnzWs2.js +1 -0
  36. package/dist/client/assets/vendor-clsx-B-dksMZM.js +1 -0
  37. package/dist/client/assets/vendor-cookie-es-CS0aJGDi.js +1 -0
  38. package/dist/client/assets/vendor-detect-node-es-l0sNRNKZ.js +1 -0
  39. package/dist/client/assets/vendor-floating-ui-core-BlUy28sp.js +1 -0
  40. package/dist/client/assets/vendor-floating-ui-dom-BxK0hn2R.js +1 -0
  41. package/dist/client/assets/vendor-floating-ui-react-dom-Bas3975S.js +1 -0
  42. package/dist/client/assets/vendor-floating-ui-utils-BfYUAVcw.js +1 -0
  43. package/dist/client/assets/vendor-framer-motion-BMdL-cuX.js +9 -0
  44. package/dist/client/assets/vendor-get-nonce-C-Z93AgS.js +1 -0
  45. package/dist/client/assets/vendor-iceberg-js-tWD4K6Lg.js +1 -0
  46. package/dist/client/assets/vendor-lovable.dev-cloud-auth-js-VuzqtJVg.js +1 -0
  47. package/dist/client/assets/vendor-lucide-react-b5K2fehp.js +1 -0
  48. package/dist/client/assets/vendor-motion-dom-BETJamZt.js +1 -0
  49. package/dist/client/assets/vendor-motion-utils-BuWewJbj.js +1 -0
  50. package/dist/client/assets/vendor-radix-ui-primitive-Dc_FVRD7.js +1 -0
  51. package/dist/client/assets/vendor-radix-ui-react-accordion-C22Rgxe9.js +1 -0
  52. package/dist/client/assets/vendor-radix-ui-react-arrow-DMHj2mKI.js +1 -0
  53. package/dist/client/assets/vendor-radix-ui-react-avatar-CVPBkFXg.js +1 -0
  54. package/dist/client/assets/vendor-radix-ui-react-collapsible-BvM-4sKX.js +1 -0
  55. package/dist/client/assets/vendor-radix-ui-react-collection-D9KtqmHm.js +1 -0
  56. package/dist/client/assets/vendor-radix-ui-react-compose-refs-Cvq0AS8Z.js +1 -0
  57. package/dist/client/assets/vendor-radix-ui-react-context-CAqqn5Nx.js +1 -0
  58. package/dist/client/assets/vendor-radix-ui-react-dialog-DZ01vOLq.js +5 -0
  59. package/dist/client/assets/vendor-radix-ui-react-direction-DxZwNuei.js +1 -0
  60. package/dist/client/assets/vendor-radix-ui-react-dismissable-layer-Dqgrs55Y.js +1 -0
  61. package/dist/client/assets/vendor-radix-ui-react-dropdown-menu-0uzvrqkn.js +1 -0
  62. package/dist/client/assets/vendor-radix-ui-react-focus-guards-DgWoZ-fP.js +1 -0
  63. package/dist/client/assets/vendor-radix-ui-react-focus-scope-BLIu5QaL.js +1 -0
  64. package/dist/client/assets/vendor-radix-ui-react-id-bpga_rLa.js +1 -0
  65. package/dist/client/assets/vendor-radix-ui-react-menu-D0qf2r6_.js +1 -0
  66. package/dist/client/assets/vendor-radix-ui-react-popper-BafIylxU.js +1 -0
  67. package/dist/client/assets/vendor-radix-ui-react-portal-BnAsfNCS.js +1 -0
  68. package/dist/client/assets/vendor-radix-ui-react-presence-C-f3UKQ2.js +1 -0
  69. package/dist/client/assets/vendor-radix-ui-react-primitive-zTHwXNoz.js +1 -0
  70. package/dist/client/assets/vendor-radix-ui-react-roving-focus-jyJB8K2E.js +1 -0
  71. package/dist/client/assets/vendor-radix-ui-react-slot-6LXHJrHl.js +1 -0
  72. package/dist/client/assets/vendor-radix-ui-react-use-callback-ref-E91aPc6s.js +1 -0
  73. package/dist/client/assets/vendor-radix-ui-react-use-controllable-state-Ca3eMtxa.js +1 -0
  74. package/dist/client/assets/vendor-radix-ui-react-use-effect-event-CPeX4A3c.js +1 -0
  75. package/dist/client/assets/vendor-radix-ui-react-use-escape-keydown-7n3YsXFo.js +1 -0
  76. package/dist/client/assets/vendor-radix-ui-react-use-is-hydrated-C1PY1qNv.js +1 -0
  77. package/dist/client/assets/vendor-radix-ui-react-use-layout-effect-B3AcGWPy.js +1 -0
  78. package/dist/client/assets/vendor-radix-ui-react-use-size-CXS04sct.js +1 -0
  79. package/dist/client/assets/vendor-react-dom-BnNs-kzm.js +9 -0
  80. package/dist/client/assets/vendor-react-gJPiVnX5.js +1 -0
  81. package/dist/client/assets/vendor-react-remove-scroll-DHKl-IMP.js +4 -0
  82. package/dist/client/assets/vendor-react-remove-scroll-bar-CSjdInc2.js +38 -0
  83. package/dist/client/assets/vendor-react-style-singleton-BqHpkgXn.js +1 -0
  84. package/dist/client/assets/vendor-scheduler-7OC5HNn7.js +1 -0
  85. package/dist/client/assets/vendor-seroval-B_Fur-nl.js +3 -0
  86. package/dist/client/assets/vendor-seroval-plugins-CBHnPkZJ.js +1 -0
  87. package/dist/client/assets/vendor-sonner-71-LdGG1.js +1 -0
  88. package/dist/client/assets/vendor-supabase-auth-js-DWrN-bIx.js +18 -0
  89. package/dist/client/assets/vendor-supabase-functions-js-uY_V-TxC.js +1 -0
  90. package/dist/client/assets/vendor-supabase-phoenix-BzEf37Ve.js +2 -0
  91. package/dist/client/assets/vendor-supabase-postgrest-js-C4rBWbCx.js +4 -0
  92. package/dist/client/assets/vendor-supabase-realtime-js-D6BlOYKE.js +23 -0
  93. package/dist/client/assets/vendor-supabase-storage-js-BG98L3Zz.js +1 -0
  94. package/dist/client/assets/vendor-supabase-supabase-js-DCCzdwBJ.js +1 -0
  95. package/dist/client/assets/vendor-tailwind-merge-Ct12j0u0.js +1 -0
  96. package/dist/client/assets/vendor-tanstack-history-C617CaxG.js +1 -0
  97. package/dist/client/assets/vendor-tanstack-query-core-7wuJJ5ZL.js +1 -0
  98. package/dist/client/assets/vendor-tanstack-react-query-HImzo8sX.js +1 -0
  99. package/dist/client/assets/vendor-tanstack-react-router-sIZLK-LU.js +1 -0
  100. package/dist/client/assets/vendor-tanstack-react-start-client-GiYCfWmf.js +1 -0
  101. package/dist/client/assets/vendor-tanstack-react-store-EvTi3ahh.js +1 -0
  102. package/dist/client/assets/vendor-tanstack-router-core-Cr7bYUZv.js +1 -0
  103. package/dist/client/assets/vendor-tanstack-start-client-core-C-00BBOu.js +2 -0
  104. package/dist/client/assets/vendor-tanstack-start-fn-stubs-l0sNRNKZ.js +1 -0
  105. package/dist/client/assets/vendor-tanstack-store-BC7mA7pq.js +1 -0
  106. package/dist/client/assets/vendor-tslib-Du-meQkk.js +1 -0
  107. package/dist/client/assets/vendor-use-callback-ref-C_fIAtot.js +1 -0
  108. package/dist/client/assets/vendor-use-sidecar-Bh0DDN6h.js +1 -0
  109. package/dist/client/assets/vendor-use-sync-external-store-ZvKHXaIn.js +1 -0
  110. package/dist/client/assets/vendor-vercel-analytics-DwPM5BWs.js +1 -0
  111. package/dist/client/assets/vendor-zod-By9teAtI.js +1 -0
  112. package/dist/client/robots.txt +2 -0
  113. package/dist/server/.dev.vars +5 -0
  114. package/dist/server/.vite/manifest.json +2528 -0
  115. package/dist/server/assets/ProductCard-CUPXy5Eo.js +149 -0
  116. package/dist/server/assets/_tanstack-start-manifest_v-do7vTWFD.js +4 -0
  117. package/dist/server/assets/about-TfKQw0Ga.js +28 -0
  118. package/dist/server/assets/admin-DspfJOJk.js +578 -0
  119. package/dist/server/assets/admin.functions-B78ppWLR.js +645 -0
  120. package/dist/server/assets/admin.functions-BWlKBoTL.js +93 -0
  121. package/dist/server/assets/admin.login-CV7QfeA6.js +139 -0
  122. package/dist/server/assets/affiliate-disclosure-B1wI1cDb.js +86 -0
  123. package/dist/server/assets/auth-middleware-Cn49MidW.js +62 -0
  124. package/dist/server/assets/categories-Z7jnAYZP.js +108 -0
  125. package/dist/server/assets/category._slug-D0XY3FGK.js +112 -0
  126. package/dist/server/assets/contact-IzyONsXs.js +104 -0
  127. package/dist/server/assets/faq-aRhB_CR3.js +133 -0
  128. package/dist/server/assets/hero-bg-BP2eVUIX.jpg +0 -0
  129. package/dist/server/assets/index-BTPHbXw9.js +221 -0
  130. package/dist/server/assets/index-ByJkHkrU.js +30 -0
  131. package/dist/server/assets/login-Dvy5Dm0f.js +175 -0
  132. package/dist/server/assets/logo-pSNfLJQk.png +0 -0
  133. package/dist/server/assets/privacy-B6Wiez1P.js +93 -0
  134. package/dist/server/assets/product-links-CGYEPP56.js +16 -0
  135. package/dist/server/assets/product._id-BpRa-1z0.js +231 -0
  136. package/dist/server/assets/products.functions-DSlmibYN.js +209 -0
  137. package/dist/server/assets/products.functions-DlHkRiqi.js +24 -0
  138. package/dist/server/assets/profile-B0NWzVAZ.js +314 -0
  139. package/dist/server/assets/reset-password-CY-rmqMr.js +115 -0
  140. package/dist/server/assets/saved-7FA6Dbom.js +126 -0
  141. package/dist/server/assets/search-Yw5c_fZa.js +329 -0
  142. package/dist/server/assets/signup-UPzgZo4i.js +143 -0
  143. package/dist/server/assets/styles-DrNJG0BO.css +1 -0
  144. package/dist/server/assets/terms-CMnX95bP.js +89 -0
  145. package/dist/server/assets/update-password-Cr94ea8n.js +131 -0
  146. package/dist/server/assets/vendor-aria-hidden-DPa16MWu.js +122 -0
  147. package/dist/server/assets/vendor-class-variance-authority-0YxJPB9Y.js +44 -0
  148. package/dist/server/assets/vendor-cloudflare-unenv-preset-ya0VEFBz.js +250 -0
  149. package/dist/server/assets/vendor-clsx-DgYk2OaC.js +16 -0
  150. package/dist/server/assets/vendor-cookie-es-DAoofYiI.js +44 -0
  151. package/dist/server/assets/vendor-detect-node-es-l0sNRNKZ.js +1 -0
  152. package/dist/server/assets/vendor-floating-ui-core-3tkK0THV.js +726 -0
  153. package/dist/server/assets/vendor-floating-ui-dom-C-cPtgJv.js +626 -0
  154. package/dist/server/assets/vendor-floating-ui-react-dom-CRG6gBpH.js +319 -0
  155. package/dist/server/assets/vendor-floating-ui-utils-DmXANH-E.js +320 -0
  156. package/dist/server/assets/vendor-framer-motion-X4zAkX3J.js +1979 -0
  157. package/dist/server/assets/vendor-get-nonce-DiSj3EHl.js +9 -0
  158. package/dist/server/assets/vendor-h3-v2-CCobnLY5.js +287 -0
  159. package/dist/server/assets/vendor-iceberg-js-bHCkXyJn.js +534 -0
  160. package/dist/server/assets/vendor-isbot-CZ7WjwVs.js +21 -0
  161. package/dist/server/assets/vendor-lovable.dev-cloud-auth-js-BE03njZw.js +180 -0
  162. package/dist/server/assets/vendor-lucide-react-Ddew6HYb.js +458 -0
  163. package/dist/server/assets/vendor-motion-dom-D2MTwGIG.js +5983 -0
  164. package/dist/server/assets/vendor-motion-utils-LJlIFN6m.js +161 -0
  165. package/dist/server/assets/vendor-radix-ui-primitive-B-mNdDrH.js +11 -0
  166. package/dist/server/assets/vendor-radix-ui-react-accordion-1Izf6x00.js +308 -0
  167. package/dist/server/assets/vendor-radix-ui-react-arrow-B882lnFK.js +23 -0
  168. package/dist/server/assets/vendor-radix-ui-react-avatar-BVgZt2Ab.js +209 -0
  169. package/dist/server/assets/vendor-radix-ui-react-collapsible-DCBbMZiS.js +147 -0
  170. package/dist/server/assets/vendor-radix-ui-react-collection-BZ2srfgU.js +150 -0
  171. package/dist/server/assets/vendor-radix-ui-react-compose-refs-D3qsKVk1.js +39 -0
  172. package/dist/server/assets/vendor-radix-ui-react-context-BVoNDLue.js +78 -0
  173. package/dist/server/assets/vendor-radix-ui-react-dialog-DlxMaNYK.js +406 -0
  174. package/dist/server/assets/vendor-radix-ui-react-direction-Dt_WDL1t.js +9 -0
  175. package/dist/server/assets/vendor-radix-ui-react-dismissable-layer-CjsuPohV.js +210 -0
  176. package/dist/server/assets/vendor-radix-ui-react-dropdown-menu-DVxKumY8.js +263 -0
  177. package/dist/server/assets/vendor-radix-ui-react-focus-guards-D_6NoePE.js +29 -0
  178. package/dist/server/assets/vendor-radix-ui-react-focus-scope-DEIhTJJH.js +206 -0
  179. package/dist/server/assets/vendor-radix-ui-react-id-DFFpgh6m.js +14 -0
  180. package/dist/server/assets/vendor-radix-ui-react-menu-CiTMLwjT.js +893 -0
  181. package/dist/server/assets/vendor-radix-ui-react-popper-23Ye2Vyc.js +286 -0
  182. package/dist/server/assets/vendor-radix-ui-react-portal-CZCH5uPk.js +16 -0
  183. package/dist/server/assets/vendor-radix-ui-react-presence-CaAULlDU.js +128 -0
  184. package/dist/server/assets/vendor-radix-ui-react-primitive-BeOk3UYa.js +124 -0
  185. package/dist/server/assets/vendor-radix-ui-react-roving-focus-DES9GR8l.js +224 -0
  186. package/dist/server/assets/vendor-radix-ui-react-slot-DUhZbzoH.js +103 -0
  187. package/dist/server/assets/vendor-radix-ui-react-use-callback-ref-BynBgohw.js +11 -0
  188. package/dist/server/assets/vendor-radix-ui-react-use-controllable-state-C9KpT6DG.js +69 -0
  189. package/dist/server/assets/vendor-radix-ui-react-use-effect-event-gpNY2xjS.js +1 -0
  190. package/dist/server/assets/vendor-radix-ui-react-use-escape-keydown-CcYRQ2pp.js +17 -0
  191. package/dist/server/assets/vendor-radix-ui-react-use-is-hydrated-D_LcBPXY.js +15 -0
  192. package/dist/server/assets/vendor-radix-ui-react-use-layout-effect-1LNLXAjr.js +6 -0
  193. package/dist/server/assets/vendor-radix-ui-react-use-size-D6fiKJQo.js +39 -0
  194. package/dist/server/assets/vendor-react-DvBrY0qp.js +511 -0
  195. package/dist/server/assets/vendor-react-dom-yvMLPM0j.js +10484 -0
  196. package/dist/server/assets/vendor-react-remove-scroll-BNtiEvVN.js +328 -0
  197. package/dist/server/assets/vendor-react-remove-scroll-bar-hLqRASRk.js +82 -0
  198. package/dist/server/assets/vendor-react-style-singleton-BXjcXskB.js +69 -0
  199. package/dist/server/assets/vendor-rou3-3NaGPdI8.js +8 -0
  200. package/dist/server/assets/vendor-seroval-dJyC-Zhz.js +1775 -0
  201. package/dist/server/assets/vendor-seroval-plugins-Pq_U2meB.js +58 -0
  202. package/dist/server/assets/vendor-sonner-CqbjhsRh.js +1086 -0
  203. package/dist/server/assets/vendor-srvx-BA-baEX9.js +6 -0
  204. package/dist/server/assets/vendor-supabase-auth-js-D4xjVprw.js +7602 -0
  205. package/dist/server/assets/vendor-supabase-functions-js-sWy4UYn1.js +322 -0
  206. package/dist/server/assets/vendor-supabase-phoenix-Bw3Uh2Nn.js +1777 -0
  207. package/dist/server/assets/vendor-supabase-postgrest-js-AO-BXa7I.js +4938 -0
  208. package/dist/server/assets/vendor-supabase-realtime-js-BtdNgJbm.js +2111 -0
  209. package/dist/server/assets/vendor-supabase-storage-js-Dk_MrPYO.js +2679 -0
  210. package/dist/server/assets/vendor-supabase-supabase-js-D1EEtG3j.js +697 -0
  211. package/dist/server/assets/vendor-tailwind-merge-BHb_obmC.js +3255 -0
  212. package/dist/server/assets/vendor-tanstack-history-C4pKJmkt.js +204 -0
  213. package/dist/server/assets/vendor-tanstack-query-core-PwwTR5ld.js +2552 -0
  214. package/dist/server/assets/vendor-tanstack-react-query-hhHzXAK1.js +190 -0
  215. package/dist/server/assets/vendor-tanstack-react-router-XzqpA65A.js +1120 -0
  216. package/dist/server/assets/vendor-tanstack-react-start-RvWUpvat.js +37 -0
  217. package/dist/server/assets/vendor-tanstack-react-start-client-gpNY2xjS.js +1 -0
  218. package/dist/server/assets/vendor-tanstack-react-start-server-uj_Y9pEN.js +15 -0
  219. package/dist/server/assets/vendor-tanstack-react-store-gpNY2xjS.js +1 -0
  220. package/dist/server/assets/vendor-tanstack-router-core-6wywV3KN.js +4252 -0
  221. package/dist/server/assets/vendor-tanstack-start-client-core-DoOKV2pA.js +1741 -0
  222. package/dist/server/assets/vendor-tanstack-start-fn-stubs-l0sNRNKZ.js +1 -0
  223. package/dist/server/assets/vendor-tanstack-start-server-core-CsAstXv7.js +1421 -0
  224. package/dist/server/assets/vendor-tanstack-start-storage-context-DgH9hIJT.js +17 -0
  225. package/dist/server/assets/vendor-tanstack-store-l0sNRNKZ.js +1 -0
  226. package/dist/server/assets/vendor-tslib-_8ICaZ64.js +67 -0
  227. package/dist/server/assets/vendor-unenv-DUvF4YIF.js +544 -0
  228. package/dist/server/assets/vendor-use-callback-ref-DMFDRvmi.js +66 -0
  229. package/dist/server/assets/vendor-use-sidecar-DG1tHua4.js +106 -0
  230. package/dist/server/assets/vendor-use-sync-external-store-rZ8vi0It.js +64 -0
  231. package/dist/server/assets/vendor-vercel-analytics-oP8BDp0L.js +168 -0
  232. package/dist/server/assets/vendor-zod-BRyQdbC-.js +3580 -0
  233. package/dist/server/index.js +158 -0
  234. package/dist/server/wrangler.json +1 -0
  235. package/enable-powershell.ps1 +7 -0
  236. package/eslint.config.js +41 -0
  237. package/lint.bat +4 -0
  238. package/package.json +95 -0
  239. package/public/robots.txt +2 -0
  240. package/run-npm-build.cjs +20 -0
  241. package/run-npm-build.js +20 -0
  242. package/src/assets/hero-bg.jpg +0 -0
  243. package/src/assets/logo.png +0 -0
  244. package/src/components/scrollsy/Footer.tsx +68 -0
  245. package/src/components/scrollsy/LiveTicker.tsx +31 -0
  246. package/src/components/scrollsy/Logo.tsx +28 -0
  247. package/src/components/scrollsy/Nav.tsx +255 -0
  248. package/src/components/scrollsy/ProductCard.tsx +190 -0
  249. package/src/components/scrollsy/ProductFilters.tsx +226 -0
  250. package/src/components/scrollsy/SupportWidget.tsx +197 -0
  251. package/src/components/ui/accordion.tsx +51 -0
  252. package/src/components/ui/alert-dialog.tsx +115 -0
  253. package/src/components/ui/alert.tsx +49 -0
  254. package/src/components/ui/aspect-ratio.tsx +5 -0
  255. package/src/components/ui/avatar.tsx +47 -0
  256. package/src/components/ui/badge.tsx +32 -0
  257. package/src/components/ui/breadcrumb.tsx +101 -0
  258. package/src/components/ui/button.tsx +49 -0
  259. package/src/components/ui/calendar.tsx +177 -0
  260. package/src/components/ui/card.tsx +55 -0
  261. package/src/components/ui/carousel.tsx +240 -0
  262. package/src/components/ui/chart.tsx +331 -0
  263. package/src/components/ui/checkbox.tsx +26 -0
  264. package/src/components/ui/collapsible.tsx +11 -0
  265. package/src/components/ui/command.tsx +143 -0
  266. package/src/components/ui/context-menu.tsx +187 -0
  267. package/src/components/ui/dialog.tsx +104 -0
  268. package/src/components/ui/drawer.tsx +98 -0
  269. package/src/components/ui/dropdown-menu.tsx +188 -0
  270. package/src/components/ui/form.tsx +171 -0
  271. package/src/components/ui/hover-card.tsx +27 -0
  272. package/src/components/ui/input-otp.tsx +69 -0
  273. package/src/components/ui/input.tsx +22 -0
  274. package/src/components/ui/label.tsx +21 -0
  275. package/src/components/ui/menubar.tsx +229 -0
  276. package/src/components/ui/navigation-menu.tsx +120 -0
  277. package/src/components/ui/pagination.tsx +98 -0
  278. package/src/components/ui/popover.tsx +31 -0
  279. package/src/components/ui/progress.tsx +25 -0
  280. package/src/components/ui/radio-group.tsx +36 -0
  281. package/src/components/ui/resizable.tsx +37 -0
  282. package/src/components/ui/scroll-area.tsx +44 -0
  283. package/src/components/ui/select.tsx +152 -0
  284. package/src/components/ui/separator.tsx +24 -0
  285. package/src/components/ui/sheet.tsx +122 -0
  286. package/src/components/ui/sidebar.tsx +744 -0
  287. package/src/components/ui/skeleton.tsx +7 -0
  288. package/src/components/ui/slider.tsx +23 -0
  289. package/src/components/ui/sonner.tsx +23 -0
  290. package/src/components/ui/switch.tsx +27 -0
  291. package/src/components/ui/table.tsx +94 -0
  292. package/src/components/ui/tabs.tsx +53 -0
  293. package/src/components/ui/textarea.tsx +21 -0
  294. package/src/components/ui/toggle-group.tsx +57 -0
  295. package/src/components/ui/toggle.tsx +42 -0
  296. package/src/components/ui/tooltip.tsx +32 -0
  297. package/src/hooks/use-auth.ts +26 -0
  298. package/src/hooks/use-mobile.tsx +19 -0
  299. package/src/integrations/lovable/index.ts +41 -0
  300. package/src/lib/admin.functions.ts +564 -0
  301. package/src/lib/error-capture.ts +27 -0
  302. package/src/lib/error-page.ts +30 -0
  303. package/src/lib/product-links.ts +39 -0
  304. package/src/lib/products.functions.ts +101 -0
  305. package/src/lib/utils.ts +6 -0
  306. package/src/routeTree.gen.ts +480 -0
  307. package/src/router.tsx +16 -0
  308. package/src/routes/__root.tsx +177 -0
  309. package/src/routes/about.tsx +66 -0
  310. package/src/routes/admin.login.tsx +95 -0
  311. package/src/routes/admin.tsx +811 -0
  312. package/src/routes/affiliate-disclosure.tsx +35 -0
  313. package/src/routes/categories.tsx +57 -0
  314. package/src/routes/category.$slug.tsx +51 -0
  315. package/src/routes/contact.tsx +69 -0
  316. package/src/routes/faq.tsx +63 -0
  317. package/src/routes/index.tsx +269 -0
  318. package/src/routes/login.tsx +160 -0
  319. package/src/routes/privacy.tsx +39 -0
  320. package/src/routes/product.$id.tsx +212 -0
  321. package/src/routes/profile.tsx +393 -0
  322. package/src/routes/reset-password.tsx +71 -0
  323. package/src/routes/saved.tsx +83 -0
  324. package/src/routes/search.tsx +136 -0
  325. package/src/routes/signup.tsx +108 -0
  326. package/src/routes/sitemap[.]xml.ts +34 -0
  327. package/src/routes/terms.tsx +40 -0
  328. package/src/routes/update-password.tsx +91 -0
  329. package/src/server.ts +80 -0
  330. package/src/start.ts +24 -0
  331. package/src/styles.css +333 -0
  332. package/terminal-test-output.txt +1 -0
  333. package/tsconfig.json +27 -0
  334. package/vercel.json +26 -0
  335. package/vite.config.ts +38 -0
  336. package/wrangler.jsonc +7 -0
@@ -0,0 +1,101 @@
1
+ import { createServerFn } from "@tanstack/react-start";
2
+ import { createClient } from "@supabase/supabase-js";
3
+ import type { Database } from "@/integrations/supabase/types";
4
+
5
+ // Public read using anon — RLS allows public SELECT on products/categories.
6
+ function pub() {
7
+ const url = process.env.SUPABASE_URL ?? import.meta.env.VITE_SUPABASE_URL;
8
+ const key = process.env.SUPABASE_PUBLISHABLE_KEY ?? import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY;
9
+ return createClient<Database>(url!, key!, {
10
+ auth: { persistSession: false, autoRefreshToken: false },
11
+ });
12
+ }
13
+
14
+ export const getHomeData = createServerFn({ method: "GET" }).handler(async () => {
15
+ const sb = pub();
16
+ const [featured, trending, recent, categories] = await Promise.all([
17
+ sb
18
+ .from("products")
19
+ .select("*")
20
+ .eq("is_featured", true)
21
+ .order("view_count", { ascending: false })
22
+ .limit(8),
23
+ sb
24
+ .from("products")
25
+ .select("*")
26
+ .eq("is_trending", true)
27
+ .order("view_count", { ascending: false })
28
+ .limit(12),
29
+ sb.from("products").select("*").order("created_at", { ascending: false }).limit(24),
30
+ sb.from("categories").select("*").order("sort_order"),
31
+ ]);
32
+ return {
33
+ featured: featured.data ?? [],
34
+ trending: trending.data ?? [],
35
+ recent: recent.data ?? [],
36
+ categories: categories.data ?? [],
37
+ };
38
+ });
39
+
40
+ export const getCategories = createServerFn({ method: "GET" }).handler(async () => {
41
+ const { data } = await pub().from("categories").select("*").order("sort_order");
42
+ return data ?? [];
43
+ });
44
+
45
+ export const getProductsByCategory = createServerFn({ method: "GET" })
46
+ .inputValidator((d: { slug: string }) => d)
47
+ .handler(async ({ data }) => {
48
+ const sb = pub();
49
+ const { data: cat } = await sb
50
+ .from("categories")
51
+ .select("*")
52
+ .eq("slug", data.slug)
53
+ .maybeSingle();
54
+ if (!cat) return { category: null, products: [] };
55
+ const { data: products } = await sb
56
+ .from("products")
57
+ .select("*")
58
+ .eq("category_id", cat.id)
59
+ .order("view_count", { ascending: false });
60
+ return { category: cat, products: products ?? [] };
61
+ });
62
+
63
+ export const getProduct = createServerFn({ method: "GET" })
64
+ .inputValidator((d: { id: string }) => d)
65
+ .handler(async ({ data }) => {
66
+ const sb = pub();
67
+ const { data: p } = await sb
68
+ .from("products")
69
+ .select("*, categories(name, slug)")
70
+ .eq("id", data.id)
71
+ .maybeSingle();
72
+ if (!p) return { product: null, related: [] };
73
+ const { data: related } = await sb
74
+ .from("products")
75
+ .select("*")
76
+ .eq("category_id", p.category_id!)
77
+ .neq("id", p.id)
78
+ .limit(8);
79
+ return { product: p, related: related ?? [] };
80
+ });
81
+
82
+ export const searchProducts = createServerFn({ method: "GET" })
83
+ .inputValidator((d: { q: string }) => d)
84
+ .handler(async ({ data }) => {
85
+ const sb = pub();
86
+ const q = data.q.trim();
87
+ if (!q) {
88
+ const { data: hot } = await sb
89
+ .from("products")
90
+ .select("*")
91
+ .order("view_count", { ascending: false })
92
+ .limit(24);
93
+ return hot ?? [];
94
+ }
95
+ const { data: results } = await sb
96
+ .from("products")
97
+ .select("*")
98
+ .or(`title.ilike.%${q}%,description.ilike.%${q}%`)
99
+ .limit(48);
100
+ return results ?? [];
101
+ });
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs));
6
+ }
@@ -0,0 +1,480 @@
1
+ /* eslint-disable */
2
+
3
+ // @ts-nocheck
4
+
5
+ // noinspection JSUnusedGlobalSymbols
6
+
7
+ // This file was automatically generated by TanStack Router.
8
+ // You should NOT make any changes in this file as it will be overwritten.
9
+ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
10
+
11
+ import { Route as rootRouteImport } from './routes/__root'
12
+ import { Route as UpdatePasswordRouteImport } from './routes/update-password'
13
+ import { Route as TermsRouteImport } from './routes/terms'
14
+ import { Route as SitemapDotxmlRouteImport } from './routes/sitemap[.]xml'
15
+ import { Route as SignupRouteImport } from './routes/signup'
16
+ import { Route as SearchRouteImport } from './routes/search'
17
+ import { Route as SavedRouteImport } from './routes/saved'
18
+ import { Route as ResetPasswordRouteImport } from './routes/reset-password'
19
+ import { Route as ProfileRouteImport } from './routes/profile'
20
+ import { Route as PrivacyRouteImport } from './routes/privacy'
21
+ import { Route as LoginRouteImport } from './routes/login'
22
+ import { Route as FaqRouteImport } from './routes/faq'
23
+ import { Route as ContactRouteImport } from './routes/contact'
24
+ import { Route as CategoriesRouteImport } from './routes/categories'
25
+ import { Route as AffiliateDisclosureRouteImport } from './routes/affiliate-disclosure'
26
+ import { Route as AdminRouteImport } from './routes/admin'
27
+ import { Route as AboutRouteImport } from './routes/about'
28
+ import { Route as IndexRouteImport } from './routes/index'
29
+ import { Route as ProductIdRouteImport } from './routes/product.$id'
30
+ import { Route as CategorySlugRouteImport } from './routes/category.$slug'
31
+ import { Route as AdminLoginRouteImport } from './routes/admin.login'
32
+
33
+ const UpdatePasswordRoute = UpdatePasswordRouteImport.update({
34
+ id: '/update-password',
35
+ path: '/update-password',
36
+ getParentRoute: () => rootRouteImport,
37
+ } as any)
38
+ const TermsRoute = TermsRouteImport.update({
39
+ id: '/terms',
40
+ path: '/terms',
41
+ getParentRoute: () => rootRouteImport,
42
+ } as any)
43
+ const SitemapDotxmlRoute = SitemapDotxmlRouteImport.update({
44
+ id: '/sitemap.xml',
45
+ path: '/sitemap.xml',
46
+ getParentRoute: () => rootRouteImport,
47
+ } as any)
48
+ const SignupRoute = SignupRouteImport.update({
49
+ id: '/signup',
50
+ path: '/signup',
51
+ getParentRoute: () => rootRouteImport,
52
+ } as any)
53
+ const SearchRoute = SearchRouteImport.update({
54
+ id: '/search',
55
+ path: '/search',
56
+ getParentRoute: () => rootRouteImport,
57
+ } as any)
58
+ const SavedRoute = SavedRouteImport.update({
59
+ id: '/saved',
60
+ path: '/saved',
61
+ getParentRoute: () => rootRouteImport,
62
+ } as any)
63
+ const ResetPasswordRoute = ResetPasswordRouteImport.update({
64
+ id: '/reset-password',
65
+ path: '/reset-password',
66
+ getParentRoute: () => rootRouteImport,
67
+ } as any)
68
+ const ProfileRoute = ProfileRouteImport.update({
69
+ id: '/profile',
70
+ path: '/profile',
71
+ getParentRoute: () => rootRouteImport,
72
+ } as any)
73
+ const PrivacyRoute = PrivacyRouteImport.update({
74
+ id: '/privacy',
75
+ path: '/privacy',
76
+ getParentRoute: () => rootRouteImport,
77
+ } as any)
78
+ const LoginRoute = LoginRouteImport.update({
79
+ id: '/login',
80
+ path: '/login',
81
+ getParentRoute: () => rootRouteImport,
82
+ } as any)
83
+ const FaqRoute = FaqRouteImport.update({
84
+ id: '/faq',
85
+ path: '/faq',
86
+ getParentRoute: () => rootRouteImport,
87
+ } as any)
88
+ const ContactRoute = ContactRouteImport.update({
89
+ id: '/contact',
90
+ path: '/contact',
91
+ getParentRoute: () => rootRouteImport,
92
+ } as any)
93
+ const CategoriesRoute = CategoriesRouteImport.update({
94
+ id: '/categories',
95
+ path: '/categories',
96
+ getParentRoute: () => rootRouteImport,
97
+ } as any)
98
+ const AffiliateDisclosureRoute = AffiliateDisclosureRouteImport.update({
99
+ id: '/affiliate-disclosure',
100
+ path: '/affiliate-disclosure',
101
+ getParentRoute: () => rootRouteImport,
102
+ } as any)
103
+ const AdminRoute = AdminRouteImport.update({
104
+ id: '/admin',
105
+ path: '/admin',
106
+ getParentRoute: () => rootRouteImport,
107
+ } as any)
108
+ const AboutRoute = AboutRouteImport.update({
109
+ id: '/about',
110
+ path: '/about',
111
+ getParentRoute: () => rootRouteImport,
112
+ } as any)
113
+ const IndexRoute = IndexRouteImport.update({
114
+ id: '/',
115
+ path: '/',
116
+ getParentRoute: () => rootRouteImport,
117
+ } as any)
118
+ const ProductIdRoute = ProductIdRouteImport.update({
119
+ id: '/product/$id',
120
+ path: '/product/$id',
121
+ getParentRoute: () => rootRouteImport,
122
+ } as any)
123
+ const CategorySlugRoute = CategorySlugRouteImport.update({
124
+ id: '/category/$slug',
125
+ path: '/category/$slug',
126
+ getParentRoute: () => rootRouteImport,
127
+ } as any)
128
+ const AdminLoginRoute = AdminLoginRouteImport.update({
129
+ id: '/login',
130
+ path: '/login',
131
+ getParentRoute: () => AdminRoute,
132
+ } as any)
133
+
134
+ export interface FileRoutesByFullPath {
135
+ '/': typeof IndexRoute
136
+ '/about': typeof AboutRoute
137
+ '/admin': typeof AdminRouteWithChildren
138
+ '/affiliate-disclosure': typeof AffiliateDisclosureRoute
139
+ '/categories': typeof CategoriesRoute
140
+ '/contact': typeof ContactRoute
141
+ '/faq': typeof FaqRoute
142
+ '/login': typeof LoginRoute
143
+ '/privacy': typeof PrivacyRoute
144
+ '/profile': typeof ProfileRoute
145
+ '/reset-password': typeof ResetPasswordRoute
146
+ '/saved': typeof SavedRoute
147
+ '/search': typeof SearchRoute
148
+ '/signup': typeof SignupRoute
149
+ '/sitemap.xml': typeof SitemapDotxmlRoute
150
+ '/terms': typeof TermsRoute
151
+ '/update-password': typeof UpdatePasswordRoute
152
+ '/admin/login': typeof AdminLoginRoute
153
+ '/category/$slug': typeof CategorySlugRoute
154
+ '/product/$id': typeof ProductIdRoute
155
+ }
156
+ export interface FileRoutesByTo {
157
+ '/': typeof IndexRoute
158
+ '/about': typeof AboutRoute
159
+ '/admin': typeof AdminRouteWithChildren
160
+ '/affiliate-disclosure': typeof AffiliateDisclosureRoute
161
+ '/categories': typeof CategoriesRoute
162
+ '/contact': typeof ContactRoute
163
+ '/faq': typeof FaqRoute
164
+ '/login': typeof LoginRoute
165
+ '/privacy': typeof PrivacyRoute
166
+ '/profile': typeof ProfileRoute
167
+ '/reset-password': typeof ResetPasswordRoute
168
+ '/saved': typeof SavedRoute
169
+ '/search': typeof SearchRoute
170
+ '/signup': typeof SignupRoute
171
+ '/sitemap.xml': typeof SitemapDotxmlRoute
172
+ '/terms': typeof TermsRoute
173
+ '/update-password': typeof UpdatePasswordRoute
174
+ '/admin/login': typeof AdminLoginRoute
175
+ '/category/$slug': typeof CategorySlugRoute
176
+ '/product/$id': typeof ProductIdRoute
177
+ }
178
+ export interface FileRoutesById {
179
+ __root__: typeof rootRouteImport
180
+ '/': typeof IndexRoute
181
+ '/about': typeof AboutRoute
182
+ '/admin': typeof AdminRouteWithChildren
183
+ '/affiliate-disclosure': typeof AffiliateDisclosureRoute
184
+ '/categories': typeof CategoriesRoute
185
+ '/contact': typeof ContactRoute
186
+ '/faq': typeof FaqRoute
187
+ '/login': typeof LoginRoute
188
+ '/privacy': typeof PrivacyRoute
189
+ '/profile': typeof ProfileRoute
190
+ '/reset-password': typeof ResetPasswordRoute
191
+ '/saved': typeof SavedRoute
192
+ '/search': typeof SearchRoute
193
+ '/signup': typeof SignupRoute
194
+ '/sitemap.xml': typeof SitemapDotxmlRoute
195
+ '/terms': typeof TermsRoute
196
+ '/update-password': typeof UpdatePasswordRoute
197
+ '/admin/login': typeof AdminLoginRoute
198
+ '/category/$slug': typeof CategorySlugRoute
199
+ '/product/$id': typeof ProductIdRoute
200
+ }
201
+ export interface FileRouteTypes {
202
+ fileRoutesByFullPath: FileRoutesByFullPath
203
+ fullPaths:
204
+ | '/'
205
+ | '/about'
206
+ | '/admin'
207
+ | '/affiliate-disclosure'
208
+ | '/categories'
209
+ | '/contact'
210
+ | '/faq'
211
+ | '/login'
212
+ | '/privacy'
213
+ | '/profile'
214
+ | '/reset-password'
215
+ | '/saved'
216
+ | '/search'
217
+ | '/signup'
218
+ | '/sitemap.xml'
219
+ | '/terms'
220
+ | '/update-password'
221
+ | '/admin/login'
222
+ | '/category/$slug'
223
+ | '/product/$id'
224
+ fileRoutesByTo: FileRoutesByTo
225
+ to:
226
+ | '/'
227
+ | '/about'
228
+ | '/admin'
229
+ | '/affiliate-disclosure'
230
+ | '/categories'
231
+ | '/contact'
232
+ | '/faq'
233
+ | '/login'
234
+ | '/privacy'
235
+ | '/profile'
236
+ | '/reset-password'
237
+ | '/saved'
238
+ | '/search'
239
+ | '/signup'
240
+ | '/sitemap.xml'
241
+ | '/terms'
242
+ | '/update-password'
243
+ | '/admin/login'
244
+ | '/category/$slug'
245
+ | '/product/$id'
246
+ id:
247
+ | '__root__'
248
+ | '/'
249
+ | '/about'
250
+ | '/admin'
251
+ | '/affiliate-disclosure'
252
+ | '/categories'
253
+ | '/contact'
254
+ | '/faq'
255
+ | '/login'
256
+ | '/privacy'
257
+ | '/profile'
258
+ | '/reset-password'
259
+ | '/saved'
260
+ | '/search'
261
+ | '/signup'
262
+ | '/sitemap.xml'
263
+ | '/terms'
264
+ | '/update-password'
265
+ | '/admin/login'
266
+ | '/category/$slug'
267
+ | '/product/$id'
268
+ fileRoutesById: FileRoutesById
269
+ }
270
+ export interface RootRouteChildren {
271
+ IndexRoute: typeof IndexRoute
272
+ AboutRoute: typeof AboutRoute
273
+ AdminRoute: typeof AdminRouteWithChildren
274
+ AffiliateDisclosureRoute: typeof AffiliateDisclosureRoute
275
+ CategoriesRoute: typeof CategoriesRoute
276
+ ContactRoute: typeof ContactRoute
277
+ FaqRoute: typeof FaqRoute
278
+ LoginRoute: typeof LoginRoute
279
+ PrivacyRoute: typeof PrivacyRoute
280
+ ProfileRoute: typeof ProfileRoute
281
+ ResetPasswordRoute: typeof ResetPasswordRoute
282
+ SavedRoute: typeof SavedRoute
283
+ SearchRoute: typeof SearchRoute
284
+ SignupRoute: typeof SignupRoute
285
+ SitemapDotxmlRoute: typeof SitemapDotxmlRoute
286
+ TermsRoute: typeof TermsRoute
287
+ UpdatePasswordRoute: typeof UpdatePasswordRoute
288
+ CategorySlugRoute: typeof CategorySlugRoute
289
+ ProductIdRoute: typeof ProductIdRoute
290
+ }
291
+
292
+ declare module '@tanstack/react-router' {
293
+ interface FileRoutesByPath {
294
+ '/update-password': {
295
+ id: '/update-password'
296
+ path: '/update-password'
297
+ fullPath: '/update-password'
298
+ preLoaderRoute: typeof UpdatePasswordRouteImport
299
+ parentRoute: typeof rootRouteImport
300
+ }
301
+ '/terms': {
302
+ id: '/terms'
303
+ path: '/terms'
304
+ fullPath: '/terms'
305
+ preLoaderRoute: typeof TermsRouteImport
306
+ parentRoute: typeof rootRouteImport
307
+ }
308
+ '/sitemap.xml': {
309
+ id: '/sitemap.xml'
310
+ path: '/sitemap.xml'
311
+ fullPath: '/sitemap.xml'
312
+ preLoaderRoute: typeof SitemapDotxmlRouteImport
313
+ parentRoute: typeof rootRouteImport
314
+ }
315
+ '/signup': {
316
+ id: '/signup'
317
+ path: '/signup'
318
+ fullPath: '/signup'
319
+ preLoaderRoute: typeof SignupRouteImport
320
+ parentRoute: typeof rootRouteImport
321
+ }
322
+ '/search': {
323
+ id: '/search'
324
+ path: '/search'
325
+ fullPath: '/search'
326
+ preLoaderRoute: typeof SearchRouteImport
327
+ parentRoute: typeof rootRouteImport
328
+ }
329
+ '/saved': {
330
+ id: '/saved'
331
+ path: '/saved'
332
+ fullPath: '/saved'
333
+ preLoaderRoute: typeof SavedRouteImport
334
+ parentRoute: typeof rootRouteImport
335
+ }
336
+ '/reset-password': {
337
+ id: '/reset-password'
338
+ path: '/reset-password'
339
+ fullPath: '/reset-password'
340
+ preLoaderRoute: typeof ResetPasswordRouteImport
341
+ parentRoute: typeof rootRouteImport
342
+ }
343
+ '/profile': {
344
+ id: '/profile'
345
+ path: '/profile'
346
+ fullPath: '/profile'
347
+ preLoaderRoute: typeof ProfileRouteImport
348
+ parentRoute: typeof rootRouteImport
349
+ }
350
+ '/privacy': {
351
+ id: '/privacy'
352
+ path: '/privacy'
353
+ fullPath: '/privacy'
354
+ preLoaderRoute: typeof PrivacyRouteImport
355
+ parentRoute: typeof rootRouteImport
356
+ }
357
+ '/login': {
358
+ id: '/login'
359
+ path: '/login'
360
+ fullPath: '/login'
361
+ preLoaderRoute: typeof LoginRouteImport
362
+ parentRoute: typeof rootRouteImport
363
+ }
364
+ '/faq': {
365
+ id: '/faq'
366
+ path: '/faq'
367
+ fullPath: '/faq'
368
+ preLoaderRoute: typeof FaqRouteImport
369
+ parentRoute: typeof rootRouteImport
370
+ }
371
+ '/contact': {
372
+ id: '/contact'
373
+ path: '/contact'
374
+ fullPath: '/contact'
375
+ preLoaderRoute: typeof ContactRouteImport
376
+ parentRoute: typeof rootRouteImport
377
+ }
378
+ '/categories': {
379
+ id: '/categories'
380
+ path: '/categories'
381
+ fullPath: '/categories'
382
+ preLoaderRoute: typeof CategoriesRouteImport
383
+ parentRoute: typeof rootRouteImport
384
+ }
385
+ '/affiliate-disclosure': {
386
+ id: '/affiliate-disclosure'
387
+ path: '/affiliate-disclosure'
388
+ fullPath: '/affiliate-disclosure'
389
+ preLoaderRoute: typeof AffiliateDisclosureRouteImport
390
+ parentRoute: typeof rootRouteImport
391
+ }
392
+ '/admin': {
393
+ id: '/admin'
394
+ path: '/admin'
395
+ fullPath: '/admin'
396
+ preLoaderRoute: typeof AdminRouteImport
397
+ parentRoute: typeof rootRouteImport
398
+ }
399
+ '/about': {
400
+ id: '/about'
401
+ path: '/about'
402
+ fullPath: '/about'
403
+ preLoaderRoute: typeof AboutRouteImport
404
+ parentRoute: typeof rootRouteImport
405
+ }
406
+ '/': {
407
+ id: '/'
408
+ path: '/'
409
+ fullPath: '/'
410
+ preLoaderRoute: typeof IndexRouteImport
411
+ parentRoute: typeof rootRouteImport
412
+ }
413
+ '/product/$id': {
414
+ id: '/product/$id'
415
+ path: '/product/$id'
416
+ fullPath: '/product/$id'
417
+ preLoaderRoute: typeof ProductIdRouteImport
418
+ parentRoute: typeof rootRouteImport
419
+ }
420
+ '/category/$slug': {
421
+ id: '/category/$slug'
422
+ path: '/category/$slug'
423
+ fullPath: '/category/$slug'
424
+ preLoaderRoute: typeof CategorySlugRouteImport
425
+ parentRoute: typeof rootRouteImport
426
+ }
427
+ '/admin/login': {
428
+ id: '/admin/login'
429
+ path: '/login'
430
+ fullPath: '/admin/login'
431
+ preLoaderRoute: typeof AdminLoginRouteImport
432
+ parentRoute: typeof AdminRoute
433
+ }
434
+ }
435
+ }
436
+
437
+ interface AdminRouteChildren {
438
+ AdminLoginRoute: typeof AdminLoginRoute
439
+ }
440
+
441
+ const AdminRouteChildren: AdminRouteChildren = {
442
+ AdminLoginRoute: AdminLoginRoute,
443
+ }
444
+
445
+ const AdminRouteWithChildren = AdminRoute._addFileChildren(AdminRouteChildren)
446
+
447
+ const rootRouteChildren: RootRouteChildren = {
448
+ IndexRoute: IndexRoute,
449
+ AboutRoute: AboutRoute,
450
+ AdminRoute: AdminRouteWithChildren,
451
+ AffiliateDisclosureRoute: AffiliateDisclosureRoute,
452
+ CategoriesRoute: CategoriesRoute,
453
+ ContactRoute: ContactRoute,
454
+ FaqRoute: FaqRoute,
455
+ LoginRoute: LoginRoute,
456
+ PrivacyRoute: PrivacyRoute,
457
+ ProfileRoute: ProfileRoute,
458
+ ResetPasswordRoute: ResetPasswordRoute,
459
+ SavedRoute: SavedRoute,
460
+ SearchRoute: SearchRoute,
461
+ SignupRoute: SignupRoute,
462
+ SitemapDotxmlRoute: SitemapDotxmlRoute,
463
+ TermsRoute: TermsRoute,
464
+ UpdatePasswordRoute: UpdatePasswordRoute,
465
+ CategorySlugRoute: CategorySlugRoute,
466
+ ProductIdRoute: ProductIdRoute,
467
+ }
468
+ export const routeTree = rootRouteImport
469
+ ._addFileChildren(rootRouteChildren)
470
+ ._addFileTypes<FileRouteTypes>()
471
+
472
+ import type { getRouter } from './router.tsx'
473
+ import type { startInstance } from './start.ts'
474
+ declare module '@tanstack/react-start' {
475
+ interface Register {
476
+ ssr: true
477
+ router: Awaited<ReturnType<typeof getRouter>>
478
+ config: Awaited<ReturnType<typeof startInstance.getOptions>>
479
+ }
480
+ }
package/src/router.tsx ADDED
@@ -0,0 +1,16 @@
1
+ import { QueryClient } from "@tanstack/react-query";
2
+ import { createRouter } from "@tanstack/react-router";
3
+ import { routeTree } from "./routeTree.gen";
4
+
5
+ export const getRouter = () => {
6
+ const queryClient = new QueryClient();
7
+
8
+ const router = createRouter({
9
+ routeTree,
10
+ context: { queryClient },
11
+ scrollRestoration: true,
12
+ defaultPreloadStaleTime: 0,
13
+ });
14
+
15
+ return router;
16
+ };