diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index 80d8f34..8f07c39 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,31 +1,31 @@ -tailtrails-logo.png,1779981120237,25213feab6216a1fca7c6c84eecd70e7183c867279c2ea28885d800ee4e21168 -robots.txt,1779981120236,6d6ba7a91379049f0c537dab9c6af1cf57bdabd056ee7923a4a0d917937b2678 -placeholder.svg,1779981120236,69548e0e084c5cf2efe962717e3855bc81e133a8a23895508b0673308246ff5a -index.html,1779981120291,7ad5d1dd9f5500daef6c2d9b3e9fbe41e2f43db0a87cca4964de9fda9ea535b4 -hero.mp4,1779981120222,b8107714858fdcb7f31cd4b9ff2da143d7b85ef09d21d4905133f3a58851604f -app_store_button.svg,1779981120140,898762c1c4511688925b4494df0f0164358d104e7bcffe1a0f860a3755e12e4a -IMG_2725.PNG,1779981120139,fb5ee86caf2de96735d9a723724572cb681720c82c28afbab47fa485ddfd6b6f -IMG_2724.PNG,1779981120138,d2daf949d118406283c8a1572f3fef93360a027d562655c09469a5aec2db828d -IMG_2722.PNG,1779981120138,751b407a25e5ca29147a8b9c0a79e9ce3708059440819ba7b71b723ac42f2de4 -IMG_2721.PNG,1779981120137,f122766aa4f43089ea7aaff9781d6aa198abf1fc4ead95ab3c50b5edaabcf963 -CNAME,1779981120326,e4a11dde197a450444c324a92a2c539b37517bd75052195e5a810fbc66c0c762 -404.html,1779981120329,7ad5d1dd9f5500daef6c2d9b3e9fbe41e2f43db0a87cca4964de9fda9ea535b4 -raw-blogs/walking-your-dog-in-the-algarve-hidden-dangers-every-owner-should-know.md,1779981120236,f23f15b0f2fd306bad91730dcf0bcb31bc263377985197e20ad646997ef7838e -raw-blogs/top-10-hikes-to-do-with-your-dog-in-lagos-and-the-algarve.md,1779981120236,4bbf52eb97adb7851b48c44e28444e3e9d48a1687255bdf88ab68b8c0985b8a7 -raw-blogs/the-importance-of-variety-in-your-dogs-life-and-how-to-do-it-right.md,1779981120236,51c814149946286c9934d899dc375666edea5bd6e361205d31d943ef59a5aacb -raw-blogs/off-leash-dog-rules-in-portugal-what-you-need-to-know-in-2026.md,1779981120236,244c337c4a3b0a6c93145993fb1d5c5a7ccc44ce99f24a6d16286ab2f4b3c7da -raw-blogs/how-to-give-a-reactive-dog-a-fulfilling-life-without-avoiding-the-world.md,1779981120236,065db19eb077716b5bb65f241089b877c774814eb41f4d71fd0223881df1fb4e -raw-blogs/how-to-choose-the-right-walk-for-your-dog-based-on-their-personality-and-needs.md,1779981120236,1a15afc0d69599e5096003db584115249db68d78d4e68d8ee643a2c013048f40 -raw-blogs/best-off-leash-areas-for-dogs-in-lagos-and-nearby.md,1779981120236,9c315b7e176b2bc162bf081ad4a46a4333ddc88901030ccdef856d55dcb9e655 -landing/sad-dog.avif,1779981120235,3b50e7a96d4351871fe2f350fcd3f5bdf30a53a010e3c9438addab72cd9c2225 -landing/happy-dog.avif,1779981120235,7360b2adf84a2061a598b83a2d3d3d090dbfef203e9d8c601c906e3fa8128237 -blog-images/troy-bridges-lbRNtUZPXXQ-unsplash.jpg,1779981120183,9a0d7eaa207291485b4a28496986b72be53fb01519c5fbcbe088c48b2c27db51 -blog-images/tatum-bergen-Vt3odrTM4cQ-unsplash.jpg,1779981120176,ef6ec8b86f80a54b40b90a1eae3be824754e7bd04e8acd4b6e67417781ecebb7 -blog-images/rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg,1779981120173,4f7307562e231a56a7de503d9fe51d9eb8ea5ce383e0a5abf34414956f5ae054 -blog-images/joe-caione-qO-PIF84Vxg-unsplash.jpg,1779981120169,2b8c3f8acf6af4a7b393a8519f18f1bd1b29dff8239af607483426e51e0199d6 -blog-images/jamie-street-m4BkRRprvP0-unsplash.jpg,1779981120163,e49aaeb7a75de79bd31bca28537b1f52f2c3ef42d43cb1962cb5253ca77b3588 -blog-images/eric-ward-ISg37AI2A-s-unsplash.jpg,1779981120157,730cc24eef3e5dd4416cea11cfd400959aab10484ff4858dc664f8bc377e7675 -blog-images/dagmar-klauzova-afBc-k2luH4-unsplash.jpg,1779981120154,4f6adbc259fd2710b1626c2d6caf2eebfbd4f80af8bde6560cdd0ead7ed95128 -blog-images/afra-ramio-cp2HCVzguw4-unsplash.jpg,1779981120146,b18fdc3760ba9137773cd144dea1f0f7d79565f33ea0c6a123cb0646d954f1c6 -assets/index-Bp_UvqRF.css,1779981120291,7d1d66e5f82b558a737c3aaa1b758e33a6271e174701a91ff4d8a1ce82d969d6 -assets/index-BYX2M-TQ.js,1779981120291,1fcf5dbf9296f9455d29976c57a0cf262e28f7638c55b89c7b81d48d9efd7d2b +robots.txt,1784118671967,a9f80ec8139f358ccf245372fb028866625a4b0d19f44b3aadaeaa0ed1ff8e75 +tailtrails-logo.png,1784118671969,dc932ef86246fbf78221ba9128af50a6845890fcbf82101e83c67171d8c520c9 +placeholder.svg,1784118671967,e6d62457feaa2cf22a140b4ffae6cc1ec264e50991e369d61f901a3481f9229d +index.html,1784118672031,3f11e47bff0a3720e2fb7f2221aa6d43e049fdd4d4173f8682f6b892be9e1df3 +app_store_button.svg,1784118671868,e163505e4516a4dad35281dc952f525f78907a21c49f95dba518a9d206ed45bf +CNAME,1784118672117,dddc5976b778c369189842b7a4c661fb3088f02ceea7dc8d26565f179cd44f95 +raw-blogs/walking-your-dog-in-the-algarve-hidden-dangers-every-owner-should-know.md,1784118671967,fba3a0a9b8e8aee35b3300f86363b84e37ac5ab64ab4c3788a3dede919f781e6 +raw-blogs/the-importance-of-variety-in-your-dogs-life-and-how-to-do-it-right.md,1784118671967,b9120edf84aab42cea63f9cec38c9c86652b3d9fd8b869fd4c84e871e74050d3 +raw-blogs/top-10-hikes-to-do-with-your-dog-in-lagos-and-the-algarve.md,1784118671967,92dbf46e2d921d9366bb4ccfa4508a03867cfc6abd4c76d7c9ea576c86c158c7 +raw-blogs/how-to-give-a-reactive-dog-a-fulfilling-life-without-avoiding-the-world.md,1784118671967,cfaf693a02ce30c4453339a13bb7b45333803864c3ce3d4f42c75ec4a00572f5 +raw-blogs/off-leash-dog-rules-in-portugal-what-you-need-to-know-in-2026.md,1784118671967,7fbfcbe9b9b6f21837b322073f049857ca09935e07e568d42425c9ff3b15dfaf +raw-blogs/how-to-choose-the-right-walk-for-your-dog-based-on-their-personality-and-needs.md,1784118671967,5c046464b0d04a334cd3c64b7571b2061d033ad3f3894dd0ff4065383e6ac41a +raw-blogs/best-off-leash-areas-for-dogs-in-lagos-and-nearby.md,1784118671967,ba2e88fa252fc3bb096466b16e0abf91578415abdd4662b81efb324f257affe8 +404.html,1784118672123,3f11e47bff0a3720e2fb7f2221aa6d43e049fdd4d4173f8682f6b892be9e1df3 +assets/index-C8wIY7Lv.css,1784118672030,b5fc631c83de590f9ec0d6959f97ef138ef3556849cbada3dc9c0cb02d5f1619 +landing/sad-dog.avif,1784118671966,0d8926a6e4d1ec1f42318c6ee351f17766d57ba0c222c155f0f499753c8a779e +landing/happy-dog.avif,1784118671966,71de609c9e5f4df9bab430649876c17de18696e808935691813da5e12cee8d6b +IMG_2725.PNG,1784118671862,27b6d2b3d3f0639b27edde4a6e4dafd7ff30361b12ed532eea83ea9ff52cc57b +assets/index-CCYERNNs.js,1784118672030,2b953d0955c6573dbd8656b0f8e6fa5b68bfe7d8c448e0045b25eb6bdf0632e1 +IMG_2722.PNG,1784118671856,5eb964eca487921be0a641ab01ef44a3a640bc33ee86ef8c78c47beb40c52212 +blog-images/troy-bridges-lbRNtUZPXXQ-unsplash.jpg,1784118671917,7cccb32745ffa54a51afdaf9b1ada36ecec8270ff64d57144f2e7936d3800b47 +IMG_2724.PNG,1784118671862,1a12277e84b449259e0553359d83de2506f3b85df4198c29d060549bbb5da1ba +blog-images/rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg,1784118671904,4b06dd88c4b9ee1bb93193f4efefaf5222b45156991d65237580552dbd53a498 +blog-images/eric-ward-ISg37AI2A-s-unsplash.jpg,1784118671883,3fe77db2192fcbb773ae6700e784f576d2880d23f3de87675cca7df69e1d62de +blog-images/jamie-street-m4BkRRprvP0-unsplash.jpg,1784118671894,102144b1e3ed572e2e614a7a30bad26d015306005d324e74a67f9391ac7b649d +blog-images/joe-caione-qO-PIF84Vxg-unsplash.jpg,1784118671898,a818800a0777643571a2ac506ab2721e55314c5cc0805d2792fdca20c1f567ef +blog-images/dagmar-klauzova-afBc-k2luH4-unsplash.jpg,1784118671881,a7ef47c2af03e7671ec94dded168d201559b5149c2cafe77b324cbc42f310ad5 +blog-images/afra-ramio-cp2HCVzguw4-unsplash.jpg,1784118671874,f5ba745a987168b658a9091041de9bc4ebdbc2e43a6f1f2574c543dc2ed4113c +blog-images/tatum-bergen-Vt3odrTM4cQ-unsplash.jpg,1784118671911,805d069b8cdaa4a18a655f10f6059cc54609c5f568d7c7ea374f19840776d044 +IMG_2721.PNG,1784118671856,80bf0292743b93e52e260ea32a347ba5189b6ebcdcf26307c9ec098546dd1b61 +hero.mp4,1784118671955,68cf98422d073512761ac7c4a0aa9b11e88b71381c1874422048a578c344af92 diff --git a/src/App.tsx b/src/App.tsx index ea31621..832f01e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,6 +5,7 @@ import NotFound from "./pages/NotFound"; import Waitlist from "./pages/Waitlist"; import RequestAccountDeletion from "./pages/RequestAccountDeletion"; import FinalizeAccountDeletion from "./pages/FinalizeAccountDeletion"; +import Download from "./pages/Download"; import BlogList from "./pages/BlogList"; import BlogPost from "./pages/BlogPost"; import CookieConsent from "./components/ui/CookieConsent"; @@ -21,6 +22,7 @@ const App = () => ( } /> } /> } /> + } /> } /> } /> {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} diff --git a/src/pages/Download.tsx b/src/pages/Download.tsx new file mode 100644 index 0000000..e6a13c5 --- /dev/null +++ b/src/pages/Download.tsx @@ -0,0 +1,32 @@ +import { useEffect } from "react"; + +const APP_STORE_URL = + "https://apps.apple.com/app/tailtrails-life-unleashed/id6758676111"; +const PLAY_STORE_URL = + "https://play.google.com/store/apps/details?id=com.tailtrailsclub.app"; +const FALLBACK_URL = "https://tailtrails.club"; + +const Download: React.FC = () => { + useEffect(() => { + const ua = navigator.userAgent || navigator.vendor || (window as any).opera; + if (/iPad|iPhone|iPod/.test(ua) && !(window as any).MSStream) { + window.location.replace(APP_STORE_URL); + } else if (/android/i.test(ua)) { + window.location.replace(PLAY_STORE_URL); + } else { + window.location.replace(FALLBACK_URL); + } + }, []); + + return ( +

+ Redirecting to the app store… If you are not redirected automatically,{" "} + + click here + + . +

+ ); +}; + +export default Download; \ No newline at end of file