codeforlife 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/.eslintrc.json +47 -0
  2. package/.github/workflows/contributing.yaml +8 -0
  3. package/.github/workflows/main.yml +36 -0
  4. package/.prettierignore +5 -0
  5. package/.prettierrc.json +4 -0
  6. package/.vscode/launch.json +22 -0
  7. package/.vscode/settings.json +30 -0
  8. package/CHANGELOG.md +1864 -0
  9. package/CONTRIBUTING.md +3 -0
  10. package/LICENSE.md +3 -0
  11. package/README.md +94 -0
  12. package/codecov.yml +11 -0
  13. package/package.json +139 -0
  14. package/src/api/createApi.ts +84 -0
  15. package/src/api/endpoints/authFactor.ts +31 -0
  16. package/src/api/endpoints/index.ts +9 -0
  17. package/src/api/endpoints/klass.ts +87 -0
  18. package/src/api/endpoints/school.ts +34 -0
  19. package/src/api/endpoints/session.ts +40 -0
  20. package/src/api/endpoints/user.ts +70 -0
  21. package/src/api/index.ts +4 -0
  22. package/src/api/models.ts +144 -0
  23. package/src/api/tagTypes.ts +12 -0
  24. package/src/api/urls.ts +13 -0
  25. package/src/components/App.css +38 -0
  26. package/src/components/App.tsx +150 -0
  27. package/src/components/ClickableTooltip.tsx +43 -0
  28. package/src/components/CopyIconButton.test.tsx +16 -0
  29. package/src/components/CopyIconButton.tsx +27 -0
  30. package/src/components/Countdown.tsx +42 -0
  31. package/src/components/ElevatedAppBar.tsx +41 -0
  32. package/src/components/Image.tsx +41 -0
  33. package/src/components/InputFileButton.tsx +27 -0
  34. package/src/components/ItemizedList.tsx +61 -0
  35. package/src/components/OrderedGrid.tsx +92 -0
  36. package/src/components/ScrollIntoViewLink.tsx +23 -0
  37. package/src/components/SyncError.tsx +14 -0
  38. package/src/components/TablePagination.tsx +132 -0
  39. package/src/components/YouTubeVideo.tsx +26 -0
  40. package/src/components/form/ApiAutocompleteField.tsx +180 -0
  41. package/src/components/form/AutocompleteField.tsx +124 -0
  42. package/src/components/form/CheckboxField.tsx +81 -0
  43. package/src/components/form/CountryField.tsx +68 -0
  44. package/src/components/form/DatePickerField.tsx +119 -0
  45. package/src/components/form/EmailField.tsx +38 -0
  46. package/src/components/form/FirstNameField.tsx +40 -0
  47. package/src/components/form/Form.tsx +82 -0
  48. package/src/components/form/OtpField.tsx +28 -0
  49. package/src/components/form/PasswordField.tsx +71 -0
  50. package/src/components/form/RepeatField.tsx +115 -0
  51. package/src/components/form/SubmitButton.tsx +47 -0
  52. package/src/components/form/TextField.tsx +103 -0
  53. package/src/components/form/UkCountyField.tsx +67 -0
  54. package/src/components/form/index.tsx +28 -0
  55. package/src/components/index.ts +26 -0
  56. package/src/components/page/Banner.tsx +84 -0
  57. package/src/components/page/Notification.tsx +71 -0
  58. package/src/components/page/Page.tsx +73 -0
  59. package/src/components/page/Section.tsx +21 -0
  60. package/src/components/page/TabBar.tsx +131 -0
  61. package/src/components/page/index.ts +10 -0
  62. package/src/components/router/Link.tsx +22 -0
  63. package/src/components/router/LinkButton.tsx +21 -0
  64. package/src/components/router/LinkIconButton.tsx +21 -0
  65. package/src/components/router/LinkListItem.tsx +21 -0
  66. package/src/components/router/LinkTab.tsx +21 -0
  67. package/src/components/router/Navigate.tsx +33 -0
  68. package/src/components/router/index.tsx +12 -0
  69. package/src/components/table/CellStack.tsx +19 -0
  70. package/src/components/table/Table.tsx +55 -0
  71. package/src/components/table/index.tsx +10 -0
  72. package/src/features/InactiveDialog.tsx +40 -0
  73. package/src/features/ScreenTimeDialog.tsx +33 -0
  74. package/src/features/index.ts +4 -0
  75. package/src/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
  76. package/src/fonts/SpaceGrotesk-VariableFont_wght.ttf +0 -0
  77. package/src/hooks/api.tsx +37 -0
  78. package/src/hooks/auth.tsx +87 -0
  79. package/src/hooks/general.ts +110 -0
  80. package/src/hooks/index.ts +4 -0
  81. package/src/hooks/router.tsx +168 -0
  82. package/src/index.ts +2 -0
  83. package/src/middlewares/index.ts +1 -0
  84. package/src/middlewares/session.ts +16 -0
  85. package/src/public/images/brain.svg +1 -0
  86. package/src/schemas/user.ts +4 -0
  87. package/src/scripts/freshDesk.js +473 -0
  88. package/src/scripts/index.ts +1 -0
  89. package/src/server.js +181 -0
  90. package/src/settings/custom.ts +22 -0
  91. package/src/settings/index.ts +5 -0
  92. package/src/settings/vite.ts +26 -0
  93. package/src/setupTests.ts +1 -0
  94. package/src/slices/createSlice.ts +8 -0
  95. package/src/slices/index.ts +2 -0
  96. package/src/slices/session.ts +32 -0
  97. package/src/theme/ThemedBox.tsx +265 -0
  98. package/src/theme/colors.ts +57 -0
  99. package/src/theme/components/MuiAccordion.tsx +13 -0
  100. package/src/theme/components/MuiAutocomplete.tsx +11 -0
  101. package/src/theme/components/MuiButton.ts +70 -0
  102. package/src/theme/components/MuiCardActions.tsx +12 -0
  103. package/src/theme/components/MuiCheckbox.ts +12 -0
  104. package/src/theme/components/MuiContainer.ts +19 -0
  105. package/src/theme/components/MuiDialog.tsx +16 -0
  106. package/src/theme/components/MuiFormControlLabel.ts +18 -0
  107. package/src/theme/components/MuiFormHelperText.ts +12 -0
  108. package/src/theme/components/MuiGrid2.ts +16 -0
  109. package/src/theme/components/MuiInputBase.ts +14 -0
  110. package/src/theme/components/MuiLink.ts +41 -0
  111. package/src/theme/components/MuiList.ts +12 -0
  112. package/src/theme/components/MuiListItemText.ts +18 -0
  113. package/src/theme/components/MuiMenu.ts +14 -0
  114. package/src/theme/components/MuiMenuItem.ts +15 -0
  115. package/src/theme/components/MuiSelect.ts +16 -0
  116. package/src/theme/components/MuiTab.ts +29 -0
  117. package/src/theme/components/MuiTable.ts +29 -0
  118. package/src/theme/components/MuiTableBody.ts +15 -0
  119. package/src/theme/components/MuiTableHead.ts +26 -0
  120. package/src/theme/components/MuiTabs.ts +26 -0
  121. package/src/theme/components/MuiTextField.ts +86 -0
  122. package/src/theme/components/MuiToolbar.ts +11 -0
  123. package/src/theme/components/MuiTypography.ts +12 -0
  124. package/src/theme/components/_components.ts +93 -0
  125. package/src/theme/components/index.ts +57 -0
  126. package/src/theme/index.ts +25 -0
  127. package/src/theme/palette.ts +98 -0
  128. package/src/theme/spacing.ts +8 -0
  129. package/src/theme/typography.ts +101 -0
  130. package/src/utils/api.test.ts +19 -0
  131. package/src/utils/api.tsx +327 -0
  132. package/src/utils/auth.ts +17 -0
  133. package/src/utils/form.ts +153 -0
  134. package/src/utils/general.test.ts +42 -0
  135. package/src/utils/general.ts +498 -0
  136. package/src/utils/router.test.ts +156 -0
  137. package/src/utils/router.ts +67 -0
  138. package/src/utils/schema.ts +80 -0
  139. package/src/utils/store.ts +31 -0
  140. package/src/utils/test.tsx +82 -0
  141. package/src/utils/theme.tsx +82 -0
  142. package/src/utils/window.ts +9 -0
  143. package/src/vite-env.d.ts +1 -0
  144. package/tsconfig.json +31 -0
  145. package/tsconfig.node.json +11 -0
  146. package/types/fixes.d.ts +18 -0
  147. package/vite.config.ts +21 -0
package/.eslintrc.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "extends": [
3
+ "eslint:recommended",
4
+ "react-app",
5
+ "plugin:react/jsx-runtime",
6
+ "prettier"
7
+ ],
8
+ "parser": "@typescript-eslint/parser",
9
+ "parserOptions": {
10
+ "project": true,
11
+ "tsconfigRootDir": "./"
12
+ },
13
+ "plugins": [
14
+ "@typescript-eslint"
15
+ ],
16
+ "root": true,
17
+ "ignorePatterns": [
18
+ "dist",
19
+ "src/scripts",
20
+ "**/*.d.ts",
21
+ "vite.config.js"
22
+ ],
23
+ "rules": {
24
+ "@typescript-eslint/consistent-type-imports": [
25
+ 2,
26
+ {
27
+ "fixStyle": "inline-type-imports"
28
+ }
29
+ ]
30
+ },
31
+ "overrides": [
32
+ {
33
+ "files": [
34
+ "*.{c,m,}{t,j}s",
35
+ "*.{t,j}sx"
36
+ ]
37
+ },
38
+ {
39
+ "files": [
40
+ "*{test,spec}.{t,j}s?(x)"
41
+ ],
42
+ "env": {
43
+ "jest": true
44
+ }
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,8 @@
1
+ name: Contributing
2
+
3
+ on:
4
+ pull_request:
5
+
6
+ jobs:
7
+ validate-existing-contributors:
8
+ uses: ocadotechnology/codeforlife-workspace/.github/workflows/validate-existing-contributors.yaml@main
@@ -0,0 +1,36 @@
1
+ name: Main
2
+
3
+ on:
4
+ push:
5
+ paths-ignore:
6
+ - '**/*.md'
7
+ - '**/*.code-*'
8
+ - '.vscode/**'
9
+ - '.devcontainer.json'
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ test:
14
+ uses: ocadotechnology/codeforlife-workspace/.github/workflows/test-javascript-code.yaml@main
15
+ secrets: inherit
16
+ with:
17
+ node-version: 18
18
+
19
+ release:
20
+ needs: [test]
21
+ concurrency: release
22
+ runs-on: ubuntu-latest
23
+ permissions:
24
+ id-token: write # to enable use of OIDC for npm provenance
25
+ # Release if:
26
+ # - the repo's owner is Ocado Tech.
27
+ # - a change is made to the default branch.
28
+ if: |
29
+ github.repository_owner_id == 2088731 &&
30
+ github.ref_name == github.event.repository.default_branch
31
+ steps:
32
+ - name: 🚀 Publish Semantic Release
33
+ uses: ocadotechnology/codeforlife-workspace/.github/actions/github/release@main
34
+ with:
35
+ cfl-bot-gh-token: ${{ secrets.CFL_BOT_GH_TOKEN }}
36
+ npm-token: ${{ secrets.NPM_TOKEN }}
@@ -0,0 +1,5 @@
1
+ **/*.json
2
+ **/*.yaml
3
+ **/*.yml
4
+ **/*.code-*
5
+ **/*.md
@@ -0,0 +1,4 @@
1
+ {
2
+ "semi": false,
3
+ "arrowParens": "avoid"
4
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "configurations": [
3
+ {
4
+ "args": [
5
+ "run",
6
+ "${relativeFile}"
7
+ ],
8
+ "autoAttachChildProcesses": true,
9
+ "console": "integratedTerminal",
10
+ "name": "Vitest: Current File",
11
+ "program": "${workspaceFolder}/node_modules/vitest/vitest.mjs",
12
+ "request": "launch",
13
+ "skipFiles": [
14
+ "<node_internals>/**",
15
+ "**/node_modules/**"
16
+ ],
17
+ "smartStep": true,
18
+ "type": "node"
19
+ }
20
+ ],
21
+ "version": "0.2.0"
22
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "[md]": {
3
+ "editor.tabSize": 4
4
+ },
5
+ "cSpell.words": [
6
+ "codeforlife",
7
+ "klass",
8
+ "ocado",
9
+ "kurono",
10
+ "pipenv"
11
+ ],
12
+ "editor.codeActionsOnSave": {
13
+ "source.fixAll.eslint": "always",
14
+ "source.organizeImports": "never"
15
+ },
16
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
17
+ "editor.formatOnSave": true,
18
+ "editor.rulers": [
19
+ 80
20
+ ],
21
+ "editor.tabSize": 2,
22
+ "files.exclude": {
23
+ "**/*.tsbuildinfo": true
24
+ },
25
+ "javascript.format.semicolons": "remove",
26
+ "javascript.preferences.quoteStyle": "double",
27
+ "prettier.configPath": ".prettierrc.json",
28
+ "typescript.format.semicolons": "remove",
29
+ "typescript.preferences.quoteStyle": "double"
30
+ }