mirror of
https://github.com/wasp-lang/open-saas.git
synced 2025-11-23 21:26:42 +01:00
Upgrade v0.14 (#232)
* Create schema.prisma * update admin pages * update app_diff * Update e2e-tests.yml * update docs & rename hook * Update schema.prisma * update app_diff * add discord auth and app_diff * update docs * Update template/app/src/auth/userSignupFields.ts Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com> * move landing page * update .env.vault * Update e2e-tests.yml --------- Co-authored-by: Martin Šošić <Martinsos@users.noreply.github.com>
This commit is contained in:
2
.github/workflows/e2e-tests.yml
vendored
2
.github/workflows/e2e-tests.yml
vendored
@@ -10,7 +10,7 @@ on:
|
||||
|
||||
env:
|
||||
WASP_TELEMETRY_DISABLE: 1
|
||||
WASP_VERSION: 0.13.2
|
||||
WASP_VERSION: 0.14.0-rc2
|
||||
|
||||
jobs:
|
||||
test:
|
||||
|
||||
@@ -7,20 +7,20 @@
|
||||
+#/--------------------------------------------------/
|
||||
+
|
||||
+# development
|
||||
+DOTENV_VAULT_DEVELOPMENT="Ct9rt25WCbbnLKtoBovU6UMg8h14tIi/ZZxEUiCnSE6ibVMql0vjl1nGbsY+wKaPwPnh/SHeGVDHzsST3lKMdIIOQH138ecpyB2xGlysaSDkJcHi/LwNx28pNdCCthtjdtVj5nOcZwixl2RHxoxReQB+xK+Bf2tG0UiDJD7r7CyQi+7V9NcukyDXgX87xWM/ULVvMVlEK7PSJKWx1FVjH1wj0U+/GCPHMJP+gbKTy6/NdNw92hecZvFI1cGD6ouR7pNtseSp6h8TYMQWP+Qs7fLM132tFOrWSCqkc2f3LsPeJJ6xhN0zGnbGyvU5w0L6k6mD0sWH0vhvORzoXFm9CS63raJBlAZ944FCFtJvZcSTyKsS8us0gqyNlhAE+jEnkSxH5xMOudst2YfQZthWl6u8TsELN55ZRRvEV/C9Rd9lDuqsBWX+gKKYdJzBg3dFEymQoIsUGoxVN5jFo04kxA0rtSV6YqqtOkH9yxOCyqFL8bydivfZbOuxOPvUkdwJbyr1HLDqdu5psyVK1RabNrEOKUwF7Al2+I12IesMS+/Fxtp8Uuhu2O5dI7lX8+6WYIuo02AREl8uIvgTktzxtMReXTR2WbN8Ht3MJYSuCjFLfugv//kun4sTgloiwCEk4a6fG36vK8pZSaGevhP8i5Cy6YfAxB5UWBrE/mbLRXvGlxyLHALOBkf9MkG8WvUGgrgaoRePH3RChql0B5rPpr0vNwAeIDZ5Q5EibQ79go2iqIYRklfQMJi5pUdbPhsNX5bLaCh7X1OmLfGfJuObImFVEbfC+MS+c0uh/Z3fIlEuTJpXRddmLjaDoNxcHRYFuOjLy30GV68oATPZbsXl7DUtqIh736VpM6p/0+rTMZEvmHO4CUoxV45lua+1gWfPjd9dBit3gZCKX/0tjz6DmhYwcfDPHdlvNYeeDL7CR3rvoKMkBSXZbeJvD0uHelVarIgnSWi+V5g6uxssWcO+8r+0hhiBpOyAGkZIcLtdXCuttoREJbN/WI/H8261wjarPWM6fgr1AfhWrn7elR1r1uUhTPNVdNi91RpofS3unTlHijUFnMm3PGRbIkhCCSDU4mUgxipP1HZMlX6x5uZ9LjsE3sKGCUF4CRDg9yTrLjg4FK3bNVSMrigSIszmy5cN7DOZkog4T91EwvNpY9eXRcE6FtDjyogzFV5XvuGBTjbq4SWK8tsKh3tvm7XUrnVy6Z2A0YnYyW52IJqvWUPb3dJ5rt8oqu1SQp3B5eFz/xLEF2i9mXQbGCQTS7RWhOuSJO+DPBWB0aibP6jlJLCtoFBEJXIfReVSy0hOvhWUzTvVdpVCU5P1++Oer/cKDu9AqtIDpX+/T1mMfGcsMfW4wSLOANVyN0+pZhbTg80OG4epeS1GazWZ9JsflIk8e1W5pZSoVrhzIHXjo70+eW/fbsJ04iahnbwzWVNVQwQxozF63eXJz3yplreNc1DAeBuXSwg3nr+kZthLXEyjZZ+HSO04WNi9iTlneUIMMFnK5TP1FbofNKhz3LauYQKN1FEiYr9nMOwxSwQLdQRrEZ64lt66Q+IuKT9ug1+ekPPnDgeaB9PZOo2XKbJ6p5e7Cci97IcuBgUCMRW/a89y5OQvMmXZe4DV7+7N5JOxFnkiNYr1RByINUC6gXIEl1I3jbju9VT25+KHHH9r0o7zRUIn/mazU9vW2XdyLn1sr+6Poog0RLP4G785n2kVsvPkAw1MWEGafRbt+xSUd0AGXvlC7pyVzOtiiIOjnNd3qrzYBiZq91WbmgxZ/PJdcUVkS7HFS/V3oKmwgBGU7HiNDJQIJm+Sq98yFLJ5EL6WbybHoyAHIR/hpzMF7PDJJHacAs5yZoTTkRNNhpnNcSCYLQXzxEyQc5qR7aoXtt0/0kBMosAwUjz4mtTv/rd/4pSAwln9P4qR8VOZIUVLQLhdd6c4B6aZLDRbO5gsvKCzM7mPYb2OhY4wxzvkmeTIh1vu+lfzXPoP2ho7NYtTtTudPiUo8aDacj1ZzeUATmjALGNHRumR2rTtMoXLdksWAgmJJo+DR0ePjo8hRl9saVWI25ERXXcnLd9kdkZFmNcgWrxPcRZ6pZELh4PdczmaFlEo28FYUbHUvxCLoptIXVe7zzXpT0arQ4zAbyiUz06diEw="
|
||||
+DOTENV_VAULT_DEVELOPMENT_VERSION=6
|
||||
+DOTENV_VAULT_DEVELOPMENT="LRhsNRwq6Qon4HWC4lzj4HI5161/euxRXqmX9H+dbd+Jy3tIexKrBUmXWisR7ib8YA4fGC3pgwWVcH70F/pdrHXCMTAvqwAp0+cc4Ov8x6q/R1Jsnqf3AC/3nuBs9Iw2K53iZQKZSNA6ey3uwXLF1qHnxBjodiDf6zRwU7wbWLQ5nUtKeRrggToRje/G4K6Rgk37S44TLTZrS2HbcfwIev0cnwwlldFaV/TJ0BuxslvmlpWXbD5jkagQ324bLNJmWwudcABrEofH9mSUCicDWfN/I8OlENxPf6Q9auqzhy1YBR2vjxT59Yt2I5WLaftXBJos0QNj1+ZUEx42YCBxm/SfZV7PM6IIHmjZCbHCTfQMsZOicbOzp3tn8bIGvOuJLJv6trriTygSn2SAiAmQlrsBlMJBt5JlKHWR3IkQXqP0VaS+B02CBCMgP3Vv3Cw9sUM5DbH+hc2BC34b6WwD+7kkfgflylrqiJS9sSZN2knbhTRYD6IWAd6XQnKtGHG27kG7pljU8weFylf9Jb+xsR+AWIXCqwrVRT9SB90ONkH250icjDTbHXVPpKHkRjXMS6yj+LbsoTIvLvnJThKx6skReVvlXJXawIWqK2MH4OQGrIcir8i7FjxtwF33hNIfQ8XRvGe7QMvZQg2vfR4HBVbwSpbF+EAqa0zuvZkYmY/HxXKePcIRwXHah3kMPyNyAzbAswXhVwZCFjZBqjVXsoiOopWqMtpS+S4fBlun7awelj6piM/EkKOPgJbKqRl/Otsw3dyqxz1q1JtNtu85B9xSPRyYFVUsKS10sIz6FXWocCLplPbXpaSyt74GR1CA9iXTlm2WqqAQyI+iMs8T22EitYsZXdsZsRrYA+ovG933a5jtk52exsA4P0FiTRFDArjNnpTSW5hs15MiXEinx5/xvonOLwWZBS8C38GsVQ57miKkCl/9ugBSZLAJjvWXZC1XakUlonJFAeJuVvnniHX2qwcsnxrkwSExeFHvNQJiFNF78/oXzkmZ8KRWE0BebB39U2kmEX62F2Np2EU8r7XSqMpQ0L9lQ9HR1UiOuFCvcZji3XTBHq4jcntF2Z7WcXfePtqRGrVO6ARqcdu3fL+JQtx5XHgbvJuMDHQ8VE388+KgkzZtK5WX0DZOhjnQ8zHNYAxn1v57YMmbg76lXQXDeVObtnU2GVslzlezMvJqWdhYWK4CKyrzknIYCzwd5hoX8aDMlaUaba2ossWzpvy64zjijFqIvbbbJnCUAdKv3xWqbYO1Z/pU1UOijsqqlY2A+BTVYjFBfZsKFjCJn/ERtce3nDVstjocx2s1qz8CnYP+bUL5EvmY5craaWsulPetCvb7K5uIguhOLx1qEk7I0tdbl8mtTTpt213E4Gv5nLCP2T5nLrcj8TwL3ZDUpqOIxgLECuRkxRmMO/lckJFOnX52RNhuPbpCojHKzrYxaob4Ym5chmw7G8wOTF2CZjtkxS+P1Acnod+QDeGfer4XWScunbJbK2tNKlS5mRLNAUhxeOO3osYCIJ4LOs746QAFGIuJYIptzCpgykqkcso4FogAN+MwzBu8a55dkhai6KJhZ2xgxdAxiTBMPHpCzaelcW3o00RgMYe6qldXQGFlOVdwgL2Tqi7gNRixEhoknErOJTZp1bO0qQz4UMXylX2uuW4zhUuaTxTGmJbow9AEepkQcW1Us17wfP9mpnX+yyZ56A1U2gh6i27pAufmHLDWfcG7O+BIRrUimDSVS6aJr7pfUpF2+/k09NrW37SD1maKfUx/22jR/LNf/eI6S9AsD+/lBobhnskT9aNeeA0JloEi3Y/2k1073S036Nt4sFfDVnGpWvFi2mMzwKyIxqBo8+WS0qDCsehJF6GqrRbdB7xgrP+JTZUu4senevmPaVU5jbZYiJ5mi99p5BnNzsbBljh483kSR785D3Ok8n54+AQlqf4oZRLiwBv4VzGLyw/j500L9u3yEDtxp3uQOz4RxMRPExu6sU+WVMAcVkfnrdkJvvdwR8dklMnufHeQcX6qqH7LxnY1I5n2rKrPn7/1d7Qq7P0824f2ViML7VS2Tqg3Dc4fYOnpUdR5k9MGXBm8gdfw3tgfcaXg5QgBnxe6z1ZC0149vCqio8Xm8yyjXRr0YvMqc31FgZyG4q7DnMDJ+aimQlnUDY3Hn29eS71iag8f2ccQ/VDo9A=="
|
||||
+DOTENV_VAULT_DEVELOPMENT_VERSION=8
|
||||
+
|
||||
+# ci
|
||||
+DOTENV_VAULT_CI="uIKC5RKdFeJiCAzoQ9e2oaT2EbR8usJcZIYlSoFl3HTFrh7J/qfo+Z+OqBgJKQllvCVIK4oQUsLICVWCRs+7yWp5j6gn2yu67lN4lKAfX0QCF/VFYNWa6u1NWZGT1bPRlvNIY7z/YnJZfgaq8Uj+mSU+C14KHMMCpKCSkbqqFX8AWlcPSkbjXaJP4IL3HxzPUGTMfq/+XbokI9r1UjBNYi1yus6jGjI4U2OtiDc61LZJ6Y0tsBeA8NA0iT2S+lwTJBjTmGHoMMjtK08Iw8GAXv9eejETvbHZfFTOpphIjeFXjFRUsgRfuPP3p/lErfncXofQ++9KNS5lhxINGBXQIKh2CRnjhajut38Xxr848YNAj4Ie4RKzeU1+aC6BXONhbD7qZQJmm63vtwTKwrUf8ML7T27DwdpV7dTdz5/W3UWnmbzhfI1pLeCHpBC1FrLBaxhFNFlkqsXiopen4iJf4ihWICn1hMCBGGRosKQJdj+y65FJMwraBbEVHa29FHYruhAPGFqGfEIWvQ++LXlPguJM/RL2txMoVppDanOwFCM3dMO3sF55BEuSSNJWX2s72ZDgTW4/Il7YiIBwwxChPs5vOQweYKqOd21HCl4t+ocu95ja3ZGROnhff72j2pCk7cahaVl/PS8WU7nZ1JQtkv5vNRR3nHgAH1nS9tSBDJ8twKEQ4bJcu2qdhGeQwenKRsV4nrKooGnQ8UlsvoTyozYYCseds2/iXX5vlc/lhL1fgcPPxoss2p+lDaS3AIIEMq0/TUCeRF2ImYUIMnnvCEb0T32Pz8bIfPblSThETdQ5A7ZRjyU9T9Ff6lpxqQwGUWO/ElKZ/CDsoeuj1UqOVLGRBwThrOHlU7LZ6kJnBvcy6AmWccE5fLsmf1l189FwMH6CimHIg2OC4ndCbiRKiP3+3OYHL0JSkTt8Lrsu/b+Mu0Kmiks1A16Sx2Lu1lUfPSsbAgYRYni7OkpgCOJ5DdnP607LTFVIichq4+KzQsc="
|
||||
+DOTENV_VAULT_CI_VERSION=4
|
||||
+DOTENV_VAULT_CI="sCTQ2ley6wx0rNsobpsTS2tN8aaMRg/3U9e7nQ8tMiCeRkEudHd4kchWXL5ya4b9eStIOuHDixdye2lnlucTc4t4cIaHg2oQE0oKuqB9U+UtBntYIyphqtXdkIuDVpJ2FRlG7ED9XhSB4XbbkBC07OqkgRJzcWaTARouCbVn8FBbyFVM9+huvR9o1xvSTATqH9F1VoiucdXuyy7ug65cFLYpm6HkKCusjnyu+xAQxOo3iLJSfjew4qigxscT2w1ciXUFn+t71qdyuGc1PI7GfXu6L6BWijJGT9bEgRJC+0CsGo3zOB3bBBdB3SuBcSekXrwyqKzymQ3OLAfWecTScBFpHyXfl5i0UgSsnQMzYn3ua000xcEor6//rZdWumI48BBNg0mzeF5zn4H8igsuKCc1e9n+PUBsH72rbEFkYOAAwhgs8JEIZ8qHF1LxZwKyOrN9Dis2Drj5+aCWpmTu1JlX8fcyP43+hsMe9cxQvtFsfA+nTaOIIt/IuPO5taNv2jW0vGsnyoahpFB0FyZOxEuPgSWrUJkrxgXMz7FwO/iLWtL4QImifAicuWgCjgMTBg+TP2sT5ekzRqjTARKVnkApi/LpL4nija6sIfqLxqtNLlAc5vuzHbkGGq+aR9l9IGeEmC/TPi0e9JCfu+oVC0m6du9nL72kOjAAqhAW0GWrBg1yffD27+xF9MJjddRtkBRBkPXGl1x79S6dURVwkspRK94VcuKCf7VY/9XcP74z9eYGhiduIzRpPLtXxWPSYi4+j6e3qzHPhdLQi+MpS8R1bkhUPpXG78a6l4qxELftctY8Njn2kJz5SRfYxaEoDBSx9Q8H7qXR/4mYBBG4q2Oc0vGuucrW8QyX6PaUXNM+irIYCK/QE3/Z5fEletW7KxV7rdf+pFSXuGyswQqkPH1kAruRyoMTMgH++//BNkwHeJn1Sq42R7hzF+jRmblC9e/e3StkP/4xN9dmjQ1xcJOg89GYNKxwwKBhX2O7bkfUBJI0tUe9aJLwkK1xHjxmSmy5d58dENzePtTSaoCCqDkvLuyOxxa8tEb23XAY"
|
||||
+DOTENV_VAULT_CI_VERSION=5
|
||||
+
|
||||
+# staging
|
||||
+DOTENV_VAULT_STAGING="AYBNNrkUH2ZyFdg6vgjrUZ/KO98JEhP7+8mam67KujGAv0EXs7yRT5eLG21sa/2mE5dHaZML5f59wUZY4E88pWetEaeR6cXk3fl4OslEyFq/EOTMjd0yaY/I19337prDAM9JBL1NgUaIuy9VICukOw39fu3LW2oovt3w/jEPE9oky4NSD5+TOgS8LuzvcUrFDACIs7Ywiquwy7wUYMoa7JFrNVT50wCSoELDBUHhGaIg6uffZ/hafvSXy58OW5bZvHxjOme+Qx9TERQPd/XMFiFFX2xvFTK+O6xjsGp6Q7C/Ri3fmZq0x87PGovUuYeqfGURmYBFt/XwVhmX0txTPmswMMxZQn9Iom7sOpHMsF9vtXZuue+Xf3WKhgYi+0DeB45o3jf7x0ljlNG8L2KIlKHZOY4d6cWBFmANCZeGxYpswKPd1tYgjk4FRXlpTDXnmu9rmb4ZzsIJWJ/KlyecXmcgimtZTNnGBwTs7dAKt2XwPPwGQbCsGy3dbljlnTgNREijmAjE+4jtrmoQALIaGSp5dHoI2o1gZ9oWep9qF0EgwqOWznz1Z8DIj2xtq+x1sefVmkfhi7KoVNDUE1gERY+5wuPMPzLaqJOUmzqNk4pgBr1l3jDk5Fj+9bOmDgkTu2Tm/IuVs4VCJF0gPCQstNMomhSpF5XCTxQJyjsBFF7+G3/Yq2AP8rtGio+thKOYrZRPYzqPCk3k7HCm8FnWZkX/GuiyL6SJYRfXbBojTXFy1vfpQySollD2kItS+ZXE9FjLqdErLqz5CVcWK7QFnbN57+jvhH2+WKzMOKG0V3Ul3cVfMA732iK7ySnyPbkaCvT2x+jyw6yCFbzP5MyfSSRHk2G3lgdViEszIpSzuNzxGgcybGWFrqWtbVTv/P8/aAMLuIgkE0Ec139GIEaTxryOb+RU8f8lTh9dQNby2+V+Iebh1S7K1EwOj27t7hvysM8X5XaOB0J0SOK+5XZooxNyJBOdArKPn/x3Ql5HxVo="
|
||||
+DOTENV_VAULT_STAGING_VERSION=4
|
||||
+DOTENV_VAULT_STAGING="jjDTQ53mmWE6kp11sR82vF9lsPNWaWteMBL3HzKC4uM16cvWzCjukaDZ++sR1/IwkEI+NYDwXoE0wTKxTA3YOQq5WcV2FdBq+DeBiJOJnVh5ghqxSukEf4tXRYIliCZ8/+caFLU7/tlrVwGkwXgjyjF3B0wgueiOMOlmIuyanXVgChEz/G2wlgzupQVtRWWmNClVMK5otcW6pbaX+ASrI2VqNVsVJm1LohdvFhUzCmGgVGjQNd6Stnjqchh9q9g2qAqDexbXGITBd9rPvz1pGduqoukxIpEe5TG7U/Zxg7ZrP8zTZ7jei8w8vA7rJ5EA/NKSgLcqvLmeu441y0OvgbnTykODbz0GVZve3PWzHGGsJDo+CWXmE5kKt0mdDOj2XCgNMGsjdHRP9GzCroQZ5QLGMFAwHqd5LnmwRZxJkmfxrMNxeIHBg9LIQ0FzxXHn9f5RvFuwhe+3nAfQo79Um/D459bd7MeZ9+F1vb++IhsSMoIq6Rcv1qMIgXv5SK8a1WrAdmVj6+3WPr+rdEijYmwLvXuI6Ad/HQCzZJkhzCvnE0lZ3XuqR/GDOCaqnMxqQjapW5HP0PXmHyUqSK/Ravl8Grb+2Z8ywULxoqbhxmK7ej8k4Vfn7sa65aVMYmj3CZIzkbsE0IdrIm84Frwmadzp8i5KxM9o4HC3ntRuKc6S9gTVT8OxUkyGu96w4qpVVAE7iL38VkAw0CIDZvcK1VtBcu4JeFRa0ZjXznUxLr2S4HsDwGtMBlkX8Q96rwh/IIusis51xl50xO6lg3uP8QwzrLLKFtHhinTHfvVIePeSm2usJxUXIvrvNekfcCebPsGdllY7t12eAbZ0RLk83loT0UsPAHUMDmdZT2eARLz7nta1lKm+PscuJIn/QxKF1K+zoJw0IL3nZL+c0iXSxZhaBHBwao5nI3CaysWr8xCohUQP/GuGE8xsivXw2DwWr4wmAmtCcT1thZtG2iOSuHQV00hlGyrghyVys/3zpR4m3qdtu5a7qxvwEpr584g7smFEySFERPBwSbfxw1dLBUj2VcNrXpR0RTG9fmye"
|
||||
+DOTENV_VAULT_STAGING_VERSION=5
|
||||
+
|
||||
+# production
|
||||
+DOTENV_VAULT_PRODUCTION="TepwfKk5dn/58biHM4NYALQtxgEAvSiLNKixJWONfgfIQ5UxyalX5xEKFQb/lK0bX++6HN6dEjXm4cvUSKMRZVzWn3l2ufge6Bzr3JqgM+i0ZV8XhVp6NdVFDqzJCNDLFN6zcL16ABu1SGtF83JinNooP28/sK78DeQDQpisa3oMDVitJ6uqdxKU+ysEWasXLbsj2reTOH/lbVOh2Tp266Qh449o7K6gyaLwo75Al7pACovB32LgYzSdphvhehMWmpcXrdswPBwAPL4RLUkDTCQDknHz++772hU2CjOb55BEda7fWm64bi4MqQkJdBPjiPAOOCEbdzW8HvUvCJwRM47nuU+AwoJgNdE0oSm3rGHmfXCKL/ZdE7m4zUGgYhuAMBffJNyI+qYwzOe0IBsZhdqBce6FYDIovV4qGnn3jAy6WGaAlu+u6mXMNTa+KYWWsmNXlXq37Vg5EAylpUT6uhzSSLypHKgZ5XgCLrWv9FA2tCdzL8cNrQpVrkuwfpJdAU8OvHH/mL7cGLnrqtjvYTM/nN5ecPVYJS5sxVBKomQlD2OVhC0eJL2+YfqCmhoFXzeam+Fn/suCba0GfGBYuG8KiSon18OEHjuqOtC23NYqfYcEiI4G05o9Hb8/ruDuQ/vS4YSBwJJb0Z2dYWg4J729HMkBj2Q5FYFTX7PgtfhtbfSxvHvknjkdENHkkvb3Z6ZM9fJGAapagfksCyFmpFZnBFZiKhMjWXSjQyHqclqp16KlAYuQor1zgc8rjrxN40X1JbKGDTVxNgE4WPhd7DBq6D1CgauuGgQcXjaoDQg2ln/Lt3doMkZPw2Pesz2CzQSEC9WFUnvsU1tc/1BBL8ItrspyU7Q6frKH1ZE2yWgTnMXJBQCP0hkgezwTDEm0EZ3mZfJk9H4s3qFVL+rcN1jwSP2Gg0JRL7ML3Teap0UG8yhDzG5RrN5CqpBrZ0z3GZMC+6mBKK/Zx55H0bupjhxiEsspkhdt06OfC0MKxWI="
|
||||
+DOTENV_VAULT_PRODUCTION_VERSION=4
|
||||
+DOTENV_VAULT_PRODUCTION="4LK0FEvptGga6hjj5y9Qh9RDQPj91hOLddcCxKemVjZamQUo2yrzzNYQvO0n4eASjGUHwruB8oggS5zJ5WS1mBlRv9QKuPnkQbBfYIHVEsWNM6uxIaBkbJPu/+fn5joHVujOMGcUninLV1vY6x7z4KieMlSiJ503rmoaGqCnctOp7QIm0SyCFFG7IzXWZz2X4Bs5d1DADV2GXo1VXB85qPjee579RdbqYPb/TU2DX1YFvGFztkugYvEBEHNb7OB42iz2EIUb7Oavc7IQ1YzeOF2lJz8jzWTqFYfws9qkgzXjSGr6iTrgXs4YgtcE6fp6zGd9QNLzZWeV5ORUrnqEuQcoV6/c/BdYR+TPeiMy+W2YcLvMHPcJDoLNYKIvO1C766CMwfohWzuTHYlrjKFwlkQka1CpyyFg/vpGrFu//djXDk6D2OLSjtTm/pZPdXhxNV81A+wp/GIzAViiUn65GXaKWM4hGs7OJXhheNl9Kg+DQ7p7lyV+UYJAyNHkPBexNxCsVphgb8Rgg2BhZXBzAnAQSwZt5+oOan5YKj8DxYLYEvuZlGI7mpbiwqDIa2taRFYTzejvtw/1wrSw3943nR8NBx6vsE9JD0AGGeFCkFwY07wmhETYrlKbXYc/XKp/77lUz0/zgLXdu55gwXHfHXaGHAWwhuDeUpdnDr9Syjd5lHzUAtQNNMg6IOrEhf9Nokp4aHcb6oOJmw/5hh+9tgaBk+jvGYGvsok1OXnpgAXuKL10C9zN3rR4/0tzZc1xqIe84ylevrhdkLekvxbbmOsymecMDIuSGhVYp9slvGbhRKtoPVwaujk/ds0YIUirp4pK83MVtdppg4O1iOspmXYPOLxp29LWVMany9PyqlkiFs2vPCJ8OgVp8DeZ0vVnC6Q6FLWHNEfSHPo/pd8w/JetZl//5V+pfKMDcKBUntzcUUqfHuLuE+8JUS1zob6IQ2P4GSLqOs/tE1Gfl3e3MKGFVDBx5faDcNyuQCuRRgXbUc3bk95rQZ7vDPWHJsyE/WH7ptPvK4ytyrxOaf/noEo/LAR8B16X0wpz4LW9"
|
||||
+DOTENV_VAULT_PRODUCTION_VERSION=5
|
||||
+
|
||||
+#/----------------settings/metadata-----------------/
|
||||
+DOTENV_VAULT="vlt_47e3eeb0730e831e688049600e59f8975260a1f00302ae08684ed87ba67872d0"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--- template/app/main.wasp
|
||||
+++ opensaas-sh/app/main.wasp
|
||||
@@ -3,24 +3,24 @@
|
||||
version: "^0.13.2"
|
||||
version: "^0.14.0"
|
||||
},
|
||||
|
||||
- title: "My Open SaaS App",
|
||||
@@ -45,7 +45,7 @@
|
||||
},
|
||||
emailVerification: {
|
||||
clientRoute: EmailVerificationRoute,
|
||||
@@ -44,16 +44,14 @@
|
||||
@@ -44,21 +44,18 @@
|
||||
},
|
||||
userSignupFields: import { getEmailUserFields } from "@src/auth/userSignupFields",
|
||||
},
|
||||
@@ -59,6 +59,11 @@
|
||||
- // userSignupFields: import { getGitHubUserFields } from "@src/auth/userSignupFields",
|
||||
- // configFn: import { getGitHubAuthConfig } from "@src/auth/userSignupFields",
|
||||
- // },
|
||||
- // Uncomment to enable Discord Auth (check https://wasp-lang.dev/docs/auth/social-auth/discord for setup instructions):
|
||||
- // discord: {
|
||||
- // userSignupFields: import { getDiscordUserFields } from "@src/auth/userSignupFields",
|
||||
- // configFn: import { getDiscordAuthConfig } from "@src/auth/userSignupFields"
|
||||
- // }
|
||||
+ google: {
|
||||
+ userSignupFields: import { getGoogleUserFields } from "@src/auth/userSignupFields",
|
||||
+ configFn: import { getGoogleAuthConfig } from "@src/auth/userSignupFields",
|
||||
@@ -67,10 +72,14 @@
|
||||
+ userSignupFields: import { getGitHubUserFields } from "@src/auth/userSignupFields",
|
||||
+ configFn: import { getGitHubAuthConfig } from "@src/auth/userSignupFields",
|
||||
+ },
|
||||
+ discord: {
|
||||
+ userSignupFields: import { getDiscordUserFields } from "@src/auth/userSignupFields",
|
||||
+ configFn: import { getDiscordAuthConfig } from "@src/auth/userSignupFields"
|
||||
+ }
|
||||
},
|
||||
onAfterSignup: import { onAfterSignup } from "@src/auth/hooks",
|
||||
onAuthFailedRedirectTo: "/login",
|
||||
onAuthSucceededRedirectTo: "/demo-app",
|
||||
@@ -76,11 +74,11 @@
|
||||
@@ -81,11 +78,11 @@
|
||||
// NOTE: "Dummy" provider is just for local development purposes.
|
||||
// Make sure to check the server logs for the email confirmation url (it will not be sent to an address)!
|
||||
// Once you are ready for production, switch to e.g. "SendGrid" or "Mailgun" providers. Check out https://docs.opensaas.sh/guides/email-sending/ .
|
||||
@@ -84,15 +93,3 @@
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -125,7 +123,10 @@
|
||||
email String? @unique
|
||||
username String? @unique
|
||||
lastActiveTimestamp DateTime @default(now())
|
||||
- isAdmin Boolean @default(false)
|
||||
+ isAdmin Boolean @default(true)
|
||||
+ // isMockUser is an extra property for the demo app ensuring that all users can access
|
||||
+ // the admin dashboard but won't be able to see the other users' data, only mock user data.
|
||||
+ isMockUser Boolean @default(false)
|
||||
|
||||
stripeId String? @unique
|
||||
checkoutSessionId String?
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
--- template/app/migrations/20240715142249_version_14/migration.sql
|
||||
+++ opensaas-sh/app/migrations/20240715142249_version_14/migration.sql
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ Warnings:
|
||||
+
|
||||
+ - You are about to drop the column `sendEmail` on the `User` table. All the data in the column will be lost.
|
||||
+ - You are about to drop the column `subscriptionTier` on the `User` table. All the data in the column will be lost.
|
||||
+ - A unique constraint covering the columns `[stripeId]` on the table `User` will be added. If there are existing duplicate values, this will fail.
|
||||
+
|
||||
+*/
|
||||
+-- AlterTable
|
||||
+ALTER TABLE "User" DROP COLUMN "sendEmail",
|
||||
+DROP COLUMN "subscriptionTier",
|
||||
+ADD COLUMN "sendNewsletter" BOOLEAN NOT NULL DEFAULT false,
|
||||
+ADD COLUMN "subscriptionPlan" TEXT;
|
||||
+
|
||||
+-- CreateIndex
|
||||
+CREATE UNIQUE INDEX "User_stripeId_key" ON "User"("stripeId");
|
||||
14
opensaas-sh/app_diff/schema.prisma.diff
Normal file
14
opensaas-sh/app_diff/schema.prisma.diff
Normal file
@@ -0,0 +1,14 @@
|
||||
--- template/app/schema.prisma
|
||||
+++ opensaas-sh/app/schema.prisma
|
||||
@@ -14,7 +14,10 @@
|
||||
email String? @unique
|
||||
username String? @unique
|
||||
lastActiveTimestamp DateTime @default(now())
|
||||
- isAdmin Boolean @default(false)
|
||||
+ isAdmin Boolean @default(true)
|
||||
+ // isMockUser is an extra property for the demo app ensuring that all users can access
|
||||
+ // the admin dashboard but won't be able to see the other users' data, only mock user data.
|
||||
+ isMockUser Boolean @default(false)
|
||||
|
||||
stripeId String? @unique
|
||||
checkoutSessionId String?
|
||||
@@ -1,20 +1,18 @@
|
||||
--- template/app/src/admin/dashboards/analytics/AnalyticsDashboardPage.tsx
|
||||
+++ opensaas-sh/app/src/admin/dashboards/analytics/AnalyticsDashboardPage.tsx
|
||||
@@ -1,4 +1,5 @@
|
||||
import { type User } from 'wasp/entities';
|
||||
@@ -1,4 +1,6 @@
|
||||
+import { Link } from "wasp/client/router";
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
+import { useState, useEffect } from 'react';
|
||||
import { useQuery, getDailyStats } from 'wasp/client/operations';
|
||||
import TotalSignupsCard from './TotalSignupsCard';
|
||||
import TotalPageViewsCard from './TotalPageViewsCard';
|
||||
@@ -10,6 +11,7 @@
|
||||
import { useHistory } from 'react-router-dom';
|
||||
@@ -10,12 +12,45 @@
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin'
|
||||
|
||||
const Dashboard = ({ user }: { user: User }) => {
|
||||
const Dashboard = ({ user }: { user: AuthUser }) => {
|
||||
+ const [isDemoInfoVisible, setIsDemoInfoVisible] = useState(false);
|
||||
const history = useHistory();
|
||||
if (!user.isAdmin) {
|
||||
history.push('/');
|
||||
@@ -17,8 +19,40 @@
|
||||
useRedirectHomeUnlessUserIsAdmin({ user })
|
||||
|
||||
const { data: stats, isLoading, error } = useQuery(getDailyStats);
|
||||
|
||||
@@ -40,7 +38,7 @@
|
||||
+ };
|
||||
+
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
+ {/* Floating Demo Announcement */}
|
||||
+ {isDemoInfoVisible && (
|
||||
+ <div className='fixed z-999 bottom-0 mb-2 left-1/2 -translate-x-1/2 lg:mb-4 bg-gray-700 rounded-full px-3.5 py-2 text-sm text-white duration-300 ease-in-out hover:bg-gray-800 focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600'>
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
--- template/app/src/admin/dashboards/users/UsersDashboardPage.tsx
|
||||
+++ opensaas-sh/app/src/admin/dashboards/users/UsersDashboardPage.tsx
|
||||
@@ -1,14 +1,50 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
+import { useState, useEffect } from 'react';
|
||||
import UsersTable from './UsersTable';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const Users = ({ user }: { user: AuthUser }) => {
|
||||
- useRedirectHomeUnlessUserIsAdmin({user})
|
||||
+ const [isDemoInfoVisible, setIsDemoInfoVisible] = useState(false);
|
||||
+ useRedirectHomeUnlessUserIsAdmin({user});
|
||||
+
|
||||
+ useEffect(() => {
|
||||
+ try {
|
||||
+ if (localStorage.getItem('isDemoInfoVisible') === 'false') {
|
||||
+ // do nothing
|
||||
+ } else {
|
||||
+ setIsDemoInfoVisible(true);
|
||||
+ }
|
||||
+ } catch (error) {
|
||||
+ console.error(error);
|
||||
+ }
|
||||
+ }, []);
|
||||
+
|
||||
+ const handleDemoInfoClose = () => {
|
||||
+ try {
|
||||
+ localStorage.setItem('isDemoInfoVisible', 'false');
|
||||
+ setIsDemoInfoVisible(false);
|
||||
+ } catch (error) {
|
||||
+ console.error(error);
|
||||
+ }
|
||||
+ };
|
||||
|
||||
return (
|
||||
<DefaultLayout user={user}>
|
||||
+ {/* Floating Demo Announcement */}
|
||||
+ {isDemoInfoVisible && (
|
||||
+ <div className='fixed z-999 bottom-0 mb-2 left-1/2 -translate-x-1/2 lg:mb-4 bg-gray-700 rounded-full px-3.5 py-2 text-sm text-white duration-300 ease-in-out hover:bg-gray-800 focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600'>
|
||||
+ <div className='px-4 flex flex-row gap-2 items-center my-1'>
|
||||
+ <span className='text-gray-100'>
|
||||
+ You are viewing mock user data only ;)
|
||||
+ </span>
|
||||
+ <button className=' pl-2.5 text-gray-400 text-xl font-bold' onClick={() => handleDemoInfoClose()}>
|
||||
+ X
|
||||
+ </button>
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ )}
|
||||
<Breadcrumb pageName='Users' />
|
||||
<div className='flex flex-col gap-10'>
|
||||
<UsersTable />
|
||||
@@ -1,56 +1,10 @@
|
||||
--- template/app/src/admin/dashboards/users/UsersTable.tsx
|
||||
+++ opensaas-sh/app/src/admin/dashboards/users/UsersTable.tsx
|
||||
@@ -9,8 +9,10 @@
|
||||
@@ -9,6 +9,7 @@
|
||||
const [skip, setskip] = useState(0);
|
||||
const [page, setPage] = useState(1);
|
||||
const [email, setEmail] = useState<string | undefined>(undefined);
|
||||
+
|
||||
const [isAdminFilter, setIsAdminFilter] = useState<boolean | undefined>(undefined);
|
||||
const [statusOptions, setStatusOptions] = useState<SubscriptionStatus[]>([]);
|
||||
+ const [isDemoInfoVisible, setIsDemoInfoVisible] = useState(false);
|
||||
const { data, isLoading, error } = useQuery(getPaginatedUsers, {
|
||||
skip,
|
||||
emailContains: email,
|
||||
@@ -26,8 +28,42 @@
|
||||
setskip((page - 1) * 10);
|
||||
}, [page]);
|
||||
|
||||
+ useEffect(() => {
|
||||
+ try {
|
||||
+ if (localStorage.getItem('isDemoInfoVisible') === 'false') {
|
||||
+ // do nothing
|
||||
+ } else {
|
||||
+ setIsDemoInfoVisible(true);
|
||||
+ }
|
||||
+ } catch (error) {
|
||||
+ console.error(error);
|
||||
+ }
|
||||
+ }, []);
|
||||
+
|
||||
+ const handleDemoInfoClose = () => {
|
||||
+ try {
|
||||
+ localStorage.setItem('isDemoInfoVisible', 'false');
|
||||
+ setIsDemoInfoVisible(false);
|
||||
+ } catch (error) {
|
||||
+ console.error(error);
|
||||
+ }
|
||||
+ };
|
||||
+
|
||||
return (
|
||||
<div className='flex flex-col gap-4'>
|
||||
+ {/* Floating Demo Announcement */}
|
||||
+ {isDemoInfoVisible && (
|
||||
+ <div className='fixed z-999 bottom-0 mb-2 left-1/2 -translate-x-1/2 lg:mb-4 bg-gray-700 rounded-full px-3.5 py-2 text-sm text-white duration-300 ease-in-out hover:bg-gray-800 focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600'>
|
||||
+ <div className='px-4 flex flex-row gap-2 items-center my-1'>
|
||||
+ <span className='text-gray-100'>
|
||||
+ You are viewing mock user data only ;)
|
||||
+ </span>
|
||||
+ <button className=' pl-2.5 text-gray-400 text-xl font-bold' onClick={() => handleDemoInfoClose()}>
|
||||
+ X
|
||||
+ </button>
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ )}
|
||||
<div className='rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark'>
|
||||
<div className='flex-col flex items-start justify-between p-6 gap-3 w-full bg-gray-100/40 dark:bg-gray-700/50'>
|
||||
<span className='text-sm font-medium'>Filters:</span>
|
||||
|
||||
47
opensaas-sh/app_diff/src/auth/userSignupFields.ts.diff
Normal file
47
opensaas-sh/app_diff/src/auth/userSignupFields.ts.diff
Normal file
@@ -0,0 +1,47 @@
|
||||
--- template/app/src/auth/userSignupFields.ts
|
||||
+++ opensaas-sh/app/src/auth/userSignupFields.ts
|
||||
@@ -1,11 +1,8 @@
|
||||
import { z } from 'zod';
|
||||
import { defineUserSignupFields } from 'wasp/auth/providers/types';
|
||||
|
||||
-const adminEmails = process.env.ADMIN_EMAILS?.split(',') || [];
|
||||
-
|
||||
export const getEmailUserFields = defineUserSignupFields({
|
||||
username: (data: any) => data.email,
|
||||
- isAdmin: (data: any) => adminEmails.includes(data.email),
|
||||
email: (data: any) => data.email,
|
||||
});
|
||||
|
||||
@@ -29,10 +26,6 @@
|
||||
const githubData = githubDataSchema.parse(data);
|
||||
return githubData.profile.login;
|
||||
},
|
||||
- isAdmin: (data) => {
|
||||
- const githubData = githubDataSchema.parse(data);
|
||||
- return adminEmails.includes(githubData.profile.emails[0].email);
|
||||
- },
|
||||
});
|
||||
|
||||
// NOTE: if we don't want to access users' emails, we can use scope ["user:read"]
|
||||
@@ -58,10 +51,6 @@
|
||||
const googleData = googleDataSchema.parse(data);
|
||||
return googleData.profile.email;
|
||||
},
|
||||
- isAdmin: (data) => {
|
||||
- const googleData = googleDataSchema.parse(data);
|
||||
- return adminEmails.includes(googleData.profile.email);
|
||||
- },
|
||||
});
|
||||
|
||||
export function getGoogleAuthConfig() {
|
||||
@@ -86,10 +75,6 @@
|
||||
const discordData = discordDataSchema.parse(data);
|
||||
return discordData.profile.username;
|
||||
},
|
||||
- isAdmin: (data) => {
|
||||
- const email = discordDataSchema.parse(data).profile.email;
|
||||
- return !!email && adminEmails.includes(email);
|
||||
- },
|
||||
});
|
||||
|
||||
export function getDiscordAuthConfig() {
|
||||
@@ -1,60 +0,0 @@
|
||||
--- template/app/src/client/landing-page/Announcement.tsx
|
||||
+++ opensaas-sh/app/src/client/landing-page/Announcement.tsx
|
||||
@@ -0,0 +1,57 @@
|
||||
+import { useState, useEffect } from 'react';
|
||||
+import { AiFillGithub } from 'react-icons/ai';
|
||||
+
|
||||
+type TimeLeft = { hours: string; minutes: string; seconds: string };
|
||||
+
|
||||
+export default function Announcement() {
|
||||
+ const [timeLeft, setTimeLeft] = useState<TimeLeft | undefined>(
|
||||
+ calculateTimeLeft()
|
||||
+ );
|
||||
+
|
||||
+ function calculateTimeLeft() {
|
||||
+ const targetDate = '2024-01-30T08:01:00Z';
|
||||
+ let diff = new Date(targetDate).getTime() - new Date().getTime();
|
||||
+ let timeLeft: TimeLeft | undefined;
|
||||
+
|
||||
+ if (diff > 0) {
|
||||
+ timeLeft = {
|
||||
+ hours: Math.floor((diff / (1000 * 60 * 60)) % 24).toString(),
|
||||
+ minutes: Math.floor((diff / 1000 / 60) % 60).toString(),
|
||||
+ // make sure seconds are always displayed as two digits, e.g. '02'
|
||||
+ seconds: Math.floor((diff / 1000) % 60).toString(),
|
||||
+ };
|
||||
+ }
|
||||
+ if (!!timeLeft) {
|
||||
+ if (timeLeft.seconds.length === 1) {
|
||||
+ timeLeft.seconds = '0' + timeLeft.seconds;
|
||||
+ }
|
||||
+ if (timeLeft.minutes.length === 1) {
|
||||
+ timeLeft.minutes = '0' + timeLeft.minutes;
|
||||
+ }
|
||||
+ }
|
||||
+ return timeLeft;
|
||||
+ }
|
||||
+
|
||||
+ useEffect(() => {
|
||||
+ const timer = setTimeout(() => {
|
||||
+ setTimeLeft(calculateTimeLeft());
|
||||
+ }, 1000);
|
||||
+ return () => clearTimeout(timer);
|
||||
+ });
|
||||
+
|
||||
+ return (
|
||||
+ <div className='flex items-center justify-center gap-3 border-b border-gray-300 border-dashed text-center py-6 text-sm'>
|
||||
+ Open SaaS trending on{' '}
|
||||
+ <a
|
||||
+ href='https://github.com/trending#:~:text=wasp%2Dlang%20/%20open%2Dsaas'
|
||||
+ target='_blank'
|
||||
+ rel='noopener noreferrer'
|
||||
+ className='flex items-center justify-center gap-2 bg-purple-200 hover:bg-purple-300 text-gray-900 border-b border-1 border-purple-300 hover:border-purple-400 py-1 px-3 -my-1 rounded-full shadow-lg hover:shadow-md duration-200 ease-in-out tracking-wider'
|
||||
+ >
|
||||
+ <span>GitHub</span>
|
||||
+ <AiFillGithub />
|
||||
+ </a>
|
||||
+ 📈
|
||||
+ </div>
|
||||
+ );
|
||||
+}
|
||||
@@ -1,5 +1,5 @@
|
||||
--- template/app/src/client/landing-page/LandingPage.tsx
|
||||
+++ opensaas-sh/app/src/client/landing-page/LandingPage.tsx
|
||||
--- template/app/src/landing-page/LandingPage.tsx
|
||||
+++ opensaas-sh/app/src/landing-page/LandingPage.tsx
|
||||
@@ -1,24 +1,45 @@
|
||||
import { Link } from 'wasp/client/router';
|
||||
import { useAuth } from 'wasp/client/auth';
|
||||
@@ -10,9 +10,13 @@
|
||||
+import { AiFillCloseCircle, AiFillGithub } from 'react-icons/ai';
|
||||
import { HiBars3 } from 'react-icons/hi2';
|
||||
import { BiLogIn } from 'react-icons/bi';
|
||||
import logo from '../static/logo.png';
|
||||
-import openSaasBanner from '../static/open-saas-banner.png';
|
||||
import logo from '../client/static/logo.png';
|
||||
-import openSaasBanner from '../client/static/open-saas-banner.png';
|
||||
-import { features, navigation, faqs, footerNavigation, testimonials } from './contentSections';
|
||||
-import DropdownUser from '../client/../user/DropdownUser';
|
||||
-import { UserMenuItems } from '../client/../user/UserMenuItems';
|
||||
-import { DocsUrl } from '../client/../shared/common';
|
||||
import DarkModeSwitcher from '../client/components/DarkModeSwitcher';
|
||||
+import {
|
||||
+ features,
|
||||
+ navigation,
|
||||
@@ -20,11 +24,9 @@
|
||||
+ footerNavigation,
|
||||
+ testimonials,
|
||||
+} from './contentSections';
|
||||
import DropdownUser from '../../user/DropdownUser';
|
||||
import { UserMenuItems } from '../../user/UserMenuItems';
|
||||
-import { DocsUrl } from '../../shared/common';
|
||||
+import { DocsUrl, GithubUrl } from '../../shared/common';
|
||||
import DarkModeSwitcher from '../components/DarkModeSwitcher';
|
||||
+import DropdownUser from '../user/DropdownUser';
|
||||
+import { UserMenuItems } from '../user/UserMenuItems';
|
||||
+import { DocsUrl, GithubUrl } from '../shared/common';
|
||||
|
||||
export default function LandingPage() {
|
||||
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
||||
@@ -119,7 +121,7 @@
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@@ -152,30 +179,54 @@
|
||||
@@ -152,30 +179,47 @@
|
||||
<div className='py-24 sm:py-32'>
|
||||
<div className='mx-auto max-w-8xl px-6 lg:px-8'>
|
||||
<div className='lg:mb-18 mx-auto max-w-3xl text-center'>
|
||||
@@ -163,15 +165,13 @@
|
||||
<div className='mt-14 flow-root sm:mt-14 '>
|
||||
- <div className='-m-2 rounded-xl lg:-m-4 lg:rounded-2xl lg:p-4'>
|
||||
- <img
|
||||
+ <div className='-m-2 mx-auto rounded-xl lg:-m-4 lg:rounded-2xl lg:p-4'>
|
||||
+ {/* <img
|
||||
src={openSaasBanner}
|
||||
alt='App screenshot'
|
||||
width={2432}
|
||||
height={1442}
|
||||
className='rounded-md shadow-2xl ring-1 ring-gray-900/10'
|
||||
- src={openSaasBanner}
|
||||
- alt='App screenshot'
|
||||
- width={2432}
|
||||
- height={1442}
|
||||
- className='rounded-md shadow-2xl ring-1 ring-gray-900/10'
|
||||
- />
|
||||
+ /> */}
|
||||
+ <div className='-m-2 mx-auto rounded-xl lg:-m-4 lg:rounded-2xl lg:p-4'>
|
||||
+ <iframe
|
||||
+ className=' mx-auto w-full md:w-[85%] aspect-[4/3] shadow-2xl'
|
||||
+ src='https://cards.producthunt.com/cards/posts/436467?v=1'
|
||||
@@ -182,7 +182,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -184,38 +235,36 @@
|
||||
@@ -184,38 +228,36 @@
|
||||
|
||||
{/* Clients section */}
|
||||
<div className='mt-12 mx-auto max-w-7xl px-6 lg:px-8 flex flex-col items-between gap-y-6'>
|
||||
@@ -248,7 +248,7 @@
|
||||
<path
|
||||
className='dark:fill-white'
|
||||
fill='#545454'
|
||||
@@ -223,7 +272,19 @@
|
||||
@@ -223,7 +265,19 @@
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
@@ -269,7 +269,7 @@
|
||||
<svg viewBox='0 0 256 370' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path
|
||||
className='dark:fill-white'
|
||||
@@ -253,25 +314,27 @@
|
||||
@@ -253,25 +307,27 @@
|
||||
<div id='features' className='mx-auto mt-48 max-w-7xl px-6 lg:px-8'>
|
||||
<div className='mx-auto max-w-2xl text-center'>
|
||||
<p className='mt-2 text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl dark:text-white'>
|
||||
@@ -310,7 +310,7 @@
|
||||
))}
|
||||
</dl>
|
||||
</div>
|
||||
@@ -291,10 +354,18 @@
|
||||
@@ -291,10 +347,18 @@
|
||||
<p>{testimonial.quote}</p>
|
||||
</blockquote>
|
||||
<figcaption className='mt-6 text-base text-white'>
|
||||
@@ -332,7 +332,7 @@
|
||||
<div className='mt-1'>{testimonial.role}</div>
|
||||
</div>
|
||||
</a>
|
||||
@@ -307,20 +378,28 @@
|
||||
@@ -307,20 +371,28 @@
|
||||
</div>
|
||||
|
||||
{/* FAQ */}
|
||||
@@ -368,7 +368,7 @@
|
||||
Learn more →
|
||||
</a>
|
||||
)}
|
||||
@@ -335,7 +414,7 @@
|
||||
@@ -335,7 +407,7 @@
|
||||
<div className='mx-auto mt-6 max-w-7xl px-6 lg:px-8 dark:bg-boxdark-2'>
|
||||
<footer
|
||||
aria-labelledby='footer-heading'
|
||||
@@ -1,11 +1,11 @@
|
||||
--- template/app/src/client/landing-page/contentSections.ts
|
||||
+++ opensaas-sh/app/src/client/landing-page/contentSections.ts
|
||||
@@ -1,74 +1,126 @@
|
||||
-import { DocsUrl, BlogUrl } from '../../shared/common';
|
||||
-import daBoiAvatar from '../static/da-boi.png';
|
||||
-import avatarPlaceholder from '../static/avatar-placeholder.png';
|
||||
--- template/app/src/landing-page/contentSections.ts
|
||||
+++ opensaas-sh/app/src/landing-page/contentSections.ts
|
||||
@@ -1,74 +1,131 @@
|
||||
-import { DocsUrl, BlogUrl } from '../shared/common';
|
||||
-import daBoiAvatar from '../client/static/da-boi.png';
|
||||
-import avatarPlaceholder from '../client/static/avatar-placeholder.png';
|
||||
-import { routes } from 'wasp/client/router';
|
||||
+import { DocsUrl, BlogUrl, GithubUrl } from '../../shared/common';
|
||||
+import { DocsUrl, BlogUrl, GithubUrl } from '../shared/common';
|
||||
|
||||
export const navigation = [
|
||||
{ name: 'Features', href: '#features' },
|
||||
@@ -45,8 +45,7 @@
|
||||
- name: 'Cool Feature #4',
|
||||
- description: 'Describe your cool feature here.',
|
||||
+ name: 'Stripe Integration',
|
||||
+ description:
|
||||
+ "No SaaS is complete without payments. That's why payments and the necessary webhooks are built-in.",
|
||||
+ description: "No SaaS is complete without payments. That's why payments and the necessary webhooks are built-in.",
|
||||
icon: '💸',
|
||||
+ href: DocsUrl + '/guides/stripe-integration/',
|
||||
+ },
|
||||
@@ -76,6 +75,13 @@
|
||||
+ href: DocsUrl + '/guides/file-uploading/',
|
||||
+ },
|
||||
+ {
|
||||
+ name: 'Blog w/ Astro',
|
||||
+ description:
|
||||
+ 'Built-in blog with the Astro framework. Write your posts in Markdown, and watch your SEO performance take off.',
|
||||
+ icon: '📝',
|
||||
+ href: DocsUrl + '/start/guided-tour/',
|
||||
+ },
|
||||
+ {
|
||||
+ name: 'Deploy Anywhere. Easily.',
|
||||
+ description:
|
||||
+ 'No vendor lock-in because you own all your code. Deploy yourself, or let Wasp deploy it for you with a single command.',
|
||||
@@ -83,11 +89,10 @@
|
||||
+ href: DocsUrl + '/guides/deploying/',
|
||||
+ },
|
||||
+ {
|
||||
+ name: 'Blog w/ Astro',
|
||||
+ description:
|
||||
+ 'Built-in blog with the Astro framework. Write your posts in Markdown, and watch your SEO performance take off.',
|
||||
+ icon: '📝',
|
||||
+ href: DocsUrl + '/start/guided-tour/',
|
||||
+ name: 'E2E Tests w/ Playwright',
|
||||
+ description: 'Move fast without breaking too much. Tests and a CI pipeline w/ GitHub Actions are set up for you.',
|
||||
+ icon: '🧪',
|
||||
+ href: DocsUrl,
|
||||
+ },
|
||||
+ {
|
||||
+ name: 'Complete Documentation & Support',
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Admin Dashboard
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
This is a reference on how the Admin dashboard is set up and works.
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: User Overview
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
This reference will help you understand how the User entity works in this template.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Analytics
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
This guide will show you how to integrate analytics for your app. You can choose between [Google Analytics](#google-analytics) and [Plausible](#plausible).
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Authentication
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
Setting up your app's authentication is easy with Wasp. In fact, it's already set up for you in the `main.wasp` file:
|
||||
@@ -14,7 +13,8 @@ Setting up your app's authentication is easy with Wasp. In fact, it's already se
|
||||
methods: {
|
||||
email: {},
|
||||
google: {},
|
||||
gitHub: {}
|
||||
gitHub: {},
|
||||
discord: {}
|
||||
},
|
||||
onAuthFailedRedirectTo: "/",
|
||||
},
|
||||
@@ -81,7 +81,7 @@ And that's it. Wasp will take care of the rest and update your AuthUI components
|
||||
|
||||
Check out the [Wasp Auth docs](https://wasp-lang.dev/docs/auth/overview) for more info.
|
||||
|
||||
## Google & GitHub Auth
|
||||
## Google, GitHub, & Discord Auth
|
||||
|
||||
We've also customized and pre-built the Google and GitHub auth flow for you. To start using them, you just need to uncomment out the methods you want in your `main.wasp` file and obtain the proper API keys to add to your `.env.server` file.
|
||||
|
||||
@@ -89,4 +89,6 @@ To create a Google OAuth app and get your Google API keys, follow the instructio
|
||||
|
||||
To create a GitHub OAuth app and get your GitHub API keys, follow the instructions in [Wasp's GitHub Auth docs](https://wasp-lang.dev/docs/auth/social-auth/github#3-creating-a-github-oauth-app).
|
||||
|
||||
To create a Discord OAuth app and get your Discord API keys, follow the instructions in [Wasp's Discord Auth docs](docs/auth/social-auth/google#3-creating-a-google-oauth-app)
|
||||
|
||||
Again, Wasp will take care of the rest and update your AuthUI components accordingly.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Authorization
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will help you get started with authorization in your SaaS app.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Cookie Consent Modal
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
<img src="/cookie-consent/cookiebanner.png" alt="cookie banner" width="400px" />
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Deploying
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
Because this SaaS app is a React/NodeJS/Postgres app built on top of [Wasp](https://wasp-lang.dev), we will direct you to the [Wasp Deployment Guide](https://wasp-lang.dev/docs/advanced/deployment/overview/) for more detailed instructions, except for where the instructions are specific to this template.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Email Sending
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
import { Tabs, TabItem } from '@astrojs/starlight/components';
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: File Uploading
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will show you how to set up file uploading in your SaaS app.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: SEO
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guides explains how to improve SEO for of your app
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Stripe Integration
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will show you how to set up your Stripe account for testing and local development.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Stripe Testing
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
This guide will show you how to test and try out your checkout, payments, and webhooks locally.
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Introduction
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
## Welcome to your new SaaS App!
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Getting Started
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will help you get your new SaaS app up and running.
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
title: Guided Tour
|
||||
banner:
|
||||
content: |
|
||||
⚠️ Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.13</a>! If you're running an older version of Open SaaS, please follow the
|
||||
<a href="https://wasp-lang.dev/docs/migrate-from-0-12-to-0-13">migration instructions here</a> ⚠️
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
---
|
||||
|
||||
Awesome, you now have your very own SaaS app up and running! But, first, here are some important things you need to know about your app in its current state:
|
||||
@@ -69,6 +68,7 @@ If you are using an older version of the OpenSaaS template with Wasp `v0.13.x` o
|
||||
│ ├── client/ # Shared components, hooks, landing page, and other client code (React).
|
||||
│ ├── demo-ai-app/ # Logic for the example AI-powered demo app.
|
||||
│ ├── file-upload/ # Logic for uploading files to S3.
|
||||
│ ├── landing-page # Landing page related code
|
||||
│ ├── messages # Logic for app user messages.
|
||||
│ ├── newsletter/ # Logic for scheduled recurring newsletter sending.
|
||||
│ ├── payment/ # Logic for handling Stripe payments and webhooks.
|
||||
@@ -118,7 +118,6 @@ The `src/client` folder contains any additional client-side code that doesn't be
|
||||
├── fonts # Extra fonts
|
||||
├── hooks # Your shared React hooks.
|
||||
├── icons # Your shared SVG icons.
|
||||
├── landing-page # Landing page related code
|
||||
├── static # Assets that you need access to in your code, e.g. import logo from 'static/logo.png'
|
||||
├── App.tsx # Main app component to wrap all child components. Useful for global state, navbars, etc.
|
||||
├── cn.ts # Helper function for dynamic and conditional Tailwind CSS classes.
|
||||
@@ -151,6 +150,7 @@ This template comes with a fully functional auth flow out of the box. It takes a
|
||||
},
|
||||
google: {},
|
||||
github: {},
|
||||
discord: {}
|
||||
},
|
||||
onAuthFailedRedirectTo: "/",
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
app OpenSaaS {
|
||||
wasp: {
|
||||
version: "^0.13.2"
|
||||
version: "^0.14.0"
|
||||
},
|
||||
|
||||
title: "My Open SaaS App",
|
||||
@@ -54,13 +54,18 @@ app OpenSaaS {
|
||||
// userSignupFields: import { getGitHubUserFields } from "@src/auth/userSignupFields",
|
||||
// configFn: import { getGitHubAuthConfig } from "@src/auth/userSignupFields",
|
||||
// },
|
||||
// Uncomment to enable Discord Auth (check https://wasp-lang.dev/docs/auth/social-auth/discord for setup instructions):
|
||||
// discord: {
|
||||
// userSignupFields: import { getDiscordUserFields } from "@src/auth/userSignupFields",
|
||||
// configFn: import { getDiscordAuthConfig } from "@src/auth/userSignupFields"
|
||||
// }
|
||||
},
|
||||
onAfterSignup: import { onAfterSignup } from "@src/auth/hooks",
|
||||
onAuthFailedRedirectTo: "/login",
|
||||
onAuthSucceededRedirectTo: "/demo-app",
|
||||
},
|
||||
|
||||
db: {
|
||||
system: PostgreSQL,
|
||||
// Run `wasp db seed` to seed the database with the seed functions below:
|
||||
seeds: [
|
||||
// Populates the database with a bunch of fake users to work with during development.
|
||||
@@ -87,7 +92,7 @@ app OpenSaaS {
|
||||
|
||||
route LandingPageRoute { path: "/", to: LandingPage }
|
||||
page LandingPage {
|
||||
component: import LandingPage from "@src/client/landing-page/LandingPage"
|
||||
component: import LandingPage from "@src/landing-page/LandingPage"
|
||||
}
|
||||
|
||||
//#region Auth Pages
|
||||
@@ -118,29 +123,6 @@ page EmailVerificationPage {
|
||||
//#endregion
|
||||
|
||||
//#region User
|
||||
entity User {=psl
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
email String? @unique
|
||||
username String? @unique
|
||||
lastActiveTimestamp DateTime @default(now())
|
||||
isAdmin Boolean @default(false)
|
||||
|
||||
stripeId String? @unique
|
||||
checkoutSessionId String?
|
||||
subscriptionStatus String? // 'active', 'canceled', 'past_due', 'deleted'
|
||||
subscriptionPlan String? // 'hobby', 'pro'
|
||||
sendNewsletter Boolean @default(false)
|
||||
datePaid DateTime?
|
||||
credits Int @default(3)
|
||||
|
||||
gptResponses GptResponse[]
|
||||
contactFormMessages ContactFormMessage[]
|
||||
tasks Task[]
|
||||
files File[]
|
||||
psl=}
|
||||
|
||||
route AccountRoute { path: "/account", to: AccountPage }
|
||||
page AccountPage {
|
||||
authRequired: true,
|
||||
@@ -199,29 +181,6 @@ query getAllTasksByUser {
|
||||
fn: import { getAllTasksByUser } from "@src/demo-ai-app/operations",
|
||||
entities: [Task]
|
||||
}
|
||||
|
||||
entity GptResponse {=psl
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
content String
|
||||
psl=}
|
||||
|
||||
entity Task {=psl
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
description String
|
||||
time String @default("1")
|
||||
isDone Boolean @default(false)
|
||||
psl=}
|
||||
//#endregion
|
||||
|
||||
//#region Payment
|
||||
@@ -270,19 +229,6 @@ query getDownloadFileSignedURL {
|
||||
fn: import { getDownloadFileSignedURL } from "@src/file-upload/operations",
|
||||
entities: [User, File]
|
||||
}
|
||||
|
||||
entity File {=psl
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
name String
|
||||
type String
|
||||
key String
|
||||
uploadUrl String
|
||||
psl=}
|
||||
//#endregion
|
||||
|
||||
//#region Analytics
|
||||
@@ -302,41 +248,6 @@ job dailyStatsJob {
|
||||
},
|
||||
entities: [User, DailyStats, Logs, PageViewSource]
|
||||
}
|
||||
|
||||
entity DailyStats {=psl
|
||||
id Int @id @default(autoincrement())
|
||||
date DateTime @default(now()) @unique
|
||||
|
||||
totalViews Int @default(0)
|
||||
prevDayViewsChangePercent String @default("0")
|
||||
userCount Int @default(0)
|
||||
paidUserCount Int @default(0)
|
||||
userDelta Int @default(0)
|
||||
paidUserDelta Int @default(0)
|
||||
totalRevenue Float @default(0)
|
||||
totalProfit Float @default(0)
|
||||
|
||||
sources PageViewSource[]
|
||||
psl=}
|
||||
|
||||
entity PageViewSource {=psl
|
||||
@@id([date, name])
|
||||
name String
|
||||
date DateTime @default(now())
|
||||
|
||||
dailyStats DailyStats? @relation(fields: [dailyStatsId], references: [id])
|
||||
dailyStatsId Int?
|
||||
|
||||
visitors Int
|
||||
psl=}
|
||||
|
||||
entity Logs {=psl
|
||||
id Int @id @default(autoincrement())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
message String
|
||||
level String
|
||||
psl=}
|
||||
//#endregion
|
||||
|
||||
//#region Admin Dashboard
|
||||
@@ -404,18 +315,6 @@ page AdminMessagesPage {
|
||||
authRequired: true,
|
||||
component: import AdminMessages from "@src/messages/MessagesPage"
|
||||
}
|
||||
|
||||
entity ContactFormMessage {=psl
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
content String
|
||||
isRead Boolean @default(false)
|
||||
repliedAt DateTime?
|
||||
psl=}
|
||||
//#endregion
|
||||
|
||||
//#region Newsletter
|
||||
|
||||
114
template/app/schema.prisma
Normal file
114
template/app/schema.prisma
Normal file
@@ -0,0 +1,114 @@
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
email String? @unique
|
||||
username String? @unique
|
||||
lastActiveTimestamp DateTime @default(now())
|
||||
isAdmin Boolean @default(false)
|
||||
|
||||
stripeId String? @unique
|
||||
checkoutSessionId String?
|
||||
subscriptionStatus String? // 'active', 'canceled', 'past_due', 'deleted'
|
||||
subscriptionPlan String? // 'hobby', 'pro'
|
||||
sendNewsletter Boolean @default(false)
|
||||
datePaid DateTime?
|
||||
credits Int @default(3)
|
||||
|
||||
gptResponses GptResponse[]
|
||||
contactFormMessages ContactFormMessage[]
|
||||
tasks Task[]
|
||||
files File[]
|
||||
}
|
||||
|
||||
model GptResponse {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
content String
|
||||
}
|
||||
|
||||
model Task {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
description String
|
||||
time String @default("1")
|
||||
isDone Boolean @default(false)
|
||||
}
|
||||
|
||||
model File {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
name String
|
||||
type String
|
||||
key String
|
||||
uploadUrl String
|
||||
}
|
||||
|
||||
model DailyStats {
|
||||
id Int @id @default(autoincrement())
|
||||
date DateTime @default(now()) @unique
|
||||
|
||||
totalViews Int @default(0)
|
||||
prevDayViewsChangePercent String @default("0")
|
||||
userCount Int @default(0)
|
||||
paidUserCount Int @default(0)
|
||||
userDelta Int @default(0)
|
||||
paidUserDelta Int @default(0)
|
||||
totalRevenue Float @default(0)
|
||||
totalProfit Float @default(0)
|
||||
|
||||
sources PageViewSource[]
|
||||
}
|
||||
|
||||
model PageViewSource {
|
||||
@@id([date, name])
|
||||
name String
|
||||
date DateTime @default(now())
|
||||
|
||||
dailyStats DailyStats? @relation(fields: [dailyStatsId], references: [id])
|
||||
dailyStatsId Int?
|
||||
|
||||
visitors Int
|
||||
}
|
||||
|
||||
model Logs {
|
||||
id Int @id @default(autoincrement())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
message String
|
||||
level String
|
||||
}
|
||||
|
||||
model ContactFormMessage {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
|
||||
content String
|
||||
isRead Boolean @default(false)
|
||||
repliedAt DateTime?
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type User } from 'wasp/entities';
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import { useQuery, getDailyStats } from 'wasp/client/operations';
|
||||
import TotalSignupsCard from './TotalSignupsCard';
|
||||
import TotalPageViewsCard from './TotalPageViewsCard';
|
||||
@@ -7,18 +7,15 @@ import TotalRevenueCard from './TotalRevenueCard';
|
||||
import RevenueAndProfitChart from './RevenueAndProfitChart';
|
||||
import SourcesTable from './PageViewSourcesTable';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin'
|
||||
|
||||
const Dashboard = ({ user }: { user: User }) => {
|
||||
const history = useHistory();
|
||||
if (!user.isAdmin) {
|
||||
history.push('/');
|
||||
}
|
||||
const Dashboard = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user })
|
||||
|
||||
const { data: stats, isLoading, error } = useQuery(getDailyStats);
|
||||
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
<div className='grid grid-cols-1 gap-4 md:grid-cols-2 md:gap-6 xl:grid-cols-4 2xl:gap-7.5'>
|
||||
<TotalPageViewsCard
|
||||
totalPageViews={stats?.dailyStats.totalViews}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import UsersTable from './UsersTable';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const Users = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({user})
|
||||
|
||||
const Users = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='Users' />
|
||||
<div className='flex flex-col gap-10'>
|
||||
<UsersTable />
|
||||
|
||||
@@ -1,265 +1,189 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const Calendar = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const Calendar = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<Breadcrumb pageName="Calendar" />
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='Calendar' />
|
||||
|
||||
{/* <!-- ====== Calendar Section Start ====== --> */}
|
||||
<div className="w-full max-w-full rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark">
|
||||
<table className="w-full">
|
||||
<div className='w-full max-w-full rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark'>
|
||||
<table className='w-full'>
|
||||
<thead>
|
||||
<tr className="grid grid-cols-7 rounded-t-sm bg-primary text-white">
|
||||
<th className="flex h-15 items-center justify-center rounded-tl-sm p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Sunday </span>
|
||||
<span className="block lg:hidden"> Sun </span>
|
||||
<tr className='grid grid-cols-7 rounded-t-sm bg-primary text-white'>
|
||||
<th className='flex h-15 items-center justify-center rounded-tl-sm p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Sunday </span>
|
||||
<span className='block lg:hidden'> Sun </span>
|
||||
</th>
|
||||
<th className="flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Monday </span>
|
||||
<span className="block lg:hidden"> Mon </span>
|
||||
<th className='flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Monday </span>
|
||||
<span className='block lg:hidden'> Mon </span>
|
||||
</th>
|
||||
<th className="flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Tuesday </span>
|
||||
<span className="block lg:hidden"> Tue </span>
|
||||
<th className='flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Tuesday </span>
|
||||
<span className='block lg:hidden'> Tue </span>
|
||||
</th>
|
||||
<th className="flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Wednesday </span>
|
||||
<span className="block lg:hidden"> Wed </span>
|
||||
<th className='flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Wednesday </span>
|
||||
<span className='block lg:hidden'> Wed </span>
|
||||
</th>
|
||||
<th className="flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Thursday </span>
|
||||
<span className="block lg:hidden"> Thur </span>
|
||||
<th className='flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Thursday </span>
|
||||
<span className='block lg:hidden'> Thur </span>
|
||||
</th>
|
||||
<th className="flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Friday </span>
|
||||
<span className="block lg:hidden"> Fri </span>
|
||||
<th className='flex h-15 items-center justify-center p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Friday </span>
|
||||
<span className='block lg:hidden'> Fri </span>
|
||||
</th>
|
||||
<th className="flex h-15 items-center justify-center rounded-tr-sm p-1 text-xs font-semibold sm:text-base xl:p-5">
|
||||
<span className="hidden lg:block"> Saturday </span>
|
||||
<span className="block lg:hidden"> Sat </span>
|
||||
<th className='flex h-15 items-center justify-center rounded-tr-sm p-1 text-xs font-semibold sm:text-base xl:p-5'>
|
||||
<span className='hidden lg:block'> Saturday </span>
|
||||
<span className='block lg:hidden'> Sat </span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{/* <!-- Line 1 --> */}
|
||||
<tr className="grid grid-cols-7">
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
1
|
||||
</span>
|
||||
<div className="group h-16 w-full flex-grow cursor-pointer py-1 md:h-30">
|
||||
<span className="group-hover:text-primary md:hidden">
|
||||
More
|
||||
</span>
|
||||
<div className="event invisible absolute left-2 z-99 mb-1 flex w-[200%] flex-col rounded-sm border-l-[3px] border-primary bg-gray px-3 py-1 text-left opacity-0 group-hover:visible group-hover:opacity-100 dark:bg-meta-4 md:visible md:w-[190%] md:opacity-100">
|
||||
<span className="event-name text-sm font-semibold text-black dark:text-white">
|
||||
<tr className='grid grid-cols-7'>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>1</span>
|
||||
<div className='group h-16 w-full flex-grow cursor-pointer py-1 md:h-30'>
|
||||
<span className='group-hover:text-primary md:hidden'>More</span>
|
||||
<div className='event invisible absolute left-2 z-99 mb-1 flex w-[200%] flex-col rounded-sm border-l-[3px] border-primary bg-gray px-3 py-1 text-left opacity-0 group-hover:visible group-hover:opacity-100 dark:bg-meta-4 md:visible md:w-[190%] md:opacity-100'>
|
||||
<span className='event-name text-sm font-semibold text-black dark:text-white'>
|
||||
Redesign Website
|
||||
</span>
|
||||
<span className="time text-sm font-medium text-black dark:text-white">
|
||||
1 Dec - 2 Dec
|
||||
</span>
|
||||
<span className='time text-sm font-medium text-black dark:text-white'>1 Dec - 2 Dec</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
2
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>2</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
3
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>3</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
4
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>4</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
5
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>5</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
6
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>6</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
7
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>7</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/* <!-- Line 1 --> */}
|
||||
{/* <!-- Line 2 --> */}
|
||||
<tr className="grid grid-cols-7">
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
8
|
||||
</span>
|
||||
<tr className='grid grid-cols-7'>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>8</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
9
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>9</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
10
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>10</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
11
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>11</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
12
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>12</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
13
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>13</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
14
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>14</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/* <!-- Line 2 --> */}
|
||||
{/* <!-- Line 3 --> */}
|
||||
<tr className="grid grid-cols-7">
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
15
|
||||
</span>
|
||||
<tr className='grid grid-cols-7'>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>15</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
16
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>16</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
17
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>17</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
18
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>18</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
19
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>19</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
20
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>20</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
21
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>21</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/* <!-- Line 3 --> */}
|
||||
{/* <!-- Line 4 --> */}
|
||||
<tr className="grid grid-cols-7">
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
22
|
||||
</span>
|
||||
<tr className='grid grid-cols-7'>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>22</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
23
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>23</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
24
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>24</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
25
|
||||
</span>
|
||||
<div className="group h-16 w-full flex-grow cursor-pointer py-1 md:h-30">
|
||||
<span className="group-hover:text-primary md:hidden">
|
||||
More
|
||||
</span>
|
||||
<div className="event invisible absolute left-2 z-99 mb-1 flex w-[300%] flex-col rounded-sm border-l-[3px] border-primary bg-gray px-3 py-1 text-left opacity-0 group-hover:visible group-hover:opacity-100 dark:bg-meta-4 md:visible md:w-[290%] md:opacity-100">
|
||||
<span className="event-name text-sm font-semibold text-black dark:text-white">
|
||||
App Design
|
||||
</span>
|
||||
<span className="time text-sm font-medium text-black dark:text-white">
|
||||
25 Dec - 27 Dec
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>25</span>
|
||||
<div className='group h-16 w-full flex-grow cursor-pointer py-1 md:h-30'>
|
||||
<span className='group-hover:text-primary md:hidden'>More</span>
|
||||
<div className='event invisible absolute left-2 z-99 mb-1 flex w-[300%] flex-col rounded-sm border-l-[3px] border-primary bg-gray px-3 py-1 text-left opacity-0 group-hover:visible group-hover:opacity-100 dark:bg-meta-4 md:visible md:w-[290%] md:opacity-100'>
|
||||
<span className='event-name text-sm font-semibold text-black dark:text-white'>App Design</span>
|
||||
<span className='time text-sm font-medium text-black dark:text-white'>25 Dec - 27 Dec</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
26
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>26</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
27
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>27</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
28
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>28</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/* <!-- Line 4 --> */}
|
||||
{/* <!-- Line 5 --> */}
|
||||
<tr className="grid grid-cols-7">
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
29
|
||||
</span>
|
||||
<tr className='grid grid-cols-7'>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>29</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
30
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>30</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
31
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>31</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
1
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>1</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
2
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>2</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
3
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>3</span>
|
||||
</td>
|
||||
<td className="ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31">
|
||||
<span className="font-medium text-black dark:text-white">
|
||||
4
|
||||
</span>
|
||||
<td className='ease relative h-20 cursor-pointer border border-stroke p-2 transition duration-500 hover:bg-gray dark:border-strokedark dark:hover:bg-meta-4 md:h-25 md:p-6 xl:h-31'>
|
||||
<span className='font-medium text-black dark:text-white'>4</span>
|
||||
</td>
|
||||
</tr>
|
||||
{/* <!-- Line 5 --> */}
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import BarChart from './BarChart';
|
||||
import PieChart from './PieChart';
|
||||
import DataStats from './DataStatsChart';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const Chart = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const Chart = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='Chart' />
|
||||
|
||||
<div className='grid grid-cols-12 gap-4 md:gap-6 2xl:gap-7.5'>
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import CheckboxOne from './CheckboxOne';
|
||||
import SwitcherOne from '../../dashboards/users/SwitcherOne';
|
||||
import SwitcherTwo from './SwitcherTwo';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const FormElements = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const FormElements = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='FormElements' />
|
||||
|
||||
<div className='grid grid-cols-1 gap-9 sm:grid-cols-2'>
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const FormLayout = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const FormLayout = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='FormLayout' />
|
||||
|
||||
<div className='grid grid-cols-1 gap-9 sm:grid-cols-2'>
|
||||
|
||||
@@ -1,220 +1,209 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import { FormEvent } from 'react';
|
||||
import toast from 'react-hot-toast';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const SettingsPage = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const SettingsPage = () => {
|
||||
const handleSubmit = (event: FormEvent<HTMLFormElement>) => {
|
||||
// TODO add toast provider / wrapper
|
||||
event.preventDefault();
|
||||
const confirmed = confirm("Are you sure you want to save the changes?");
|
||||
const confirmed = confirm('Are you sure you want to save the changes?');
|
||||
if (confirmed) {
|
||||
toast.success("Your changes have been saved successfully!");
|
||||
toast.success('Your changes have been saved successfully!');
|
||||
} else {
|
||||
toast.error("Your changes have not been saved!");
|
||||
toast.error('Your changes have not been saved!');
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<div className="mx-auto max-w-270">
|
||||
<DefaultLayout user={user}>
|
||||
<div className='mx-auto max-w-270'>
|
||||
<Breadcrumb pageName='Settings' />
|
||||
|
||||
<Breadcrumb pageName="Settings" />
|
||||
|
||||
<div className="grid grid-cols-5 gap-8">
|
||||
<div className="col-span-5 xl:col-span-3">
|
||||
<div className="rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark">
|
||||
<div className="border-b border-stroke py-4 px-7 dark:border-strokedark">
|
||||
<h3 className="font-medium text-black dark:text-white">
|
||||
Personal Information
|
||||
</h3>
|
||||
<div className='grid grid-cols-5 gap-8'>
|
||||
<div className='col-span-5 xl:col-span-3'>
|
||||
<div className='rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark'>
|
||||
<div className='border-b border-stroke py-4 px-7 dark:border-strokedark'>
|
||||
<h3 className='font-medium text-black dark:text-white'>Personal Information</h3>
|
||||
</div>
|
||||
<div className="p-7">
|
||||
<div className='p-7'>
|
||||
<form onSubmit={handleSubmit}>
|
||||
<div className="mb-5.5 flex flex-col gap-5.5 sm:flex-row">
|
||||
<div className="w-full sm:w-1/2">
|
||||
<label
|
||||
className="mb-3 block text-sm font-medium text-black dark:text-white"
|
||||
htmlFor="fullName"
|
||||
>
|
||||
<div className='mb-5.5 flex flex-col gap-5.5 sm:flex-row'>
|
||||
<div className='w-full sm:w-1/2'>
|
||||
<label className='mb-3 block text-sm font-medium text-black dark:text-white' htmlFor='fullName'>
|
||||
Full Name
|
||||
</label>
|
||||
<div className="relative">
|
||||
<span className="absolute left-4.5 top-4">
|
||||
<div className='relative'>
|
||||
<span className='absolute left-4.5 top-4'>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g opacity="0.8">
|
||||
<g opacity='0.8'>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M3.72039 12.887C4.50179 12.1056 5.5616 11.6666 6.66667 11.6666H13.3333C14.4384 11.6666 15.4982 12.1056 16.2796 12.887C17.061 13.6684 17.5 14.7282 17.5 15.8333V17.5C17.5 17.9602 17.1269 18.3333 16.6667 18.3333C16.2064 18.3333 15.8333 17.9602 15.8333 17.5V15.8333C15.8333 15.1703 15.5699 14.5344 15.1011 14.0655C14.6323 13.5967 13.9964 13.3333 13.3333 13.3333H6.66667C6.00363 13.3333 5.36774 13.5967 4.8989 14.0655C4.43006 14.5344 4.16667 15.1703 4.16667 15.8333V17.5C4.16667 17.9602 3.79357 18.3333 3.33333 18.3333C2.8731 18.3333 2.5 17.9602 2.5 17.5V15.8333C2.5 14.7282 2.93899 13.6684 3.72039 12.887Z"
|
||||
fill=""
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M3.72039 12.887C4.50179 12.1056 5.5616 11.6666 6.66667 11.6666H13.3333C14.4384 11.6666 15.4982 12.1056 16.2796 12.887C17.061 13.6684 17.5 14.7282 17.5 15.8333V17.5C17.5 17.9602 17.1269 18.3333 16.6667 18.3333C16.2064 18.3333 15.8333 17.9602 15.8333 17.5V15.8333C15.8333 15.1703 15.5699 14.5344 15.1011 14.0655C14.6323 13.5967 13.9964 13.3333 13.3333 13.3333H6.66667C6.00363 13.3333 5.36774 13.5967 4.8989 14.0655C4.43006 14.5344 4.16667 15.1703 4.16667 15.8333V17.5C4.16667 17.9602 3.79357 18.3333 3.33333 18.3333C2.8731 18.3333 2.5 17.9602 2.5 17.5V15.8333C2.5 14.7282 2.93899 13.6684 3.72039 12.887Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M9.99967 3.33329C8.61896 3.33329 7.49967 4.45258 7.49967 5.83329C7.49967 7.214 8.61896 8.33329 9.99967 8.33329C11.3804 8.33329 12.4997 7.214 12.4997 5.83329C12.4997 4.45258 11.3804 3.33329 9.99967 3.33329ZM5.83301 5.83329C5.83301 3.53211 7.69849 1.66663 9.99967 1.66663C12.3009 1.66663 14.1663 3.53211 14.1663 5.83329C14.1663 8.13448 12.3009 9.99996 9.99967 9.99996C7.69849 9.99996 5.83301 8.13448 5.83301 5.83329Z"
|
||||
fill=""
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M9.99967 3.33329C8.61896 3.33329 7.49967 4.45258 7.49967 5.83329C7.49967 7.214 8.61896 8.33329 9.99967 8.33329C11.3804 8.33329 12.4997 7.214 12.4997 5.83329C12.4997 4.45258 11.3804 3.33329 9.99967 3.33329ZM5.83301 5.83329C5.83301 3.53211 7.69849 1.66663 9.99967 1.66663C12.3009 1.66663 14.1663 3.53211 14.1663 5.83329C14.1663 8.13448 12.3009 9.99996 9.99967 9.99996C7.69849 9.99996 5.83301 8.13448 5.83301 5.83329Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
<input
|
||||
className="w-full rounded border border-stroke bg-gray py-3 pl-11.5 pr-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary"
|
||||
type="text"
|
||||
name="fullName"
|
||||
id="fullName"
|
||||
placeholder="Devid Jhon"
|
||||
defaultValue="Devid Jhon"
|
||||
className='w-full rounded border border-stroke bg-gray py-3 pl-11.5 pr-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary'
|
||||
type='text'
|
||||
name='fullName'
|
||||
id='fullName'
|
||||
placeholder='Devid Jhon'
|
||||
defaultValue='Devid Jhon'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-full sm:w-1/2">
|
||||
<div className='w-full sm:w-1/2'>
|
||||
<label
|
||||
className="mb-3 block text-sm font-medium text-black dark:text-white"
|
||||
htmlFor="phoneNumber"
|
||||
className='mb-3 block text-sm font-medium text-black dark:text-white'
|
||||
htmlFor='phoneNumber'
|
||||
>
|
||||
Phone Number
|
||||
</label>
|
||||
<input
|
||||
className="w-full rounded border border-stroke bg-gray py-3 px-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary"
|
||||
type="text"
|
||||
name="phoneNumber"
|
||||
id="phoneNumber"
|
||||
placeholder="+990 3343 7865"
|
||||
defaultValue="+990 3343 7865"
|
||||
className='w-full rounded border border-stroke bg-gray py-3 px-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary'
|
||||
type='text'
|
||||
name='phoneNumber'
|
||||
id='phoneNumber'
|
||||
placeholder='+990 3343 7865'
|
||||
defaultValue='+990 3343 7865'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mb-5.5">
|
||||
<label
|
||||
className="mb-3 block text-sm font-medium text-black dark:text-white"
|
||||
htmlFor="emailAddress"
|
||||
>
|
||||
<div className='mb-5.5'>
|
||||
<label className='mb-3 block text-sm font-medium text-black dark:text-white' htmlFor='emailAddress'>
|
||||
Email Address
|
||||
</label>
|
||||
<div className="relative">
|
||||
<span className="absolute left-4.5 top-4">
|
||||
<div className='relative'>
|
||||
<span className='absolute left-4.5 top-4'>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g opacity="0.8">
|
||||
<g opacity='0.8'>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M3.33301 4.16667C2.87658 4.16667 2.49967 4.54357 2.49967 5V15C2.49967 15.4564 2.87658 15.8333 3.33301 15.8333H16.6663C17.1228 15.8333 17.4997 15.4564 17.4997 15V5C17.4997 4.54357 17.1228 4.16667 16.6663 4.16667H3.33301ZM0.833008 5C0.833008 3.6231 1.9561 2.5 3.33301 2.5H16.6663C18.0432 2.5 19.1663 3.6231 19.1663 5V15C19.1663 16.3769 18.0432 17.5 16.6663 17.5H3.33301C1.9561 17.5 0.833008 16.3769 0.833008 15V5Z"
|
||||
fill=""
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M3.33301 4.16667C2.87658 4.16667 2.49967 4.54357 2.49967 5V15C2.49967 15.4564 2.87658 15.8333 3.33301 15.8333H16.6663C17.1228 15.8333 17.4997 15.4564 17.4997 15V5C17.4997 4.54357 17.1228 4.16667 16.6663 4.16667H3.33301ZM0.833008 5C0.833008 3.6231 1.9561 2.5 3.33301 2.5H16.6663C18.0432 2.5 19.1663 3.6231 19.1663 5V15C19.1663 16.3769 18.0432 17.5 16.6663 17.5H3.33301C1.9561 17.5 0.833008 16.3769 0.833008 15V5Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M0.983719 4.52215C1.24765 4.1451 1.76726 4.05341 2.1443 4.31734L9.99975 9.81615L17.8552 4.31734C18.2322 4.05341 18.7518 4.1451 19.0158 4.52215C19.2797 4.89919 19.188 5.4188 18.811 5.68272L10.4776 11.5161C10.1907 11.7169 9.80879 11.7169 9.52186 11.5161L1.18853 5.68272C0.811486 5.4188 0.719791 4.89919 0.983719 4.52215Z"
|
||||
fill=""
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M0.983719 4.52215C1.24765 4.1451 1.76726 4.05341 2.1443 4.31734L9.99975 9.81615L17.8552 4.31734C18.2322 4.05341 18.7518 4.1451 19.0158 4.52215C19.2797 4.89919 19.188 5.4188 18.811 5.68272L10.4776 11.5161C10.1907 11.7169 9.80879 11.7169 9.52186 11.5161L1.18853 5.68272C0.811486 5.4188 0.719791 4.89919 0.983719 4.52215Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
<input
|
||||
className="w-full rounded border border-stroke bg-gray py-3 pl-11.5 pr-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary"
|
||||
type="email"
|
||||
name="emailAddress"
|
||||
id="emailAddress"
|
||||
placeholder="devidjond45@gmail.com"
|
||||
defaultValue="devidjond45@gmail.com"
|
||||
className='w-full rounded border border-stroke bg-gray py-3 pl-11.5 pr-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary'
|
||||
type='email'
|
||||
name='emailAddress'
|
||||
id='emailAddress'
|
||||
placeholder='devidjond45@gmail.com'
|
||||
defaultValue='devidjond45@gmail.com'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mb-5.5">
|
||||
<label
|
||||
className="mb-3 block text-sm font-medium text-black dark:text-white"
|
||||
htmlFor="Username"
|
||||
>
|
||||
<div className='mb-5.5'>
|
||||
<label className='mb-3 block text-sm font-medium text-black dark:text-white' htmlFor='Username'>
|
||||
Username
|
||||
</label>
|
||||
<input
|
||||
className="w-full rounded border border-stroke bg-gray py-3 px-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary"
|
||||
type="text"
|
||||
name="Username"
|
||||
id="Username"
|
||||
placeholder="devidjhon24"
|
||||
defaultValue="devidjhon24"
|
||||
className='w-full rounded border border-stroke bg-gray py-3 px-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary'
|
||||
type='text'
|
||||
name='Username'
|
||||
id='Username'
|
||||
placeholder='devidjhon24'
|
||||
defaultValue='devidjhon24'
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="mb-5.5">
|
||||
<label
|
||||
className="mb-3 block text-sm font-medium text-black dark:text-white"
|
||||
htmlFor="Username"
|
||||
>
|
||||
<div className='mb-5.5'>
|
||||
<label className='mb-3 block text-sm font-medium text-black dark:text-white' htmlFor='Username'>
|
||||
BIO
|
||||
</label>
|
||||
<div className="relative">
|
||||
<span className="absolute left-4.5 top-4">
|
||||
<div className='relative'>
|
||||
<span className='absolute left-4.5 top-4'>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g opacity="0.8" clipPath="url(#clip0_88_10224)">
|
||||
<g opacity='0.8' clipPath='url(#clip0_88_10224)'>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M1.56524 3.23223C2.03408 2.76339 2.66997 2.5 3.33301 2.5H9.16634C9.62658 2.5 9.99967 2.8731 9.99967 3.33333C9.99967 3.79357 9.62658 4.16667 9.16634 4.16667H3.33301C3.11199 4.16667 2.90003 4.25446 2.74375 4.41074C2.58747 4.56702 2.49967 4.77899 2.49967 5V16.6667C2.49967 16.8877 2.58747 17.0996 2.74375 17.2559C2.90003 17.4122 3.11199 17.5 3.33301 17.5H14.9997C15.2207 17.5 15.4326 17.4122 15.5889 17.2559C15.7452 17.0996 15.833 16.8877 15.833 16.6667V10.8333C15.833 10.3731 16.2061 10 16.6663 10C17.1266 10 17.4997 10.3731 17.4997 10.8333V16.6667C17.4997 17.3297 17.2363 17.9656 16.7674 18.4344C16.2986 18.9033 15.6627 19.1667 14.9997 19.1667H3.33301C2.66997 19.1667 2.03408 18.9033 1.56524 18.4344C1.0964 17.9656 0.833008 17.3297 0.833008 16.6667V5C0.833008 4.33696 1.0964 3.70107 1.56524 3.23223Z"
|
||||
fill=""
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M1.56524 3.23223C2.03408 2.76339 2.66997 2.5 3.33301 2.5H9.16634C9.62658 2.5 9.99967 2.8731 9.99967 3.33333C9.99967 3.79357 9.62658 4.16667 9.16634 4.16667H3.33301C3.11199 4.16667 2.90003 4.25446 2.74375 4.41074C2.58747 4.56702 2.49967 4.77899 2.49967 5V16.6667C2.49967 16.8877 2.58747 17.0996 2.74375 17.2559C2.90003 17.4122 3.11199 17.5 3.33301 17.5H14.9997C15.2207 17.5 15.4326 17.4122 15.5889 17.2559C15.7452 17.0996 15.833 16.8877 15.833 16.6667V10.8333C15.833 10.3731 16.2061 10 16.6663 10C17.1266 10 17.4997 10.3731 17.4997 10.8333V16.6667C17.4997 17.3297 17.2363 17.9656 16.7674 18.4344C16.2986 18.9033 15.6627 19.1667 14.9997 19.1667H3.33301C2.66997 19.1667 2.03408 18.9033 1.56524 18.4344C1.0964 17.9656 0.833008 17.3297 0.833008 16.6667V5C0.833008 4.33696 1.0964 3.70107 1.56524 3.23223Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M16.6664 2.39884C16.4185 2.39884 16.1809 2.49729 16.0056 2.67253L8.25216 10.426L7.81167 12.188L9.57365 11.7475L17.3271 3.99402C17.5023 3.81878 17.6008 3.5811 17.6008 3.33328C17.6008 3.08545 17.5023 2.84777 17.3271 2.67253C17.1519 2.49729 16.9142 2.39884 16.6664 2.39884ZM14.8271 1.49402C15.3149 1.00622 15.9765 0.732178 16.6664 0.732178C17.3562 0.732178 18.0178 1.00622 18.5056 1.49402C18.9934 1.98182 19.2675 2.64342 19.2675 3.33328C19.2675 4.02313 18.9934 4.68473 18.5056 5.17253L10.5889 13.0892C10.4821 13.196 10.3483 13.2718 10.2018 13.3084L6.86847 14.1417C6.58449 14.2127 6.28409 14.1295 6.0771 13.9225C5.87012 13.7156 5.78691 13.4151 5.85791 13.1312L6.69124 9.79783C6.72787 9.65131 6.80364 9.51749 6.91044 9.41069L14.8271 1.49402Z"
|
||||
fill=""
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M16.6664 2.39884C16.4185 2.39884 16.1809 2.49729 16.0056 2.67253L8.25216 10.426L7.81167 12.188L9.57365 11.7475L17.3271 3.99402C17.5023 3.81878 17.6008 3.5811 17.6008 3.33328C17.6008 3.08545 17.5023 2.84777 17.3271 2.67253C17.1519 2.49729 16.9142 2.39884 16.6664 2.39884ZM14.8271 1.49402C15.3149 1.00622 15.9765 0.732178 16.6664 0.732178C17.3562 0.732178 18.0178 1.00622 18.5056 1.49402C18.9934 1.98182 19.2675 2.64342 19.2675 3.33328C19.2675 4.02313 18.9934 4.68473 18.5056 5.17253L10.5889 13.0892C10.4821 13.196 10.3483 13.2718 10.2018 13.3084L6.86847 14.1417C6.58449 14.2127 6.28409 14.1295 6.0771 13.9225C5.87012 13.7156 5.78691 13.4151 5.85791 13.1312L6.69124 9.79783C6.72787 9.65131 6.80364 9.51749 6.91044 9.41069L14.8271 1.49402Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_88_10224">
|
||||
<rect width="20" height="20" fill="white" />
|
||||
<clipPath id='clip0_88_10224'>
|
||||
<rect width='20' height='20' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
</span>
|
||||
|
||||
<textarea
|
||||
className="w-full rounded border border-stroke bg-gray py-3 pl-11.5 pr-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary"
|
||||
name="bio"
|
||||
id="bio"
|
||||
className='w-full rounded border border-stroke bg-gray py-3 pl-11.5 pr-4.5 text-black focus:border-primary focus-visible:outline-none dark:border-strokedark dark:bg-meta-4 dark:text-white dark:focus:border-primary'
|
||||
name='bio'
|
||||
id='bio'
|
||||
rows={6}
|
||||
placeholder="Write your bio here"
|
||||
defaultValue="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque posuere fermentum urna, eu condimentum mauris tempus ut. Donec fermentum blandit aliquet."
|
||||
placeholder='Write your bio here'
|
||||
defaultValue='Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque posuere fermentum urna, eu condimentum mauris tempus ut. Donec fermentum blandit aliquet.'
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-end gap-4.5">
|
||||
<div className='flex justify-end gap-4.5'>
|
||||
<button
|
||||
className="flex justify-center rounded border border-stroke py-2 px-6 font-medium text-black hover:shadow-1 dark:border-strokedark dark:text-white"
|
||||
type="submit"
|
||||
className='flex justify-center rounded border border-stroke py-2 px-6 font-medium text-black hover:shadow-1 dark:border-strokedark dark:text-white'
|
||||
type='submit'
|
||||
>
|
||||
Cancel
|
||||
</button>
|
||||
<button
|
||||
className="flex justify-center rounded bg-primary py-2 px-6 font-medium text-gray hover:shadow-1"
|
||||
type="submit"
|
||||
className='flex justify-center rounded bg-primary py-2 px-6 font-medium text-gray hover:shadow-1'
|
||||
type='submit'
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
@@ -223,91 +212,74 @@ const SettingsPage = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-5 xl:col-span-2">
|
||||
<div className="rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark">
|
||||
<div className="border-b border-stroke py-4 px-7 dark:border-strokedark">
|
||||
<h3 className="font-medium text-black dark:text-white">
|
||||
Your Photo
|
||||
</h3>
|
||||
</div>
|
||||
<div className="p-7">
|
||||
<form action="#">
|
||||
<div className="mb-4 flex items-center gap-3">
|
||||
<div className="h-14 w-14 rounded-full">
|
||||
{/* <img src={userThree} alt="User" /> */}
|
||||
<div className='col-span-5 xl:col-span-2'>
|
||||
<div className='rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark'>
|
||||
<div className='border-b border-stroke py-4 px-7 dark:border-strokedark'>
|
||||
<h3 className='font-medium text-black dark:text-white'>Your Photo</h3>
|
||||
</div>
|
||||
<div className='p-7'>
|
||||
<form action='#'>
|
||||
<div className='mb-4 flex items-center gap-3'>
|
||||
<div className='h-14 w-14 rounded-full'>{/* <img src={userThree} alt="User" /> */}</div>
|
||||
<div>
|
||||
<span className="mb-1.5 text-black dark:text-white">
|
||||
Edit your photo
|
||||
</span>
|
||||
<span className="flex gap-2.5">
|
||||
<button className="text-sm hover:text-primary">
|
||||
Delete
|
||||
</button>
|
||||
<button className="text-sm hover:text-primary">
|
||||
Update
|
||||
</button>
|
||||
<span className='mb-1.5 text-black dark:text-white'>Edit your photo</span>
|
||||
<span className='flex gap-2.5'>
|
||||
<button className='text-sm hover:text-primary'>Delete</button>
|
||||
<button className='text-sm hover:text-primary'>Update</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="FileUpload"
|
||||
className="relative mb-5.5 block w-full cursor-pointer appearance-none rounded border-2 border-dashed border-primary bg-gray py-4 px-4 dark:bg-meta-4 sm:py-7.5"
|
||||
id='FileUpload'
|
||||
className='relative mb-5.5 block w-full cursor-pointer appearance-none rounded border-2 border-dashed border-primary bg-gray py-4 px-4 dark:bg-meta-4 sm:py-7.5'
|
||||
>
|
||||
<input
|
||||
type="file"
|
||||
accept="image/*"
|
||||
className="absolute inset-0 z-50 m-0 h-full w-full cursor-pointer p-0 opacity-0 outline-none"
|
||||
type='file'
|
||||
accept='image/*'
|
||||
className='absolute inset-0 z-50 m-0 h-full w-full cursor-pointer p-0 opacity-0 outline-none'
|
||||
/>
|
||||
<div className="flex flex-col items-center justify-center space-y-3">
|
||||
<span className="flex h-10 w-10 items-center justify-center rounded-full border border-stroke bg-white dark:border-strokedark dark:bg-boxdark">
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<div className='flex flex-col items-center justify-center space-y-3'>
|
||||
<span className='flex h-10 w-10 items-center justify-center rounded-full border border-stroke bg-white dark:border-strokedark dark:bg-boxdark'>
|
||||
<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M1.99967 9.33337C2.36786 9.33337 2.66634 9.63185 2.66634 10V12.6667C2.66634 12.8435 2.73658 13.0131 2.8616 13.1381C2.98663 13.2631 3.1562 13.3334 3.33301 13.3334H12.6663C12.8431 13.3334 13.0127 13.2631 13.1377 13.1381C13.2628 13.0131 13.333 12.8435 13.333 12.6667V10C13.333 9.63185 13.6315 9.33337 13.9997 9.33337C14.3679 9.33337 14.6663 9.63185 14.6663 10V12.6667C14.6663 13.1971 14.4556 13.7058 14.0806 14.0809C13.7055 14.456 13.1968 14.6667 12.6663 14.6667H3.33301C2.80257 14.6667 2.29387 14.456 1.91879 14.0809C1.54372 13.7058 1.33301 13.1971 1.33301 12.6667V10C1.33301 9.63185 1.63148 9.33337 1.99967 9.33337Z"
|
||||
fill="#3C50E0"
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M1.99967 9.33337C2.36786 9.33337 2.66634 9.63185 2.66634 10V12.6667C2.66634 12.8435 2.73658 13.0131 2.8616 13.1381C2.98663 13.2631 3.1562 13.3334 3.33301 13.3334H12.6663C12.8431 13.3334 13.0127 13.2631 13.1377 13.1381C13.2628 13.0131 13.333 12.8435 13.333 12.6667V10C13.333 9.63185 13.6315 9.33337 13.9997 9.33337C14.3679 9.33337 14.6663 9.63185 14.6663 10V12.6667C14.6663 13.1971 14.4556 13.7058 14.0806 14.0809C13.7055 14.456 13.1968 14.6667 12.6663 14.6667H3.33301C2.80257 14.6667 2.29387 14.456 1.91879 14.0809C1.54372 13.7058 1.33301 13.1971 1.33301 12.6667V10C1.33301 9.63185 1.63148 9.33337 1.99967 9.33337Z'
|
||||
fill='#3C50E0'
|
||||
/>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M7.5286 1.52864C7.78894 1.26829 8.21106 1.26829 8.4714 1.52864L11.8047 4.86197C12.0651 5.12232 12.0651 5.54443 11.8047 5.80478C11.5444 6.06513 11.1223 6.06513 10.8619 5.80478L8 2.94285L5.13807 5.80478C4.87772 6.06513 4.45561 6.06513 4.19526 5.80478C3.93491 5.54443 3.93491 5.12232 4.19526 4.86197L7.5286 1.52864Z"
|
||||
fill="#3C50E0"
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M7.5286 1.52864C7.78894 1.26829 8.21106 1.26829 8.4714 1.52864L11.8047 4.86197C12.0651 5.12232 12.0651 5.54443 11.8047 5.80478C11.5444 6.06513 11.1223 6.06513 10.8619 5.80478L8 2.94285L5.13807 5.80478C4.87772 6.06513 4.45561 6.06513 4.19526 5.80478C3.93491 5.54443 3.93491 5.12232 4.19526 4.86197L7.5286 1.52864Z'
|
||||
fill='#3C50E0'
|
||||
/>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M7.99967 1.33337C8.36786 1.33337 8.66634 1.63185 8.66634 2.00004V10C8.66634 10.3682 8.36786 10.6667 7.99967 10.6667C7.63148 10.6667 7.33301 10.3682 7.33301 10V2.00004C7.33301 1.63185 7.63148 1.33337 7.99967 1.33337Z"
|
||||
fill="#3C50E0"
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M7.99967 1.33337C8.36786 1.33337 8.66634 1.63185 8.66634 2.00004V10C8.66634 10.3682 8.36786 10.6667 7.99967 10.6667C7.63148 10.6667 7.33301 10.3682 7.33301 10V2.00004C7.33301 1.63185 7.63148 1.33337 7.99967 1.33337Z'
|
||||
fill='#3C50E0'
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<p>
|
||||
<span className="text-primary">Click to upload</span> or
|
||||
drag and drop
|
||||
<span className='text-primary'>Click to upload</span> or drag and drop
|
||||
</p>
|
||||
<p className="mt-1.5">SVG, PNG, JPG or GIF</p>
|
||||
<p className='mt-1.5'>SVG, PNG, JPG or GIF</p>
|
||||
<p>(max, 800 X 800px)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-end gap-4.5">
|
||||
<div className='flex justify-end gap-4.5'>
|
||||
<button
|
||||
className="flex justify-center rounded border border-stroke py-2 px-6 font-medium text-black hover:shadow-1 dark:border-strokedark dark:text-white"
|
||||
type="submit"
|
||||
className='flex justify-center rounded border border-stroke py-2 px-6 font-medium text-black hover:shadow-1 dark:border-strokedark dark:text-white'
|
||||
type='submit'
|
||||
>
|
||||
Cancel
|
||||
</button>
|
||||
<button
|
||||
className="flex justify-center rounded bg-primary py-2 px-6 font-medium text-gray hover:bg-opacity-70"
|
||||
type="submit"
|
||||
className='flex justify-center rounded bg-primary py-2 px-6 font-medium text-gray hover:bg-opacity-70'
|
||||
type='submit'
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const Alerts = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const Alerts = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='Alerts' />
|
||||
|
||||
<div className='rounded-sm border border-stroke bg-white p-4 shadow-default dark:border-strokedark dark:bg-boxdark md:p-6 xl:p-9'>
|
||||
|
||||
@@ -1,106 +1,108 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import { Link } from 'react-router-dom';
|
||||
import Breadcrumb from '../../layout/Breadcrumb';
|
||||
import DefaultLayout from '../../layout/DefaultLayout';
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from '../../useRedirectHomeUnlessUserIsAdmin';
|
||||
|
||||
const Buttons = ({ user }: { user: AuthUser }) => {
|
||||
useRedirectHomeUnlessUserIsAdmin({ user });
|
||||
|
||||
const Buttons = () => {
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<Breadcrumb pageName="Buttons" />
|
||||
<DefaultLayout user={user}>
|
||||
<Breadcrumb pageName='Buttons' />
|
||||
|
||||
{/* <!-- Normal Button Items --> */}
|
||||
<div className="mb-10 rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark">
|
||||
<div className="border-b border-stroke px-7 py-4 dark:border-strokedark">
|
||||
<h3 className="font-medium text-black dark:text-white">
|
||||
Normal Button
|
||||
</h3>
|
||||
<div className='mb-10 rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark'>
|
||||
<div className='border-b border-stroke px-7 py-4 dark:border-strokedark'>
|
||||
<h3 className='font-medium text-black dark:text-white'>Normal Button</h3>
|
||||
</div>
|
||||
|
||||
<div className="p-4 md:p-6 xl:p-9">
|
||||
<div className="mb-7.5 flex flex-wrap gap-5 xl:gap-20">
|
||||
<div className='p-4 md:p-6 xl:p-9'>
|
||||
<div className='mb-7.5 flex flex-wrap gap-5 xl:gap-20'>
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-md bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-md bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-full bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-full bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-md border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-md border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="mb-7.5 flex flex-wrap gap-5 xl:gap-20">
|
||||
<div className='mb-7.5 flex flex-wrap gap-5 xl:gap-20'>
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-md bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-md bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-full bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-full bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-md border border-meta-3 py-4 px-10 text-center font-medium text-meta-3 hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-md border border-meta-3 py-4 px-10 text-center font-medium text-meta-3 hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-5 xl:gap-20">
|
||||
<div className='flex flex-wrap gap-5 xl:gap-20'>
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-md bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-md bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-full bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-full bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center rounded-md border border-black py-4 px-10 text-center font-medium text-black hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center rounded-md border border-black py-4 px-10 text-center font-medium text-black hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
Button
|
||||
</Link>
|
||||
@@ -109,35 +111,33 @@ const Buttons = () => {
|
||||
</div>
|
||||
|
||||
{/* <!-- Button With Icon Items --> */}
|
||||
<div className="mb-10 rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark">
|
||||
<div className="border-b border-stroke px-7 py-4 dark:border-strokedark">
|
||||
<h3 className="font-medium text-black dark:text-white">
|
||||
Button With Icon
|
||||
</h3>
|
||||
<div className='mb-10 rounded-sm border border-stroke bg-white shadow-default dark:border-strokedark dark:bg-boxdark'>
|
||||
<div className='border-b border-stroke px-7 py-4 dark:border-strokedark'>
|
||||
<h3 className='font-medium text-black dark:text-white'>Button With Icon</h3>
|
||||
</div>
|
||||
|
||||
<div className="p-4 md:p-6 xl:p-9">
|
||||
<div className="mb-7.5 flex flex-wrap gap-5 xl:gap-7.5">
|
||||
<div className='p-4 md:p-6 xl:p-9'>
|
||||
<div className='mb-7.5 flex flex-wrap gap-5 xl:gap-7.5'>
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z"
|
||||
fill=""
|
||||
d='M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z"
|
||||
fill=""
|
||||
d='M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -145,25 +145,25 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z"
|
||||
fill=""
|
||||
d='M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z"
|
||||
fill=""
|
||||
d='M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -171,25 +171,25 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z"
|
||||
fill=""
|
||||
d='M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z"
|
||||
fill=""
|
||||
d='M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -197,25 +197,25 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z"
|
||||
fill=""
|
||||
d='M17.8125 16.6656H2.1875C1.69022 16.6656 1.21331 16.4681 0.861675 16.1164C0.510044 15.7648 0.3125 15.2879 0.3125 14.7906V5.20935C0.3125 4.71207 0.510044 4.23516 0.861675 3.88353C1.21331 3.53189 1.69022 3.33435 2.1875 3.33435H17.8125C18.3098 3.33435 18.7867 3.53189 19.1383 3.88353C19.49 4.23516 19.6875 4.71207 19.6875 5.20935V14.7906C19.6875 15.2879 19.49 15.7648 19.1383 16.1164C18.7867 16.4681 18.3098 16.6656 17.8125 16.6656ZM2.1875 4.58435C2.02174 4.58435 1.86277 4.6502 1.74556 4.76741C1.62835 4.88462 1.5625 5.04359 1.5625 5.20935V14.7906C1.5625 14.9564 1.62835 15.1153 1.74556 15.2325C1.86277 15.3498 2.02174 15.4156 2.1875 15.4156H17.8125C17.9783 15.4156 18.1372 15.3498 18.2544 15.2325C18.3717 15.1153 18.4375 14.9564 18.4375 14.7906V5.20935C18.4375 5.04359 18.3717 4.88462 18.2544 4.76741C18.1372 4.6502 17.9783 4.58435 17.8125 4.58435H2.1875Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z"
|
||||
fill=""
|
||||
d='M9.9996 10.6438C9.63227 10.6437 9.2721 10.5421 8.95898 10.35L0.887102 5.45001C0.744548 5.36381 0.642073 5.22452 0.602222 5.06277C0.58249 4.98268 0.578725 4.89948 0.591144 4.81794C0.603563 4.73639 0.631922 4.65809 0.674602 4.58751C0.717281 4.51692 0.773446 4.45543 0.839888 4.40655C0.906331 4.35767 0.981751 4.32236 1.06184 4.30263C1.22359 4.26277 1.39455 4.28881 1.5371 4.37501L9.60898 9.28126C9.7271 9.35331 9.8628 9.39143 10.0012 9.39143C10.1395 9.39143 10.2752 9.35331 10.3934 9.28126L18.4621 4.37501C18.5323 4.33233 18.6102 4.30389 18.6913 4.29131C18.7725 4.27873 18.8554 4.28227 18.9352 4.30171C19.015 4.32115 19.0901 4.35612 19.1564 4.40462C19.2227 4.45312 19.2788 4.51421 19.3215 4.58438C19.3642 4.65456 19.3926 4.73245 19.4052 4.81362C19.4177 4.89478 19.4142 4.97763 19.3948 5.05743C19.3753 5.13723 19.3404 5.21242 19.2919 5.27871C19.2434 5.34499 19.1823 5.40108 19.1121 5.44376L11.0402 10.35C10.7271 10.5421 10.3669 10.6437 9.9996 10.6438Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -223,31 +223,31 @@ const Buttons = () => {
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="mb-7.5 flex flex-wrap gap-5 xl:gap-7.5">
|
||||
<div className='mb-7.5 flex flex-wrap gap-5 xl:gap-7.5'>
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-md bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-md bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z"
|
||||
fill=""
|
||||
d='M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z"
|
||||
fill=""
|
||||
d='M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z"
|
||||
fill=""
|
||||
d='M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -255,29 +255,29 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-md bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-md bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z"
|
||||
fill=""
|
||||
d='M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z"
|
||||
fill=""
|
||||
d='M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z"
|
||||
fill=""
|
||||
d='M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -285,29 +285,29 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-md bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-md bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z"
|
||||
fill=""
|
||||
d='M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z"
|
||||
fill=""
|
||||
d='M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z"
|
||||
fill=""
|
||||
d='M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -315,29 +315,29 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-md border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-md border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d="M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z"
|
||||
fill=""
|
||||
d='M18.0758 0.849976H16.0695C15.819 0.851233 15.5774 0.942521 15.3886 1.10717C15.1999 1.27183 15.0766 1.49887 15.0414 1.74685L14.4789 5.80935H13.3976V3.4031C13.3952 3.1654 13.3002 2.93802 13.1327 2.76935C12.9652 2.60068 12.7384 2.50403 12.5008 2.49998H10.082C10.0553 2.27763 9.94981 2.07221 9.78472 1.92089C9.61964 1.76956 9.40584 1.68233 9.18202 1.67498H6.45389C6.32885 1.67815 6.20571 1.70632 6.09172 1.75782C5.97773 1.80932 5.8752 1.8831 5.79017 1.97484C5.70513 2.06657 5.63932 2.17439 5.59659 2.29195C5.55387 2.40951 5.5351 2.53443 5.54139 2.65935V3.32498H3.15077C2.91396 3.32162 2.68544 3.41207 2.51507 3.57659C2.3447 3.7411 2.24632 3.96632 2.24139 4.2031V5.81248C2.0999 5.81539 1.96078 5.84937 1.83387 5.91201C1.70697 5.97466 1.59538 6.06443 1.50702 6.17498C1.41616 6.29094 1.35267 6.42593 1.32128 6.56986C1.2899 6.7138 1.29143 6.86297 1.32577 7.00623C1.32443 7.02182 1.32443 7.0375 1.32577 7.0531L3.23827 12.9375C3.29323 13.1432 3.4153 13.3247 3.58513 13.4532C3.75496 13.5818 3.96282 13.6499 4.17577 13.6468H13.3883C13.7379 13.6464 14.0756 13.5197 14.3391 13.29C14.6027 13.0603 14.7744 12.7431 14.8226 12.3968L16.2508 2.09998H18.0726C18.2384 2.09998 18.3974 2.03413 18.5146 1.91692C18.6318 1.79971 18.6976 1.64074 18.6976 1.47498C18.6976 1.30922 18.6318 1.15024 18.5146 1.03303C18.3974 0.915824 18.2384 0.849976 18.0726 0.849976H18.0758ZM12.1383 5.79373H10.0945V3.74998H12.1476L12.1383 5.79373ZM6.79139 2.9156H8.84452V3.39998V5.7906H6.79139V2.9156ZM3.49139 4.5656H5.54139V5.79373H3.49139V4.5656ZM13.5851 12.225C13.579 12.2727 13.5556 12.3166 13.5193 12.3483C13.4831 12.38 13.4364 12.3972 13.3883 12.3968H4.37577L2.65389 7.04998H14.3039L13.5851 12.225Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z"
|
||||
fill=""
|
||||
d='M5.31172 15.1125C4.9118 15.1094 4.51997 15.2252 4.18594 15.4451C3.85191 15.665 3.59073 15.9792 3.43553 16.3478C3.28034 16.7164 3.23813 17.1228 3.31425 17.5154C3.39037 17.908 3.58139 18.2692 3.86309 18.5531C4.14478 18.837 4.50445 19.0308 4.89647 19.11C5.28849 19.1891 5.6952 19.1501 6.06499 18.9978C6.43477 18.8454 6.75099 18.5867 6.97351 18.2544C7.19603 17.9221 7.31483 17.5312 7.31485 17.1312C7.31608 16.8671 7.26522 16.6053 7.16518 16.3608C7.06515 16.1164 6.91789 15.894 6.73184 15.7065C6.5458 15.519 6.3246 15.3701 6.08092 15.2681C5.83725 15.1662 5.57586 15.1133 5.31172 15.1125ZM5.31172 17.9C5.15905 17.9031 5.00891 17.8607 4.88045 17.7781C4.75199 17.6955 4.65103 17.5766 4.59045 17.4364C4.52986 17.2962 4.51239 17.1412 4.54026 16.9911C4.56814 16.8409 4.64009 16.7025 4.74695 16.5934C4.85382 16.4843 4.99075 16.4096 5.14028 16.3786C5.28981 16.3477 5.44518 16.3619 5.58656 16.4196C5.72794 16.4773 5.84894 16.5758 5.93412 16.7026C6.0193 16.8293 6.06481 16.9785 6.06484 17.1312C6.06651 17.3329 5.9882 17.5271 5.84705 17.6712C5.70589 17.8152 5.51341 17.8975 5.31172 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
<path
|
||||
d="M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z"
|
||||
fill=""
|
||||
d='M12.9504 15.1125C12.5505 15.1094 12.1586 15.2252 11.8246 15.4451C11.4906 15.665 11.2294 15.9792 11.0742 16.3478C10.919 16.7164 10.8768 17.1228 10.9529 17.5154C11.029 17.908 11.2201 18.2692 11.5018 18.5531C11.7835 18.837 12.1431 19.0308 12.5351 19.11C12.9272 19.1891 13.3339 19.1501 13.7037 18.9978C14.0734 18.8454 14.3897 18.5867 14.6122 18.2544C14.8347 17.9221 14.9535 17.5312 14.9535 17.1312C14.9552 16.598 14.7452 16.086 14.3696 15.7075C13.994 15.329 13.4836 15.115 12.9504 15.1125ZM12.9504 17.9C12.7977 17.9031 12.6476 17.8607 12.5191 17.7781C12.3907 17.6955 12.2897 17.5766 12.2291 17.4364C12.1685 17.2962 12.1511 17.1412 12.1789 16.9911C12.2068 16.8409 12.2788 16.7025 12.3856 16.5934C12.4925 16.4843 12.6294 16.4096 12.779 16.3786C12.9285 16.3477 13.0838 16.3619 13.2252 16.4196C13.3666 16.4773 13.4876 16.5758 13.5728 16.7026C13.658 16.8293 13.7035 16.9785 13.7035 17.1312C13.7052 17.3329 13.6269 17.5271 13.4857 17.6712C13.3446 17.8152 13.1521 17.8975 12.9504 17.9Z'
|
||||
fill=''
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@@ -345,29 +345,29 @@ const Buttons = () => {
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-5 xl:gap-7.5">
|
||||
<div className='flex flex-wrap gap-5 xl:gap-7.5'>
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-full bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-full bg-primary py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g clipPath="url(#clip0_182_46495)">
|
||||
<g clipPath='url(#clip0_182_46495)'>
|
||||
<path
|
||||
d="M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z"
|
||||
fill=""
|
||||
d='M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_182_46495">
|
||||
<rect width="20" height="20" fill="white" />
|
||||
<clipPath id='clip0_182_46495'>
|
||||
<rect width='20' height='20' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
@@ -376,27 +376,27 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-full bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-full bg-meta-3 py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g clipPath="url(#clip0_182_46495)">
|
||||
<g clipPath='url(#clip0_182_46495)'>
|
||||
<path
|
||||
d="M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z"
|
||||
fill=""
|
||||
d='M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_182_46495">
|
||||
<rect width="20" height="20" fill="white" />
|
||||
<clipPath id='clip0_182_46495'>
|
||||
<rect width='20' height='20' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
@@ -405,27 +405,27 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-full bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-full bg-black py-4 px-10 text-center font-medium text-white hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g clipPath="url(#clip0_182_46495)">
|
||||
<g clipPath='url(#clip0_182_46495)'>
|
||||
<path
|
||||
d="M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z"
|
||||
fill=""
|
||||
d='M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_182_46495">
|
||||
<rect width="20" height="20" fill="white" />
|
||||
<clipPath id='clip0_182_46495'>
|
||||
<rect width='20' height='20' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
@@ -434,27 +434,27 @@ const Buttons = () => {
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
to="#"
|
||||
className="inline-flex items-center justify-center gap-2.5 rounded-full border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10"
|
||||
to='#'
|
||||
className='inline-flex items-center justify-center gap-2.5 rounded-full border border-primary py-4 px-10 text-center font-medium text-primary hover:bg-opacity-90 lg:px-8 xl:px-10'
|
||||
>
|
||||
<span>
|
||||
<svg
|
||||
className="fill-current"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className='fill-current'
|
||||
width='20'
|
||||
height='20'
|
||||
viewBox='0 0 20 20'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g clipPath="url(#clip0_182_46495)">
|
||||
<g clipPath='url(#clip0_182_46495)'>
|
||||
<path
|
||||
d="M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z"
|
||||
fill=""
|
||||
d='M18.875 11.4375C18.3125 10.8438 17.5625 10.5312 16.75 10.5312C16.125 10.5312 15.5625 10.7188 15.0625 11.0938C15 11.125 14.9688 11.1562 14.9062 11.2188C14.8438 11.1875 14.8125 11.125 14.75 11.0938C14.25 10.7188 13.6875 10.5312 13.0625 10.5312C12.9062 10.5312 12.7812 10.5312 12.6562 10.5625C11.7188 9.5 10.5625 8.75 9.3125 8.40625C10.625 7.75 11.5312 6.40625 11.5312 4.875C11.5312 2.6875 9.75 0.9375 7.59375 0.9375C5.40625 0.9375 3.65625 2.71875 3.65625 4.875C3.65625 6.4375 4.5625 7.78125 5.875 8.40625C4.5625 8.78125 3.40625 9.53125 2.4375 10.6562C1.125 12.2188 0.375 14.4062 0.3125 16.7812C0.3125 17.0312 0.4375 17.25 0.65625 17.3438C1.5 17.75 4.4375 19.0938 7.59375 19.0938C9.28125 19.0938 10.8438 18.8125 10.9062 18.8125C11.25 18.75 11.4688 18.4375 11.4062 18.0938C11.3438 17.75 11.0312 17.5312 10.6875 17.5938C10.6875 17.5938 9.15625 17.875 7.59375 17.875C5.0625 17.8438 2.65625 16.875 1.5625 16.375C1.65625 14.4375 2.3125 12.7187 3.375 11.4375C4.46875 10.125 5.96875 9.40625 7.59375 9.40625C9.03125 9.40625 10.375 10 11.4375 11.0312C11.2812 11.1562 11.125 11.2812 11 11.4062C10.4688 11.9688 10.1875 12.75 10.1875 13.5938C10.1875 14.4375 10.5 15.2188 11.1562 16C11.6875 16.6562 12.4375 17.2812 13.2812 18L13.3125 18.0312C13.5937 18.25 13.9062 18.5312 14.2188 18.8125C14.4062 19 14.6875 19.0938 14.9375 19.0938C15.1875 19.0938 15.4687 19 15.6562 18.8125C16 18.5312 16.3125 18.25 16.5938 18C17.4375 17.2812 18.1875 16.6562 18.7188 16C19.375 15.2188 19.6875 14.4375 19.6875 13.5938C19.6875 12.7812 19.4062 12.0312 18.875 11.4375ZM4.875 4.875C4.875 3.375 6.09375 2.1875 7.5625 2.1875C9.0625 2.1875 10.25 3.40625 10.25 4.875C10.25 6.375 9.03125 7.5625 7.5625 7.5625C6.09375 7.5625 4.875 6.34375 4.875 4.875ZM17.75 15.2188C17.2812 15.7812 16.5938 16.375 15.7812 17.0625C15.5312 17.2812 15.2188 17.5312 14.9062 17.7812C14.625 17.5312 14.3438 17.2812 14.0938 17.0938L14.0625 17.0625C13.25 16.375 12.5625 15.7812 12.0938 15.2188C11.625 14.6562 11.4062 14.1562 11.4062 13.625C11.4062 13.0937 11.5938 12.625 11.9062 12.2812C12.2188 11.9375 12.6563 11.75 13.0938 11.75C13.4375 11.75 13.75 11.8438 14 12.0625C14.125 12.1562 14.2188 12.25 14.3125 12.375C14.5938 12.7188 15.1875 12.7188 15.5 12.375C15.5938 12.25 15.7187 12.1562 15.8125 12.0625C16.0937 11.8438 16.4062 11.75 16.7188 11.75C17.1875 11.75 17.5938 11.9375 17.9062 12.2812C18.2188 12.625 18.4062 13.0937 18.4062 13.625C18.4375 14.1875 18.2188 14.6562 17.75 15.2188Z'
|
||||
fill=''
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_182_46495">
|
||||
<rect width="20" height="20" fill="white" />
|
||||
<clipPath id='clip0_182_46495'>
|
||||
<rect width='20' height='20' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import { useAuth } from 'wasp/client/auth';
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import { useState, ReactNode, FC } from 'react';
|
||||
import Header from './Header';
|
||||
import Sidebar from './Sidebar';
|
||||
|
||||
interface Props {
|
||||
user: AuthUser;
|
||||
children?: ReactNode;
|
||||
}
|
||||
|
||||
const DefaultLayout: FC<Props> = ({ children }) => {
|
||||
const DefaultLayout: FC<Props> = ({ children, user }) => {
|
||||
const [sidebarOpen, setSidebarOpen] = useState(false);
|
||||
const { data: user } = useAuth();
|
||||
|
||||
return (
|
||||
<div className='dark:bg-boxdark-2 dark:text-bodydark'>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type AuthUser } from 'wasp/auth/types';
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import MessageButton from '../../messages/MessageButton';
|
||||
import DropdownUser from '../../user/DropdownUser';
|
||||
import { cn } from '../../client/cn';
|
||||
@@ -7,7 +7,7 @@ import DarkModeSwitcher from '../../client/components/DarkModeSwitcher';
|
||||
const Header = (props: {
|
||||
sidebarOpen: string | boolean | undefined;
|
||||
setSidebarOpen: (arg0: boolean) => void;
|
||||
user?: AuthUser | null;
|
||||
user: AuthUser;
|
||||
}) => {
|
||||
return (
|
||||
<header className='sticky top-0 z-999 flex w-full bg-white dark:bg-boxdark dark:drop-shadow-none'>
|
||||
@@ -86,7 +86,7 @@ const Header = (props: {
|
||||
|
||||
<div className='flex items-center gap-3 2xsm:gap-7'>
|
||||
{/* <!-- User Area --> */}
|
||||
{!!props.user && <DropdownUser user={props.user} />}
|
||||
<DropdownUser user={props.user} />
|
||||
{/* <!-- User Area --> */}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
13
template/app/src/admin/useRedirectHomeUnlessUserIsAdmin.ts
Normal file
13
template/app/src/admin/useRedirectHomeUnlessUserIsAdmin.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import { useEffect } from 'react';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
export function useRedirectHomeUnlessUserIsAdmin({ user }: { user: AuthUser }) {
|
||||
const history = useHistory();
|
||||
|
||||
useEffect(() => {
|
||||
if (!user.isAdmin) {
|
||||
history.push('/');
|
||||
}
|
||||
}, [user, history]);
|
||||
}
|
||||
16
template/app/src/auth/hooks.ts
Normal file
16
template/app/src/auth/hooks.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { HttpError } from 'wasp/server';
|
||||
import type { OnAfterSignupHook } from 'wasp/server/auth';
|
||||
|
||||
export const onAfterSignup: OnAfterSignupHook = async ({ providerId, user, prisma }) => {
|
||||
// For Stripe to function correctly, we need a valid email associated with the user.
|
||||
// Discord allows an email address to be optional. If this is the case, we delete the user
|
||||
// from our DB and throw an error.
|
||||
if (providerId.providerName === 'discord' && !user.email) {
|
||||
await prisma.user.delete({
|
||||
where: {
|
||||
id: user.id,
|
||||
},
|
||||
});
|
||||
throw new HttpError(403, 'Discord user needs a valid email to sign up');
|
||||
}
|
||||
};
|
||||
@@ -69,3 +69,31 @@ export function getGoogleAuthConfig() {
|
||||
scopes: ['profile', 'email'], // must include at least 'profile' for Google
|
||||
};
|
||||
}
|
||||
|
||||
const discordDataSchema = z.object({
|
||||
profile: z.object({
|
||||
username: z.string(),
|
||||
email: z.string().email().nullable(),
|
||||
}),
|
||||
});
|
||||
|
||||
export const getDiscordUserFields = defineUserSignupFields({
|
||||
email: (data) => {
|
||||
const discordData = discordDataSchema.parse(data);
|
||||
return discordData.profile.email;
|
||||
},
|
||||
username: (data) => {
|
||||
const discordData = discordDataSchema.parse(data);
|
||||
return discordData.profile.username;
|
||||
},
|
||||
isAdmin: (data) => {
|
||||
const email = discordDataSchema.parse(data).profile.email;
|
||||
return !!email && adminEmails.includes(email);
|
||||
},
|
||||
});
|
||||
|
||||
export function getDiscordAuthConfig() {
|
||||
return {
|
||||
scopes: ['identify', 'email'],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@ import { Dialog } from '@headlessui/react';
|
||||
import { AiFillCloseCircle } from 'react-icons/ai';
|
||||
import { HiBars3 } from 'react-icons/hi2';
|
||||
import { BiLogIn } from 'react-icons/bi';
|
||||
import logo from '../static/logo.png';
|
||||
import openSaasBanner from '../static/open-saas-banner.png';
|
||||
import logo from '../client/static/logo.png';
|
||||
import openSaasBanner from '../client/static/open-saas-banner.png';
|
||||
import { features, navigation, faqs, footerNavigation, testimonials } from './contentSections';
|
||||
import DropdownUser from '../../user/DropdownUser';
|
||||
import { UserMenuItems } from '../../user/UserMenuItems';
|
||||
import { DocsUrl } from '../../shared/common';
|
||||
import DarkModeSwitcher from '../components/DarkModeSwitcher';
|
||||
import DropdownUser from '../client/../user/DropdownUser';
|
||||
import { UserMenuItems } from '../client/../user/UserMenuItems';
|
||||
import { DocsUrl } from '../client/../shared/common';
|
||||
import DarkModeSwitcher from '../client/components/DarkModeSwitcher';
|
||||
|
||||
export default function LandingPage() {
|
||||
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DocsUrl, BlogUrl } from '../../shared/common';
|
||||
import daBoiAvatar from '../static/da-boi.png';
|
||||
import avatarPlaceholder from '../static/avatar-placeholder.png';
|
||||
import { DocsUrl, BlogUrl } from '../shared/common';
|
||||
import daBoiAvatar from '../client/static/da-boi.png';
|
||||
import avatarPlaceholder from '../client/static/avatar-placeholder.png';
|
||||
import { routes } from 'wasp/client/router';
|
||||
|
||||
export const navigation = [
|
||||
@@ -1,6 +1,9 @@
|
||||
// TODO: Add messages page
|
||||
import { AuthUser } from "wasp/auth"
|
||||
import { useRedirectHomeUnlessUserIsAdmin } from "../admin/useRedirectHomeUnlessUserIsAdmin"
|
||||
|
||||
function AdminMessages() {
|
||||
function AdminMessages({user} : {user: AuthUser}) {
|
||||
useRedirectHomeUnlessUserIsAdmin({user})
|
||||
|
||||
return (
|
||||
<div>Hello world!</div>
|
||||
|
||||
Reference in New Issue
Block a user