From 6211f9579fc3d90e432dc137560d31576b089e6a Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Thu, 17 Oct 2024 12:13:40 +0100 Subject: [PATCH 01/10] Student credentials table --- package.json | 2 + src/components/StudentCredentialsTable.tsx | 527 ++++++------- src/images/logo_cfl.png | Bin 0 -> 28845 bytes .../classes/class/CreateStudentsForm.tsx | 2 +- .../class/ResetStudentsPasswordDialog.tsx | 1 + .../StudentsCredentials.tsx | 106 ++- .../updateStudentUser/UpdatePasswordForm.tsx | 1 + yarn.lock | 704 +++++++++++++++++- 8 files changed, 995 insertions(+), 348 deletions(-) create mode 100644 src/images/logo_cfl.png diff --git a/package.json b/package.json index c90f36f..2bf8c7f 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ }, "devDependencies": { "@eslint/js": "^9.9.0", + "@react-pdf/renderer": "^4.0.0", "@testing-library/dom": "^9.3.4", "@testing-library/jest-dom": "^6.2.0", "@testing-library/react": "^14.1.2", @@ -39,6 +40,7 @@ "@types/qs": "^6.9.7", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", + "@types/react-pdf": "^7.0.0", "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-istanbul": "^1.6.0", "@vitest/ui": "^1.6.0", diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index 49a0896..45bd854 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -1,280 +1,202 @@ -// Disable error checking until component is implemented. -/* eslint-disable */ -// @ts-nocheck - -// import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" +import * as tables from "codeforlife/components/table" +import { Button, Stack, Typography } from "@mui/material" +import { type Class, type Student, type User } from "codeforlife/api" import { - Box, - Stack, - Table, - TableBody, - TableCell, - type TableCellProps, - TableHead, - TableRow, - type TableRowProps, - Typography, - typographyClasses, - useTheme, -} from "@mui/material" -import { type Class, type Student, type StudentUser } from "codeforlife/api" + Document, + Image, + Page, + StyleSheet, + Text, + View, + pdf, +} from "@react-pdf/renderer" +import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" +import React, { type FC } from "react" import { CopyIconButton } from "codeforlife/components" -import { type FC } from "react" import { generatePath } from "react-router-dom" import { primary } from "codeforlife/theme/colors" -import { type ListUsersResult } from "../api/user" +import CflLogo from "../images/logo_cfl.png" import { paths } from "../routes" -// import React from "react" -// import { -// Document, -// Image, -// Page, -// StyleSheet, -// Text, -// View, -// } from "@react-pdf/renderer" -// import CflLogo from "../../images/cfl_logo.png" - -// const styles = StyleSheet.create({ -// mainView: { -// border: "2px solid black", -// display: "flex", -// flexDirection: "row", -// gap: 5, -// padding: 10, -// }, -// page: { -// padding: 20, -// }, -// text: { -// marginBottom: 5, -// fontSize: 12, -// }, -// image: { -// width: 100, -// height: 100, -// }, -// }) - -// interface StudentInfo { -// name: string -// password: string -// classLoginLink: string -// loginUrl: string -// } -// const MyDocument: React.FC<{ -// studentsInfo: StudentInfo[] -// classLoginLink: string -// }> = ({ studentsInfo, classLoginLink }) => ( -// -// -// {studentsInfo.map((student: StudentInfo) => ( -// -// -// -// -// -// -// Please ensure students keep login details in a secure place -// -// -// Directly login with {student.loginUrl} -// -// OR class link: {classLoginLink} -// Name: {student.name} -// Password: {student.password} -// -// -// ))} -// -// -// ) - -// interface StudentInfo { -// name: string -// password: string -// classLoginLink: string -// loginUrl: string -// } +function makeAutoLoginLink( + classLoginLink: string, + student: Pick & { + user: Pick + }, +) { + return ( + `${classLoginLink}?` + + new URLSearchParams({ + id: String(student.id), + agp: student.auto_gen_password, + }).toString() + ) +} -// const DownloadButtonCSV: React.FC = () => { -// const generateCSV: ( -// studentsInfo: StudentInfo[], -// classLoginLink: string, -// ) => string = (studentsInfo, classLoginLink) => { -// let csvContent = "Name,Password,Class Link,Login URL\n" -// studentsInfo.forEach(student => { -// csvContent += `${student.name},${student.password},${classLoginLink},${student.loginUrl}\n` -// }) -// return csvContent -// } -// const location = useLocation() -// const { studentsInfo } = location.state.updatedStudentCredentials -// const { classLoginLink } = location.state.updatedStudentCredentials +const PDFstyles = StyleSheet.create({ + mainView: { + border: "2px solid black", + display: "flex", + flexDirection: "row", + gap: 5, + padding: 10, + }, + page: { + padding: 20, + }, + text: { + marginBottom: 5, + fontSize: 12, + }, + image: { + width: 85, + height: 70, + }, +}) -// const downloadCSV: () => void = () => { -// const csvContent = generateCSV(studentsInfo, classLoginLink) -// const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }) -// const url = URL.createObjectURL(blob) -// const linkRef = React.useRef(null) -// if (linkRef.current) { -// linkRef.current.href = url -// linkRef.current.download = "data.csv" -// linkRef.current.click() -// } -// URL.revokeObjectURL(url) -// } +const StudentCredentialsPDF: FC<{ + students: StudentCredentialsTableProps["students"] + classLoginLink: string +}> = ({ students, classLoginLink }) => ( + + + + Please ensure students keep login details in a secure place + + {students.map(student => ( + + + + {/*TODO: Auto login link is too long and doesn't fit in PDF.*/} + + Directly log in with {makeAutoLoginLink(classLoginLink, student)} + + OR class link: {classLoginLink} + Name: {student.user.first_name} + + Password: {student.user.password} + + + + ))} + + +) -// return ( -// -// ) -// } +const DownloadPDFButton: FC = ({ + classId, + students, +}) => { + const classLoginLink = generatePath(paths.login.student.class._, { classId }) + const linkRef = React.useRef(null) -// export const DownloadButtonPDF: FC<{ isButtonBanner?: boolean }> = ({ -// isButtonBanner, -// }) => { -// const location = useLocation() -// const { studentsInfo, classLoginLink } = location.state.updatedStudentCredentials -// const linkRef = React.useRef(null) + const downloadPdf = async (): Promise => { + try { + const blob = await pdf( + , + ).toBlob() + const url = URL.createObjectURL(blob) -// const downloadPdf = async (): Promise => { -// try { -// const blob = await pdf( -// , -// ).toBlob() -// const url = URL.createObjectURL(blob) + if (linkRef.current) { + linkRef.current.href = url + linkRef.current.click() + URL.revokeObjectURL(url) + } + } catch (error) { + console.error(error) + } + } -// if (linkRef.current) { -// linkRef.current.href = url -// linkRef.current.download = "document.pdf" -// linkRef.current.click() -// URL.revokeObjectURL(url) -// } -// } catch (error) { -// console.error(error) -// } -// } -// const buttonStyles = !isButtonBanner -// ? {} -// : { -// sx: { -// border: "2px solid black", -// "&:hover": { -// border: "2px solid black", -// }, -// }, -// } + return ( + <> + + {/* Invisible anchor tag to trigger the download */} + + + ) +} -// return ( -// <> -// -// {/* Invisible anchor tag to trigger the download */} -// -// -// ) -// } +const DownloadCSVButton: FC = ({ + classId, + students, +}) => { + const generateCSV: ( + students: StudentCredentialsTableProps["students"], + classLoginLink: string, + ) => string = (students, classLoginLink) => { + let csvContent = "Name,Password,Class Link,Login URL\n" + students.forEach(student => { + csvContent += `${student.user.first_name},${student.user.password},${classLoginLink},${makeAutoLoginLink(classLoginLink, student)}\n` + }) + return csvContent + } + const classLoginLink = generatePath(paths.login.student.class._, { classId }) + const linkRef = React.useRef(null) -const WhiteTableCell: React.FC = ({ - style, - ...otherTableCellProps -}) => ( - -) + const downloadCSV: () => void = () => { + const csvContent = generateCSV(students, classLoginLink) + const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }) + const url = URL.createObjectURL(blob) -const HeadRowTableCell: React.FC = props => ( - - - - - -
-
-) + if (linkRef.current) { + linkRef.current.href = url + linkRef.current.download = "data.csv" + linkRef.current.click() + } + URL.revokeObjectURL(url) + } -const BodyRowTableCell: React.FC = props => ( - - - - - -
-
-) + return ( + <> + + {/* Invisible anchor tag to trigger the download */} + + + ) +} export interface StudentCredentialsTableProps { classId: Class["id"] - studentUsers: Array< - Pick & { - student: Pick + students: Array< + Pick & { + user: Pick } > } const StudentCredentialsTable: FC = ({ classId, - studentUsers, + students, }) => { const classLoginLink = generatePath(paths.login.student.class._, { classId }) - const nameCellWidth = "40%" - const passwordCellWidth = "60%" - return ( - - - - - Option 1 Login details - - - - Option 2 Login links - - - - - - + <> + + + Class link: @@ -285,8 +207,8 @@ const StudentCredentialsTable: FC = ({ sx={{ marginLeft: "auto" }} /> - - + + = ({ > OR - - - - No class code or password required - - - - - - - Name - - - Password - - - - - - - Copy the links below and share with the student - - - - - {studentUsers.map(studentUser => { - const autoLoginLink = - `${classLoginLink}?` + - new URLSearchParams({ - id: String(studentUser.id), - agp: studentUser.student.auto_gen_password, - }).toString() + + + No class code or password required + + + + + Name + + + Password + + + + Copy the links below and share with the student + + + {students.map(student => { + const autoLoginLink = makeAutoLoginLink(classLoginLink, student) return ( - - - - {studentUser.first_name} - - - {studentUser.password} - - - - - - - - {autoLoginLink} - - - - - - + + {student.user.first_name} + {student.user.password} + + + + + {autoLoginLink} + + + + + ) })} - -
- // TODO: fix margin bottom - // - // - // - // + + + + + + ) } diff --git a/src/images/logo_cfl.png b/src/images/logo_cfl.png new file mode 100644 index 0000000000000000000000000000000000000000..79949aed349026b8c35ec2d9ad7c8258240328aa GIT binary patch literal 28845 zcmagGc|4SD^f+8kPf3zCNxI3Sk}XA9W-OH?6i>-Wwnt)GEDgg929-)#1|gNLLX*A7 zK1>m}eP6Ptn;8382gAJAJ$-+_&-;Ds;rY>zs3)d7l4kq$jxTz_tw= zHVEopJb!h=hRyJX4Sy$Z-2@;vxZ(5QKjr^kx~9wJa)18(+1}pq_3O8^wDjQMkcSWb zZ{ECh{rZh}@80L-77e#eEf@TnkL{eX`#Q?5Y+(f_Pr6XYOi07hIOKrgZx!1KTYv6C zGxryf+pfZ`+sf_I zyyJXI@wD%2?sPV{QG~nvbImvaw_$?|MgRQSYvkC;K5w19g?XP?@wM^lIqsob8`Pxw z&+Od$_u1py{-JP<-5rm&v|FVZT-DEriW*rOSe?p=Q;GBPxQvNpTm-P^M*$@Eu;8tL0*(d}C&{*Q3_oHVt)+&8D{> zd1m9rM?-jzj69i7Kmt!j#^75ISxVgl05Ajz7 z5J8Ppp`?XrN}zvyy(MK!WI68AJ@q)1${Ir^W9xs_lxJKKGOniV7lz^9J**a|vPHW4 zuj)EQYJm33<$-0cWEJb=yE8EJ%Sj;SMTGWuZ4aYvO_Xtz8`<=Bj@Z2)kUz{~42s%p zSC^C9vJh`1=D)}3;o$F%^S(hGJ74`d_>4jpkZ|Us)`=$V`Vv`I41;_7X>4m%h<@>j z{_lw^Uk}wwsQV@KrDU_8HHI*JS96`Zl9v6}JFoj~43_)}c%%U)-(!j)mtNgsjBgy% zW@Y_j1$R@V>pGGzryW0^I^auKgrV*1%MqCTDrI*JG|yuyED} zW2~Lwl2GdtEjDHtkE$xr_={#lD!XJ_bu_u16Vj{up&i#9#2~EFKS^^+5oI`;(?faP z!#OM4=l6ae%|=lriBXg9qL>u$&g4B%+HId}HfJkcDC__JTUSjEs*jX(kx!Ffm+$Ik zRSzX_iM?*B&Q+(6ryuld37Zick#0#Gj6_eN@$}SL&e6E(4~^au1NuVG0|c09muU5m z4dp`Wk)WQxA;{%;Y-67rS9w+MF1B>hyL_|A)fjg)n~O9$7uH3ried7AU4Axv63PUUHl-ojFH;^d6y z^d;7Tpf`TYrqX@M+A+Oc`E|H~YV7c`YJ{6uSr+)RJe$gJ#`o&0eaFpeUi7yIKJYYK zZ$Y@9%KenMkjJ^U@>i=|m!PMeCw-V{NP_XsLn85;->m7F(v5x%T^tNy3yHOqD@*qP zS2z`S+xt-8n0Ug#y-UkQ^9#wH4yh-ddolSMUyydzlLS3H>1d61OA7XviC&9N+abn@ z{-lvBJ{h&L%6mV=+6(7jD?aGp_uH{&9O`6gd#$(ag8bUWS^0PT3dCjS00Z0?`G{$K zv+mlFP_vdz?PuV=tD5batIGJ=S#obt%}`@kG3R{3sT!ISQ?aJ8Xy{P=fkE^T+~p&J zG^<6&{68dUG7BuI)clNF#n}D@8^`pbAWeRv>y^5kuhkvZPeqwvxvY4*;s>O-INJMe zhuLU>MJly%OTH8Sc@E;|u`Yt={zwp6Z@m)fD(8zt)Ezn<;(>A6E*Lr{(#D$hXh?#` zw?L%YW>(%$3|4E^5b0H)l>?Y?cHMnQv=L?!Z$(-kT_U@e3%ggIg^I?}q z$Z&(aYBf4NE7|1L6QG;UDf zbXJa$tA$0z3mySC+Nzmqb06N^Sshe*T)FnMP4eX9u2O0~-tsLX{iJceuHFedXiV7D6x)DHwINn`PaP)SYA zgpmx70g0F&UWC;Ok>CM>DF|C+%!-mH3mPctmEisq#!S6TMf?`76&53zIorkf!tm2< zT3LLb<7qFr)^fkgb;$cQokKO`{M3j0Tw^2J^X7)uwYlT@Smk0Ex_2}r!C0B`BV+yv z%R-7|S#huDso3%r9|35fZ|%gaRJ_XZCXK7^l*Q$hJXNhPntZ3`rubn&Ph`0MxmJpQ zRCGviHz64awSVD?j~GCLNQ5WU;^Z;14Z$LzHo-i2*=0Ndv--ogV`*cC`Sq)XDmP(a z5C`nO?{Uf?QkLdkVgFd9D(=h;T($*P%S~t9dpxyz!fiF9kw2M0kz6~Sq-+hFqDXYT zg?b`|v{XyZA0qZDn8IR=i+P9h*J9IOi_PXq=&f4!$3A;LpgJAgPI!{#B<7s1w;o$=dJg`3zsQ~Nkg7-K%0T!;YrhgDZ%>Gf- zvY#GhPh_u@jZ6DZtxH9m_@d-%_n0a|#5e`-5^q=S0B5{p*ZZQCkbetukq=Wm{-U6t zZ{9*LMJ%6f{t`BBOop`!Cm_WMU=&>v?W&!uzPMeB=z3xnberCdw+;W^&Z3IV`r)}> z<&8J`C~!}5HowMN{{)7wlyLiA7E&B7kwg8l7dTcY%f=zC_`c2*r7?T;DV=~_Pq>vZ z$7iQ~zrUuNbq+XU*wPgre@J3*#0cy;6XBk+Zc*{mnVMivfH*neIp@J?1Q^tBr=wD0 zA;m=?l$>aE^<@vrlH2cG)C6bTsUfQ)%VMs07~g5ap%!8fi>;Q7;BXjBzZYP!_QGq9o$?v)=U~q)2nRylQg7~XhTV>%nvH}KiX~mr zJ-G98aZg|$hxHr@?x3HTU&}A4bN&>iqEo&KI^{9bUs3CfN)IZR@f&_ujh9>)pYo%L3ZMEJ~4 z)}A?0;~#`pl;_gN(q$^1UmaLTAFD8Vaz;1&o8OrLlUgxT=Og0CMmW~ zYbPPjDcF9EdQ61BNV3xaTV;1S>oTerkdLkV$ z1sSc~kLP*0L=C4Za9%H|`2ifRFSppobC{;R&+KLuIq58fx9#nDtGAHGB)5bCo6&$s zk10i^v*QUl0V3;jbADW8Mf(VHato3E3+Qh<`5GghO4|;0TieE}W&{=Erq&jEGN{~` zfogK(DAmjt>~wUGliV1&45eoYxpZw4Km1>-X9Ds@NxX+(L<`yN`QGU=WW4lD3sC7` zRVe42W;0$f6-aKw{XYO(zUduU`aK~eKCg>c?pG;~aj*1BUx z4QM@+I_>-HRfGcYB#CXzxmEilS8qXXg8Zm2fY|GlMD<%58JJp#8sN?uw%D`8dRqMDzU3oAo)qPh z&iMSH(;gJ|2jImj)-YprDO%gtqCk;5Fu=WB*f`T)H2))TW`eDQt8^nzh|J1jOIHbB zD>QTg|4DYPpYQrIgVDdTJn~)cm$H_=P{#H~Y7Sl_RN6Yx1`m^jwpcdo!Svg6sG&ni zWdmw74rcvo5y=;qQ0jFbF_qz#BMU@)GQ>ETcisr@tMi~&@)lWt_h;8%?s`H$Jr9I1 z>t;O^8f_)0ra@U#>J3H*WfqM0%B;zqBhoE6&&`Rw z^*3STWIoduA=In_t-^INS4_Xc`dgq=htEi^vpU@&5t)MTwD}P+{Zd|Yk`PJx2Mdz` zGwc!(#W)G8wX(n!>NI^oTTP9f#~r>py6L-Cf-&4T;Z7ej6_$fY+QQ41RuUJk^s`FR zRznGk=0j57Gt-+0s@_nRmuZCo+$XX2a9(dbu?R^RS#+5Wq6Ah&q3kme_pH<=0^tp| zl)Q!gx@zQ^h50+gxdUT8&bqGMM6eCS_AlgP^v&8QhLt#9}wm|Fb(nL_lTDJp(Wv>r7$2DlRU|n z*83hQ8!gEHYKI#whq8g%|l}h;`#tgsq2nDW}iEnw27{#33l=9>G z{KdOKl4gRRttz-(nU|~7?p98+6)?wxseD_DKwve(y@U%Ph7MT7+He+KWH0sKUQ@(_ zvjY;j0P8&N1yL@bKH|ZZw%{I?1S-AwKSNJrsaVRagifDY)*>H|7=HmEmZ4IAE4Bn# z;;lOT^PLf<-=Vzb{kBk7kU*4;lJ|2>aHH%;8LAHA8&;@2EN^t9LWrMEW)9Lbe(xr= z1kU`MZt1xNWo_b<>3INK>MWQ1UX4WIfi`(2=wxOgBQJ5MlQQ)EVt}>S5;fYQ8YAP5 zO|aEf5q>8_zqmip$hpl;ZeQFfLBZ1BmCp$BI1R7LhviXoKEBu;vqOw0WS!giyKHKV zy4}BgzQc}hQ6WD;3F>K?NH3K(ufH;W?J26$!T#k-H|(K-*_FDP?^&^zdDQYplpgjlHU(Y>x2!lDF&cXFJ=hzykZsD1(b4GB+O>_H=s9q8+7ee1;Qe!;z zO8x>30G`Z|p=*gB(hwK*BXXiIP51HC5(t+CW>a%Mz1UVO8^jZi<_80ai>prj*8dG+ z^ewVK3_c8au&)_as1Y~uOgE;X#^3<`?EB3qPpJj!n;iU^9Z%U~Q zO`AD(UUP`lJqsSwtJC)|Ans50gk(vJ+o)kK`aO~5(QFwhy<*Zu&=(UENzibJai#Nr z6htZ8SuF$~fLuN=wA+=YRA!d{(OCP^MQO+-_X=Cf!vo5DhaO9MXn)z)_ z0bu4SKgC>`?@a#Sd3gXUrzwQ$(^}umH_7mpkKayiHd5U&2|v{958QA6VYwK`ev^6QW$ zmvElW-XT{;$;<}DvZ)H%C|Qe034@kCHWO4a@zuX8E4+MdI_V8!2|T5h7wCbL5bh$Z zg>H1Bybw<`;?WKEZW}ESgBt%cT>aRBN^oKdJ?8G9Rs&C1^?e7X@;s`Za!Yj-9c0FN z$pJJ8s4;*lg!rCF;8ARM8PPEFQ#FF!-XrBrto^zkmJ2M|!Qu_@AI<^ z$APG^1u{;5+(W>`?}8+rQsKAA9Vh+J5D}i{{`_rq@qhoFVferQjyf6tNB&ja-M|Qg zr|RAzn|LZbLDaY)+V?uK07*|fJh(ne)WAtX+HO?fQ;EnO;m^$9(#uoxJIG` zx!ntJ1BphwMi`M!(e>a&%zt#3{kg&Q|E|kMiU#G3aUb&kbG)j98WY}0sPUg2B}Xb@8&r!9jefQKvnI&9tzfKgv_RP9FOMqT z2_2g1ym-HzbSwvPNeZ}}_y7*&8P`sXcyb*zP3u41U@lhvkG;9@c-o_B+7IHawG@rV zq!&(WV(qZ^u;gxvQ!>*0A4e&4{j<%Nj%4Z|6KXkm7aU$4HRoaPx4DOhc=G&mgMkU> zpTm~QXgV9jtqT5G+RWO&6Po__HoR;Aad3Zh`D_VFtkj(b@uBO?)cwKJ6rM?(hZhN$ z{&!70sxG!q{se*_9v5Nk-flvl%V^}#!oSiy6DG9t1Zbj)u#WQYvbH(KgEpT=r2_b@ zriyzb;Pip9H|1JAp^}c}0>9iui|Wi-=CS%}-HFP272EJsn3qBb&3wKG9LgdE!j}jB zPf+a6JO^VVy9q|u3Ftk?-Vk7g#${|G>~#^M!em8TmpS z^C#qI%-sQL%r~y^_}ENF9xuRu$t;JZEm=^YmH3GMA)fGhs~wtP=k`5z4R@Qn(v` zZsMgu**#Ivz`R$;KNz2=^?j##vL~gLUTN)Qg|u{jF#WlGb{~&KtIr}kvWP0eIYpNp zE4{w?PqyIF`L48ftrv-T%GZ!-bsoKx)TX`kE?dBYj>64@=T~B`Jwva+D=X2aU)*C& zqi!`MGYoxr$o5%&ZISM=JuL8&YtFmRj%nf{Bj%V|8p8baDf$@_ryNjZ{FcPf}Mpi&Ru!)ohiHwLTX|a z&89@~=^&1Q<&WhO%ne~dWTyKls>y)WpS(0}O;(>kcH*5uc^ogB!*j`3>B1kMqoRB} zF647GBbz#>fxqD>>B38@PK4rTX#)*kvz;jR zCQr>;_2e1Mz{=R_VDr7pD?M$GQC1H*Dv;4N4~}=WVn>0D@h!uZ+H1TIwi>FCQKW}u zTgRfAAy=xbqx?@A?KZ4zo7K$P7c>6Uph0k12t8S$Uw&9%MsW!%LhoF`YYER*Y0KAw zM#;sOl_f{a-~P$y%a%mn%3!8G**n~^xAHpH&fEVBq4r1A;#Z!Bo{P<5dDM2g0&0DA z2N%i&mw7b=jeQB^y?a!LI#8SIwP~7EgGfEw4_vG-kYu2R2kUQ%6wq@}&iPa(J}ZV2 zSz4^XXM#G*`JSy#%6=htYxIl@^5qf=y+YA)M@@C86E&eJxt~`W?t%L2Us!$dJ}*s+ z*BHp8fJLHXY6Ek7QRQiRCSZL7#(V0oqBX6_rYx#<6xB*%NzZJ6btIHU1FsJWIxaAi z%x4IVT#f_9_WC7^hflABl@Dy=70kG(&PZ7~)$cM)*Ms{mxyJ@P)WELaH!bqe1WUYO zGoMPEq}T@c?azhwu(vjW*x->lsPF5j?eL>{@8^xP{rBFefMmlC!cV^gi$*@R z36-vt-J7?^^p}2eCCkiQd9-xUh_@oa@}khkQ;k$PZpz%**9kq!$T`R*bfomV9%21= zH)t4|kFyDr#_lT~l-ZlQMP5*EjMk~F3GKzYf;Q@8p787@1&JgHh?LX8s+MN%68_!C zsxCiL5;SBSn{Z=V>Qb7uHo>}e?l1=%ZW<*w9sUONOX}Py*$SFT*&M9aYYi`jKCNis z5xtk|w~UNSdW{vRq}c97SLMyX2;~HYq(MV1CMHr zeR3-bLq?o+ja7C%_I2Z~&+Z&>UFUSNYRqtD7(l$Wu;AAZ#?nP5&3&zr>OT|{qRr4Q zcynoo(2hmYEv+*{soS9Go1Z{yApJ4e;J+gZQ>`71sk1f`xahxLUdzI{9PNB>QQCrw|2j=?^x^+M~JT~NX$@!P%r1vBM?QXwQH z)PG;4i)k{YW)Fnzi@1hN@YdsdI#-pyhssDFIH5-%xZGv=KZ& z8v*wZR?CxpzUa9EELMUZdL_i^$2Vu2g-7PPWca( zj^LAzSn{0m&U|MW2T6QU(|U(kO?c2-M&|fP6eZ6}CC_N#1XUSQS~jxDgF5gQaej)` z0u_%XKR+fDyb%fiWkhoaANh39EY^IA9L1NBG+OX`kJA&)kp6pWX_Zu=)eyHpYVqqS zatOoy1GC`Q9;YKu;*7>|wlLp%r8=;uOC*Zx)d82d6invgc?x4TpDqb{)~z^usdxOb+qEu0&FTkfA<#2fkD81c2SXIp?L zmLL&Q%w6Ki< z|MG?91UzS{#^N2I4Lt$)xw})?)N(P9xIChEy6^W~0bSnrP8{&X)Lp~0l1UCYfU#~@ znLP+)vCsENqQbYa{uYB>K>h;0m{!dZEk`WcvkhkfpFm9fafC?M5r(p4hQJ%g@bkP) z#z2EKgkRYR#!jCFE8PVr0Z(-d% z7oUr?$KEb}Gb72_7X_N#s6=-$)`nGc9`qM`oLXans`cPKpkN|>q#;p{HAt|WTC)mE zhpmu0N*)VtW$h4lr&Gg5rVChl3uY1M(dfVty!9!F>0?ST)k3RTWx9-=u?@3+at+PP zQZd%$=5mR|-ihaV`au4i0oE-cq!E}$lzXplmEKrEwcf&<#^Zr9FIds-7RovU`Q0cb zk%2@!|E#wVkzh3LKu4bQYN)={@qz`_ze9cyETp?XXvcNbd%&bw9#R%kInbr<0G?@X z#~{QTs;!Xm?C}N_a291$V^taDjl?&QzzKBTqQN9x`O+`!_=304@^c(7u81m)ntm_(174d#QS+iAWF#kk1tHhFVzaQ+p9q@FV3qSOZ zDgrwEzgzG0UGmUqEZ0^BS!)T1Dy26pEyBmh52d@Q^E-V7f}qCSdmM3ylvaow?ZgeC z;qKTSp_}Ufal41c+?yKk)|Xa(kURlW95pmY z2{ai&*?P}Id|OL12vH9~hzbWm<~ozSsONV8t$i7}c}LbvlinpG+l;?JtKj^kAPL(> zHjv{2>~~%DbHRHWQe*T5;(||mpn+=7JXy}sA2&SQ9+EE~i)SiL$I6iYb zP$_ddY7%5q!Tb98o{?E^L44EzYY91?VkyV{RTn^2^-=J7ZD|gh#@?1AVlph4&_MAE zR9hF|5h$wUQf4MH8#*SS{dnO01l4c9w=IXabpdM7`Zth}Nk{0t@ZLELTuiPIxhhOU ztVYQ}FAOt3BVe|`02l+#86K83f{UA2xZ#(awD~6WXMmG8;FJPIr>jBJ=U~V{p|D%= z8kk0cfPsKgFB_%PX1zE|4eBj+mDhB1mP)uS=L>M2Lj!vc(R3iv1)yn<8$XoeMOrp>*d^&Ln4%ti9oF{SOCH1TLUrOp4K=u7tsW(w zsTEpz{it86yDbNI1&X%$w-AKa(Sm^7o6a?=NdYxFi+h}MQFJ3XsyEOEPdb|u;M0-)=Jly&|bI>%ix;Lk@)grZ$dDW(G;cq}Fh zOd_?aOxriWr$)&SOeST_7?^dP4||+UK@9OY+Ba%#(=eY->y>eEH+k@DvQjqA`k3{9 z>Mz9Oc8VH(F$Lz=6Gi-hwVLv26=6-68rax)G5ej5_G6K|O#SD^>a{A!Kk)rmIk{mf^IMY?q=lPx7 z>TH8AcJ>O2ib%v`>F&E4ad|;SklcV+=3O^~7(^*lqb9V6WlIHvSjS#lB>P6`8+~c_ z#5hHlL(Kb)?3wkRsQCwE^N7+KqU`KGqqserPYxWz(`p`l3mud5+scTehS~U%v$!gh zE!ysRhY;q$EXd07;-rB_r`Kpf0`T)x&A7atLGR{A)07`v@>^F61DeS&)^GDD#qCm; zQ75%yz%h8`Ygvcxx20eCTVijgfe{rgzQ2Nouo7Am(|*{37wg4(SZmr)PJir0KdHQo zj0~R}jJ%T1pG)Gao8N@nq)HioQ5clu>p> zK|UhuxW3=r4PQ%sg0oLB64=nrk7>qnnO`>i`wm|kBqz67^Rdu|(=2RrUU2K3jc<*_ z!PJT?Mqxu+>d2L~S@ANy2V=z8+ZHV-h9bBz<%2h!k-PyoPZDoz_}E>RxFUyw%nyL! z8c%?CZECQ!_(hK0!42CMT$#){nqm6K|L@@H|L@;lb0czda}yU*RK@Z$xi;fA3@#rS zUfuBXK7H|ykB^<*xKmb0i0ZiBJz9&z{tfrK^Vs=-b;>kx{ESki-bR4ksLM zXg$ISsGpSDSHE#s%i18{ z^-J96K~mmvEq$)8zb0joQg|pdLEA5Te&U-H(^iLY{puZ)f2)iYw{Vk~F0138=Lb~3 zrP!CZ=L#Vi0Ixo<>e2Fin%ND zYxU%v&)6X$|4h|LXuX`ezfI0Kq1knweW=ec_e)lKY`TChr!sFncb3+|Z}gkB$9Icv zfE@G2SgzDsA93Zt+*^kmF(O4IsnWh++E$KP8CL8_W*nqN1U)uh*-psx z^s(2)l%#~as!iy_S5Iazh_VI3jC{{`3wn(rEnW4t!~FM#uYaE{=+R>;(&|4?q>^Kt z;%J}b^;K0PMjDg!_Kh_W@_m?!_~vS{BLcFQEo_qcKImR)PO9jCQz4vQny=- z`5)FPBhBJieh+IpKAZjs)C!l);m%VEL5kgNIM-H)Ywa4p_+1EqP2ngrih+4`2#Mmk ztbPPmz)XGkh-|(_F)*#JC&ji4_kw%>F2?u9g$mlmYvx~xPj%Lx2+BA({=IWTKqkSwS8w?VwR76+Hjj?BE-JGk_ zKpW~Y*82C08ck+JR4SldbLH7-5N_W?+6o@}!~I1=8*m+fbZ762&LCdQQs~1HT>&ETsLdj zKAt~yCq&va3Z~4Kf{Puua(d10!O;o9+8sN=CN4}Dq)4d6sKDI9oNhoG@=2ErrWS|v zvG#y@Bb5*^ZdwA3$oL3aAJCs|TU zE{y=|J2l~r=T1h?tH!_E`v~WbkKC#43}4R2^IrQi6hj8Y2;uZu>K<1aC(%ZqML~!p zmVxNCxI@j$w`ngr`vFR#COEWE*L59cLC=kc-b!lIs7YwyY&6lnWgLpwA$>lOzF zY||lWq)^8Qo=*RCK0ZdTGDj;4Bnqw`vBAdng6a@=(7n>O^1C8Zt1g6YS`=$k=`sYy zUKlWP#@y3hVx;cExA~MMYh@hUWfNt*iq= zsgoX&_OVQI>$pauB^DB;Ay76kHdwL7Oe?=jw# zOgn;>O;oDQMQM{{`Dq}Bn`>$42cx@6pvt;6s@BN;Qu{e1mfAQ-Yxq8olDIfPi02Zz zE^2iUDI2q_j0~=zh13v)hu>MOfbkQ`MnzA%adGSo*y@3ht)PiQyA?zdU<*|OK(m4( zH-VnqeVzD6MQCZJk1dsis&`Wi)PE7_f~rI1%vz8zhGiq;Ezjl4e(RTk^KmMWl(=Mz zO7(giPYD3f_P6#Q{}X zJ0b7j7X94iFe-ND=G*Ic(W>F1Vw@?uACk>HGB;(=U=JzJ3FH1{;E88Es{XXR zTd)=O+?U?49J?cDHln7xg%m5H&bOaqLIa>_mbw6@8o%TIkcTl^1du(5&%d)%0NUrvsH9gLnR7zgu$oJ)fA%Vj2_DBT@T1r=yi zA?5iLqYx-ztM7*`9^xx9hf%77Z^P{y2mjqPzykBKpXQqMWB`J*#M2OY?;QaL3cw5r z$@XEd&Pfzn{t{NdZeM`Tg3tv7hSq98BqDW-s(k9DO5ax+5_^kS{W#m7_BI$ihLij& zqw@8VPK??f!u0Fw`ks=LLBIpY&kyCQE&N|>t3VK$9_s!@71OnkrREnOd_{<_GPdJ^ z+dK|Q`5r^vqdg$)VR_9Y`JYYBzyhUxM<=dcuVk{{H+pZ9*zn6kBW@!q${uZ^$1w%O z0J}bnJbbk`vBn|l)-M-;kU#n`H>)5xZGyf2iBD$uGf5+kZ3f)WnV!^|Ob?cuU^jdc z^gD1L8*jwXi6hd*#Bc|<)fIr@v`Am&btoU<*VS&*hl@YkCR;rhHS1&o{>Qv9d-c2lX zUGP!bVco2uPy!0QupHnFQ-lFKA!5TZEFgJuoZ)(W0useTGQY!wG5!A30XYpI^t!H> z+7{(?d3^1@uUF3b?q!)avBZg-fEHBpgyaCbkH&WAFB^>;O`Tj9KK%PNcnkxmGFkvt zYv#zptRthbo^_^Sc`JAHnF2UWK8RuJ3zS4L_R`p*RN~pYU^%>>ujV}6h_?sT?YAr~ zU{Y2R->sdkF>qff96FPD<~t}y09l)yFanrB3>ObOD=!h=PN=EgKdp^%=OWN3SqP(L z{|_>Tv7WD~VQtlnXmP(D)$oM35##h*mNsDWEpqk3q4HYUIQ))y>deM65gdx;d=%LR z1_29ykpAkj!ZFn`9>JkI>0sW$yNRGI+WCVueS~}c_qt9_v8k7mR^=L*T?THxvvB<_ zOFXRW^8*`X*>!St=f49%2QPR=SOH;)V5l9+j{vdYx6)LsNSe^bh0;)btd9LTiOug3 zP3tW?KAwIGoVsW7yZpp{O^al1?p=gaq05pf&8NJ-fk7)^4Dw? z`?j{g-=)IOs7qVLj4XnI9~M7xwv&*<+ktOnA??jmU@k+m>}l)Xd#Lw6R2|w!f>LY9 zqYXO1`UyYo-?+(ZRsOhmfRY%K85~gB2Y$ogEq?0F%OB_+v@`FMQf1HH%47xPAsCsV z_q4ukKK1=SG<>>9Zn`s_uH!B$WO;~&^xgG|ZM})Y-_kJk3Zdh*->3A_VShc!xQ)e1d>PRY%&-z# zzA#FrMTLF-Qg#<*5Jn9pR#sh%bl^;0sA~Iw#NF-nxUGU-G#BB^Q0Dv7;2loqg9%9hFwV>gLawNgccB;n4|oWd{||Un=1_&G-|Fd~a_^8h@y*+l`Cp>KJ|}Q16by1!o7loSp0(*h%U?YxslPDCU*&xv;x$IW zY)=2M>DP+~{?qt_ka5uCqXu$T(c%MQHRkoE)eGIj1FD$k8xx<(fy`w;@Jt=VRXgyX z)}QsN_Tw*~tp^8aH0#4y`l19p+tmmZ@^gS77SORTjF8Ys4gjszJD&7M=tZ>-seZOf zejFU&2y6?oW{27_?^gX;zg#M4cD_ z5IVdQch?-3a`X@FWJKlPvp^v-*Rs>E8l&jb)C2?A>D3D*@lPx;%!tC#qzk~KOMK`b z0kyx!uH#a`%|iDl!NT^(EzJShGr$K@)uhr=QEvT^qUS2v_750JC2#$hiGoiP=>@?I z&BZk^5ve1HPrLRK-9|AothMEub>*6Bn4w2+dw|HJ1ZKdt{yKAuKU_st_y7A)R520B z6dsKR-;6dhTyfDTCIvREBa1?Qzu1?I|JH7WRvE4xybr~QMT=9A$*syYiN9Zfo0;}q z_*)}!{PQ$hIIZlDfYC-4u}aF;7eG;!>zjmsA;HA0N-KlpIxWxl2q-u6u-3OL1(NiS2)-_+ze2-Hb!Q*Hj>#DN#McBgcGDTtKxwHK84x4ux%IlUZZbw0Z zM!{PD>QN7>FW~wwXG1Rhh4`D9*```4ku4-eLn0G-G zcobt6BnL;&`WjtMSNMlGx4keU0mCeaiK52Ts6j#w6CF9x_^Qh#d!B)3ZDv6R*xkRs z7aitPPk<4{dYLgeSy;j6+nm$!kTd5$5b#CsX9&dd*N(>jSwA}kMAZ@a?3JgmG5rjktt}{ zguCR>%OwkAtUW8!{s7s}iM`!F>eQemoKNLF6o#D>*JT#uo_Isx!VglX)kL$7f!$4h z_1>$RJf8Oz#Px!#*`COA3TP#|p7?RF4sUX8Y0KqW(r^!HAi3I~H%T_my!5zcq@#6Tc=w9v-HkM}ke4hOp| z`^hYT+E=x0Cs=;pQ}{$+s!Ete1Nm!Sxfgc*Rj{fl_|QK!Yt?kZV8rPuGni2_!!^1) zNv^=B7W@FExQp;Bg09PpPjRe#z4Zb8WXR8;Qsg!IA&0bIE%>gA_<=^08c1Sg@BhY? zd4ZDok&r~zqkt>5Pld-t{k$i*acw_X?R?)%@^@G2WM(7L-uQ>(2U;S(H&ZItjIrt2 zNT`Hv<9~CG0hV^~l8)Kwp*RD+sW;0Yx|^kZLX6*!xCmYfKr@|f#lj3ps6b{_R7lM# zxs*D$9WPWX3G&;xS?5aHUQUzw*~$UmZEOSCakkrH%KXWLu1=7U7w1B_0JF?AoRu%V z(MI12!Y2gs6-#z@5V*<=_g%)fghhpxU*}{}MP7;XJLrJ)58Hz5GF%C0kX2guzz)f! zq#(T^-q{CS?IFbl56czP-R`$EM)3`AFzXoC7F^Zsswj7QorF5=yx(a0VMNl{4F{^n zkkuSfS1U--!(4aqdBY7Q@%wCc(g&(`NNkR~68c3*ea=GkTjIU6YPM&S>Q!S{ou=}v zBCM5l?fV$+a;46WjJRuUtf(qc3k82*At@IX!a5^ZZ)p!?$JlcKs_2bEwjQ;piDlEw8@;07|>>q{$$*#jxC%8hr4=36OZk*DbQ` z(`5e#IF6ij1g<0PcFOC=SPi*pP&OhEQ+n{URT^G)h^X;8;&VC9tg?KE+3U78meSQk zYBG?Nm{&P@!ye5gX2!u2tbF?SlY0T-h5~$8=S$XCtANw)^k*%%Z%G3RaaTyP~q=+E{UN4_Mmt4BrW$`FigLF6csd0Z(~3uq*x&QH8q;_8Oy6&YgG1)TBErm3E_x zX`kQVY%BevO~=OA<1<}>_f&xInjE-en_LzgpqSRy&Kl<1)hcXqln2J!CRd{1YaJ{Y zKs)7uL(xvvlm)`u{7e3PAoRU%u1Ci#uiD9{&kwxrt|foZHgJM$?5AzN%z{2r#DT#p zZ`VzQ{Y68;g`I(bw!s+|kWfEP_Sl<>V3+e0kzDuKl7LN-;y^&$qB1UTMeAWjFkeE3 zlBpG}?qL6*43KH9@g+MAr1%|GE*164tGVV524Dtv+Jp8LEoyD1J3ji?tGa?lqgves zcghimSNGFKfp)*UGK4{HtfDNwa`dej__A!;7FiMU0?^x2Tk?dSgIrMVUyV7Fwhi0R zUw(Gm4t2;_VNNm53ac9Ipy4pbPC|R8Au%}xSI{!_?zm@62kWIlnrP@sR89j`k?|}x zw*cpeeu7`8{qB8)KaCJTV$e-k6yITT7rndT-bG5E#u zB(y5;-PTP280mC?ad4JlbaTzuc;UwH1+uy3NHy_e9x|bMFuef%sH81$DtGyJ>#1RB zo6BYzi=uB+?qV~KDOSjWQcWWOIoUsrd&2Hv1!7CfPRjWUqux-lRdvX8|9x!cdn7dB z_+?Ei(Itu6{_?>Z5Xu`LiOrtc(o2;aWw)*>JW!0Mt{6K^58l@W9y9Vy&~uxPGhBgP zFA!}N3Dx7^8RDlr2^mR15{&{$W81390wOGuN6FVvoNx zKJ^P)MkJ*IEQW!J;$34`-!*L8UIax?lE-5_#aHYl`8PYAeESLzw3OGD)23#e%|}2^ z#K^V@S=vahu-Ki9;*|?7pJ|p(>kR|x+We1QE>#KJ#WZ`59R^#D=^Y8P5b7$a1&3=ZI|ghx2NOMIn{v}8Q^TJ+7npzR3-AVfg>f8V3%5%B z9b%%mJ6P&NBmj;8;7Jv}KhO!yOBYDMG_4Qj?6zZv#_qxRPTB{Ce~%mk+NsmhSN(iu zME^oORWWDj#F2U+X`z#$*=G%!{+4*EF)J{ixEG~Zd35$)eVpkiI|SIEz8>0i@kmd9 zte=y54tDvxbV4#0U@m{o-hH?p3}P|LPs;J%0iB=5(5R@L&rv*RQT#&^a0ANUvFE20 z+rc94*%gQ{Zxr;BB{msvS~i&dyGan^d+&)I?&?)h(Er`mV9q)=&vnA@XNa6#_a(*_wcN z@^P^AFf1RwgfYPUB69kXBq;%RAhezBb9!UUmrbA%{b}jMNqYcF1fU+znhF*_ua;dU!)3*hlV28D4tm@gMq8)Pv3 zUr)+a%b>V>816-f*U{l8RiG<%O_ay4@97>)Be+NpjsXVgbr(cnxZ*>UN=kmJWg_Bc zZNGo0`wnELN5g@1lBaHXdv3u)s90eqdPC(Fo){>2d(-G95Lqn=c zpz)h;KKv?5o^mdJu9F{g+&|2C7-V!V75(KJ0LGFqhM(-5tpm7|Y7R$)Lc{PJS}Q^3 zv4#uCqOptO4lNS1!Q4Fta7CLqZ`ls|FNKKyFg#^@5VbZ1J5&hD1PBLkBT50TUMu13 z=>QGTm@N?S7II_mSiW27rvyb4i;l#Z$Si}kalqdU!Ormk7``S53A5 zPhnpk4|Nwc-cDMy$vPxkSxX7S5DG)lVl7LBh@zPWV{ainVaQt9QX|ssQo_l6wr+(ErTXFJi%?4P4xpUnuSOjRw z!32-cpjq?QgQ92Lh(@IU?=J@=jETvjk&_!+NP?3&+Q#6eVR48i`Fjv}^rUJ>kB^j~ z`MlfQjPmiUDEhtNh`*dpbq8F(_!Bh{5XuF!{Bi!|Jg+Lc{9FkiY~q(=jz^mQ4e@~r zcfME7%e~z5+a|zGY!vayMVyvh5@h|7Dl6h)$mJ#S;<_0q(I^9Fi3xA&u}$-yf0kSE zRHK$(ZUa^;WkpP0Tf;K6$4RNULoFDau>7C=B(lLpp(=f%2H2>bqU9GZT<}$CTDGI0 zRC1J}?ZY)wKr)h;BcMy1R_l&8xuGwCSU7SI=j||&CXTTIWpUrG9{H9Bp4WkFBev)s zF8hk-4X06+IN-Z76E6-5?1Z&{q@m=f`I)Dh=~|W2CO#O@! z%N8lRvL4n>s{N9TW)>EWhg5_f`;1E8s<}t9=yX39eEgn+#i?gh*Id5JgazHJiS^*a zFP9(h>1Wi3x%}k>bfq-H7t?9{lV9Z09*j*<%sGC`V?<4t&O122-p71f1_|zN0~91q zyaJDoz|CKtNL!1sDa-$;5aVGyey+rTxR`@uB=6e|&+A56H_(Lpwou;<5@b@El*C|4 z|I$k_NfkG)WrC|o?R%ryLF`VGdbLd`<7#pucwTCH9U%{(POO!(G)KY5BX9|(mc%MU z-q5Qu9%lJ5a@k;+KCxluB)n_eJf$WrvCm$!b)nS9^fh(dySX7iTD8gQU{58cRJaKr zs#ivph%4LCGnmbAER?jYZExb0npN7Ym|r_@5=GJ&!l>FHc@5TTUDNpD^;?%1NcT~q z)ei=?E&kIPitbZM-sB(eKC?CO=hSo8w1tK2`_8Hta}7fZsAp#k&ZUyZ=nw2Sqt#<@ zGvVupst9!I6>ckBm}(SoKt^=EvJM#+hZssbK+0S=UD9`vF09)) zT3#LSM)r4Fl3nDK)4qH?1vxp5P>SB!$NAA2;_e4+`BJBU6`T+d^A_88;E%`VF<&i( zhje#?(jV=0SOPU)S=-mWQax@d+t25~YXn|3oP4zFQ4C6B`wU)qsmo7Uw4dfOS~l6J zS~%ghWzv=AlIJU8F{w+l-+cigPK_7gPFO%s82NJZcrAGPy(yl|4O1Tf5QJs8e(;+l z<}Z{oP8pC=C($OiwrhPi@ikVDGWvx_Qe!6$ZCGP$qLu3*c~Pmy_tu91wKd$2YyE#D&u-exwdR_e zefzr_@5dfDKoLpYY?$<#uW#OZy;-{Y!lR(y-@zeZQEn~QnnqlE<$P)Pp~Yp{>*v+} z&r+8E1>j7cho6|&$I;P%n5B8%n+u-v3%RcvBf`E6MlSzq9f@-~m8)g%8+-H08tU91 zYsEfQtyE;BPR{h{jt4#89>~qs$WZ8JKh>oSo&XKYX-)T^@fEp}#MASTtoD$>P_jrb z%WN7hqQy9hgmQ5?&(F`>YuS{23i=qh^lJ$e3khk9jMJ9u14j1 zzkD54rSY{#EdBcpt%UOZu3-<$=$X6}iJhZZsCBcoJop#9l2}+e{7Vi_34N$MP2jj@_xHt7p0c`-soI-S>v4$ z()eKakUM$HMQa~vP`whbeEP9uck&+F@Cw)&GdXj`B-?a|8aiQ5uLlmpmG)8D} z%@aJ*QWj|+y!U&2278j7ZH;)h z9aYGVJtp3wkR7a$qZx%uzcRenqC23aIG*xhTZ!7x!OxNiA)PjSc7=mFLvU8;i{s+dUDa}r(Nz=)kv)A8MO6d9?%1MVLG5GR&px7#C1RMwDuTY9LO8@${-_nE%lT!Z9m z$h#Nsd^~2#WdnH7i1c3g1GS0xR%dHk8ac938l4O^CG z=qFg+tqF0X9C?QHJqk*>i)ipbi?+M<3I)CI6@~;?!~w9nFr^#T3tUfn-y@*G{V?rL zOYEk2v448s%R|HKU`m9(5Zias$W<1Fs;EwRVLgHYghK|a!nA#bDV6q3x^VO4Yc16sGK_T5a2o7(CUEgG>8)0snu2NIM58q*JbyIBn>sm%qpY{3BK z#Rd1bC_;ki4>Qc^;DoLfR3vb4mO+)85bzLkB7Ek+AOH)p{B&{uT*M)pK}p1VrcJnE zs&2u!L`J}Glcio=RY=?p4fmm|{;G?f^OL0Ct^NIR1I9|{mPr;6jruOsc~xpzX8w0) zxtX31)P!rx*Rvs0^^Y;)auexYZ`#Mgh_`w^*2D&tnnQdSdM$kVbSzG67p|$HbymqC z?qggaG^^~j@cCZ{#umyp)9*Qwv_%fIBMc2;-kVLxW15kB$7?gVeUvzuhA*9+<7trS zU}$v*QL#DKd z$BBLYo`IHW=0*%NjJSPdAbjd@cg(eg3(v)U+oqFuOmbL68PhpTVHBTmc+)bQzGHGb zBvrKc!smJqfrK89K)j~0WcYw z351Q}wU9U+o>A(aIu&?0xD&Fo1qGLiv^SrX63Vn(?Aa>rA+u_0IVYkVXkRn(CxmFJ zS9cLIrqNfFTYk7poa<|gxhf&uZlhH%wJ60Ub{|{P%W9sqvJ$7|aO5A=QMEfk!jf8za@^-#?K_l2d1#)D_iV z)lA!KoS0D1Jo&j!O)D;n>(Qz)RdT4UPMQs##&vqoc_!3Cf0(jda>S94#O<>N;!h6_ z9u8@HZ`x|fr8{m4A-|0iGql&+)fbw*TYN?u(n%$?^@e%LUW5&TyM)8_n_>AL+4aR= zdxuZfAt1Xx9LI)Kp-et*x75}h=kV<7M7M>ATe4_^{|>Ygq{RIiOD1!3k9Mir1ag<~ zLQJAy+6(dli-!LQDcT2j-h&iFzy&?3^#5>TTY{=?H^jY#8F2)TE*HN_Shr)+4#Iy0 zZa2_G7v5RJ7aTPMDU9z69qx_mc_5H?D7ZWn!u|j^VQjAv{XSG~kN5YYn%<5{FG%pa z@TJppS&#U!{abZ7_Z`m=wgTMFw^U&6@1xy-91*cufH)jP>x9h$x(d*E#iUrR+>o38 zy&rDQJ9H}zSJ`ZnSiYPy)4%h`-TdUs+_UReMKxdBK;@z&g!5FlHy!8Pc3E6YFX~ci zG6ALox>}HLw74znoKDiVxu$lFom z=)c?G;*{h*YG|ui4%$HmOx=khN3miAaOM`x9lb;pk6hE`BZlpl)UBI9n%-gk?%%>L zIU?(eZU@Mo@5J?#@(90k-lt!R~>8S8Nnm2xc9UEj;C}#FC zmuSY$Z|9y>7(%js<*`@RW;}KIb#~76Y+o`h;dq^gq3K-~tuGhq|D5ix?xtrptncu+ z6J;NhvWfMhAj3E3?r?1smO6J+Y7wzx^5BpU8{0V@jio(5yg)m?uwRV~6zXTkN1da&ZtA4I>n@8{m`xG8&kJ}^pcrpG?~hE{u0 zzPsGW>xB0MmlJgxGaNv9GYETjUugWJ(qACs{b-bXyuB@JE~?=)@z}}_m5kX}_c*;0 zx8U%1nFt#CcR|ETOthJ=4OQZNTQMKMJPtP(MHkF|HDbm*^kAM5Lg&kxfT5~V3(ruS z>soJD;tS2RLbxKs%gMsrCTn|1XYh3i5ZVo5jXEk{iqHc47xph&TIT$W3Oii~-dls; z#|$$HHR)~@Ixu#r%*_H-*MHSfc!kyTzVTyzMy9{;dJ5z-!)6{FGqTt2_#2G#fQo>u zZ6%%IY!c`0D4Fk;oRtUVJ{E33WJi|BF&7U0BrVL`wd96PoV^B(fAM`fmS}Wp^1}sq zcScjx78BB5mLC4R3D-cAoZ`AXC_#RUSzAkJNjA**bP($r8D=HHuem>rs2vc)FAceu75_^jkO=S*z z+uN0^>`A)VU zy5nhCQO2eumV4$7GYZcCs{1CGFkx*oWO=?W-Pw^92V3M448~5)?JBu7tJ67uq<`7& z%-Op13wwUD>>yv<; zzhQm}ylI?nk#JBkBWX0$#+T>sJt3PawB54#z{mdBxY;P<)i@lDu_5-#@<^4W6c&o2 zS5H1`&|Id9aynnK{k&bRp5p3HXhSn-CzC}ddTut zRvgW@z6lLX@Rvt*xMG0ME9NlyCdY8GcT%dlEyd={Y{#~e)uS`#5AN32G~=gRTsK_h zzzv?DO{6RF76WjH*FqeekHMDrF|q%=D-_bqA*t&GXfI;}z^ShV{{x;-37;~$r4#YN zk&_p%q#9!KF59yb1p*w_y-Ve?#t*#2U%c=e16<9NPZ|50nZ( z9f%)}7D`CxV8C@m?K@}?YdVkOB~37bO1Bek1(tv-U2-B?~QaXj5lUDde^T{9{Mi4|G@;p9ko5i zo=Bt>J#kk(r~Y!On(-5W{pcS)dX?pKhI27qP!s|r#+TwxFmj{7gNyj3XSUE!dNch{ zrsBb!fquMIe$tCb4Jc$}akt-}-y+@;uYHXpd|8p+=);zYYiZaJh;0i{6^K{b{t?Ke zT%Hlq7s3Z^h8wVi%40_X=cHdLdyOfnEvNs7w9&l?1(4@s-M(3*0g{cd8P)-2&7ygK z<_&h=B9h~V!sfr5|9#e!%or5!GyTC6`46^VLoUTAh{ACX8pJ*}ONf2YURk6||ATTW zI?uYJf7KS1Zk3YiO`E`Dr52H8kRtkgnwUD;Y@BjS_c!=FB6b^>$kONrY~>C^ACNHD zguAni_QOXb4^)mZvjZ#^BFMj^Zc< zz@q>h@dfp2v8TU1(|uc|RFpOTv)+bTn@DX&6|IQU@=6}m4YF2%y4H_rR>0RzG0PB{ zAi%Nru^synvo-~b>6C{vB~=l1U?aT&(~f1iRYdItmN3ASakjEqV4LVWC{pXCGgt|b zVy}gBbHktIz>eDM$6lQa8>sfrIAPghxD|YKV6p*B@=x9?loj~g5NSYcyx=N)NOS|* z2<*=Hjx6+T4R6=Z9|-Uqi~}3~UL%XGtk%#Q>uWcmnYg&aS-32U?LSW7^S4)kLr3EE zQ&7qii4!iKdlm43IT&qYDsd!WSv(`lCft{b?2t8?J5eVwN#AqY_gH`r#3w ziktIZ?i2tO=YXTrzWpMHkBOFUt$M6~Nu62sdjKIKK1k3Z+Y<~%Pt8r9ar;$#bln$0 z%QpJ@pRQ9@>SCX-B<0jM^0tR4>jm13@N=#rH9KU zKJ}y2?7WMUnQ1AYn*IYD8qt#jQwh`Iaw7~UBq+kvENJEGsLVe42cOTIi?4dD^^;kr zTQ(0WHE!cFinFjM`!~tts2K(wMvOXxN?Rq+^8Eqms}(;N{#!32Y>NL&?p%UP@cl6M8(F~Yz8L&FGDyibtBzSw9jNHE8+=zM z%^oe61_%H4WG%xWCD?Es;XN)Wb#D*e;NupUDROz35iA3TX&D76xyL!$I1#y>WlYv5!>&56;to}%uWMS zXTws*BEd|XYRgDX%<(X-?5-zgm}P}!#*v`cbIKWUnDZU~JKY9avY?jAd#Fc6kGNYF zPnC}%&!4JQiAvezIxRL0;!@UFhr`*E8;5+JSx$6>0j%fXP3vaE$rJhbD&CAz;O|{| zzV~rB88ahd6_Q*poM5jd`XFXWv6NX^INmmcSr0RP6^j!yBG+d&1Qcfr8nv({-W*<; zFx4_NZJ5{{^Kj-BD5~uoD|8+l#Oi*;*eq?Gd~Wwt>Ukw_)a?j8@K9eCw2jo@RS`2v z*9!sr0LG$wikR*#x_5e5Z>I`yU++Odps+LQFn+DFw|G^thp$%J1du;B(}U}W7#hv$ zq%mwH9Jr~*)K<_-_f-tUyBB#?9%&x99lpE|vF+%{3OhcqgaFeFQH?8d(~b)%Q}Ul#NH%&U2~P^2%MX;M z9>L4pVWW6W?TqS)RyR%v2UpbfPg$&dz}?ad)T3?HSMJ^i+Pt&S{sSAhzYzcL`j?L7 zNM9b8wiPAq*8u&1B9vZ4Y6^l3)kZexBPM8V|5vI>?EunrZ6izatHcuVs>747W9SXKN$G;d&-)NabAekQNLb+^ z!DrShHZd9_{18sy6GZ(>!pd=sG8|2P<6RGR-;AMygaex#-**&A)idkxHej7Y^8tGO}R;{!|qu{8tz$MSX1{ULRc^oBzf7g7vtKCBQ(2SBW9i| zI5M-sY^DBWHie1V_AR>IQJlI3!rM-Ns+;0kC+gG4r_9WMv3a-$0|l{}`lFd-GjS?N zn6aIs@GIRHfd6ZOxXL5w0Z}F4EO$?ysF|iXJddJVtm?936ssU^dh~*56*`(@H-R?O zQefCB-!Egcpf|`xvo=YcD{+L|=Xt?!m!?TAi0IigmA}(vbyHkk&B0A-lUGLzztc%~ z7KM4(dbS7H^y`Y=Ci^cOh!%N9A;T+h}M45@4Dy#j?YMv%Y=2v)Uvk)p#(;fpR23a*JygPPQHO}pq!KLCO9s4R=Q(=zfk*gN?1DZ2A&x|z;ZOZf<5f_}0`b+4{Mp&vyU{p$TiKGZV zJ}QO|zTB|Soz~Bw$w|djY?EZafI{$sdA)X*?5h2T2f?mtJUNMXm_nx?K5QqsSd$B# zIMF!Myi?g$bfcV1QQ8!Nd8m{h= zGbfqsJxb}wL`EK1)qhqdXx(Dq@Qy~IZiYA-X3*-}EYL%}!K-3}-aKCwN~SJB2l6o7 zeK_96S017e0DFf)$4?nTFhUyc17_%GBbg~S9cok-TzQVF8q zBFR2DPY{h2OQ!0e4GY)uv>5b451~K~m%ZIE3;Iv0utt$WtC*fsy}S7suPdh>b1V#; zaIJddteI}Gm1**tab^V2Out`L2yUpMTUOnmnXYa*v8D82f~fqSx%IOGihlRUtxCUz zDXy!WHJ}W+W0f6u342<6ntz;bz_V%l5XmXuWArV)sN%=@I?Jm4UE|i|zKqwGL&X{h z2RORn}yf7idb{PW??J&XmbzzS`& zorYF|`%HL#b|MPsJ4aUzz-_*6O7cY-2^B z!MZgVW^ehWduPbn*wNv2YZ&U9YHDAX#~ZAcf6nz& = ({ classId }) => { ._, { classId }, ), - { state: { students } }, + { state: { flow: "create", students } }, ) }, catch: () => { diff --git a/src/pages/teacherDashboard/classes/class/ResetStudentsPasswordDialog.tsx b/src/pages/teacherDashboard/classes/class/ResetStudentsPasswordDialog.tsx index a278a99..6d94b3b 100644 --- a/src/pages/teacherDashboard/classes/class/ResetStudentsPasswordDialog.tsx +++ b/src/pages/teacherDashboard/classes/class/ResetStudentsPasswordDialog.tsx @@ -56,6 +56,7 @@ const ResetStudentsPasswordDialog: FC = ({ ), { state: { + flow: "reset-multiple", students: result.reduce( (students, student) => [ ...students, diff --git a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx index c7a3c54..5718df7 100644 --- a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx +++ b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx @@ -1,15 +1,83 @@ import * as pages from "codeforlife/components/page" -import { type Student, type User } from "codeforlife/api" +import { type Class, type Student, type User } from "codeforlife/api" +import { Link, Navigate } from "codeforlife/components/router" import { useLocation, useParams } from "codeforlife/hooks" import { type FC } from "react" -import { Navigate } from "codeforlife/components/router" +import { Typography } from "@mui/material" import { generatePath } from "react-router-dom" +import { handleResultState } from "codeforlife/utils/api" -// import { StudentCredentialsTable } from "../../../components" +import { StudentCredentialsTable } from "../../../../components" import { classIdSchema } from "../../../../app/schemas" import { paths } from "../../../../routes" +import { useRetrieveClassQuery } from "../../../../api/klass.ts" + +const _StudentsCredentials: FC< + StudentsCredentialsState & { + classId: Class["id"] + } +> = ({ classId, ...state }) => { + return handleResultState(useRetrieveClassQuery(classId), klass => ( + + {/*TODO: Add warning notification here which includes button to print + reminder cards.*/} + {state.flow === "create" && ( + <> + + The following credentials have been created for your class. When + they log in for the first time, you may want students to change + their passwords to something more memorable. You can reset these + details for them at any time. + + + To log on, they will need to enter their name and passwords. + Alternatively, you can provide them with a direct access link from + the table below. + + + You will not be shown this page again, so please make sure you + retain a copy of the passwords for your records. You can print the + reminder cards from the button below. Please ensure you share + student passwords securely. + + + )} + {state.flow === "reset-unique" && ( + <> + + Student password reset for class {klass.name} ({classId}) + + + The following student has had their password reset: + + + )} + {state.flow === "reset-multiple" && ( + <> + + Students' passwords reset for class {klass.name} ({classId}) + + + The following students have had their passwords reset: + + + )} + + {/*TODO: This used to be a button, check if it being a link is OK*/} + + class + + + )) +} export interface StudentsCredentialsState { + flow: "create" | "reset-unique" | "reset-multiple" students: Array< Pick & { user: Pick @@ -27,26 +95,20 @@ const StudentsCredentials: FC = () => { return const { classId } = params - const { students } = state || {} - if (!students || !students.length) { - return ( - - ) - } - - return ( - - {/* TODO: replace delete and replace with component when implemented. */} - {classId} - {students.map(student => JSON.stringify(student))} - {/* */} - + return !state || !state.students || !state.students.length || !state.flow ? ( + + ) : ( + <_StudentsCredentials + classId={classId} + flow={state.flow} + students={state.students} + /> ) } diff --git a/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx b/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx index 4d52ea3..cc6eee6 100644 --- a/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx +++ b/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx @@ -46,6 +46,7 @@ const UpdatePasswordForm: FC = ({ classId, user }) => { ), { state: { + flow: "reset-unique", students: [ { ...student, diff --git a/yarn.lock b/yarn.lock index 3590f13..c199374 100644 --- a/yarn.lock +++ b/yarn.lock @@ -987,7 +987,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.25.7" "@babel/plugin-transform-typescript" "^7.25.7" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.9", "@babel/runtime@^7.25.6", "@babel/runtime@^7.25.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.9", "@babel/runtime@^7.25.6", "@babel/runtime@^7.25.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== @@ -1366,6 +1366,21 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@mapbox/node-pre-gyp@^1.0.0": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + "@mui/core-downloads-tracker@^5.16.7": version "5.16.7" resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz#182a325a520f7ebd75de051fceabfc0314cfd004" @@ -1522,6 +1537,140 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@react-pdf/fns@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/fns/-/fns-3.0.0.tgz#2e0137d48b14c531b2f6a9214cb36ea2a7aea3ba" + integrity sha512-ICbIWR93PE6+xf2Xd/fXYO1dAuiOAJaszEuGGv3wp5lLSeeelDXlEYLh6R05okxh28YqMzc0Qd85x6n6MtaLUQ== + dependencies: + "@babel/runtime" "^7.20.13" + +"@react-pdf/font@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/font/-/font-3.0.0.tgz#3d017e04544eea2c5546fdf711ecfeec7bb7c63d" + integrity sha512-/SYEud06maGQiAD0H6J5xnqigKm/FpLKqFYH6+2OjQ2tb32nnKqwqL3pS7glDTFYBJ11B6fVgSNex6tc1V8UDA== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/types" "^2.7.0" + cross-fetch "^3.1.5" + fontkit "^2.0.2" + is-url "^1.2.4" + +"@react-pdf/image@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/image/-/image-3.0.0.tgz#5a8c96821c4a12c2150a9484b414b7b909c24c1e" + integrity sha512-l4HV5NutPw52Wbuvxol0BiFc6TkKXK/kJNwVIElphw47nwfueLEjIfBxRTuOeHmpdibvEh3a5STwYmMTQjXSxg== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/png-js" "^3.0.0" + cross-fetch "^3.1.5" + jay-peg "^1.1.0" + +"@react-pdf/layout@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/layout/-/layout-4.0.0.tgz#fc736ab3e18e65610662f86b520a4b88156d3ee3" + integrity sha512-BNipDwULk9ehvf0V5HLrP2QIujkfj2LzHs8yfCQ/Z8TkAX6dEt1AgwDttBpBLfzcu8w8HFjgpLR1TNOTXiOsAQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/fns" "3.0.0" + "@react-pdf/image" "^3.0.0" + "@react-pdf/pdfkit" "^4.0.0" + "@react-pdf/primitives" "^4.0.0" + "@react-pdf/stylesheet" "^5.0.0" + "@react-pdf/textkit" "^5.0.0" + "@react-pdf/types" "^2.7.0" + cross-fetch "^3.1.5" + emoji-regex "^10.3.0" + queue "^6.0.1" + yoga-layout "^3.1.0" + +"@react-pdf/pdfkit@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/pdfkit/-/pdfkit-4.0.0.tgz#8dbbfc8e546ebd0b76e88bd525fd6bec43c19df4" + integrity sha512-HaaAoBpoRGJ6c1ZOANNQZ3q6Ehmagqa8n40x+OZ5s9HcmUviZ34SCm+QBa42s1o4299M+Lgw3UoqpW7sHv3/Hg== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/png-js" "^3.0.0" + browserify-zlib "^0.2.0" + crypto-js "^4.2.0" + fontkit "^2.0.2" + jay-peg "^1.1.0" + vite-compatible-readable-stream "^3.6.1" + +"@react-pdf/png-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/png-js/-/png-js-3.0.0.tgz#c0b7dc7c77e36f0830e9b7bccca7ddd64ada1c5e" + integrity sha512-eSJnEItZ37WPt6Qv5pncQDxLJRK15eaRwPT+gZoujP548CodenOVp49GST8XJvKMFt9YqIBzGBV/j9AgrOQzVA== + dependencies: + browserify-zlib "^0.2.0" + +"@react-pdf/primitives@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/primitives/-/primitives-4.0.0.tgz#0a710664923547c315386e82a643e58008612844" + integrity sha512-yp4E0rDL03NaUp/CnDBz3HQNfH2Mzdlgku57yhTMGNzetwB0NJusXcjYg5XsTGIXnR7Tv80JKI4O4ajj+oaLeQ== + +"@react-pdf/render@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/render/-/render-4.0.0.tgz#ee368153328cc644c47427d4baf04928634bedca" + integrity sha512-gvrw4HM9RocuDLd+19cvP2xaSs3h4OgYn2N6VDXzj6LYQnoHBAazRV9qMpGi8FuNlQ3Va+s82R1ynXYMr0FXIg== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/fns" "3.0.0" + "@react-pdf/primitives" "^4.0.0" + "@react-pdf/textkit" "^5.0.0" + "@react-pdf/types" "^2.7.0" + abs-svg-path "^0.1.1" + color-string "^1.9.1" + normalize-svg-path "^1.1.0" + parse-svg-path "^0.1.2" + svg-arc-to-cubic-bezier "^3.2.0" + +"@react-pdf/renderer@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/renderer/-/renderer-4.0.0.tgz#cb858789e40a67181ec5d34b1162f123b7a4c7ae" + integrity sha512-yDObqmnF08Mwc24W8axmT/y+JPxJkweVQ/EM3GOXh0qyZN5VP5JvKDiCqmftI6QEKfvTFNsquuEQm13GBjkbMg== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/font" "^3.0.0" + "@react-pdf/layout" "^4.0.0" + "@react-pdf/pdfkit" "^4.0.0" + "@react-pdf/primitives" "^4.0.0" + "@react-pdf/render" "^4.0.0" + "@react-pdf/types" "^2.7.0" + events "^3.3.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + queue "^6.0.1" + scheduler "^0.17.0" + +"@react-pdf/stylesheet@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/stylesheet/-/stylesheet-5.0.0.tgz#ad3633d0806159e03802407f362639a387642823" + integrity sha512-FrJXUMsvSGee13gpL82HOhhk16y3IKxLmYvmJU1ZUo9Jm9pLydnHDPlSUDK+rKmxdSD2X+twUR7sv6FlrA5i+A== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/fns" "3.0.0" + "@react-pdf/types" "^2.7.0" + color-string "^1.9.1" + hsl-to-hex "^1.0.0" + media-engine "^1.0.3" + postcss-value-parser "^4.1.0" + +"@react-pdf/textkit@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@react-pdf/textkit/-/textkit-5.0.0.tgz#b1e07db36c8427644b81723a8491380fdfd59b63" + integrity sha512-+K6zkF6lDXHIZZ9nNzplJ48IrjXNGQqVfO5v73AsutHbvx44E62t46EeoGLHsmjGeMG70TooSI1Mwq/7f/5tLw== + dependencies: + "@babel/runtime" "^7.20.13" + "@react-pdf/fns" "3.0.0" + bidi-js "^1.0.2" + hyphen "^1.6.4" + unicode-properties "^1.4.1" + +"@react-pdf/types@^2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@react-pdf/types/-/types-2.7.0.tgz#56a0232ce420c313fe67cef193cbf57870a01477" + integrity sha512-7KrPPCpgRPKR+g+T127PE4bpw9Q84ZiY07EYRwXKVtTEVW9wJ5BZiF9smT9IvH19s+MQaDLmYRgjESsnqlyH0Q== + "@reduxjs/toolkit@^2.0.1": version "2.2.8" resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.8.tgz#69e6473dd5a395860d387abdd53fe5a2add378c8" @@ -1632,6 +1781,13 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@swc/helpers@^0.5.12": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + "@testing-library/dom@^9.0.0", "@testing-library/dom@^9.3.4": version "9.3.4" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" @@ -1807,6 +1963,13 @@ dependencies: "@types/react" "*" +"@types/react-pdf@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/react-pdf/-/react-pdf-7.0.0.tgz#75ddcfd4c7a7f5c3f9d96ec506d5cddeb1020fbf" + integrity sha512-G0a+5UiKk3AvEauBP/Js7r9kGZNW3iBbS6kXkH0foGSaKWR6K3ElTe7Y4tlolc2VKbM9udmMxpkbxh/dtR2wXA== + dependencies: + react-pdf "*" + "@types/react-transition-group@^4.4.10", "@types/react-transition-group@^4.4.11": version "4.4.11" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5" @@ -2114,6 +2277,16 @@ resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.36.0.tgz#7a1b53f4091e18d0b404873ea3e3c83589c765f2" integrity sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abs-svg-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" + integrity sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA== + accepts@~1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -2139,6 +2312,13 @@ acorn@^8.11.0, acorn@^8.12.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + agent-base@^7.0.2, agent-base@^7.1.0: version "7.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" @@ -2207,11 +2387,24 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + arg@5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -2425,7 +2618,12 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bidi-js@^1.0.3: +base64-js@^1.1.2, base64-js@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bidi-js@^1.0.2, bidi-js@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.3.tgz#6f8bcf3c877c4d9220ddf49b9bb6930c88f877d2" integrity sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw== @@ -2468,6 +2666,20 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" +brotli@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.3.tgz#7365d8cc00f12cf765d2b2c898716bcf4b604d48" + integrity sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg== + dependencies: + base64-js "^1.1.2" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.23.3, browserslist@^4.24.0: version "4.24.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" @@ -2514,6 +2726,15 @@ caniuse-lite@^1.0.30001663: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz#98e214455329f54bf7a4d70b49c9794f0fbedbed" integrity sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw== +canvas@^2.11.2: + version "2.11.2" + resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.11.2.tgz#553d87b1e0228c7ac0fc72887c3adbac4abbd860" + integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + nan "^2.17.0" + simple-get "^3.0.3" + chai@^4.3.10: version "4.5.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" @@ -2576,6 +2797,11 @@ check-error@^1.0.3: dependencies: get-func-name "^2.0.2" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -2595,7 +2821,12 @@ clipboardy@3.0.0: execa "^5.1.1" is-wsl "^2.2.0" -clsx@^2.1.0, clsx@^2.1.1: +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +clsx@^2.0.0, clsx@^2.1.0, clsx@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -2640,11 +2871,24 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2687,6 +2931,11 @@ confusing-browser-globals@^1.0.11: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -2720,6 +2969,13 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2830,6 +3086,13 @@ decimal.js@^10.4.3: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + deep-eql@^4.1.3: version "4.1.4" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" @@ -2899,6 +3162,26 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +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-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + +dfa@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.2.0.tgz#96ac3204e2d29c49ea5b57af8d92c2ae12790657" + integrity sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q== + diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -2953,6 +3236,11 @@ electron-to-chromium@^1.5.28: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz#ec41047f0e1446ec5dce78ed5970116533139b88" integrity sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw== +emoji-regex@^10.3.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" + integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -3422,6 +3710,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -3554,6 +3847,21 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +fontkit@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/fontkit/-/fontkit-2.0.4.tgz#4765d664c68b49b5d6feb6bd1051ee49d8ec5ab0" + integrity sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g== + dependencies: + "@swc/helpers" "^0.5.12" + brotli "^1.3.2" + clone "^2.1.2" + dfa "^1.2.0" + fast-deep-equal "^3.1.3" + restructure "^3.0.0" + tiny-inflate "^1.0.3" + unicode-properties "^1.4.0" + unicode-trie "^2.0.0" + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3584,6 +3892,13 @@ formik@^2.2.9: tiny-warning "^1.0.2" tslib "^2.0.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3614,6 +3929,21 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3773,6 +4103,11 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -3787,6 +4122,18 @@ hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: dependencies: react-is "^16.7.0" +hsl-to-hex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-to-hex/-/hsl-to-hex-1.0.0.tgz#c58c826dc6d2f1e0a5ff1da5a7ecbf03faac1352" + integrity sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA== + dependencies: + hsl-to-rgb-for-reals "^1.1.0" + +hsl-to-rgb-for-reals@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz#e1eb23f6b78016e3722431df68197e6dcdc016d9" + integrity sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg== + html-encoding-sniffer@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" @@ -3807,6 +4154,14 @@ http-proxy-agent@^7.0.0: agent-base "^7.1.0" debug "^4.3.4" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^7.0.2: version "7.0.5" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" @@ -3825,6 +4180,11 @@ human-signals@^5.0.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== +hyphen@^1.6.4: + version "1.10.6" + resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.10.6.tgz#0e779d280e696102b97d7e42f5ca5de2cc97e274" + integrity sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw== + iconv-lite@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" @@ -3868,7 +4228,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.3, 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== @@ -3908,6 +4268,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + 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" @@ -4080,6 +4445,11 @@ is-typed-array@^1.1.13: dependencies: which-typed-array "^1.1.14" +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -4170,6 +4540,13 @@ iterator.prototype@^1.1.3: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" +jay-peg@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jay-peg/-/jay-peg-1.1.0.tgz#5cc2bc7a3023f62fcd862b97472263e308f6a3c6" + integrity sha512-WhyKySfx5CEFoKDnpmHyJUrpX5fUrr/X3kqVHISmiO9jrJC73RQBOAZJB8bDrWT4PHEkl0QgNZLlWJfAWAIFew== + dependencies: + restructure "^3.0.0" + jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -4390,7 +4767,7 @@ lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -4432,6 +4809,18 @@ magicast@^0.3.3: "@babel/types" "^7.25.4" source-map-js "^1.2.0" +make-cancellable-promise@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz#993c8c8b79cff13c74fa93de0bd8a17fe66685c1" + integrity sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww== + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -4439,11 +4828,26 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" +make-event-props@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/make-event-props/-/make-event-props-1.6.2.tgz#c8e0e48eb28b9b808730de38359f6341de7ec5a2" + integrity sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA== + mdn-data@2.0.30: version "2.0.30" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== +media-engine@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/media-engine/-/media-engine-1.0.3.tgz#be3188f6cd243ea2a40804a35de5a5b032f58dad" + integrity sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg== + +merge-refs@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge-refs/-/merge-refs-1.3.0.tgz#65d7f8c5058917b9d1fc204ae4b9a727614d0119" + integrity sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -4501,6 +4905,11 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -4525,6 +4934,31 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mlly@^1.4.2, mlly@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.2.tgz#21c0d04543207495b8d867eff0ac29fac9a023c0" @@ -4550,6 +4984,11 @@ ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nan@^2.17.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -4570,11 +5009,32 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +node-fetch@^2.6.12, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-releases@^2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +normalize-svg-path@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz#0e614eca23c39f0cffe821d6be6cd17e569a766c" + integrity sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg== + dependencies: + svg-arc-to-cubic-bezier "^3.0.0" + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -4589,6 +5049,16 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4664,7 +5134,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0: +once@^1.3.0, once@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -4718,6 +5188,16 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4735,6 +5215,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-svg-path@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/parse-svg-path/-/parse-svg-path-0.1.2.tgz#7a7ec0d1eb06fa5325c7d3e009b859a09b5d49eb" + integrity sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ== + parse5@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" @@ -4782,6 +5267,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path2d@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/path2d/-/path2d-0.2.1.tgz#faf98e5e2222541805a6ac232adc026332330765" + integrity sha512-Fl2z/BHvkTNvkuBzYTpTuirHZg6wW9z8+4SND/3mDTEcYbbNKWAy21dz9D3ePNNwrrK8pqZO5vLPZ1hLF6T7XA== + pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" @@ -4792,6 +5282,14 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +pdfjs-dist@4.4.168: + version "4.4.168" + resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-4.4.168.tgz#4487716376a33c68753ed37f782ae91d1c9ef8fa" + integrity sha512-MbkAjpwka/dMHaCfQ75RY1FXX3IewBVu6NGZOcxerRFlaBiIkZmUoR0jotX5VUzYZEXAGzSFtknWs5xRKliXPA== + optionalDependencies: + canvas "^2.11.2" + path2d "^0.2.0" + picocolors@^1.0.0, picocolors@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" @@ -4816,6 +5314,11 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== +postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + postcss@^8.4.43: version "8.4.47" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" @@ -4906,6 +5409,13 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + range-parser@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -4949,6 +5459,20 @@ react-is@^18.0.0, react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-pdf@*: + version "9.1.1" + resolved "https://registry.yarnpkg.com/react-pdf/-/react-pdf-9.1.1.tgz#10b1d1012e1ad15a12b7d16fbaec5a3dc81068d7" + integrity sha512-Cn3RTJZMqVOOCgLMRXDamLk4LPGfyB2Np3OwQAUjmHIh47EpuGW1OpAA1Z1GVDLoHx4d5duEDo/YbUkDbr4QFQ== + dependencies: + clsx "^2.0.0" + dequal "^2.0.3" + make-cancellable-promise "^1.3.1" + make-event-props "^1.6.0" + merge-refs "^1.3.0" + pdfjs-dist "4.4.168" + tiny-invariant "^1.0.0" + warning "^4.0.0" + react-redux@^9.1.0: version "9.1.2" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.2.tgz#deba38c64c3403e9abd0c3fbeab69ffd9d8a7e4b" @@ -4994,6 +5518,15 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -5136,6 +5669,11 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +restructure@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/restructure/-/restructure-3.0.2.tgz#e6b2fad214f78edee21797fa8160fef50eb9b49a" + integrity sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -5205,7 +5743,7 @@ safe-buffer@5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1: +safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5231,6 +5769,14 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" +scheduler@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" + integrity sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler@^0.23.2: version "0.23.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" @@ -5238,12 +5784,12 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -semver@^6.3.1: +semver@^6.0.0, 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.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -5279,6 +5825,11 @@ serve@^14.2.3: serve-handler "6.1.5" update-check "1.5.4" +set-blocking@^2.0.0: + version "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-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -5328,7 +5879,7 @@ siginfo@^2.0.0: resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -5338,6 +5889,27 @@ signal-exit@^4.1.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" + integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sirv@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" @@ -5391,7 +5963,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -string-width@^4.1.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -5471,6 +6043,13 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -5548,6 +6127,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-arc-to-cubic-bezier@^3.0.0, svg-arc-to-cubic-bezier@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz#390c450035ae1c4a0104d90650304c3bc814abe6" + integrity sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g== + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -5561,6 +6145,18 @@ synckit@^0.9.1: "@pkgr/core" "^0.1.0" tslib "^2.6.2" +tar@^6.1.11: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -5580,6 +6176,16 @@ tiny-case@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== +tiny-inflate@^1.0.0, tiny-inflate@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + +tiny-invariant@^1.0.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -5639,6 +6245,11 @@ tr46@^5.0.0: dependencies: punycode "^2.3.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + ts-api-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" @@ -5659,7 +6270,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.2: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== @@ -5789,11 +6400,27 @@ unicode-match-property-value-ecmascript@^2.1.0: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== +unicode-properties@^1.4.0, unicode-properties@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unicode-properties/-/unicode-properties-1.4.1.tgz#96a9cffb7e619a0dc7368c28da27e05fc8f9be5f" + integrity sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg== + dependencies: + base64-js "^1.3.0" + unicode-trie "^2.0.0" + unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unicode-trie@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" + integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -5835,11 +6462,25 @@ use-sync-external-store@^1.0.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== +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== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vite-compatible-readable-stream@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz#27267aebbdc9893c0ddf65a421279cbb1e31d8cd" + integrity sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + vite-node@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.6.0.tgz#2c7e61129bfecc759478fa592754fd9704aaba7f" @@ -5895,6 +6536,18 @@ w3c-xmlserializer@^5.0.0: dependencies: xml-name-validator "^5.0.0" +warning@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" @@ -5920,6 +6573,14 @@ whatwg-url@^14.0.0: tr46 "^5.0.0" webidl-conversions "^7.0.0" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -5985,6 +6646,13 @@ why-is-node-running@^2.2.2: siginfo "^2.0.0" stackback "0.0.2" +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + widest-line@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" @@ -6031,6 +6699,11 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" @@ -6046,6 +6719,11 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== +yoga-layout@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/yoga-layout/-/yoga-layout-3.1.0.tgz#04d00d7c2160635640dc79b48e7e4fc6a2fba2b2" + integrity sha512-auzJ8lEovThZIpR8wLGWNo/JEj4VTO79q9/gOJ0dWb3shAYPFdX3t9VN0fC0v+jeQF77STUdCzebLwRMqzn5gQ== + yup@^1.1.1: version "1.4.0" resolved "https://registry.yarnpkg.com/yup/-/yup-1.4.0.tgz#898dcd660f9fb97c41f181839d3d65c3ee15a43e" From 3c8b6bfbfe6515f18e32640af6d74fa170368b7e Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 14:53:24 +0100 Subject: [PATCH 02/10] Feedback --- src/components/StudentCredentialsTable.tsx | 169 ++++++++++-------- .../releaseStudents/ReleaseStudents.tsx | 2 +- .../StudentsCredentials.tsx | 96 +++++----- .../transferStudents/TransferStudents.tsx | 2 +- .../updateStudentUser/UpdatePasswordForm.tsx | 2 +- 5 files changed, 143 insertions(+), 128 deletions(-) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index 45bd854..4902a7b 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -1,5 +1,5 @@ import * as tables from "codeforlife/components/table" -import { Button, Stack, Typography } from "@mui/material" +import { Button, Stack, SxProps, Typography } from "@mui/material" import { type Class, type Student, type User } from "codeforlife/api" import { Document, @@ -10,20 +10,17 @@ import { View, pdf, } from "@react-pdf/renderer" +import { type FC, useRef } from "react" import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" -import React, { type FC } from "react" import { CopyIconButton } from "codeforlife/components" import { generatePath } from "react-router-dom" -import { primary } from "codeforlife/theme/colors" import CflLogo from "../images/logo_cfl.png" import { paths } from "../routes" function makeAutoLoginLink( classLoginLink: string, - student: Pick & { - user: Pick - }, + student: StudentCredentialsTableProps["students"][number], ) { return ( `${classLoginLink}?` + @@ -34,62 +31,76 @@ function makeAutoLoginLink( ) } -const PDFstyles = StyleSheet.create({ - mainView: { - border: "2px solid black", - display: "flex", - flexDirection: "row", - gap: 5, - padding: 10, - }, - page: { - padding: 20, - }, - text: { - marginBottom: 5, - fontSize: 12, - }, - image: { - width: 85, - height: 70, - }, -}) - const StudentCredentialsPDF: FC<{ students: StudentCredentialsTableProps["students"] classLoginLink: string -}> = ({ students, classLoginLink }) => ( - - - - Please ensure students keep login details in a secure place - - {students.map(student => ( - - - - {/*TODO: Auto login link is too long and doesn't fit in PDF.*/} - - Directly log in with {makeAutoLoginLink(classLoginLink, student)} - - OR class link: {classLoginLink} - Name: {student.user.first_name} - - Password: {student.user.password} - +}> = ({ students, classLoginLink }) => { + const pdfStyles = StyleSheet.create({ + mainView: { + border: "2px solid black", + display: "flex", + flexDirection: "row", + gap: 5, + padding: 10, + }, + page: { + padding: 20, + }, + text: { + marginBottom: 5, + fontSize: 12, + }, + image: { + width: 85, + height: 70, + }, + }) + + return ( + + + + Please ensure students keep login details in a secure place + + {students.map(student => ( + + + + {/*TODO: Auto login link is too long and doesn't fit in PDF.*/} + + Directly log in with{" "} + {makeAutoLoginLink(classLoginLink, student)} + + + OR class link: {classLoginLink} + + + Name: {student.user.first_name} + + + Password: {student.user.password} + + - - ))} - - -) + ))} + + + ) +} -const DownloadPDFButton: FC = ({ - classId, +export interface DownloadButtonProps { + classLoginLink: string + students: StudentCredentialsTableProps["students"] +} + +const DownloadPDFButton: FC = ({ + classLoginLink, students, }) => { - const classLoginLink = generatePath(paths.login.student.class._, { classId }) - const linkRef = React.useRef(null) + const linkRef = useRef(null) const downloadPdf = async (): Promise => { try { @@ -128,8 +139,8 @@ const DownloadPDFButton: FC = ({ ) } -const DownloadCSVButton: FC = ({ - classId, +const DownloadCSVButton: FC = ({ + classLoginLink, students, }) => { const generateCSV: ( @@ -142,8 +153,7 @@ const DownloadCSVButton: FC = ({ }) return csvContent } - const classLoginLink = generatePath(paths.login.student.class._, { classId }) - const linkRef = React.useRef(null) + const linkRef = useRef(null) const downloadCSV: () => void = () => { const csvContent = generateCSV(students, classLoginLink) @@ -184,6 +194,11 @@ const StudentCredentialsTable: FC = ({ }) => { const classLoginLink = generatePath(paths.login.student.class._, { classId }) + const headerCellSx: SxProps = { + background: "#9a9c9e", + color: "white !important", + } + return ( <> = ({ headers={[ { colSpan: 2, children: "Option 1 Login details", width: "46%" }, { sx: { background: "white" }, children: "", width: "8%" }, - { children: "Option 2 Login links" }, + "Option 2 Login links", ]} > @@ -210,11 +225,11 @@ const StudentCredentialsTable: FC = ({ = ({ - - Name - - - Password - + Name + Password - + Copy the links below and share with the student @@ -265,8 +270,14 @@ const StudentCredentialsTable: FC = ({ })} - - + + ) diff --git a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx index 12ae98d..9b1cee3 100644 --- a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx +++ b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx @@ -80,7 +80,7 @@ const ReleaseStudents: FC = () => { classId, }) - return !state || !state.studentUsers || !state.studentUsers.length ? ( + return !(state && state.studentUsers && state.studentUsers.length) ? ( ) : ( <_ReleaseStudents diff --git a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx index 5718df7..07f1e81 100644 --- a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx +++ b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx @@ -16,58 +16,62 @@ const _StudentsCredentials: FC< StudentsCredentialsState & { classId: Class["id"] } -> = ({ classId, ...state }) => { +> = ({ classId, flow, students }) => { return handleResultState(useRetrieveClassQuery(classId), klass => ( {/*TODO: Add warning notification here which includes button to print reminder cards.*/} - {state.flow === "create" && ( - <> - - The following credentials have been created for your class. When - they log in for the first time, you may want students to change - their passwords to something more memorable. You can reset these - details for them at any time. - - - To log on, they will need to enter their name and passwords. - Alternatively, you can provide them with a direct access link from - the table below. - - - You will not be shown this page again, so please make sure you - retain a copy of the passwords for your records. You can print the - reminder cards from the button below. Please ensure you share - student passwords securely. - - - )} - {state.flow === "reset-unique" && ( - <> - - Student password reset for class {klass.name} ({classId}) - - - The following student has had their password reset: - - - )} - {state.flow === "reset-multiple" && ( - <> - - Students' passwords reset for class {klass.name} ({classId}) - - - The following students have had their passwords reset: - - - )} - - {/*TODO: This used to be a button, check if it being a link is OK*/} + { + { + create: ( + <> + + The following credentials have been created for {klass.name} ( + {classId}). When they log in for the first time, you may want + students to change their passwords to something more memorable. + You can reset these details for them at any time. + + + To log on, they will need to enter their name and passwords. + Alternatively, you can provide them with a direct access link + from the table below. + + + You will not be shown this page again, so please make sure you + retain a copy of the passwords for your records. You can print + the reminder cards from the button below. Please ensure you + share student passwords securely. + + + ), + "reset-single": ( + <> + + Student password reset for class {klass.name} ({classId}) + + + The following student has had their password reset: + + + ), + "reset-multiple": ( + <> + + Students' passwords reset for class {klass.name} ({classId} + ) + + + The following students have had their passwords reset: + + + ), + }[flow] + } + class @@ -77,7 +81,7 @@ const _StudentsCredentials: FC< } export interface StudentsCredentialsState { - flow: "create" | "reset-unique" | "reset-multiple" + flow: "create" | "reset-single" | "reset-multiple" students: Array< Pick & { user: Pick diff --git a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx index 83e0f79..f61412f 100644 --- a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx +++ b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx @@ -98,7 +98,7 @@ const TransferStudents: FC = () => { classId, }) - return !state || !state.studentUsers || !state.studentUsers.length ? ( + return !(state && state.studentUsers && state.studentUsers.length) ? ( ) : ( <_TransferStudents diff --git a/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx b/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx index cc6eee6..f9f369b 100644 --- a/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx +++ b/src/pages/teacherDashboard/classes/updateStudentUser/UpdatePasswordForm.tsx @@ -46,7 +46,7 @@ const UpdatePasswordForm: FC = ({ classId, user }) => { ), { state: { - flow: "reset-unique", + flow: "reset-single", students: [ { ...student, From 6c6aac183767dcbe04c4b33a05b69aaed2fa80de Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 14:55:06 +0100 Subject: [PATCH 03/10] Improve logic --- .../classes/studentsCredentials/StudentsCredentials.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx index 07f1e81..d5ce897 100644 --- a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx +++ b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx @@ -100,7 +100,7 @@ const StudentsCredentials: FC = () => { const { classId } = params - return !state || !state.students || !state.students.length || !state.flow ? ( + return !(state && state.students && state.students.length && state.flow) ? ( Date: Fri, 18 Oct 2024 15:06:44 +0100 Subject: [PATCH 04/10] Type only import --- src/components/StudentCredentialsTable.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index 4902a7b..1fb7589 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -1,5 +1,5 @@ import * as tables from "codeforlife/components/table" -import { Button, Stack, SxProps, Typography } from "@mui/material" +import { Button, Stack, type SxProps, Typography } from "@mui/material" import { type Class, type Student, type User } from "codeforlife/api" import { Document, From 6560d3d1a3a146c94e8c806af852f1d6d9b222af Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 15:22:17 +0100 Subject: [PATCH 05/10] Feedback pt. 2 --- src/components/StudentCredentialsTable.tsx | 2 +- src/features/footer/Footer.tsx | 4 ++-- ...iversary.png => 10YearsAnniversaryImage.png} | Bin src/images/{10x_logo.png => 10xLogoImage.png} | Bin ..._hexagon.png => AboutUsHeroHexagonImage.png} | Bin src/images/{about_us.jpg => AboutUsImage.jpg} | Bin ...about_us_ocado.jpg => AboutUsOcadoImage.jpg} | Bin src/images/{bcs_logo.png => BCSLogoImage.png} | Bin ...{barefoot_logo.png => BarefootLogoImage.png} | Bin src/images/{logo_cfl.png => CFLLogoImage.png} | Bin ..._cfl_powered.svg => CFLPoweredLogoImage.svg} | 0 src/images/{clubs.png => ClubsImage.png} | Bin ...xagon.png => CodingClubHeroHexagonImage.png} | Bin ...n_pack.png => CodingClubPythonPackImage.png} | Bin ...n_controller.png => ControllerIconImage.png} | Bin ...rd_educate.png => DashboardEducateImage.png} | Bin ...ashboard_play.png => DashboardPlayImage.png} | Bin src/images/{icon_free.png => FreeIconImage.png} | Bin src/images/{gla_logo.png => GLALogoImage.png} | Bin ...agon.png => GetInvolvedHeroHexagonImage.png} | Bin src/images/{github.png => GithubImage.png} | Bin .../{icon_globe.png => GlobeIconImage.png} | Bin ...gon.png => HomeLearningHeroHexagonImage.png} | Bin src/images/{hope_logo.png => HopeLogoImage.png} | Bin src/images/{icl_logo.png => ICLLogoImage.png} | Bin ..._saatchi_logo.png => MCSaatchiLogoImage.png} | Bin ...{icon_piechart.png => PiechartIconImage.png} | Bin ...ker_logo.png => PressureCookerLogoImage.png} | Bin .../{rr_advanced.png => RRAdvancedImage.png} | Bin .../{rr_beginner.png => RRBeginnerImage.png} | Bin .../{RR_logo_green.svg => RRGreenLogoImage.svg} | 0 ...intermediate.png => RRIntermediateImage.png} | Bin src/images/{RR_logo.svg => RRLogoImage.svg} | 0 src/images/{reuben.png => ReubenImage.png} | Bin src/images/{rob.png => RobImage.png} | Bin ...ron_harrison.jpg => SharonHarrisonImage.jpg} | Bin src/images/{sian.png => SianImage.png} | Bin .../{universities.png => UniversitiesImage.png} | Bin src/pages/aboutUs/AboutUs.tsx | 2 +- src/pages/aboutUs/CodeForLife.tsx | 2 +- src/pages/aboutUs/Dedication.tsx | 2 +- src/pages/aboutUs/OcadoGroup.tsx | 2 +- src/pages/aboutUs/Supporters.tsx | 16 ++++++++-------- src/pages/codingClubs/CodingClubs.tsx | 2 +- src/pages/codingClubs/Primary.tsx | 2 +- src/pages/codingClubs/Python.tsx | 2 +- src/pages/getInvolved/GetInvolved.tsx | 8 ++++---- src/pages/home/AboutUs.tsx | 8 ++++---- src/pages/home/Quotes.tsx | 6 +++--- src/pages/home/TargetAudience.tsx | 4 ++-- src/pages/homeLearning/Advanced.tsx | 2 +- src/pages/homeLearning/Beginner.tsx | 2 +- src/pages/homeLearning/HomeLearning.tsx | 2 +- src/pages/homeLearning/Intermediate.tsx | 2 +- src/pages/studentDashboard/Games.tsx | 2 +- .../studentDashboard/RapidRouterProgress.tsx | 2 +- .../classes/releaseStudents/ReleaseStudents.tsx | 6 +++--- .../studentsCredentials/StudentsCredentials.tsx | 16 ++++++++-------- .../transferStudents/TransferStudents.tsx | 6 +++--- 59 files changed, 51 insertions(+), 51 deletions(-) rename src/images/{10_years_anniversary.png => 10YearsAnniversaryImage.png} (100%) rename src/images/{10x_logo.png => 10xLogoImage.png} (100%) rename src/images/{about_us_hero_hexagon.png => AboutUsHeroHexagonImage.png} (100%) rename src/images/{about_us.jpg => AboutUsImage.jpg} (100%) rename src/images/{about_us_ocado.jpg => AboutUsOcadoImage.jpg} (100%) rename src/images/{bcs_logo.png => BCSLogoImage.png} (100%) rename src/images/{barefoot_logo.png => BarefootLogoImage.png} (100%) rename src/images/{logo_cfl.png => CFLLogoImage.png} (100%) rename src/images/{logo_cfl_powered.svg => CFLPoweredLogoImage.svg} (100%) rename src/images/{clubs.png => ClubsImage.png} (100%) rename src/images/{coding_club_hero_hexagon.png => CodingClubHeroHexagonImage.png} (100%) rename src/images/{coding_club_python_pack.png => CodingClubPythonPackImage.png} (100%) rename src/images/{icon_controller.png => ControllerIconImage.png} (100%) rename src/images/{dashboard_educate.png => DashboardEducateImage.png} (100%) rename src/images/{dashboard_play.png => DashboardPlayImage.png} (100%) rename src/images/{icon_free.png => FreeIconImage.png} (100%) rename src/images/{gla_logo.png => GLALogoImage.png} (100%) rename src/images/{get_involved_hero_hexagon.png => GetInvolvedHeroHexagonImage.png} (100%) rename src/images/{github.png => GithubImage.png} (100%) rename src/images/{icon_globe.png => GlobeIconImage.png} (100%) rename src/images/{home_learning_hero_hexagon.png => HomeLearningHeroHexagonImage.png} (100%) rename src/images/{hope_logo.png => HopeLogoImage.png} (100%) rename src/images/{icl_logo.png => ICLLogoImage.png} (100%) rename src/images/{mc_saatchi_logo.png => MCSaatchiLogoImage.png} (100%) rename src/images/{icon_piechart.png => PiechartIconImage.png} (100%) rename src/images/{pressure_cooker_logo.png => PressureCookerLogoImage.png} (100%) rename src/images/{rr_advanced.png => RRAdvancedImage.png} (100%) rename src/images/{rr_beginner.png => RRBeginnerImage.png} (100%) rename src/images/{RR_logo_green.svg => RRGreenLogoImage.svg} (100%) rename src/images/{rr_intermediate.png => RRIntermediateImage.png} (100%) rename src/images/{RR_logo.svg => RRLogoImage.svg} (100%) rename src/images/{reuben.png => ReubenImage.png} (100%) rename src/images/{rob.png => RobImage.png} (100%) rename src/images/{sharon_harrison.jpg => SharonHarrisonImage.jpg} (100%) rename src/images/{sian.png => SianImage.png} (100%) rename src/images/{universities.png => UniversitiesImage.png} (100%) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index 1fb7589..f828a20 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -15,7 +15,7 @@ import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" import { CopyIconButton } from "codeforlife/components" import { generatePath } from "react-router-dom" -import CflLogo from "../images/logo_cfl.png" +import CflLogo from "../images/CFLLogoImage.png" import { paths } from "../routes" function makeAutoLoginLink( diff --git a/src/features/footer/Footer.tsx b/src/features/footer/Footer.tsx index 96ae670..8cd2d2d 100644 --- a/src/features/footer/Footer.tsx +++ b/src/features/footer/Footer.tsx @@ -9,12 +9,12 @@ import { Image } from "codeforlife/components" import { ThemedBox } from "codeforlife/theme" import { primary } from "codeforlife/theme/colors" -import CflLogoPowered from "../../images/logo_cfl_powered.svg" +import CflLogoPowered from "../../images/CFLPoweredLogoImage.svg" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" import Links from "./Links" import RegisterToNewsletterForm from "./RegisterToNewsletterForm.tsx" import SocialMediaIcons from "./SocialMediaIcons" -import TenYearAnniversary from "../../images/10_years_anniversary.png" +import TenYearAnniversary from "../../images/10YearsAnniversaryImage.png" import { themeOptions } from "../../app/theme" export interface FooterProps {} diff --git a/src/images/10_years_anniversary.png b/src/images/10YearsAnniversaryImage.png similarity index 100% rename from src/images/10_years_anniversary.png rename to src/images/10YearsAnniversaryImage.png diff --git a/src/images/10x_logo.png b/src/images/10xLogoImage.png similarity index 100% rename from src/images/10x_logo.png rename to src/images/10xLogoImage.png diff --git a/src/images/about_us_hero_hexagon.png b/src/images/AboutUsHeroHexagonImage.png similarity index 100% rename from src/images/about_us_hero_hexagon.png rename to src/images/AboutUsHeroHexagonImage.png diff --git a/src/images/about_us.jpg b/src/images/AboutUsImage.jpg similarity index 100% rename from src/images/about_us.jpg rename to src/images/AboutUsImage.jpg diff --git a/src/images/about_us_ocado.jpg b/src/images/AboutUsOcadoImage.jpg similarity index 100% rename from src/images/about_us_ocado.jpg rename to src/images/AboutUsOcadoImage.jpg diff --git a/src/images/bcs_logo.png b/src/images/BCSLogoImage.png similarity index 100% rename from src/images/bcs_logo.png rename to src/images/BCSLogoImage.png diff --git a/src/images/barefoot_logo.png b/src/images/BarefootLogoImage.png similarity index 100% rename from src/images/barefoot_logo.png rename to src/images/BarefootLogoImage.png diff --git a/src/images/logo_cfl.png b/src/images/CFLLogoImage.png similarity index 100% rename from src/images/logo_cfl.png rename to src/images/CFLLogoImage.png diff --git a/src/images/logo_cfl_powered.svg b/src/images/CFLPoweredLogoImage.svg similarity index 100% rename from src/images/logo_cfl_powered.svg rename to src/images/CFLPoweredLogoImage.svg diff --git a/src/images/clubs.png b/src/images/ClubsImage.png similarity index 100% rename from src/images/clubs.png rename to src/images/ClubsImage.png diff --git a/src/images/coding_club_hero_hexagon.png b/src/images/CodingClubHeroHexagonImage.png similarity index 100% rename from src/images/coding_club_hero_hexagon.png rename to src/images/CodingClubHeroHexagonImage.png diff --git a/src/images/coding_club_python_pack.png b/src/images/CodingClubPythonPackImage.png similarity index 100% rename from src/images/coding_club_python_pack.png rename to src/images/CodingClubPythonPackImage.png diff --git a/src/images/icon_controller.png b/src/images/ControllerIconImage.png similarity index 100% rename from src/images/icon_controller.png rename to src/images/ControllerIconImage.png diff --git a/src/images/dashboard_educate.png b/src/images/DashboardEducateImage.png similarity index 100% rename from src/images/dashboard_educate.png rename to src/images/DashboardEducateImage.png diff --git a/src/images/dashboard_play.png b/src/images/DashboardPlayImage.png similarity index 100% rename from src/images/dashboard_play.png rename to src/images/DashboardPlayImage.png diff --git a/src/images/icon_free.png b/src/images/FreeIconImage.png similarity index 100% rename from src/images/icon_free.png rename to src/images/FreeIconImage.png diff --git a/src/images/gla_logo.png b/src/images/GLALogoImage.png similarity index 100% rename from src/images/gla_logo.png rename to src/images/GLALogoImage.png diff --git a/src/images/get_involved_hero_hexagon.png b/src/images/GetInvolvedHeroHexagonImage.png similarity index 100% rename from src/images/get_involved_hero_hexagon.png rename to src/images/GetInvolvedHeroHexagonImage.png diff --git a/src/images/github.png b/src/images/GithubImage.png similarity index 100% rename from src/images/github.png rename to src/images/GithubImage.png diff --git a/src/images/icon_globe.png b/src/images/GlobeIconImage.png similarity index 100% rename from src/images/icon_globe.png rename to src/images/GlobeIconImage.png diff --git a/src/images/home_learning_hero_hexagon.png b/src/images/HomeLearningHeroHexagonImage.png similarity index 100% rename from src/images/home_learning_hero_hexagon.png rename to src/images/HomeLearningHeroHexagonImage.png diff --git a/src/images/hope_logo.png b/src/images/HopeLogoImage.png similarity index 100% rename from src/images/hope_logo.png rename to src/images/HopeLogoImage.png diff --git a/src/images/icl_logo.png b/src/images/ICLLogoImage.png similarity index 100% rename from src/images/icl_logo.png rename to src/images/ICLLogoImage.png diff --git a/src/images/mc_saatchi_logo.png b/src/images/MCSaatchiLogoImage.png similarity index 100% rename from src/images/mc_saatchi_logo.png rename to src/images/MCSaatchiLogoImage.png diff --git a/src/images/icon_piechart.png b/src/images/PiechartIconImage.png similarity index 100% rename from src/images/icon_piechart.png rename to src/images/PiechartIconImage.png diff --git a/src/images/pressure_cooker_logo.png b/src/images/PressureCookerLogoImage.png similarity index 100% rename from src/images/pressure_cooker_logo.png rename to src/images/PressureCookerLogoImage.png diff --git a/src/images/rr_advanced.png b/src/images/RRAdvancedImage.png similarity index 100% rename from src/images/rr_advanced.png rename to src/images/RRAdvancedImage.png diff --git a/src/images/rr_beginner.png b/src/images/RRBeginnerImage.png similarity index 100% rename from src/images/rr_beginner.png rename to src/images/RRBeginnerImage.png diff --git a/src/images/RR_logo_green.svg b/src/images/RRGreenLogoImage.svg similarity index 100% rename from src/images/RR_logo_green.svg rename to src/images/RRGreenLogoImage.svg diff --git a/src/images/rr_intermediate.png b/src/images/RRIntermediateImage.png similarity index 100% rename from src/images/rr_intermediate.png rename to src/images/RRIntermediateImage.png diff --git a/src/images/RR_logo.svg b/src/images/RRLogoImage.svg similarity index 100% rename from src/images/RR_logo.svg rename to src/images/RRLogoImage.svg diff --git a/src/images/reuben.png b/src/images/ReubenImage.png similarity index 100% rename from src/images/reuben.png rename to src/images/ReubenImage.png diff --git a/src/images/rob.png b/src/images/RobImage.png similarity index 100% rename from src/images/rob.png rename to src/images/RobImage.png diff --git a/src/images/sharon_harrison.jpg b/src/images/SharonHarrisonImage.jpg similarity index 100% rename from src/images/sharon_harrison.jpg rename to src/images/SharonHarrisonImage.jpg diff --git a/src/images/sian.png b/src/images/SianImage.png similarity index 100% rename from src/images/sian.png rename to src/images/SianImage.png diff --git a/src/images/universities.png b/src/images/UniversitiesImage.png similarity index 100% rename from src/images/universities.png rename to src/images/UniversitiesImage.png diff --git a/src/pages/aboutUs/AboutUs.tsx b/src/pages/aboutUs/AboutUs.tsx index 1ec74c9..bb3524b 100644 --- a/src/pages/aboutUs/AboutUs.tsx +++ b/src/pages/aboutUs/AboutUs.tsx @@ -1,7 +1,7 @@ import * as page from "codeforlife/components/page" import { type FC } from "react" -import AboutUsHeroImage from "../../images/about_us_hero_hexagon.png" +import AboutUsHeroImage from "../../images/AboutUsHeroHexagonImage.png" import CodeForLife from "./CodeForLife" import Dedication from "./Dedication" import OcadoGroup from "./OcadoGroup" diff --git a/src/pages/aboutUs/CodeForLife.tsx b/src/pages/aboutUs/CodeForLife.tsx index 4726ebb..0c4f7b2 100644 --- a/src/pages/aboutUs/CodeForLife.tsx +++ b/src/pages/aboutUs/CodeForLife.tsx @@ -1,7 +1,7 @@ import { type FC } from "react" import { Typography } from "@mui/material" -import AboutUsCFLImage from "../../images/about_us.jpg" +import AboutUsCFLImage from "../../images/AboutUsImage.jpg" import Introduction from "../../components/Introduction" export interface CodeForLifeProps {} diff --git a/src/pages/aboutUs/Dedication.tsx b/src/pages/aboutUs/Dedication.tsx index 3b1b45c..04b39d5 100644 --- a/src/pages/aboutUs/Dedication.tsx +++ b/src/pages/aboutUs/Dedication.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Image } from "codeforlife/components" -import SharonHarrisonImage from "../../images/sharon_harrison.jpg" +import SharonHarrisonImage from "../../images/SharonHarrisonImage.jpg" export interface DedicationProps {} diff --git a/src/pages/aboutUs/OcadoGroup.tsx b/src/pages/aboutUs/OcadoGroup.tsx index a31fb50..8015c7e 100644 --- a/src/pages/aboutUs/OcadoGroup.tsx +++ b/src/pages/aboutUs/OcadoGroup.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { Link } from "codeforlife/components/router" import { Typography } from "@mui/material" -import AboutUsOcadoImage from "../../images/about_us_ocado.jpg" +import AboutUsOcadoImage from "../../images/AboutUsOcadoImage.jpg" import Introduction from "../../components/Introduction" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" diff --git a/src/pages/aboutUs/Supporters.tsx b/src/pages/aboutUs/Supporters.tsx index 30eeee6..c1abd20 100644 --- a/src/pages/aboutUs/Supporters.tsx +++ b/src/pages/aboutUs/Supporters.tsx @@ -4,14 +4,14 @@ import { Image } from "codeforlife/components" import { Link } from "codeforlife/components/router" import { LINK_CFL_DOCS, LINK_PORTAL_GITHUB } from "../../app/env" -import BarefootImage from "../../images/barefoot_logo.png" -import BcsImage from "../../images/bcs_logo.png" -import GLAImage from "../../images/gla_logo.png" -import HOPEImage from "../../images/hope_logo.png" -import IclImage from "../../images/icl_logo.png" -import Logo10xImage from "../../images/10x_logo.png" -import MCSaatchiImage from "../../images/mc_saatchi_logo.png" -import PressureCookerImage from "../../images/pressure_cooker_logo.png" +import BarefootImage from "../../images/BarefootLogoImage.png" +import BcsImage from "../../images/BCSLogoImage.png" +import GLAImage from "../../images/GLALogoImage.png" +import HOPEImage from "../../images/HopeLogoImage.png" +import IclImage from "../../images/ICLLogoImage.png" +import Logo10xImage from "../../images/10xLogoImage.png" +import MCSaatchiImage from "../../images/MCSaatchiLogoImage.png" +import PressureCookerImage from "../../images/PressureCookerLogoImage.png" const Supporter: FC<{ desc: string diff --git a/src/pages/codingClubs/CodingClubs.tsx b/src/pages/codingClubs/CodingClubs.tsx index ebcb7e0..b3b7063 100644 --- a/src/pages/codingClubs/CodingClubs.tsx +++ b/src/pages/codingClubs/CodingClubs.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { useTheme } from "@mui/material" import ClubAim from "./ClubAim" -import CodeClubHeroImage from "../../images/coding_club_hero_hexagon.png" +import CodeClubHeroImage from "../../images/CodingClubHeroHexagonImage.png" import Primary from "./Primary" import Python from "./Python" diff --git a/src/pages/codingClubs/Primary.tsx b/src/pages/codingClubs/Primary.tsx index d6b995b..11df890 100644 --- a/src/pages/codingClubs/Primary.tsx +++ b/src/pages/codingClubs/Primary.tsx @@ -7,7 +7,7 @@ import { LINK_PRIMARY_PACK_DOWNLOAD, LINK_PRIMARY_PACK_GITBOOK, } from "../../app/env" -import AboutUsImage from "../../images/about_us.jpg" +import AboutUsImage from "../../images/AboutUsImage.jpg" import Introduction from "../../components/Introduction" export interface PrimaryProps {} diff --git a/src/pages/codingClubs/Python.tsx b/src/pages/codingClubs/Python.tsx index fdbc2e4..11ec4e0 100644 --- a/src/pages/codingClubs/Python.tsx +++ b/src/pages/codingClubs/Python.tsx @@ -8,7 +8,7 @@ import { LINK_PYTHON_PACK_GITBOOK, } from "../../app/env" import Introduction from "../../components/Introduction" -import PythonClubImage from "../../images/coding_club_python_pack.png" +import PythonClubImage from "../../images/CodingClubPythonPackImage.png" export interface PythonProps {} diff --git a/src/pages/getInvolved/GetInvolved.tsx b/src/pages/getInvolved/GetInvolved.tsx index 654a8b6..d12c7da 100644 --- a/src/pages/getInvolved/GetInvolved.tsx +++ b/src/pages/getInvolved/GetInvolved.tsx @@ -4,10 +4,10 @@ import { type FC } from "react" import { Unstable_Grid2 as Grid } from "@mui/material" import Card from "../../components/Card" -import ClubsImg from "../../images/clubs.png" -import GetInvolvedHero from "../../images/get_involved_hero_hexagon.png" -import GithubImg from "../../images/github.png" -import UniversitiesImg from "../../images/universities.png" +import ClubsImg from "../../images/ClubsImage.png" +import GetInvolvedHero from "../../images/GetInvolvedHeroHexagonImage.png" +import GithubImg from "../../images/GithubImage.png" +import UniversitiesImg from "../../images/UniversitiesImage.png" import { paths } from "../../routes" export interface GetInvolvedProps {} diff --git a/src/pages/home/AboutUs.tsx b/src/pages/home/AboutUs.tsx index d57bd52..e4671b1 100644 --- a/src/pages/home/AboutUs.tsx +++ b/src/pages/home/AboutUs.tsx @@ -4,11 +4,11 @@ import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" import { Image } from "codeforlife/components" -import ControllerIcon from "../../images/icon_controller.png" -import GlobeIcon from "../../images/icon_globe.png" +import ControllerIcon from "../../images/ControllerIconImage.png" +import GlobeIcon from "../../images/GlobeIconImage.png" import { LINK_FEMALE_GRADUATES_IN_CS } from "../../app/env" -import PieChartIcon from "../../images/icon_piechart.png" -import TicketIcon from "../../images/icon_free.png" +import PieChartIcon from "../../images/PiechartIconImage.png" +import TicketIcon from "../../images/FreeIconImage.png" import { paths } from "../../routes" const Column: FC<{ diff --git a/src/pages/home/Quotes.tsx b/src/pages/home/Quotes.tsx index 237cb61..863c3b7 100644 --- a/src/pages/home/Quotes.tsx +++ b/src/pages/home/Quotes.tsx @@ -3,9 +3,9 @@ import { Image, type ImageProps } from "codeforlife/components" import { type FC } from "react" import { Link } from "codeforlife/components/router" -import ReubenPhoto from "../../images/reuben.png" -import RobPhoto from "../../images/rob.png" -import SianPhoto from "../../images/sian.png" +import ReubenPhoto from "../../images/ReubenImage.png" +import RobPhoto from "../../images/RobImage.png" +import SianPhoto from "../../images/SianImage.png" import { paths } from "../../routes" const Column: FC<{ diff --git a/src/pages/home/TargetAudience.tsx b/src/pages/home/TargetAudience.tsx index 3378e90..e8b2852 100644 --- a/src/pages/home/TargetAudience.tsx +++ b/src/pages/home/TargetAudience.tsx @@ -4,8 +4,8 @@ import { Stack, type SxProps, Typography, useTheme } from "@mui/material" import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" -import EducateImage from "../../images/dashboard_educate.png" -import PlayImage from "../../images/dashboard_play.png" +import EducateImage from "../../images/DashboardEducateImage.png" +import PlayImage from "../../images/DashboardPlayImage.png" import { paths } from "../../routes" export interface TargetAudienceProps {} diff --git a/src/pages/homeLearning/Advanced.tsx b/src/pages/homeLearning/Advanced.tsx index cbea458..9d8e3e5 100644 --- a/src/pages/homeLearning/Advanced.tsx +++ b/src/pages/homeLearning/Advanced.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_ADVANCED } from "../../app/env" import Levels from "./Levels" import { Link } from "codeforlife/components/router" -import RRAdvancedImage from "../../images/rr_advanced.png" +import RRAdvancedImage from "../../images/RRAdvancedImage.png" import { paths } from "../../routes" export interface AdvancedProps {} diff --git a/src/pages/homeLearning/Beginner.tsx b/src/pages/homeLearning/Beginner.tsx index 91ca2f9..729c442 100644 --- a/src/pages/homeLearning/Beginner.tsx +++ b/src/pages/homeLearning/Beginner.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_BEGINNER } from "../../app/env" import Levels from "./Levels" -import RRBeginnerImage from "../../images/rr_beginner.png" +import RRBeginnerImage from "../../images/RRBeginnerImage.png" export interface BeginnerProps {} diff --git a/src/pages/homeLearning/HomeLearning.tsx b/src/pages/homeLearning/HomeLearning.tsx index db11462..ff6d854 100644 --- a/src/pages/homeLearning/HomeLearning.tsx +++ b/src/pages/homeLearning/HomeLearning.tsx @@ -6,7 +6,7 @@ import { Send as SendIcon } from "@mui/icons-material" import AboutRR from "./AboutRR" import Advanced from "./Advanced" import Beginner from "./Beginner" -import HomeLearningHeroImage from "../../images/home_learning_hero_hexagon.png" +import HomeLearningHeroImage from "../../images/HomeLearningHeroHexagonImage.png" import Intermediate from "./Intermediate" import { LINK_IDEAS_BOX } from "../../app/env" import { paths } from "../../routes" diff --git a/src/pages/homeLearning/Intermediate.tsx b/src/pages/homeLearning/Intermediate.tsx index dc096a7..3861bd4 100644 --- a/src/pages/homeLearning/Intermediate.tsx +++ b/src/pages/homeLearning/Intermediate.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_INTERMEDIATE } from "../../app/env" import Levels from "./Levels" -import RRIntermediateImage from "../../images/rr_intermediate.png" +import RRIntermediateImage from "../../images/RRIntermediateImage.png" export interface IntermediateProps {} diff --git a/src/pages/studentDashboard/Games.tsx b/src/pages/studentDashboard/Games.tsx index 2273169..b0b358d 100644 --- a/src/pages/studentDashboard/Games.tsx +++ b/src/pages/studentDashboard/Games.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Card } from "../../components" -import RRLogoGreenImage from "../../images/RR_logo_green.svg" +import RRLogoGreenImage from "../../images/RRGreenLogoImage.svg" import { paths } from "../../routes" export interface GamesProps {} diff --git a/src/pages/studentDashboard/RapidRouterProgress.tsx b/src/pages/studentDashboard/RapidRouterProgress.tsx index 8c63d30..74930d8 100644 --- a/src/pages/studentDashboard/RapidRouterProgress.tsx +++ b/src/pages/studentDashboard/RapidRouterProgress.tsx @@ -5,7 +5,7 @@ import { Image } from "codeforlife/components" import { LinkButton } from "codeforlife/components/router" // import { useRetrieveUserQuery } from "../../api/rapidRouter" -import RRLogoImage from "../../images/RR_logo.svg" +import RRLogoImage from "../../images/RRLogoImage.svg" import { paths } from "../../routes" const GetRapidRouterScores: React.FC = () => { diff --git a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx index 9b1cee3..9d0c4d2 100644 --- a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx +++ b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx @@ -80,14 +80,14 @@ const ReleaseStudents: FC = () => { classId, }) - return !(state && state.studentUsers && state.studentUsers.length) ? ( - - ) : ( + return state && state.studentUsers && state.studentUsers.length ? ( <_ReleaseStudents classId={classId} classPath={classPath} studentUsers={state.studentUsers} /> + ) : ( + ) } diff --git a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx index d5ce897..91bcffe 100644 --- a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx +++ b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx @@ -71,7 +71,7 @@ const _StudentsCredentials: FC< class @@ -100,19 +100,19 @@ const StudentsCredentials: FC = () => { const { classId } = params - return !(state && state.students && state.students.length && state.flow) ? ( + return state && state.students && state.students.length && state.flow ? ( + <_StudentsCredentials + classId={classId} + flow={state.flow} + students={state.students} + /> + ) : ( - ) : ( - <_StudentsCredentials - classId={classId} - flow={state.flow} - students={state.students} - /> ) } diff --git a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx index f61412f..4870669 100644 --- a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx +++ b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx @@ -98,14 +98,14 @@ const TransferStudents: FC = () => { classId, }) - return !(state && state.studentUsers && state.studentUsers.length) ? ( - - ) : ( + return state && state.studentUsers && state.studentUsers.length ? ( <_TransferStudents classId={classId} classPath={classPath} studentUsers={state.studentUsers} /> + ) : ( + ) } From aa58ea67485a585f7bdf6e8dad2cbea53c8848c6 Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 15:25:02 +0100 Subject: [PATCH 06/10] Revert "Feedback pt. 2" This reverts commit 6560d3d1a3a146c94e8c806af852f1d6d9b222af. --- src/components/StudentCredentialsTable.tsx | 2 +- src/features/footer/Footer.tsx | 4 ++-- ...ersaryImage.png => 10_years_anniversary.png} | Bin src/images/{10xLogoImage.png => 10x_logo.png} | Bin src/images/{RRLogoImage.svg => RR_logo.svg} | 0 .../{RRGreenLogoImage.svg => RR_logo_green.svg} | 0 src/images/{AboutUsImage.jpg => about_us.jpg} | Bin ...xagonImage.png => about_us_hero_hexagon.png} | Bin ...AboutUsOcadoImage.jpg => about_us_ocado.jpg} | Bin ...{BarefootLogoImage.png => barefoot_logo.png} | Bin src/images/{BCSLogoImage.png => bcs_logo.png} | Bin src/images/{ClubsImage.png => clubs.png} | Bin ...onImage.png => coding_club_hero_hexagon.png} | Bin ...ackImage.png => coding_club_python_pack.png} | Bin ...rdEducateImage.png => dashboard_educate.png} | Bin ...ashboardPlayImage.png => dashboard_play.png} | Bin ...nImage.png => get_involved_hero_hexagon.png} | Bin src/images/{GithubImage.png => github.png} | Bin src/images/{GLALogoImage.png => gla_logo.png} | Bin ...Image.png => home_learning_hero_hexagon.png} | Bin src/images/{HopeLogoImage.png => hope_logo.png} | Bin src/images/{ICLLogoImage.png => icl_logo.png} | Bin ...trollerIconImage.png => icon_controller.png} | Bin src/images/{FreeIconImage.png => icon_free.png} | Bin .../{GlobeIconImage.png => icon_globe.png} | Bin ...{PiechartIconImage.png => icon_piechart.png} | Bin src/images/{CFLLogoImage.png => logo_cfl.png} | Bin ...oweredLogoImage.svg => logo_cfl_powered.svg} | 0 ...SaatchiLogoImage.png => mc_saatchi_logo.png} | Bin ...erLogoImage.png => pressure_cooker_logo.png} | Bin src/images/{ReubenImage.png => reuben.png} | Bin src/images/{RobImage.png => rob.png} | Bin .../{RRAdvancedImage.png => rr_advanced.png} | Bin .../{RRBeginnerImage.png => rr_beginner.png} | Bin ...ntermediateImage.png => rr_intermediate.png} | Bin ...ronHarrisonImage.jpg => sharon_harrison.jpg} | Bin src/images/{SianImage.png => sian.png} | Bin .../{UniversitiesImage.png => universities.png} | Bin src/pages/aboutUs/AboutUs.tsx | 2 +- src/pages/aboutUs/CodeForLife.tsx | 2 +- src/pages/aboutUs/Dedication.tsx | 2 +- src/pages/aboutUs/OcadoGroup.tsx | 2 +- src/pages/aboutUs/Supporters.tsx | 16 ++++++++-------- src/pages/codingClubs/CodingClubs.tsx | 2 +- src/pages/codingClubs/Primary.tsx | 2 +- src/pages/codingClubs/Python.tsx | 2 +- src/pages/getInvolved/GetInvolved.tsx | 8 ++++---- src/pages/home/AboutUs.tsx | 8 ++++---- src/pages/home/Quotes.tsx | 6 +++--- src/pages/home/TargetAudience.tsx | 4 ++-- src/pages/homeLearning/Advanced.tsx | 2 +- src/pages/homeLearning/Beginner.tsx | 2 +- src/pages/homeLearning/HomeLearning.tsx | 2 +- src/pages/homeLearning/Intermediate.tsx | 2 +- src/pages/studentDashboard/Games.tsx | 2 +- .../studentDashboard/RapidRouterProgress.tsx | 2 +- .../classes/releaseStudents/ReleaseStudents.tsx | 6 +++--- .../studentsCredentials/StudentsCredentials.tsx | 16 ++++++++-------- .../transferStudents/TransferStudents.tsx | 6 +++--- 59 files changed, 51 insertions(+), 51 deletions(-) rename src/images/{10YearsAnniversaryImage.png => 10_years_anniversary.png} (100%) rename src/images/{10xLogoImage.png => 10x_logo.png} (100%) rename src/images/{RRLogoImage.svg => RR_logo.svg} (100%) rename src/images/{RRGreenLogoImage.svg => RR_logo_green.svg} (100%) rename src/images/{AboutUsImage.jpg => about_us.jpg} (100%) rename src/images/{AboutUsHeroHexagonImage.png => about_us_hero_hexagon.png} (100%) rename src/images/{AboutUsOcadoImage.jpg => about_us_ocado.jpg} (100%) rename src/images/{BarefootLogoImage.png => barefoot_logo.png} (100%) rename src/images/{BCSLogoImage.png => bcs_logo.png} (100%) rename src/images/{ClubsImage.png => clubs.png} (100%) rename src/images/{CodingClubHeroHexagonImage.png => coding_club_hero_hexagon.png} (100%) rename src/images/{CodingClubPythonPackImage.png => coding_club_python_pack.png} (100%) rename src/images/{DashboardEducateImage.png => dashboard_educate.png} (100%) rename src/images/{DashboardPlayImage.png => dashboard_play.png} (100%) rename src/images/{GetInvolvedHeroHexagonImage.png => get_involved_hero_hexagon.png} (100%) rename src/images/{GithubImage.png => github.png} (100%) rename src/images/{GLALogoImage.png => gla_logo.png} (100%) rename src/images/{HomeLearningHeroHexagonImage.png => home_learning_hero_hexagon.png} (100%) rename src/images/{HopeLogoImage.png => hope_logo.png} (100%) rename src/images/{ICLLogoImage.png => icl_logo.png} (100%) rename src/images/{ControllerIconImage.png => icon_controller.png} (100%) rename src/images/{FreeIconImage.png => icon_free.png} (100%) rename src/images/{GlobeIconImage.png => icon_globe.png} (100%) rename src/images/{PiechartIconImage.png => icon_piechart.png} (100%) rename src/images/{CFLLogoImage.png => logo_cfl.png} (100%) rename src/images/{CFLPoweredLogoImage.svg => logo_cfl_powered.svg} (100%) rename src/images/{MCSaatchiLogoImage.png => mc_saatchi_logo.png} (100%) rename src/images/{PressureCookerLogoImage.png => pressure_cooker_logo.png} (100%) rename src/images/{ReubenImage.png => reuben.png} (100%) rename src/images/{RobImage.png => rob.png} (100%) rename src/images/{RRAdvancedImage.png => rr_advanced.png} (100%) rename src/images/{RRBeginnerImage.png => rr_beginner.png} (100%) rename src/images/{RRIntermediateImage.png => rr_intermediate.png} (100%) rename src/images/{SharonHarrisonImage.jpg => sharon_harrison.jpg} (100%) rename src/images/{SianImage.png => sian.png} (100%) rename src/images/{UniversitiesImage.png => universities.png} (100%) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index f828a20..1fb7589 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -15,7 +15,7 @@ import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" import { CopyIconButton } from "codeforlife/components" import { generatePath } from "react-router-dom" -import CflLogo from "../images/CFLLogoImage.png" +import CflLogo from "../images/logo_cfl.png" import { paths } from "../routes" function makeAutoLoginLink( diff --git a/src/features/footer/Footer.tsx b/src/features/footer/Footer.tsx index 8cd2d2d..96ae670 100644 --- a/src/features/footer/Footer.tsx +++ b/src/features/footer/Footer.tsx @@ -9,12 +9,12 @@ import { Image } from "codeforlife/components" import { ThemedBox } from "codeforlife/theme" import { primary } from "codeforlife/theme/colors" -import CflLogoPowered from "../../images/CFLPoweredLogoImage.svg" +import CflLogoPowered from "../../images/logo_cfl_powered.svg" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" import Links from "./Links" import RegisterToNewsletterForm from "./RegisterToNewsletterForm.tsx" import SocialMediaIcons from "./SocialMediaIcons" -import TenYearAnniversary from "../../images/10YearsAnniversaryImage.png" +import TenYearAnniversary from "../../images/10_years_anniversary.png" import { themeOptions } from "../../app/theme" export interface FooterProps {} diff --git a/src/images/10YearsAnniversaryImage.png b/src/images/10_years_anniversary.png similarity index 100% rename from src/images/10YearsAnniversaryImage.png rename to src/images/10_years_anniversary.png diff --git a/src/images/10xLogoImage.png b/src/images/10x_logo.png similarity index 100% rename from src/images/10xLogoImage.png rename to src/images/10x_logo.png diff --git a/src/images/RRLogoImage.svg b/src/images/RR_logo.svg similarity index 100% rename from src/images/RRLogoImage.svg rename to src/images/RR_logo.svg diff --git a/src/images/RRGreenLogoImage.svg b/src/images/RR_logo_green.svg similarity index 100% rename from src/images/RRGreenLogoImage.svg rename to src/images/RR_logo_green.svg diff --git a/src/images/AboutUsImage.jpg b/src/images/about_us.jpg similarity index 100% rename from src/images/AboutUsImage.jpg rename to src/images/about_us.jpg diff --git a/src/images/AboutUsHeroHexagonImage.png b/src/images/about_us_hero_hexagon.png similarity index 100% rename from src/images/AboutUsHeroHexagonImage.png rename to src/images/about_us_hero_hexagon.png diff --git a/src/images/AboutUsOcadoImage.jpg b/src/images/about_us_ocado.jpg similarity index 100% rename from src/images/AboutUsOcadoImage.jpg rename to src/images/about_us_ocado.jpg diff --git a/src/images/BarefootLogoImage.png b/src/images/barefoot_logo.png similarity index 100% rename from src/images/BarefootLogoImage.png rename to src/images/barefoot_logo.png diff --git a/src/images/BCSLogoImage.png b/src/images/bcs_logo.png similarity index 100% rename from src/images/BCSLogoImage.png rename to src/images/bcs_logo.png diff --git a/src/images/ClubsImage.png b/src/images/clubs.png similarity index 100% rename from src/images/ClubsImage.png rename to src/images/clubs.png diff --git a/src/images/CodingClubHeroHexagonImage.png b/src/images/coding_club_hero_hexagon.png similarity index 100% rename from src/images/CodingClubHeroHexagonImage.png rename to src/images/coding_club_hero_hexagon.png diff --git a/src/images/CodingClubPythonPackImage.png b/src/images/coding_club_python_pack.png similarity index 100% rename from src/images/CodingClubPythonPackImage.png rename to src/images/coding_club_python_pack.png diff --git a/src/images/DashboardEducateImage.png b/src/images/dashboard_educate.png similarity index 100% rename from src/images/DashboardEducateImage.png rename to src/images/dashboard_educate.png diff --git a/src/images/DashboardPlayImage.png b/src/images/dashboard_play.png similarity index 100% rename from src/images/DashboardPlayImage.png rename to src/images/dashboard_play.png diff --git a/src/images/GetInvolvedHeroHexagonImage.png b/src/images/get_involved_hero_hexagon.png similarity index 100% rename from src/images/GetInvolvedHeroHexagonImage.png rename to src/images/get_involved_hero_hexagon.png diff --git a/src/images/GithubImage.png b/src/images/github.png similarity index 100% rename from src/images/GithubImage.png rename to src/images/github.png diff --git a/src/images/GLALogoImage.png b/src/images/gla_logo.png similarity index 100% rename from src/images/GLALogoImage.png rename to src/images/gla_logo.png diff --git a/src/images/HomeLearningHeroHexagonImage.png b/src/images/home_learning_hero_hexagon.png similarity index 100% rename from src/images/HomeLearningHeroHexagonImage.png rename to src/images/home_learning_hero_hexagon.png diff --git a/src/images/HopeLogoImage.png b/src/images/hope_logo.png similarity index 100% rename from src/images/HopeLogoImage.png rename to src/images/hope_logo.png diff --git a/src/images/ICLLogoImage.png b/src/images/icl_logo.png similarity index 100% rename from src/images/ICLLogoImage.png rename to src/images/icl_logo.png diff --git a/src/images/ControllerIconImage.png b/src/images/icon_controller.png similarity index 100% rename from src/images/ControllerIconImage.png rename to src/images/icon_controller.png diff --git a/src/images/FreeIconImage.png b/src/images/icon_free.png similarity index 100% rename from src/images/FreeIconImage.png rename to src/images/icon_free.png diff --git a/src/images/GlobeIconImage.png b/src/images/icon_globe.png similarity index 100% rename from src/images/GlobeIconImage.png rename to src/images/icon_globe.png diff --git a/src/images/PiechartIconImage.png b/src/images/icon_piechart.png similarity index 100% rename from src/images/PiechartIconImage.png rename to src/images/icon_piechart.png diff --git a/src/images/CFLLogoImage.png b/src/images/logo_cfl.png similarity index 100% rename from src/images/CFLLogoImage.png rename to src/images/logo_cfl.png diff --git a/src/images/CFLPoweredLogoImage.svg b/src/images/logo_cfl_powered.svg similarity index 100% rename from src/images/CFLPoweredLogoImage.svg rename to src/images/logo_cfl_powered.svg diff --git a/src/images/MCSaatchiLogoImage.png b/src/images/mc_saatchi_logo.png similarity index 100% rename from src/images/MCSaatchiLogoImage.png rename to src/images/mc_saatchi_logo.png diff --git a/src/images/PressureCookerLogoImage.png b/src/images/pressure_cooker_logo.png similarity index 100% rename from src/images/PressureCookerLogoImage.png rename to src/images/pressure_cooker_logo.png diff --git a/src/images/ReubenImage.png b/src/images/reuben.png similarity index 100% rename from src/images/ReubenImage.png rename to src/images/reuben.png diff --git a/src/images/RobImage.png b/src/images/rob.png similarity index 100% rename from src/images/RobImage.png rename to src/images/rob.png diff --git a/src/images/RRAdvancedImage.png b/src/images/rr_advanced.png similarity index 100% rename from src/images/RRAdvancedImage.png rename to src/images/rr_advanced.png diff --git a/src/images/RRBeginnerImage.png b/src/images/rr_beginner.png similarity index 100% rename from src/images/RRBeginnerImage.png rename to src/images/rr_beginner.png diff --git a/src/images/RRIntermediateImage.png b/src/images/rr_intermediate.png similarity index 100% rename from src/images/RRIntermediateImage.png rename to src/images/rr_intermediate.png diff --git a/src/images/SharonHarrisonImage.jpg b/src/images/sharon_harrison.jpg similarity index 100% rename from src/images/SharonHarrisonImage.jpg rename to src/images/sharon_harrison.jpg diff --git a/src/images/SianImage.png b/src/images/sian.png similarity index 100% rename from src/images/SianImage.png rename to src/images/sian.png diff --git a/src/images/UniversitiesImage.png b/src/images/universities.png similarity index 100% rename from src/images/UniversitiesImage.png rename to src/images/universities.png diff --git a/src/pages/aboutUs/AboutUs.tsx b/src/pages/aboutUs/AboutUs.tsx index bb3524b..1ec74c9 100644 --- a/src/pages/aboutUs/AboutUs.tsx +++ b/src/pages/aboutUs/AboutUs.tsx @@ -1,7 +1,7 @@ import * as page from "codeforlife/components/page" import { type FC } from "react" -import AboutUsHeroImage from "../../images/AboutUsHeroHexagonImage.png" +import AboutUsHeroImage from "../../images/about_us_hero_hexagon.png" import CodeForLife from "./CodeForLife" import Dedication from "./Dedication" import OcadoGroup from "./OcadoGroup" diff --git a/src/pages/aboutUs/CodeForLife.tsx b/src/pages/aboutUs/CodeForLife.tsx index 0c4f7b2..4726ebb 100644 --- a/src/pages/aboutUs/CodeForLife.tsx +++ b/src/pages/aboutUs/CodeForLife.tsx @@ -1,7 +1,7 @@ import { type FC } from "react" import { Typography } from "@mui/material" -import AboutUsCFLImage from "../../images/AboutUsImage.jpg" +import AboutUsCFLImage from "../../images/about_us.jpg" import Introduction from "../../components/Introduction" export interface CodeForLifeProps {} diff --git a/src/pages/aboutUs/Dedication.tsx b/src/pages/aboutUs/Dedication.tsx index 04b39d5..3b1b45c 100644 --- a/src/pages/aboutUs/Dedication.tsx +++ b/src/pages/aboutUs/Dedication.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Image } from "codeforlife/components" -import SharonHarrisonImage from "../../images/SharonHarrisonImage.jpg" +import SharonHarrisonImage from "../../images/sharon_harrison.jpg" export interface DedicationProps {} diff --git a/src/pages/aboutUs/OcadoGroup.tsx b/src/pages/aboutUs/OcadoGroup.tsx index 8015c7e..a31fb50 100644 --- a/src/pages/aboutUs/OcadoGroup.tsx +++ b/src/pages/aboutUs/OcadoGroup.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { Link } from "codeforlife/components/router" import { Typography } from "@mui/material" -import AboutUsOcadoImage from "../../images/AboutUsOcadoImage.jpg" +import AboutUsOcadoImage from "../../images/about_us_ocado.jpg" import Introduction from "../../components/Introduction" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" diff --git a/src/pages/aboutUs/Supporters.tsx b/src/pages/aboutUs/Supporters.tsx index c1abd20..30eeee6 100644 --- a/src/pages/aboutUs/Supporters.tsx +++ b/src/pages/aboutUs/Supporters.tsx @@ -4,14 +4,14 @@ import { Image } from "codeforlife/components" import { Link } from "codeforlife/components/router" import { LINK_CFL_DOCS, LINK_PORTAL_GITHUB } from "../../app/env" -import BarefootImage from "../../images/BarefootLogoImage.png" -import BcsImage from "../../images/BCSLogoImage.png" -import GLAImage from "../../images/GLALogoImage.png" -import HOPEImage from "../../images/HopeLogoImage.png" -import IclImage from "../../images/ICLLogoImage.png" -import Logo10xImage from "../../images/10xLogoImage.png" -import MCSaatchiImage from "../../images/MCSaatchiLogoImage.png" -import PressureCookerImage from "../../images/PressureCookerLogoImage.png" +import BarefootImage from "../../images/barefoot_logo.png" +import BcsImage from "../../images/bcs_logo.png" +import GLAImage from "../../images/gla_logo.png" +import HOPEImage from "../../images/hope_logo.png" +import IclImage from "../../images/icl_logo.png" +import Logo10xImage from "../../images/10x_logo.png" +import MCSaatchiImage from "../../images/mc_saatchi_logo.png" +import PressureCookerImage from "../../images/pressure_cooker_logo.png" const Supporter: FC<{ desc: string diff --git a/src/pages/codingClubs/CodingClubs.tsx b/src/pages/codingClubs/CodingClubs.tsx index b3b7063..ebcb7e0 100644 --- a/src/pages/codingClubs/CodingClubs.tsx +++ b/src/pages/codingClubs/CodingClubs.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { useTheme } from "@mui/material" import ClubAim from "./ClubAim" -import CodeClubHeroImage from "../../images/CodingClubHeroHexagonImage.png" +import CodeClubHeroImage from "../../images/coding_club_hero_hexagon.png" import Primary from "./Primary" import Python from "./Python" diff --git a/src/pages/codingClubs/Primary.tsx b/src/pages/codingClubs/Primary.tsx index 11df890..d6b995b 100644 --- a/src/pages/codingClubs/Primary.tsx +++ b/src/pages/codingClubs/Primary.tsx @@ -7,7 +7,7 @@ import { LINK_PRIMARY_PACK_DOWNLOAD, LINK_PRIMARY_PACK_GITBOOK, } from "../../app/env" -import AboutUsImage from "../../images/AboutUsImage.jpg" +import AboutUsImage from "../../images/about_us.jpg" import Introduction from "../../components/Introduction" export interface PrimaryProps {} diff --git a/src/pages/codingClubs/Python.tsx b/src/pages/codingClubs/Python.tsx index 11ec4e0..fdbc2e4 100644 --- a/src/pages/codingClubs/Python.tsx +++ b/src/pages/codingClubs/Python.tsx @@ -8,7 +8,7 @@ import { LINK_PYTHON_PACK_GITBOOK, } from "../../app/env" import Introduction from "../../components/Introduction" -import PythonClubImage from "../../images/CodingClubPythonPackImage.png" +import PythonClubImage from "../../images/coding_club_python_pack.png" export interface PythonProps {} diff --git a/src/pages/getInvolved/GetInvolved.tsx b/src/pages/getInvolved/GetInvolved.tsx index d12c7da..654a8b6 100644 --- a/src/pages/getInvolved/GetInvolved.tsx +++ b/src/pages/getInvolved/GetInvolved.tsx @@ -4,10 +4,10 @@ import { type FC } from "react" import { Unstable_Grid2 as Grid } from "@mui/material" import Card from "../../components/Card" -import ClubsImg from "../../images/ClubsImage.png" -import GetInvolvedHero from "../../images/GetInvolvedHeroHexagonImage.png" -import GithubImg from "../../images/GithubImage.png" -import UniversitiesImg from "../../images/UniversitiesImage.png" +import ClubsImg from "../../images/clubs.png" +import GetInvolvedHero from "../../images/get_involved_hero_hexagon.png" +import GithubImg from "../../images/github.png" +import UniversitiesImg from "../../images/universities.png" import { paths } from "../../routes" export interface GetInvolvedProps {} diff --git a/src/pages/home/AboutUs.tsx b/src/pages/home/AboutUs.tsx index e4671b1..d57bd52 100644 --- a/src/pages/home/AboutUs.tsx +++ b/src/pages/home/AboutUs.tsx @@ -4,11 +4,11 @@ import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" import { Image } from "codeforlife/components" -import ControllerIcon from "../../images/ControllerIconImage.png" -import GlobeIcon from "../../images/GlobeIconImage.png" +import ControllerIcon from "../../images/icon_controller.png" +import GlobeIcon from "../../images/icon_globe.png" import { LINK_FEMALE_GRADUATES_IN_CS } from "../../app/env" -import PieChartIcon from "../../images/PiechartIconImage.png" -import TicketIcon from "../../images/FreeIconImage.png" +import PieChartIcon from "../../images/icon_piechart.png" +import TicketIcon from "../../images/icon_free.png" import { paths } from "../../routes" const Column: FC<{ diff --git a/src/pages/home/Quotes.tsx b/src/pages/home/Quotes.tsx index 863c3b7..237cb61 100644 --- a/src/pages/home/Quotes.tsx +++ b/src/pages/home/Quotes.tsx @@ -3,9 +3,9 @@ import { Image, type ImageProps } from "codeforlife/components" import { type FC } from "react" import { Link } from "codeforlife/components/router" -import ReubenPhoto from "../../images/ReubenImage.png" -import RobPhoto from "../../images/RobImage.png" -import SianPhoto from "../../images/SianImage.png" +import ReubenPhoto from "../../images/reuben.png" +import RobPhoto from "../../images/rob.png" +import SianPhoto from "../../images/sian.png" import { paths } from "../../routes" const Column: FC<{ diff --git a/src/pages/home/TargetAudience.tsx b/src/pages/home/TargetAudience.tsx index e8b2852..3378e90 100644 --- a/src/pages/home/TargetAudience.tsx +++ b/src/pages/home/TargetAudience.tsx @@ -4,8 +4,8 @@ import { Stack, type SxProps, Typography, useTheme } from "@mui/material" import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" -import EducateImage from "../../images/DashboardEducateImage.png" -import PlayImage from "../../images/DashboardPlayImage.png" +import EducateImage from "../../images/dashboard_educate.png" +import PlayImage from "../../images/dashboard_play.png" import { paths } from "../../routes" export interface TargetAudienceProps {} diff --git a/src/pages/homeLearning/Advanced.tsx b/src/pages/homeLearning/Advanced.tsx index 9d8e3e5..cbea458 100644 --- a/src/pages/homeLearning/Advanced.tsx +++ b/src/pages/homeLearning/Advanced.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_ADVANCED } from "../../app/env" import Levels from "./Levels" import { Link } from "codeforlife/components/router" -import RRAdvancedImage from "../../images/RRAdvancedImage.png" +import RRAdvancedImage from "../../images/rr_advanced.png" import { paths } from "../../routes" export interface AdvancedProps {} diff --git a/src/pages/homeLearning/Beginner.tsx b/src/pages/homeLearning/Beginner.tsx index 729c442..91ca2f9 100644 --- a/src/pages/homeLearning/Beginner.tsx +++ b/src/pages/homeLearning/Beginner.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_BEGINNER } from "../../app/env" import Levels from "./Levels" -import RRBeginnerImage from "../../images/RRBeginnerImage.png" +import RRBeginnerImage from "../../images/rr_beginner.png" export interface BeginnerProps {} diff --git a/src/pages/homeLearning/HomeLearning.tsx b/src/pages/homeLearning/HomeLearning.tsx index ff6d854..db11462 100644 --- a/src/pages/homeLearning/HomeLearning.tsx +++ b/src/pages/homeLearning/HomeLearning.tsx @@ -6,7 +6,7 @@ import { Send as SendIcon } from "@mui/icons-material" import AboutRR from "./AboutRR" import Advanced from "./Advanced" import Beginner from "./Beginner" -import HomeLearningHeroImage from "../../images/HomeLearningHeroHexagonImage.png" +import HomeLearningHeroImage from "../../images/home_learning_hero_hexagon.png" import Intermediate from "./Intermediate" import { LINK_IDEAS_BOX } from "../../app/env" import { paths } from "../../routes" diff --git a/src/pages/homeLearning/Intermediate.tsx b/src/pages/homeLearning/Intermediate.tsx index 3861bd4..dc096a7 100644 --- a/src/pages/homeLearning/Intermediate.tsx +++ b/src/pages/homeLearning/Intermediate.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_INTERMEDIATE } from "../../app/env" import Levels from "./Levels" -import RRIntermediateImage from "../../images/RRIntermediateImage.png" +import RRIntermediateImage from "../../images/rr_intermediate.png" export interface IntermediateProps {} diff --git a/src/pages/studentDashboard/Games.tsx b/src/pages/studentDashboard/Games.tsx index b0b358d..2273169 100644 --- a/src/pages/studentDashboard/Games.tsx +++ b/src/pages/studentDashboard/Games.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Card } from "../../components" -import RRLogoGreenImage from "../../images/RRGreenLogoImage.svg" +import RRLogoGreenImage from "../../images/RR_logo_green.svg" import { paths } from "../../routes" export interface GamesProps {} diff --git a/src/pages/studentDashboard/RapidRouterProgress.tsx b/src/pages/studentDashboard/RapidRouterProgress.tsx index 74930d8..8c63d30 100644 --- a/src/pages/studentDashboard/RapidRouterProgress.tsx +++ b/src/pages/studentDashboard/RapidRouterProgress.tsx @@ -5,7 +5,7 @@ import { Image } from "codeforlife/components" import { LinkButton } from "codeforlife/components/router" // import { useRetrieveUserQuery } from "../../api/rapidRouter" -import RRLogoImage from "../../images/RRLogoImage.svg" +import RRLogoImage from "../../images/RR_logo.svg" import { paths } from "../../routes" const GetRapidRouterScores: React.FC = () => { diff --git a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx index 9d0c4d2..9b1cee3 100644 --- a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx +++ b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx @@ -80,14 +80,14 @@ const ReleaseStudents: FC = () => { classId, }) - return state && state.studentUsers && state.studentUsers.length ? ( + return !(state && state.studentUsers && state.studentUsers.length) ? ( + + ) : ( <_ReleaseStudents classId={classId} classPath={classPath} studentUsers={state.studentUsers} /> - ) : ( - ) } diff --git a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx index 91bcffe..d5ce897 100644 --- a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx +++ b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx @@ -71,7 +71,7 @@ const _StudentsCredentials: FC< class @@ -100,19 +100,19 @@ const StudentsCredentials: FC = () => { const { classId } = params - return state && state.students && state.students.length && state.flow ? ( - <_StudentsCredentials - classId={classId} - flow={state.flow} - students={state.students} - /> - ) : ( + return !(state && state.students && state.students.length && state.flow) ? ( + ) : ( + <_StudentsCredentials + classId={classId} + flow={state.flow} + students={state.students} + /> ) } diff --git a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx index 4870669..f61412f 100644 --- a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx +++ b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx @@ -98,14 +98,14 @@ const TransferStudents: FC = () => { classId, }) - return state && state.studentUsers && state.studentUsers.length ? ( + return !(state && state.studentUsers && state.studentUsers.length) ? ( + + ) : ( <_TransferStudents classId={classId} classPath={classPath} studentUsers={state.studentUsers} /> - ) : ( - ) } From d030f7948b46a04643869e3886ea36bee0e91e8c Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 15:29:29 +0100 Subject: [PATCH 07/10] Revert "Revert "Feedback pt. 2"" This reverts commit aa58ea67485a585f7bdf6e8dad2cbea53c8848c6. --- src/components/StudentCredentialsTable.tsx | 2 +- src/features/footer/Footer.tsx | 4 ++-- ...iversary.png => 10YearsAnniversaryImage.png} | Bin src/images/{10x_logo.png => 10xLogoImage.png} | Bin ..._hexagon.png => AboutUsHeroHexagonImage.png} | Bin src/images/{about_us.jpg => AboutUsImage.jpg} | Bin ...about_us_ocado.jpg => AboutUsOcadoImage.jpg} | Bin src/images/{bcs_logo.png => BCSLogoImage.png} | Bin ...{barefoot_logo.png => BarefootLogoImage.png} | Bin src/images/{logo_cfl.png => CFLLogoImage.png} | Bin ..._cfl_powered.svg => CFLPoweredLogoImage.svg} | 0 src/images/{clubs.png => ClubsImage.png} | Bin ...xagon.png => CodingClubHeroHexagonImage.png} | Bin ...n_pack.png => CodingClubPythonPackImage.png} | Bin ...n_controller.png => ControllerIconImage.png} | Bin ...rd_educate.png => DashboardEducateImage.png} | Bin ...ashboard_play.png => DashboardPlayImage.png} | Bin src/images/{icon_free.png => FreeIconImage.png} | Bin src/images/{gla_logo.png => GLALogoImage.png} | Bin ...agon.png => GetInvolvedHeroHexagonImage.png} | Bin src/images/{github.png => GithubImage.png} | Bin .../{icon_globe.png => GlobeIconImage.png} | Bin ...gon.png => HomeLearningHeroHexagonImage.png} | Bin src/images/{hope_logo.png => HopeLogoImage.png} | Bin src/images/{icl_logo.png => ICLLogoImage.png} | Bin ..._saatchi_logo.png => MCSaatchiLogoImage.png} | Bin ...{icon_piechart.png => PiechartIconImage.png} | Bin ...ker_logo.png => PressureCookerLogoImage.png} | Bin .../{rr_advanced.png => RRAdvancedImage.png} | Bin .../{rr_beginner.png => RRBeginnerImage.png} | Bin .../{RR_logo_green.svg => RRGreenLogoImage.svg} | 0 ...intermediate.png => RRIntermediateImage.png} | Bin src/images/{RR_logo.svg => RRLogoImage.svg} | 0 src/images/{reuben.png => ReubenImage.png} | Bin src/images/{rob.png => RobImage.png} | Bin ...ron_harrison.jpg => SharonHarrisonImage.jpg} | Bin src/images/{sian.png => SianImage.png} | Bin .../{universities.png => UniversitiesImage.png} | Bin src/pages/aboutUs/AboutUs.tsx | 2 +- src/pages/aboutUs/CodeForLife.tsx | 2 +- src/pages/aboutUs/Dedication.tsx | 2 +- src/pages/aboutUs/OcadoGroup.tsx | 2 +- src/pages/aboutUs/Supporters.tsx | 16 ++++++++-------- src/pages/codingClubs/CodingClubs.tsx | 2 +- src/pages/codingClubs/Primary.tsx | 2 +- src/pages/codingClubs/Python.tsx | 2 +- src/pages/getInvolved/GetInvolved.tsx | 8 ++++---- src/pages/home/AboutUs.tsx | 8 ++++---- src/pages/home/Quotes.tsx | 6 +++--- src/pages/home/TargetAudience.tsx | 4 ++-- src/pages/homeLearning/Advanced.tsx | 2 +- src/pages/homeLearning/Beginner.tsx | 2 +- src/pages/homeLearning/HomeLearning.tsx | 2 +- src/pages/homeLearning/Intermediate.tsx | 2 +- src/pages/studentDashboard/Games.tsx | 2 +- .../studentDashboard/RapidRouterProgress.tsx | 2 +- .../classes/releaseStudents/ReleaseStudents.tsx | 6 +++--- .../studentsCredentials/StudentsCredentials.tsx | 16 ++++++++-------- .../transferStudents/TransferStudents.tsx | 6 +++--- 59 files changed, 51 insertions(+), 51 deletions(-) rename src/images/{10_years_anniversary.png => 10YearsAnniversaryImage.png} (100%) rename src/images/{10x_logo.png => 10xLogoImage.png} (100%) rename src/images/{about_us_hero_hexagon.png => AboutUsHeroHexagonImage.png} (100%) rename src/images/{about_us.jpg => AboutUsImage.jpg} (100%) rename src/images/{about_us_ocado.jpg => AboutUsOcadoImage.jpg} (100%) rename src/images/{bcs_logo.png => BCSLogoImage.png} (100%) rename src/images/{barefoot_logo.png => BarefootLogoImage.png} (100%) rename src/images/{logo_cfl.png => CFLLogoImage.png} (100%) rename src/images/{logo_cfl_powered.svg => CFLPoweredLogoImage.svg} (100%) rename src/images/{clubs.png => ClubsImage.png} (100%) rename src/images/{coding_club_hero_hexagon.png => CodingClubHeroHexagonImage.png} (100%) rename src/images/{coding_club_python_pack.png => CodingClubPythonPackImage.png} (100%) rename src/images/{icon_controller.png => ControllerIconImage.png} (100%) rename src/images/{dashboard_educate.png => DashboardEducateImage.png} (100%) rename src/images/{dashboard_play.png => DashboardPlayImage.png} (100%) rename src/images/{icon_free.png => FreeIconImage.png} (100%) rename src/images/{gla_logo.png => GLALogoImage.png} (100%) rename src/images/{get_involved_hero_hexagon.png => GetInvolvedHeroHexagonImage.png} (100%) rename src/images/{github.png => GithubImage.png} (100%) rename src/images/{icon_globe.png => GlobeIconImage.png} (100%) rename src/images/{home_learning_hero_hexagon.png => HomeLearningHeroHexagonImage.png} (100%) rename src/images/{hope_logo.png => HopeLogoImage.png} (100%) rename src/images/{icl_logo.png => ICLLogoImage.png} (100%) rename src/images/{mc_saatchi_logo.png => MCSaatchiLogoImage.png} (100%) rename src/images/{icon_piechart.png => PiechartIconImage.png} (100%) rename src/images/{pressure_cooker_logo.png => PressureCookerLogoImage.png} (100%) rename src/images/{rr_advanced.png => RRAdvancedImage.png} (100%) rename src/images/{rr_beginner.png => RRBeginnerImage.png} (100%) rename src/images/{RR_logo_green.svg => RRGreenLogoImage.svg} (100%) rename src/images/{rr_intermediate.png => RRIntermediateImage.png} (100%) rename src/images/{RR_logo.svg => RRLogoImage.svg} (100%) rename src/images/{reuben.png => ReubenImage.png} (100%) rename src/images/{rob.png => RobImage.png} (100%) rename src/images/{sharon_harrison.jpg => SharonHarrisonImage.jpg} (100%) rename src/images/{sian.png => SianImage.png} (100%) rename src/images/{universities.png => UniversitiesImage.png} (100%) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index 1fb7589..f828a20 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -15,7 +15,7 @@ import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" import { CopyIconButton } from "codeforlife/components" import { generatePath } from "react-router-dom" -import CflLogo from "../images/logo_cfl.png" +import CflLogo from "../images/CFLLogoImage.png" import { paths } from "../routes" function makeAutoLoginLink( diff --git a/src/features/footer/Footer.tsx b/src/features/footer/Footer.tsx index 96ae670..8cd2d2d 100644 --- a/src/features/footer/Footer.tsx +++ b/src/features/footer/Footer.tsx @@ -9,12 +9,12 @@ import { Image } from "codeforlife/components" import { ThemedBox } from "codeforlife/theme" import { primary } from "codeforlife/theme/colors" -import CflLogoPowered from "../../images/logo_cfl_powered.svg" +import CflLogoPowered from "../../images/CFLPoweredLogoImage.svg" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" import Links from "./Links" import RegisterToNewsletterForm from "./RegisterToNewsletterForm.tsx" import SocialMediaIcons from "./SocialMediaIcons" -import TenYearAnniversary from "../../images/10_years_anniversary.png" +import TenYearAnniversary from "../../images/10YearsAnniversaryImage.png" import { themeOptions } from "../../app/theme" export interface FooterProps {} diff --git a/src/images/10_years_anniversary.png b/src/images/10YearsAnniversaryImage.png similarity index 100% rename from src/images/10_years_anniversary.png rename to src/images/10YearsAnniversaryImage.png diff --git a/src/images/10x_logo.png b/src/images/10xLogoImage.png similarity index 100% rename from src/images/10x_logo.png rename to src/images/10xLogoImage.png diff --git a/src/images/about_us_hero_hexagon.png b/src/images/AboutUsHeroHexagonImage.png similarity index 100% rename from src/images/about_us_hero_hexagon.png rename to src/images/AboutUsHeroHexagonImage.png diff --git a/src/images/about_us.jpg b/src/images/AboutUsImage.jpg similarity index 100% rename from src/images/about_us.jpg rename to src/images/AboutUsImage.jpg diff --git a/src/images/about_us_ocado.jpg b/src/images/AboutUsOcadoImage.jpg similarity index 100% rename from src/images/about_us_ocado.jpg rename to src/images/AboutUsOcadoImage.jpg diff --git a/src/images/bcs_logo.png b/src/images/BCSLogoImage.png similarity index 100% rename from src/images/bcs_logo.png rename to src/images/BCSLogoImage.png diff --git a/src/images/barefoot_logo.png b/src/images/BarefootLogoImage.png similarity index 100% rename from src/images/barefoot_logo.png rename to src/images/BarefootLogoImage.png diff --git a/src/images/logo_cfl.png b/src/images/CFLLogoImage.png similarity index 100% rename from src/images/logo_cfl.png rename to src/images/CFLLogoImage.png diff --git a/src/images/logo_cfl_powered.svg b/src/images/CFLPoweredLogoImage.svg similarity index 100% rename from src/images/logo_cfl_powered.svg rename to src/images/CFLPoweredLogoImage.svg diff --git a/src/images/clubs.png b/src/images/ClubsImage.png similarity index 100% rename from src/images/clubs.png rename to src/images/ClubsImage.png diff --git a/src/images/coding_club_hero_hexagon.png b/src/images/CodingClubHeroHexagonImage.png similarity index 100% rename from src/images/coding_club_hero_hexagon.png rename to src/images/CodingClubHeroHexagonImage.png diff --git a/src/images/coding_club_python_pack.png b/src/images/CodingClubPythonPackImage.png similarity index 100% rename from src/images/coding_club_python_pack.png rename to src/images/CodingClubPythonPackImage.png diff --git a/src/images/icon_controller.png b/src/images/ControllerIconImage.png similarity index 100% rename from src/images/icon_controller.png rename to src/images/ControllerIconImage.png diff --git a/src/images/dashboard_educate.png b/src/images/DashboardEducateImage.png similarity index 100% rename from src/images/dashboard_educate.png rename to src/images/DashboardEducateImage.png diff --git a/src/images/dashboard_play.png b/src/images/DashboardPlayImage.png similarity index 100% rename from src/images/dashboard_play.png rename to src/images/DashboardPlayImage.png diff --git a/src/images/icon_free.png b/src/images/FreeIconImage.png similarity index 100% rename from src/images/icon_free.png rename to src/images/FreeIconImage.png diff --git a/src/images/gla_logo.png b/src/images/GLALogoImage.png similarity index 100% rename from src/images/gla_logo.png rename to src/images/GLALogoImage.png diff --git a/src/images/get_involved_hero_hexagon.png b/src/images/GetInvolvedHeroHexagonImage.png similarity index 100% rename from src/images/get_involved_hero_hexagon.png rename to src/images/GetInvolvedHeroHexagonImage.png diff --git a/src/images/github.png b/src/images/GithubImage.png similarity index 100% rename from src/images/github.png rename to src/images/GithubImage.png diff --git a/src/images/icon_globe.png b/src/images/GlobeIconImage.png similarity index 100% rename from src/images/icon_globe.png rename to src/images/GlobeIconImage.png diff --git a/src/images/home_learning_hero_hexagon.png b/src/images/HomeLearningHeroHexagonImage.png similarity index 100% rename from src/images/home_learning_hero_hexagon.png rename to src/images/HomeLearningHeroHexagonImage.png diff --git a/src/images/hope_logo.png b/src/images/HopeLogoImage.png similarity index 100% rename from src/images/hope_logo.png rename to src/images/HopeLogoImage.png diff --git a/src/images/icl_logo.png b/src/images/ICLLogoImage.png similarity index 100% rename from src/images/icl_logo.png rename to src/images/ICLLogoImage.png diff --git a/src/images/mc_saatchi_logo.png b/src/images/MCSaatchiLogoImage.png similarity index 100% rename from src/images/mc_saatchi_logo.png rename to src/images/MCSaatchiLogoImage.png diff --git a/src/images/icon_piechart.png b/src/images/PiechartIconImage.png similarity index 100% rename from src/images/icon_piechart.png rename to src/images/PiechartIconImage.png diff --git a/src/images/pressure_cooker_logo.png b/src/images/PressureCookerLogoImage.png similarity index 100% rename from src/images/pressure_cooker_logo.png rename to src/images/PressureCookerLogoImage.png diff --git a/src/images/rr_advanced.png b/src/images/RRAdvancedImage.png similarity index 100% rename from src/images/rr_advanced.png rename to src/images/RRAdvancedImage.png diff --git a/src/images/rr_beginner.png b/src/images/RRBeginnerImage.png similarity index 100% rename from src/images/rr_beginner.png rename to src/images/RRBeginnerImage.png diff --git a/src/images/RR_logo_green.svg b/src/images/RRGreenLogoImage.svg similarity index 100% rename from src/images/RR_logo_green.svg rename to src/images/RRGreenLogoImage.svg diff --git a/src/images/rr_intermediate.png b/src/images/RRIntermediateImage.png similarity index 100% rename from src/images/rr_intermediate.png rename to src/images/RRIntermediateImage.png diff --git a/src/images/RR_logo.svg b/src/images/RRLogoImage.svg similarity index 100% rename from src/images/RR_logo.svg rename to src/images/RRLogoImage.svg diff --git a/src/images/reuben.png b/src/images/ReubenImage.png similarity index 100% rename from src/images/reuben.png rename to src/images/ReubenImage.png diff --git a/src/images/rob.png b/src/images/RobImage.png similarity index 100% rename from src/images/rob.png rename to src/images/RobImage.png diff --git a/src/images/sharon_harrison.jpg b/src/images/SharonHarrisonImage.jpg similarity index 100% rename from src/images/sharon_harrison.jpg rename to src/images/SharonHarrisonImage.jpg diff --git a/src/images/sian.png b/src/images/SianImage.png similarity index 100% rename from src/images/sian.png rename to src/images/SianImage.png diff --git a/src/images/universities.png b/src/images/UniversitiesImage.png similarity index 100% rename from src/images/universities.png rename to src/images/UniversitiesImage.png diff --git a/src/pages/aboutUs/AboutUs.tsx b/src/pages/aboutUs/AboutUs.tsx index 1ec74c9..bb3524b 100644 --- a/src/pages/aboutUs/AboutUs.tsx +++ b/src/pages/aboutUs/AboutUs.tsx @@ -1,7 +1,7 @@ import * as page from "codeforlife/components/page" import { type FC } from "react" -import AboutUsHeroImage from "../../images/about_us_hero_hexagon.png" +import AboutUsHeroImage from "../../images/AboutUsHeroHexagonImage.png" import CodeForLife from "./CodeForLife" import Dedication from "./Dedication" import OcadoGroup from "./OcadoGroup" diff --git a/src/pages/aboutUs/CodeForLife.tsx b/src/pages/aboutUs/CodeForLife.tsx index 4726ebb..0c4f7b2 100644 --- a/src/pages/aboutUs/CodeForLife.tsx +++ b/src/pages/aboutUs/CodeForLife.tsx @@ -1,7 +1,7 @@ import { type FC } from "react" import { Typography } from "@mui/material" -import AboutUsCFLImage from "../../images/about_us.jpg" +import AboutUsCFLImage from "../../images/AboutUsImage.jpg" import Introduction from "../../components/Introduction" export interface CodeForLifeProps {} diff --git a/src/pages/aboutUs/Dedication.tsx b/src/pages/aboutUs/Dedication.tsx index 3b1b45c..04b39d5 100644 --- a/src/pages/aboutUs/Dedication.tsx +++ b/src/pages/aboutUs/Dedication.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Image } from "codeforlife/components" -import SharonHarrisonImage from "../../images/sharon_harrison.jpg" +import SharonHarrisonImage from "../../images/SharonHarrisonImage.jpg" export interface DedicationProps {} diff --git a/src/pages/aboutUs/OcadoGroup.tsx b/src/pages/aboutUs/OcadoGroup.tsx index a31fb50..8015c7e 100644 --- a/src/pages/aboutUs/OcadoGroup.tsx +++ b/src/pages/aboutUs/OcadoGroup.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { Link } from "codeforlife/components/router" import { Typography } from "@mui/material" -import AboutUsOcadoImage from "../../images/about_us_ocado.jpg" +import AboutUsOcadoImage from "../../images/AboutUsOcadoImage.jpg" import Introduction from "../../components/Introduction" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" diff --git a/src/pages/aboutUs/Supporters.tsx b/src/pages/aboutUs/Supporters.tsx index 30eeee6..c1abd20 100644 --- a/src/pages/aboutUs/Supporters.tsx +++ b/src/pages/aboutUs/Supporters.tsx @@ -4,14 +4,14 @@ import { Image } from "codeforlife/components" import { Link } from "codeforlife/components/router" import { LINK_CFL_DOCS, LINK_PORTAL_GITHUB } from "../../app/env" -import BarefootImage from "../../images/barefoot_logo.png" -import BcsImage from "../../images/bcs_logo.png" -import GLAImage from "../../images/gla_logo.png" -import HOPEImage from "../../images/hope_logo.png" -import IclImage from "../../images/icl_logo.png" -import Logo10xImage from "../../images/10x_logo.png" -import MCSaatchiImage from "../../images/mc_saatchi_logo.png" -import PressureCookerImage from "../../images/pressure_cooker_logo.png" +import BarefootImage from "../../images/BarefootLogoImage.png" +import BcsImage from "../../images/BCSLogoImage.png" +import GLAImage from "../../images/GLALogoImage.png" +import HOPEImage from "../../images/HopeLogoImage.png" +import IclImage from "../../images/ICLLogoImage.png" +import Logo10xImage from "../../images/10xLogoImage.png" +import MCSaatchiImage from "../../images/MCSaatchiLogoImage.png" +import PressureCookerImage from "../../images/PressureCookerLogoImage.png" const Supporter: FC<{ desc: string diff --git a/src/pages/codingClubs/CodingClubs.tsx b/src/pages/codingClubs/CodingClubs.tsx index ebcb7e0..b3b7063 100644 --- a/src/pages/codingClubs/CodingClubs.tsx +++ b/src/pages/codingClubs/CodingClubs.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { useTheme } from "@mui/material" import ClubAim from "./ClubAim" -import CodeClubHeroImage from "../../images/coding_club_hero_hexagon.png" +import CodeClubHeroImage from "../../images/CodingClubHeroHexagonImage.png" import Primary from "./Primary" import Python from "./Python" diff --git a/src/pages/codingClubs/Primary.tsx b/src/pages/codingClubs/Primary.tsx index d6b995b..11df890 100644 --- a/src/pages/codingClubs/Primary.tsx +++ b/src/pages/codingClubs/Primary.tsx @@ -7,7 +7,7 @@ import { LINK_PRIMARY_PACK_DOWNLOAD, LINK_PRIMARY_PACK_GITBOOK, } from "../../app/env" -import AboutUsImage from "../../images/about_us.jpg" +import AboutUsImage from "../../images/AboutUsImage.jpg" import Introduction from "../../components/Introduction" export interface PrimaryProps {} diff --git a/src/pages/codingClubs/Python.tsx b/src/pages/codingClubs/Python.tsx index fdbc2e4..11ec4e0 100644 --- a/src/pages/codingClubs/Python.tsx +++ b/src/pages/codingClubs/Python.tsx @@ -8,7 +8,7 @@ import { LINK_PYTHON_PACK_GITBOOK, } from "../../app/env" import Introduction from "../../components/Introduction" -import PythonClubImage from "../../images/coding_club_python_pack.png" +import PythonClubImage from "../../images/CodingClubPythonPackImage.png" export interface PythonProps {} diff --git a/src/pages/getInvolved/GetInvolved.tsx b/src/pages/getInvolved/GetInvolved.tsx index 654a8b6..d12c7da 100644 --- a/src/pages/getInvolved/GetInvolved.tsx +++ b/src/pages/getInvolved/GetInvolved.tsx @@ -4,10 +4,10 @@ import { type FC } from "react" import { Unstable_Grid2 as Grid } from "@mui/material" import Card from "../../components/Card" -import ClubsImg from "../../images/clubs.png" -import GetInvolvedHero from "../../images/get_involved_hero_hexagon.png" -import GithubImg from "../../images/github.png" -import UniversitiesImg from "../../images/universities.png" +import ClubsImg from "../../images/ClubsImage.png" +import GetInvolvedHero from "../../images/GetInvolvedHeroHexagonImage.png" +import GithubImg from "../../images/GithubImage.png" +import UniversitiesImg from "../../images/UniversitiesImage.png" import { paths } from "../../routes" export interface GetInvolvedProps {} diff --git a/src/pages/home/AboutUs.tsx b/src/pages/home/AboutUs.tsx index d57bd52..e4671b1 100644 --- a/src/pages/home/AboutUs.tsx +++ b/src/pages/home/AboutUs.tsx @@ -4,11 +4,11 @@ import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" import { Image } from "codeforlife/components" -import ControllerIcon from "../../images/icon_controller.png" -import GlobeIcon from "../../images/icon_globe.png" +import ControllerIcon from "../../images/ControllerIconImage.png" +import GlobeIcon from "../../images/GlobeIconImage.png" import { LINK_FEMALE_GRADUATES_IN_CS } from "../../app/env" -import PieChartIcon from "../../images/icon_piechart.png" -import TicketIcon from "../../images/icon_free.png" +import PieChartIcon from "../../images/PiechartIconImage.png" +import TicketIcon from "../../images/FreeIconImage.png" import { paths } from "../../routes" const Column: FC<{ diff --git a/src/pages/home/Quotes.tsx b/src/pages/home/Quotes.tsx index 237cb61..863c3b7 100644 --- a/src/pages/home/Quotes.tsx +++ b/src/pages/home/Quotes.tsx @@ -3,9 +3,9 @@ import { Image, type ImageProps } from "codeforlife/components" import { type FC } from "react" import { Link } from "codeforlife/components/router" -import ReubenPhoto from "../../images/reuben.png" -import RobPhoto from "../../images/rob.png" -import SianPhoto from "../../images/sian.png" +import ReubenPhoto from "../../images/ReubenImage.png" +import RobPhoto from "../../images/RobImage.png" +import SianPhoto from "../../images/SianImage.png" import { paths } from "../../routes" const Column: FC<{ diff --git a/src/pages/home/TargetAudience.tsx b/src/pages/home/TargetAudience.tsx index 3378e90..e8b2852 100644 --- a/src/pages/home/TargetAudience.tsx +++ b/src/pages/home/TargetAudience.tsx @@ -4,8 +4,8 @@ import { Stack, type SxProps, Typography, useTheme } from "@mui/material" import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" -import EducateImage from "../../images/dashboard_educate.png" -import PlayImage from "../../images/dashboard_play.png" +import EducateImage from "../../images/DashboardEducateImage.png" +import PlayImage from "../../images/DashboardPlayImage.png" import { paths } from "../../routes" export interface TargetAudienceProps {} diff --git a/src/pages/homeLearning/Advanced.tsx b/src/pages/homeLearning/Advanced.tsx index cbea458..9d8e3e5 100644 --- a/src/pages/homeLearning/Advanced.tsx +++ b/src/pages/homeLearning/Advanced.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_ADVANCED } from "../../app/env" import Levels from "./Levels" import { Link } from "codeforlife/components/router" -import RRAdvancedImage from "../../images/rr_advanced.png" +import RRAdvancedImage from "../../images/RRAdvancedImage.png" import { paths } from "../../routes" export interface AdvancedProps {} diff --git a/src/pages/homeLearning/Beginner.tsx b/src/pages/homeLearning/Beginner.tsx index 91ca2f9..729c442 100644 --- a/src/pages/homeLearning/Beginner.tsx +++ b/src/pages/homeLearning/Beginner.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_BEGINNER } from "../../app/env" import Levels from "./Levels" -import RRBeginnerImage from "../../images/rr_beginner.png" +import RRBeginnerImage from "../../images/RRBeginnerImage.png" export interface BeginnerProps {} diff --git a/src/pages/homeLearning/HomeLearning.tsx b/src/pages/homeLearning/HomeLearning.tsx index db11462..ff6d854 100644 --- a/src/pages/homeLearning/HomeLearning.tsx +++ b/src/pages/homeLearning/HomeLearning.tsx @@ -6,7 +6,7 @@ import { Send as SendIcon } from "@mui/icons-material" import AboutRR from "./AboutRR" import Advanced from "./Advanced" import Beginner from "./Beginner" -import HomeLearningHeroImage from "../../images/home_learning_hero_hexagon.png" +import HomeLearningHeroImage from "../../images/HomeLearningHeroHexagonImage.png" import Intermediate from "./Intermediate" import { LINK_IDEAS_BOX } from "../../app/env" import { paths } from "../../routes" diff --git a/src/pages/homeLearning/Intermediate.tsx b/src/pages/homeLearning/Intermediate.tsx index dc096a7..3861bd4 100644 --- a/src/pages/homeLearning/Intermediate.tsx +++ b/src/pages/homeLearning/Intermediate.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_INTERMEDIATE } from "../../app/env" import Levels from "./Levels" -import RRIntermediateImage from "../../images/rr_intermediate.png" +import RRIntermediateImage from "../../images/RRIntermediateImage.png" export interface IntermediateProps {} diff --git a/src/pages/studentDashboard/Games.tsx b/src/pages/studentDashboard/Games.tsx index 2273169..b0b358d 100644 --- a/src/pages/studentDashboard/Games.tsx +++ b/src/pages/studentDashboard/Games.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Card } from "../../components" -import RRLogoGreenImage from "../../images/RR_logo_green.svg" +import RRLogoGreenImage from "../../images/RRGreenLogoImage.svg" import { paths } from "../../routes" export interface GamesProps {} diff --git a/src/pages/studentDashboard/RapidRouterProgress.tsx b/src/pages/studentDashboard/RapidRouterProgress.tsx index 8c63d30..74930d8 100644 --- a/src/pages/studentDashboard/RapidRouterProgress.tsx +++ b/src/pages/studentDashboard/RapidRouterProgress.tsx @@ -5,7 +5,7 @@ import { Image } from "codeforlife/components" import { LinkButton } from "codeforlife/components/router" // import { useRetrieveUserQuery } from "../../api/rapidRouter" -import RRLogoImage from "../../images/RR_logo.svg" +import RRLogoImage from "../../images/RRLogoImage.svg" import { paths } from "../../routes" const GetRapidRouterScores: React.FC = () => { diff --git a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx index 9b1cee3..9d0c4d2 100644 --- a/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx +++ b/src/pages/teacherDashboard/classes/releaseStudents/ReleaseStudents.tsx @@ -80,14 +80,14 @@ const ReleaseStudents: FC = () => { classId, }) - return !(state && state.studentUsers && state.studentUsers.length) ? ( - - ) : ( + return state && state.studentUsers && state.studentUsers.length ? ( <_ReleaseStudents classId={classId} classPath={classPath} studentUsers={state.studentUsers} /> + ) : ( + ) } diff --git a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx index d5ce897..91bcffe 100644 --- a/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx +++ b/src/pages/teacherDashboard/classes/studentsCredentials/StudentsCredentials.tsx @@ -71,7 +71,7 @@ const _StudentsCredentials: FC< class @@ -100,19 +100,19 @@ const StudentsCredentials: FC = () => { const { classId } = params - return !(state && state.students && state.students.length && state.flow) ? ( + return state && state.students && state.students.length && state.flow ? ( + <_StudentsCredentials + classId={classId} + flow={state.flow} + students={state.students} + /> + ) : ( - ) : ( - <_StudentsCredentials - classId={classId} - flow={state.flow} - students={state.students} - /> ) } diff --git a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx index f61412f..4870669 100644 --- a/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx +++ b/src/pages/teacherDashboard/classes/transferStudents/TransferStudents.tsx @@ -98,14 +98,14 @@ const TransferStudents: FC = () => { classId, }) - return !(state && state.studentUsers && state.studentUsers.length) ? ( - - ) : ( + return state && state.studentUsers && state.studentUsers.length ? ( <_TransferStudents classId={classId} classPath={classPath} studentUsers={state.studentUsers} /> + ) : ( + ) } From 49010db518f4b8347dbd6b990c08b63b5ddd1963 Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 15:40:42 +0100 Subject: [PATCH 08/10] Image imports --- src/components/StudentCredentialsTable.tsx | 4 ++-- src/features/footer/Footer.tsx | 8 ++++---- ...ersaryImage.png => 10_years_anniversary.png} | Bin src/images/{10xLogoImage.png => 10x_logo.png} | Bin src/images/{RRLogoImage.svg => RR_logo.svg} | 0 .../{RRGreenLogoImage.svg => RR_logo_green.svg} | 0 src/images/{AboutUsImage.jpg => about_us.jpg} | Bin ...xagonImage.png => about_us_hero_hexagon.png} | Bin ...AboutUsOcadoImage.jpg => about_us_ocado.jpg} | Bin ...{BarefootLogoImage.png => barefoot_logo.png} | Bin src/images/{BCSLogoImage.png => bcs_logo.png} | Bin src/images/{ClubsImage.png => clubs.png} | Bin ...onImage.png => coding_club_hero_hexagon.png} | Bin ...ackImage.png => coding_club_python_pack.png} | Bin ...rdEducateImage.png => dashboard_educate.png} | Bin ...ashboardPlayImage.png => dashboard_play.png} | Bin ...nImage.png => get_involved_hero_hexagon.png} | Bin src/images/{GithubImage.png => github.png} | Bin src/images/{GLALogoImage.png => gla_logo.png} | Bin ...Image.png => home_learning_hero_hexagon.png} | Bin src/images/{HopeLogoImage.png => hope_logo.png} | Bin src/images/{ICLLogoImage.png => icl_logo.png} | Bin ...trollerIconImage.png => icon_controller.png} | Bin src/images/{FreeIconImage.png => icon_free.png} | Bin .../{GlobeIconImage.png => icon_globe.png} | Bin ...{PiechartIconImage.png => icon_piechart.png} | Bin src/images/{CFLLogoImage.png => logo_cfl.png} | Bin ...oweredLogoImage.svg => logo_cfl_powered.svg} | 0 ...SaatchiLogoImage.png => mc_saatchi_logo.png} | Bin ...erLogoImage.png => pressure_cooker_logo.png} | Bin src/images/{ReubenImage.png => reuben.png} | Bin src/images/{RobImage.png => rob.png} | Bin .../{RRAdvancedImage.png => rr_advanced.png} | Bin .../{RRBeginnerImage.png => rr_beginner.png} | Bin ...ntermediateImage.png => rr_intermediate.png} | Bin ...ronHarrisonImage.jpg => sharon_harrison.jpg} | Bin src/images/{SianImage.png => sian.png} | Bin .../{UniversitiesImage.png => universities.png} | Bin src/pages/aboutUs/AboutUs.tsx | 2 +- src/pages/aboutUs/CodeForLife.tsx | 2 +- src/pages/aboutUs/Dedication.tsx | 2 +- src/pages/aboutUs/OcadoGroup.tsx | 2 +- src/pages/aboutUs/Supporters.tsx | 16 ++++++++-------- src/pages/codingClubs/CodingClubs.tsx | 2 +- src/pages/codingClubs/Primary.tsx | 2 +- src/pages/codingClubs/Python.tsx | 2 +- src/pages/getInvolved/GetInvolved.tsx | 16 ++++++++-------- src/pages/home/AboutUs.tsx | 16 ++++++++-------- src/pages/home/CodingClubs.tsx | 2 +- src/pages/home/Quotes.tsx | 12 ++++++------ src/pages/home/TargetAudience.tsx | 4 ++-- src/pages/homeLearning/Advanced.tsx | 2 +- src/pages/homeLearning/Beginner.tsx | 2 +- src/pages/homeLearning/HomeLearning.tsx | 2 +- src/pages/homeLearning/Intermediate.tsx | 2 +- src/pages/studentDashboard/Games.tsx | 2 +- .../studentDashboard/RapidRouterProgress.tsx | 4 ++-- 57 files changed, 53 insertions(+), 53 deletions(-) rename src/images/{10YearsAnniversaryImage.png => 10_years_anniversary.png} (100%) rename src/images/{10xLogoImage.png => 10x_logo.png} (100%) rename src/images/{RRLogoImage.svg => RR_logo.svg} (100%) rename src/images/{RRGreenLogoImage.svg => RR_logo_green.svg} (100%) rename src/images/{AboutUsImage.jpg => about_us.jpg} (100%) rename src/images/{AboutUsHeroHexagonImage.png => about_us_hero_hexagon.png} (100%) rename src/images/{AboutUsOcadoImage.jpg => about_us_ocado.jpg} (100%) rename src/images/{BarefootLogoImage.png => barefoot_logo.png} (100%) rename src/images/{BCSLogoImage.png => bcs_logo.png} (100%) rename src/images/{ClubsImage.png => clubs.png} (100%) rename src/images/{CodingClubHeroHexagonImage.png => coding_club_hero_hexagon.png} (100%) rename src/images/{CodingClubPythonPackImage.png => coding_club_python_pack.png} (100%) rename src/images/{DashboardEducateImage.png => dashboard_educate.png} (100%) rename src/images/{DashboardPlayImage.png => dashboard_play.png} (100%) rename src/images/{GetInvolvedHeroHexagonImage.png => get_involved_hero_hexagon.png} (100%) rename src/images/{GithubImage.png => github.png} (100%) rename src/images/{GLALogoImage.png => gla_logo.png} (100%) rename src/images/{HomeLearningHeroHexagonImage.png => home_learning_hero_hexagon.png} (100%) rename src/images/{HopeLogoImage.png => hope_logo.png} (100%) rename src/images/{ICLLogoImage.png => icl_logo.png} (100%) rename src/images/{ControllerIconImage.png => icon_controller.png} (100%) rename src/images/{FreeIconImage.png => icon_free.png} (100%) rename src/images/{GlobeIconImage.png => icon_globe.png} (100%) rename src/images/{PiechartIconImage.png => icon_piechart.png} (100%) rename src/images/{CFLLogoImage.png => logo_cfl.png} (100%) rename src/images/{CFLPoweredLogoImage.svg => logo_cfl_powered.svg} (100%) rename src/images/{MCSaatchiLogoImage.png => mc_saatchi_logo.png} (100%) rename src/images/{PressureCookerLogoImage.png => pressure_cooker_logo.png} (100%) rename src/images/{ReubenImage.png => reuben.png} (100%) rename src/images/{RobImage.png => rob.png} (100%) rename src/images/{RRAdvancedImage.png => rr_advanced.png} (100%) rename src/images/{RRBeginnerImage.png => rr_beginner.png} (100%) rename src/images/{RRIntermediateImage.png => rr_intermediate.png} (100%) rename src/images/{SharonHarrisonImage.jpg => sharon_harrison.jpg} (100%) rename src/images/{SianImage.png => sian.png} (100%) rename src/images/{UniversitiesImage.png => universities.png} (100%) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index f828a20..aa59f0d 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -15,7 +15,7 @@ import { Print as PrintIcon, SaveAlt as SaveAltIcon } from "@mui/icons-material" import { CopyIconButton } from "codeforlife/components" import { generatePath } from "react-router-dom" -import CflLogo from "../images/CFLLogoImage.png" +import CflLogoImage from "../images/logo_cfl.png" import { paths } from "../routes" function makeAutoLoginLink( @@ -67,7 +67,7 @@ const StudentCredentialsPDF: FC<{ key={`${student.user.first_name}-pdf`} style={pdfStyles.mainView} > - + {/*TODO: Auto login link is too long and doesn't fit in PDF.*/} diff --git a/src/features/footer/Footer.tsx b/src/features/footer/Footer.tsx index 8cd2d2d..072bcda 100644 --- a/src/features/footer/Footer.tsx +++ b/src/features/footer/Footer.tsx @@ -9,12 +9,12 @@ import { Image } from "codeforlife/components" import { ThemedBox } from "codeforlife/theme" import { primary } from "codeforlife/theme/colors" -import CflLogoPowered from "../../images/CFLPoweredLogoImage.svg" +import CFLPoweredLogoImage from "../../images/logo_cfl_powered.svg" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" import Links from "./Links" import RegisterToNewsletterForm from "./RegisterToNewsletterForm.tsx" import SocialMediaIcons from "./SocialMediaIcons" -import TenYearAnniversary from "../../images/10YearsAnniversaryImage.png" +import TenYearAnniversaryImage from "../../images/10_years_anniversary.png" import { themeOptions } from "../../app/theme" export interface FooterProps {} @@ -45,13 +45,13 @@ const Footer: FC = () => { > Code for Life and Ocado Group logos 10 year anniversary diff --git a/src/images/10YearsAnniversaryImage.png b/src/images/10_years_anniversary.png similarity index 100% rename from src/images/10YearsAnniversaryImage.png rename to src/images/10_years_anniversary.png diff --git a/src/images/10xLogoImage.png b/src/images/10x_logo.png similarity index 100% rename from src/images/10xLogoImage.png rename to src/images/10x_logo.png diff --git a/src/images/RRLogoImage.svg b/src/images/RR_logo.svg similarity index 100% rename from src/images/RRLogoImage.svg rename to src/images/RR_logo.svg diff --git a/src/images/RRGreenLogoImage.svg b/src/images/RR_logo_green.svg similarity index 100% rename from src/images/RRGreenLogoImage.svg rename to src/images/RR_logo_green.svg diff --git a/src/images/AboutUsImage.jpg b/src/images/about_us.jpg similarity index 100% rename from src/images/AboutUsImage.jpg rename to src/images/about_us.jpg diff --git a/src/images/AboutUsHeroHexagonImage.png b/src/images/about_us_hero_hexagon.png similarity index 100% rename from src/images/AboutUsHeroHexagonImage.png rename to src/images/about_us_hero_hexagon.png diff --git a/src/images/AboutUsOcadoImage.jpg b/src/images/about_us_ocado.jpg similarity index 100% rename from src/images/AboutUsOcadoImage.jpg rename to src/images/about_us_ocado.jpg diff --git a/src/images/BarefootLogoImage.png b/src/images/barefoot_logo.png similarity index 100% rename from src/images/BarefootLogoImage.png rename to src/images/barefoot_logo.png diff --git a/src/images/BCSLogoImage.png b/src/images/bcs_logo.png similarity index 100% rename from src/images/BCSLogoImage.png rename to src/images/bcs_logo.png diff --git a/src/images/ClubsImage.png b/src/images/clubs.png similarity index 100% rename from src/images/ClubsImage.png rename to src/images/clubs.png diff --git a/src/images/CodingClubHeroHexagonImage.png b/src/images/coding_club_hero_hexagon.png similarity index 100% rename from src/images/CodingClubHeroHexagonImage.png rename to src/images/coding_club_hero_hexagon.png diff --git a/src/images/CodingClubPythonPackImage.png b/src/images/coding_club_python_pack.png similarity index 100% rename from src/images/CodingClubPythonPackImage.png rename to src/images/coding_club_python_pack.png diff --git a/src/images/DashboardEducateImage.png b/src/images/dashboard_educate.png similarity index 100% rename from src/images/DashboardEducateImage.png rename to src/images/dashboard_educate.png diff --git a/src/images/DashboardPlayImage.png b/src/images/dashboard_play.png similarity index 100% rename from src/images/DashboardPlayImage.png rename to src/images/dashboard_play.png diff --git a/src/images/GetInvolvedHeroHexagonImage.png b/src/images/get_involved_hero_hexagon.png similarity index 100% rename from src/images/GetInvolvedHeroHexagonImage.png rename to src/images/get_involved_hero_hexagon.png diff --git a/src/images/GithubImage.png b/src/images/github.png similarity index 100% rename from src/images/GithubImage.png rename to src/images/github.png diff --git a/src/images/GLALogoImage.png b/src/images/gla_logo.png similarity index 100% rename from src/images/GLALogoImage.png rename to src/images/gla_logo.png diff --git a/src/images/HomeLearningHeroHexagonImage.png b/src/images/home_learning_hero_hexagon.png similarity index 100% rename from src/images/HomeLearningHeroHexagonImage.png rename to src/images/home_learning_hero_hexagon.png diff --git a/src/images/HopeLogoImage.png b/src/images/hope_logo.png similarity index 100% rename from src/images/HopeLogoImage.png rename to src/images/hope_logo.png diff --git a/src/images/ICLLogoImage.png b/src/images/icl_logo.png similarity index 100% rename from src/images/ICLLogoImage.png rename to src/images/icl_logo.png diff --git a/src/images/ControllerIconImage.png b/src/images/icon_controller.png similarity index 100% rename from src/images/ControllerIconImage.png rename to src/images/icon_controller.png diff --git a/src/images/FreeIconImage.png b/src/images/icon_free.png similarity index 100% rename from src/images/FreeIconImage.png rename to src/images/icon_free.png diff --git a/src/images/GlobeIconImage.png b/src/images/icon_globe.png similarity index 100% rename from src/images/GlobeIconImage.png rename to src/images/icon_globe.png diff --git a/src/images/PiechartIconImage.png b/src/images/icon_piechart.png similarity index 100% rename from src/images/PiechartIconImage.png rename to src/images/icon_piechart.png diff --git a/src/images/CFLLogoImage.png b/src/images/logo_cfl.png similarity index 100% rename from src/images/CFLLogoImage.png rename to src/images/logo_cfl.png diff --git a/src/images/CFLPoweredLogoImage.svg b/src/images/logo_cfl_powered.svg similarity index 100% rename from src/images/CFLPoweredLogoImage.svg rename to src/images/logo_cfl_powered.svg diff --git a/src/images/MCSaatchiLogoImage.png b/src/images/mc_saatchi_logo.png similarity index 100% rename from src/images/MCSaatchiLogoImage.png rename to src/images/mc_saatchi_logo.png diff --git a/src/images/PressureCookerLogoImage.png b/src/images/pressure_cooker_logo.png similarity index 100% rename from src/images/PressureCookerLogoImage.png rename to src/images/pressure_cooker_logo.png diff --git a/src/images/ReubenImage.png b/src/images/reuben.png similarity index 100% rename from src/images/ReubenImage.png rename to src/images/reuben.png diff --git a/src/images/RobImage.png b/src/images/rob.png similarity index 100% rename from src/images/RobImage.png rename to src/images/rob.png diff --git a/src/images/RRAdvancedImage.png b/src/images/rr_advanced.png similarity index 100% rename from src/images/RRAdvancedImage.png rename to src/images/rr_advanced.png diff --git a/src/images/RRBeginnerImage.png b/src/images/rr_beginner.png similarity index 100% rename from src/images/RRBeginnerImage.png rename to src/images/rr_beginner.png diff --git a/src/images/RRIntermediateImage.png b/src/images/rr_intermediate.png similarity index 100% rename from src/images/RRIntermediateImage.png rename to src/images/rr_intermediate.png diff --git a/src/images/SharonHarrisonImage.jpg b/src/images/sharon_harrison.jpg similarity index 100% rename from src/images/SharonHarrisonImage.jpg rename to src/images/sharon_harrison.jpg diff --git a/src/images/SianImage.png b/src/images/sian.png similarity index 100% rename from src/images/SianImage.png rename to src/images/sian.png diff --git a/src/images/UniversitiesImage.png b/src/images/universities.png similarity index 100% rename from src/images/UniversitiesImage.png rename to src/images/universities.png diff --git a/src/pages/aboutUs/AboutUs.tsx b/src/pages/aboutUs/AboutUs.tsx index bb3524b..1ec74c9 100644 --- a/src/pages/aboutUs/AboutUs.tsx +++ b/src/pages/aboutUs/AboutUs.tsx @@ -1,7 +1,7 @@ import * as page from "codeforlife/components/page" import { type FC } from "react" -import AboutUsHeroImage from "../../images/AboutUsHeroHexagonImage.png" +import AboutUsHeroImage from "../../images/about_us_hero_hexagon.png" import CodeForLife from "./CodeForLife" import Dedication from "./Dedication" import OcadoGroup from "./OcadoGroup" diff --git a/src/pages/aboutUs/CodeForLife.tsx b/src/pages/aboutUs/CodeForLife.tsx index 0c4f7b2..4726ebb 100644 --- a/src/pages/aboutUs/CodeForLife.tsx +++ b/src/pages/aboutUs/CodeForLife.tsx @@ -1,7 +1,7 @@ import { type FC } from "react" import { Typography } from "@mui/material" -import AboutUsCFLImage from "../../images/AboutUsImage.jpg" +import AboutUsCFLImage from "../../images/about_us.jpg" import Introduction from "../../components/Introduction" export interface CodeForLifeProps {} diff --git a/src/pages/aboutUs/Dedication.tsx b/src/pages/aboutUs/Dedication.tsx index 04b39d5..3b1b45c 100644 --- a/src/pages/aboutUs/Dedication.tsx +++ b/src/pages/aboutUs/Dedication.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Image } from "codeforlife/components" -import SharonHarrisonImage from "../../images/SharonHarrisonImage.jpg" +import SharonHarrisonImage from "../../images/sharon_harrison.jpg" export interface DedicationProps {} diff --git a/src/pages/aboutUs/OcadoGroup.tsx b/src/pages/aboutUs/OcadoGroup.tsx index 8015c7e..a31fb50 100644 --- a/src/pages/aboutUs/OcadoGroup.tsx +++ b/src/pages/aboutUs/OcadoGroup.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { Link } from "codeforlife/components/router" import { Typography } from "@mui/material" -import AboutUsOcadoImage from "../../images/AboutUsOcadoImage.jpg" +import AboutUsOcadoImage from "../../images/about_us_ocado.jpg" import Introduction from "../../components/Introduction" import { LINK_SKILLS_FOR_THE_FUTURE } from "../../app/env" diff --git a/src/pages/aboutUs/Supporters.tsx b/src/pages/aboutUs/Supporters.tsx index c1abd20..30eeee6 100644 --- a/src/pages/aboutUs/Supporters.tsx +++ b/src/pages/aboutUs/Supporters.tsx @@ -4,14 +4,14 @@ import { Image } from "codeforlife/components" import { Link } from "codeforlife/components/router" import { LINK_CFL_DOCS, LINK_PORTAL_GITHUB } from "../../app/env" -import BarefootImage from "../../images/BarefootLogoImage.png" -import BcsImage from "../../images/BCSLogoImage.png" -import GLAImage from "../../images/GLALogoImage.png" -import HOPEImage from "../../images/HopeLogoImage.png" -import IclImage from "../../images/ICLLogoImage.png" -import Logo10xImage from "../../images/10xLogoImage.png" -import MCSaatchiImage from "../../images/MCSaatchiLogoImage.png" -import PressureCookerImage from "../../images/PressureCookerLogoImage.png" +import BarefootImage from "../../images/barefoot_logo.png" +import BcsImage from "../../images/bcs_logo.png" +import GLAImage from "../../images/gla_logo.png" +import HOPEImage from "../../images/hope_logo.png" +import IclImage from "../../images/icl_logo.png" +import Logo10xImage from "../../images/10x_logo.png" +import MCSaatchiImage from "../../images/mc_saatchi_logo.png" +import PressureCookerImage from "../../images/pressure_cooker_logo.png" const Supporter: FC<{ desc: string diff --git a/src/pages/codingClubs/CodingClubs.tsx b/src/pages/codingClubs/CodingClubs.tsx index b3b7063..ebcb7e0 100644 --- a/src/pages/codingClubs/CodingClubs.tsx +++ b/src/pages/codingClubs/CodingClubs.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { useTheme } from "@mui/material" import ClubAim from "./ClubAim" -import CodeClubHeroImage from "../../images/CodingClubHeroHexagonImage.png" +import CodeClubHeroImage from "../../images/coding_club_hero_hexagon.png" import Primary from "./Primary" import Python from "./Python" diff --git a/src/pages/codingClubs/Primary.tsx b/src/pages/codingClubs/Primary.tsx index 11df890..d6b995b 100644 --- a/src/pages/codingClubs/Primary.tsx +++ b/src/pages/codingClubs/Primary.tsx @@ -7,7 +7,7 @@ import { LINK_PRIMARY_PACK_DOWNLOAD, LINK_PRIMARY_PACK_GITBOOK, } from "../../app/env" -import AboutUsImage from "../../images/AboutUsImage.jpg" +import AboutUsImage from "../../images/about_us.jpg" import Introduction from "../../components/Introduction" export interface PrimaryProps {} diff --git a/src/pages/codingClubs/Python.tsx b/src/pages/codingClubs/Python.tsx index 11ec4e0..fdbc2e4 100644 --- a/src/pages/codingClubs/Python.tsx +++ b/src/pages/codingClubs/Python.tsx @@ -8,7 +8,7 @@ import { LINK_PYTHON_PACK_GITBOOK, } from "../../app/env" import Introduction from "../../components/Introduction" -import PythonClubImage from "../../images/CodingClubPythonPackImage.png" +import PythonClubImage from "../../images/coding_club_python_pack.png" export interface PythonProps {} diff --git a/src/pages/getInvolved/GetInvolved.tsx b/src/pages/getInvolved/GetInvolved.tsx index d12c7da..26eab40 100644 --- a/src/pages/getInvolved/GetInvolved.tsx +++ b/src/pages/getInvolved/GetInvolved.tsx @@ -4,10 +4,10 @@ import { type FC } from "react" import { Unstable_Grid2 as Grid } from "@mui/material" import Card from "../../components/Card" -import ClubsImg from "../../images/ClubsImage.png" -import GetInvolvedHero from "../../images/GetInvolvedHeroHexagonImage.png" -import GithubImg from "../../images/GithubImage.png" -import UniversitiesImg from "../../images/UniversitiesImage.png" +import ClubsImage from "../../images/clubs.png" +import GetInvolvedHeroImage from "../../images/get_involved_hero_hexagon.png" +import GithubImage from "../../images/github.png" +import UniversitiesImage from "../../images/universities.png" import { paths } from "../../routes" export interface GetInvolvedProps {} @@ -20,7 +20,7 @@ const GetInvolved: FC = () => ( imageProps={{ title: "Adult teaching two children", alt: "Adult teaching two children", - src: GetInvolvedHero, + src: GetInvolvedHeroImage, }} /> @@ -31,7 +31,7 @@ const GetInvolved: FC = () => ( description="Become a Code for Life ambassador by starting up a coding club. Find out more about how you can get involved with this by visiting our coding club page." mediaProps={{ title: "Student showing their work to teacher", - image: ClubsImg, + image: ClubsImage, }} linkButtonProps={{ to: paths.codingClubs._, @@ -44,7 +44,7 @@ const GetInvolved: FC = () => ( = () => ( description="Please get in touch at codeforlife@ocado.com if you are interested in working on Code for Life projects with your students including coding, user experience, data analytics and new feature design." mediaProps={{ title: "Three students looking at laptops", - image: UniversitiesImg, + image: UniversitiesImage, }} linkButtonProps={{ to: "mailto:codeforlife@ocado.com", diff --git a/src/pages/home/AboutUs.tsx b/src/pages/home/AboutUs.tsx index e4671b1..0866fdf 100644 --- a/src/pages/home/AboutUs.tsx +++ b/src/pages/home/AboutUs.tsx @@ -4,11 +4,11 @@ import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" import { Image } from "codeforlife/components" -import ControllerIcon from "../../images/ControllerIconImage.png" -import GlobeIcon from "../../images/GlobeIconImage.png" +import ControllerIconImage from "../../images/icon_controller.png" +import FreeIconImage from "../../images/icon_free.png" +import GlobeIconImage from "../../images/icon_globe.png" import { LINK_FEMALE_GRADUATES_IN_CS } from "../../app/env" -import PieChartIcon from "../../images/PiechartIconImage.png" -import TicketIcon from "../../images/FreeIconImage.png" +import PieChartIconImage from "../../images/icon_piechart.png" import { paths } from "../../routes" const Column: FC<{ @@ -32,7 +32,7 @@ const AboutUs: FC = () => ( Giving everyone the ability to shape technology's future - + Just 16% of university computer science graduates (2018/19) in the UK were women @@ -42,18 +42,18 @@ const AboutUs: FC = () => ( , we want to change that. - + Gamification helps children learn whilst having fun! - + That's right, free forever: our gift to you! We're also Open Source. - + Code for Life has over 660,000 registered users across the world. diff --git a/src/pages/home/CodingClubs.tsx b/src/pages/home/CodingClubs.tsx index f9f538f..8ca560a 100644 --- a/src/pages/home/CodingClubs.tsx +++ b/src/pages/home/CodingClubs.tsx @@ -16,7 +16,7 @@ const CodingClubs: FC = () => ( Take a look at our two club packs that we have put together using our Rapid Router resources. These are fast-paced, session based clubs that can be run by anyone keen to help people learn to code. There are guides and - resource links with printable cerificates for those that complete the + resource links with printable certificates for those that complete the course. diff --git a/src/pages/home/Quotes.tsx b/src/pages/home/Quotes.tsx index 863c3b7..10f7765 100644 --- a/src/pages/home/Quotes.tsx +++ b/src/pages/home/Quotes.tsx @@ -3,9 +3,9 @@ import { Image, type ImageProps } from "codeforlife/components" import { type FC } from "react" import { Link } from "codeforlife/components/router" -import ReubenPhoto from "../../images/ReubenImage.png" -import RobPhoto from "../../images/RobImage.png" -import SianPhoto from "../../images/SianImage.png" +import ReubenImage from "../../images/reuben.png" +import RobImage from "../../images/rob.png" +import SianImage from "../../images/sian.png" import { paths } from "../../routes" const Column: FC<{ @@ -56,17 +56,17 @@ const Quotes: FC = () => ( diff --git a/src/pages/home/TargetAudience.tsx b/src/pages/home/TargetAudience.tsx index e8b2852..3378e90 100644 --- a/src/pages/home/TargetAudience.tsx +++ b/src/pages/home/TargetAudience.tsx @@ -4,8 +4,8 @@ import { Stack, type SxProps, Typography, useTheme } from "@mui/material" import { ChevronRight as ChevronRightIcon } from "@mui/icons-material" import { type FC } from "react" -import EducateImage from "../../images/DashboardEducateImage.png" -import PlayImage from "../../images/DashboardPlayImage.png" +import EducateImage from "../../images/dashboard_educate.png" +import PlayImage from "../../images/dashboard_play.png" import { paths } from "../../routes" export interface TargetAudienceProps {} diff --git a/src/pages/homeLearning/Advanced.tsx b/src/pages/homeLearning/Advanced.tsx index 9d8e3e5..cbea458 100644 --- a/src/pages/homeLearning/Advanced.tsx +++ b/src/pages/homeLearning/Advanced.tsx @@ -3,7 +3,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_ADVANCED } from "../../app/env" import Levels from "./Levels" import { Link } from "codeforlife/components/router" -import RRAdvancedImage from "../../images/RRAdvancedImage.png" +import RRAdvancedImage from "../../images/rr_advanced.png" import { paths } from "../../routes" export interface AdvancedProps {} diff --git a/src/pages/homeLearning/Beginner.tsx b/src/pages/homeLearning/Beginner.tsx index 729c442..91ca2f9 100644 --- a/src/pages/homeLearning/Beginner.tsx +++ b/src/pages/homeLearning/Beginner.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_BEGINNER } from "../../app/env" import Levels from "./Levels" -import RRBeginnerImage from "../../images/RRBeginnerImage.png" +import RRBeginnerImage from "../../images/rr_beginner.png" export interface BeginnerProps {} diff --git a/src/pages/homeLearning/HomeLearning.tsx b/src/pages/homeLearning/HomeLearning.tsx index ff6d854..db11462 100644 --- a/src/pages/homeLearning/HomeLearning.tsx +++ b/src/pages/homeLearning/HomeLearning.tsx @@ -6,7 +6,7 @@ import { Send as SendIcon } from "@mui/icons-material" import AboutRR from "./AboutRR" import Advanced from "./Advanced" import Beginner from "./Beginner" -import HomeLearningHeroImage from "../../images/HomeLearningHeroHexagonImage.png" +import HomeLearningHeroImage from "../../images/home_learning_hero_hexagon.png" import Intermediate from "./Intermediate" import { LINK_IDEAS_BOX } from "../../app/env" import { paths } from "../../routes" diff --git a/src/pages/homeLearning/Intermediate.tsx b/src/pages/homeLearning/Intermediate.tsx index 3861bd4..dc096a7 100644 --- a/src/pages/homeLearning/Intermediate.tsx +++ b/src/pages/homeLearning/Intermediate.tsx @@ -2,7 +2,7 @@ import { type FC } from "react" import { LINK_HOME_LEARNING_INTERMEDIATE } from "../../app/env" import Levels from "./Levels" -import RRIntermediateImage from "../../images/RRIntermediateImage.png" +import RRIntermediateImage from "../../images/rr_intermediate.png" export interface IntermediateProps {} diff --git a/src/pages/studentDashboard/Games.tsx b/src/pages/studentDashboard/Games.tsx index b0b358d..2273169 100644 --- a/src/pages/studentDashboard/Games.tsx +++ b/src/pages/studentDashboard/Games.tsx @@ -2,7 +2,7 @@ import { Stack, Typography } from "@mui/material" import { type FC } from "react" import { Card } from "../../components" -import RRLogoGreenImage from "../../images/RRGreenLogoImage.svg" +import RRLogoGreenImage from "../../images/RR_logo_green.svg" import { paths } from "../../routes" export interface GamesProps {} diff --git a/src/pages/studentDashboard/RapidRouterProgress.tsx b/src/pages/studentDashboard/RapidRouterProgress.tsx index 74930d8..8c2b5e6 100644 --- a/src/pages/studentDashboard/RapidRouterProgress.tsx +++ b/src/pages/studentDashboard/RapidRouterProgress.tsx @@ -5,10 +5,10 @@ import { Image } from "codeforlife/components" import { LinkButton } from "codeforlife/components/router" // import { useRetrieveUserQuery } from "../../api/rapidRouter" -import RRLogoImage from "../../images/RRLogoImage.svg" +import RRLogoImage from "../../images/RR_logo.svg" import { paths } from "../../routes" -const GetRapidRouterScores: React.FC = () => { +const GetRapidRouterScores: FC = () => { // TODO: get real data from rapid-router endpoint. // useRetrieveUserQuery() const stats = { From 59174399149066598ed06761e54f01f57694dcdc Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 15:43:54 +0100 Subject: [PATCH 09/10] More feedback --- src/components/StudentCredentialsTable.tsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index aa59f0d..9b48e8f 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -67,7 +67,11 @@ const StudentCredentialsPDF: FC<{ key={`${student.user.first_name}-pdf`} style={pdfStyles.mainView} > - + {/*TODO: Auto login link is too long and doesn't fit in PDF.*/} @@ -115,8 +119,8 @@ const DownloadPDFButton: FC = ({ if (linkRef.current) { linkRef.current.href = url linkRef.current.click() - URL.revokeObjectURL(url) } + URL.revokeObjectURL(url) } catch (error) { console.error(error) } @@ -143,10 +147,7 @@ const DownloadCSVButton: FC = ({ classLoginLink, students, }) => { - const generateCSV: ( - students: StudentCredentialsTableProps["students"], - classLoginLink: string, - ) => string = (students, classLoginLink) => { + const generateCSV: () => string = () => { let csvContent = "Name,Password,Class Link,Login URL\n" students.forEach(student => { csvContent += `${student.user.first_name},${student.user.password},${classLoginLink},${makeAutoLoginLink(classLoginLink, student)}\n` @@ -156,7 +157,7 @@ const DownloadCSVButton: FC = ({ const linkRef = useRef(null) const downloadCSV: () => void = () => { - const csvContent = generateCSV(students, classLoginLink) + const csvContent = generateCSV() const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" }) const url = URL.createObjectURL(blob) From acc2adf785165aa11062f5966c5ca9de94b5a5fd Mon Sep 17 00:00:00 2001 From: faucomte97 Date: Fri, 18 Oct 2024 16:07:24 +0100 Subject: [PATCH 10/10] More feedback cos he hates me --- src/components/StudentCredentialsTable.tsx | 24 ++++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/components/StudentCredentialsTable.tsx b/src/components/StudentCredentialsTable.tsx index 9b48e8f..1c10b72 100644 --- a/src/components/StudentCredentialsTable.tsx +++ b/src/components/StudentCredentialsTable.tsx @@ -47,6 +47,7 @@ const StudentCredentialsPDF: FC<{ padding: 20, }, text: { + textAlign: "justify", marginBottom: 5, fontSize: 12, }, @@ -73,19 +74,17 @@ const StudentCredentialsPDF: FC<{ style={pdfStyles.image} /> - {/*TODO: Auto login link is too long and doesn't fit in PDF.*/} + {/*TODO: Improve overall styles for this.*/} - Directly log in with{" "} + Directly log in with:{"\n"} {makeAutoLoginLink(classLoginLink, student)} OR class link: {classLoginLink} - Name: {student.user.first_name} - - - Password: {student.user.password} + Name: {student.user.first_name} Password:{" "} + {student.user.password} @@ -148,11 +147,18 @@ const DownloadCSVButton: FC = ({ students, }) => { const generateCSV: () => string = () => { - let csvContent = "Name,Password,Class Link,Login URL\n" + const lines = [["Name", "Password", "Class Link", "Login URL"].join(",")] students.forEach(student => { - csvContent += `${student.user.first_name},${student.user.password},${classLoginLink},${makeAutoLoginLink(classLoginLink, student)}\n` + lines.push( + [ + student.user.first_name, + student.user.password, + classLoginLink, + makeAutoLoginLink(classLoginLink, student), + ].join(","), + ) }) - return csvContent + return lines.join("\n") } const linkRef = useRef(null)