From 4e8993e24e33dba1864bf48fe6084300473573f8 Mon Sep 17 00:00:00 2001 From: Kelvin Kiptum Kiprop Date: Fri, 17 Nov 2023 20:47:08 +0300 Subject: [PATCH 01/18] finished app layout migrations --- .changeset/tender-timers-shop.md | 5 + .editorconfig | 9 + {pages => app}/403.tsx | 0 {pages => app}/404.tsx | 0 {pages => app}/500.tsx | 0 .../auth/password-reset}/password-reset.tsx | 0 .../signin.tsx => app/auth/signin/page.tsx | 0 .../signup.tsx => app/auth/signup/page.tsx | 0 pages/calendar.tsx => app/calendar/page.tsx | 0 .../dashboard/analytics/page.tsx | 46 +- app/dashboard/default/page.tsx | 69 + .../dashboard => app/dashboard/sass}/saas.tsx | 4 +- app/favicon.ico | Bin 0 -> 25931 bytes app/globals.css | 5 + .../invoices/details/[id]/page.tsx | 0 .../invoices/details/page.tsx | 0 .../list.tsx => app/invoices/list/page.tsx | 6 +- app/layout.tsx | 48 + pages/orders.tsx => app/orders/page.tsx | 6 +- app/page.module.css | 71 + app/page.tsx | 337 ++++ .../blank.tsx => app/pages/blank/page.tsx | 0 .../pages/chat.tsx => app/pages/chat/page.tsx | 0 .../pricing.tsx => app/pages/pricing/page.tsx | 0 .../profile.tsx => app/pages/profile/page.tsx | 0 .../pages/settings/page.tsx | 0 pages/projects.tsx => app/projects/page.tsx | 0 pages/tasks.tsx => app/tasks/page.tsx | 0 components/AddTaskCard/AddTaskCard.tsx | 2 + components/ChatItem/ChatItem.tsx | 4 +- components/ChatsList/ChatsList.module.css | 17 + components/ChatsList/ChatsList.styles.ts | 20 - components/ChatsList/ChatsList.tsx | 75 +- components/InvoicesTable/InvoicesTable.tsx | 2 + components/KanbanBoard/KanbanBoard.tsx | 2 + components/KanbanCard/KanbanCard.styles.css | 36 + components/KanbanCard/KanbanCard.styles.ts | 13 - components/KanbanCard/KanbanCard.tsx | 45 +- components/KanbanColumn/KanbanColumn.tsx | 2 + .../LanguagePicker/LanguagePicker.module.css | 27 + .../LanguagePicker/LanguagePicker.styles.ts | 30 - components/LanguagePicker/LanguagePicker.tsx | 5 +- components/Logo/Logo.module.css | 11 + components/Logo/Logo.styles.ts | 15 - components/Logo/Logo.tsx | 22 +- components/MapChart/MapChart.tsx | 2 + .../MobileDesktopChart/MobileDesktopChart.tsx | 2 + components/OrdersTable/OrdersTable.tsx | 2 + components/PageHeader/PageHeader.tsx | 25 +- .../RouterTransition/RouterTransition.tsx | 5 +- components/StatsCard/Stats.module.css | 26 + components/StatsCard/Stats.styles.ts | 24 - components/StatsCard/StatsCard.tsx | 47 +- components/StatsGrid/StatsGrid.module.css | 30 + components/StatsGrid/StatsGrid.styles.ts | 28 - components/StatsGrid/StatsGrid.tsx | 36 +- components/ThemeDrawer/ThemeDrawer.tsx | 197 +- components/ToggleTheme/ToggleTheme.module.css | 1 + components/ToggleTheme/ToggleTheme.styles.ts | 3 - components/ToggleTheme/ToggleTheme.tsx | 8 +- components/UserButton/UserButton.module.css | 9 + components/UserButton/UserButton.styles.ts | 13 - components/UserButton/UserButton.tsx | 4 +- layout/App/HeaderNav/HeaderNav.tsx | 372 ++-- layout/App/Navigation/Links/Links.module.css | 28 + layout/App/Navigation/Links/Links.styles.ts | 38 - layout/App/Navigation/Links/Links.tsx | 155 +- layout/App/Navigation/Navigation.module.css | 24 + layout/App/Navigation/Navigation.styles.tsx | 34 - layout/App/Navigation/Navigation.tsx | 272 +-- layout/App/index.tsx | 194 +- layout/Auth/index.tsx | 73 +- layout/Error/index.tsx | 59 +- layout/Guest/FooterNav/FooterNav.module.css | 5 + layout/Guest/FooterNav/FooterNav.styles.ts | 12 - layout/Guest/FooterNav/FooterNav.tsx | 192 +- layout/Guest/HeaderNav/HeaderNav.module.css | 64 + layout/Guest/HeaderNav/HeaderNav.styles.ts | 66 - layout/Guest/HeaderNav/HeaderNav.tsx | 26 +- layout/Guest/index.tsx | 27 +- package.json | 56 +- pages/_app.tsx | 61 - pages/_document.tsx | 13 - pages/api/hello.ts | 13 - pages/dashboard/default.tsx | 84 - pages/index.tsx | 413 ----- postcss.config.cjs | 14 + theme/theme.ts | 10 + tsconfig.json | 28 +- yarn.lock | 1648 ++++++++++++----- 90 files changed, 2971 insertions(+), 2406 deletions(-) create mode 100644 .changeset/tender-timers-shop.md create mode 100644 .editorconfig rename {pages => app}/403.tsx (100%) rename {pages => app}/404.tsx (100%) rename {pages => app}/500.tsx (100%) rename {pages/auth => app/auth/password-reset}/password-reset.tsx (100%) rename pages/auth/signin.tsx => app/auth/signin/page.tsx (100%) rename pages/auth/signup.tsx => app/auth/signup/page.tsx (100%) rename pages/calendar.tsx => app/calendar/page.tsx (100%) rename pages/dashboard/analytics.tsx => app/dashboard/analytics/page.tsx (69%) create mode 100644 app/dashboard/default/page.tsx rename {pages/dashboard => app/dashboard/sass}/saas.tsx (95%) create mode 100644 app/favicon.ico create mode 100644 app/globals.css rename pages/invoices/details/[id].tsx => app/invoices/details/[id]/page.tsx (100%) rename pages/invoices/details/index.tsx => app/invoices/details/page.tsx (100%) rename pages/invoices/list.tsx => app/invoices/list/page.tsx (90%) create mode 100644 app/layout.tsx rename pages/orders.tsx => app/orders/page.tsx (90%) create mode 100644 app/page.module.css create mode 100644 app/page.tsx rename pages/pages/blank.tsx => app/pages/blank/page.tsx (100%) rename pages/pages/chat.tsx => app/pages/chat/page.tsx (100%) rename pages/pages/pricing.tsx => app/pages/pricing/page.tsx (100%) rename pages/pages/profile.tsx => app/pages/profile/page.tsx (100%) rename pages/pages/settings.tsx => app/pages/settings/page.tsx (100%) rename pages/projects.tsx => app/projects/page.tsx (100%) rename pages/tasks.tsx => app/tasks/page.tsx (100%) create mode 100644 components/ChatsList/ChatsList.module.css delete mode 100644 components/ChatsList/ChatsList.styles.ts create mode 100644 components/KanbanCard/KanbanCard.styles.css delete mode 100644 components/KanbanCard/KanbanCard.styles.ts create mode 100644 components/LanguagePicker/LanguagePicker.module.css delete mode 100644 components/LanguagePicker/LanguagePicker.styles.ts create mode 100644 components/Logo/Logo.module.css delete mode 100644 components/Logo/Logo.styles.ts create mode 100644 components/StatsCard/Stats.module.css delete mode 100644 components/StatsCard/Stats.styles.ts create mode 100644 components/StatsGrid/StatsGrid.module.css delete mode 100644 components/StatsGrid/StatsGrid.styles.ts create mode 100644 components/ToggleTheme/ToggleTheme.module.css delete mode 100644 components/ToggleTheme/ToggleTheme.styles.ts create mode 100644 components/UserButton/UserButton.module.css delete mode 100644 components/UserButton/UserButton.styles.ts create mode 100644 layout/App/Navigation/Links/Links.module.css delete mode 100644 layout/App/Navigation/Links/Links.styles.ts create mode 100644 layout/App/Navigation/Navigation.module.css delete mode 100644 layout/App/Navigation/Navigation.styles.tsx create mode 100644 layout/Guest/FooterNav/FooterNav.module.css delete mode 100644 layout/Guest/FooterNav/FooterNav.styles.ts create mode 100644 layout/Guest/HeaderNav/HeaderNav.module.css delete mode 100644 layout/Guest/HeaderNav/HeaderNav.styles.ts delete mode 100644 pages/_app.tsx delete mode 100644 pages/_document.tsx delete mode 100644 pages/api/hello.ts delete mode 100644 pages/dashboard/default.tsx delete mode 100644 pages/index.tsx create mode 100644 postcss.config.cjs create mode 100644 theme/theme.ts diff --git a/.changeset/tender-timers-shop.md b/.changeset/tender-timers-shop.md new file mode 100644 index 0000000..e8918f5 --- /dev/null +++ b/.changeset/tender-timers-shop.md @@ -0,0 +1,5 @@ +--- +"analytics-dashboard": patch +--- + +finished app layout migrations diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..53b061a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/pages/403.tsx b/app/403.tsx similarity index 100% rename from pages/403.tsx rename to app/403.tsx diff --git a/pages/404.tsx b/app/404.tsx similarity index 100% rename from pages/404.tsx rename to app/404.tsx diff --git a/pages/500.tsx b/app/500.tsx similarity index 100% rename from pages/500.tsx rename to app/500.tsx diff --git a/pages/auth/password-reset.tsx b/app/auth/password-reset/password-reset.tsx similarity index 100% rename from pages/auth/password-reset.tsx rename to app/auth/password-reset/password-reset.tsx diff --git a/pages/auth/signin.tsx b/app/auth/signin/page.tsx similarity index 100% rename from pages/auth/signin.tsx rename to app/auth/signin/page.tsx diff --git a/pages/auth/signup.tsx b/app/auth/signup/page.tsx similarity index 100% rename from pages/auth/signup.tsx rename to app/auth/signup/page.tsx diff --git a/pages/calendar.tsx b/app/calendar/page.tsx similarity index 100% rename from pages/calendar.tsx rename to app/calendar/page.tsx diff --git a/pages/dashboard/analytics.tsx b/app/dashboard/analytics/page.tsx similarity index 69% rename from pages/dashboard/analytics.tsx rename to app/dashboard/analytics/page.tsx index bb24103..90110e9 100644 --- a/pages/dashboard/analytics.tsx +++ b/app/dashboard/analytics/page.tsx @@ -1,33 +1,19 @@ import React from 'react'; import Head from "next/head"; import {AppLayout} from "@/layout"; +import {Container, Grid, PaperProps, rem, SimpleGrid, Stack, useMantineTheme} from "@mantine/core"; import { - ActionIcon, - Container, - Divider, - Grid, - Group, - Paper, PaperProps, - rem, - SimpleGrid, - Stack, - Text, - Title, - useMantineTheme -} from "@mantine/core"; -import {IconRefresh} from "@tabler/icons-react"; -import { - FilterDateMenu, - LanguageTable, - MapChart, - MobileDesktopChart, PageHeader, - SalesChart, - StatsCard, - TrafficTable + LanguageTable, + MapChart, + MobileDesktopChart, + PageHeader, + SalesChart, + StatsCard, + TrafficTable } from "@/components"; -import StatsData from "../../mocks/StatsGrid.json"; -import LanguagesData from "../../mocks/Languages.json"; -import TrafficData from "../../mocks/Traffic.json"; +import StatsData from "../../../mocks/StatsGrid.json"; +import LanguagesData from "../../../mocks/Languages.json"; +import TrafficData from "../../../mocks/Traffic.json"; const PRIMARY_COL_HEIGHT = rem(300); @@ -35,22 +21,22 @@ const PAPER_PROPS: PaperProps = { p: "md", shadow: "md", radius: "md", - sx: {height: '100%'} + style: {height: '100%'} } -function Analytics() { +function Page() { const theme = useMantineTheme(); const SECONDARY_COL_HEIGHT = `calc(${PRIMARY_COL_HEIGHT} / 2 - ${theme.spacing.md} / 2)`; return ( <> - Analytics Dashboard | DesignSparx + Page Dashboard | DesignSparx - + {StatsData?.data.map(s => )} @@ -78,4 +64,4 @@ function Analytics() { ); } -export default Analytics; +export default Page; diff --git a/app/dashboard/default/page.tsx b/app/dashboard/default/page.tsx new file mode 100644 index 0000000..9eb16d4 --- /dev/null +++ b/app/dashboard/default/page.tsx @@ -0,0 +1,69 @@ +"use client" + +import React from 'react'; +import Head from "next/head"; +import {Button, Container, Grid, Group, Paper, PaperProps, Stack, Text} from "@mantine/core"; +import {IconChevronRight} from "@tabler/icons-react"; +import {MobileDesktopChart, PageHeader, ProjectsTable, RevenueChart, SalesChart, StatsGrid} from "@/components"; +import StatsData from "../../../mocks/StatsGrid.json" +import ProjectsData from "../../../mocks/Projects.json" +import {AppLayout} from "@/layout"; +import Link from "next/link"; +import {PATH_TASKS} from "@/routes"; +import {Metadata} from "next"; + +const PAPER_PROPS: PaperProps = { + p: "md", + shadow: "md", + radius: "md", + style: {height: '100%'} +} + +const metadata: Metadata = { + title: "Page Dashboard | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Page() { + return ( + <> + + + + + + + + + + + + + + + + + + + Tasks + + + + + + + + + + + ); +} + +export default Page; diff --git a/pages/dashboard/saas.tsx b/app/dashboard/sass/saas.tsx similarity index 95% rename from pages/dashboard/saas.tsx rename to app/dashboard/sass/saas.tsx index b5a6cf4..62d63bd 100644 --- a/pages/dashboard/saas.tsx +++ b/app/dashboard/sass/saas.tsx @@ -15,8 +15,8 @@ import { } from "@mantine/core"; import {IconChevronRight, IconRefresh} from "@tabler/icons-react"; import {FilterDateMenu, MapChart, PageHeader, ProjectsTable, RevenueChart, SalesChart, StatsGrid} from "@/components"; -import StatsData from "../../mocks/StatsGrid.json" -import ProjectsData from "../../mocks/Projects.json" +import StatsData from "../../../mocks/StatsGrid.json" +import ProjectsData from "../../../mocks/Projects.json" import {AppLayout} from "@/layout"; const PAPER_PROPS: PaperProps = { diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..999a1ec --- /dev/null +++ b/app/globals.css @@ -0,0 +1,5 @@ +/* 👇 Make sure the styles are applied in the correct order */ +@layer mantine, mantine-datatable; + +html, body { +} diff --git a/pages/invoices/details/[id].tsx b/app/invoices/details/[id]/page.tsx similarity index 100% rename from pages/invoices/details/[id].tsx rename to app/invoices/details/[id]/page.tsx diff --git a/pages/invoices/details/index.tsx b/app/invoices/details/page.tsx similarity index 100% rename from pages/invoices/details/index.tsx rename to app/invoices/details/page.tsx diff --git a/pages/invoices/list.tsx b/app/invoices/list/page.tsx similarity index 90% rename from pages/invoices/list.tsx rename to app/invoices/list/page.tsx index 5bfdd3b..72b13b6 100644 --- a/pages/invoices/list.tsx +++ b/app/invoices/list/page.tsx @@ -3,7 +3,7 @@ import Head from "next/head"; import {ActionIcon, Anchor, Container, Group, Paper, PaperProps, Stack, Text} from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; import {InvoicesTable, PageHeader} from "@/components"; -import InvoicesData from "../../mocks/Invoices.json"; +import InvoicesData from "../../../mocks/Invoices.json"; import {AppLayout} from "@/layout"; import {IconDotsVertical} from "@tabler/icons-react"; @@ -30,10 +30,10 @@ function List() { - + - + Invoices diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..5b1b8ad --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,48 @@ +import type {Metadata} from "next"; +import {ColorSchemeScript, MantineProvider} from "@mantine/core"; +import {ModalsProvider} from "@mantine/modals"; +import {Notifications} from "@mantine/notifications"; +import {Open_Sans} from 'next/font/google' +import "@mantine/core/styles.css"; +import "@mantine/dates/styles.css"; +import 'mantine-datatable/styles.layer.css'; +import "./globals.css"; +import {myTheme} from "@/theme/theme"; + +// If loading a variable font, you don't need to specify the font weight +const openSans = Open_Sans({ + subsets: ['latin'], + display: 'swap', +}) + +export const metadata: Metadata = { + title: "DesignSparx - Nextjs Mantine Dashboard", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +export default function RootLayout({children}: { children: React.ReactNode; }) { + return ( + + + + + + + + + + + + + + + {children} + + + + + ); +} diff --git a/pages/orders.tsx b/app/orders/page.tsx similarity index 90% rename from pages/orders.tsx rename to app/orders/page.tsx index e9bc437..2a1f8ef 100644 --- a/pages/orders.tsx +++ b/app/orders/page.tsx @@ -4,7 +4,7 @@ import {AppLayout} from "@/layout"; import {ActionIcon, Anchor, Container, Group, Paper, PaperProps, Stack, Text} from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; import {OrdersTable, PageHeader} from "@/components"; -import OrdersData from "../mocks/Orders.json"; +import OrdersData from "../../mocks/Orders.json"; import {IconDotsVertical} from "@tabler/icons-react"; const items = [ @@ -30,10 +30,10 @@ function Orders() { - + - + Orders diff --git a/app/page.module.css b/app/page.module.css new file mode 100644 index 0000000..08e4199 --- /dev/null +++ b/app/page.module.css @@ -0,0 +1,71 @@ +.hero { + background-color: var(--mantine-color-black); + color: var(--mantine-color-white); + padding: calc(var(--mantine-spacing-xl) * 4); + + @media (max-width: $mantine-breakpoint-sm) { + padding-top: var(--mantine-spacing-xl) + } +} + +.title { + font-weight: 800; + font-size: rem(40); + letter-spacing: rem(-1); + margin-bottom: var(--mantine-spacing-xs); + + @media (max-width: $mantine-breakpoint-xs) { + font-size: rem(28); + text-align: left; + } +} + +.highlight { + color: var(--mantine-color-blue-5); +} + + +.stackControl { + text-transform: capitalize; + background-color: var(--mantine-color-dark-6); + color: var(--mantine-color-white); + padding: rem(6) rem(10); + border-radius: var(--mantine-radius-md) +} + +.variantImg { + max-height: rem(280); + width: 100%; + object-fit: contain; +} + +.variantTitle { + text-align: center; + margin-top: var(--mantine-spacing-md); + font-weight: 600 +} + +.paper { + height: 100%; + background-color: transparent; +} + +.image { + height: 100%; + background-color: transparent; + + @mixin hover { + box-shadow: var(--mantine-shadow-lg); + transition: all ease 150ms; + transform: scale(1.03); + } +} + +.statsTitle{ + color: var(--mantine-color-blue-7) +} + +.contactPaper{ + background-color: transparent; + text-align: center; +} diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..ccd6b0e --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,337 @@ +"use client" + +import Head from 'next/head' +import {GuestLayout} from "@/layout"; +import { + Badge, + Box, + BoxProps, + Button, + Center, + Container, + Flex, + Grid, + Group, + Image, + Paper, + PaperProps, + rem, + SimpleGrid, + Spoiler, + Stack, + Text, + ThemeIcon, + ThemeIconProps, + Title, + Tooltip, UnstyledButton, useMantineTheme +} from "@mantine/core"; +import Link from "next/link"; +import {PATH_DASHBOARD, PATH_DOCS} from "@/routes"; +import { + IconAdjustmentsHorizontal, IconArrowRight, IconBook, IconChevronDown, IconChevronUp, + IconColorSwatch, + IconDevices, + IconFolderCode, + IconScaleOutline, + IconSettingsCog +} from "@tabler/icons-react"; +import React from "react"; +import CountUp from "react-countup"; +import {useMediaQuery} from "@mantine/hooks"; +import classes from "./page.module.css" + +const TECH_STACK = [ + {title: 'nextjs', version: '13.14.12', href: 'https://nextjs.org/',}, + {title: 'react', version: '18.2.0', href: 'https://react.dev/',}, + {title: 'typescript', version: '5.1.6', href: 'https://www.typescriptlang.org/',}, + {title: 'mantine', version: '6.0.16', href: 'https://mantine.dev/'}, + {title: 'tabler icons', version: '2.28.0', href: 'https://tabler-icons.io/'}, + {title: 'tiptap', version: '2.28.0', href: 'https://tiptap.dev/'}, + {title: 'apexcharts', version: '3.41.0', href: 'https://apexcharts.com/'}, + {title: 'dayjs', version: '1.11.9', href: 'https://day.js.org/'}, + {title: 'fullcalendar', version: '6.1.8', href: 'https://fullcalendar.io/'}, + {title: 'emotion', version: '11.11.1', href: 'https://emotion.sh/docs/introduction'}, + {title: 'dnd-kit', version: '6.0.8', href: 'https://dndkit.com/'}, + {title: 'embla-carousel', version: '8.0.0', href: 'https://www.embla-carousel.com/'}, + {title: 'mantine datatable', version: '2.9.0', href: 'https://icflorescu.github.io/mantine-datatable'}, + {title: 'lodash', version: '4.17.21', href: 'https://lodash.com/'}, + {title: 'react simple maps', version: '3.0.0', href: 'https://www.react-simple-maps.io/'}, +] + +const PAPER_PROPS: PaperProps = { + p: "md", + shadow: "md", + radius: "md", + className: classes.paper, +} + +const THEME_ICON_PROPS: Omit = { + variant: "light", + size: 48 +} + +const IMAGE_PAPER_PROPS: PaperProps = { + p: 'md', + className: classes.image +} + +export default function Home() { + const tablet_match = useMediaQuery('(max-width: 768px)'); + + const BOX_PROPS: BoxProps = { + mt: 120, + pb: 80, + px: tablet_match ? 20 : 48, + } + + return ( + <> + + DesignSparx | Website UI Kit + + + + + + + + + + Build like a Pro + + The simplest and fastest way to build your next{' '} + <Text component="span" inherit className={classes.highlight}> + Mantine UI{' '} + </Text> + dashboard or app. + + Design Sparx comes with hundreds of UI elements, forms, tables, charts, pages and + icons that helps you to create your web apps or applications faster. + + + + + + Tech Stack: + } + > + Show more + + } + hideLabel={ + + } + > + + {TECH_STACK.map(t => + + + {t.title} + + + )} + + + + + + + / + + + + + + Carefully crafted components ready to use in your + project + + + + <CountUp end={50}/>+ + Beautifully coded page examples + + + + + <CountUp end={100}/>+ + Components and widgets + + + + + + Optimized to work for most devices + + + + + + Customize it to meet your brand's identity + + + + + + + + Default variant + + + + Pink variant + + + + Orange variant + + + + Green variant + + + + Purple variant + + + + Dark variant + + + + {/**/} + {/* We build it, you rock it!*/} + {/* Start focusing on your goals, by spending less time creating pages using*/} + {/* our examples.*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/**/} + + + Key features + Quick helps you build beautiful websites that stand out and automatically adapt to + your style. + + + + + + Modular + All components are built to be used in any combination. + + + + + + Responsive + Quick is optimized to work for most devices. + + + + + + Scalable + Remain consistent while developing new features. + + + + + + Customizable + Change a few variables and the whole theme adapts. + + +
+ +
+
+
+ + + For any queries? + + + +
+ + ) +} diff --git a/pages/pages/blank.tsx b/app/pages/blank/page.tsx similarity index 100% rename from pages/pages/blank.tsx rename to app/pages/blank/page.tsx diff --git a/pages/pages/chat.tsx b/app/pages/chat/page.tsx similarity index 100% rename from pages/pages/chat.tsx rename to app/pages/chat/page.tsx diff --git a/pages/pages/pricing.tsx b/app/pages/pricing/page.tsx similarity index 100% rename from pages/pages/pricing.tsx rename to app/pages/pricing/page.tsx diff --git a/pages/pages/profile.tsx b/app/pages/profile/page.tsx similarity index 100% rename from pages/pages/profile.tsx rename to app/pages/profile/page.tsx diff --git a/pages/pages/settings.tsx b/app/pages/settings/page.tsx similarity index 100% rename from pages/pages/settings.tsx rename to app/pages/settings/page.tsx diff --git a/pages/projects.tsx b/app/projects/page.tsx similarity index 100% rename from pages/projects.tsx rename to app/projects/page.tsx diff --git a/pages/tasks.tsx b/app/tasks/page.tsx similarity index 100% rename from pages/tasks.tsx rename to app/tasks/page.tsx diff --git a/components/AddTaskCard/AddTaskCard.tsx b/components/AddTaskCard/AddTaskCard.tsx index 428f00d..a837d3b 100644 --- a/components/AddTaskCard/AddTaskCard.tsx +++ b/components/AddTaskCard/AddTaskCard.tsx @@ -1,3 +1,5 @@ +"use client" + import React, {useState} from 'react'; import {Flex, Text, Input, Button} from "@mantine/core"; diff --git a/components/ChatItem/ChatItem.tsx b/components/ChatItem/ChatItem.tsx index e3fffa6..a7ac63e 100644 --- a/components/ChatItem/ChatItem.tsx +++ b/components/ChatItem/ChatItem.tsx @@ -21,7 +21,7 @@ const ChatItem = (props: ChatItemProps) => { { {fullName} {message} - {sent_time} + {sent_time} diff --git a/components/ChatsList/ChatsList.module.css b/components/ChatsList/ChatsList.module.css new file mode 100644 index 0000000..3391559 --- /dev/null +++ b/components/ChatsList/ChatsList.module.css @@ -0,0 +1,17 @@ +.item { + padding: var(--mantine-radius-sm); + border-bottom: 1px solid var(--mantine-color-gray-3); + + @mixin hover { + background-color: var(--mantine-primary-color-filled); + } +} + +.itemRounded { + padding: var(--mantine-spacing-xs); + border-radius: var(--mantine-radius-sm); + + @mixin hover { + background-color: var(--mantine-primary-color-filled); + } +} diff --git a/components/ChatsList/ChatsList.styles.ts b/components/ChatsList/ChatsList.styles.ts deleted file mode 100644 index 1431cde..0000000 --- a/components/ChatsList/ChatsList.styles.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme) => ({ - item: { - padding: `${theme.spacing.xs}`, - borderBottom: `1px solid ${theme.colors.gray[3]}`, - - '&:hover': { - backgroundColor: theme.colors[theme.primaryColor][0] - } - }, - itemRounded: { - padding: `${theme.spacing.xs}`, - borderRadius: theme.radius.md, - - '&:hover': { - backgroundColor: theme.colors[theme.primaryColor][0] - } - } -})) \ No newline at end of file diff --git a/components/ChatsList/ChatsList.tsx b/components/ChatsList/ChatsList.tsx index fe71e6b..5f9b9b6 100644 --- a/components/ChatsList/ChatsList.tsx +++ b/components/ChatsList/ChatsList.tsx @@ -1,48 +1,47 @@ -import {Avatar, Flex, Group, Indicator, Stack, Text, UnstyledButton, UnstyledButtonProps} from "@mantine/core"; -import useStyles from "./ChatsList.styles"; +import {Avatar, Flex, Indicator, Stack, Text, UnstyledButton, UnstyledButtonProps} from "@mantine/core"; +import classes from "./ChatsList.module.css"; import {useMediaQuery} from "@mantine/hooks"; type ChatsListProps = { - avatar: string - firstName: string - lastName: string - lastMessage: string + avatar: string + firstName: string + lastName: string + lastMessage: string } & UnstyledButtonProps const ChatsList = ({avatar, lastName, lastMessage, firstName}: ChatsListProps) => { - const {classes} = useStyles(); - const tablet_match = useMediaQuery('(max-width: 768px)'); + const tablet_match = useMediaQuery('(max-width: 768px)'); - return ( - tablet_match ? - - - - - - {firstName} {lastName} - - : - - - - - - - {firstName} {lastName} - {lastMessage} - - - - ); + return ( + tablet_match ? + + + + + + {firstName} {lastName} + + : + + + + + + + {firstName} {lastName} + {lastMessage} + + + + ); }; export default ChatsList; diff --git a/components/InvoicesTable/InvoicesTable.tsx b/components/InvoicesTable/InvoicesTable.tsx index e2c9ad4..3a848a9 100644 --- a/components/InvoicesTable/InvoicesTable.tsx +++ b/components/InvoicesTable/InvoicesTable.tsx @@ -1,3 +1,5 @@ +"use client" + import React, {useEffect, useMemo, useState} from 'react'; import {DataTable, DataTableSortStatus} from "mantine-datatable"; import { diff --git a/components/KanbanBoard/KanbanBoard.tsx b/components/KanbanBoard/KanbanBoard.tsx index c69e48c..34844ce 100644 --- a/components/KanbanBoard/KanbanBoard.tsx +++ b/components/KanbanBoard/KanbanBoard.tsx @@ -1,3 +1,5 @@ +"use client" + import {useMemo, useState} from "react"; import { DndContext, diff --git a/components/KanbanCard/KanbanCard.styles.css b/components/KanbanCard/KanbanCard.styles.css new file mode 100644 index 0000000..0cc90e0 --- /dev/null +++ b/components/KanbanCard/KanbanCard.styles.css @@ -0,0 +1,36 @@ +.card { + border: 1px solid transparent; + padding-bottom: 0; + + @mixin dark { + background-color: var(--mantine-color-dark-6); + } + + @mixin light { + background-color: var(--mantine-color-white); + } + + @mixin hover { + border-color: var(--mantine-color-blue-6); + } +} + +.dragBox { + position: relative; + min-height: rem(100); + display: flex; + align-items: center; + text-align: left; + cursor: grab; + border-radius: var(--mantine-radius-md); + + @mixin dark { + background-color: var(--mantine-color-gray-0); + opacity: .7; + } + + @mixin light { + background-color: var(--mantine-color-dark-0); + opacity: .3; + } +} diff --git a/components/KanbanCard/KanbanCard.styles.ts b/components/KanbanCard/KanbanCard.styles.ts deleted file mode 100644 index a12e8cf..0000000 --- a/components/KanbanCard/KanbanCard.styles.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {createStyles} from "@mantine/core"; - -export default createStyles((theme) => ({ - card: { - backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[6] : theme.white, - border: `1px solid transparent`, - paddingBottom: 0, - - '&:hover': { - borderColor: theme.colors[theme.primaryColor][7], - }, - }, -})); diff --git a/components/KanbanCard/KanbanCard.tsx b/components/KanbanCard/KanbanCard.tsx index fceedfb..73e6363 100644 --- a/components/KanbanCard/KanbanCard.tsx +++ b/components/KanbanCard/KanbanCard.tsx @@ -1,24 +1,28 @@ +"use client" + import {useState} from "react"; -import {Id, KanbanColumn as IColumn, KanbanTask as ITask} from "../../types"; +import {Id, KanbanTask as ITask} from "../../types"; import {useSortable} from "@dnd-kit/sortable"; import {CSS} from "@dnd-kit/utilities"; import {IconDots, IconEdit, IconMessageCircle, IconTrash} from "@tabler/icons-react"; import { - ActionIcon, - Avatar, - Box, - Button, Card, Divider, - Flex, Menu, - Paper, PaperProps, - rem, - Stack, - Text, - Textarea, - Tooltip, - useMantineTheme + ActionIcon, + Avatar, + Box, + Button, + Card, + Divider, + Flex, + Menu, + Paper, + PaperProps, + rem, + Text, + Textarea, + Tooltip, + useMantineTheme } from "@mantine/core"; import {useHover} from "@mantine/hooks"; -import useStyles from "./KanbanCard.styles" import {modals} from "@mantine/modals"; const AVATARS = [ @@ -42,7 +46,6 @@ type Props = { } const KanbanCard = (props: Props) => { - const {classes} = useStyles() const {task, deleteTask, updateTask} = props; const theme = useMantineTheme() const [mouseIsOver, setMouseIsOver] = useState(false); @@ -94,17 +97,7 @@ const KanbanCard = (props: Props) => { ref={setNodeRef} style={style} p="sm" - sx={{ - backgroundColor: theme.colorScheme === "dark" ? theme.colors.gray[0] : theme.colors.dark[0], - opacity: theme.colorScheme === "dark" ? .7 : .3, - minHeight: rem(100), - display: 'flex', - textAlign: 'left', - cursor: 'grab', - position: 'relative', - alignItems: 'center', - borderRadius: theme.radius.md - }} + className={classes.dragBox} /> ); } diff --git a/components/KanbanColumn/KanbanColumn.tsx b/components/KanbanColumn/KanbanColumn.tsx index 40ae1dd..97d1a35 100644 --- a/components/KanbanColumn/KanbanColumn.tsx +++ b/components/KanbanColumn/KanbanColumn.tsx @@ -1,3 +1,5 @@ +"use client" + import {SortableContext, useSortable} from "@dnd-kit/sortable"; import {Id, KanbanColumn as IColumn, KanbanTask as ITask} from "../../types"; import {CSS} from "@dnd-kit/utilities"; diff --git a/components/LanguagePicker/LanguagePicker.module.css b/components/LanguagePicker/LanguagePicker.module.css new file mode 100644 index 0000000..d78e692 --- /dev/null +++ b/components/LanguagePicker/LanguagePicker.module.css @@ -0,0 +1,27 @@ +.control { + display: flex; + justify-content: space-between; + align-items: center; + padding: rem(4px); + border-radius: var(--mantine-radius-sm); + transition: background-color 150ms ease; + color: var(--mantine-color-black); + + @mixin hover { + background-color: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5)) + } +} + +.label { + font-weight: 600; + font-size: var(--mantine-font-size-sm) +} + +.icon { + transition: transform 150ms ease; + transform: rotate(0deg); + + [data-expanded] & { + transform: rotate(180deg); + } +} diff --git a/components/LanguagePicker/LanguagePicker.styles.ts b/components/LanguagePicker/LanguagePicker.styles.ts deleted file mode 100644 index ac01e59..0000000 --- a/components/LanguagePicker/LanguagePicker.styles.ts +++ /dev/null @@ -1,30 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme, { opened }: { opened: boolean }) => ({ - control: { - display: "flex", - justifyContent: "space-between", - alignItems: "center", - padding: rem(4), - borderRadius: theme.radius.sm, - transition: "background-color 150ms ease", - color: theme.black, - - "&:hover": { - backgroundColor: - theme.colorScheme === "dark" - ? theme.colors.dark[5] - : theme.colors.gray[1], - }, - }, - - label: { - fontWeight: 600, - fontSize: theme.fontSizes.sm, - }, - - icon: { - transition: "transform 150ms ease", - transform: opened ? "rotate(180deg)" : "rotate(0deg)", - }, -})) diff --git a/components/LanguagePicker/LanguagePicker.tsx b/components/LanguagePicker/LanguagePicker.tsx index 85d3159..6caf48c 100644 --- a/components/LanguagePicker/LanguagePicker.tsx +++ b/components/LanguagePicker/LanguagePicker.tsx @@ -1,7 +1,9 @@ +"use client" + import {useState} from "react"; import {Group, Image, Menu, UnstyledButton,} from "@mantine/core"; import {IconChevronDown} from "@tabler/icons-react"; -import useStyles from "./LanguagePicker.styles"; +import classes from "./LanguagePicker.module.css"; const data = [ { @@ -37,7 +39,6 @@ type LanguagePickerProps = { const LanguagePicker = ({type}: LanguagePickerProps) => { const [opened, setOpened] = useState(false); - const {classes} = useStyles({opened}); const [selected, setSelected] = useState(data[0]); const items = data.map((item) => ( ({ - logo: { - padding: `${rem(4)} ${rem(8)}`, - fontSize: theme.fontSizes.md, - borderRadius: theme.radius.md, - fontWeight: 600, - - '&:hover': { - transition: 'all ease 150ms', - fontWeight: 800, - } - } -})) diff --git a/components/Logo/Logo.tsx b/components/Logo/Logo.tsx index 3f9183d..3af2eec 100644 --- a/components/Logo/Logo.tsx +++ b/components/Logo/Logo.tsx @@ -1,24 +1,22 @@ import React from 'react'; -import useStyles from "./Logo.styles"; +import classes from "./Logo.module.css"; import {Group, Text, UnstyledButton, UnstyledButtonProps} from "@mantine/core"; import Link from "next/link"; import Image from "next/image"; type LogoProps = { - href?: string + href?: string } & UnstyledButtonProps const Logo = ({href, ...others}: LogoProps) => { - const {classes} = useStyles(); - - return ( - - - design sparx logo - Design Sparx - - - ); + return ( + + + design sparx logo + Design Sparx + + + ); }; export default Logo; diff --git a/components/MapChart/MapChart.tsx b/components/MapChart/MapChart.tsx index aad8d87..6135379 100644 --- a/components/MapChart/MapChart.tsx +++ b/components/MapChart/MapChart.tsx @@ -1,3 +1,5 @@ +"use client" + import React, {useEffect, useMemo, useState} from "react"; import {ComposableMap, Geographies, Geography, Marker} from "react-simple-maps"; import {csv} from "d3-fetch"; diff --git a/components/MobileDesktopChart/MobileDesktopChart.tsx b/components/MobileDesktopChart/MobileDesktopChart.tsx index dd37336..dc6bc56 100644 --- a/components/MobileDesktopChart/MobileDesktopChart.tsx +++ b/components/MobileDesktopChart/MobileDesktopChart.tsx @@ -1,3 +1,5 @@ +"use client" + import dynamic from "next/dynamic"; import {ActionIcon, Group, Paper, PaperProps, Text, useMantineTheme} from "@mantine/core"; import {IconDotsVertical} from "@tabler/icons-react"; diff --git a/components/OrdersTable/OrdersTable.tsx b/components/OrdersTable/OrdersTable.tsx index 007f83a..0906931 100644 --- a/components/OrdersTable/OrdersTable.tsx +++ b/components/OrdersTable/OrdersTable.tsx @@ -1,3 +1,5 @@ +"use client" + import React, {useEffect, useMemo, useState} from 'react'; import {DataTable, DataTableSortStatus} from "mantine-datatable"; import {Badge, MantineColor, MultiSelect, Text, TextInput} from "@mantine/core" diff --git a/components/PageHeader/PageHeader.tsx b/components/PageHeader/PageHeader.tsx index 6c25765..7c8a9dc 100644 --- a/components/PageHeader/PageHeader.tsx +++ b/components/PageHeader/PageHeader.tsx @@ -1,16 +1,17 @@ import React from 'react'; import { - ActionIcon, - Breadcrumbs, - BreadcrumbsProps, - Button, - Divider, - Flex, - Group, - Paper, rem, - Stack, - Text, - Title, useMantineTheme + ActionIcon, + Breadcrumbs, + BreadcrumbsProps, + Button, + Divider, + Flex, + Paper, + rem, + Stack, + Text, + Title, + useMantineTheme } from "@mantine/core"; import {IconPlus, IconRefresh} from "@tabler/icons-react"; import {FilterDateMenu} from "@/components"; @@ -85,4 +86,4 @@ const PageHeader = ({withActions, breadcrumbItems, title, invoiceAction}: PageHe ) }; -export default PageHeader; \ No newline at end of file +export default PageHeader; diff --git a/components/RouterTransition/RouterTransition.tsx b/components/RouterTransition/RouterTransition.tsx index 7d70447..d71037b 100644 --- a/components/RouterTransition/RouterTransition.tsx +++ b/components/RouterTransition/RouterTransition.tsx @@ -1,3 +1,4 @@ +"use client" // components/RouterTransition.tsx import { useEffect } from 'react'; import { useRouter } from 'next/router'; @@ -21,7 +22,7 @@ const RouterTransition = () => { }; }, [router.asPath]); - return ; + return ; } -export default RouterTransition \ No newline at end of file +export default RouterTransition diff --git a/components/StatsCard/Stats.module.css b/components/StatsCard/Stats.module.css new file mode 100644 index 0000000..61cb989 --- /dev/null +++ b/components/StatsCard/Stats.module.css @@ -0,0 +1,26 @@ +.value { + font-size: rem(24px); + font-weight: 500; + line-height: 1; +} + +.diff { + line-height: 1; + display: flex; + align-items: center; +} + +.icon { + @mixin dark { + color: var(--mantine-color-dark-3); + } + + @mixin light { + color: var(--mantine-color-gray-4); + } +} + +.title { + font-weight: 500; + text-transform: uppercase; +} diff --git a/components/StatsCard/Stats.styles.ts b/components/StatsCard/Stats.styles.ts deleted file mode 100644 index eb8ab8f..0000000 --- a/components/StatsCard/Stats.styles.ts +++ /dev/null @@ -1,24 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme) => ({ - value: { - fontSize: rem(24), - fontWeight: 500, - lineHeight: 1, - }, - - diff: { - lineHeight: 1, - display: 'flex', - alignItems: 'center', - }, - - icon: { - color: theme.colorScheme === 'dark' ? theme.colors.dark[3] : theme.colors.gray[4], - }, - - title: { - fontWeight: 500, - textTransform: 'uppercase', - }, -})); diff --git a/components/StatsCard/StatsCard.tsx b/components/StatsCard/StatsCard.tsx index 55afa42..33b4b7b 100644 --- a/components/StatsCard/StatsCard.tsx +++ b/components/StatsCard/StatsCard.tsx @@ -1,36 +1,35 @@ import {Badge, Group, Paper, PaperProps, Text} from "@mantine/core"; -import useStyles from "./Stats.styles"; +import classes from "./Stats.module.css"; import {IconArrowDownRight, IconArrowUpRight} from "@tabler/icons-react"; type StatsCardProps = { data: { title: string; value: string; diff: number, period?: string } } & PaperProps const StatsCard = ({data, ...others}: StatsCardProps) => { - const {title, value, period, diff} = data - const {classes} = useStyles(); - const DiffIcon = diff > 0 ? IconArrowUpRight : IconArrowDownRight; + const {title, value, period, diff} = data + const DiffIcon = diff > 0 ? IconArrowUpRight : IconArrowDownRight; - return ( - - - - {title} - - {period && {period}} - + return ( + + + + {title} + + {period && {period}} + - - {value} - 0 ? 'teal' : 'red'} fz="sm" fw={500} className={classes.diff}> - {diff}% - - - + + {value} + 0 ? 'teal' : 'red'} fz="sm" fw={500} className={classes.diff}> + {diff}% + + + - - Compared to previous month - - - ); + + Compared to previous month + + + ); }; export default StatsCard; diff --git a/components/StatsGrid/StatsGrid.module.css b/components/StatsGrid/StatsGrid.module.css new file mode 100644 index 0000000..5f1d5e3 --- /dev/null +++ b/components/StatsGrid/StatsGrid.module.css @@ -0,0 +1,30 @@ +.root { + padding: 0; +} + +.value { + font-size: rem(24px); + font-weight: 500; + line-height: 1; +} + +.diff { + line-height: 1; + display: flex; + align-items: center; +} + +.icon { + @mixin dark { + color: var(--mantine-color-dark-3); + } + + @mixin light { + color: var(--mantine-color-gray-4); + } +} + +.title { + font-weight: 500; + text-transform: uppercase; +} diff --git a/components/StatsGrid/StatsGrid.styles.ts b/components/StatsGrid/StatsGrid.styles.ts deleted file mode 100644 index 3066190..0000000 --- a/components/StatsGrid/StatsGrid.styles.ts +++ /dev/null @@ -1,28 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme) => ({ - root: { - padding: 0, - }, - - value: { - fontSize: rem(24), - fontWeight: 500, - lineHeight: 1, - }, - - diff: { - lineHeight: 1, - display: 'flex', - alignItems: 'center', - }, - - icon: { - color: theme.colorScheme === 'dark' ? theme.colors.dark[3] : theme.colors.gray[4], - }, - - title: { - fontWeight: 500, - textTransform: 'uppercase', - }, -})); diff --git a/components/StatsGrid/StatsGrid.tsx b/components/StatsGrid/StatsGrid.tsx index 7c24856..482315c 100644 --- a/components/StatsGrid/StatsGrid.tsx +++ b/components/StatsGrid/StatsGrid.tsx @@ -1,28 +1,24 @@ -import {Badge, Group, Paper, PaperProps, SimpleGrid, Text} from '@mantine/core'; -import {IconArrowDownRight, IconArrowUpRight,} from '@tabler/icons-react'; -import useStyles from "./StatsGrid.styles"; +import {PaperProps, SimpleGrid} from '@mantine/core'; import StatsCard from "@/components/StatsCard/StatsCard"; +import classes from "./StatsGrid.module.css"; type StatsGridProps = { - data?: { title: string; value: string; diff: number, period?: string }[]; - paperProps: PaperProps + data?: { title: string; value: string; diff: number, period?: string }[]; + paperProps: PaperProps } export default function StatsGrid({data, paperProps}: StatsGridProps) { - const {classes} = useStyles(); - const stats = data?.map((stat) => ); + const stats = data?.map((stat) => ); - return ( -
- - {stats} - -
- ); + return ( +
+ + {stats} + +
+ ); } diff --git a/components/ThemeDrawer/ThemeDrawer.tsx b/components/ThemeDrawer/ThemeDrawer.tsx index 31ce5c3..2d69e20 100644 --- a/components/ThemeDrawer/ThemeDrawer.tsx +++ b/components/ThemeDrawer/ThemeDrawer.tsx @@ -1,109 +1,118 @@ import React from 'react'; import { - ColorSwatch, - Drawer, - DrawerProps, - MantineTheme, - useMantineTheme, - Text, - UnstyledButton, rem, SimpleGrid, ColorScheme, Tooltip, Button, Stack + Button, + ColorSwatch, + Drawer, + DrawerProps, + MantineTheme, + rem, + SimpleGrid, + Stack, + Text, + Tooltip, + UnstyledButton, + useMantineTheme } from "@mantine/core"; -import {IconCheck, IconMoonStars, IconSunFilled, IconSunHigh} from "@tabler/icons-react"; +import {IconCheck, IconMoonStars, IconSunHigh} from "@tabler/icons-react"; import {showNotification} from "@mantine/notifications"; -import {upperFirst, useHotkeys, useLocalStorage, useMediaQuery} from "@mantine/hooks"; +import {upperFirst, useMediaQuery} from "@mantine/hooks"; type ThemeDrawerProps = { - primaryColor: string; - setPrimaryColor: (color: string) => void; - colorScheme: ColorScheme; - toggleColorScheme: () => void; + primaryColor?: string; + setPrimaryColor?: (color: string) => void; + colorScheme?: any; + toggleColorScheme?: () => void; } & Pick const ThemeDrawer = ({primaryColor, setPrimaryColor, colorScheme, toggleColorScheme, ...others}: ThemeDrawerProps) => { - const theme = useMantineTheme(); - const colors = Object.keys(theme.colors).map((color) => ({ - swatch: theme.colors[color][6], - color - })); - const tablet_match = useMediaQuery('(max-width: 768px)'); + const theme = useMantineTheme(); + const colors = Object.keys(theme.colors).map((color) => ({ + swatch: theme.colors[color][6], + color + })); + const tablet_match = useMediaQuery('(max-width: 768px)'); - /** - * swatches items - */ - const swatches = colors.map((c) => { - const {color, swatch} = c - return { - setPrimaryColor(color); - showNotification({ - title: 'Color theme update', - message: 'Your theme is awesome! 🤥', - styles: (theme: MantineTheme) => ({}) - }); - }} - sx={{textAlign: 'center'}} - > - - {color === primaryColor && } - - {color} - - } - ); - - return ( - { + const {color, swatch} = c + return { + if (setPrimaryColor) { + setPrimaryColor(color); + } + showNotification({ + title: 'Color theme update', + message: 'Your theme is awesome! 🤥', + styles: (theme: MantineTheme) => ({}) + }); + }} + style={{textAlign: 'center'}} + > + - - - - - {swatches} - - - ); + '&::before': {backgroundColor: colorScheme === 'dark' ? theme.colors.gray[2] : theme.colors.gray[7]} + }, + + title: {color: colorScheme === 'dark' ? theme.colors.gray[2] : theme.colors.gray[7]}, + description: {color: colorScheme === 'dark' ? theme.colors.gray[2] : theme.colors.gray[7]}, + closeButton: { + color: colorScheme === 'dark' ? theme.colors.gray[2] : theme.colors.gray[7], + '&:hover': { + backgroundColor: theme.colors.red[5], + color: theme.white + } + } + }) + }); + }} + > + Switch to {colorScheme === 'light' ? 'dark' : 'light'} mode + + + {swatches} +
+ + ); }; -export default ThemeDrawer; \ No newline at end of file +export default ThemeDrawer; diff --git a/components/ToggleTheme/ToggleTheme.module.css b/components/ToggleTheme/ToggleTheme.module.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/components/ToggleTheme/ToggleTheme.module.css @@ -0,0 +1 @@ + diff --git a/components/ToggleTheme/ToggleTheme.styles.ts b/components/ToggleTheme/ToggleTheme.styles.ts deleted file mode 100644 index 50d23c0..0000000 --- a/components/ToggleTheme/ToggleTheme.styles.ts +++ /dev/null @@ -1,3 +0,0 @@ -import {createStyles} from "@mantine/core"; - -export default createStyles((theme) => ({})) diff --git a/components/ToggleTheme/ToggleTheme.tsx b/components/ToggleTheme/ToggleTheme.tsx index 8581e9d..55fd9b9 100644 --- a/components/ToggleTheme/ToggleTheme.tsx +++ b/components/ToggleTheme/ToggleTheme.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { ActionIcon, useMantineColorScheme } from '@mantine/core'; -import { IconSun, IconMoonStars } from '@tabler/icons-react'; -import useStyles from "./ToggleTheme.styles"; +import {ActionIcon, useMantineColorScheme} from '@mantine/core'; +import {IconMoonStars, IconSun} from '@tabler/icons-react'; type Props = {}; const ToggleTheme = ({}: Props) => { - const {classes} = useStyles(); const { colorScheme, toggleColorScheme } = useMantineColorScheme(); const dark = colorScheme === 'dark'; @@ -18,7 +16,7 @@ const ToggleTheme = ({}: Props) => { onClick={() => toggleColorScheme()} title="Toggle color scheme" > - {dark ? : } + {dark ? : }
); } diff --git a/components/UserButton/UserButton.module.css b/components/UserButton/UserButton.module.css new file mode 100644 index 0000000..ac81057 --- /dev/null +++ b/components/UserButton/UserButton.module.css @@ -0,0 +1,9 @@ +.user { + display: block; + width: 100%; + padding: var(--mantine-spacing-md); + + @mixin hover { + background-color: var(--mantine-primary-color-filled) + } +} diff --git a/components/UserButton/UserButton.styles.ts b/components/UserButton/UserButton.styles.ts deleted file mode 100644 index 5eea3f0..0000000 --- a/components/UserButton/UserButton.styles.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {createStyles} from "@mantine/core"; - -export default createStyles((theme) => ({ - user: { - display: 'block', - width: '100%', - padding: theme.spacing.md, - - '&:hover': { - backgroundColor: theme.colors[theme.primaryColor][8], - }, - }, -})); diff --git a/components/UserButton/UserButton.tsx b/components/UserButton/UserButton.tsx index d2872ce..89cfc6e 100644 --- a/components/UserButton/UserButton.tsx +++ b/components/UserButton/UserButton.tsx @@ -1,7 +1,7 @@ import {ReactNode} from "react"; import {Avatar, Group, Text, UnstyledButton, UnstyledButtonProps,} from '@mantine/core'; import {IconChevronRight} from '@tabler/icons-react'; -import useStyles from "./UserButton.styles"; +import classes from "./UserButton.module.css"; type UserProfileButtonProps = { image: string; @@ -11,8 +11,6 @@ type UserProfileButtonProps = { } & UnstyledButtonProps const UserProfileButton = ({image, name, email, icon, ...others}: UserProfileButtonProps) => { - const {classes} = useStyles(); - return ( diff --git a/layout/App/HeaderNav/HeaderNav.tsx b/layout/App/HeaderNav/HeaderNav.tsx index 426d573..d5d1326 100644 --- a/layout/App/HeaderNav/HeaderNav.tsx +++ b/layout/App/HeaderNav/HeaderNav.tsx @@ -1,220 +1,222 @@ +"use client" + import { - ActionIcon, Avatar, - Burger, - Flex, - Group, Indicator, - MediaQuery, - Menu, - rem, - Stack, - Text, - TextInput, Tooltip, - useMantineTheme + ActionIcon, Avatar, + Burger, + Flex, + Group, Indicator, + Menu, + rem, + Stack, + Text, + TextInput, Tooltip, + useMantineTheme } from "@mantine/core"; import { - IconBell, - IconMessageCircle, - IconPower, - IconSearch, + IconBell, + IconMessageCircle, + IconPower, + IconSearch, } from "@tabler/icons-react"; import {LanguagePicker} from "@/components"; import {useMediaQuery} from "@mantine/hooks"; -import React from "react"; +import {useDisclosure} from "@mantine/hooks"; const ICON_SIZE = 20; const MESSAGES = [{ - "id": "687725a3-5489-486e-9ffd-180df00f8e10", - "first_name": "Egor", - "last_name": "Thornebarrow", - "message": "Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam vel augue." + "id": "687725a3-5489-486e-9ffd-180df00f8e10", + "first_name": "Egor", + "last_name": "Thornebarrow", + "message": "Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam vel augue." }, { - "id": "75103d7a-b26b-4e1f-8d7e-2117867d05b8", - "first_name": "Magdalen", - "last_name": "Slessor", - "message": "In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt. Nulla mollis molestie lorem. Quisque ut erat." + "id": "75103d7a-b26b-4e1f-8d7e-2117867d05b8", + "first_name": "Magdalen", + "last_name": "Slessor", + "message": "In eleifend quam a odio. In hac habitasse platea dictumst. Maecenas ut massa quis augue luctus tincidunt. Nulla mollis molestie lorem. Quisque ut erat." }, { - "id": "08bff541-e731-445f-a2e1-7f08e3e30357", - "first_name": "Bald", - "last_name": "Vant", - "message": "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam vel augue. Vestibulum rutrum rutrum neque." + "id": "08bff541-e731-445f-a2e1-7f08e3e30357", + "first_name": "Bald", + "last_name": "Vant", + "message": "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus vestibulum sagittis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam vel augue. Vestibulum rutrum rutrum neque." }] const NOTIFICATIONS = [{ - "id": "15f6a5e0-758f-4642-aa95-a07bb3170544", - "title": "Beahan-Senger", - "message": "Maecenas tincidunt lacus at velit. Vivamus vel nulla eget eros elementum pellentesque. Quisque porta volutpat erat. Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK/SURBVDjLbZNNaFRXFMd/72U+dDLNRItGUSeJiagTJ6IQhdhaWoopFCJiF10UBAXpSlHcddHi0oUbkXYRFURE/NiIIjSkpCpdtGoTJG20iUMsMZJokhmqee/de8/p4jmDggcuFw73/s7/nPu/nqrSe/hch6peUZhD6VYUVUCVeNPaEmcwYbn06/nv1gIkiA8cVNhQLOS96ZkyqtVLEMMEFZgvv2IhVEQTrbyJGAA7i4U13qeda8ivLKIxAVGJq0pcfVljhsyiBDt2f8s7AFSXFDuauXVvjLm516gIAFJVoYqKMl95TRBGvB1vWsBLpBKs29RMe9NSnANVQURxTnEiWFEWAsPlq4PvAyjOCRPTFVJ+kiAIMGGElThvqSORTFFID3Oy+xfqdnUyfLZHvWByX3UGiBOsM4RhyJ5t7bH8WB2qyp27fWxLP2dx8RtyrVuYL61n9Oe+EzUFxgnOWKzzuTD4F6GxWKc4K7Sk/2DPpjINuR3Mjv9Nyov4oGEF2Q/zuRrAWiEyhkhA/TReMgm+sjr1gL0bZ2lc20M4dYlUxmNiaBQTRC+Dhf+6q0PEWIcNLKFxWCcYJ6zkPl93lMi19RJM/oSfsiSzzQSzI4j1P+862v/YrylwggkNoXEExrGkfJuv2sbJtfcSTP6InzRElRaeDtzj+4EGth7tHwLw327BRDGgsXKXL/LPWN7xJdHzPupSSlhpZur2fX4Y+Yyx+XTtGf2qYSLrsKGl/lk/vflphFVMPTyFEPBqdhWlwYdcW3SYF1H2vUaKDRM5CjpA4aMzPLp0jMd3fiOd30x5ZoqbyYNkMktRxhCRp+8oUFXwfbq2d/JofIZo5Aatmz+mvn49//75D0NNh8g2tWGtoAphENbs6Kkqn+w/3afKAUVZ8eQ4W1uX0bWhhYmonqulTuZMtvYzUa7/fvHI7irgf/y+taODWkwAAAAAAElFTkSuQmCC" + "id": "15f6a5e0-758f-4642-aa95-a07bb3170544", + "title": "Beahan-Senger", + "message": "Maecenas tincidunt lacus at velit. Vivamus vel nulla eget eros elementum pellentesque. Quisque porta volutpat erat. Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK/SURBVDjLbZNNaFRXFMd/72U+dDLNRItGUSeJiagTJ6IQhdhaWoopFCJiF10UBAXpSlHcddHi0oUbkXYRFURE/NiIIjSkpCpdtGoTJG20iUMsMZJokhmqee/de8/p4jmDggcuFw73/s7/nPu/nqrSe/hch6peUZhD6VYUVUCVeNPaEmcwYbn06/nv1gIkiA8cVNhQLOS96ZkyqtVLEMMEFZgvv2IhVEQTrbyJGAA7i4U13qeda8ivLKIxAVGJq0pcfVljhsyiBDt2f8s7AFstyleFDuauXVvjLm516gIAFJVoYqKMl95TRBGvB1vWsBLpBKs29RMe9NSnANVQURxTnEiWFEWAsPlq4PvAyjOCRPTFVJ+kiAIMGGElThvqSORTFFID3Oy+xfqdnUyfLZHvWByX3UGiBOsM4RhyJ5t7bH8WB2qyp27fWxLP2dx8RtyrVuYL61n9Oe+EzUFxgnOWKzzuTD4F6GxWKc4K7Sk/2DPpjINuR3Mjv9Nyov4oGEF2Q/zuRrAWiEyhkhA/TReMgm+sjr1gL0bZ2lc20M4dYlUxmNiaBQTRC+Dhf+6q0PEWIcNLKFxWCcYJ6zkPl93lMi19RJM/oSfsiSzzQSzI4j1P+862v/YrylwggkNoXEExrGkfJuv2sbJtfcSTP6InzRElRaeDtzj+4EGth7tHwLw327BRDGgstyleKXL/LPWN7xJdHzPupSSlhpZur2fX4Y+Yyx+XTtGf2qYSLrsKGl/lk/vflphFVMPTyFEPBqdhWlwYdcW3SYF1H2vUaKDRM5CjpA4aMzPLp0jMd3fiOd30x5ZoqbyYNkMktRxhCRp+8oUFXwfbq2d/JofIZo5Aatmz+mvn49//75D0NNh8g2tWGtoAphENbs6Kkqn+w/3afKAUVZ8eQ4W1uX0bWhhYmonqulTuZMtvYzUa7/fvHI7irgf/y+taODWkwAAAAAAElFTkSuQmCC" }, { - "id": "28d772cb-dcbd-4a34-bbe2-587fc03c5723", - "title": "Orn, Wehner and Kirlin", - "message": "Integer ac leo.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJzSURBVDjLpZNLSFRxFMZ/944z42MqH2MllWJEkT1UjHETSFJiVAtdtHFly5aCm6xNWyFw2aoIoiAoWgjSIqkWghAuVFBTJJVGGV/pzPznzr3/c9qEaUaLOsuPw4/z+D5HVfmfKvhdCIadmCo9KrSLkFAFFUZFGFLh0YFbmt7d7+yeIBh2WlR44lT31jqlCTRSDmpRs4rdGMP70j8vQndZh37YBwjeOx1a2vLaPdqFFh/CZqcQbw0NcuAU4haewvFdvIVXeCsfOitv65sdgP/eKVfla+jCi5i4Wwy/HCSVNJy5eAhUmR7fIl4Jl6+fJxS9wPeRO2kRaqq6dN0FUKHHremLmewKm/PvCLuGtptFLM1usDS3SdvNIiIRsNsTmPUxis/2xcTSA+ACiHDDKWtGtj8TdbZoSkA0bLjSXkTr9QjRsKEp8XNpb4qC0tOI5cZuQB3Rg6xML+z5yOZymo1ls0dLLRrAw1pqdwAqGA1yePkSVhc9xCr5nJDJKEuzhuScIcgryTlDdjMLqogQ2vGBWObxTUP8ZDVzI5OMf0xREHGJH48SPxJi/VuGmdEtKqosx07FEFuA7zH7CyAM+qtjDWU1F2koNai/jfo5xObQwHC4CrQ+AFXCFY2Y1a/4eQZ/3cAykJ18mCY4gBs5Aeqg4oHNo9ZHxQdcQrEzaLSe5KeHad9jYAdQ1qkpEbqzs89AjxE62IwTKkdFQRQ3EidceRUtbmVt4i1+nu7Ge5raZ+Xkc+eaWB6X1PXWRirO4YZdkIDAs2SSMyyP9M8HPneb7uvQH7MAsPjUiYmlV4R2a0kEeQh8RgOfocCn/9KDv4TpX+oHaI9cJDajhlcAAAAASUVORK5CYII=" + "id": "28d772cb-dcbd-4a34-bbe2-587fc03c5723", + "title": "Orn, Wehner and Kirlin", + "message": "Integer ac leo.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJzSURBVDjLpZNLSFRxFMZ/944z42MqH2MllWJEkT1UjHETSFJiVAtdtHFly5aCm6xNWyFw2aoIoiAoWgjSIqkWghAuVFBTJJVGGV/pzPznzr3/c9qEaUaLOsuPw4/z+D5HVfmfKvhdCIadmCo9KrSLkFAFFUZFGFLh0YFbmt7d7+yeIBh2WlR44lT31jqlCTRSDmpRs4rdGMP70j8vQndZh37YBwjeOx1a2vLaPdqFFh/CZqcQbw0NcuAU4haewvFdvIVXeCsfOitv65sdgP/eKVfla+jCi5i4Wwy/HCSVNJy5eAhUmR7fIl4Jl6+fJxS9wPeRO2kRaqq6dN0FUKHHremLmewKm/PvCLuGtptFLM1usDS3SdvNIiIRsNsTmPUxis/2xcTSA+ACiHDDKWtGtj8TdbZoSkA0bLjstylekTr9QjRsKEp8XNpb4qC0tOI5cZuQB3Rg6xML+z5yOZymo1ls0dLLRrAw1pqdwAqGA1yePkSVhc9xCr5nJDJKEuzhuScIcgryTlDdjMLqogQ2vGBWObxTUP8ZDVzI5OMf0xREHGJH48SPxJi/VuGmdEtKqostyle07FEFuA7zH7CyAM+qtjDWU1F2koNai/jfo5xObQwHC4CrQ+AFXCFY2Y1a/4eQZ/3cAykJ18mCY4gBs5Aeqg4oHNo9ZHxQdcQrEzaLSe5KeHad9jYAdQ1qkpEbqzs89AjxE62IwTKkdFQRQ3EidceRUtbmVt4i1+nu7Ge5raZ+Xkc+eaWB6X1PXWRirO4YZdkIDAs2SSMyyP9M8HPneb7uvQH7MAsPjUiYmlV4R2a0kEeQh8RgOfocCn/9KDv4TpX+oHaI9cJDajhlcAAAAASUVORK5CYII=" }, { - "id": "64ee7341-f2a8-42f2-b379-48f523811d49", - "title": "Heathcote-Flatley", - "message": "Vivamus vel nulla eget eros elementum pellentesque. Quisque porta volutpat erat.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJoSURBVDjLhZJZTxNhFIbnRq/9E/4Rf4JRE+PChV4YYjQxLglRQkgDWhGXRo2VNJWu0IWh0hY6iEvpjl1AWuoImqFCO6V0uqRrzOt8H0mxBvQkTyYnOfOcd775mPn5+WMcx12dm5v74Ha7806ns+JwOOIsyyptNttxAMy/YDwejz6ZTKJQKKDZbKLdbkOSJKTTaVgslrX/CmZnZwu1Wg3VarUjID3BbDZD5d7GE+cWRhwZ3J8SoLD+wMDEOu4ZvqFP9zXMuFyuXLlcphszmQwEQUAwGESpVILBYEC13j6Um9pUg5mZmck2Gg3wPI9isYh4PE4hNT4+DlXkIUZDw3jgH4TC24+Bj324u3CbCq6//gJmenqaClZXV6kgEolQSGk0GhxWRND7MgHGbrdTQSKRwM7ODnw+H/x+Px1Sq9UwenMHQgSXVVEwVqtVarVaSKVS9PvD4TBisRgVqFSqzkZrINuVIF+qo+dxBMyEXCSyKIr095EDJUmI6OlzNeyhHFgZIiBPNpiFcymLje0yziqDYIxG41GdTtc7pp/CpMWCMa0eJpMJYyYXKpXKoQn4nyWcHvLvXQatVntEaV0Dv7GJCW4Ztk882MAm3i6JFHdUpAKaQk5gl1kTJJwaWty/UYOT31GsNOkwKS6e79roiYko19qdngh6HgX3Bf3mdSrwyC9yf/EukYfzs9gFEZxX+vcFffo0dmXBwvLe5vcr3QlsAbGrpwlG/hDcepNCodyAKNWxVahBEKvySVfAZ0p0+CAuKH2/OoIbmuTitVcr1SsvErj0LIqLoxGcU4ZwZjiAkwrvgZy4w7G/AXhUV4qmXai6AAAAAElFTkSuQmCC" + "id": "64ee7341-f2a8-42f2-b379-48f523811d49", + "title": "Heathcote-Flatley", + "message": "Vivamus vel nulla eget eros elementum pellentesque. Quisque porta volutpat erat.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJoSURBVDjLhZJZTxNhFIbnRq/9E/4Rf4JRE+PChV4YYjQxLglRQkgDWhGXRo2VNJWu0IWh0hY6iEvpjl1AWuoImqFCO6V0uqRrzOt8H0mxBvQkTyYnOfOcd775mPn5+WMcx12dm5v74Ha7806ns+JwOOIsyyptNttxAMy/YDwejz6ZTKJQKKDZbKLdbkOSJKTTaVgslrX/CmZnZwu1Wg3VarUjID3BbDZD5d7GE+cWRhwZ3J8SoLD+wMDEOu4ZvqFP9zXMuFyuXLlcphszmQwEQUAwGESpVILBYEC13j6Um9pUg5mZmck2Gg3wPI9isYh4PE4hNT4+DlXkIUZDw3jgH4TC24+Bj324u3CbCq6//gJmenqaClZXV6kgEolQSGk0GhxWRND7MgHGbrdTQSKRwM7ODnw+H/x+Px1Sq9UwenMHQgstyleVVEwVqtVarVaSKVS9PvD4TBisRgVqFSqzkZrINuVIF+qo+dxBMyEXCSyKIr095EDJUmI6OlzNeyhHFgZIiBPNpiFcymLje0yziqDYIxG41GdTtc7pp/CpMWCMa0eJpMJYyYXKpXKoQn4nyWcHvLvXQatVntEaV0Dv7GJCW4Ztk882MAm3i6JFHdUpAKaQk5gl1kTJJwaWty/UYOT31GsNOkwKS6e79roiYko19qdngh6HgX3Bf3mdSrwyC9yf/EukYfzs9gFEZxX+vcFffo0dmXBwvLe5vcr3QlsAbGrpwlG/hDcepNCodyAKNWxVahBEKvySVfAZ0p0+CAuKH2/OoIbmuTitVcr1SsvErj0LIqLoxGcU4ZwZjiAkwrvgZy4w7G/AXhUV4qmXai6AAAAAElFTkSuQmCC" }, { - "id": "414c4537-5726-466e-9c26-2ab398a17f70", - "title": "Buckridge, Yundt and Schiller", - "message": "In hac habitasse platea dictumst. Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante. Nulla justo.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKzSURBVBgZBcFNbJNlAADg53v7tdR1o4vup/yk20IQxqZsLIskCsaTGi7sYDzIzYtctDEkXkwWEhOvix4kRG8eOKkh/iUmDgJiREVh6PidcRnb2Ngcg3Xr1671eaLKm1ozRaNiJQABAQABAFDDrLFk2sk4UzRq90slnUOk0oSYKCJERIEQESKkiBChscnsr6XMt2fFYiWdQ1RSFIZJYeFvHlwhBFIBgRSiQKNBcxsdB+g4W4pBKk3IMjgCGKG6xu0fuPMNm48R0Wgg4r95sk9RJ6gjiinPMfElUxdZWySdY99RXv2I7QcBEdUqG1VqCQmxgBBRnuP654SIONA2wMAx8kWee4crp61NfWWmmpfKD1ibOq+4pVUsIKAwzOESK9PMXmF6nB/fY+g4xcPK2woePXxWoe2QfM+glX/2uPugJlaHFBHSOdp7ae9l3wgXP+D3U8orl1XSZU/uft7y3UmZKNGytSDb1iMWEGH5Kt+9TUc/e0fItfPC+zbG31JJPZTvfkVl7oxMU+TfP2+oV6p2/fSFWEAINALrC0yPM3eZZ44pZ6ls3ym/64iNe6eETE26uUvu0TVtTbtlVx+L1SEi1eDgCdLNTJ83f+5D+gZ19B+1ce8TIV2TrPZYunTVtnKrbC4mIYDQoL2f7cO095qvNax09uvoOyKZ/1Qq01BZ7bJ44Tc7Xz8t2zVErUFCACLWF6mW3bp0xvLyjETR3MTH6jasLe+wNP6z4o4XpbduI/MEm5vUiCVo1LDJ9++6OnnHa8c/c/PMCbcuXLKluF9YmjKwUpNePMeNa9Q2ackRCGaMmf2F5jbynW7fvS/562s9+w/J5fa4/8ekvs6nZfsO0N1DazMtOaYmyBiLKi9rzRSMKiip88blVvu7Ow3v7bE1WdB787qm9YQENSSIkTG2Mevk/++B+Jm41JzeAAAAAElFTkSuQmCC" + "id": "414c4537-5726-466e-9c26-2ab398a17f70", + "title": "Buckridge, Yundt and Schiller", + "message": "In hac habitasse platea dictumst. Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante. Nulla justo.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKzSURBVBgZBcFNbJNlAADg53v7tdR1o4vup/yk20IQxqZsLIskCsaTGi7sYDzIzYtctDEkXkwWEhOvix4kRG8eOKkh/iUmDgJiREVh6PidcRnb2Ngcg3Xr1671eaLKm1ozRaNiJQABAQABAFDDrLFk2sk4UzRq90slnUOk0oSYKCJERIEQESKkiBChscnsr6XMt2fFYiWdQ1RSFIZJYeFvHlwhBFIBgRSiQKNBcxsdB+g4W4pBKk3IMjgCGKG6xu0fuPMNm48R0Wgg4r95sk9RJ6gjiinPMfElUxdZWySdY99RXv2I7QcBEdUqG1VqCQmxgBBRnuP654SIONA2wMAx8kWee4crp61NfWWmmpfKD1ibOq+4pVUsIKAwzOESK9PMXmF6nB/fY+g4xcPK2woePXxWoe2QfM+glX/2uPugJlaHFBHSOdp7ae9l3wgXP+D3U8orl1XSZU/uft7y3UmZKNGytSDb1iMWEGH5Kt+9TUc/e0fItfPC+zbG31JJPZTvfkVl7oxMU+TfP2+oV6p2/fSFWEAINALrC0yPM3eZZ44pZ6ls3ym/64iNe6eETE26uUvu0TVtTbtlVx+L1SEi1eDgCdLNTJ83f+5D+gZ19B+1ce8TIV2TrPZYunTVtnKrbC4mIYDQoL2f7cO095qvNax09uvoOyKZ/1Qq01BZ7bJ44Tc7Xz8t2zVErUFCACLWF6mW3bp0xvLyjETR3MTH6jasLe+wNP6z4o4XpbduI/MEm5vUiCVo1LDJ9++6OnnHa8c/c/PMCbcuXLKluF9YmjKwUpNePMeNa9Q2ackRCGaMmf2F5jbynW7fvS/562s9+w/J5fa4/8ekvs6nZfsO0N1DazMtOaYmyBiLKi9rzRSMKiip88blVvu7Ow3v7bE1WdB787qm9YQENSSIkTG2Mevk/++B+Jm41JzeAAAAAElFTkSuQmCC" }, { - "id": "836cd406-c751-4662-b684-3006bf43e507", - "title": "Glover-Stoltenberg", - "message": "Suspendisse accumsan tortor quis turpis. Sed ante. Vivamus tortor. Duis mattis egestas metus. Aenean fermentum.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKASURBVDjLjZJfaFJRHMf3sOhlSG8RvfbQS0G9RNBLPRUEPfQQPQQrVkH1VC/BegkEL1O7ouhwORS1beI2///Z9TKk2EMEM3QqTkQKdU5S58VhE9q33zmkrRhjB36ce889n+/5/r73jAAYOaoikYgqGAxKfr9fWFpaGv3/+3HghM/n6y4uLioej0eYm5sbPZZAOBxWBQIBBu/W63V0u10QvOdyuQSHw3HySIEBvLy8vFur1UDPoBagKArsdvsvm80WslqtJw4VCIVCKtosD2AGzs/Pg9pBu93mTghWLBaLYDKZRg+FKazdarUKss9sgxxhvViFGMnC/+UbzGbzvtFoTIqieGoIU1gqAmQKi8PkAG63GySKZrMJ80oeE+8/45VrHd8rNRCs6HS6a4fC5AAUFu+90WggmUziR7OFSU8Kno95BOVP0Gq1fUEQbnABOk32er397e1tkAicTifvncEkjtXVVZTLZWQLJXwIyAzeI/jyMESCpYWFhf1KpYJisQhJkjjMHESjUZRKJbgiVry0PMCTd3dwX329e+v1xTdDAUpZSafT2NnZwebmJgqFAnfAks/lcrD5DHjrfYjwhhlfaxLExDPcEy/gyvMzOi5AYW2tra0hFouh1Wohn89zkWw2i1QqhXHhJgIZAwI5I9jQyY8hyk+ZQI8L0M06PTs7208kEvzXsdQ7nQ4ymQxkWcbtyUuIbthwcATTZibw9w7MzMyMTU9PN1jP7BeyvuPxOCis3tUXZ39qpUfQSOMc1qyM/+tgUHSzxgwGwxbrnwWo0Wh6arX6HG1U39Wdh16a4Cezmb0PMzhYer1+bGpqaotghcGDddosUCnM9p9ZYOu/ASUg4G4xOdG6AAAAAElFTkSuQmCC" + "id": "836cd406-c751-4662-b684-3006bf43e507", + "title": "Glover-Stoltenberg", + "message": "Suspendisse accumsan tortor quis turpis. Sed ante. Vivamus tortor. Duis mattis egestas metus. Aenean fermentum.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKASURBVDjLjZJfaFJRHMf3sOhlSG8RvfbQS0G9RNBLPRUEPfQQPQQrVkH1VC/BegkEL1O7ouhwORS1beI2///Z9TKk2EMEM3QqTkQKdU5S58VhE9q33zmkrRhjB36ce889n+/5/r73jAAYOaoikYgqGAxKfr9fWFpaGv3/+3HghM/n6y4uLioej0eYm5sbPZZAOBxWBQIBBu/W63V0u10QvOdyuQSHw3HySIEBvLy8vFur1UDPoBagKArsdvsvm80WslqtJw4VCIVCKtosD2AGzs/Pg9pBu93mTghWLBaLYDKZRg+FKazdarUKss9sgxxhvViFGMnC/+UbzGbzvtFoTIqieGoIU1gqAmQKi8PkAG63GySKZrMJ80oeE+8/45VrHd8rNRCs6HS6a4fC5AAUFu+90WggmUziR7OFSU8Kno95BOVP0Gq1fUEQbnABOk32er397e1tkAicTifvncEkjtXVVZTLZWQLJXwIyAzeI/jyMESCpYWFhf1KpYJisQhJkjjMHESjUZRKJbgiVry0PMCTd3dwX329e+v1xTdDAUpZSafT2NnZwebmJgqFAnfAks/lcrD5DHjrfYjwhhlfaxLExDPcEy/gyvMzOi5AYW2tra0hFouh1Wohn89zkWw2i1QqhXHhJgIZAwI5I9jQyY8hyk+ZQI8L0M06PTs7208kEvzXsdQ7nQ4ymQxkWcbtyUuIbthwcATTZibw9w7MzMyMTU9PN1jP7BeyvuPxOCis3tUXZ39qpUfQSOMc1qyM/+tgUHSzxgwGwxbrnwWo0Wh6arX6HG1U39Wdh16a4Cezmb0PMzhYer1+bGpqaotghcGDddosUCnM9p9ZYOu/ASUg4G4xOdG6AAAAAElFTkSuQmCC" }, { - "id": "cd5a3cfc-9880-43a1-9baf-045f19e5b410", - "title": "Terry, Abshire and King", - "message": "Morbi ut odio. Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo. In blandit ultrices enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin interdum mauris non ligula pellentesque ultrices.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK1SURBVDjLbZJtSFNxFIcHgjAQgr6VhBSFIhhJQa842JdeLBMyVIpSSUtFZpIIaqa5UNTpUKebmR82FZmmzpXiHKawhqKUlUVQCEEE1ZfQmFg3n85VLN8uHC738H9+5/mfTQNoNtR4S7iUidHmacYtCl6zwnD1NEMPTPSWhG8+vxnOEzDAZBe8ckm5YaYfnjtgzAI9+QGcuXlbA8ZbghmzDTHRDi965HAzDFYiU6H/LvQWgKsERmuhrxAeXhmi+XLw/4DRZjOTAqsBw9WKgHrR1f6b1JGtxZ6up+2aQo+EOTLBfM60GjBqieJZvcJEp0ysUOgvDaOvKER0jaLrpz3Tjz3NiDU5BFtCGA0XFJxyiyqdQuWJSA0jJjO+NtEzq7p6+gpC6c6b42k5dOVCZ5a8b4M1fo76s6FU6/USAq1XwRht0ojue/ztq3fruaMV3W7cZYiuk5YkHY3xOtF14siQqTHdVB3Xcv8wYgaF4W81oruEX7bszFWbQaIbwHEL0dVNTU3F+Xy+SNHV0RAL5UcClB4MoigCOnIkYN8Pjegu4Xski0lXt6vFmqjqfqPLcErg316v9xdNCWdE9xP3oqDggJbC/atXK967oJHtfuBxPqIbEN1g0Y1Rtyuwg5lh+OjB6XTaDY3JxYbGpJ8ZtRdJNeqWO0uj1QC5gjXZILoZspgdaz+bwDtl8oLb7V4WeLncWjBf1p3Kk1kLM1881I1kkVgXRaohdECz5a8sJXCTwArfX8LXKa5Xnsb1xozrXT3qU+NNp857k6PZuxa3gw8J/EedbLfbfTabzXe+KJrB2VbWPwOvLWrA1ukCewVeFLh1rXcyZ49S7UmjwpOyAlcMp2xvIHCswJ8FLl7fl4PGSzURmDw3Viarb/Vb+jUbAgRuEThuu73I4cpj2bsDqrbUvPqt9v8CPKvGd70s+8YAAAAASUVORK5CYII=" + "id": "cd5a3cfc-9880-43a1-9baf-045f19e5b410", + "title": "Terry, Abshire and King", + "message": "Morbi ut odio. Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo. In blandit ultrices enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin interdum mauris non ligula pellentesque ultrices.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK1SURBVDjLbZJtSFNxFIcHgjAQgr6VhBSFIhhJQa842JdeLBMyVIpSSUtFZpIIaqa5UNTpUKebmR82FZmmzpXiHKawhqKUlUVQCEEE1ZfQmFg3n85VLN8uHC738H9+5/mfTQNoNtR4S7iUidHmacYtCl6zwnD1NEMPTPSWhG8+vxnOEzDAZBe8ckm5YaYfnjtgzAI9+QGcuXlbA8ZbghmzDTHRDi965HAzDFYiU6H/LvQWgKsERmuhrxAeXhmi+XLw/4DRZjOTAqsBw9WKgHrR1f6b1JGtxZ6up+2aQo+EOTLBfM60GjBqieJZvcJEp0ysUOgvDaOvKER0jaLrpz3Tjz3NiDU5BFtCGA0XFJxyiyqdQuWJSA0jJjO+NtEzq7p6+gpC6c6b42k5dOVCZ5a8b4M1fo76s6FU6/USAq1XwRht0ojue/ztq3fruaMV3W7cZYiuk5YkHY3xOtF14siQqTHdVB3Xcv8wYgaF4W81oruEX7bszFWbQaIbwHEL0dVNTU3F+Xy+SNHV0RAL5UcClB4MoigCOnIkYN8Pjegu4Xski0lXt6vFmqjqfqPLcErg316v9xdNCWdE9xP3oqDggJbC/atXK967oJHtfuBxPqIbEN1g0Y1Rtyuwg5lh+OjB6XTaDY3JxYbGpJ8ZtRdJNeqWO0uj1QC5gjXZILoZspgdaz+bwDtl8oLb7V4WeLncWjBf1p3Kk1kLM1881I1kkVgXRaohdECz5a8sJXCTwArfX8LXKa5Xnsb1xozrXT3qU+NNp857k6PZuxa3gw8J/EedbLfbfTabzXe+KJrB2VbWPwOvLWrA1ukCewVeFLh1rXcyZ49S7UmjwpOyAlcMp2xvIHCswJ8FLl7fl4PGSzURmDw3Viarb/Vb+jUbAgRuEThuu73I4cpj2bsDqrbUvPqt9v8CPKvGd70s+8YAAAAASUVORK5CYII=" }, { - "id": "c958e1be-c7c9-4bb0-bc13-da5eb10db30b", - "title": "O'Hara Inc", - "message": "Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADoSURBVBgZBcExblNBGAbA2ceegTRBuIKOgiihSZNTcC5LUHAihNJR0kGKCDcYJY6D3/77MdOinTvzAgCw8ysThIvn/VojIyMjIyPP+bS1sUQIV2s95pBDDvmbP/mdkft83tpYguZq5Jh/OeaYh+yzy8hTHvNlaxNNczm+la9OTlar1UdA/+C2A4trRCnD3jS8BB1obq2Gk6GU6QbQAS4BUaYSQAf4bhhKKTFdAzrAOwAxEUAH+KEM01SY3gM6wBsEAQB0gJ+maZoC3gI6iPYaAIBJsiRmHU0AALOeFC3aK2cWAACUXe7+AwO0lc9eTHYTAAAAAElFTkSuQmCC" + "id": "c958e1be-c7c9-4bb0-bc13-da5eb10db30b", + "title": "O'Hara Inc", + "message": "Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADoSURBVBgZBcExblNBGAbA2ceegTRBuIKOgiihSZNTcC5LUHAihNJR0kGKCDcYJY6D3/77MdOinTvzAgCw8ysThIvn/VojIyMjIyPP+bS1sUQIV2s95pBDDvmbP/mdkft83tpYguZq5Jh/OeaYh+yzy8hTHvNlaxNNczm+la9OTlar1UdA/+C2A4trRCnD3jS8BB1obq2Gk6GU6QbQAS4BUaYSQAf4bhhKKTFdAzrAOwAxEUAH+KEM01SY3gM6wBsEAQB0gJ+maZoC3gI6iPYaAIBJsiRmHU0AALOeFC3aK2cWAACUXe7+AwO0lc9eTHYTAAAAAElFTkSuQmCC" }, { - "id": "d50227d9-8bd9-4b64-8b74-1fe356941149", - "title": "Hand LLC", - "message": "Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla. Nunc purus. Phasellus in felis.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJsSURBVBgZfcFLbExhGIDh9z9zztw6marQUm1DNZEQEdUpsRC2lLgsJDZNGmFjY2nBErGzENewIEUQRBBBJFW3IC6xqqYSd4tWtOPMnMv/fdqYUIvxPEZVqWbn6sUzm+tyV3OpTMFaQUET2eSN7YdvdFHhUMWudR1OY23NxVwyXbAiWFUiK8YfLa3ZvXFpDxUOVbTUanZKpmZ5Jl9L67w5NDY1IKKICHWZzAkqXKpI6seoftZsae/a7Ez3ikwoaZox63H/7LGACocq9n3fE06dlh3L4hOaFMbLMiH48FTntjWGVLgD1wt+Oj8/Y4zDX8r5rZ/ibYcWvjxV09/R3NJKyXh4JuTDx2HtHVrU28lvZuBap7ateYQxBpRxih9Ydhx4QuvceRQKAU9vncWYNF4yT1NHN6eP3olvv3q/JX7cc8EMXC5I29o+E349jA0T4OTZ2xtRmrqaKZ2zGCyCtfzhKkxDeXHuXvDm7etNLpFBJcSGSVSUn0MP6M6/gvg4PKSq45uupA4+33PJxaiRuMTo0CDRyCckKlO3YD0/2nfxL2VCzoPRk8v4kpxJ86IVSZfIwc3UM2PVfkBAFRuHJL7f5KtfxqqlZBP4McQ2orlhCQaIn70ojXj9sUukqC0TfjsJKL8JKbFkyTEmSYwYPBWsRLgEWCDR0d40Z2XfiEsAKjEYQBUQkAhHIxrcH9QbHzVF1CmiDJPOtPMOOLOSEca5hIrBgiqoBQ1RCUDKqJZQ66O2iMajqPUBYTJXQyH2h5HYA3VAE6h6IClUakAjVEMwITgxtlxmMlfLweehIxsaUBwMhv9RwNwF0WEqfgE9XTQvEQ+I/gAAAABJRU5ErkJggg==" + "id": "d50227d9-8bd9-4b64-8b74-1fe356941149", + "title": "Hand LLC", + "message": "Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla. Nunc purus. Phasellus in felis.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJsSURBVBgZfcFLbExhGIDh9z9zztw6marQUm1DNZEQEdUpsRC2lLgsJDZNGmFjY2nBErGzENewIEUQRBBBJFW3IC6xqqYSd4tWtOPMnMv/fdqYUIvxPEZVqWbn6sUzm+tyV3OpTMFaQUET2eSN7YdvdFHhUMWudR1OY23NxVwyXbAiWFUiK8YfLa3ZvXFpDxUOVbTUanZKpmZ5Jl9L67w5NDY1IKKICHWZzAkqXKpI6seoftZsae/a7Ez3ikwoaZox63H/7LGACocq9n3fE06dlh3L4hOaFMbLMiH48FTntjWGVLgD1wt+Oj8/Y4zDX8r5rZ/ibYcWvjxV09/R3NJKyXh4JuTDx2HtHVrU28lvZuBap7ateYQxBpRxih9Ydhx4QuvceRQKAU9vncWYNF4yT1NHN6eP3olvv3q/JX7cc8EMXC5I29o+E349jA0T4OTZ2xtRmrqaKZ2zGCyCtfzhKkxDeXHuXvDm7etNLpFBJcSGSVSUn0MP6M6/gvg4PKSq45uupA4+33PJxaiRuMTo0CDRyCckKlO3YD0/2nfxL2VCzoPRk8v4kpxJ86IVSZfIwc3UM2PVfkBAFRuHJL7f5KtfxqqlZBP4McQ2orlhCQaIn70ojXj9sUukqC0TfjsJKL8JKbFkyTEmSYwYPBWsRLgEWCDR0d40Z2XfiEsAKjEYQBUQkAhHIxrcH9QbHzVF1CmiDJPOtPMOOLOSEca5hIrBgiqoBQ1RCUDKqJZQ66O2iMajqPUBYTJXQyH2h5HYA3VAE6h6IClUakAjVEMwITgxtlxmMlfLweehIxsaUBwMhv9RwNwF0WEqfgE9XTQvEQ+I/gAAAABJRU5ErkJggg==" }, { - "id": "bc8f3d9b-baed-4bab-9f34-d42f114461d0", - "title": "Waelchi, Weimann and Rutherford", - "message": "Morbi quis tortor id nulla ultrices aliquet.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKKSURBVDjLpZNdSBRRGIbnzOzubSxBRReBYhTRDziQQlKxbmoKItp0YVRUsBB2UVQsWdkfilHaj6GuZqEkhJaSf6knISqUYIgooogWS2uRwjFd25yZ3Xn7NlKS3bzp4jDMzHne73zPfCMAEP5nzbux6gU5UifwsE+AWSMos89DVczz4xpD8ArjkxUsMW4AwZ7InSWwetJh8Vzo1YzPviNYjfTmQL8rY+KSqI1fFJWYAKrsjjSvgPV4F/DsAGbqFyF0nSVOX2Xu0M3lwKMdCHdlgGDtW5kox23BqGFes2UdBeyD2ZYKgn1Tlcynt6YAPB/TDUkg2PNPB9H1s4pxozWZTlIIgjX9XipVL0CoaW0U9sVINGsF2ahm8l/9OkmWZg3shNWXC/TnwnzgwtdSUR27IDpn942cluSPxZIsRGXpt5eCTINg7Y9pNdy1DejbDjzMhNm+BQSrgXMS/1wi+UdOSQiUOeH32rgwc4PxSH8eMFSECC+A2Z0Ns5PAgXygNxPoTqdrFoz2dMy0bKLTuCk0B6HmjXh3hALINCdZCFYyTFaIKn0mTqa50baZNmZQgAvG/TSMlkjqp5MSHz4h+T8ct+HtYRteFdl5jMTxctFJsjSrLw/hDtfvEL01DQSrBDsXnMToIphPN66H0ZGJL2ckf7ApGejJglazCu+P2XwLBpDp8smG1dS/gonalSDTHjLtm7q1AehyIXA5AS8P2r1xAwhWvtcm0Bjn08Rlg0xrBDvJtHukdBnQuRU6SXxzdDGG9jpiJ3HsvKgEzkpasDEZE3VrMFwszVV6fciuTjWmYLQ8CYN7HNrTQocStwUynUiyWkgWJ9Nzf90Lj115vt/BB3c7vE8KHfNE/gKM7aCNx0eNYwAAAABJRU5ErkJggg==" + "id": "bc8f3d9b-baed-4bab-9f34-d42f114461d0", + "title": "Waelchi, Weimann and Rutherford", + "message": "Morbi quis tortor id nulla ultrices aliquet.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKKSURBVDjLpZNdSBRRGIbnzOzubstyleBRReBYhTRDziQQlKxbmoKItp0YVRUsBB2UVQsWdkfilHaj6GuZqEkhJaSf6knISqUYIgooogWS2uRwjFd25yZ3Xn7NlKS3bzp4jDMzHne73zPfCMAEP5nzbux6gU5UifwsE+AWSMos89DVczz4xpD8ArjkxUsMW4AwZ7InSWwetJh8Vzo1YzPviNYjfTmQL8rY+KSqI1fFJWYAKrsjjSvgPV4F/DsAGbqFyF0nSVOX2Xu0M3lwKMdCHdlgGDtW5kox23BqGFes2UdBeyD2ZYKgn1Tlcynt6YAPB/TDUkg2PNPB9H1s4pxozWZTlIIgjX9XipVL0CoaW0U9sVINGsF2ahm8l/9OkmWZg3shNWXC/TnwnzgwtdSUR27IDpn942cluSPxZIsRGXpt5eCTINg7Y9pNdy1DejbDjzMhNm+BQSrgXMS/1wi+UdOSQiUOeH32rgwc4PxSH8eMFSECC+A2Z0Ns5PAgXygNxPoTqdrFoz2dMy0bKLTuCk0B6HmjXh3hALINCdZCFYyTFaIKn0mTqa50baZNmZQgAvG/TSMlkjqp5MSHz4h+T8ct+HtYRteFdl5jMTxctFJsjSrLw/hDtfvEL01DQSrBDstylenMToIphPN66H0ZGJL2ckf7ApGejJglazCu+P2XwLBpDp8smG1dS/gonalSDTHjLtm7q1AehyIXA5AS8P2r1xAwhWvtcm0Bjn08Rlg0xrBDvJtHukdBnQuRU6stylexzdDGG9jpiJ3HsvKgEzkpasDEZE3VrMFwszVV6fciuTjWmYLQ8CYN7HNrTQocStwUynUiyWkgWJ9Nzf90Lj115vt/BB3c7vE8KHfNE/gKM7aCNx0eNYwAAAABJRU5ErkJggg==" }, { - "id": "6e6c861b-aba8-4146-a4c9-26caa1bd8ea4", - "title": "Hettinger-Kiehn", - "message": "Aenean sit amet justo.", - "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF/SURBVDjLpZN/S8JgEMd9i1JURPSDIoIkS1FQI4iQgihStExrhGmydGObyZyyYRaybBRFQb/8vxcgBIF92275ApoHx7jjns/37p49LgCuQdzlXmEXd8RON1L4QPjM9NwbQtkXBE+eEWCe4D9+hC99j+XDO3j3b+FJ3CCcvu5a5wgQLXV6ceUT/3Xv3mWPAJayE5/fboAA4dw7nNjspmoDQqevlDAMA+12G61WC1/fP1BVFfV6HbIsUyyKIgRBAMdxVD8drf0BzIU5scl12QZY27ZM13VSbzQapFir1VCtViFJEsUsy6JQKCCfz1P9xFrFBlhX5cTGVyUb4D96oESz2SR1RVFIsVKpoFwuo1gsUpzNZsEwDDKZDNWPhQUb4D0wHHUwHCjZgKVEmxKaptHc/ZmtL8/zNLMVp1IpJJNJxGIxqh/yn9sAT1x31IHbx6L/FtiF3Sv6s+a2NMxE65jaUMwtX9CixiIiRkM8RoKc2XbRVGZhnrGcJcDAr3FQwC803UMOARws7QAAAABJRU5ErkJggg==" + "id": "6e6c861b-aba8-4146-a4c9-26caa1bd8ea4", + "title": "Hettinger-Kiehn", + "message": "Aenean sit amet justo.", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF/SURBVDjLpZN/S8JgEMd9i1JURPSDIoIkS1FQI4iQgihStExrhGmydGObyZyyYRaybBRFQb/8vxcgBIF92275ApoHx7jjns/37p49LgCuQdzlXmEXd8RON1L4QPjM9NwbQtkXBE+eEWCe4D9+hC99j+XDO3j3b+FJ3CCcvu5a5wgQLXV6ceUT/3Xv3mWPAJayE5/fboAA4dw7nNjspmoDQqevlDAMA+12G61WC1/fP1BVFfV6HbIsUyyKIgRBAMdxVD8drf0BzIU5scl12QZY27ZM13VSbzQapFir1VCtViFJEsUsy6JQKCCfz1P9xFrFBlhX5cTGVyUb4D96oESz2SR1RVFIsVKpoFwuo1gsUpzNZsEwDDKZDNWPhQUb4D0wHHUwHCjZgKVEmxKaptHc/ZmtL8/zNLMVp1IpJJNJxGIxqh/yn9sAT1x31IHbx6L/FtiF3Sv6s+a2NMxE65jaUMwtX9CixiIiRkM8RoKc2XbRVGZhnrGcJcDAr3FQwC803UMOARws7QAAAABJRU5ErkJggg==" }] type HeaderNavProps = { - opened: boolean; - handleOpen: () => void + opened: boolean; + handleOpen: () => void + mobileOpened: boolean + toggleMobile: () => void + desktopOpened: boolean + toggleDesktop: () => void } -const HeaderNav = ({handleOpen, opened}: HeaderNavProps) => { - const theme = useMantineTheme() - const tablet_match = useMediaQuery('(max-width: 768px)'); - const mobile_match = useMediaQuery('(max-width: 425px)'); +const HeaderNav = (props: HeaderNavProps) => { + const {handleOpen, opened, desktopOpened, toggleDesktop,toggleMobile, mobileOpened} = props + const theme = useMantineTheme() + const laptop_match = useMediaQuery('(max-width: 992px)'); + const tablet_match = useMediaQuery('(max-width: 768px)'); + const mobile_match = useMediaQuery('(max-width: 425px)'); - const messages = MESSAGES.map(m => - - - - {Array.from(m.first_name)[0]}{Array.from(m.last_name)[0]} - - - {m.first_name} {m.last_name} - {m.message} - - - - ) + const messages = MESSAGES.map(m => + + + + {Array.from(m.first_name)[0]}{Array.from(m.last_name)[0]} + + + {m.first_name} {m.last_name} + {m.message} + + + + ) - const notifications = NOTIFICATIONS.slice(0, 3).map(n => - - - - - {n.title} - {n.message} - - - - ) + const notifications = NOTIFICATIONS.slice(0, 3).map(n => + + + + + {n.title} + {n.message} + + + + ) - return ( - - - - - - {!mobile_match && - } - sx={{width: tablet_match ? 'auto' : rem(400)}} - /> - } - - - {mobile_match && - - - - } - - - - - - - - - - - - - - {MESSAGES.length} new notifications - - {messages} - - Show all messages - - - - - - - - - - - - - - - - {NOTIFICATIONS.length} new notifications - - {notifications} - - Show all notifications - - - - - - - - - - - ); + return ( + + + + + {!mobile_match && + } + ml="md" + style={{width: tablet_match ? 'auto' : rem(400)}} + /> + } + + + {mobile_match && + + + + } + + + + + + + + + + + + + + {MESSAGES.length} new notifications + + {messages} + + Show all messages + + + + + + + + + + + + + + + + {NOTIFICATIONS.length} new notifications + + {notifications} + + Show all notifications + + + + + + + + + + + ); }; export default HeaderNav; diff --git a/layout/App/Navigation/Links/Links.module.css b/layout/App/Navigation/Links/Links.module.css new file mode 100644 index 0000000..c39ab78 --- /dev/null +++ b/layout/App/Navigation/Links/Links.module.css @@ -0,0 +1,28 @@ +.control { + display: block; + width: 100%; + padding: var(--mantine-spacing-sm) var(--mantine-spacing-md); + color: light-dark(var(--mantine-color-dark-7), var(--mantine-color-white)); + font-size: var(--mantine-font-size-md); + + @mixin hover { + background-color: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5)); + } +} + +.link { + display: block; + padding: var(--mantine-spacing-xs) var(--mantine-spacing-md); + color: light-dark(var(--mantine-color-dark-7), var(--mantine-color-white)); + font-size: var(--mantine-spacing-md); + text-decoration: none; + border-left: rem(1px) solid light-dark(var(--mantine-color-gray-3, var(--mantine-color-dark-4))); + + @mixin hover { + background-color: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5)); + } +} + +.chevron { + transition: all ease 200ms; +} diff --git a/layout/App/Navigation/Links/Links.styles.ts b/layout/App/Navigation/Links/Links.styles.ts deleted file mode 100644 index cc0919d..0000000 --- a/layout/App/Navigation/Links/Links.styles.ts +++ /dev/null @@ -1,38 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme) => ({ - control: { - fontWeight: 500, - display: 'block', - width: '100%', - padding: `${theme.spacing.xs} ${theme.spacing.md}`, - color: theme.white, - fontSize: theme.fontSizes.sm, - - '&:hover': { - backgroundColor: theme.colors[theme.primaryColor][8], - }, - }, - - link: { - fontWeight: 500, - display: 'block', - textDecoration: 'none', - padding: `${theme.spacing.xs} ${theme.spacing.md}`, - paddingLeft: rem(31), - marginLeft: rem(30), - fontSize: theme.fontSizes.sm, - color: theme.white, - borderLeft: `${rem(1)} solid ${ - theme.colorScheme === 'dark' ? theme.colors.dark[4] : theme.colors.gray[3] - }`, - - '&:hover': { - backgroundColor: theme.colors[theme.primaryColor][8], - }, - }, - - chevron: { - transition: 'transform 200ms ease', - }, -})); diff --git a/layout/App/Navigation/Links/Links.tsx b/layout/App/Navigation/Links/Links.tsx index d620371..0126b11 100644 --- a/layout/App/Navigation/Links/Links.tsx +++ b/layout/App/Navigation/Links/Links.tsx @@ -1,89 +1,102 @@ import {useState} from 'react'; -import {Box, Collapse, Group, rem, Text, UnstyledButton,} from '@mantine/core'; +import { + Box, + Collapse, + Group, + MantineTheme, + rem, + Text, + UnstyledButton, + useMantineTheme, + MantineThemeOther +} from '@mantine/core'; import {IconCalendarStats, IconChevronLeft, IconChevronRight} from '@tabler/icons-react'; import Link from "next/link"; -import useStyles from "./Links.styles"; -import {useRouter} from "next/router"; +import {useRouter} from "next/navigation"; +import classes from "./Links.module.css"; interface LinksGroupProps { - icon: React.FC; + icon: React.FC; + label: string; + initiallyOpened?: boolean; + link?: string; + links?: { label: string; - initiallyOpened?: boolean; - link?: string; - links?: { label: string; link: string }[]; + link: string + }[]; } export function LinksGroup({icon: Icon, label, initiallyOpened, link, links}: LinksGroupProps) { - const {classes, theme} = useStyles(); - const router = useRouter() - const hasLinks = Array.isArray(links); - const [opened, setOpened] = useState(initiallyOpened || false); - const ChevronIcon = theme.dir === 'ltr' ? IconChevronRight : IconChevronLeft; + const theme = useMantineTheme() + const router = useRouter() + const hasLinks = Array.isArray(links); + const [opened, setOpened] = useState(initiallyOpened || false); + const ChevronIcon = IconChevronRight; - const items = (hasLinks ? links : []).map((link) => ( - - {link.label} - - )); + const items = (hasLinks ? links : []).map((link) => ( + + {link.label} + + )); - return ( - <> - { - setOpened((o) => !o); - link && (router.push(link || "#")) - } - } - className={classes.control} - > - - - - {label} - - {hasLinks && ( - - )} - - - {hasLinks ? {items} : null} - - ); + return ( + <> + { + setOpened((o) => !o); + link && (router.push(link || "#")) + } + } + className={classes.control} + > + + + + {label} + + {hasLinks && ( + + )} + + + {hasLinks ? {items} : null} + + ); } const mockdata = { - label: 'Releases', - icon: IconCalendarStats, - links: [ - {label: 'Upcoming releases', link: '/'}, - {label: 'Previous releases', link: '/'}, - {label: 'Releases schedule', link: '/'}, - ], + label: 'Releases', + icon: IconCalendarStats, + links: [ + {label: 'Upcoming releases', link: '/'}, + {label: 'Previous releases', link: '/'}, + {label: 'Releases schedule', link: '/'}, + ], }; export function NavbarLinksGroup() { - return ( - ({ - minHeight: rem(220), - padding: theme.spacing.md, - backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[6] : theme.white, - })} - > - - - ); + return ( + ({ + minHeight: rem(220), + padding: theme.spacing.md, + backgroundColor: theme.white, + })} + > + + + ); } diff --git a/layout/App/Navigation/Navigation.module.css b/layout/App/Navigation/Navigation.module.css new file mode 100644 index 0000000..07a7af1 --- /dev/null +++ b/layout/App/Navigation/Navigation.module.css @@ -0,0 +1,24 @@ +.header { + margin: 0; + color: var(--mantine-color-white); + border-bottom: rem(1px) solid transparent; + background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-5)); +} + +.links { + margin: 0 var(--mantine-spacing-md); + color: light-dark(var(--mantine-color-dark-6), var(--mantine-color-gray-0)); +} + +.linksInner { + padding: var(--mantine-spacing-md) 0; +} + +.linkHeader { + color: light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-3)); +} + +.footer { + margin: 0 var(--mantine-spacing-md); + border-top: rem(1px) solid transparent; +} diff --git a/layout/App/Navigation/Navigation.styles.tsx b/layout/App/Navigation/Navigation.styles.tsx deleted file mode 100644 index b5624e4..0000000 --- a/layout/App/Navigation/Navigation.styles.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme) => ({ - navbar: { - backgroundColor: theme.colors[theme.primaryColor][7], - paddingBottom: 0, - border: 'none' - }, - - header: { - padding: theme.spacing.md, - marginLeft: `calc(${theme.spacing.md} * -1)`, - marginRight: `calc(${theme.spacing.md} * -1)`, - backgroundColor: theme.colors[theme.primaryColor][8], - color: theme.white, - borderBottom: `${rem(1)} solid transparent`, - }, - - links: { - marginLeft: `calc(${theme.spacing.md} * -1)`, - marginRight: `calc(${theme.spacing.md} * -1)`, - }, - - linksInner: { - paddingTop: theme.spacing.xl, - paddingBottom: theme.spacing.xl, - }, - - footer: { - marginLeft: `calc(${theme.spacing.md} * -1)`, - marginRight: `calc(${theme.spacing.md} * -1)`, - borderTop: `${rem(1)} solid transparent`, - }, -})); diff --git a/layout/App/Navigation/Navigation.tsx b/layout/App/Navigation/Navigation.tsx index 23a3418..470857a 100644 --- a/layout/App/Navigation/Navigation.tsx +++ b/layout/App/Navigation/Navigation.tsx @@ -1,159 +1,163 @@ -import {ActionIcon, Box, Code, Flex, Group, Navbar, NavbarProps, ScrollArea, Text, UnstyledButton} from '@mantine/core'; +import {ActionIcon, AppShell, Box, Code, Flex, Group, ScrollArea, Text, useMantineTheme} from '@mantine/core'; import { - IconAdjustmentsFilled, - IconAlertOctagon, - IconAppWindow, - IconBook2, - IconBriefcase, - IconCalendar, - IconFileInvoice, - IconLifebuoy, - IconList, - IconListDetails, - IconUserShield, IconX, + IconAdjustmentsFilled, + IconAlertOctagon, + IconAppWindow, + IconBook2, + IconBriefcase, + IconCalendar, + IconFileInvoice, + IconLifebuoy, + IconList, + IconListDetails, + IconUserShield, + IconX, } from '@tabler/icons-react'; -import useStyles from "./Navigation.styles"; import {Logo, UserProfileButton} from "@/components"; import { - PATH_AUTH, - PATH_CALENDAR, - PATH_DASHBOARD, PATH_DOCS, - PATH_ERROR, - PATH_INVOICES, - PATH_ORDERS, - PATH_PAGES, - PATH_PROJECTS, - PATH_TASKS + PATH_AUTH, + PATH_CALENDAR, + PATH_DASHBOARD, + PATH_DOCS, + PATH_ERROR, + PATH_INVOICES, + PATH_ORDERS, + PATH_PAGES, + PATH_PROJECTS, + PATH_TASKS } from "@/routes"; import UserProfileData from ".././../../mocks/UserProfile.json"; import {LinksGroup} from "@/layout/App/Navigation/Links/Links"; import {useMediaQuery} from "@mantine/hooks"; +import classes from "./Navigation.module.css"; const mockdata = [ - { - title: 'Pages', + { + title: 'Pages', + links: [ + { + label: 'Dashboard', + icon: IconAdjustmentsFilled, links: [ - { - label: 'Dashboard', - icon: IconAdjustmentsFilled, - links: [ - {label: 'Default', link: PATH_DASHBOARD.default}, - {label: 'Analytics', link: PATH_DASHBOARD.analytics}, - {label: 'SaaS', link: PATH_DASHBOARD.saas}, - ] - }, - { - label: 'Pages', - icon: IconAppWindow, - links: [ - {label: 'Profile', link: PATH_PAGES.profile}, - {label: 'Settings', link: PATH_PAGES.settings}, - {label: 'Pricing', link: PATH_PAGES.pricing}, - {label: 'Chat', link: PATH_PAGES.chat}, - {label: 'Blank Page', link: PATH_PAGES.blank}, - ] - }, - {label: 'Projects', icon: IconBriefcase, link: PATH_PROJECTS.root}, - {label: 'Orders', icon: IconListDetails, link: PATH_ORDERS.root}, - { - label: 'Invoices', - icon: IconFileInvoice, - links: [ - {label: 'List', link: PATH_INVOICES.invoices.all}, - {label: 'Details', link: PATH_INVOICES.invoices.sample}, - ] - }, - {label: 'Tasks', icon: IconListDetails, link: PATH_TASKS.root}, - {label: 'Calendar', icon: IconCalendar, link: PATH_CALENDAR.root}, - { - label: 'Auth', - icon: IconUserShield, - links: [ - {label: 'Sign In', link: PATH_AUTH.signin}, - {label: 'Sign Up', link: PATH_AUTH.signup}, - {label: 'Reset Password', link: PATH_AUTH.passwordReset}, - ] - }, - { - label: 'Errors', - icon: IconAlertOctagon, - links: [ - {label: '403 Page', link: PATH_ERROR.error403}, - {label: '404 Page', link: PATH_ERROR.error404}, - {label: '500 Page', link: PATH_ERROR.error500}, - ] - }, + {label: 'Default', link: PATH_DASHBOARD.default}, + {label: 'Analytics', link: PATH_DASHBOARD.analytics}, + {label: 'SaaS', link: PATH_DASHBOARD.saas}, ] - }, - { - title: 'Documentation', + }, + { + label: 'Pages', + icon: IconAppWindow, links: [ - { - label: 'Getting started', - icon: IconLifebuoy, - link: PATH_DOCS.root - }, - { - label: 'Documentation', - icon: IconBook2, - link: PATH_DOCS.root - }, - {label: 'Changelog', icon: IconList,}, + {label: 'Profile', link: PATH_PAGES.profile}, + {label: 'Settings', link: PATH_PAGES.settings}, + {label: 'Pricing', link: PATH_PAGES.pricing}, + {label: 'Chat', link: PATH_PAGES.chat}, + {label: 'Blank Page', link: PATH_PAGES.blank}, ] - } + }, + {label: 'Projects', icon: IconBriefcase, link: PATH_PROJECTS.root}, + {label: 'Orders', icon: IconListDetails, link: PATH_ORDERS.root}, + { + label: 'Invoices', + icon: IconFileInvoice, + links: [ + {label: 'List', link: PATH_INVOICES.invoices.all}, + {label: 'Details', link: PATH_INVOICES.invoices.sample}, + ] + }, + {label: 'Tasks', icon: IconListDetails, link: PATH_TASKS.root}, + {label: 'Calendar', icon: IconCalendar, link: PATH_CALENDAR.root}, + { + label: 'Auth', + icon: IconUserShield, + links: [ + {label: 'Sign In', link: PATH_AUTH.signin}, + {label: 'Sign Up', link: PATH_AUTH.signup}, + {label: 'Reset Password', link: PATH_AUTH.passwordReset}, + ] + }, + { + label: 'Errors', + icon: IconAlertOctagon, + links: [ + {label: '403 Page', link: PATH_ERROR.error403}, + {label: '404 Page', link: PATH_ERROR.error404}, + {label: '500 Page', link: PATH_ERROR.error500}, + ] + }, + ] + }, + { + title: 'Documentation', + links: [ + { + label: 'Getting started', + icon: IconLifebuoy, + link: PATH_DOCS.root + }, + { + label: 'Documentation', + icon: IconBook2, + link: PATH_DOCS.root + }, + {label: 'Changelog', icon: IconList,}, + ] + } ]; -type NavigationProps = { onClose: () => void } & Omit +type NavigationProps = { + onClose: () => void +} const Navigation = ({onClose, ...others}: NavigationProps) => { - const {classes, theme} = useStyles() - const tablet_match = useMediaQuery('(max-width: 768px)'); + const theme = useMantineTheme() + const tablet_match = useMediaQuery('(max-width: 768px)'); - const links = mockdata.map(m => - - {m.title} - {m.links.map((item) => )} - - ) + const links = mockdata.map(m => + + {m.title} + {m.links.map((item) => )} + + ) - return ( - - - - - - - v1.0.0 - - - {tablet_match && - - - - } - - + return ( + <> + + + + + + v1.0.0 + + + {tablet_match && + + + + } + + - -
{links}
-
+ +
{links}
+
- - - -
- ); + + + + + ); }; export default Navigation; diff --git a/layout/App/index.tsx b/layout/App/index.tsx index 67a7327..6138dcc 100644 --- a/layout/App/index.tsx +++ b/layout/App/index.tsx @@ -1,142 +1,82 @@ -import { - ActionIcon, - Affix, - AppShell, - Box, - ColorScheme, - ColorSchemeProvider, - Container, - Footer, - Header, - MantineProvider, - rem, useMantineTheme, -} from '@mantine/core'; +"use client" + +import {ActionIcon, Affix, AppShell, Box, Container, rem, useMantineTheme,} from '@mantine/core'; import React, {useState} from 'react'; import Navigation from "@/layout/App/Navigation/Navigation"; import HeaderNav from "@/layout/App/HeaderNav/HeaderNav"; -import {useDisclosure, useHotkeys, useLocalStorage, useMediaQuery} from "@mantine/hooks"; +import {useDisclosure, useMediaQuery} from "@mantine/hooks"; import {ThemeDrawer} from "@/components"; import FooterNav from "@/layout/App/FooterNav/FooterNav"; import {IconPaint} from "@tabler/icons-react"; -import {MantineColor} from "@mantine/styles/lib/theme/types/MantineColor"; type Props = { - children: React.ReactNode; + children: React.ReactNode; }; function AppLayout({children}: Props) { - const [opened, setOpened] = useState(false); - const [themeOpened, {open: themeOpen, close: themeClose}] = useDisclosure(false); - const theme = useMantineTheme() - const tablet_match = useMediaQuery('(max-width: 768px)'); - const [primaryColor, setPrimaryColor] = useLocalStorage({ - key: 'mantine-preferred-color-dash-sparx', - defaultValue: 'blue', - getInitialValueInEffect: true, - }); - const [colorScheme, setColorScheme] = useLocalStorage({ - key: 'mantine-color-scheme-dash-sparx', - defaultValue: 'light', - getInitialValueInEffect: true, - }); - - /** - * toggle color scheme dark | light - * @param value - */ - const toggleColorScheme = (value?: ColorScheme) => - setColorScheme(value || (colorScheme === 'dark' ? 'light' : 'dark')); - - useHotkeys([['mod+J', () => toggleColorScheme()]]); - - const handleThemeChange = (c: string) => { - setPrimaryColor(c); - } + const [opened, setOpened] = useState(false); + const [themeOpened, {open: themeOpen, close: themeClose}] = useDisclosure(false); + const theme = useMantineTheme() + const tablet_match = useMediaQuery('(max-width: 768px)'); + const [mobileOpened, {toggle: toggleMobile}] = useDisclosure(); + const [desktopOpened, {toggle: toggleDesktop}] = useDisclosure(true); - return ( - - - - - - ); + return ( + + + + setOpened((o) => !o)} + desktopOpened={desktopOpened} + mobileOpened={mobileOpened} + toggleDesktop={toggleDesktop} + toggleMobile={toggleMobile} + /> + + + + setOpened(false)}/> + + + + {children} + + + + + + + + + + + + + + + ); } export default AppLayout; diff --git a/layout/Auth/index.tsx b/layout/Auth/index.tsx index f8cbcb0..8fcb6dc 100644 --- a/layout/Auth/index.tsx +++ b/layout/Auth/index.tsx @@ -1,8 +1,6 @@ -import {Center, ColorScheme, ColorSchemeProvider, MantineProvider, Stack, useMantineTheme} from "@mantine/core"; +import {Center, Stack, useMantineTheme} from "@mantine/core"; import Image from "next/image"; -import React, {ReactNode, useEffect, useState} from "react"; -import {useHotkeys, useLocalStorage} from "@mantine/hooks"; -import {MantineColor} from "@mantine/styles/lib/theme/types/MantineColor"; +import React, {ReactNode} from "react"; type AuthProps = { children: ReactNode @@ -10,53 +8,30 @@ type AuthProps = { const AuthLayout = ({children}: AuthProps) => { const theme = useMantineTheme() - const [primaryColor, setPrimaryColor] = useLocalStorage({ - key: 'mantine-preferred-color-dash-sparx', - defaultValue: 'blue', - getInitialValueInEffect: true, - }); - const [colorScheme, setColorScheme] = useLocalStorage({ - key: 'mantine-color-scheme-dash-sparx', - defaultValue: 'light', - getInitialValueInEffect: true, - }); - - /** - * toggle color scheme dark | light - * @param value - */ - const toggleColorScheme = (value?: ColorScheme) => - setColorScheme(value || (colorScheme === 'dark' ? 'light' : 'dark')); - - useHotkeys([['mod+J', () => toggleColorScheme()]]); return ( - - -
- -
- DesignSparx logo -
- {children} -
-
-
-
+
+ +
+ DesignSparx logo +
+ {children} +
+
); }; -export default AuthLayout; \ No newline at end of file +export default AuthLayout; diff --git a/layout/Error/index.tsx b/layout/Error/index.tsx index 11c1f44..7b6ff70 100644 --- a/layout/Error/index.tsx +++ b/layout/Error/index.tsx @@ -1,50 +1,25 @@ -import React, {ReactNode, useEffect, useState} from 'react'; -import {Center, ColorScheme, ColorSchemeProvider, MantineProvider, useMantineTheme} from "@mantine/core"; -import {useHotkeys, useLocalStorage} from "@mantine/hooks"; -import {MantineColor} from "@mantine/styles/lib/theme/types/MantineColor"; +import React, {ReactNode} from 'react'; +import {Center, useMantineTheme} from "@mantine/core"; type ErrorProps = { - children: ReactNode + children: ReactNode } const ErrorLayout = ({children}: ErrorProps) => { - const theme = useMantineTheme() - const [primaryColor, setPrimaryColor] = useLocalStorage({ - key: 'mantine-preferred-color-dash-sparx', - defaultValue: 'blue', - getInitialValueInEffect: true, - }); - const [colorScheme, setColorScheme] = useLocalStorage({ - key: 'mantine-color-scheme-dash-sparx', - defaultValue: 'light', - getInitialValueInEffect: true, - }); + const theme = useMantineTheme() - /** - * toggle color scheme dark | light - * @param value - */ - const toggleColorScheme = (value?: ColorScheme) => - setColorScheme(value || (colorScheme === 'dark' ? 'light' : 'dark')); - - useHotkeys([['mod+J', () => toggleColorScheme()]]); - - return ( - - -
- {children} -
-
-
- ); + return ( +
+ {children} +
+ ); }; -export default ErrorLayout; \ No newline at end of file +export default ErrorLayout; diff --git a/layout/Guest/FooterNav/FooterNav.module.css b/layout/Guest/FooterNav/FooterNav.module.css new file mode 100644 index 0000000..22b8865 --- /dev/null +++ b/layout/Guest/FooterNav/FooterNav.module.css @@ -0,0 +1,5 @@ +.footer { + background-color: var(--mantine-color-black); + color: var(--mantine-color-white); + padding: calc(var(--mantine-spacing-xl) * 2) calc(var(--mantine-spacing-xl) * 1); +} diff --git a/layout/Guest/FooterNav/FooterNav.styles.ts b/layout/Guest/FooterNav/FooterNav.styles.ts deleted file mode 100644 index 51e155b..0000000 --- a/layout/Guest/FooterNav/FooterNav.styles.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -export default createStyles((theme) => ({ - footer: { - backgroundColor: theme.black, - color: theme.white, - paddingTop: `calc(${theme.spacing.xl} * 2)`, - paddingBottom: `calc(${theme.spacing.xl} * 1)`, - paddingLeft: `calc(${theme.spacing.xl} * 1)`, - paddingRight: `calc(${theme.spacing.xl} * 1)`, - } -})); diff --git a/layout/Guest/FooterNav/FooterNav.tsx b/layout/Guest/FooterNav/FooterNav.tsx index 70fce3e..2bee142 100644 --- a/layout/Guest/FooterNav/FooterNav.tsx +++ b/layout/Guest/FooterNav/FooterNav.tsx @@ -1,117 +1,107 @@ -import { - ActionIcon, ActionIconProps, - Button, - Container, - Divider, - Flex, - Group, Stack, - Text, - Title -} from '@mantine/core'; -import useStyles from "./FooterNav.styles"; +import {ActionIcon, ActionIconProps, Button, Container, Divider, Flex, Group, Stack, Text, Title} from '@mantine/core'; import {Logo} from "@/components"; import { - IconBrandFacebook, - IconBrandGithub, - IconBrandInstagram, - IconBrandLinkedin, - IconBrandTwitter, - IconWorld + IconBrandFacebook, + IconBrandGithub, + IconBrandInstagram, + IconBrandLinkedin, + IconBrandTwitter, + IconWorld } from "@tabler/icons-react"; import {useMediaQuery} from "@mantine/hooks"; import {PATH_DOCS} from "@/routes"; +import classes from "./FooterNav.module.css"; const ICON_SIZE = 18 const ACTION_ICON_PROPS: ActionIconProps = { - size: "lg", - color: "blue.3", - variant: "transparent" + size: "lg", + color: "blue.3", + variant: "transparent" } const FooterNav = () => { - const {classes, theme} = useStyles(); - const mobile_match = useMediaQuery('(max-width: 425px)'); + const mobile_match = useMediaQuery('(max-width: 425px)'); - return ( -
- - - Start building with Design Sparx today - Stop wasting time building your application from scratch. Design Sparx is fast, - extendable and fully customizable. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ); + return ( +
+ + + Start building with Design Sparx today + Stop wasting time building your application from scratch. Design Sparx is fast, + extendable and fully customizable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); } export default FooterNav diff --git a/layout/Guest/HeaderNav/HeaderNav.module.css b/layout/Guest/HeaderNav/HeaderNav.module.css new file mode 100644 index 0000000..7d4fd6b --- /dev/null +++ b/layout/Guest/HeaderNav/HeaderNav.module.css @@ -0,0 +1,64 @@ +.header{ + height: rem(60px); +} + +.inner { + background-color: var(--mantine-color-black); + color: var(--mantine-color-white); + height: rem(60px); + display: flex; + justify-content: space-between; + align-items: center; +} + +.links { + text-transform: capitalize; + + @media (max-width: $mantine-breakpoint-sm) { + display: none; + } +} + +.burger { + @media (min-width: $mantine-breakpoint-lg) { + display: none; + } +} + +.link { + display: flex; + align-items: center; + padding: rem(8px) rem(12px); + border-radius: var(--mantine-radius-sm); + text-decoration: none; + color: var(--mantine-color-white); + font-size: var(--mantine-font-size-sm); + font-weight: 500; + height: rem(38px); + text-transform: capitalize; + + @mixin hover { + transition: all ease 150ms; + background-color: var(--mantine-color-dark-5); + } + + @media (max-width: $mantine-breakpoint-sm) { + color: var(--mantine-color-black); + } +} + +.linkLabel { + margin-right: rem(5px); +} + +.hiddenMobile { + @media (max-width: $mantine-breakpoint-sm) { + display: none; + } +} + +.hiddenDesktop { + @media (min-width: $mantine-breakpoint-sm) { + display: none; + } +} diff --git a/layout/Guest/HeaderNav/HeaderNav.styles.ts b/layout/Guest/HeaderNav/HeaderNav.styles.ts deleted file mode 100644 index 252355e..0000000 --- a/layout/Guest/HeaderNav/HeaderNav.styles.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {createStyles, rem} from "@mantine/core"; - -const HEADER_HEIGHT = rem(60); - -export default createStyles((theme) => ({ - inner: { - backgroundColor: theme.black, - color: theme.white, - height: HEADER_HEIGHT, - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - }, - - links: { - textTransform: 'capitalize', - - [theme.fn.smallerThan('sm')]: { - display: 'none', - }, - }, - - burger: { - [theme.fn.largerThan('sm')]: { - display: 'none', - }, - }, - - link: { - display: 'flex', - alignItems: 'center', - padding: `${rem(8)} ${rem(12)}`, - borderRadius: theme.radius.sm, - textDecoration: 'none', - color: theme.white, - fontSize: theme.fontSizes.sm, - fontWeight: 500, - height: 38, - textTransform: 'capitalize', - - '&:hover': { - transition: 'all ease 150ms', - backgroundColor: theme.colors.dark[5], - }, - - [theme.fn.smallerThan('sm')]: { - color: theme.black, - }, - }, - - linkLabel: { - marginRight: rem(5), - }, - - hiddenMobile: { - [theme.fn.smallerThan('sm')]: { - display: 'none', - }, - }, - - hiddenDesktop: { - [theme.fn.largerThan('sm')]: { - display: 'none', - }, - }, -})); diff --git a/layout/Guest/HeaderNav/HeaderNav.tsx b/layout/Guest/HeaderNav/HeaderNav.tsx index 1ee3b4a..4ab665f 100644 --- a/layout/Guest/HeaderNav/HeaderNav.tsx +++ b/layout/Guest/HeaderNav/HeaderNav.tsx @@ -1,20 +1,6 @@ -import { - Box, - Burger, - Button, - Center, - Container, - Drawer, - Group, - Header, - Menu, - rem, - ScrollArea, - Text -} from '@mantine/core'; +import {Box, Burger, Button, Container, Drawer, Group, rem, ScrollArea, useMantineTheme} from '@mantine/core'; import {useDisclosure, useMediaQuery} from '@mantine/hooks'; -import {IconChevronDown} from '@tabler/icons-react'; -import useStyles from "./HeaderNav.styles"; +import classes from "./HeaderNav.module.css"; import {PATH_DASHBOARD, PATH_DOCS} from "@/routes"; import {Logo} from "@/components"; @@ -36,7 +22,7 @@ const MOCK_DATA = [ const HEADER_HEIGHT = rem(60); const HeaderNav = () => { - const {classes, theme} = useStyles(); + const theme = useMantineTheme() const [drawerOpened, {toggle: toggleDrawer, close: closeDrawer}] = useDisclosure(false); const tablet_match = useMediaQuery('(max-width: 768px)'); @@ -55,9 +41,9 @@ const HeaderNav = () => { return ( -
+
- + {items}
+
{ const theme = useMantineTheme() return ( - + {children} diff --git a/package.json b/package.json index fce9b5d..8d2b922 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "analytics-dashboard", "version": "1.0.1", - "private": true, + "private": false, "scripts": { "dev": "next dev", "build": "next build", @@ -20,41 +20,44 @@ "@fullcalendar/interaction": "^6.1.8", "@fullcalendar/react": "^6.1.8", "@fullcalendar/timegrid": "^6.1.8", - "@mantine/carousel": "^6.0.16", - "@mantine/core": "^6.0.16", - "@mantine/dates": "^6.0.16", - "@mantine/dropzone": "^6.0.16", - "@mantine/form": "^6.0.16", - "@mantine/hooks": "^6.0.16", - "@mantine/modals": "^6.0.16", + "@mantine/carousel": "^7.2.2", + "@mantine/code-highlight": "^7.2.2", + "@mantine/core": "^7.2.2", + "@mantine/dates": "^7.2.2", + "@mantine/dropzone": "^7.2.2", + "@mantine/form": "^7.2.2", + "@mantine/hooks": "^7.2.2", + "@mantine/modals": "^7.2.2", "@mantine/next": "^6.0.16", - "@mantine/notifications": "^6.0.16", - "@mantine/nprogress": "^6.0.16", + "@mantine/notifications": "^7.2.2", + "@mantine/nprogress": "^7.2.2", "@mantine/prism": "^6.0.16", - "@mantine/spotlight": "^6.0.16", - "@mantine/tiptap": "^6.0.16", - "@tabler/icons-react": "^2.28.0", - "@tiptap/extension-link": "^2.0.4", + "@mantine/spotlight": "^7.2.2", + "@mantine/tiptap": "^7.2.2", + "@tabler/icons-react": "^2.40.0", + "@tiptap/extension-link": "^2.1.12", "@tiptap/extension-placeholder": "^2.0.4", "@tiptap/pm": "^2.0.4", - "@tiptap/react": "^2.0.4", - "@tiptap/starter-kit": "^2.0.4", + "@tiptap/react": "^2.1.12", + "@tiptap/starter-kit": "^2.1.12", "@types/node": "20.4.4", - "@types/react": "18.2.15", - "@types/react-dom": "18.2.7", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", "apexcharts": "^3.41.0", + "clsx": "^2.0.0", "cookies-next": "^2.1.2", "d3-fetch": "^3.0.1", "d3-scale": "^4.0.2", - "dayjs": "^1.11.9", - "embla-carousel-react": "^8.0.0-rc11", + "dayjs": "^1.11.10", + "embla-carousel-react": "^8.0.0-rc14", + "eslint-config-next": "^14.0.2", "lodash": "^4.17.21", - "mantine-datatable": "^2.9.0", - "next": "13.4.12", - "react": "18.2.0", + "mantine-datatable": "^7.1.7", + "next": "^14.0.2", + "react": "^18.2.0", "react-apexcharts": "^1.4.1", "react-countup": "^6.4.2", - "react-dom": "18.2.0", + "react-dom": "^18.2.0", "react-simple-maps": "^3.0.0", "typescript": "5.1.6" }, @@ -62,6 +65,9 @@ "@types/d3-fetch": "^3.0.2", "@types/d3-scale": "^4.0.3", "@types/lodash": "^4.14.195", - "@types/react-simple-maps": "^3.0.0" + "@types/react-simple-maps": "^3.0.0", + "postcss": "^8.4.31", + "postcss-preset-mantine": "^1.11.0", + "postcss-simple-vars": "^7.0.1" } } diff --git a/pages/_app.tsx b/pages/_app.tsx deleted file mode 100644 index 67695b0..0000000 --- a/pages/_app.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import type {AppProps} from 'next/app' -import Head from "next/head"; -import {ColorScheme, ColorSchemeProvider, MantineProvider} from '@mantine/core'; -import {useState} from "react"; -import {getCookie} from 'cookies-next'; -import {GetServerSidePropsContext} from "next"; -import {useColorScheme} from "@mantine/hooks"; -import {ModalsProvider} from "@mantine/modals"; -import {RouterTransition} from '@/components'; -import "../styles/globals.css"; -import {Notifications} from "@mantine/notifications"; - -export default function App(props: AppProps & { colorScheme: ColorScheme }) { - const {Component, pageProps} = props; - const preferredColorScheme = useColorScheme(); - const [colorScheme, setColorScheme] = useState(preferredColorScheme); - - const toggleColorScheme = (value?: ColorScheme): void => - setColorScheme(value ?? (colorScheme === 'dark' ? 'light' : 'dark')); - - return <> - - DesignSparx - Nextjs Mantine Dashboard - - - - - - - - - - - - - - - - - - -} - -App.getInitialProps = ({ctx}: { ctx: GetServerSidePropsContext }) => ({ - // get color scheme from cookie - colorScheme: getCookie('mantine-color-scheme', ctx) || 'light', -}); diff --git a/pages/_document.tsx b/pages/_document.tsx deleted file mode 100644 index 81f4832..0000000 --- a/pages/_document.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import {Html, Head, Main, NextScript} from 'next/document' - -export default function Document() { - return ( - - - -
- - - - ) -} diff --git a/pages/api/hello.ts b/pages/api/hello.ts deleted file mode 100644 index f8bcc7e..0000000 --- a/pages/api/hello.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Next.js API route support: https://nextjs.org/docs/api-routes/introduction -import type { NextApiRequest, NextApiResponse } from 'next' - -type Data = { - name: string -} - -export default function handler( - req: NextApiRequest, - res: NextApiResponse -) { - res.status(200).json({ name: 'John Doe' }) -} diff --git a/pages/dashboard/default.tsx b/pages/dashboard/default.tsx deleted file mode 100644 index c762bc5..0000000 --- a/pages/dashboard/default.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react'; -import Head from "next/head"; -import { - ActionIcon, - Button, - Container, - Divider, - Grid, - Group, - Paper, - PaperProps, - Stack, - Text, - Title -} from "@mantine/core"; -import {IconChevronRight, IconRefresh} from "@tabler/icons-react"; -import { - FilterDateMenu, - MobileDesktopChart, - PageHeader, - ProjectsTable, - RevenueChart, - SalesChart, - StatsGrid -} from "@/components"; -import StatsData from "../../mocks/StatsGrid.json" -import ProjectsData from "../../mocks/Projects.json" -import {AppLayout} from "@/layout"; -import Link from "next/link"; -import {PATH_TASKS} from "@/routes"; - -const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - sx: {height: '100%'} -} - -function Default() { - return ( - <> - - Default Dashboard | DesignSparx - - - - - - - - - - - - - - - - - - - - Tasks - - - - - - - - - - - ); -} - -export default Default; diff --git a/pages/index.tsx b/pages/index.tsx deleted file mode 100644 index 0466fe8..0000000 --- a/pages/index.tsx +++ /dev/null @@ -1,413 +0,0 @@ -import Head from 'next/head' -import {GuestLayout} from "@/layout"; -import { - Badge, - Box, - BoxProps, - Button, - Center, - Container, - createStyles, - Flex, - Grid, - Group, - Image, - Paper, - PaperProps, - rem, - SimpleGrid, - Spoiler, - Stack, - Text, - ThemeIcon, - ThemeIconProps, - Title, - Tooltip, UnstyledButton, useMantineTheme -} from "@mantine/core"; -import Link from "next/link"; -import {PATH_DASHBOARD, PATH_DOCS} from "@/routes"; -import { - IconAdjustmentsHorizontal, IconArrowRight, IconBook, IconChevronDown, IconChevronUp, - IconColorSwatch, - IconDevices, - IconFolderCode, - IconScaleOutline, - IconSettingsCog -} from "@tabler/icons-react"; -import React from "react"; -import CountUp from "react-countup"; -import {useMediaQuery} from "@mantine/hooks"; - -const useStyles = createStyles((theme) => ({ - hero: { - backgroundColor: theme.black, - color: theme.white, - paddingTop: `calc(${theme.spacing.xl} * 4)`, - paddingBottom: `calc(${theme.spacing.xl} * 4)`, - paddingLeft: `calc(${theme.spacing.xl} * 4)`, - paddingRight: `calc(${theme.spacing.xl} * 4)`, - - [theme.fn.smallerThan('sm')]: { - paddingTop: `calc(${theme.spacing.xl})`, - paddingBottom: `calc(${theme.spacing.xl})`, - paddingLeft: `calc(${theme.spacing.xl})`, - paddingRight: `calc(${theme.spacing.xl})`, - }, - }, - - title: { - fontWeight: 800, - fontSize: rem(40), - letterSpacing: rem(-1), - marginBottom: theme.spacing.xs, - - [theme.fn.smallerThan('xs')]: { - fontSize: rem(28), - textAlign: 'left', - }, - }, - - highlight: { - color: theme.colors[theme.primaryColor][5], - }, - - stackControl: { - textTransform: 'capitalize', - backgroundColor: theme.colors.dark[6], - color: theme.white, - padding: `${rem(6)} ${rem(10)}`, - borderRadius: theme.radius.md - }, - - variantImg: { - maxHeight: rem(280), - width: '100%', - objectFit: 'contain', - }, - - variantTitle: { - textAlign: 'center', - marginTop: theme.spacing.md, - fontWeight: 600 - } -})) - -const TECH_STACK = [ - {title: 'nextjs', version: '13.14.12', href: 'https://nextjs.org/',}, - {title: 'react', version: '18.2.0', href: 'https://react.dev/',}, - {title: 'typescript', version: '5.1.6', href: 'https://www.typescriptlang.org/',}, - {title: 'mantine', version: '6.0.16', href: 'https://mantine.dev/'}, - {title: 'tabler icons', version: '2.28.0', href: 'https://tabler-icons.io/'}, - {title: 'tiptap', version: '2.28.0', href: 'https://tiptap.dev/'}, - {title: 'apexcharts', version: '3.41.0', href: 'https://apexcharts.com/'}, - {title: 'dayjs', version: '1.11.9', href: 'https://day.js.org/'}, - {title: 'fullcalendar', version: '6.1.8', href: 'https://fullcalendar.io/'}, - {title: 'emotion', version: '11.11.1', href: 'https://emotion.sh/docs/introduction'}, - {title: 'dnd-kit', version: '6.0.8', href: 'https://dndkit.com/'}, - {title: 'embla-carousel', version: '8.0.0', href: 'https://www.embla-carousel.com/'}, - {title: 'mantine datatable', version: '2.9.0', href: 'https://icflorescu.github.io/mantine-datatable'}, - {title: 'lodash', version: '4.17.21', href: 'https://lodash.com/'}, - {title: 'react simple maps', version: '3.0.0', href: 'https://www.react-simple-maps.io/'}, -] - -const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - sx: { - height: '100%', - backgroundColor: 'transparent' - } -} - -const THEME_ICON_PROPS: Omit = { - variant: "light", - size: 48 -} - -export default function Home() { - const {classes, theme} = useStyles() - const tablet_match = useMediaQuery('(max-width: 768px)'); - - const IMAGE_PAPER_PROPS: PaperProps = { - p: 'md', - sx: { - height: '100%', - backgroundColor: 'transparent', - - '&:hover': { - 'img': { - boxShadow: theme.shadows.lg, - transition: 'all ease 150ms', - transform: 'scale(1.03)', - } - } - } - } - - const BOX_PROPS: BoxProps = { - mt: 120, - pb: 80, - px: tablet_match ? 20 : 48, - } - - return ( - <> - - DesignSparx | Website UI Kit - - - - - - - - - - Build like a Pro - - The simplest and fastest way to build your next{' '} - <Text component="span" inherit className={classes.highlight}> - Mantine UI{' '} - </Text> - dashboard or app. - - Design Sparx comes with hundreds of UI elements, forms, tables, charts, pages and - icons that helps you to create your web apps or applications faster. - - - - - - Tech Stack: - } - > - Show more - - } - hideLabel={ - - } - > - - {TECH_STACK.map(t => - - - {t.title} - - - )} - - - - - - - / - - - - - - Carefully crafted components ready to use in your - project - - - - <CountUp end={50}/>+ - Beautifully coded page examples - - - - - <CountUp end={100}/>+ - Components and widgets - - - - - - Optimized to work for most devices - - - - - - Customize it to meet your brand's identity - - - - - - - - Default variant - - - - Pink variant - - - - Orange variant - - - - Green variant - - - - Purple variant - - - - Dark variant - - - - {/**/} - {/* We build it, you rock it!*/} - {/* Start focusing on your goals, by spending less time creating pages using*/} - {/* our examples.*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/**/} - - - Key features - Quick helps you build beautiful websites that stand out and automatically adapt to - your style. - - - - - - Modular - All components are built to be used in any combination. - - - - - - Responsive - Quick is optimized to work for most devices. - - - - - - Scalable - Remain consistent while developing new features. - - - - - - Customizable - Change a few variables and the whole theme adapts. - - -
- -
-
-
- - - For any queries? - - - -
- - ) -} diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..bfba0dd --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,14 @@ +module.exports = { + plugins: { + 'postcss-preset-mantine': {}, + 'postcss-simple-vars': { + variables: { + 'mantine-breakpoint-xs': '36em', + 'mantine-breakpoint-sm': '48em', + 'mantine-breakpoint-md': '62em', + 'mantine-breakpoint-lg': '75em', + 'mantine-breakpoint-xl': '88em', + }, + }, + }, +}; diff --git a/theme/theme.ts b/theme/theme.ts new file mode 100644 index 0000000..b261018 --- /dev/null +++ b/theme/theme.ts @@ -0,0 +1,10 @@ +import {createTheme, DEFAULT_THEME, mergeThemeOverrides} from '@mantine/core'; + +export const myTheme = createTheme({ + primaryColor: 'violet', + defaultRadius: 6, + focusRing: "always", + fontFamily: 'Open Sans, sans-serif', + headings: { fontFamily: 'Open Sans, sans-serif' }, +}); + diff --git a/tsconfig.json b/tsconfig.json index ad54f56..44cbd04 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -15,9 +19,23 @@ "jsx": "preserve", "incremental": true, "paths": { - "@/*": ["./*"] - } + "@/*": [ + "./*" + ] + }, + "plugins": [ + { + "name": "next" + } + ] }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } diff --git a/yarn.lock b/yarn.lock index 273a2eb..4836a66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,7 +35,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== @@ -49,6 +49,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.20.13", "@babel/runtime@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/types@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" @@ -406,34 +413,42 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@floating-ui/core@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.3.1.tgz#4d795b649cc3b1cbb760d191c80dcb4353c9a366" - integrity sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g== +"@floating-ui/core@^1.4.2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" + integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== + dependencies: + "@floating-ui/utils" "^0.1.3" -"@floating-ui/dom@^1.2.1": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.4.5.tgz#336dfb9870c98b471ff5802002982e489b8bd1c5" - integrity sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw== +"@floating-ui/dom@^1.5.1": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" + integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== dependencies: - "@floating-ui/core" "^1.3.1" + "@floating-ui/core" "^1.4.2" + "@floating-ui/utils" "^0.1.3" -"@floating-ui/react-dom@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-1.3.0.tgz#4d35d416eb19811c2b0e9271100a6aa18c1579b3" - integrity sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g== +"@floating-ui/react-dom@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.4.tgz#b076fafbdfeb881e1d86ae748b7ff95150e9f3ec" + integrity sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ== dependencies: - "@floating-ui/dom" "^1.2.1" + "@floating-ui/dom" "^1.5.1" -"@floating-ui/react@^0.19.1": - version "0.19.2" - resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.19.2.tgz#c6e4d2097ed0dca665a7c042ddf9cdecc95e9412" - integrity sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w== +"@floating-ui/react@^0.24.8": + version "0.24.8" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.24.8.tgz#e079e2836990be3fce9665ab509360a5447251a1" + integrity sha512-AuYeDoaR8jtUlUXtZ1IJ/6jtBkGnSpJXbGNzokBL87VDJ8opMq1Bgrc0szhK482ReQY6KZsMoZCVSb4xwalkBA== dependencies: - "@floating-ui/react-dom" "^1.3.0" - aria-hidden "^1.1.3" + "@floating-ui/react-dom" "^2.0.1" + aria-hidden "^1.2.3" tabbable "^6.0.1" +"@floating-ui/utils@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== + "@fullcalendar/core@^6.1.8": version "6.1.8" resolved "https://registry.yarnpkg.com/@fullcalendar/core/-/core-6.1.8.tgz#62008f7b2785dc01f0bf8c2f0c853925eab1c03a" @@ -463,59 +478,62 @@ dependencies: "@fullcalendar/daygrid" "~6.1.8" -"@mantine/carousel@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/carousel/-/carousel-6.0.17.tgz#d31fc9bc9ef14bd5ea3e9162d4a130b904cb478e" - integrity sha512-cKX7zGmWVXdq/mPff5QYaHLR2X6bujbR4YZ3Hs3TD8KuySTZDOHipUD9IAVH1DtYJRE0+FIRb6OeZ7X9/N2Erg== +"@mantine/carousel@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/carousel/-/carousel-7.2.2.tgz#3bef361525c1a4f1d02192564da2cfc411dcaa94" + integrity sha512-u59Fwn2RiMRmKe9eRe2tnlVInGe/nJGW7U1sZ7aZiHM6A5U/m8VBii0obOhl8bGcxNyBgNQYfDW5vZfOAl+2zg== + +"@mantine/code-highlight@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/code-highlight/-/code-highlight-7.2.2.tgz#9f7d7efba52318482e3529554838db38fa95c609" + integrity sha512-zR3J8TvHVZjXESTLNd49pZobhJIZcXUr0CGLs8F4TdnslIoN4SNWipQCPa0kDw7qO5CJhfMqgMeEYNh/slPpPg== dependencies: - "@mantine/utils" "6.0.17" + clsx "2.0.0" + highlight.js "^11.7.0" -"@mantine/core@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/core/-/core-6.0.17.tgz#734b31c79199a9cf2bfb0bbd7482f5c2c411ff9a" - integrity sha512-g3EDxcTJKisvEGTsGJPCGXiDumwr4O0nGNXwoGLnrg19nh3FAMfEIq18sJJLtRrBuarSbrvgMVYvKx1R6rTOWg== +"@mantine/core@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/core/-/core-7.2.2.tgz#fd7df20f4020fb4c96557f7ec06bb912dfb211ca" + integrity sha512-cVGmLjYyKIzjn0LRwamj71O4HT43qCxPGAzMZqkMYGOako7xwBLYQNe7HjL/J0FXJDyfX8OdMylVhgsePWYbng== dependencies: - "@floating-ui/react" "^0.19.1" - "@mantine/styles" "6.0.17" - "@mantine/utils" "6.0.17" - "@radix-ui/react-scroll-area" "1.0.2" - react-remove-scroll "^2.5.5" - react-textarea-autosize "8.3.4" + "@floating-ui/react" "^0.24.8" + clsx "2.0.0" + react-number-format "^5.2.2" + react-remove-scroll "^2.5.6" + react-textarea-autosize "8.5.3" + type-fest "^3.13.1" -"@mantine/dates@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/dates/-/dates-6.0.17.tgz#e248b612ae3381c53ff773fc80a782f4d159dd0a" - integrity sha512-p94rC0GkDopTrbNz0i+IStQshHYxYelpq66DNV+lt42bwP3H7lZDdYup0WnmzJpSMHiAQeiixqaFlcDibRxyrg== +"@mantine/dates@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/dates/-/dates-7.2.2.tgz#9e1fcc24d8cc229130d617cf306f6bdcf5b2c550" + integrity sha512-MgUy2qODhXEkdK5OQE3talThrbXKfBK6V0AJ8iwPcrxMoQ77u4aMzTv4+47bEjQeUFyjrT8u916VFd82mn59SA== dependencies: - "@mantine/utils" "6.0.17" + clsx "2.0.0" -"@mantine/dropzone@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/dropzone/-/dropzone-6.0.17.tgz#560420632f61f62481467fbcea9505d6ae051d49" - integrity sha512-LUyNnW2qo41WIDcHgxMssol41r6nXfb1bvICbAwzBHzWcaVHjIXiqRJ1GV8N6Y6o7ilSXxyWTnNVw0fEJ8dkbw== +"@mantine/dropzone@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/dropzone/-/dropzone-7.2.2.tgz#a6eb31a856d55fc77696c0c040ee6321eed0a9be" + integrity sha512-60eEG0Jd4cT4xxxU9fn5F0bOPU5v8YcC5DO/BfUU8e8wEVw2MHN8wi+TeadY/HVs3q6nPmN+J5ztmU1fyNQjYA== dependencies: - "@mantine/utils" "6.0.17" - react-dropzone "14.2.3" + react-dropzone-esm "15.0.1" -"@mantine/form@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/form/-/form-6.0.17.tgz#ab4fe22ea83976a3e621f0fcc2d36eae19f37141" - integrity sha512-hrWlBukErklaFSvKfz4PCl3Cd7UgHf5Q/FyZPD+WvBDT0zZ5uMjatQpVs/HAfhFOA5O2DFKAcs654mLzmJJ6Wg== +"@mantine/form@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/form/-/form-7.2.2.tgz#258460c41d36ca9535a5e2ac3d050e257831a3f8" + integrity sha512-Tzux6WbUliK6id1I7lV8tmu6je0WFrJLPDg+0xVyW7Qk/zmju837kj7SSfvNcJa51dKAtYxf3FgqTRy6ap9QEA== dependencies: fast-deep-equal "^3.1.3" klona "^2.0.5" -"@mantine/hooks@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-6.0.17.tgz#dc942c87e6dcfa14a70e4e4a162c22eeb4ff3724" - integrity sha512-7vf2w1NlzKlUynSuyI2DAIKoEOYKYC8k+tlSsk3BRdbzhbJAiWxcYzJy5seg5dFW1WIpKAZ0wiVdHXf/WRlRgg== +"@mantine/hooks@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-7.2.2.tgz#d116d8659f77c5f05f9dc088887c8857fcb456da" + integrity sha512-7CFSVP2aQHrBwLLAVf0q5dgj+6QTZmhLTNcuc3pE1du+HLFUdyVS6vvQC6kieZXxOd6UzwFGBlN4G+aDx95XeA== -"@mantine/modals@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/modals/-/modals-6.0.17.tgz#65d2e03c732a1937cf166942220db9368ebcefb4" - integrity sha512-57S4+G7+iPZOd6utzx3aYRKA1FcfJX7tfnbPafk303gSbZ9KQ3UWKJn9bk1HWev8AQsrNDyPH1zhjxVGpnqTZA== - dependencies: - "@mantine/utils" "6.0.17" +"@mantine/modals@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/modals/-/modals-7.2.2.tgz#5ef974e0c086daa4dec714ea0ec7bb072f4c84c0" + integrity sha512-J65xJ5ZULUG8fvNU+UnHboqEs3ueNDTMITUiVucqw4lupt93JHfamuR/PIV2mrXMYqSaKd4NBnxvkmcpjs0uRg== "@mantine/next@^6.0.16": version "6.0.17" @@ -525,20 +543,20 @@ "@mantine/ssr" "6.0.17" "@mantine/styles" "6.0.17" -"@mantine/notifications@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-6.0.17.tgz#719b89583b9350baa6502e8428e10c8491e553f9" - integrity sha512-iY8hdRG4RcrsA7U06AOWLbKrQJAzEhKi2mESOnGE4s7RBWJjLTXJf+gTKi+QtVa3XNIF0I/adpEh8MEFD5zGWw== +"@mantine/notifications@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-7.2.2.tgz#1f2370bdeaf70347d7996c113a93f941a1a40936" + integrity sha512-2MQ0jJi9HOspJOAq0sfE5QvacZytYoLB8k0GwnubnFilSACbpDYeoQXZWmKX0joYhHtKR15muTnF+P1s9kmr3Q== dependencies: - "@mantine/utils" "6.0.17" - react-transition-group "4.4.2" + "@mantine/store" "7.2.2" + react-transition-group "4.4.5" -"@mantine/nprogress@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/nprogress/-/nprogress-6.0.17.tgz#83885f33c82de97f8737c445232c6cbd5ad285e5" - integrity sha512-SDi7FPLqimfWelEEzMT+cHgntR7YqPtffTkrouItyWYTm1Dw9Qy4LRftJBQVfx/0+s7qYJZygJI4ts8aWEul4Q== +"@mantine/nprogress@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/nprogress/-/nprogress-7.2.2.tgz#63b63f5cb3215996c8c4a64ad3382db60f7b9643" + integrity sha512-R/fJps+yALynRtwz5VoGEIyxRsy7U5G+3xC5KXEshTx4CkLYSPSa2cbdBCn/GI5fIHuo5TntNnQ1AORK1ioE5w== dependencies: - "@mantine/utils" "6.0.17" + "@mantine/store" "7.2.2" "@mantine/prism@^6.0.16": version "6.0.17" @@ -548,12 +566,12 @@ "@mantine/utils" "6.0.17" prism-react-renderer "^1.2.1" -"@mantine/spotlight@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/spotlight/-/spotlight-6.0.17.tgz#ff014ef8d5370177057a0358990de58b34ac00f0" - integrity sha512-8Q/Br/RJqhUY6pi+2RdB3d943NeCvOJWHa7ch2czAgL5kEVnF/s/3HWy+iaTVSEQdsU2M1yn4roMndfo0l94Kw== +"@mantine/spotlight@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/spotlight/-/spotlight-7.2.2.tgz#5b8b4f2e7ffb447c2036854f52b8a196bba3facb" + integrity sha512-6RSxEnjEJZpsiM940/d/jLY3eMFadFGvVwHGEqAf8fjO7wtxtR3Pl9UWmmhuRMWAk2qYduzhQ+Npis8eTZEYtg== dependencies: - "@mantine/utils" "6.0.17" + "@mantine/store" "7.2.2" "@mantine/ssr@6.0.17": version "6.0.17" @@ -563,6 +581,11 @@ "@mantine/styles" "6.0.17" html-react-parser "1.4.12" +"@mantine/store@7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/store/-/store-7.2.2.tgz#d5948fcc1bb3a4c4ae706692f2a636a9367696b5" + integrity sha512-j8vR8whB332pGI8OXkM2/3rdh4LJxELJQTG+rTsCCd3VQuEJiRTQDKVaOvp9ONja3GU5b1Tk3zhKOrkpgxTJBA== + "@mantine/styles@6.0.17": version "6.0.17" resolved "https://registry.yarnpkg.com/@mantine/styles/-/styles-6.0.17.tgz#fef8a64f0e32b970c397e1c22dceb6ab09fb090f" @@ -571,12 +594,10 @@ clsx "1.1.1" csstype "3.0.9" -"@mantine/tiptap@^6.0.16": - version "6.0.17" - resolved "https://registry.yarnpkg.com/@mantine/tiptap/-/tiptap-6.0.17.tgz#231c5c45a0106d5e8dee4c1f6e24bd59f14db476" - integrity sha512-yTPkFyDeaff8Rl9DMkPXWvn/qoGkXn9u+yr+zupF4y+lzvtz4h/Zxp5Q2nAaCXa1zSmTanWhJunN5QVzRZy4Yg== - dependencies: - "@mantine/utils" "6.0.17" +"@mantine/tiptap@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mantine/tiptap/-/tiptap-7.2.2.tgz#5762c4c71cb7d0cf3ae05517dfe932b5e41cf582" + integrity sha512-sL62vp97D4ChWXdzGVerK0XY5N7b2XvOaPOKYQRG0rJ8EvaDs9RfL/DU42/HPnkSnKLi/LmVkHWPJJGViKTCrg== "@mantine/utils@6.0.17": version "6.0.17" @@ -605,55 +626,62 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@next/env@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.12.tgz#0b88115ab817f178bf9dc0c5e7b367277595b58d" - integrity sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ== - -"@next/swc-darwin-arm64@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.12.tgz#326c830b111de8a1a51ac0cbc3bcb157c4c4f92c" - integrity sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg== - -"@next/swc-darwin-x64@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.12.tgz#dd5c49fc092a8ffe4f30b7aa9bf6c5d2e40bbfa1" - integrity sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ== - -"@next/swc-linux-arm64-gnu@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.12.tgz#816cbe9d26ce4670ea99d95b66041e483ed122d6" - integrity sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig== - -"@next/swc-linux-arm64-musl@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.12.tgz#670c8aee221628f65e5b299ee84db746e6c778b0" - integrity sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g== - -"@next/swc-linux-x64-gnu@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.12.tgz#54c64e689f007ae463698dddc1c6637491c99cb4" - integrity sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg== - -"@next/swc-linux-x64-musl@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.12.tgz#9cbddf4e542ef3d32284e0c36ce102facc015f8b" - integrity sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ== - -"@next/swc-win32-arm64-msvc@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.12.tgz#3467a4b25429ccf49fd416388c9d19c80a4f6465" - integrity sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA== - -"@next/swc-win32-ia32-msvc@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.12.tgz#73494cd167191946833c680b28d6a42435d383a8" - integrity sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww== - -"@next/swc-win32-x64-msvc@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.12.tgz#4a497edc4e8c5ee3c3eb27cf0eb39dfadff70874" - integrity sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA== +"@next/env@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.0.2.tgz#c1fb535983bca768e7eccd7b9cf4636127fc6d25" + integrity sha512-HAW1sljizEaduEOes/m84oUqeIDAUYBR1CDwu2tobNlNDFP3cSm9d6QsOsGeNlIppU1p/p1+bWbYCbvwjFiceA== + +"@next/eslint-plugin-next@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.2.tgz#421799f46116d8032f1739ce5ce89822453c8f03" + integrity sha512-APrYFsXfAhnysycqxHcpg6Y4i7Ukp30GzVSZQRKT3OczbzkqGjt33vNhScmgoOXYBU1CfkwgtXmNxdiwv1jKmg== + dependencies: + glob "7.1.7" + +"@next/swc-darwin-arm64@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.2.tgz#eba35a1425fee5d305903c85ae0d6d2b0d512c7b" + integrity sha512-i+jQY0fOb8L5gvGvojWyZMfQoQtDVB2kYe7fufOEiST6sicvzI2W5/EXo4lX5bLUjapHKe+nFxuVv7BA+Pd7LQ== + +"@next/swc-darwin-x64@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.2.tgz#8adb4dfc3d596c0816da67df9b75603218cf2a42" + integrity sha512-zRCAO0d2hW6gBEa4wJaLn+gY8qtIqD3gYd9NjruuN98OCI6YyelmhWVVLlREjS7RYrm9OUQIp/iVJFeB6kP1hg== + +"@next/swc-linux-arm64-gnu@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.2.tgz#1f88d066d44c9229a861815e3d449b0037dae14e" + integrity sha512-tSJmiaon8YaKsVhi7GgRizZoV0N1Sx5+i+hFTrCKKQN7s3tuqW0Rov+RYdPhAv/pJl4qiG+XfSX4eJXqpNg3dA== + +"@next/swc-linux-arm64-musl@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.2.tgz#de9b2708abc35dd19429a662a11785d0c54d1ec7" + integrity sha512-dXJLMSEOwqJKcag1BeX1C+ekdPPJ9yXbWIt3nAadhbLx5CjACoB2NQj9Xcqu2tmdr5L6m34fR+fjGPs+ZVPLzA== + +"@next/swc-linux-x64-gnu@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.2.tgz#64bd555dcbc7fd6c38cb86028baf7d7fc80bd4ac" + integrity sha512-WC9KAPSowj6as76P3vf1J3mf2QTm3Wv3FBzQi7UJ+dxWjK3MhHVWsWUo24AnmHx9qDcEtHM58okgZkXVqeLB+Q== + +"@next/swc-linux-x64-musl@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.2.tgz#69e6abf0f516df69acbf663eeb8ed6fd8eebcc38" + integrity sha512-KSSAwvUcjtdZY4zJFa2f5VNJIwuEVnOSlqYqbQIawREJA+gUI6egeiRu290pXioQXnQHYYdXmnVNZ4M+VMB7KQ== + +"@next/swc-win32-arm64-msvc@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.2.tgz#82bc49af0986f4b2c113b5f223a559fc51b49b9d" + integrity sha512-2/O0F1SqJ0bD3zqNuYge0ok7OEWCQwk55RPheDYD0va5ij7kYwrFkq5ycCRN0TLjLfxSF6xI5NM6nC5ux7svEQ== + +"@next/swc-win32-ia32-msvc@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.2.tgz#2f1958ad82b7f7ec5da8ad8ac2f18ef7a8e7757f" + integrity sha512-vJI/x70Id0oN4Bq/R6byBqV1/NS5Dl31zC+lowO8SDu1fHmUxoAdILZR5X/sKbiJpuvKcCrwbYgJU8FF/Gh50Q== + +"@next/swc-win32-x64-msvc@14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.2.tgz#629174f587beb640a431a4a3fe4e26d5d4f8de52" + integrity sha512-Ut4LXIUvC5m8pHTe2j0vq/YDnTEyq6RSR9vHYPqnELrDapPhLNz9Od/L5Ow3J8RNDWpEnfCiQXuVdfjlNEJ7ug== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -681,96 +709,6 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@radix-ui/number@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.0.tgz#4c536161d0de750b3f5d55860fc3de46264f897b" - integrity sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/primitive@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" - integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-compose-refs@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" - integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-context@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" - integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-direction@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" - integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-presence@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" - integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-use-layout-effect" "1.0.0" - -"@radix-ui/react-primitive@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" - integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.1" - -"@radix-ui/react-scroll-area@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz#26c906d351b56835c0301126b24574c9e9c7b93b" - integrity sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/number" "1.0.0" - "@radix-ui/primitive" "1.0.0" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-context" "1.0.0" - "@radix-ui/react-direction" "1.0.0" - "@radix-ui/react-presence" "1.0.0" - "@radix-ui/react-primitive" "1.0.1" - "@radix-ui/react-use-callback-ref" "1.0.0" - "@radix-ui/react-use-layout-effect" "1.0.0" - -"@radix-ui/react-slot@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" - integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" - -"@radix-ui/react-use-callback-ref@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" - integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-layout-effect@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" - integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@remirror/core-constants@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a" @@ -819,146 +757,151 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@swc/helpers@0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" - integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== +"@rushstack/eslint-patch@^1.3.3": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== + +"@swc/helpers@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== dependencies: tslib "^2.4.0" -"@tabler/icons-react@^2.28.0": - version "2.28.0" - resolved "https://registry.yarnpkg.com/@tabler/icons-react/-/icons-react-2.28.0.tgz#ff0f8b639c88857039663a51574a5e7fbc172697" - integrity sha512-AuUd2hdK/4pa/DIIqCHZ32Dh9bIbbzo/2zEm2jr6cPARh81hJHScf/901ABYLNljWULCLSyz7YDOjnh+G1RGUw== +"@tabler/icons-react@^2.40.0": + version "2.40.0" + resolved "https://registry.yarnpkg.com/@tabler/icons-react/-/icons-react-2.40.0.tgz#14efb60f0d841689c1ddf5691646dbfc3fa01901" + integrity sha512-C+dDOZowFbwI3LGQP0fdua+hOPkGkW7XeMcRXTSdEKc5fD75W6zRO5nXnWivIMRKsi/Y26EDmnQo15N8JX378w== dependencies: - "@tabler/icons" "2.28.0" + "@tabler/icons" "2.40.0" prop-types "^15.7.2" -"@tabler/icons@2.28.0": - version "2.28.0" - resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-2.28.0.tgz#0ab357c434e31b25d7aef868fa08143711f2e7e5" - integrity sha512-JgqeXzS2Cik0Bed+dn3AYh/N2OqLv7FzoOqIzAWnywJyVOBNxB47pzW4Zc0hidDVCk2dt1ekeC2jHaXSheT+BQ== +"@tabler/icons@2.40.0": + version "2.40.0" + resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-2.40.0.tgz#96cecc990a03412b88194ce3765280d2e63c1be6" + integrity sha512-VqKsBSX159cLFTnCzkCmGhZtSPJHNN0lM2sC4xe0HPOfPUnjiex7rDHDdut4oe4iKRecDDpwXwM9BcU6xCPlCg== -"@tiptap/core@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.4.tgz#0a2047150ae537e75f96841a603699526f7b4ec5" - integrity sha512-2YOMjRqoBGEP4YGgYpuPuBBJHMeqKOhLnS0WVwjVP84zOmMgZ7A8M6ILC9Xr7Q/qHZCvyBGWOSsI7+3HsEzzYQ== +"@tiptap/core@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.12.tgz#904fdf147e91b5e60561c76e7563c1b5a32f54ab" + integrity sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ== -"@tiptap/extension-blockquote@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.0.4.tgz#1e87f8f157573deec65b54d8a8b5568d79066a86" - integrity sha512-z5qfuLi04OgCBI6/odzB2vhulT/wpjymYOnON65vLXGZZbUw4cbPloykhqgWvQp+LzKH+HBhl4fz53d5CgnbOA== +"@tiptap/extension-blockquote@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz#97b43419606acf9bfd93b9f482a1827dcac8c3e9" + integrity sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg== -"@tiptap/extension-bold@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.4.tgz#debba8b0d957fe0b6943354834d8f1f0f8c0695c" - integrity sha512-CWSQy1uWkVsen8HUsqhm+oEIxJrCiCENABUbhaVcJL/MqhnP4Trrh1B6O00Yfoc0XToPRRibDaHMFs4A3MSO0g== +"@tiptap/extension-bold@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz#5dbf41105fc0fbde8adbff629312187fbebc39b0" + integrity sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg== -"@tiptap/extension-bubble-menu@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.4.tgz#f9dde09d3984e9879b1fe13d3e8c1859f0779ef5" - integrity sha512-+cRZwj0YINNNDElSAiX1pvY2K98S2j9MQW2dXV5oLqsJhqGPZsKxVo8I1u7ZtqUla3QE1V18RYPAzVgTiMRkBg== +"@tiptap/extension-bubble-menu@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.12.tgz#4103a21a6433e58690c8f742ece39fad78dc26eb" + integrity sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw== dependencies: tippy.js "^6.3.7" -"@tiptap/extension-bullet-list@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.4.tgz#d192767d39e45253c5e9d974e949f271e09c72d7" - integrity sha512-JSZKBVTaKSuLl5fR4EKE4dOINOrgeRHYA25Vj6cWjgdvpTw5ef7vcUdn9yP4JwTmLRI+VnnMlYL3rqigU3iZNg== +"@tiptap/extension-bullet-list@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz#7c905a577ce30ef2cb335870a23f9d24fd26f6aa" + integrity sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ== -"@tiptap/extension-code-block@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.4.tgz#d551ee7c13fef379bbbad298f1be757d1125cd54" - integrity sha512-In2tV3rgm/MznVF0N7qYsYugPWSzhZHaCRCWcFKNvllMExpo91bUWvk+hXaIhhPxvuqGIVezjybwrYuU3bJW0g== +"@tiptap/extension-code-block@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.1.12.tgz#20416baef1b5fc839490a8416e97fdcbb5fdf918" + integrity sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA== -"@tiptap/extension-code@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.0.4.tgz#6952d402e7372dd2d129e962bf9bd54d68ee6183" - integrity sha512-HuwJSJkipZf4hkns9witv1CABNIPiB9C8lgAQXK4xJKcoUQChcnljEL+PQ2NqeEeMTEeV3nG3A/0QafH0pgTgg== +"@tiptap/extension-code@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.1.12.tgz#86d2eb5f63725af472c5fd858e5a9c7ccae06ef3" + integrity sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw== -"@tiptap/extension-document@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.4.tgz#f94e6da23a7d93a8ea34c6767d4e2e31f5ab8849" - integrity sha512-mCj2fAhnNhIHttPSqfTPSSTGwClGaPYvhT56Ij/Pi4iCrWjPXzC4XnIkIHSS34qS2tJN4XJzr/z7lm3NeLkF1w== +"@tiptap/extension-document@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.12.tgz#e19e4716dfad60cbeb6abaf2f362fed759963529" + integrity sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw== -"@tiptap/extension-dropcursor@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.4.tgz#f4a7542866c9100fee8e78eca5eebefff58989ca" - integrity sha512-1OmKBv/E+nJo2vsosvu8KwFiBB+gZM1pY61qc7JbwEKHSYAxUFHfvLkIA0IQ53Z0DHMrFSKgWmHEcbnqtGevCA== +"@tiptap/extension-dropcursor@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz#9da0c275291c9d47497d3db41b4d70d96366b4ff" + integrity sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A== -"@tiptap/extension-floating-menu@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.4.tgz#82f12c2415b7ddbfd782a03b100f717e9905bab0" - integrity sha512-0YRE738k+kNKuSHhAb3jj9ZQ7Kda78RYRr+cX2jrQVueIMKebPIY07eBt6JcKmob9V9vcNn9qLtBfmygfcPUQg== +"@tiptap/extension-floating-menu@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.12.tgz#68a658b2b9bdd3a0fc1afc5165231838061a8fde" + integrity sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A== dependencies: tippy.js "^6.3.7" -"@tiptap/extension-gapcursor@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.4.tgz#c100a792fd41535ad6382aa8133d0d9c0b2cb2b8" - integrity sha512-VxmKfBQjSSu1mNvHlydA4dJW/zawGKyqmnryiFNcUV9s+/HWLR5i9SiUl4wJM/B8sG8cQxClne5/LrCAeGNYuA== - -"@tiptap/extension-hard-break@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.4.tgz#a4f70fa9a473270f7ec89f20a14b9122af5657bc" - integrity sha512-4j8BZa6diuoRytWoIc7j25EYWWut5TZDLbb+OVURdkHnsF8B8zeNTo55W40CdwSaSyTtXtxbTIldV80ShQarGQ== - -"@tiptap/extension-heading@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.4.tgz#5372e346c5d69cfa0060d7238d1a0bf440442f6f" - integrity sha512-EfitUbew5ljH3xVlBXAxqqcJ4rjv15b8379LYOV6KQCf+Y1wY0gy9Q8wXSnrsAagqrvqipja4Ihn3OZeyIM+CA== - -"@tiptap/extension-history@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.0.4.tgz#761a9c4b2a875817acc73137660552bd49e94fca" - integrity sha512-3GAUszn1xZx3vniHMiX9BSKmfvb5QOb0oSLXInN+hx80CgJDIHqIFuhx2dyV9I/HWpa0cTxaLWj64kfDzb1JVg== - -"@tiptap/extension-horizontal-rule@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.4.tgz#6988dd63fb00ca144feb1baac84142782e8ebe38" - integrity sha512-OMx2ImQseKbSUjPbbRCuYGOJshxYedh9giWAqwgWWokhYkH4nGxXn5m7+Laj+1wLre4bnWgHWVY4wMGniEj3aw== - -"@tiptap/extension-italic@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.0.4.tgz#4c6d0938542e4f7276f9dd18db395c040f76dcd8" - integrity sha512-C/6+qs4Jh8xERRP0wcOopA1+emK8MOkBE4RQx5NbPnT2iCpERP0GlmHBFQIjaYPctZgKFHxsCfRnneS5Xe76+A== - -"@tiptap/extension-link@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.4.tgz#2899f9060ca722f11bd10ceb572ceb5178f111d6" - integrity sha512-CliImI1hmC+J6wHxqgz9P4wMjoNSSgm3fnNHsx5z0Bn6JRA4Evh2E3KZAdMaE8xCTx89rKxMYNbamZf4VLSoqQ== +"@tiptap/extension-gapcursor@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz#63844c3abd1a38af915839cf0c097b6d2e5a86fe" + integrity sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ== + +"@tiptap/extension-hard-break@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.1.12.tgz#54d0c9996e1173594852394975a9356eec98bc9a" + integrity sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw== + +"@tiptap/extension-heading@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz#05ae4684d6f29ae611495ab114038e14a5d1dff6" + integrity sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w== + +"@tiptap/extension-history@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.12.tgz#03bcb9422e8ea2b82dc45207d1a1b0bc0241b055" + integrity sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg== + +"@tiptap/extension-horizontal-rule@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.12.tgz#2191d4ff68ed39381d65971ad8e2aa1be43e6d6b" + integrity sha512-RRuoK4KxrXRrZNAjJW5rpaxjiP0FJIaqpi7nFbAua2oHXgsCsG8qbW2Y0WkbIoS8AJsvLZ3fNGsQ8gpdliuq3A== + +"@tiptap/extension-italic@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz#e99480eb77f8b4e5444fc236add8a831d5aa2343" + integrity sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A== + +"@tiptap/extension-link@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.12.tgz#a18f83a0b54342e6274ff9e5a5907ef7f15aa723" + integrity sha512-Sti5hhlkCqi5vzdQjU/gbmr8kb578p+u0J4kWS+SSz3BknNThEm/7Id67qdjBTOQbwuN07lHjDaabJL0hSkzGQ== dependencies: linkifyjs "^4.1.0" -"@tiptap/extension-list-item@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.0.4.tgz#8ca7c9959a07bf94602f8957d784d526568f2069" - integrity sha512-tSkbLgRo1QMNDJttWs9FeRywkuy5T2HdLKKfUcUNzT3s0q5AqIJl7VyimsBL4A6MUfN1qQMZCMHB4pM9Mkluww== +"@tiptap/extension-list-item@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz#3eb28dc998490a98f14765783770b3cf6587d39e" + integrity sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg== -"@tiptap/extension-ordered-list@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.4.tgz#e3e220e9c15114b07c952c32fa58e96601db6bd7" - integrity sha512-Kfg+8k9p4iJCUKP/yIa18LfUpl9trURSMP/HX3/yQTz9Ul1vDrjxeFjSE5uWNvupcXRAM24js+aYrCmV7zpU+Q== +"@tiptap/extension-ordered-list@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz#f41a45bc66b4d19e379d4833f303f2e0cd6b9d60" + integrity sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA== -"@tiptap/extension-paragraph@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.4.tgz#9cffa3f8a980349ca068b1b3c12596bf5f3aef0f" - integrity sha512-nDxpopi9WigVqpfi8nU3B0fWYB14EMvKIkutNZo8wJvKGTZufNI8hw66wupIx/jZH1gFxEa5dHerw6aSYuWjgQ== +"@tiptap/extension-paragraph@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz#922447b2aa1c7184787d351ceec593a74d24ed03" + integrity sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw== "@tiptap/extension-placeholder@^2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.0.4.tgz#74259783757c59751d78fcdd1aade7e928809187" integrity sha512-Y8hjUYBGTbytgrsplSZdHGciqbuVHQX+h0JcuvVaIlAy1kR7hmbxJLqL8tNa7qLtTqo2MfS2942OtSv85JOCzA== -"@tiptap/extension-strike@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.4.tgz#13286dcf8780c55610ed65b24238b8395a5be824" - integrity sha512-Men7LK6N/Dh3/G4/z2Z9WkDHM2Gxx1XyxYix2ZMf5CnqY37SeDNUnGDqit65pdIN3Y/TQnOZTkKSBilSAtXfJA== +"@tiptap/extension-strike@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz#2b049aedf2985e9c9e3c3f1cc0b203a574c85bd8" + integrity sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g== -"@tiptap/extension-text@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.4.tgz#318b0105491a5976d220871dccabe6c4d2cbeedd" - integrity sha512-i8/VFlVZh7TkAI49KKX5JmC0tM8RGwyg5zUpozxYbLdCOv07AkJt+E1fLJty9mqH4Y5HJMNnyNxsuZ9Ol/ySRA== +"@tiptap/extension-text@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.12.tgz#466e3244bdd9b2db2304c0c9a1d51ce59f5327d0" + integrity sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg== "@tiptap/pm@^2.0.4": version "2.0.4" @@ -984,38 +927,38 @@ prosemirror-transform "^1.7.0" prosemirror-view "^1.28.2" -"@tiptap/react@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.0.4.tgz#b879faeabd67859254d594eafe0f8232f5d78116" - integrity sha512-NcrZL4Tu3+1Xfj/us5AOD7+kJhwYo2XViOB2iRRnfwS80PUtiLWDis6o3ngMGot/jBWzaMn4gofXnMWHtFdIAw== - dependencies: - "@tiptap/extension-bubble-menu" "^2.0.4" - "@tiptap/extension-floating-menu" "^2.0.4" - -"@tiptap/starter-kit@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.4.tgz#20456eb4a4ae0ac8d5bf2ac5e9771b3c617c51a6" - integrity sha512-9WtVXhujyp5cOlE7qlcQMFr0FEx3Cvo1isvfQGzhKKPzXa3rR7FT8bnOFsten31/Ia/uwvGXAvRDQy24YfHdNA== - dependencies: - "@tiptap/core" "^2.0.4" - "@tiptap/extension-blockquote" "^2.0.4" - "@tiptap/extension-bold" "^2.0.4" - "@tiptap/extension-bullet-list" "^2.0.4" - "@tiptap/extension-code" "^2.0.4" - "@tiptap/extension-code-block" "^2.0.4" - "@tiptap/extension-document" "^2.0.4" - "@tiptap/extension-dropcursor" "^2.0.4" - "@tiptap/extension-gapcursor" "^2.0.4" - "@tiptap/extension-hard-break" "^2.0.4" - "@tiptap/extension-heading" "^2.0.4" - "@tiptap/extension-history" "^2.0.4" - "@tiptap/extension-horizontal-rule" "^2.0.4" - "@tiptap/extension-italic" "^2.0.4" - "@tiptap/extension-list-item" "^2.0.4" - "@tiptap/extension-ordered-list" "^2.0.4" - "@tiptap/extension-paragraph" "^2.0.4" - "@tiptap/extension-strike" "^2.0.4" - "@tiptap/extension-text" "^2.0.4" +"@tiptap/react@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.1.12.tgz#23566c7992b9642137171b282335e646922ae559" + integrity sha512-RMO4QmmpL7sPR7w8o1Wq0hrUe/ttHzsn5I/eWwqg1d3fGx5y9mOdfCoQ9XBtm49Xzdejy3QVzt4zYp9fX0X/xg== + dependencies: + "@tiptap/extension-bubble-menu" "^2.1.12" + "@tiptap/extension-floating-menu" "^2.1.12" + +"@tiptap/starter-kit@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.1.12.tgz#2bf28091ed08dc8f7b903ba92925e4ffe06257ea" + integrity sha512-+RoP1rWV7rSCit2+3wl2bjvSRiePRJE/7YNKbvH8Faz/+AMO23AFegHoUFynR7U0ouGgYDljGkkj35e0asbSDA== + dependencies: + "@tiptap/core" "^2.1.12" + "@tiptap/extension-blockquote" "^2.1.12" + "@tiptap/extension-bold" "^2.1.12" + "@tiptap/extension-bullet-list" "^2.1.12" + "@tiptap/extension-code" "^2.1.12" + "@tiptap/extension-code-block" "^2.1.12" + "@tiptap/extension-document" "^2.1.12" + "@tiptap/extension-dropcursor" "^2.1.12" + "@tiptap/extension-gapcursor" "^2.1.12" + "@tiptap/extension-hard-break" "^2.1.12" + "@tiptap/extension-heading" "^2.1.12" + "@tiptap/extension-history" "^2.1.12" + "@tiptap/extension-horizontal-rule" "^2.1.12" + "@tiptap/extension-italic" "^2.1.12" + "@tiptap/extension-list-item" "^2.1.12" + "@tiptap/extension-ordered-list" "^2.1.12" + "@tiptap/extension-paragraph" "^2.1.12" + "@tiptap/extension-strike" "^2.1.12" + "@tiptap/extension-text" "^2.1.12" "@types/cookie@^0.4.1": version "0.4.1" @@ -1095,6 +1038,11 @@ dependencies: ci-info "^3.1.0" +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/lodash@^4.14.195": version "4.14.195" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" @@ -1145,10 +1093,10 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/react-dom@18.2.7": - version "18.2.7" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" - integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== +"@types/react-dom@^18.2.15": + version "18.2.15" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.15.tgz#921af67f9ee023ac37ea84b1bc0cc40b898ea522" + integrity sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg== dependencies: "@types/react" "*" @@ -1162,7 +1110,7 @@ "@types/geojson" "*" "@types/react" "*" -"@types/react@*", "@types/react@18.2.15": +"@types/react@*": version "18.2.15" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.15.tgz#14792b35df676c20ec3cf595b262f8c615a73066" integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== @@ -1171,6 +1119,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.2.37": + version "18.2.37" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.37.tgz#0f03af69e463c0f19a356c2660dbca5d19c44cae" + integrity sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/scheduler@*": version "0.16.3" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" @@ -1186,6 +1143,51 @@ resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== +"@typescript-eslint/parser@^5.4.2 || ^6.0.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.11.0.tgz#9640d9595d905f3be4f278bf515130e6129b202e" + integrity sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ== + dependencies: + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/typescript-estree" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz#621f603537c89f4d105733d949aa4d55eee5cea8" + integrity sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A== + dependencies: + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" + +"@typescript-eslint/types@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.11.0.tgz#8ad3aa000cbf4bdc4dcceed96e9b577f15e0bf53" + integrity sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA== + +"@typescript-eslint/typescript-estree@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz#7b52c12a623bf7f8ec7f8a79901b9f98eb5c7990" + integrity sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ== + dependencies: + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/visitor-keys@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz#d991538788923f92ec40d44389e7075b359f3458" + integrity sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ== + dependencies: + "@typescript-eslint/types" "6.11.0" + eslint-visitor-keys "^3.4.1" + ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -1234,13 +1236,20 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-hidden@^1.1.3: +aria-hidden@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== dependencies: tslib "^2.0.0" +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -1249,12 +1258,34 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.3: +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -1264,6 +1295,27 @@ array.prototype.flat@^1.2.3: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + arraybuffer.prototype.slice@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" @@ -1282,16 +1334,35 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== -attr-accept@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" - integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -1301,6 +1372,11 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + better-path-resolve@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" @@ -1308,6 +1384,14 @@ better-path-resolve@1.0.0: dependencies: is-windows "^1.0.0" +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1342,11 +1426,25 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -1431,6 +1529,11 @@ clsx@1.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== +clsx@2.0.0, clsx@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1465,6 +1568,11 @@ commander@7: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" @@ -1519,6 +1627,11 @@ cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + csstype@3.0.9: version "3.0.9" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" @@ -1695,15 +1808,34 @@ d3-zoom@^2.0.0: d3-selection "2" d3-transition "2" +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + dash-get@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/dash-get/-/dash-get-1.0.2.tgz#4c9e9ad5ef04c4bf9d3c9a451f6f7997298dcc7c" integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ== -dayjs@^1.11.9: - version "1.11.9" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" - integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== +dayjs@^1.11.10: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" decamelize-keys@^1.1.0: version "1.1.1" @@ -1739,7 +1871,16 @@ define-data-property@^1.0.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: +define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -1748,6 +1889,11 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" @@ -1765,6 +1911,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -1810,29 +1963,42 @@ duplexer2@^0.1.2: dependencies: readable-stream "^2.0.2" -embla-carousel-react@^8.0.0-rc11: - version "8.0.0-rc11" - resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.0.0-rc11.tgz#0e2fde5cafa3cae9c30721e18aee648599527994" - integrity sha512-hXOAUMOIa0GF5BtdTTqBuKcjgU+ipul6thTCXOZttqnu2c6VS3SIzUUT+onIIEw+AptzKJcPwGcoAByAGa9eJw== +embla-carousel-react@^8.0.0-rc14: + version "8.0.0-rc14" + resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.0.0-rc14.tgz#ed5d9e641134fdc7e060a9188b0ccf13f7677da1" + integrity sha512-2b9vXACEcn0qja4QyaFMfCgFbFhumV3krOCGr9+jlQiuXt5z/EyfiYYziDsm70DhTtxtg/uKEGflIqZSfWRYKg== dependencies: - embla-carousel "8.0.0-rc11" - embla-carousel-reactive-utils "8.0.0-rc11" + embla-carousel "8.0.0-rc14" + embla-carousel-reactive-utils "8.0.0-rc14" -embla-carousel-reactive-utils@8.0.0-rc11: - version "8.0.0-rc11" - resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0-rc11.tgz#d5493bd2bfeb68b1cbf65d4c836a4d36779a03de" - integrity sha512-pDNVJNCn0dybLkHw93My+cMfkRQ5oLZff6ZCwgmrw+96aPiZUyo5ANywz8Lb70SWWgD/TNBRrtQCquvjHS31Sg== +embla-carousel-reactive-utils@8.0.0-rc14: + version "8.0.0-rc14" + resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0-rc14.tgz#a8844b3930fb3b1423e07544b3efb125525c454a" + integrity sha512-r153bynAo9eTBuWWggPWLYnE9xqVOYmkkeMbAuGX8pkUisJN8aTLMW9b7CYOzjURRB7z85EmYRbeBg+axQzc9g== -embla-carousel@8.0.0-rc11: - version "8.0.0-rc11" - resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.0.0-rc11.tgz#700ab6b3e4825ef9e6ac83238b81e3e1a316c3f4" - integrity sha512-Toeaug98PGYzSY56p/xsa+u4zbQbAXgGymwEDUc2wqT+1XCnnUsH42MClglhABJQbobwDYxOabhJrfXyJKUMig== +embla-carousel@8.0.0-rc14: + version "8.0.0-rc14" + resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.0.0-rc14.tgz#039372f97b57e95c9b839c6e27b8ff2f63b23053" + integrity sha512-/NLkMFZ7xKryRVYeUjmhbfV63Vr07saPBDwAX2TPMbcaiWwfQfU5Xsc2AiCMZANtwmzsjRK6gSBa7hOy/VXu6g== emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -1903,6 +2069,26 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.11" +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -1943,16 +2129,147 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-config-next@^14.0.2: + version "14.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.0.2.tgz#bbcd7af62ed9700d9dd74c1b8538fdb9495d46ce" + integrity sha512-CasWThlsyIcg/a+clU6KVOMTieuDhTztsrqvniP6AsRki9v7FnojTa7vKQOYM8QSOsQdZ/aElLD1Y2Oc8/PsIg== + dependencies: + "@next/eslint-plugin-next" "14.0.2" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.5.2: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" + +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.28.1: + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-jsx-a11y@^6.7.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-visitor-keys@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + extendable-error@^0.1.5: version "0.1.7" resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" @@ -1972,6 +2289,17 @@ fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.2.11, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-glob@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" @@ -1990,13 +2318,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -file-selector@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc" - integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw== - dependencies: - tslib "^2.4.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2058,12 +2379,22 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.6: +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -2106,6 +2437,13 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.5.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2118,6 +2456,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -2125,7 +2475,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^11.0.0: +globby@^11.0.0, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -2144,7 +2494,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2205,6 +2555,18 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +highlight.js@^11.7.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0" + integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw== + hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -2293,7 +2655,15 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -inherits@~2.0.1, inherits@~2.0.3: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2343,6 +2713,13 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -2384,7 +2761,14 @@ is-core-module@^2.13.0: dependencies: has "^1.0.3" -is-date-object@^1.0.1: +is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -2403,18 +2787,37 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.1: +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -2452,6 +2855,11 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -2487,6 +2895,11 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -2494,6 +2907,14 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-windows@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -2524,6 +2945,17 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2542,6 +2974,13 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -2549,6 +2988,16 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -2564,6 +3013,18 @@ klona@^2.0.5: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -2642,10 +3103,10 @@ make-error@^1.3.6: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -mantine-datatable@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/mantine-datatable/-/mantine-datatable-2.9.0.tgz#3f98a650cc01b6d64621b2f7760511acb744fa44" - integrity sha512-DJnTRLr5JPMs5b/xkOvwJDCzAYAqdAxxiiCz3XGvQdhd+IrvuxlK2e2RHfgKtdxsO+A0n4NL/nkC4Qx0GbhAJg== +mantine-datatable@^7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/mantine-datatable/-/mantine-datatable-7.1.7.tgz#432cab10d24482bf8b5439eac3023d9a8aea5a34" + integrity sha512-e3hmXrdYc00f1FaPOfA5nKSSfMWR1FXDPT+Ct1OgwP2H8naBeSzPCcBXcc1lIcjDXsxW77IdPo4uMq1UL18GZQ== map-obj@^1.0.0: version "1.0.1" @@ -2708,6 +3169,13 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimatch@^3.0.4, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -2717,7 +3185,7 @@ minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@~1.2.5: +minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -2727,6 +3195,16 @@ mixme@^0.5.1: resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.9.tgz#a5a58e17354632179ff3ce5b0fc130899c8ba81c" integrity sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw== +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multipipe@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-1.0.2.tgz#cc13efd833c9cda99f224f868461b8e1a3fd939d" @@ -2735,34 +3213,33 @@ multipipe@^1.0.2: duplexer2 "^0.1.2" object-assign "^4.1.0" -nanoid@^3.3.4: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.6: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -next@13.4.12: - version "13.4.12" - resolved "https://registry.yarnpkg.com/next/-/next-13.4.12.tgz#809b21ea0aabbe88ced53252c88c4a5bd5af95df" - integrity sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw== +next@^14.0.2: + version "14.0.2" + resolved "https://registry.yarnpkg.com/next/-/next-14.0.2.tgz#02ba6a1656edf14d3913c7a3553026e9d6e083c7" + integrity sha512-jsAU2CkYS40GaQYOiLl9m93RTv2DA/tTJ0NRlmZIBIL87YwQ/xR8k796z7IqgM3jydI8G25dXvyYMC9VDIevIg== dependencies: - "@next/env" "13.4.12" - "@swc/helpers" "0.5.1" + "@next/env" "14.0.2" + "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001406" - postcss "8.4.14" + postcss "8.4.31" styled-jsx "5.1.1" watchpack "2.4.0" - zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.12" - "@next/swc-darwin-x64" "13.4.12" - "@next/swc-linux-arm64-gnu" "13.4.12" - "@next/swc-linux-arm64-musl" "13.4.12" - "@next/swc-linux-x64-gnu" "13.4.12" - "@next/swc-linux-x64-musl" "13.4.12" - "@next/swc-win32-arm64-msvc" "13.4.12" - "@next/swc-win32-ia32-msvc" "13.4.12" - "@next/swc-win32-x64-msvc" "13.4.12" + "@next/swc-darwin-arm64" "14.0.2" + "@next/swc-darwin-x64" "14.0.2" + "@next/swc-linux-arm64-gnu" "14.0.2" + "@next/swc-linux-arm64-musl" "14.0.2" + "@next/swc-linux-x64-gnu" "14.0.2" + "@next/swc-linux-x64-musl" "14.0.2" + "@next/swc-win32-arm64-msvc" "14.0.2" + "@next/swc-win32-ia32-msvc" "14.0.2" + "@next/swc-win32-x64-msvc" "14.0.2" normalize-package-data@^2.5.0: version "2.5.0" @@ -2804,6 +3281,42 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" +object.entries@^1.1.6, object.entries@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6, object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + object.omit@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af" @@ -2818,6 +3331,22 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.6, object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + orderedmap@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" @@ -2900,6 +3429,11 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -2932,12 +3466,57 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== +postcss-js@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-mixins@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-9.0.4.tgz#75cd3cdb619a7e08c4c51ebb094db5f6d65b3831" + integrity sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA== + dependencies: + fast-glob "^3.2.11" + postcss-js "^4.0.0" + postcss-simple-vars "^7.0.0" + sugarss "^4.0.1" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-preset-mantine@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/postcss-preset-mantine/-/postcss-preset-mantine-1.11.0.tgz#57271f220069739504635b7e2c0af1156cf10ec0" + integrity sha512-drhCJAd8Rrn5ulRX5cP6DM6nMLrACAsBU73MfXNI3c77p4dodO36KcfEMY0WqaQkd/E2oODkTm7gVYOzjs45Gw== + dependencies: + postcss-mixins "^9.0.4" + postcss-nested "^6.0.1" + +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-simple-vars@^7.0.0, postcss-simple-vars@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz#836b3097a54dcd13dbd3c36a5dbdd512fad2954c" + integrity sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A== + +postcss@8.4.31, postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -3164,7 +3743,7 @@ react-countup@^6.4.2: "@rollup/plugin-babel" "^6.0.3" countup.js "^2.5.0" -react-dom@18.2.0: +react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -3172,13 +3751,11 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-dropzone@14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.2.3.tgz#0acab68308fda2d54d1273a1e626264e13d4e84b" - integrity sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug== +react-dropzone-esm@15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/react-dropzone-esm/-/react-dropzone-esm-15.0.1.tgz#8c689638aaa9feb5b2a429dd565acfa6792263e5" + integrity sha512-RdeGpqwHnoV/IlDFpQji7t7pTtlC2O1i/Br0LWkRZ9hYtLyce814S71h5NolnCZXsIN5wrZId6+8eQj2EBnEzg== dependencies: - attr-accept "^2.2.2" - file-selector "^0.6.0" prop-types "^15.8.1" react-is@^16.13.1, react-is@^16.7.0: @@ -3186,6 +3763,13 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-number-format@^5.2.2: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-number-format/-/react-number-format-5.3.1.tgz#840c257da9cb4b248990d8db46e4d23e8bac67ff" + integrity sha512-qpYcQLauIeEhCZUZY9jXZnnroOtdy3jYaS1zQ3M1Sr6r/KMOBEIGNIb7eKT19g2N1wbYgFgvDzs19hw5TrB8XQ== + dependencies: + prop-types "^15.7.2" + react-property@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.0.tgz#2156ba9d85fa4741faf1918b38efc1eae3c6a136" @@ -3199,10 +3783,10 @@ react-remove-scroll-bar@^2.3.4: react-style-singleton "^2.2.1" tslib "^2.0.0" -react-remove-scroll@^2.5.5: - version "2.5.6" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz#7510b8079e9c7eebe00e65a33daaa3aa29a10336" - integrity sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg== +react-remove-scroll@^2.5.6: + version "2.5.7" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" + integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== dependencies: react-remove-scroll-bar "^2.3.4" react-style-singleton "^2.2.1" @@ -3229,26 +3813,26 @@ react-style-singleton@^2.2.1: invariant "^2.2.4" tslib "^2.0.0" -react-textarea-autosize@8.3.4: - version "8.3.4" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" - integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== +react-textarea-autosize@8.5.3: + version "8.5.3" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz#d1e9fe760178413891484847d3378706052dd409" + integrity sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ== dependencies: - "@babel/runtime" "^7.10.2" + "@babel/runtime" "^7.20.13" use-composed-ref "^1.3.0" use-latest "^1.2.1" -react-transition-group@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" - integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== +react-transition-group@4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" loose-envify "^1.4.0" prop-types "^15.6.2" -react@18.2.0: +react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -3315,6 +3899,18 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" @@ -3325,7 +3921,7 @@ regenerator-runtime@^0.14.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== -regexp.prototype.flags@^1.5.1: +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== @@ -3354,6 +3950,11 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve@^1.10.0: version "1.22.6" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" @@ -3372,6 +3973,24 @@ resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -3435,7 +4054,12 @@ scheduler@^0.23.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^7.5.3: +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -3447,7 +4071,17 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-name@^2.0.0: +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== @@ -3569,6 +4203,21 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" + string.prototype.trim@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" @@ -3653,6 +4302,11 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +sugarss@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-4.0.1.tgz#128a783ed71ee0fc3b489ce1f7d5a89bc1e24383" + integrity sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -3732,6 +4386,11 @@ tabbable@^6.0.1: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + term-size@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" @@ -3793,6 +4452,21 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: version "2.6.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" @@ -3831,6 +4505,11 @@ type-fest@^2.19.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== +type-fest@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -3927,7 +4606,7 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -util-deprecate@~1.0.1: +util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -3971,6 +4650,34 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" @@ -3995,6 +4702,17 @@ which-typed-array@^1.1.11: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -4020,6 +4738,11 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" @@ -4099,8 +4822,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@3.21.4: - version "3.21.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== From a7614cd27b6dec8bf60c39aaffef5920691fd671 Mon Sep 17 00:00:00 2001 From: Kelvin Kiptum Kiprop Date: Tue, 21 Nov 2023 23:04:09 +0300 Subject: [PATCH 02/18] refactored layouts to match recommended layouts file structure by next docs 13 --- app/403.tsx | 76 - app/404.tsx | 86 - app/500.tsx | 74 - app/auth/layout.tsx | 39 + app/auth/password-reset/page.module.css | 42 + app/auth/password-reset/page.tsx | 53 + app/auth/password-reset/password-reset.tsx | 96 - app/auth/signin/page.module.css | 61 + app/auth/signin/page.tsx | 106 +- app/auth/signup/page.module.css | 61 + app/auth/signup/page.tsx | 132 +- app/calendar/page.css | 40 + app/calendar/page.tsx | 302 +- app/dashboard/analytics/page.tsx | 90 +- app/dashboard/default/page.tsx | 70 +- app/dashboard/layout.tsx | 84 + app/dashboard/saas/page.tsx | 55 + app/dashboard/sass/saas.tsx | 67 - app/error/403/page.module.css | 30 + app/error/403/page.tsx | 42 + app/error/404/page.module.css | 30 + app/error/404/page.tsx | 52 + app/error/500/page.module.css | 30 + app/error/500/page.tsx | 40 + .../Error/index.tsx => app/error/layout.tsx | 2 +- app/globals.css | 3 +- app/invoices/details/[id]/page.tsx | 70 +- app/invoices/details/page.tsx | 87 +- app/invoices/layout.tsx | 84 + app/invoices/list/page.tsx | 72 +- app/layout.tsx | 8 +- app/orders/layout.tsx | 84 + app/orders/page.tsx | 72 +- app/page.module.css | 4 +- app/page.tsx | 59 +- app/pages/blank/page.tsx | 64 +- app/pages/chat/page.module.css | 39 + app/pages/chat/page.tsx | 333 +- layout/App/index.tsx => app/pages/layout.tsx | 22 +- app/pages/pricing/page.tsx | 210 +- app/pages/profile/page.tsx | 365 +- app/pages/settings/page.tsx | 303 +- app/projects/layout.tsx | 84 + app/projects/page.tsx | 76 +- app/tasks/layout.tsx | 84 + app/tasks/page.tsx | 40 +- components/AddTaskCard/AddTaskCard.tsx | 2 +- components/AppMain/App.module.css | 9 + components/AppMain/AppMain.tsx | 17 + components/AppMain/index.ts | 1 + .../App => components}/AsideBar/AsideBar.tsx | 0 components/AsideBar/index.ts | 1 + components/ChatItem/ChatItem.module.css | 9 + components/ChatItem/ChatItem.tsx | 54 +- components/ChatsList/ChatsList.module.css | 5 +- components/ChatsList/ChatsList.tsx | 6 +- components/Faqs/Faqs.module.css | 33 + components/Faqs/Faqs.tsx | 33 +- components/FilterDateMenu/FilterDateMenu.tsx | 30 +- components/FooterNav/FooterNav.tsx | 62 + components/FooterNav/index.ts | 1 + .../HeaderNav/HeaderNav.tsx | 0 components/HeaderNav/index.ts | 1 + .../InvoiceDetailsCard/InvoiceDetailsCard.tsx | 285 +- components/InvoicesTable/InvoicesTable.tsx | 403 +- components/KanbanBoard/KanbanBoard.tsx | 616 +- ...nCard.styles.css => KanbanCard.module.css} | 1 - components/KanbanCard/KanbanCard.tsx | 371 +- components/KanbanColumn/KanbanColumn.tsx | 395 +- components/LanguagePicker/LanguagePicker.tsx | 4 +- components/LanguageTable/LanguageTable.tsx | 11 +- components/Logo/Logo.module.css | 1 + components/Logo/Logo.tsx | 2 +- components/MapChart/MapChart.tsx | 95 +- .../MobileDesktopChart/MobileDesktopChart.tsx | 141 +- .../Navigation/Links/Links.module.css | 0 .../Navigation/Links/Links.tsx | 0 .../Navigation/Navigation.module.css | 2 +- .../Navigation/Navigation.tsx | 8 +- components/Navigation/index.ts | 1 + components/OrdersTable/OrdersTable.tsx | 106 +- components/PageHeader/PageHeader.tsx | 127 +- components/PricingCard/PricingCard.tsx | 17 +- .../ProfileStatsCard/ProfileStatsCard.tsx | 12 +- components/ProjectsCard/ProjectsCard.tsx | 251 +- components/RevenueChart/RevenueChart.tsx | 121 +- components/SalesChart/SalesChart.tsx | 134 +- components/StatsCard/StatsCard.tsx | 11 +- components/Surface/Surface.tsx | 16 + components/Surface/index.ts | 1 + components/TextEditor/TextEditor.tsx | 82 + components/TextEditor/index.ts | 1 + components/TrafficTable/TrafficTable.tsx | 11 +- components/UserButton/UserButton.module.css | 4 +- components/UserButton/UserButton.tsx | 43 +- components/UserButton/index.ts | 1 + .../UserProfileCard/UserProfileCard.tsx | 54 +- components/index.ts | 68 +- layout/App/FooterNav/FooterNav.tsx | 69 - layout/Auth/index.tsx | 37 - layout/Guest/FooterNav/FooterNav.tsx | 8 +- layout/Guest/HeaderNav/HeaderNav.tsx | 126 +- layout/Guest/index.tsx | 34 +- layout/index.ts | 6 - mocks/ChatItems.json | 6 +- mocks/UserProfile.json | 6 +- mocks/WorldAtlasCountries.json | 1 + package.json | 13 +- public/chat-black.jpg | Bin 0 -> 39368 bytes public/chat-white.jpg | Bin 0 -> 17709 bytes routes/index.ts | 2 +- theme/theme.ts | 13 +- yarn.lock | 11578 +++++++++------- 113 files changed, 11067 insertions(+), 8415 deletions(-) delete mode 100644 app/403.tsx delete mode 100644 app/404.tsx delete mode 100644 app/500.tsx create mode 100644 app/auth/layout.tsx create mode 100644 app/auth/password-reset/page.module.css create mode 100644 app/auth/password-reset/page.tsx delete mode 100644 app/auth/password-reset/password-reset.tsx create mode 100644 app/auth/signin/page.module.css create mode 100644 app/auth/signup/page.module.css create mode 100644 app/calendar/page.css create mode 100644 app/dashboard/layout.tsx create mode 100644 app/dashboard/saas/page.tsx delete mode 100644 app/dashboard/sass/saas.tsx create mode 100644 app/error/403/page.module.css create mode 100644 app/error/403/page.tsx create mode 100644 app/error/404/page.module.css create mode 100644 app/error/404/page.tsx create mode 100644 app/error/500/page.module.css create mode 100644 app/error/500/page.tsx rename layout/Error/index.tsx => app/error/layout.tsx (89%) create mode 100644 app/invoices/layout.tsx create mode 100644 app/orders/layout.tsx create mode 100644 app/pages/chat/page.module.css rename layout/App/index.tsx => app/pages/layout.tsx (80%) create mode 100644 app/projects/layout.tsx create mode 100644 app/tasks/layout.tsx create mode 100644 components/AppMain/App.module.css create mode 100644 components/AppMain/AppMain.tsx create mode 100644 components/AppMain/index.ts rename {layout/App => components}/AsideBar/AsideBar.tsx (100%) create mode 100644 components/AsideBar/index.ts create mode 100644 components/ChatItem/ChatItem.module.css create mode 100644 components/Faqs/Faqs.module.css create mode 100644 components/FooterNav/FooterNav.tsx create mode 100644 components/FooterNav/index.ts rename {layout/App => components}/HeaderNav/HeaderNav.tsx (100%) create mode 100644 components/HeaderNav/index.ts rename components/KanbanCard/{KanbanCard.styles.css => KanbanCard.module.css} (96%) rename {layout/App => components}/Navigation/Links/Links.module.css (100%) rename {layout/App => components}/Navigation/Links/Links.tsx (100%) rename {layout/App => components}/Navigation/Navigation.module.css (88%) rename {layout/App => components}/Navigation/Navigation.tsx (94%) create mode 100644 components/Navigation/index.ts create mode 100644 components/Surface/Surface.tsx create mode 100644 components/Surface/index.ts create mode 100644 components/TextEditor/TextEditor.tsx create mode 100644 components/TextEditor/index.ts create mode 100644 components/UserButton/index.ts delete mode 100644 layout/App/FooterNav/FooterNav.tsx delete mode 100644 layout/Auth/index.tsx delete mode 100644 layout/index.ts create mode 100644 mocks/WorldAtlasCountries.json create mode 100644 public/chat-black.jpg create mode 100644 public/chat-white.jpg diff --git a/app/403.tsx b/app/403.tsx deleted file mode 100644 index 17b6040..0000000 --- a/app/403.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import {Button, createStyles, Group, rem, Stack, Text, Title} from '@mantine/core'; -import Head from "next/head"; -import React from "react"; -import {ErrorLayout} from "@/layout"; -import {IconChevronLeft} from "@tabler/icons-react"; -import {useRouter} from "next/router"; - -const useStyles = createStyles((theme) => ({ - root: { - paddingTop: rem(80), - paddingBottom: rem(80), - }, - - label: { - textAlign: 'center', - fontWeight: 900, - fontSize: rem(220), - lineHeight: 1, - color: theme.colorScheme === "dark" ? theme.colors.gray[0] : theme.colors.dark[0], - - [theme.fn.smallerThan('sm')]: { - fontSize: rem(120), - }, - }, - - title: { - textAlign: 'center', - fontWeight: 900, - fontSize: rem(38), - - [theme.fn.smallerThan('sm')]: { - fontSize: rem(32), - }, - }, - - description: { - maxWidth: rem(500), - margin: 'auto', - }, -})); - -function Error403() { - const {classes} = useStyles(); - const router = useRouter() - - return ( - <> - - Access Denied | DesignSparx - - - -
403
- Access Denied. - - The page you're trying to access has restricted access. Please refer to your system - administrator. - - - - -
-
- - ); -} - -export default Error403 diff --git a/app/404.tsx b/app/404.tsx deleted file mode 100644 index 9dbe28b..0000000 --- a/app/404.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import {Button, Center, createStyles, Group, rem, Stack, Text, Title} from '@mantine/core'; -import Head from "next/head"; -import React from "react"; -import Link from "next/link"; -import {PATH_DASHBOARD} from "@/routes"; -import {ErrorLayout} from "@/layout"; -import {IconChevronLeft, IconHome2} from "@tabler/icons-react"; -import {useRouter} from "next/router"; - -const useStyles = createStyles((theme) => ({ - root: { - paddingTop: rem(80), - paddingBottom: rem(80), - }, - - label: { - textAlign: 'center', - fontWeight: 900, - fontSize: rem(220), - lineHeight: 1, - color: theme.colorScheme === "dark" ? theme.colors.dark[4] : theme.colors.dark[2], - - [theme.fn.smallerThan('sm')]: { - fontSize: rem(120), - }, - }, - - title: { - textAlign: 'center', - fontWeight: 900, - fontSize: rem(38), - - [theme.fn.smallerThan('sm')]: { - fontSize: rem(32), - }, - }, - - description: { - maxWidth: rem(500), - margin: 'auto', - }, -})); - -function Error404() { - const {classes} = useStyles(); - const router = useRouter() - - return ( - <> - - Page Not Found | DesignSparx - - - -
404
- You have found a secret place. - - Unfortunately, this is only a 404 page. You may have mistyped the address, or the page has - been moved to another URL. - - - - - -
-
- - ); -} - -export default Error404 diff --git a/app/500.tsx b/app/500.tsx deleted file mode 100644 index b5a6de9..0000000 --- a/app/500.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import {Button, Center, createStyles, Group, rem, Stack, Text, Title} from '@mantine/core'; -import Head from "next/head"; -import React from "react"; -import {ErrorLayout} from "@/layout"; -import {IconHome2, IconRefresh, IconRefreshDot} from "@tabler/icons-react"; -import {useRouter} from "next/router"; -import {PATH_ERROR} from "@/routes"; - -const useStyles = createStyles((theme) => ({ - root: { - paddingTop: rem(80), - paddingBottom: rem(80), - }, - - label: { - textAlign: 'center', - fontWeight: 900, - fontSize: rem(220), - lineHeight: 1, - color: theme.colors[theme.primaryColor][6], - - [theme.fn.smallerThan('sm')]: { - fontSize: rem(120), - }, - }, - - title: { - textAlign: 'center', - fontWeight: 900, - fontSize: rem(38), - - [theme.fn.smallerThan('sm')]: { - fontSize: rem(32), - }, - }, - - description: { - maxWidth: rem(500), - margin: 'auto', - }, -})); - -function Error500() { - const {classes} = useStyles(); - const router = useRouter() - - return ( - <> - - Server Error | DesignSparx - - - -
500
- Sorry, unexpected error.. - - Our servers could not handle your request. Don't worry, our development team was already - notified. Try refreshing the page. - - - - - -
-
- - ); -} - -export default Error500 diff --git a/app/auth/layout.tsx b/app/auth/layout.tsx new file mode 100644 index 0000000..131c54a --- /dev/null +++ b/app/auth/layout.tsx @@ -0,0 +1,39 @@ +"use client" + +import {Center, Stack, useMantineTheme} from "@mantine/core"; +import Image from "next/image"; +import React, {ReactNode} from "react"; +import {useColorScheme} from "@mantine/hooks"; + +type AuthProps = { + children: ReactNode +} + +function AuthLayout ({children}: AuthProps) { + const theme = useMantineTheme() + const colorScheme = useColorScheme() + + return ( +
+ +
+ DesignSparx logo +
+ {children} +
+
+ ); +}; + +export default AuthLayout; diff --git a/app/auth/password-reset/page.module.css b/app/auth/password-reset/page.module.css new file mode 100644 index 0000000..911d2ee --- /dev/null +++ b/app/auth/password-reset/page.module.css @@ -0,0 +1,42 @@ +.card { + width: rem(420px); + margin-top: rem(15px); + padding: var(--mantine-spacing-lg); + border-radius: var(--mantine-radius-default); + box-shadow: var(--mantine-shadow-xl); + border: rem(1px) solid var(--mantine-color-gray-3); + + @media (max-width: $mantine-breakpoint-sm) { + width: rem(360px); + } +} + +.title { + font-size: rem(26px); + font-weight: 900; +} + +.controls { + @media (max-width: $mantine-breakpoint-sm) { + flex-direction: column-reverse; + align-items: center; + } +} + +.control { + padding: rem(6px) rem(10px); + border-radius: var(--mantine-radius-default); + font-weight: 500; + + @media (max-width: $mantine-breakpoint-sm) { + width: 1000%; + text-align: center; + } + + @mixin hover { + transition: all ease 150ms; + background-color: light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-4)); + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + text-decoration: none; + } +} diff --git a/app/auth/password-reset/page.tsx b/app/auth/password-reset/page.tsx new file mode 100644 index 0000000..ef004fa --- /dev/null +++ b/app/auth/password-reset/page.tsx @@ -0,0 +1,53 @@ +"use client" + +import {Button, Group, Paper, rem, Text, TextInput, Title, UnstyledButton} from '@mantine/core'; +import {IconChevronLeft} from '@tabler/icons-react'; +import React from "react"; +import Link from "next/link"; +import {PATH_AUTH, PATH_DASHBOARD} from "@/routes"; +import {useMediaQuery} from "@mantine/hooks"; +import classes from "./page.module.css"; +import {Surface} from "@/components"; +import {Metadata} from "next"; + +const metadata: Metadata = { + title: "Password Reset | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Page() { + const mobile_match = useMediaQuery('(max-width: 425px)'); + + return ( + <> + + Forgot your password? + + + Enter your email to get a reset link + + + + + + + + + Back to the login page + + + + + + + ); +} + +export default Page diff --git a/app/auth/password-reset/password-reset.tsx b/app/auth/password-reset/password-reset.tsx deleted file mode 100644 index 1dc81ea..0000000 --- a/app/auth/password-reset/password-reset.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import { - Button, - Center, - createStyles, - Group, - Paper, - rem, - Stack, - Text, - TextInput, TextProps, - Title, - UnstyledButton -} from '@mantine/core'; -import {IconChevronLeft} from '@tabler/icons-react'; -import Head from "next/head"; -import React from "react"; -import Link from "next/link"; -import {PATH_AUTH, PATH_DASHBOARD} from "@/routes"; -import {AuthLayout} from "@/layout"; -import {useMediaQuery} from "@mantine/hooks"; - -const useStyles = createStyles((theme) => ({ - title: { - fontSize: rem(26), - fontWeight: 900, - fontFamily: `Greycliff CF, ${theme.fontFamily}`, - }, - - controls: { - [theme.fn.smallerThan('xs')]: { - flexDirection: 'column-reverse', - alignItems: 'center' - }, - }, - - control: { - padding: `${rem(6)} ${rem(10)}`, - borderRadius: theme.radius.sm, - fontWeight: 500, - - [theme.fn.smallerThan('xs')]: { - width: '100%', - textAlign: 'center', - }, - - '&:hover': { - transition: 'all ease 150ms', - backgroundColor: theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[2], - color: theme.black, - textDecoration: 'none' - } - }, -})); - -function PasswordReset() { - const {classes, theme} = useStyles(); - const mobile_match = useMediaQuery('(max-width: 425px)'); - - return ( - <> - - Password reset | DesignSparx - - - - Forgot your password? - - - Enter your email to get a reset link - - - - - - - - - Back to the login page - - - - - - - - ); -} - -export default PasswordReset diff --git a/app/auth/signin/page.module.css b/app/auth/signin/page.module.css new file mode 100644 index 0000000..24e87a0 --- /dev/null +++ b/app/auth/signin/page.module.css @@ -0,0 +1,61 @@ +.card { + width: rem(420px); + margin-top: rem(15px); + padding: var(--mantine-spacing-lg); + border-radius: var(--mantine-radius-default); + box-shadow: var(--mantine-shadow-xl); + border: rem(1px) solid var(--mantine-color-gray-3); + + @mixin light { + background-color: var(--mantine-color-gray-0); + color: var(--mantine-color-black) + } + + @mixin dark { + background-color: var(--mantine-color-dark-7); + color: var(--mantine-color-white); + } + + @media (max-width: $mantine-breakpoint-sm) { + width: rem(360); + } +} + +.link { + padding: rem(6px) rem(10px); + border-radius: var(--mantine-radius-default); + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + font-weight: 500; + + @mixin light { + color: var(--mantine-color-black) + } + + @mixin dark { + color: var(--mantine-color-white); + } + + @mixin hover { + background-color: light-dark(var(--mantine-color-dark-5), var(--mantine-color-gray-2)); + text-decoration: none; + transition: all ease 150ms; + + @mixin light { + background-color: var(--mantine-color-gray-2); + } + + @mixin dark { + background-color: var(--mantine-color-dark-4); + } + } +} + +.label { + @mixin light { + color: var(--mantine-color-black); + } + + @mixin dark { + color: var(--mantine-color-white); + } +} diff --git a/app/auth/signin/page.tsx b/app/auth/signin/page.tsx index 56f950a..fe8c207 100644 --- a/app/auth/signin/page.tsx +++ b/app/auth/signin/page.tsx @@ -1,72 +1,50 @@ -import React from 'react'; -import { - Button, Center, - Checkbox, - Group, - Paper, - PasswordInput, - rem, - Text, - TextInput, TextProps, - Title, useMantineTheme, -} from "@mantine/core"; -import Head from "next/head"; +"use client" + +import {Button, Center, Checkbox, Group, Paper, PasswordInput, Text, TextInput, TextProps, Title,} from "@mantine/core"; import Link from "next/link"; import {PATH_AUTH, PATH_DASHBOARD} from "@/routes"; -import {AuthLayout} from "@/layout"; -import {useMediaQuery} from "@mantine/hooks"; - -function Signin() { - const theme = useMantineTheme() - const mobile_match = useMediaQuery('(max-width: 425px)'); +import {Metadata} from "next"; +import {Surface} from "@/components"; +import classes from "./page.module.css"; - const LINK_PROPS: TextProps = { - sx: { - padding: `${rem(6)} ${rem(10)}`, - borderRadius: theme.radius.sm, - fontWeight: 500, +const metadata: Metadata = { + title: "Signin | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; - '&:hover': { - transition: 'all ease 150ms', - backgroundColor: theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[2], - color: theme.black, - textDecoration: 'none' - } - } - } +function Page() { + const LINK_PROPS: TextProps = { + className: classes.link + } - return ( - <> - - Signin | DesignSparx - - - - Welcome back! - - Sign in to your account to continue + return ( + <> + + Welcome back! + + Sign in to your account to continue - - - - - - - Forgot password? - - - -
- - Do not have an account yet? Create account - -
-
-
- - ); + + + + + + + Forgot password? + + + +
+ + Do not have an account yet? Create account + +
+
+ + ); } -export default Signin; +export default Page; diff --git a/app/auth/signup/page.module.css b/app/auth/signup/page.module.css new file mode 100644 index 0000000..24e87a0 --- /dev/null +++ b/app/auth/signup/page.module.css @@ -0,0 +1,61 @@ +.card { + width: rem(420px); + margin-top: rem(15px); + padding: var(--mantine-spacing-lg); + border-radius: var(--mantine-radius-default); + box-shadow: var(--mantine-shadow-xl); + border: rem(1px) solid var(--mantine-color-gray-3); + + @mixin light { + background-color: var(--mantine-color-gray-0); + color: var(--mantine-color-black) + } + + @mixin dark { + background-color: var(--mantine-color-dark-7); + color: var(--mantine-color-white); + } + + @media (max-width: $mantine-breakpoint-sm) { + width: rem(360); + } +} + +.link { + padding: rem(6px) rem(10px); + border-radius: var(--mantine-radius-default); + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + font-weight: 500; + + @mixin light { + color: var(--mantine-color-black) + } + + @mixin dark { + color: var(--mantine-color-white); + } + + @mixin hover { + background-color: light-dark(var(--mantine-color-dark-5), var(--mantine-color-gray-2)); + text-decoration: none; + transition: all ease 150ms; + + @mixin light { + background-color: var(--mantine-color-gray-2); + } + + @mixin dark { + background-color: var(--mantine-color-dark-4); + } + } +} + +.label { + @mixin light { + color: var(--mantine-color-black); + } + + @mixin dark { + color: var(--mantine-color-white); + } +} diff --git a/app/auth/signup/page.tsx b/app/auth/signup/page.tsx index e1671fc..9e49da4 100644 --- a/app/auth/signup/page.tsx +++ b/app/auth/signup/page.tsx @@ -1,82 +1,72 @@ -import React from 'react'; +"use client" + import { - Button, - Center, - Flex, - Paper, - PasswordInput, - rem, - Text, - TextInput, TextProps, - Title, useMantineTheme + Button, + Center, + Flex, + Paper, + PasswordInput, + Text, + TextInput, + TextProps, + Title, + useMantineTheme } from "@mantine/core"; -import Head from "next/head"; import Link from "next/link"; import {PATH_AUTH, PATH_DASHBOARD} from "@/routes"; -import {AuthLayout} from "@/layout"; -import {useMediaQuery} from "@mantine/hooks"; +import {useColorScheme, useMediaQuery} from "@mantine/hooks"; +import {Metadata} from "next"; +import {Surface} from "@/components"; +import classes from "./page.module.css"; -function Signin() { - const theme = useMantineTheme(); - const mobile_match = useMediaQuery('(max-width: 425px)'); +const metadata: Metadata = { + title: "Signup | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; - const LINK_PROPS: TextProps = { - sx: { - padding: `${rem(6)} ${rem(10)}`, - borderRadius: theme.radius.sm, - fontWeight: 500, +function Page() { + const theme = useMantineTheme(); + const colorScheme = useColorScheme() + const mobile_match = useMediaQuery('(max-width: 425px)'); - '&:hover': { - transition: 'all ease 150ms', - backgroundColor: theme.colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[2], - color: theme.black, - textDecoration: 'none' - } - } - } + const LINK_PROPS: TextProps = { + className: classes.link + } - return ( - <> - - Create account | DesignSparx - - - - Welcome! - - Create your account to continue + return ( + <> + + Welcome! + + Create your account to continue - - - - - - - - - -
- - Already have an account? Sign in - -
-
-
- - ); + + + + + + + + + +
+ + Already have an account? Sign in + +
+
+ + ); } -export default Signin; +export default Page; diff --git a/app/calendar/page.css b/app/calendar/page.css new file mode 100644 index 0000000..bc2ed56 --- /dev/null +++ b/app/calendar/page.css @@ -0,0 +1,40 @@ +/*Had to avoid using page.module.css naming conventions as I need to override the styles below*/ + +.fc-event-bg-color, .fc-event-main, .fc-v-event, .fc-h-event { + background-color: var(--mantine-primary-color-filled); + border-color: var(--mantine-primary-color-filled); +} + +.fc-button { + text-transform: capitalize !important; + font-weight: 600; + background-color: var(--mantine-primary-color-filled) !important; + border-color: var(--mantine-primary-color-filled) !important; +} + +.fc .fc-button-primary:hover { + background-color: var(--mantine-primary-color-filled-hover) !important; + border-color: var(--mantine-primary-color-filled-hover) !important; +} + +.fc .fc-button-primary:disabled { + background-color: var(--mantine-primary-color-light); + border-color: var(--mantine-primary-color-light); + cursor: not-allowed; +} + +.active button, .fc .fc-button-primary:not(:disabled).fc-button-active, .fc .fc-button-primary:not(:disabled):active { + background-color: var(--mantine-primary-color-filled-hover); + border-color: var(--mantine-primary-color-filled-hover); +} + +.fc-toolbar-title { + font-size: 20px; +} + +.fc .fc-toolbar { + @media (max-width: em(768px)) { + flex-direction: column; + gap: 8px; + } +} diff --git a/app/calendar/page.tsx b/app/calendar/page.tsx index af069e5..3ef6362 100644 --- a/app/calendar/page.tsx +++ b/app/calendar/page.tsx @@ -1,210 +1,160 @@ -import React, {useEffect, useState} from 'react'; -import Head from "next/head"; -import { - Anchor, - Breadcrumbs, - Container, - createPolymorphicComponent, - createStyles, - Paper, PaperProps, - Stack, - Text, - Title, - useMantineTheme -} from "@mantine/core"; +"use client" + +import React, {useState} from 'react'; +import {Anchor, Container, Paper, Stack} from "@mantine/core"; import {formatDate} from '@fullcalendar/core' import FullCalendar from '@fullcalendar/react' import dayGridPlugin from '@fullcalendar/daygrid' import timeGridPlugin from '@fullcalendar/timegrid' import interactionPlugin from '@fullcalendar/interaction' -import styled from '@emotion/styled'; import {PATH_DASHBOARD} from "@/routes"; import {createEventId, INITIAL_EVENTS} from "@/utils"; import {AppLayout} from "@/layout"; -import {PageHeader} from "@/components"; +import {PageHeader, Surface} from "@/components"; +import {Metadata} from "next"; +import "./page.css"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Calendar', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Calendar', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); -const _StylePaper = styled(Paper)` - .fc-event-bg-color, .fc-event-main, .fc-v-event, .fc-h-event { - background-color: ${({theme}) => (theme.colors[theme.primaryColor][7])}; - border-color: ${({theme}) => (theme.colors[theme.primaryColor][7])}; - } - - .fc-button { - text-transform: capitalize; - font-weight: 600; - background-color: ${({theme}) => (theme.colors[theme.primaryColor][7])}; - border-color: ${({theme}) => (theme.colors[theme.primaryColor][7])}; - } - - .fc .fc-button-primary:hover { - background-color: ${({theme}) => (theme.colors[theme.primaryColor][9])}; - border-color: ${({theme}) => (theme.colors[theme.primaryColor][9])}; - } - - .fc .fc-button-primary:disabled { - background-color: ${({theme}) => (theme.colors[theme.primaryColor][4])}; - border-color: ${({theme}) => (theme.colors[theme.primaryColor][4])}; - cursor: not-allowed; - } - - //active button - .fc .fc-button-primary:not(:disabled).fc-button-active, .fc .fc-button-primary:not(:disabled):active { - background-color: ${({theme}) => (theme.colors[theme.primaryColor][9])}; - border-color: ${({theme}) => (theme.colors[theme.primaryColor][9])}; - } - - .fc-toolbar-title { - font-size: 20px; - } - - @media only screen and (max-width: 768px) { - .fc .fc-toolbar { - flex-direction: column; - gap: 8px; - } - } -` -const StyledPaper = createPolymorphicComponent<'div', PaperProps>(_StylePaper) - function renderEventContent(eventInfo: any) { - return ( - <> - {eventInfo.timeText} - {eventInfo.event.title} - - ) + return ( + <> + {eventInfo.timeText} + {eventInfo.event.title} + + ) } function renderSidebarEvent(event: any) { - return ( -
  • - {formatDate(event.start, {year: 'numeric', month: 'short', day: 'numeric'})} - {event.title} -
  • - ) + return ( +
  • + {formatDate(event.start, {year: 'numeric', month: 'short', day: 'numeric'})} + {event.title} +
  • + ) } +const metadata: Metadata = { + title: "Calendar | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function Calendar() { - const [weekendsVisible, setWeekendsVisible] = useState(true); - const [currentEvents, setCurrentEvents] = useState([]); + const [weekendsVisible, setWeekendsVisible] = useState(true); + const [currentEvents, setCurrentEvents] = useState([]); - const handleWeekendsToggle = () => { - setWeekendsVisible(!weekendsVisible) - } + const handleWeekendsToggle = () => { + setWeekendsVisible(!weekendsVisible) + } - const handleDateSelect = (selectInfo: any) => { - let title = prompt('Please enter a new title for your event') - let calendarApi = selectInfo.view.calendar + const handleDateSelect = (selectInfo: any) => { + let title = prompt('Please enter a new title for your event') + let calendarApi = selectInfo.view.calendar - calendarApi.unselect() // clear date selection + calendarApi.unselect() // clear date selection - if (title) { - calendarApi.addEvent({ - id: createEventId(), - title, - start: selectInfo.startStr, - end: selectInfo.endStr, - allDay: selectInfo.allDay - }) - } - } - - const handleEventClick = (clickInfo: any) => { - if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) { - clickInfo.event.remove() - } + if (title) { + calendarApi.addEvent({ + id: createEventId(), + title, + start: selectInfo.startStr, + end: selectInfo.endStr, + allDay: selectInfo.allDay + }) } + } - const handleEvents = (events: any) => { - setCurrentEvents(events) + const handleEventClick = (clickInfo: any) => { + if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) { + clickInfo.event.remove() } + } - const renderSidebar = () => { - return ( -
    -
    -

    Instructions

    -
      -
    • Select dates and you will be prompted to create a new event
    • -
    • Drag, drop, and resize events
    • -
    • Click an event to delete it
    • -
    -
    -
    - -
    -
    -

    All Events ({currentEvents.length})

    -
      - {currentEvents.map(renderSidebarEvent)} -
    -
    -
    - ) - } + const handleEvents = (events: any) => { + setCurrentEvents(events) + } + const renderSidebar = () => { return ( - <> - - Calendar | DesignSparx - - - - - - - +
    +

    Instructions

    +
      +
    • Select dates and you will be prompted to create a new event
    • +
    • Drag, drop, and resize events
    • +
    • Click an event to delete it
    • +
    +
    +
    + +
    +
    +

    All Events ({currentEvents.length})

    +
      + {currentEvents.map(renderSidebarEvent)} +
    +
    + + ) + } - // called after events are initialized/added/changed/removed - /* you can update a remote database when these fire: - eventAdd={function(){}} - eventChange={function(){}} - eventRemove={function(){}} - */ - /> -
    -
    -
    -
    - - ); + return ( + <> + + + + + + + + + + + + ); } export default Calendar; diff --git a/app/dashboard/analytics/page.tsx b/app/dashboard/analytics/page.tsx index 90110e9..1258425 100644 --- a/app/dashboard/analytics/page.tsx +++ b/app/dashboard/analytics/page.tsx @@ -1,6 +1,5 @@ -import React from 'react'; -import Head from "next/head"; -import {AppLayout} from "@/layout"; +"use client" + import {Container, Grid, PaperProps, rem, SimpleGrid, Stack, useMantineTheme} from "@mantine/core"; import { LanguageTable, @@ -14,54 +13,59 @@ import { import StatsData from "../../../mocks/StatsGrid.json"; import LanguagesData from "../../../mocks/Languages.json"; import TrafficData from "../../../mocks/Traffic.json"; +import {Metadata} from "next"; + +const metadata: Metadata = { + title: "Analytics Dashboard | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; const PRIMARY_COL_HEIGHT = rem(300); const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - style: {height: '100%'} + p: "md", + shadow: "md", + radius: "md", + style: {height: '100%'} } function Page() { - const theme = useMantineTheme(); - const SECONDARY_COL_HEIGHT = `calc(${PRIMARY_COL_HEIGHT} / 2 - ${theme.spacing.md} / 2)`; + const theme = useMantineTheme(); + const SECONDARY_COL_HEIGHT = `calc(${PRIMARY_COL_HEIGHT} / 2 - var(--mantine-spacing-md) / 2)`; - return ( - <> - - Page Dashboard | DesignSparx - - - - - - - - {StatsData?.data.map(s => )} - - - - - - - - - - - - - - - - - - - - - - ); + return ( + <> + + + + + + {StatsData?.data.map(s => )} + + + + + + + + + + + + + + + + + + + + + ); } export default Page; diff --git a/app/dashboard/default/page.tsx b/app/dashboard/default/page.tsx index 9eb16d4..2af54dc 100644 --- a/app/dashboard/default/page.tsx +++ b/app/dashboard/default/page.tsx @@ -20,48 +20,46 @@ const PAPER_PROPS: PaperProps = { } const metadata: Metadata = { - title: "Page Dashboard | DesignSparx", + title: "Default Dashboard | DesignSparx", description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", }; function Page() { return ( <> - - - - - - - - - - - - - - - - - - - Tasks - - - - - - - - - + + + + + + + + + + + + + + + + + + Tasks + + + + + + + + ); } diff --git a/app/dashboard/layout.tsx b/app/dashboard/layout.tsx new file mode 100644 index 0000000..afd0ebb --- /dev/null +++ b/app/dashboard/layout.tsx @@ -0,0 +1,84 @@ +"use client" + +import {ActionIcon, Affix, AppShell, Container, rem, useMantineTheme,} from '@mantine/core'; +import React, {useState} from 'react'; +import {useColorScheme, useDisclosure, useMediaQuery} from "@mantine/hooks"; +import {ThemeDrawer} from "@/components"; +import {IconPaint} from "@tabler/icons-react"; +import AppMain from "@/components/AppMain"; +import Navigation from "@/components/Navigation"; +import HeaderNav from "@/components/HeaderNav"; +import FooterNav from "@/components/FooterNav"; + +type Props = { + children: React.ReactNode; +}; + +function DashboardLayout({children}: Props) { + const theme = useMantineTheme() + const colorScheme = useColorScheme() + const [opened, setOpened] = useState(false); + const [themeOpened, {open: themeOpen, close: themeClose}] = useDisclosure(false); + const tablet_match = useMediaQuery('(max-width: 768px)'); + const [mobileOpened, {toggle: toggleMobile}] = useDisclosure(); + const [desktopOpened, {toggle: toggleDesktop}] = useDisclosure(true); + + return ( + + + + setOpened((o) => !o)} + desktopOpened={desktopOpened} + mobileOpened={mobileOpened} + toggleDesktop={toggleDesktop} + toggleMobile={toggleMobile} + /> + + + + setOpened(false)}/> + + + + {children} + + + + + + + + + + + + + + + ); +} + +export default DashboardLayout; diff --git a/app/dashboard/saas/page.tsx b/app/dashboard/saas/page.tsx new file mode 100644 index 0000000..f7e2fec --- /dev/null +++ b/app/dashboard/saas/page.tsx @@ -0,0 +1,55 @@ +"use client" + +import {Button, Container, Grid, Group, Paper, PaperProps, Stack, Text,} from "@mantine/core"; +import {IconChevronRight} from "@tabler/icons-react"; +import {MapChart, PageHeader, ProjectsTable, RevenueChart, SalesChart, StatsGrid} from "@/components"; +import StatsData from "../../../mocks/StatsGrid.json" +import ProjectsData from "../../../mocks/Projects.json" +import {Metadata} from "next"; + +const metadata: Metadata = { + title: "Saas Dashboard | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +const PAPER_PROPS: PaperProps = { + p: "md", + shadow: "md", + radius: "md", + style: {height: '100%'} +} + +function Page() { + return ( + <> + + + + + + + + + + + + + + + + + + Tasks + + + + + + + + + + ); +} + +export default Page; diff --git a/app/dashboard/sass/saas.tsx b/app/dashboard/sass/saas.tsx deleted file mode 100644 index 62d63bd..0000000 --- a/app/dashboard/sass/saas.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import Head from "next/head"; -import { - ActionIcon, - Button, - Container, - Divider, - Grid, - Group, - Paper, - PaperProps, - Stack, - Text, - Title, -} from "@mantine/core"; -import {IconChevronRight, IconRefresh} from "@tabler/icons-react"; -import {FilterDateMenu, MapChart, PageHeader, ProjectsTable, RevenueChart, SalesChart, StatsGrid} from "@/components"; -import StatsData from "../../../mocks/StatsGrid.json" -import ProjectsData from "../../../mocks/Projects.json" -import {AppLayout} from "@/layout"; - -const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - sx: {height: '100%'} -} - -function Saas() { - return ( - <> - - Saas Dashboard | DesignSparx - - - - - - - - - - - - - - - - - - - - Tasks - - - - - - - - - - - ); -} - -export default Saas; diff --git a/app/error/403/page.module.css b/app/error/403/page.module.css new file mode 100644 index 0000000..ffb9a3f --- /dev/null +++ b/app/error/403/page.module.css @@ -0,0 +1,30 @@ +.root { + padding: rem(80px) 0; +} + +.label { + text-align: center; + font-weight: 900; + font-size: rem(220px); + line-height: 1; + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + + @media (max-width: $mantine-breakpoint-sm) { + font-size: rem(120px); + } +} + +.title { + text-align: center; + font-weight: 900; + font-size: rem(38px); + + @media (max-width: $mantine-breakpoint-sm) { + font-size: rem(32px); + } +} + +.description { + max-width: rem(500px); + margin: auto; +} diff --git a/app/error/403/page.tsx b/app/error/403/page.tsx new file mode 100644 index 0000000..a826383 --- /dev/null +++ b/app/error/403/page.tsx @@ -0,0 +1,42 @@ +"use client" + +import {Button, Group, Stack, Text, Title} from '@mantine/core'; +import {IconChevronLeft} from "@tabler/icons-react"; +import {useRouter} from "next/navigation"; +import classes from "./page.module.css"; +import {Metadata} from "next"; + +const metadata: Metadata = { + title: "Access Denied | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Error403() { + const router = useRouter() + + return ( + <> + +
    403
    + Access Denied. + + The page you're trying to access has restricted access. Please refer to your system + administrator. + + + + +
    + + ); +} + +export default Error403 diff --git a/app/error/404/page.module.css b/app/error/404/page.module.css new file mode 100644 index 0000000..ffb9a3f --- /dev/null +++ b/app/error/404/page.module.css @@ -0,0 +1,30 @@ +.root { + padding: rem(80px) 0; +} + +.label { + text-align: center; + font-weight: 900; + font-size: rem(220px); + line-height: 1; + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + + @media (max-width: $mantine-breakpoint-sm) { + font-size: rem(120px); + } +} + +.title { + text-align: center; + font-weight: 900; + font-size: rem(38px); + + @media (max-width: $mantine-breakpoint-sm) { + font-size: rem(32px); + } +} + +.description { + max-width: rem(500px); + margin: auto; +} diff --git a/app/error/404/page.tsx b/app/error/404/page.tsx new file mode 100644 index 0000000..c75f7c2 --- /dev/null +++ b/app/error/404/page.tsx @@ -0,0 +1,52 @@ +"use client" + +import {Button, Group, Stack, Text, Title} from '@mantine/core'; +import Link from "next/link"; +import {PATH_DASHBOARD} from "@/routes"; +import {IconChevronLeft, IconHome2} from "@tabler/icons-react"; +import {useRouter} from "next/navigation"; +import classes from "./page.module.css" +import {Metadata} from "next"; + +const metadata: Metadata = { + title: "Page Not Found | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Error404() { + const router = useRouter() + + return ( + <> + +
    404
    + You have found a secret place. + + Unfortunately, this is only a 404 page. You may have mistyped the address, or the page has + been moved to another URL. + + + + + +
    + + ); +} + +export default Error404 diff --git a/app/error/500/page.module.css b/app/error/500/page.module.css new file mode 100644 index 0000000..ffb9a3f --- /dev/null +++ b/app/error/500/page.module.css @@ -0,0 +1,30 @@ +.root { + padding: rem(80px) 0; +} + +.label { + text-align: center; + font-weight: 900; + font-size: rem(220px); + line-height: 1; + color: light-dark(var(--mantine-color-black), var(--mantine-color-white)); + + @media (max-width: $mantine-breakpoint-sm) { + font-size: rem(120px); + } +} + +.title { + text-align: center; + font-weight: 900; + font-size: rem(38px); + + @media (max-width: $mantine-breakpoint-sm) { + font-size: rem(32px); + } +} + +.description { + max-width: rem(500px); + margin: auto; +} diff --git a/app/error/500/page.tsx b/app/error/500/page.tsx new file mode 100644 index 0000000..c890932 --- /dev/null +++ b/app/error/500/page.tsx @@ -0,0 +1,40 @@ +"use client" + +import {Button, Group, Stack, Text, Title} from '@mantine/core'; +import {IconHome2, IconRefresh} from "@tabler/icons-react"; +import {useRouter} from "next/navigation"; +import {PATH_ERROR} from "@/routes"; +import classes from "./page.module.css" +import {Metadata} from "next"; + +const metadata: Metadata = { + title: "Server Error | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Error500() { + const router = useRouter() + + return ( + <> + +
    500
    + Sorry, unexpected error.. + + Our servers could not handle your request. Don't worry, our development team was already + notified. Try refreshing the page. + + + + + +
    + + ); +} + +export default Error500 diff --git a/layout/Error/index.tsx b/app/error/layout.tsx similarity index 89% rename from layout/Error/index.tsx rename to app/error/layout.tsx index 7b6ff70..f04a987 100644 --- a/layout/Error/index.tsx +++ b/app/error/layout.tsx @@ -5,7 +5,7 @@ type ErrorProps = { children: ReactNode } -const ErrorLayout = ({children}: ErrorProps) => { +function ErrorLayout ({children}: ErrorProps) { const theme = useMantineTheme() return ( diff --git a/app/globals.css b/app/globals.css index 999a1ec..126e80d 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,5 +1,4 @@ -/* 👇 Make sure the styles are applied in the correct order */ -@layer mantine, mantine-datatable; +@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap'); html, body { } diff --git a/app/invoices/details/[id]/page.tsx b/app/invoices/details/[id]/page.tsx index 05d0aa7..99c6e42 100644 --- a/app/invoices/details/[id]/page.tsx +++ b/app/invoices/details/[id]/page.tsx @@ -1,55 +1,51 @@ +"use client" + import React, {useEffect, useState} from 'react'; -import Head from "next/head"; -import {AppLayout} from "@/layout"; import {Anchor, Container, PaperProps, Stack} from "@mantine/core"; import {InvoiceDetailsCard, PageHeader} from "@/components"; -import InvoicesData from "@/mocks/Invoices.json"; import {PATH_DASHBOARD, PATH_INVOICES} from "@/routes"; -import {useRouter} from "next/router"; import {Invoices} from "@/types"; +import InvoicesData from "@/mocks/Invoices.json"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Invoices', href: PATH_INVOICES.invoices.all}, - {title: 'Details', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Invoices', href: PATH_INVOICES.invoices.all}, + {title: 'Details', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", + p: "md", + shadow: "md", + radius: "md", } -function InvoiceDetails() { - const router = useRouter() - const [selectedData, setSelectedData] = useState(); +function InvoiceDetails({params}: { params: { id: string } }) { + const [selectedData, setSelectedData] = useState(); - useEffect(() => { - setSelectedData(InvoicesData.find(_ => _.id === router.query.id)) - }, [router, InvoicesData]); + useEffect(() => { + setSelectedData(InvoicesData.find(_ => _.id === params.id)) + }, [InvoicesData, params]); - return ( - <> - - Invoice - {selectedData?.id} | DesignSparx - - - - - - - - - - - ); + return ( + <> + + Invoice - {selectedData ? selectedData?.id : "No invoice found"} | DesignSparx + + + + + + + + + ); } export default InvoiceDetails; diff --git a/app/invoices/details/page.tsx b/app/invoices/details/page.tsx index 32ab853..e9ccabd 100644 --- a/app/invoices/details/page.tsx +++ b/app/invoices/details/page.tsx @@ -1,62 +1,63 @@ -import React from 'react'; -import Head from "next/head"; +"use client" + import {Anchor, Container, PaperProps, Stack} from "@mantine/core"; import {InvoiceDetailsCard, PageHeader} from "@/components"; import {PATH_DASHBOARD, PATH_INVOICES} from "@/routes"; import {AppLayout} from "@/layout"; +import {Metadata} from "next"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Invoices', href: PATH_INVOICES.invoices.all}, - {title: 'Details', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Invoices', href: PATH_INVOICES.invoices.all}, + {title: 'Details', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); const sampleData = { - "id": "8677a3e2-dde3-4d04-8edd-9d0bcf178f89", - "full_name": "Dannie MacTrustie", - "email": "atysack2r@washingtonpost.com", - "address": "5160 Iowa Point", - "country": "China", - "status": "approved", - "amount": 6221.88, - "issue_date": "7/12/2022", - "description": "In quis justo. Maecenas rhoncus aliquam lacus. Morbi quis tortor id nulla ultrices aliquet.\n\nMaecenas leo odio, condimentum id, luctus nec, molestie sed, justo. Pellentesque viverra pede ac diam. Cras pellentesque volutpat dui.\n\nMaecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.\n\nNullam porttitor lacus at turpis. Donec posuere metus vitae ipsum. Aliquam non mauris.\n\nMorbi non lectus. Aliquam sit amet diam in magna bibendum imperdiet. Nullam orci pede, venenatis non, sodales sed, tincidunt eu, felis.", - "client_email": "atysack2r@illinois.edu", - "client_address": "13 Loeprich Point", - "client_country": "Russia", - "client_name": "Alayne Tysack", - "client_company": "Raynor and Sons" + "id": "8677a3e2-dde3-4d04-8edd-9d0bcf178f89", + "full_name": "Dannie MacTrustie", + "email": "atysack2r@washingtonpost.com", + "address": "5160 Iowa Point", + "country": "China", + "status": "approved", + "amount": 6221.88, + "issue_date": "7/12/2022", + "description": "In quis justo. Maecenas rhoncus aliquam lacus. Morbi quis tortor id nulla ultrices aliquet.\n\nMaecenas leo odio, condimentum id, luctus nec, molestie sed, justo. Pellentesque viverra pede ac diam. Cras pellentesque volutpat dui.\n\nMaecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.\n\nNullam porttitor lacus at turpis. Donec posuere metus vitae ipsum. Aliquam non mauris.\n\nMorbi non lectus. Aliquam sit amet diam in magna bibendum imperdiet. Nullam orci pede, venenatis non, sodales sed, tincidunt eu, felis.", + "client_email": "atysack2r@illinois.edu", + "client_address": "13 Loeprich Point", + "client_country": "Russia", + "client_name": "Alayne Tysack", + "client_company": "Raynor and Sons" } const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", + p: "md", + shadow: "md", + radius: "md", } +const metadata: Metadata = { + title: "Sample Invoice | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function SampleInvoiceDetails() { - return ( - <> - - Invoice - {sampleData.id} | DesignSparx - - - - - - - - - - - ); + return ( + <> + + + + + + + + ); } export default SampleInvoiceDetails; diff --git a/app/invoices/layout.tsx b/app/invoices/layout.tsx new file mode 100644 index 0000000..7589904 --- /dev/null +++ b/app/invoices/layout.tsx @@ -0,0 +1,84 @@ +"use client" + +import {ActionIcon, Affix, AppShell, Container, rem, useMantineTheme,} from '@mantine/core'; +import React, {useState} from 'react'; +import {useColorScheme, useDisclosure, useMediaQuery} from "@mantine/hooks"; +import {ThemeDrawer} from "@/components"; +import {IconPaint} from "@tabler/icons-react"; +import AppMain from "@/components/AppMain"; +import Navigation from "@/components/Navigation"; +import HeaderNav from "@/components/HeaderNav"; +import FooterNav from "@/components/FooterNav"; + +type Props = { + children: React.ReactNode; +}; + +function InvoiceLayout({children}: Props) { + const theme = useMantineTheme() + const colorScheme = useColorScheme() + const [opened, setOpened] = useState(false); + const [themeOpened, {open: themeOpen, close: themeClose}] = useDisclosure(false); + const tablet_match = useMediaQuery('(max-width: 768px)'); + const [mobileOpened, {toggle: toggleMobile}] = useDisclosure(); + const [desktopOpened, {toggle: toggleDesktop}] = useDisclosure(true); + + return ( + + + + setOpened((o) => !o)} + desktopOpened={desktopOpened} + mobileOpened={mobileOpened} + toggleDesktop={toggleDesktop} + toggleMobile={toggleMobile} + /> + + + + setOpened(false)}/> + + + + {children} + + + + + + + + + + + + + + + ); +} + +export default InvoiceLayout; diff --git a/app/invoices/list/page.tsx b/app/invoices/list/page.tsx index 72b13b6..0cac185 100644 --- a/app/invoices/list/page.tsx +++ b/app/invoices/list/page.tsx @@ -1,51 +1,51 @@ -import React from 'react'; -import Head from "next/head"; +"use client" + import {ActionIcon, Anchor, Container, Group, Paper, PaperProps, Stack, Text} from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; import {InvoicesTable, PageHeader} from "@/components"; import InvoicesData from "../../../mocks/Invoices.json"; -import {AppLayout} from "@/layout"; import {IconDotsVertical} from "@tabler/icons-react"; +import {Metadata} from "next"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Invoices', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Invoices', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", + p: "md", + shadow: "md", + radius: "md", } -function List() { - return ( - <> - - Invoices | DesignSparx - - - - - - - - Invoices - - - - - - - - - - - ); +const metadata: Metadata = { + title: "Invoices | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Page() { + return ( + <> + + + + + + Invoices + + + + + + + + + + ); } -export default List; +export default Page; diff --git a/app/layout.tsx b/app/layout.tsx index 5b1b8ad..ca8e519 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,13 +1,17 @@ +"use client" + import type {Metadata} from "next"; import {ColorSchemeScript, MantineProvider} from "@mantine/core"; import {ModalsProvider} from "@mantine/modals"; import {Notifications} from "@mantine/notifications"; import {Open_Sans} from 'next/font/google' +import {myTheme} from "@/theme/theme"; import "@mantine/core/styles.css"; import "@mantine/dates/styles.css"; +import '@mantine/tiptap/styles.css'; +import '@mantine/carousel/styles.css'; import 'mantine-datatable/styles.layer.css'; import "./globals.css"; -import {myTheme} from "@/theme/theme"; // If loading a variable font, you don't need to specify the font weight const openSans = Open_Sans({ @@ -15,7 +19,7 @@ const openSans = Open_Sans({ display: 'swap', }) -export const metadata: Metadata = { +const metadata: Metadata = { title: "DesignSparx - Nextjs Mantine Dashboard", description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", }; diff --git a/app/orders/layout.tsx b/app/orders/layout.tsx new file mode 100644 index 0000000..435a231 --- /dev/null +++ b/app/orders/layout.tsx @@ -0,0 +1,84 @@ +"use client" + +import {ActionIcon, Affix, AppShell, Container, rem, useMantineTheme,} from '@mantine/core'; +import React, {useState} from 'react'; +import {useColorScheme, useDisclosure, useMediaQuery} from "@mantine/hooks"; +import {ThemeDrawer} from "@/components"; +import {IconPaint} from "@tabler/icons-react"; +import AppMain from "@/components/AppMain"; +import Navigation from "@/components/Navigation"; +import HeaderNav from "@/components/HeaderNav"; +import FooterNav from "@/components/FooterNav"; + +type Props = { + children: React.ReactNode; +}; + +function OrdersLayout({children}: Props) { + const theme = useMantineTheme() + const colorScheme = useColorScheme() + const [opened, setOpened] = useState(false); + const [themeOpened, {open: themeOpen, close: themeClose}] = useDisclosure(false); + const tablet_match = useMediaQuery('(max-width: 768px)'); + const [mobileOpened, {toggle: toggleMobile}] = useDisclosure(); + const [desktopOpened, {toggle: toggleDesktop}] = useDisclosure(true); + + return ( + + + + setOpened((o) => !o)} + desktopOpened={desktopOpened} + mobileOpened={mobileOpened} + toggleDesktop={toggleDesktop} + toggleMobile={toggleMobile} + /> + + + + setOpened(false)}/> + + + + {children} + + + + + + + + + + + + + + + ); +} + +export default OrdersLayout; diff --git a/app/orders/page.tsx b/app/orders/page.tsx index 2a1f8ef..ca583ab 100644 --- a/app/orders/page.tsx +++ b/app/orders/page.tsx @@ -1,51 +1,51 @@ -import React from 'react'; -import Head from "next/head"; -import {AppLayout} from "@/layout"; +"use client" + import {ActionIcon, Anchor, Container, Group, Paper, PaperProps, Stack, Text} from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; import {OrdersTable, PageHeader} from "@/components"; import OrdersData from "../../mocks/Orders.json"; import {IconDotsVertical} from "@tabler/icons-react"; +import {Metadata} from "next"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Orders', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Orders', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", + p: "md", + shadow: "md", + radius: "md", } -function Orders() { - return ( - <> - - Orders | DesignSparx - - - - - - - - Orders - - - - - - - - - - - ); +const metadata: Metadata = { + title: "Orders | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + +function Page() { + return ( + <> + + + + + + Orders + + + + + + + + + + ); } -export default Orders; +export default Page; diff --git a/app/page.module.css b/app/page.module.css index 08e4199..e88bb95 100644 --- a/app/page.module.css +++ b/app/page.module.css @@ -21,7 +21,7 @@ } .highlight { - color: var(--mantine-color-blue-5); + color: var(--mantine-primary-color-filled); } @@ -62,7 +62,7 @@ } .statsTitle{ - color: var(--mantine-color-blue-7) + color: var(--mantine-primary-color-filled) } .contactPaper{ diff --git a/app/page.tsx b/app/page.tsx index ccd6b0e..d1deacc 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,7 +1,6 @@ "use client" import Head from 'next/head' -import {GuestLayout} from "@/layout"; import { Badge, Box, @@ -15,7 +14,6 @@ import { Image, Paper, PaperProps, - rem, SimpleGrid, Spoiler, Stack, @@ -23,21 +21,24 @@ import { ThemeIcon, ThemeIconProps, Title, - Tooltip, UnstyledButton, useMantineTheme + Tooltip, + UnstyledButton } from "@mantine/core"; import Link from "next/link"; import {PATH_DASHBOARD, PATH_DOCS} from "@/routes"; import { - IconAdjustmentsHorizontal, IconArrowRight, IconBook, IconChevronDown, IconChevronUp, + IconAdjustmentsHorizontal, + IconArrowRight, + IconBook, IconColorSwatch, IconDevices, IconFolderCode, IconScaleOutline, IconSettingsCog } from "@tabler/icons-react"; -import React from "react"; import CountUp from "react-countup"; import {useMediaQuery} from "@mantine/hooks"; +import GuestLayout from "@/layout/Guest"; import classes from "./page.module.css" const TECH_STACK = [ @@ -102,10 +103,13 @@ export default function Home() { The simplest and fastest way to build your next{' '} Mantine UI{' '} + &{' '} + + Nextjs{' '} dashboard or app. - Design Sparx comes with hundreds of UI elements, forms, tables, charts, pages and + This template comes with hundreds of UI elements, forms, tables, charts, pages and icons that helps you to create your web apps or applications faster. - } - hideLabel={ - + showLabel="Show more" + hideLabel="Hide" + styles={ + {control: {color: "white", margin: '4px 8px'}} } > - + {TECH_STACK.map(t => @@ -203,7 +193,7 @@ export default function Home() { gap={{base: 'sm', sm: 'lg'}} justify={{sm: 'center'}} > - <CountUp end={100}/>+ + <CountUp end={100}/>+ Components and widgets @@ -214,7 +204,7 @@ export default function Home() { gap={{base: 'sm', sm: 'lg'}} justify={{sm: 'center'}} > - + Optimized to work for most devices @@ -225,7 +215,7 @@ export default function Home() { gap={{base: 'sm', sm: 'lg'}} justify={{sm: 'center'}} > - + Customize it to meet your brand's identity @@ -262,17 +252,6 @@ export default function Home() { - {/**/} - {/* We build it, you rock it!*/} - {/* Start focusing on your goals, by spending less time creating pages using*/} - {/* our examples.*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/**/} Key features diff --git a/app/pages/blank/page.tsx b/app/pages/blank/page.tsx index c893daf..cdb893a 100644 --- a/app/pages/blank/page.tsx +++ b/app/pages/blank/page.tsx @@ -1,45 +1,45 @@ -import React from 'react'; -import Head from "next/head"; -import {Anchor, Breadcrumbs, Container, Paper, PaperProps, Stack, Text, Title} from "@mantine/core"; +"use client" + +import {Anchor, Container, Paper, PaperProps, Stack, Text} from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; -import {AppLayout} from "@/layout"; -import {PageHeader} from "@/components"; +import {PageHeader, Surface} from "@/components"; +import {Metadata} from "next"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Pages', href: '#'}, - {title: 'Blank', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Pages', href: '#'}, + {title: 'Blank', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", + p: "md", + shadow: "md", + radius: "md", } +const metadata: Metadata = { + title: "Blank page | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function Pricing() { - return ( - <> - - Blank page | DesignSparx - - - - - - - Empty card header - Empty card text - - - - - - ); + return ( + <> + + + + + Empty card header + Empty card text + + + + + ); } export default Pricing; diff --git a/app/pages/chat/page.module.css b/app/pages/chat/page.module.css new file mode 100644 index 0000000..be6f9f6 --- /dev/null +++ b/app/pages/chat/page.module.css @@ -0,0 +1,39 @@ +.chatItems { + @mixin light { + background-image: linear-gradient(to top, #d5d4d0 0%, #d5d4d0 1%, #eeeeec 31%, #efeeec 75%, #e9e9e7 100%); + } + + @mixin dark { + background-image: linear-gradient(to right, #868f96 0%, #596164 100%); + } +} + +.chatHeader { + padding: var(--mantine-spacing-sm) var(--mantine-spacing-md); + border-top-right-radius: var(--mantine-radius-default); + border-bottom: 1px solid var(--mantine-color-gray-0); + + @mixin light { + background-color: var(--mantine-color-white); + } + + @mixin dark { + background-color: var(--mantine-color-black); + } +} + +.user { + border-radius: var(--mantine-radius-default) +} + +.replyBox { + padding: var(--mantine-spacing-sm); + + @mixin light { + background-color: var(--mantine-color-white); + } + + @mixin dark { + background-color: var(--mantine-color-black); + } +} diff --git a/app/pages/chat/page.tsx b/app/pages/chat/page.tsx index 1bcef42..0d7c6d9 100644 --- a/app/pages/chat/page.tsx +++ b/app/pages/chat/page.tsx @@ -1,176 +1,199 @@ -import React from 'react'; -import Head from "next/head"; +"use client" + import { - ActionIcon, - Anchor, - Box, Button, - Container, - Divider, - Flex, - Grid, - Paper, PaperProps, - rem, - ScrollArea, - Stack, - TextInput, Tooltip, - useMantineTheme + ActionIcon, + Anchor, + Box, + Container, + Divider, + Flex, + Grid, + Paper, + PaperProps, + rem, + ScrollArea, + Stack, + TextInput, + Tooltip, + useMantineTheme } from "@mantine/core"; -import {RichTextEditor, Link} from '@mantine/tiptap'; -import {useEditor, BubbleMenu} from '@tiptap/react'; +import {Link, RichTextEditor} from '@mantine/tiptap'; +import {BubbleMenu, useEditor} from '@tiptap/react'; import StarterKit from '@tiptap/starter-kit'; import Placeholder from '@tiptap/extension-placeholder'; import {PATH_DASHBOARD} from "@/routes"; -import {ChatItem, ChatsList, PageHeader} from "@/components"; -import {IconSearch, IconSend} from "@tabler/icons-react"; -import ChatsListData from "../../mocks/ChatsList.json" -import ChatItemsData from "../../mocks/ChatItems.json" -import {AppLayout} from "@/layout"; -import {useMediaQuery} from "@mantine/hooks"; +import {ChatItem, ChatsList, PageHeader, Surface, UserButton} from "@/components"; +import {IconDotsVertical, IconSearch, IconSend} from "@tabler/icons-react"; +import {useColorScheme, useMediaQuery} from "@mantine/hooks"; import {Carousel} from "@mantine/carousel"; +import {Metadata} from "next"; +import ChatsListData from "@/mocks/ChatsList.json" +import ChatItemsData from "@/mocks/ChatItems.json" +import UserProfileData from ".././../../mocks/UserProfile.json"; + +import classes from "./page.module.css"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Pages', href: '#'}, - {title: 'Chat', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Pages', href: '#'}, + {title: 'Chat', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); -const ICON_SIZE = 18; +const ICON_SIZE = 16; const PAPER_PROPS: PaperProps = { - shadow: "md", - radius: "md", + shadow: "md", + radius: "md", } +const metadata: Metadata = { + title: "Chats | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function Chat() { - const theme = useMantineTheme(); - const tablet_match = useMediaQuery('(max-width: 768px)'); - const editor = useEditor({ - extensions: [StarterKit, Link, Placeholder.configure({placeholder: 'Type your message'})], - content: '

    Select some text to see bubble menu

    ', - }); + const theme = useMantineTheme(); + const colorScheme = useColorScheme() + const tablet_match = useMediaQuery('(max-width: 768px)'); + const editor = useEditor({ + extensions: [StarterKit, Link, Placeholder.configure({placeholder: 'Type your message'})], + content: '

    Type your message here. Select some text to see a bubble menu

    ', + }); - return ( - <> - - Chats | DesignSparx - - - - - - - - - - - } - /> - - {tablet_match ? - <> - - {ChatsListData.map(c => - - - - )} - - - : - {ChatsListData.map(c => - - )} - - } - - - - - - - {ChatItemsData.map(c => - - )} - - - - - - - {editor && ( - - - - - - - - )} - - - - - - - - - - - - - + return ( + <> + + + + + + + + + } + /> + + {tablet_match ? + <> + + {ChatsListData.map(c => + + + + )} + + + : + {ChatsListData.map(c => + + )} + + } + + + + + + + + + + + + + + + + + + + + {ChatItemsData.map(c => + + )} - - - - ); + + + + + + {editor && ( + + + + + + + + )} + + + + + + + + + +
    + + + + + + + ); } export default Chat; diff --git a/layout/App/index.tsx b/app/pages/layout.tsx similarity index 80% rename from layout/App/index.tsx rename to app/pages/layout.tsx index 6138dcc..b3049d6 100644 --- a/layout/App/index.tsx +++ b/app/pages/layout.tsx @@ -1,22 +1,24 @@ "use client" -import {ActionIcon, Affix, AppShell, Box, Container, rem, useMantineTheme,} from '@mantine/core'; +import {ActionIcon, Affix, AppShell, Container, rem, useMantineTheme,} from '@mantine/core'; import React, {useState} from 'react'; -import Navigation from "@/layout/App/Navigation/Navigation"; -import HeaderNav from "@/layout/App/HeaderNav/HeaderNav"; -import {useDisclosure, useMediaQuery} from "@mantine/hooks"; +import {useColorScheme, useDisclosure, useMediaQuery} from "@mantine/hooks"; import {ThemeDrawer} from "@/components"; -import FooterNav from "@/layout/App/FooterNav/FooterNav"; import {IconPaint} from "@tabler/icons-react"; +import AppMain from "@/components/AppMain"; +import Navigation from "@/components/Navigation"; +import HeaderNav from "@/components/HeaderNav"; +import FooterNav from "@/components/FooterNav"; type Props = { children: React.ReactNode; }; -function AppLayout({children}: Props) { +function PagesLayout({children}: Props) { + const theme = useMantineTheme() + const colorScheme = useColorScheme() const [opened, setOpened] = useState(false); const [themeOpened, {open: themeOpen, close: themeClose}] = useDisclosure(false); - const theme = useMantineTheme() const tablet_match = useMediaQuery('(max-width: 768px)'); const [mobileOpened, {toggle: toggleMobile}] = useDisclosure(); const [desktopOpened, {toggle: toggleDesktop}] = useDisclosure(true); @@ -51,9 +53,9 @@ function AppLayout({children}: Props) { setOpened(false)}/> - + {children} - + ( - - {item.title} - + + {item.title} + )); -const ICON_SIZE = 18; +const ICON_SIZE = 16; const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - sx: {height: '100%'} + p: "md", + shadow: "md", + radius: "md", + style: {height: '100%'} } const PRICING = [ - { - tier: 'basic', - price: { - month: 0, - year: 0 - }, - features: ['Rich landing pages', '100+ components'], - preferred: false, - actionText: 'start for free', - description: 'All the basics for starting a new business' + { + tier: 'basic', + price: { + month: 0, + year: 0 }, - { - tier: 'standard', - price: { - month: 25, - year: 45 - }, - features: ['Rich landing pages', '100+ components', 'Flexible licensing', 'Speedy build tooling', '6 months free support'], - preferred: true, - actionText: 'start with standard', - description: 'Everything you need for a growing business' + features: ['Rich landing pages', '100+ components'], + preferred: false, + actionText: 'start for free', + description: 'All the basics for starting a new business' + }, + { + tier: 'standard', + price: { + month: 25, + year: 45 }, - { - tier: 'premium', - price: { - month: 40, - year: 70 - }, - features: ['Rich landing pages', '100+ components', 'Flexible licensing', 'Speedy build tooling', '6 months free support', '256-bit encryption', 'Guaranteed 100% uptime', 'Unlimited users'], - preferred: false, - actionText: 'start with premium', - description: 'Advanced features for scaling your business' + features: ['Rich landing pages', '100+ components', 'Flexible licensing', 'Speedy build tooling', '6 months free support'], + preferred: true, + actionText: 'start with standard', + description: 'Everything you need for a growing business' + }, + { + tier: 'premium', + price: { + month: 40, + year: 70 }, + features: ['Rich landing pages', '100+ components', 'Flexible licensing', 'Speedy build tooling', '6 months free support', '256-bit encryption', 'Guaranteed 100% uptime', 'Unlimited users'], + preferred: false, + actionText: 'start with premium', + description: 'Advanced features for scaling your business' + }, ] +const metadata: Metadata = { + title: "Pricing | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function Pricing() { - const [checked, setChecked] = useState(false); - const pricingItems = PRICING.map(p => ) + const [checked, setChecked] = useState(false); + const pricingItems = PRICING.map(p => ) - return ( - <> - - Pricing | DesignSparx - - - - - - - - Simple, fair pricing. - All types of businesses need access to development - resources, so we give you the option to decide how much you need to use. - - Annual - setChecked(event.currentTarget.checked)} - /> - Monthly - - - - {pricingItems} - - - - - - Still have questions? - - - - - - - - ); + return ( + <> + + + + + + Simple, fair pricing. + All types of businesses need access to development + resources, so we give you the option to decide how much you need to use. + + Annual + setChecked(event.currentTarget.checked)} + /> + Monthly + + + + + {pricingItems} + + + + + + + Still have questions? + + + + + + + ); } export default Pricing; diff --git a/app/pages/profile/page.tsx b/app/pages/profile/page.tsx index cc3b091..a0b8753 100644 --- a/app/pages/profile/page.tsx +++ b/app/pages/profile/page.tsx @@ -1,208 +1,205 @@ -import React from 'react'; -import Head from "next/head"; +"use client" + import { - ActionIcon, - Anchor, AnchorProps, - Badge, - Breadcrumbs, - Container, - Divider, - Flex, - Grid, - Group, - Paper, PaperProps, - Progress, rem, - SimpleGrid, - Stack, - Text, ThemeIcon, - Title, UnstyledButton, useMantineTheme + ActionIcon, + Anchor, + Badge, + Container, + Grid, + Group, + Paper, + PaperProps, + rem, + SimpleGrid, + Stack, + Text, + UnstyledButton, + useMantineTheme } from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; import {PageHeader, ProfileStatsCard, ProjectsTable, RevenueChart, UserProfileCard} from "@/components"; -import UserData from "../../mocks/UserProfile.json"; import { - IconBrandFacebook, - IconBrandGithub, - IconBrandLinkedin, - IconBrandTwitter, - IconHome, - IconMapPinFilled, - IconListCheck, - IconBusinessplan, IconCoins, IconDotsVertical + IconBrandFacebook, + IconBrandGithub, + IconBrandLinkedin, + IconBrandTwitter, + IconBusinessplan, + IconCoins, + IconDotsVertical, + IconHome, + IconListCheck, + IconMapPinFilled } from "@tabler/icons-react"; import ProjectsData from "@/mocks/Projects.json"; -import {AppLayout} from "@/layout"; +import UserData from "@/mocks/UserProfile.json"; +import {Metadata} from "next"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Pages', href: '#'}, - {title: 'Profile', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Pages', href: '#'}, + {title: 'Profile', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); -const ICON_SIZE = 18; +const ICON_SIZE = 16; const skills = ['React', 'Mantine', 'Figma', 'Bootstrap', 'Typescript', 'Sass/SCSS'] const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - sx: {height: '100%'} + p: "md", + shadow: "md", + radius: "md", + style: {height: '100%'} } +const metadata: Metadata = { + title: "Profile | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function Profile() { - const theme = useMantineTheme(); - const linkProps = { - target: "_blank", - sx: { - borderRadius: theme.radius.md, - padding: `${rem(4)} ${rem(8)}`, + const theme = useMantineTheme(); + const linkProps = { + target: "_blank", + style: { + borderRadius: theme.radius.md, + padding: `${rem(4)} ${rem(8)}`, - '&:hover': { - transition: 'all ease 150ms', - backgroundColor: theme.colors.gray[3], - color: theme.black, - textDecoration: 'none' - } - } - }; + '&:hover': { + transition: 'all ease 150ms', + backgroundColor: theme.colors.gray[3], + color: theme.black, + textDecoration: 'none' + } + } + }; - return ( - <> - - Profile | DesignSparx - - - - - - - - - - - Skills - - {skills.map(s => {s})} - - - - - About - - - Lives in Nairobi, Kenya - - - - Works at Company ABC - - - - - - Social - - - - Facebook - - - - - - Twitter - - - - - - LinkedIn - - - - - - Github - - - - - - - - - - - - - - - - - Projects - - - - - - - - - - - - - - ); + return ( + <> + + + + + + + + + Skills + + {skills.map(s => {s})} + + + + + About + + + Lives in Nairobi, Kenya + + + + Works at Company ABC + + + + + + Social + + + + Facebook + + + + + + Twitter + + + + + + LinkedIn + + + + + + Github + + + + + + + + + + + + + + + + + Projects + + + + + + + + + + + + + ); } export default Profile; diff --git a/app/pages/settings/page.tsx b/app/pages/settings/page.tsx index 3ce6c5a..91f9c16 100644 --- a/app/pages/settings/page.tsx +++ b/app/pages/settings/page.tsx @@ -1,169 +1,172 @@ +"use client" + import React, {useState} from 'react'; -import Head from "next/head"; import { - Anchor, Box, - Breadcrumbs, - Button, - Container, - FileButton, - Grid, - Group, - Image, - Paper, PaperProps, - Stack, - Text, - Textarea, - TextInput, - Title + Anchor, + Box, + Button, + Container, + FileButton, + Grid, + Group, + Image, + Paper, + PaperProps, + Stack, + Text, + TextInput } from "@mantine/core"; import {PATH_DASHBOARD} from "@/routes"; import {useForm} from "@mantine/form"; -import {IconCloudUpload} from "@tabler/icons-react"; -import {AppLayout} from "@/layout"; -import {PageHeader} from "@/components"; +import {IconCloudUpload, IconDeviceFloppy} from "@tabler/icons-react"; +import {PageHeader, Surface, TextEditor} from "@/components"; +import {Metadata} from "next"; const items = [ - {title: 'Dashboard', href: PATH_DASHBOARD.default}, - {title: 'Pages', href: '#'}, - {title: 'Settings', href: '#'}, + {title: 'Dashboard', href: PATH_DASHBOARD.default}, + {title: 'Pages', href: '#'}, + {title: 'Settings', href: '#'}, ].map((item, index) => ( - - {item.title} - + + {item.title} + )); -const ICON_SIZE = 18; +const ICON_SIZE = 16; const PAPER_PROPS: PaperProps = { - p: "md", - shadow: "md", - radius: "md", - sx: {height: '100%'} + p: "md", + shadow: "md", + radius: "md", + style: {height: '100%'} } +const BIO = "A dynamic software engineering graduate from Nairobi, Kenya with 5+ years of experience. Passionate about turning creative sparks into seamless applications through technological experimentation. Experienced in crafting intuitive solutions and translating innovative concepts into user-friendly applications. Thrives on transforming the way we experience technology, one line of code at a time.\n" + + "\n" + + "Enthusiastic pioneer, constantly seeking the next big thing in tech. Eager to apply my passion and skills at Alternate Limited to bring ideas to life." + +const metadata: Metadata = { + title: "Settings | DesignSparx", + description: "Explore our versatile dashboard website template featuring a stunning array of themes and meticulously crafted components. Elevate your web project with seamless integration, customizable themes, and a rich variety of components for a dynamic user experience. Effortlessly bring your data to life with our intuitive dashboard template, designed to streamline development and captivate users. Discover endless possibilities in design and functionality today!", +}; + function Settings() { - const [file, setFile] = useState(null); - const accountForm = useForm({ - initialValues: { - username: 'kelvinkiprop', - biograghy: 'I\'m a software engineering graduate with a passion for transforming ideas into simple applications. I love experimenting with new technologies. Right now, I\'m working on building and shipping business automation solutions at Alternate Limited.\n', - }, - }); - const accountInfoForm = useForm({ - initialValues: { - firstname: 'kelvin', - lastname: 'kiprop', - email: 'kelvin.kiprop96@gmail.com', - address: '', - apartment: '', - city: '', - state: '', - zip: '' - }, - }); + const [file, setFile] = useState(null); + + const accountForm = useForm({ + initialValues: { + username: 'kelvinkiprop', + biograghy: 'A dynamic software engineering graduate from Nairobi, Kenya with 5+ years of experience. Passionate about turning creative sparks into seamless applications through technological experimentation. Experienced in crafting intuitive solutions and translating innovative concepts into user-friendly applications. Thrives on transforming the way we experience technology, one line of code at a time.\n' + + '\n' + + 'Enthusiastic pioneer, constantly seeking the next big thing in tech. Eager to apply my passion and skills at Alternate Limited to bring ideas to life.', + }, + }); + + const accountInfoForm = useForm({ + initialValues: { + firstname: 'kelvin', + lastname: 'kiprop', + email: 'kelvin.kiprop96@gmail.com', + address: '', + apartment: '', + city: '', + state: '', + zip: '' + }, + }); - return ( - <> - - Settings | DesignSparx - - - - - - - User information - - - - -