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,406 @@
1
+ import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-DvBrY0qp.js";
2
+ import { c as composeEventHandlers } from "./vendor-radix-ui-primitive-B-mNdDrH.js";
3
+ import { c as composeRefs, u as useComposedRefs } from "./vendor-radix-ui-react-compose-refs-D3qsKVk1.js";
4
+ import { a as createContextScope, c as createContext2 } from "./vendor-radix-ui-react-context-BVoNDLue.js";
5
+ import { u as useId } from "./vendor-radix-ui-react-id-DFFpgh6m.js";
6
+ import { u as useControllableState } from "./vendor-radix-ui-react-use-controllable-state-C9KpT6DG.js";
7
+ import { D as DismissableLayer } from "./vendor-radix-ui-react-dismissable-layer-CjsuPohV.js";
8
+ import { F as FocusScope } from "./vendor-radix-ui-react-focus-scope-DEIhTJJH.js";
9
+ import { P as Portal$1 } from "./vendor-radix-ui-react-portal-CZCH5uPk.js";
10
+ import { P as Presence } from "./vendor-radix-ui-react-presence-CaAULlDU.js";
11
+ import { P as Primitive } from "./vendor-radix-ui-react-primitive-BeOk3UYa.js";
12
+ import { u as useFocusGuards } from "./vendor-radix-ui-react-focus-guards-D_6NoePE.js";
13
+ import { R as ReactRemoveScroll } from "./vendor-react-remove-scroll-BNtiEvVN.js";
14
+ import { h as hideOthers } from "./vendor-aria-hidden-DPa16MWu.js";
15
+ // @__NO_SIDE_EFFECTS__
16
+ function createSlot(ownerName) {
17
+ const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
18
+ const Slot2 = reactExports.forwardRef((props, forwardedRef) => {
19
+ const { children, ...slotProps } = props;
20
+ const childrenArray = reactExports.Children.toArray(children);
21
+ const slottable = childrenArray.find(isSlottable);
22
+ if (slottable) {
23
+ const newElement = slottable.props.children;
24
+ const newChildren = childrenArray.map((child) => {
25
+ if (child === slottable) {
26
+ if (reactExports.Children.count(newElement) > 1) return reactExports.Children.only(null);
27
+ return reactExports.isValidElement(newElement) ? newElement.props.children : null;
28
+ } else {
29
+ return child;
30
+ }
31
+ });
32
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: reactExports.isValidElement(newElement) ? reactExports.cloneElement(newElement, void 0, newChildren) : null });
33
+ }
34
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
35
+ });
36
+ Slot2.displayName = `${ownerName}.Slot`;
37
+ return Slot2;
38
+ }
39
+ // @__NO_SIDE_EFFECTS__
40
+ function createSlotClone(ownerName) {
41
+ const SlotClone = reactExports.forwardRef((props, forwardedRef) => {
42
+ const { children, ...slotProps } = props;
43
+ if (reactExports.isValidElement(children)) {
44
+ const childrenRef = getElementRef(children);
45
+ const props2 = mergeProps(slotProps, children.props);
46
+ if (children.type !== reactExports.Fragment) {
47
+ props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
48
+ }
49
+ return reactExports.cloneElement(children, props2);
50
+ }
51
+ return reactExports.Children.count(children) > 1 ? reactExports.Children.only(null) : null;
52
+ });
53
+ SlotClone.displayName = `${ownerName}.SlotClone`;
54
+ return SlotClone;
55
+ }
56
+ var SLOTTABLE_IDENTIFIER = /* @__PURE__ */ Symbol("radix.slottable");
57
+ function isSlottable(child) {
58
+ return reactExports.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
59
+ }
60
+ function mergeProps(slotProps, childProps) {
61
+ const overrideProps = { ...childProps };
62
+ for (const propName in childProps) {
63
+ const slotPropValue = slotProps[propName];
64
+ const childPropValue = childProps[propName];
65
+ const isHandler = /^on[A-Z]/.test(propName);
66
+ if (isHandler) {
67
+ if (slotPropValue && childPropValue) {
68
+ overrideProps[propName] = (...args) => {
69
+ const result = childPropValue(...args);
70
+ slotPropValue(...args);
71
+ return result;
72
+ };
73
+ } else if (slotPropValue) {
74
+ overrideProps[propName] = slotPropValue;
75
+ }
76
+ } else if (propName === "style") {
77
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
78
+ } else if (propName === "className") {
79
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
80
+ }
81
+ }
82
+ return { ...slotProps, ...overrideProps };
83
+ }
84
+ function getElementRef(element) {
85
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
86
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
87
+ if (mayWarn) {
88
+ return element.ref;
89
+ }
90
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
91
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
92
+ if (mayWarn) {
93
+ return element.props.ref;
94
+ }
95
+ return element.props.ref || element.ref;
96
+ }
97
+ var DIALOG_NAME = "Dialog";
98
+ var [createDialogContext] = createContextScope(DIALOG_NAME);
99
+ var [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);
100
+ var Dialog = (props) => {
101
+ const {
102
+ __scopeDialog,
103
+ children,
104
+ open: openProp,
105
+ defaultOpen,
106
+ onOpenChange,
107
+ modal = true
108
+ } = props;
109
+ const triggerRef = reactExports.useRef(null);
110
+ const contentRef = reactExports.useRef(null);
111
+ const [open, setOpen] = useControllableState({
112
+ prop: openProp,
113
+ defaultProp: defaultOpen ?? false,
114
+ onChange: onOpenChange,
115
+ caller: DIALOG_NAME
116
+ });
117
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
118
+ DialogProvider,
119
+ {
120
+ scope: __scopeDialog,
121
+ triggerRef,
122
+ contentRef,
123
+ contentId: useId(),
124
+ titleId: useId(),
125
+ descriptionId: useId(),
126
+ open,
127
+ onOpenChange: setOpen,
128
+ onOpenToggle: reactExports.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
129
+ modal,
130
+ children
131
+ }
132
+ );
133
+ };
134
+ Dialog.displayName = DIALOG_NAME;
135
+ var TRIGGER_NAME = "DialogTrigger";
136
+ var DialogTrigger = reactExports.forwardRef(
137
+ (props, forwardedRef) => {
138
+ const { __scopeDialog, ...triggerProps } = props;
139
+ const context = useDialogContext(TRIGGER_NAME, __scopeDialog);
140
+ const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);
141
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
142
+ Primitive.button,
143
+ {
144
+ type: "button",
145
+ "aria-haspopup": "dialog",
146
+ "aria-expanded": context.open,
147
+ "aria-controls": context.contentId,
148
+ "data-state": getState(context.open),
149
+ ...triggerProps,
150
+ ref: composedTriggerRef,
151
+ onClick: composeEventHandlers(props.onClick, context.onOpenToggle)
152
+ }
153
+ );
154
+ }
155
+ );
156
+ DialogTrigger.displayName = TRIGGER_NAME;
157
+ var PORTAL_NAME = "DialogPortal";
158
+ var [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {
159
+ forceMount: void 0
160
+ });
161
+ var DialogPortal = (props) => {
162
+ const { __scopeDialog, forceMount, children, container } = props;
163
+ const context = useDialogContext(PORTAL_NAME, __scopeDialog);
164
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$1, { asChild: true, container, children: child }) })) });
165
+ };
166
+ DialogPortal.displayName = PORTAL_NAME;
167
+ var OVERLAY_NAME = "DialogOverlay";
168
+ var DialogOverlay = reactExports.forwardRef(
169
+ (props, forwardedRef) => {
170
+ const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);
171
+ const { forceMount = portalContext.forceMount, ...overlayProps } = props;
172
+ const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);
173
+ return context.modal ? /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;
174
+ }
175
+ );
176
+ DialogOverlay.displayName = OVERLAY_NAME;
177
+ var Slot = /* @__PURE__ */ createSlot("DialogOverlay.RemoveScroll");
178
+ var DialogOverlayImpl = reactExports.forwardRef(
179
+ (props, forwardedRef) => {
180
+ const { __scopeDialog, ...overlayProps } = props;
181
+ const context = useDialogContext(OVERLAY_NAME, __scopeDialog);
182
+ return (
183
+ // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`
184
+ // ie. when `Overlay` and `Content` are siblings
185
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ReactRemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsxRuntimeExports.jsx(
186
+ Primitive.div,
187
+ {
188
+ "data-state": getState(context.open),
189
+ ...overlayProps,
190
+ ref: forwardedRef,
191
+ style: { pointerEvents: "auto", ...overlayProps.style }
192
+ }
193
+ ) })
194
+ );
195
+ }
196
+ );
197
+ var CONTENT_NAME = "DialogContent";
198
+ var DialogContent = reactExports.forwardRef(
199
+ (props, forwardedRef) => {
200
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);
201
+ const { forceMount = portalContext.forceMount, ...contentProps } = props;
202
+ const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
203
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });
204
+ }
205
+ );
206
+ DialogContent.displayName = CONTENT_NAME;
207
+ var DialogContentModal = reactExports.forwardRef(
208
+ (props, forwardedRef) => {
209
+ const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
210
+ const contentRef = reactExports.useRef(null);
211
+ const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);
212
+ reactExports.useEffect(() => {
213
+ const content = contentRef.current;
214
+ if (content) return hideOthers(content);
215
+ }, []);
216
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
217
+ DialogContentImpl,
218
+ {
219
+ ...props,
220
+ ref: composedRefs,
221
+ trapFocus: context.open,
222
+ disableOutsidePointerEvents: true,
223
+ onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {
224
+ event.preventDefault();
225
+ context.triggerRef.current?.focus();
226
+ }),
227
+ onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {
228
+ const originalEvent = event.detail.originalEvent;
229
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
230
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
231
+ if (isRightClick) event.preventDefault();
232
+ }),
233
+ onFocusOutside: composeEventHandlers(
234
+ props.onFocusOutside,
235
+ (event) => event.preventDefault()
236
+ )
237
+ }
238
+ );
239
+ }
240
+ );
241
+ var DialogContentNonModal = reactExports.forwardRef(
242
+ (props, forwardedRef) => {
243
+ const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
244
+ const hasInteractedOutsideRef = reactExports.useRef(false);
245
+ const hasPointerDownOutsideRef = reactExports.useRef(false);
246
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
247
+ DialogContentImpl,
248
+ {
249
+ ...props,
250
+ ref: forwardedRef,
251
+ trapFocus: false,
252
+ disableOutsidePointerEvents: false,
253
+ onCloseAutoFocus: (event) => {
254
+ props.onCloseAutoFocus?.(event);
255
+ if (!event.defaultPrevented) {
256
+ if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();
257
+ event.preventDefault();
258
+ }
259
+ hasInteractedOutsideRef.current = false;
260
+ hasPointerDownOutsideRef.current = false;
261
+ },
262
+ onInteractOutside: (event) => {
263
+ props.onInteractOutside?.(event);
264
+ if (!event.defaultPrevented) {
265
+ hasInteractedOutsideRef.current = true;
266
+ if (event.detail.originalEvent.type === "pointerdown") {
267
+ hasPointerDownOutsideRef.current = true;
268
+ }
269
+ }
270
+ const target = event.target;
271
+ const targetIsTrigger = context.triggerRef.current?.contains(target);
272
+ if (targetIsTrigger) event.preventDefault();
273
+ if (event.detail.originalEvent.type === "focusin" && hasPointerDownOutsideRef.current) {
274
+ event.preventDefault();
275
+ }
276
+ }
277
+ }
278
+ );
279
+ }
280
+ );
281
+ var DialogContentImpl = reactExports.forwardRef(
282
+ (props, forwardedRef) => {
283
+ const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;
284
+ const context = useDialogContext(CONTENT_NAME, __scopeDialog);
285
+ const contentRef = reactExports.useRef(null);
286
+ const composedRefs = useComposedRefs(forwardedRef, contentRef);
287
+ useFocusGuards();
288
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
289
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
290
+ FocusScope,
291
+ {
292
+ asChild: true,
293
+ loop: true,
294
+ trapped: trapFocus,
295
+ onMountAutoFocus: onOpenAutoFocus,
296
+ onUnmountAutoFocus: onCloseAutoFocus,
297
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
298
+ DismissableLayer,
299
+ {
300
+ role: "dialog",
301
+ id: context.contentId,
302
+ "aria-describedby": context.descriptionId,
303
+ "aria-labelledby": context.titleId,
304
+ "data-state": getState(context.open),
305
+ ...contentProps,
306
+ ref: composedRefs,
307
+ onDismiss: () => context.onOpenChange(false)
308
+ }
309
+ )
310
+ }
311
+ ),
312
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
313
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleWarning, { titleId: context.titleId }),
314
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })
315
+ ] })
316
+ ] });
317
+ }
318
+ );
319
+ var TITLE_NAME = "DialogTitle";
320
+ var DialogTitle = reactExports.forwardRef(
321
+ (props, forwardedRef) => {
322
+ const { __scopeDialog, ...titleProps } = props;
323
+ const context = useDialogContext(TITLE_NAME, __scopeDialog);
324
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });
325
+ }
326
+ );
327
+ DialogTitle.displayName = TITLE_NAME;
328
+ var DESCRIPTION_NAME = "DialogDescription";
329
+ var DialogDescription = reactExports.forwardRef(
330
+ (props, forwardedRef) => {
331
+ const { __scopeDialog, ...descriptionProps } = props;
332
+ const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);
333
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });
334
+ }
335
+ );
336
+ DialogDescription.displayName = DESCRIPTION_NAME;
337
+ var CLOSE_NAME = "DialogClose";
338
+ var DialogClose = reactExports.forwardRef(
339
+ (props, forwardedRef) => {
340
+ const { __scopeDialog, ...closeProps } = props;
341
+ const context = useDialogContext(CLOSE_NAME, __scopeDialog);
342
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
343
+ Primitive.button,
344
+ {
345
+ type: "button",
346
+ ...closeProps,
347
+ ref: forwardedRef,
348
+ onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))
349
+ }
350
+ );
351
+ }
352
+ );
353
+ DialogClose.displayName = CLOSE_NAME;
354
+ function getState(open) {
355
+ return open ? "open" : "closed";
356
+ }
357
+ var TITLE_WARNING_NAME = "DialogTitleWarning";
358
+ var [WarningProvider, useWarningContext] = createContext2(TITLE_WARNING_NAME, {
359
+ contentName: CONTENT_NAME,
360
+ titleName: TITLE_NAME,
361
+ docsSlug: "dialog"
362
+ });
363
+ var TitleWarning = ({ titleId }) => {
364
+ const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);
365
+ const MESSAGE = `\`${titleWarningContext.contentName}\` requires a \`${titleWarningContext.titleName}\` for the component to be accessible for screen reader users.
366
+
367
+ If you want to hide the \`${titleWarningContext.titleName}\`, you can wrap it with our VisuallyHidden component.
368
+
369
+ For more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;
370
+ reactExports.useEffect(() => {
371
+ if (titleId) {
372
+ const hasTitle = document.getElementById(titleId);
373
+ if (!hasTitle) console.error(MESSAGE);
374
+ }
375
+ }, [MESSAGE, titleId]);
376
+ return null;
377
+ };
378
+ var DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning";
379
+ var DescriptionWarning = ({ contentRef, descriptionId }) => {
380
+ const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);
381
+ const MESSAGE = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${descriptionWarningContext.contentName}}.`;
382
+ reactExports.useEffect(() => {
383
+ const describedById = contentRef.current?.getAttribute("aria-describedby");
384
+ if (descriptionId && describedById) {
385
+ const hasDescription = document.getElementById(descriptionId);
386
+ if (!hasDescription) console.warn(MESSAGE);
387
+ }
388
+ }, [MESSAGE, contentRef, descriptionId]);
389
+ return null;
390
+ };
391
+ var Root = Dialog;
392
+ var Portal = DialogPortal;
393
+ var Overlay = DialogOverlay;
394
+ var Content = DialogContent;
395
+ var Title = DialogTitle;
396
+ var Description = DialogDescription;
397
+ var Close = DialogClose;
398
+ export {
399
+ Close as C,
400
+ Description as D,
401
+ Overlay as O,
402
+ Portal as P,
403
+ Root as R,
404
+ Title as T,
405
+ Content as a
406
+ };
@@ -0,0 +1,9 @@
1
+ import { r as reactExports } from "./vendor-react-DvBrY0qp.js";
2
+ var DirectionContext = reactExports.createContext(void 0);
3
+ function useDirection(localDir) {
4
+ const globalDir = reactExports.useContext(DirectionContext);
5
+ return localDir || globalDir || "ltr";
6
+ }
7
+ export {
8
+ useDirection as u
9
+ };
@@ -0,0 +1,210 @@
1
+ import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-DvBrY0qp.js";
2
+ import { c as composeEventHandlers } from "./vendor-radix-ui-primitive-B-mNdDrH.js";
3
+ import { P as Primitive, d as dispatchDiscreteCustomEvent } from "./vendor-radix-ui-react-primitive-BeOk3UYa.js";
4
+ import { u as useComposedRefs } from "./vendor-radix-ui-react-compose-refs-D3qsKVk1.js";
5
+ import { u as useCallbackRef } from "./vendor-radix-ui-react-use-callback-ref-BynBgohw.js";
6
+ import { u as useEscapeKeydown } from "./vendor-radix-ui-react-use-escape-keydown-CcYRQ2pp.js";
7
+ var DISMISSABLE_LAYER_NAME = "DismissableLayer";
8
+ var CONTEXT_UPDATE = "dismissableLayer.update";
9
+ var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
10
+ var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
11
+ var originalBodyPointerEvents;
12
+ var DismissableLayerContext = reactExports.createContext({
13
+ layers: /* @__PURE__ */ new Set(),
14
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
15
+ branches: /* @__PURE__ */ new Set()
16
+ });
17
+ var DismissableLayer = reactExports.forwardRef(
18
+ (props, forwardedRef) => {
19
+ const {
20
+ disableOutsidePointerEvents = false,
21
+ onEscapeKeyDown,
22
+ onPointerDownOutside,
23
+ onFocusOutside,
24
+ onInteractOutside,
25
+ onDismiss,
26
+ ...layerProps
27
+ } = props;
28
+ const context = reactExports.useContext(DismissableLayerContext);
29
+ const [node, setNode] = reactExports.useState(null);
30
+ const ownerDocument = node?.ownerDocument ?? globalThis?.document;
31
+ const [, force] = reactExports.useState({});
32
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
33
+ const layers = Array.from(context.layers);
34
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
35
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
36
+ const index = node ? layers.indexOf(node) : -1;
37
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
38
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
39
+ const pointerDownOutside = usePointerDownOutside((event) => {
40
+ const target = event.target;
41
+ const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
42
+ if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
43
+ onPointerDownOutside?.(event);
44
+ onInteractOutside?.(event);
45
+ if (!event.defaultPrevented) onDismiss?.();
46
+ }, ownerDocument);
47
+ const focusOutside = useFocusOutside((event) => {
48
+ const target = event.target;
49
+ const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
50
+ if (isFocusInBranch) return;
51
+ onFocusOutside?.(event);
52
+ onInteractOutside?.(event);
53
+ if (!event.defaultPrevented) onDismiss?.();
54
+ }, ownerDocument);
55
+ useEscapeKeydown((event) => {
56
+ const isHighestLayer = index === context.layers.size - 1;
57
+ if (!isHighestLayer) return;
58
+ onEscapeKeyDown?.(event);
59
+ if (!event.defaultPrevented && onDismiss) {
60
+ event.preventDefault();
61
+ onDismiss();
62
+ }
63
+ }, ownerDocument);
64
+ reactExports.useEffect(() => {
65
+ if (!node) return;
66
+ if (disableOutsidePointerEvents) {
67
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
68
+ originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
69
+ ownerDocument.body.style.pointerEvents = "none";
70
+ }
71
+ context.layersWithOutsidePointerEventsDisabled.add(node);
72
+ }
73
+ context.layers.add(node);
74
+ dispatchUpdate();
75
+ return () => {
76
+ if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
77
+ ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
78
+ }
79
+ };
80
+ }, [node, ownerDocument, disableOutsidePointerEvents, context]);
81
+ reactExports.useEffect(() => {
82
+ return () => {
83
+ if (!node) return;
84
+ context.layers.delete(node);
85
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
86
+ dispatchUpdate();
87
+ };
88
+ }, [node, context]);
89
+ reactExports.useEffect(() => {
90
+ const handleUpdate = () => force({});
91
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
92
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
93
+ }, []);
94
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
95
+ Primitive.div,
96
+ {
97
+ ...layerProps,
98
+ ref: composedRefs,
99
+ style: {
100
+ pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
101
+ ...props.style
102
+ },
103
+ onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
104
+ onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
105
+ onPointerDownCapture: composeEventHandlers(
106
+ props.onPointerDownCapture,
107
+ pointerDownOutside.onPointerDownCapture
108
+ )
109
+ }
110
+ );
111
+ }
112
+ );
113
+ DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
114
+ var BRANCH_NAME = "DismissableLayerBranch";
115
+ var DismissableLayerBranch = reactExports.forwardRef((props, forwardedRef) => {
116
+ const context = reactExports.useContext(DismissableLayerContext);
117
+ const ref = reactExports.useRef(null);
118
+ const composedRefs = useComposedRefs(forwardedRef, ref);
119
+ reactExports.useEffect(() => {
120
+ const node = ref.current;
121
+ if (node) {
122
+ context.branches.add(node);
123
+ return () => {
124
+ context.branches.delete(node);
125
+ };
126
+ }
127
+ }, [context.branches]);
128
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.div, { ...props, ref: composedRefs });
129
+ });
130
+ DismissableLayerBranch.displayName = BRANCH_NAME;
131
+ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
132
+ const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
133
+ const isPointerInsideReactTreeRef = reactExports.useRef(false);
134
+ const handleClickRef = reactExports.useRef(() => {
135
+ });
136
+ reactExports.useEffect(() => {
137
+ const handlePointerDown = (event) => {
138
+ if (event.target && !isPointerInsideReactTreeRef.current) {
139
+ let handleAndDispatchPointerDownOutsideEvent2 = function() {
140
+ handleAndDispatchCustomEvent(
141
+ POINTER_DOWN_OUTSIDE,
142
+ handlePointerDownOutside,
143
+ eventDetail,
144
+ { discrete: true }
145
+ );
146
+ };
147
+ const eventDetail = { originalEvent: event };
148
+ if (event.pointerType === "touch") {
149
+ ownerDocument.removeEventListener("click", handleClickRef.current);
150
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
151
+ ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
152
+ } else {
153
+ handleAndDispatchPointerDownOutsideEvent2();
154
+ }
155
+ } else {
156
+ ownerDocument.removeEventListener("click", handleClickRef.current);
157
+ }
158
+ isPointerInsideReactTreeRef.current = false;
159
+ };
160
+ const timerId = window.setTimeout(() => {
161
+ ownerDocument.addEventListener("pointerdown", handlePointerDown);
162
+ }, 0);
163
+ return () => {
164
+ window.clearTimeout(timerId);
165
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown);
166
+ ownerDocument.removeEventListener("click", handleClickRef.current);
167
+ };
168
+ }, [ownerDocument, handlePointerDownOutside]);
169
+ return {
170
+ // ensures we check React component tree (not just DOM tree)
171
+ onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
172
+ };
173
+ }
174
+ function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
175
+ const handleFocusOutside = useCallbackRef(onFocusOutside);
176
+ const isFocusInsideReactTreeRef = reactExports.useRef(false);
177
+ reactExports.useEffect(() => {
178
+ const handleFocus = (event) => {
179
+ if (event.target && !isFocusInsideReactTreeRef.current) {
180
+ const eventDetail = { originalEvent: event };
181
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
182
+ discrete: false
183
+ });
184
+ }
185
+ };
186
+ ownerDocument.addEventListener("focusin", handleFocus);
187
+ return () => ownerDocument.removeEventListener("focusin", handleFocus);
188
+ }, [ownerDocument, handleFocusOutside]);
189
+ return {
190
+ onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
191
+ onBlurCapture: () => isFocusInsideReactTreeRef.current = false
192
+ };
193
+ }
194
+ function dispatchUpdate() {
195
+ const event = new CustomEvent(CONTEXT_UPDATE);
196
+ document.dispatchEvent(event);
197
+ }
198
+ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
199
+ const target = detail.originalEvent.target;
200
+ const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
201
+ if (handler) target.addEventListener(name, handler, { once: true });
202
+ if (discrete) {
203
+ dispatchDiscreteCustomEvent(target, event);
204
+ } else {
205
+ target.dispatchEvent(event);
206
+ }
207
+ }
208
+ export {
209
+ DismissableLayer as D
210
+ };