Files
classroomio/apps/classroomio-com/static/free-tools/tic-tac/tic-tac-bg.svg
T
9c066c79be feat: [lw] free tools (#297)
* 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 <best@classroomio.com>

* 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 <best@classroomio.com>

* 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 <best@classroomio.com>

* 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 <best@classroomio.com>

* add type to course card

---------

Co-authored-by: Rotimi Best <best@classroomio.com>

* general improvements to free tools

* fix timer and styling issues

---------

Co-authored-by: Rotimi Best <best@classroomio.com>
Co-authored-by: Em_Dev <Chifez1@gmail.com>

* 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 <best@classroomio.com>

* 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 <best@classroomio.com>

* 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 <best@classroomio.com>

* 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 <iniubongobonguko2018@gmail.com>

* 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 <best@classroomio.com>
Co-authored-by: Em_Dev <Chifez1@gmail.com>
Co-authored-by: Iniubong Obonguko <iniubongobonguko2018+github@gmail.com>
Co-authored-by: Iniubong Obonguko <iniubongobonguko2018@gmail.com>
Co-authored-by: Aditya Deshlahre <132184385+adityadeshlahre@users.noreply.github.com>

* 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 <best@classroomio.com>

* 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 <best@classroomio.com>
Co-authored-by: Em_Dev <Chifez1@gmail.com>
Co-authored-by: Iniubong Obonguko <iniubongobonguko2018+github@gmail.com>
Co-authored-by: Iniubong Obonguko <iniubongobonguko2018@gmail.com>
Co-authored-by: Aditya Deshlahre <132184385+adityadeshlahre@users.noreply.github.com>
2024-09-30 01:36:12 +01:00

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>