* checkpoint * checkpoint * feat: Create free tools page * responsiveness fix * rename free-tools to tools * add slug * feat: Random name picker * quick fix * PR Fixes * PR Fixes * - adjustments * update env example * remove base url * remove base url in .env.example * fix type errors * add og images * add signup cta to /tools layout * update cta * add socials avatar * add meta tags * feat: tic tac toe (#307) * Feat: tic tac toe * PR Adjustments * feat: Implement Timed Activity Tool (#316) * chore: update verification email content * chore: landing page improvements * feat: grade exercise with AI (#296) * working on the UI of the grading * working on the grading function of the radio and checkboxes * ai grading fully implemented with dummy functions for generating scores * working on the openai response * working on the openai response * finished with the ai_grading * finished with the ai_grading * creating new migration file * working on reviews * updated the translations * improvements --------- Co-authored-by: Rotimi Best <[email protected]> * feat: selfhost tinymce * fix: logo resolution error in manifest.json * feat: move from gpt3.5 to gpt-4o * feat: customize the LMS from dashboard (#304) * Done with the customization of the LMS task * generated custom_lms migration file * updated the migration file * copy improvements * update wording * made updates based on reviews,i hope i didnt miss anything * updated the translations and migration files * refactoring * disabled improvements for apps * more improvements * more custom improvements * pr refactoring --------- Co-authored-by: Rotimi Best <[email protected]> * fix: CustomizeLMS not found * fix: CustomizeLms wrong path * setup * docs: update short hero tagline * debug: courses not showing on vercel * more debugging * i think this fixes it * fix: phew, clean up debug cause it works * fix: move RBS into coursecontainer on marks page * chore: cleaner way to implement redirect if role permission denied * docs: update tagline * fix: delete /org/# route * checkpoint * add reusable header component * fix: empty lesson title bug (#314) * finished the lesson title bug * made chnages based on review * Update +page.svelte --------- Co-authored-by: Rotimi Best <[email protected]> * feat: add sound cdn * remove console.log * feat: course types - self paced and live class (#309) * working on the course type * trying to mark it persist * almost done here * fixed sendig emtpy options bug * created migration file * created migration file * made updates based on PR review * merge * update course type card * add redirect logic with classroomio.com/new * make new course modal only open/close with url * feat: page active state (#315) * finished the active link state * updated the active link state based on review * simplify code --------- Co-authored-by: Rotimi Best <[email protected]> * add type to course card --------- Co-authored-by: Rotimi Best <[email protected]> * general improvements to free tools * fix timer and styling issues --------- Co-authored-by: Rotimi Best <[email protected]> Co-authored-by: Em_Dev <[email protected]> * update tagline for tools page * feat: Add Free Section to Landing Page (#332) * feat: Add Free Section to Landing Page * PR Fixes * refactor * PR Fixes * restructure * improve cursor UX --------- Co-authored-by: Rotimi Best <[email protected]> * feat: Progress Report Tool (#329) * checkpoint * fix: corrections * finalization * improve ux of progress tool * more styling improvements * PR Fixes * PR Fixes * fix: mood bg on report * fix: generate exercise with AI bug (#331) * fix: enable lesson cascade delete (#335) * styling improvements * chore: hide course grading toggle in settings (#338) * feat: reset select in community page (#339) * Feat: Add Reset for comminity dropdown * - add translation * refactor --------- Co-authored-by: Rotimi Best <[email protected]> * fix: prevent hypen at start or end of organzation or domain name (#340) * fix: adding hypen to start or end of org or domain name * fix: add org name validation to settings page * chore: remove unnecessary variable use * chore: remove error reset function * Update OrgSettings.svelte --------- Co-authored-by: Rotimi Best <[email protected]> * fix: full screen * fix: pnpm version error & add top level .nvmrc (#343) * update name of tool * chore: add translations for validation messages (#345) * chore: add validation texts to locale file * feat: switch all validations from plain text to use i18n locale * feat: switch review form validations from plain text to use locale file * run translation script * chore: add translations for validation messages (#345) (#347) * chore: add translations for validation messages (#345) * chore: add validation texts to locale file * feat: switch all validations from plain text to use i18n locale * feat: switch review form validations from plain text to use locale file * run translation script --------- Co-authored-by: Iniubong Obonguko <[email protected]> * PR Fixes * Bug fixes on mobile * Final bug fix * code improvements * PR Fixes * Merge Fix * PR Fixes * fix: width * code cleanup * feat: Promodo Tool (tracks tim spent) * feat: Pomodoro timer (without tracking feature) * fix: - change pause functionality to next - correct spelling of pomodoro * fix: pomodoro logo rename * styling improvements --------- Co-authored-by: Rotimi Best <[email protected]> Co-authored-by: Em_Dev <[email protected]> Co-authored-by: Iniubong Obonguko <[email protected]> Co-authored-by: Iniubong Obonguko <[email protected]> Co-authored-by: Aditya Deshlahre <[email protected]> * feat: Implement Bottom menu (#341) * popup logic done * popup UI first phase done * finished the menupop up for both lms and admin * finished the menupop up for both lms and admin * done * cleanup * fixed popover position * still working on the routing * i think that is it for the day * updated the menupopup currentorgdomain * rename popup to bottomMenu * refactoring --------- Co-authored-by: Rotimi Best <[email protected]> * remove logout * change tagline * feat: Store todolist to localStorage (#375) * feat: Save todo to localStorage * remove fly animation to todos * feat: Progress Report avatar update (#376) * feat: Reorder Avatar list * quick fix * change avatar url * more improvements * quick background fix * fix: white background * body background fix * update lock --------- Co-authored-by: Rotimi Best <[email protected]> Co-authored-by: Em_Dev <[email protected]> Co-authored-by: Iniubong Obonguko <[email protected]> Co-authored-by: Iniubong Obonguko <[email protected]> Co-authored-by: Aditya Deshlahre <[email protected]>
99 lines
10 KiB
XML
99 lines
10 KiB
XML
<svg width="852" height="736" viewBox="0 0 852 736" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<rect x="1" y="1" width="850" height="734.13" fill="#0542CC"/>
|
|
<path d="M851 1H1V730H851V1Z" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 16.0898H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 31.4043H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 46.4941H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 61.8066H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 76.8984H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 92.207H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 107.297H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 122.391H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 137.699H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 152.793H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 168.102H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 183.195H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 198.508H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 213.598H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 228.688H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 244H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 259.09H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 274.406H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 289.496H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 304.809H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 319.895H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 334.984H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 350.297H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 365.391H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 380.699H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 395.793H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 411.105H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 426.191H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 441.285H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 456.598H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 471.688H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 487H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 502.09H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 517.402H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 532.492H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 547.582H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 562.895H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 577.984H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 593.301H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 608.391H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 623.703H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 638.793H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 653.883H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 669.195H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 684.285H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 699.594H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M851 714.684H1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M18.7305 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M36.4531 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M54.1797 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M71.7812 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M89.5039 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M107.234 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M124.961 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M142.688 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M160.414 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M178.145 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M195.738 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M213.469 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M231.199 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M248.918 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M266.648 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M284.379 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M302.102 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M319.703 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M337.43 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M355.156 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M372.883 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M390.609 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M408.336 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M425.938 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M443.664 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M461.387 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M479.117 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M496.844 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M514.57 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M532.297 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M549.898 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M567.625 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M585.352 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M603.078 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M620.805 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M638.531 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M656.262 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M673.855 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M691.586 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M709.312 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M727.039 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M744.766 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M762.496 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M780.219 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M797.82 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M815.547 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
<path d="M833.27 730V1" stroke="#040F2D" stroke-opacity="0.1" stroke-miterlimit="10" stroke-linecap="square"/>
|
|
</svg>
|