create-mithaq 0.0.0-stage → 0.1.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.
- package/LICENSE +22 -0
- package/LICENSES/payload.txt +22 -0
- package/LICENSES/ponytail.txt +21 -0
- package/index.js +127 -0
- package/package.json +19 -4
- package/template/apps/asas-platform/components.json +25 -0
- package/template/apps/asas-platform/gitignore +3 -0
- package/template/apps/asas-platform/package.json +55 -0
- package/template/apps/asas-platform/public/favicon.svg +1 -0
- package/template/apps/asas-platform/src/api.ts +147 -0
- package/template/apps/asas-platform/src/auth-frame.tsx +150 -0
- package/template/apps/asas-platform/src/components/mithaq/cells.tsx +112 -0
- package/template/apps/asas-platform/src/components/mithaq/controls.tsx +650 -0
- package/template/apps/asas-platform/src/components/mithaq/field-shell.tsx +53 -0
- package/template/apps/asas-platform/src/components/mithaq/filter-operators.ts +108 -0
- package/template/apps/asas-platform/src/components/mithaq/form.tsx +1467 -0
- package/template/apps/asas-platform/src/components/mithaq/list-columns.tsx +108 -0
- package/template/apps/asas-platform/src/components/mithaq/list-filters.tsx +368 -0
- package/template/apps/asas-platform/src/components/mithaq/list-pagination.tsx +153 -0
- package/template/apps/asas-platform/src/components/mithaq/list-query.ts +432 -0
- package/template/apps/asas-platform/src/components/mithaq/list-selection.tsx +74 -0
- package/template/apps/asas-platform/src/components/mithaq/list.tsx +865 -0
- package/template/apps/asas-platform/src/components/mithaq/nav.tsx +871 -0
- package/template/apps/asas-platform/src/components/mithaq/nodes.tsx +1024 -0
- package/template/apps/asas-platform/src/components/mithaq/relationship-cell.tsx +127 -0
- package/template/apps/asas-platform/src/components/mithaq/relationship-control.tsx +400 -0
- package/template/apps/asas-platform/src/components/mithaq/rich-text-nodes.ts +6 -0
- package/template/apps/asas-platform/src/components/mithaq/rich-text.tsx +1083 -0
- package/template/apps/asas-platform/src/components/mithaq/upload.tsx +686 -0
- package/template/apps/asas-platform/src/components/ui/accordion.tsx +74 -0
- package/template/apps/asas-platform/src/components/ui/alert-dialog.tsx +185 -0
- package/template/apps/asas-platform/src/components/ui/avatar.tsx +106 -0
- package/template/apps/asas-platform/src/components/ui/badge.tsx +48 -0
- package/template/apps/asas-platform/src/components/ui/breadcrumb.tsx +124 -0
- package/template/apps/asas-platform/src/components/ui/button-group.tsx +87 -0
- package/template/apps/asas-platform/src/components/ui/button.tsx +55 -0
- package/template/apps/asas-platform/src/components/ui/calendar.tsx +223 -0
- package/template/apps/asas-platform/src/components/ui/card.tsx +102 -0
- package/template/apps/asas-platform/src/components/ui/chart.tsx +371 -0
- package/template/apps/asas-platform/src/components/ui/checkbox.tsx +28 -0
- package/template/apps/asas-platform/src/components/ui/collapsible.tsx +19 -0
- package/template/apps/asas-platform/src/components/ui/combobox.tsx +308 -0
- package/template/apps/asas-platform/src/components/ui/dialog.tsx +158 -0
- package/template/apps/asas-platform/src/components/ui/direction.tsx +6 -0
- package/template/apps/asas-platform/src/components/ui/directional-icon.tsx +20 -0
- package/template/apps/asas-platform/src/components/ui/drawer.tsx +216 -0
- package/template/apps/asas-platform/src/components/ui/dropdown-menu.tsx +267 -0
- package/template/apps/asas-platform/src/components/ui/field.tsx +236 -0
- package/template/apps/asas-platform/src/components/ui/input-group.tsx +155 -0
- package/template/apps/asas-platform/src/components/ui/input-otp.tsx +84 -0
- package/template/apps/asas-platform/src/components/ui/input.tsx +19 -0
- package/template/apps/asas-platform/src/components/ui/label.tsx +19 -0
- package/template/apps/asas-platform/src/components/ui/popover.tsx +90 -0
- package/template/apps/asas-platform/src/components/ui/radio-group.tsx +37 -0
- package/template/apps/asas-platform/src/components/ui/resizable.tsx +47 -0
- package/template/apps/asas-platform/src/components/ui/scroll-area.tsx +54 -0
- package/template/apps/asas-platform/src/components/ui/select.tsx +204 -0
- package/template/apps/asas-platform/src/components/ui/separator.tsx +24 -0
- package/template/apps/asas-platform/src/components/ui/sheet.tsx +139 -0
- package/template/apps/asas-platform/src/components/ui/sidebar.tsx +714 -0
- package/template/apps/asas-platform/src/components/ui/skeleton.tsx +13 -0
- package/template/apps/asas-platform/src/components/ui/slider.tsx +55 -0
- package/template/apps/asas-platform/src/components/ui/spinner.tsx +10 -0
- package/template/apps/asas-platform/src/components/ui/switch.tsx +29 -0
- package/template/apps/asas-platform/src/components/ui/table.tsx +115 -0
- package/template/apps/asas-platform/src/components/ui/tabs.tsx +79 -0
- package/template/apps/asas-platform/src/components/ui/textarea.tsx +17 -0
- package/template/apps/asas-platform/src/components/ui/toggle-group.tsx +89 -0
- package/template/apps/asas-platform/src/components/ui/toggle.tsx +44 -0
- package/template/apps/asas-platform/src/components/ui/tooltip.tsx +63 -0
- package/template/apps/asas-platform/src/copy.ts +1 -0
- package/template/apps/asas-platform/src/hooks/use-mobile.ts +19 -0
- package/template/apps/asas-platform/src/lib/utils.ts +1 -0
- package/template/apps/asas-platform/src/links.ts +38 -0
- package/template/apps/asas-platform/src/locale-switch.tsx +26 -0
- package/template/apps/asas-platform/src/redirect.ts +1 -0
- package/template/apps/asas-platform/src/request-headers.ts +11 -0
- package/template/apps/asas-platform/src/routeTree.gen.ts +181 -0
- package/template/apps/asas-platform/src/router.tsx +7 -0
- package/template/apps/asas-platform/src/routes/(screens)/platform/files.ts +4 -0
- package/template/apps/asas-platform/src/routes/(screens)/platform/screen.json +3609 -0
- package/template/apps/asas-platform/src/routes/(screens)/platform/types.ts +145 -0
- package/template/apps/asas-platform/src/routes/(screens)/platform.$.tsx +17 -0
- package/template/apps/asas-platform/src/routes/(screens)/platform.index.tsx +10 -0
- package/template/apps/asas-platform/src/routes/(screens)/platform.tsx +13 -0
- package/template/apps/asas-platform/src/routes/__root.tsx +95 -0
- package/template/apps/asas-platform/src/routes/api/$.ts +30 -0
- package/template/apps/asas-platform/src/routes/auth.sign-in.tsx +72 -0
- package/template/apps/asas-platform/src/routes/unauthorized.tsx +122 -0
- package/template/apps/asas-platform/src/screen-form.tsx +34 -0
- package/template/apps/asas-platform/src/screen-list.tsx +139 -0
- package/template/apps/asas-platform/src/screen-names.ts +10 -0
- package/template/apps/asas-platform/src/screens.tsx +868 -0
- package/template/apps/asas-platform/src/server.ts +20 -0
- package/template/apps/asas-platform/src/slide.ts +22 -0
- package/template/apps/asas-platform/src/start.ts +42 -0
- package/template/apps/asas-platform/src/styles.css +200 -0
- package/template/apps/asas-platform/src/theme.ts +2 -0
- package/template/apps/asas-platform/tsconfig.json +19 -0
- package/template/apps/asas-platform/vite.config.ts +26 -0
- package/template/apps/asas-tanstack/components.json +25 -0
- package/template/apps/asas-tanstack/gitignore +3 -0
- package/template/apps/asas-tanstack/package.json +56 -0
- package/template/apps/asas-tanstack/public/favicon.svg +1 -0
- package/template/apps/asas-tanstack/src/api.ts +147 -0
- package/template/apps/asas-tanstack/src/auth-frame.tsx +150 -0
- package/template/apps/asas-tanstack/src/components/mithaq/cells.tsx +112 -0
- package/template/apps/asas-tanstack/src/components/mithaq/controls.tsx +650 -0
- package/template/apps/asas-tanstack/src/components/mithaq/field-shell.tsx +53 -0
- package/template/apps/asas-tanstack/src/components/mithaq/filter-operators.ts +108 -0
- package/template/apps/asas-tanstack/src/components/mithaq/form.tsx +1467 -0
- package/template/apps/asas-tanstack/src/components/mithaq/list-columns.tsx +108 -0
- package/template/apps/asas-tanstack/src/components/mithaq/list-filters.tsx +368 -0
- package/template/apps/asas-tanstack/src/components/mithaq/list-pagination.tsx +153 -0
- package/template/apps/asas-tanstack/src/components/mithaq/list-query.ts +432 -0
- package/template/apps/asas-tanstack/src/components/mithaq/list-selection.tsx +74 -0
- package/template/apps/asas-tanstack/src/components/mithaq/list.tsx +865 -0
- package/template/apps/asas-tanstack/src/components/mithaq/nav.tsx +871 -0
- package/template/apps/asas-tanstack/src/components/mithaq/nodes.tsx +1024 -0
- package/template/apps/asas-tanstack/src/components/mithaq/relationship-cell.tsx +127 -0
- package/template/apps/asas-tanstack/src/components/mithaq/relationship-control.tsx +400 -0
- package/template/apps/asas-tanstack/src/components/mithaq/rich-text-nodes.ts +6 -0
- package/template/apps/asas-tanstack/src/components/mithaq/rich-text.tsx +1083 -0
- package/template/apps/asas-tanstack/src/components/mithaq/upload.tsx +686 -0
- package/template/apps/asas-tanstack/src/components/ui/accordion.tsx +10 -0
- package/template/apps/asas-tanstack/src/components/ui/alert-dialog.tsx +173 -0
- package/template/apps/asas-tanstack/src/components/ui/avatar.tsx +104 -0
- package/template/apps/asas-tanstack/src/components/ui/badge.tsx +48 -0
- package/template/apps/asas-tanstack/src/components/ui/breadcrumb.tsx +125 -0
- package/template/apps/asas-tanstack/src/components/ui/button-group.tsx +87 -0
- package/template/apps/asas-tanstack/src/components/ui/button.tsx +56 -0
- package/template/apps/asas-tanstack/src/components/ui/calendar.tsx +223 -0
- package/template/apps/asas-tanstack/src/components/ui/card.tsx +94 -0
- package/template/apps/asas-tanstack/src/components/ui/chart.tsx +369 -0
- package/template/apps/asas-tanstack/src/components/ui/checkbox.tsx +27 -0
- package/template/apps/asas-tanstack/src/components/ui/collapsible.tsx +19 -0
- package/template/apps/asas-tanstack/src/components/ui/combobox.tsx +300 -0
- package/template/apps/asas-tanstack/src/components/ui/dialog.tsx +149 -0
- package/template/apps/asas-tanstack/src/components/ui/direction.tsx +5 -0
- package/template/apps/asas-tanstack/src/components/ui/directional-icon.tsx +20 -0
- package/template/apps/asas-tanstack/src/components/ui/drawer.tsx +215 -0
- package/template/apps/asas-tanstack/src/components/ui/dropdown-menu.tsx +267 -0
- package/template/apps/asas-tanstack/src/components/ui/field.tsx +225 -0
- package/template/apps/asas-tanstack/src/components/ui/input-group.tsx +147 -0
- package/template/apps/asas-tanstack/src/components/ui/input-otp.tsx +20 -0
- package/template/apps/asas-tanstack/src/components/ui/input.tsx +20 -0
- package/template/apps/asas-tanstack/src/components/ui/label.tsx +18 -0
- package/template/apps/asas-tanstack/src/components/ui/popover.tsx +50 -0
- package/template/apps/asas-tanstack/src/components/ui/radio-group.tsx +10 -0
- package/template/apps/asas-tanstack/src/components/ui/resizable.tsx +47 -0
- package/template/apps/asas-tanstack/src/components/ui/scroll-area.tsx +52 -0
- package/template/apps/asas-tanstack/src/components/ui/select.tsx +190 -0
- package/template/apps/asas-tanstack/src/components/ui/separator.tsx +23 -0
- package/template/apps/asas-tanstack/src/components/ui/sheet.tsx +127 -0
- package/template/apps/asas-tanstack/src/components/ui/sidebar.tsx +716 -0
- package/template/apps/asas-tanstack/src/components/ui/skeleton.tsx +13 -0
- package/template/apps/asas-tanstack/src/components/ui/slider.tsx +13 -0
- package/template/apps/asas-tanstack/src/components/ui/spinner.tsx +11 -0
- package/template/apps/asas-tanstack/src/components/ui/switch.tsx +8 -0
- package/template/apps/asas-tanstack/src/components/ui/table.tsx +119 -0
- package/template/apps/asas-tanstack/src/components/ui/tabs.tsx +80 -0
- package/template/apps/asas-tanstack/src/components/ui/textarea.tsx +18 -0
- package/template/apps/asas-tanstack/src/components/ui/toggle-group.tsx +8 -0
- package/template/apps/asas-tanstack/src/components/ui/toggle.tsx +44 -0
- package/template/apps/asas-tanstack/src/components/ui/tooltip.tsx +68 -0
- package/template/apps/asas-tanstack/src/copy.ts +870 -0
- package/template/apps/asas-tanstack/src/hooks/use-mobile.ts +19 -0
- package/template/apps/asas-tanstack/src/lib/utils.ts +6 -0
- package/template/apps/asas-tanstack/src/links.ts +38 -0
- package/template/apps/asas-tanstack/src/locale-switch.tsx +26 -0
- package/template/apps/asas-tanstack/src/quiet-abort.ts +25 -0
- package/template/apps/asas-tanstack/src/redirect.ts +20 -0
- package/template/apps/asas-tanstack/src/request-headers.ts +11 -0
- package/template/apps/asas-tanstack/src/routeTree.gen.ts +382 -0
- package/template/apps/asas-tanstack/src/router.tsx +7 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/files.ts +4 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/screen.json +3883 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/types.ts +158 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/dashboard.$.tsx +17 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/dashboard.index.tsx +10 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/dashboard.tsx +13 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/portal/files.ts +4 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/portal/screen.json +1800 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/portal/types.ts +92 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/portal.$.tsx +17 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/portal.index.tsx +10 -0
- package/template/apps/asas-tanstack/src/routes/(screens)/portal.tsx +13 -0
- package/template/apps/asas-tanstack/src/routes/__root.tsx +99 -0
- package/template/apps/asas-tanstack/src/routes/api/$.ts +11 -0
- package/template/apps/asas-tanstack/src/routes/auth.accept-invitation.tsx +101 -0
- package/template/apps/asas-tanstack/src/routes/auth.forgot-password.tsx +94 -0
- package/template/apps/asas-tanstack/src/routes/auth.handoff.ts +39 -0
- package/template/apps/asas-tanstack/src/routes/auth.reset-password.tsx +109 -0
- package/template/apps/asas-tanstack/src/routes/auth.sign-in.tsx +86 -0
- package/template/apps/asas-tanstack/src/routes/auth.sign-up.tsx +122 -0
- package/template/apps/asas-tanstack/src/routes/index.tsx +142 -0
- package/template/apps/asas-tanstack/src/routes/unauthorized.tsx +122 -0
- package/template/apps/asas-tanstack/src/screen-form.tsx +34 -0
- package/template/apps/asas-tanstack/src/screen-list.tsx +139 -0
- package/template/apps/asas-tanstack/src/screen-names.ts +10 -0
- package/template/apps/asas-tanstack/src/screens.tsx +868 -0
- package/template/apps/asas-tanstack/src/server.ts +16 -0
- package/template/apps/asas-tanstack/src/slide.ts +22 -0
- package/template/apps/asas-tanstack/src/start.ts +57 -0
- package/template/apps/asas-tanstack/src/styles.css +159 -0
- package/template/apps/asas-tanstack/src/theme.ts +5 -0
- package/template/apps/asas-tanstack/tsconfig.json +19 -0
- package/template/apps/asas-tanstack/vite.config.ts +28 -0
- package/template/package.json +16 -0
- package/template/templates/asas/.env.example +16 -0
- package/template/templates/asas/components.json +22 -0
- package/template/templates/asas/mithaq.hints.json +25 -0
- package/template/templates/asas/package.json +38 -0
- package/template/templates/asas/src/asas.ts +93 -0
- package/template/templates/asas/src/audit-log/audit-log.ts +187 -0
- package/template/templates/asas/src/audit-log/sink.ts +89 -0
- package/template/templates/asas/src/audit-log/ui/activity.tsx +243 -0
- package/template/templates/asas/src/courses/courses.ts +612 -0
- package/template/templates/asas/src/courses/ui/archive-button.tsx +25 -0
- package/template/templates/asas/src/courses/ui/fee-cell.tsx +19 -0
- package/template/templates/asas/src/courses/ui/no-courses-on-offer.tsx +11 -0
- package/template/templates/asas/src/courses/ui/no-courses.tsx +13 -0
- package/template/templates/asas/src/courses/ui/on-offer.ts +6 -0
- package/template/templates/asas/src/courses/ui/status-cell.tsx +31 -0
- package/template/templates/asas/src/enrollments/enrollments.ts +137 -0
- package/template/templates/asas/src/enrollments/ui/session-cell.tsx +65 -0
- package/template/templates/asas/src/kayan/auth/user/account.access.ts +8 -0
- package/template/templates/asas/src/kayan/auth/user/account.ts +31 -0
- package/template/templates/asas/src/kayan/auth/user/index.ts +18 -0
- package/template/templates/asas/src/kayan/auth/user/invitation.access.ts +4 -0
- package/template/templates/asas/src/kayan/auth/user/invitation.ts +27 -0
- package/template/templates/asas/src/kayan/auth/user/member.access.ts +10 -0
- package/template/templates/asas/src/kayan/auth/user/member.screens.ts +37 -0
- package/template/templates/asas/src/kayan/auth/user/member.ts +25 -0
- package/template/templates/asas/src/kayan/auth/user/organization.access.ts +20 -0
- package/template/templates/asas/src/kayan/auth/user/organization.screens.ts +37 -0
- package/template/templates/asas/src/kayan/auth/user/organization.ts +24 -0
- package/template/templates/asas/src/kayan/auth/user/organizationRole.access.ts +8 -0
- package/template/templates/asas/src/kayan/auth/user/organizationRole.ts +25 -0
- package/template/templates/asas/src/kayan/auth/user/session.access.ts +8 -0
- package/template/templates/asas/src/kayan/auth/user/session.ts +28 -0
- package/template/templates/asas/src/kayan/auth/user/user.access.ts +29 -0
- package/template/templates/asas/src/kayan/auth/user/user.screens.ts +45 -0
- package/template/templates/asas/src/kayan/auth/user/user.ts +31 -0
- package/template/templates/asas/src/kayan/auth/user/verification.access.ts +8 -0
- package/template/templates/asas/src/kayan/auth/user/verification.ts +23 -0
- package/template/templates/asas/src/local-users/local-users.ts +143 -0
- package/template/templates/asas/src/media/media.ts +137 -0
- package/template/templates/asas/src/media/ui/preview.tsx +143 -0
- package/template/templates/asas/src/member-roles/member-roles.ts +207 -0
- package/template/templates/asas/src/messages/account.json +106 -0
- package/template/templates/asas/src/messages/auditLog.json +186 -0
- package/template/templates/asas/src/messages/courses.json +270 -0
- package/template/templates/asas/src/messages/enrollments.json +42 -0
- package/template/templates/asas/src/messages/invitation.json +66 -0
- package/template/templates/asas/src/messages/localUsers.json +42 -0
- package/template/templates/asas/src/messages/media.json +66 -0
- package/template/templates/asas/src/messages/member.json +42 -0
- package/template/templates/asas/src/messages/memberRoles.json +42 -0
- package/template/templates/asas/src/messages/mithaq.json +170 -0
- package/template/templates/asas/src/messages/organization.json +50 -0
- package/template/templates/asas/src/messages/organizationRole.json +50 -0
- package/template/templates/asas/src/messages/roles.json +58 -0
- package/template/templates/asas/src/messages/session.json +82 -0
- package/template/templates/asas/src/messages/sessions.json +106 -0
- package/template/templates/asas/src/messages/settings.json +66 -0
- package/template/templates/asas/src/messages/tags.json +38 -0
- package/template/templates/asas/src/messages/user.json +90 -0
- package/template/templates/asas/src/messages/verification.json +50 -0
- package/template/templates/asas/src/migrations/20260920080701_parched_tombstone/migration.sql +177 -0
- package/template/templates/asas/src/migrations/20260920080701_parched_tombstone/snapshot.json +2169 -0
- package/template/templates/asas/src/migrations/20260920230505_zippy_ben_urich/migration.sql +1 -0
- package/template/templates/asas/src/migrations/20260920230505_zippy_ben_urich/snapshot.json +2182 -0
- package/template/templates/asas/src/migrations/20260920231219_slim_retro_girl/migration.sql +20 -0
- package/template/templates/asas/src/migrations/20260920231219_slim_retro_girl/snapshot.json +2409 -0
- package/template/templates/asas/src/migrations/20260922082945_military_ironclad/migration.sql +15 -0
- package/template/templates/asas/src/migrations/20260922082945_military_ironclad/snapshot.json +2627 -0
- package/template/templates/asas/src/migrations/20260922112630_bitter_chat/migration.sql +5 -0
- package/template/templates/asas/src/migrations/20260922112630_bitter_chat/snapshot.json +2691 -0
- package/template/templates/asas/src/migrations/20260923235915_foamy_rachel_grey/migration.sql +8 -0
- package/template/templates/asas/src/migrations/20260923235915_foamy_rachel_grey/snapshot.json +2795 -0
- package/template/templates/asas/src/migrations/20260926145709_clean_the_initiative/migration.sql +3 -0
- package/template/templates/asas/src/migrations/20260926145709_clean_the_initiative/snapshot.json +2834 -0
- package/template/templates/asas/src/migrations/20260927212525_bent_prowler/migration.sql +9 -0
- package/template/templates/asas/src/migrations/20260927212525_bent_prowler/snapshot.json +2870 -0
- package/template/templates/asas/src/migrations/20260927223441_tranquil_bromley/migration.sql +1 -0
- package/template/templates/asas/src/migrations/20260927223441_tranquil_bromley/snapshot.json +2881 -0
- package/template/templates/asas/src/migrations/20260928030047_outgoing_wraith/migration.sql +15 -0
- package/template/templates/asas/src/migrations/20260928030047_outgoing_wraith/snapshot.json +3073 -0
- package/template/templates/asas/src/migrations/20260929024407_grey_morlun/migration.sql +21 -0
- package/template/templates/asas/src/migrations/20260929024407_grey_morlun/snapshot.json +3098 -0
- package/template/templates/asas/src/migrations/20260929130530_bored_jackal/migration.sql +21 -0
- package/template/templates/asas/src/migrations/20260929130530_bored_jackal/snapshot.json +3124 -0
- package/template/templates/asas/src/migrations/20260930102924_material_newton_destine/migration.sql +32 -0
- package/template/templates/asas/src/migrations/20260930102924_material_newton_destine/snapshot.json +3324 -0
- package/template/templates/asas/src/migrations/20261003022353_clumsy_taskmaster/migration.sql +2 -0
- package/template/templates/asas/src/migrations/20261003022353_clumsy_taskmaster/snapshot.json +3350 -0
- package/template/templates/asas/src/migrations/20261003143249_premium_red_shift/migration.sql +21 -0
- package/template/templates/asas/src/migrations/20261003143249_premium_red_shift/snapshot.json +3635 -0
- package/template/templates/asas/src/migrations/20261008215349_square_norrin_radd/migration.sql +8 -0
- package/template/templates/asas/src/migrations/20261008215349_square_norrin_radd/snapshot.json +3635 -0
- package/template/templates/asas/src/migrations/20261008230204_many_scarecrow/migration.sql +18 -0
- package/template/templates/asas/src/migrations/20261008230204_many_scarecrow/snapshot.json +3635 -0
- package/template/templates/asas/src/migrations/20261010005521_elite_giant_girl/migration.sql +18 -0
- package/template/templates/asas/src/migrations/20261010005521_elite_giant_girl/snapshot.json +3635 -0
- package/template/templates/asas/src/migrations/20261010120822_needy_thunderbolt/migration.sql +11 -0
- package/template/templates/asas/src/migrations/20261010120822_needy_thunderbolt/snapshot.json +3667 -0
- package/template/templates/asas/src/migrations/20261012000752_organization_ownership/migration.sql +48 -0
- package/template/templates/asas/src/migrations/20261012000752_organization_ownership/snapshot.json +3891 -0
- package/template/templates/asas/src/migrations/drizzle.config.ts +11 -0
- package/template/templates/asas/src/migrations/schema.ts +29 -0
- package/template/templates/asas/src/mithaq.ts +406 -0
- package/template/templates/asas/src/pages.ts +74 -0
- package/template/templates/asas/src/platform-http.ts +96 -0
- package/template/templates/asas/src/rich-text-nodes.ts +11 -0
- package/template/templates/asas/src/roles/grants.ts +47 -0
- package/template/templates/asas/src/roles/roles.ts +184 -0
- package/template/templates/asas/src/roles/ui/role-form.tsx +226 -0
- package/template/templates/asas/src/roles/ui/roles.tsx +166 -0
- package/template/templates/asas/src/roles.ts +16 -0
- package/template/templates/asas/src/seed.ts +325 -0
- package/template/templates/asas/src/sessions/sessions.ts +155 -0
- package/template/templates/asas/src/settings/settings.ts +69 -0
- package/template/templates/asas/src/statements.ts +11 -0
- package/template/templates/asas/src/steps/expected-updated-at.ts +41 -0
- package/template/templates/asas/src/storage/defaults.ts +156 -0
- package/template/templates/asas/src/storage/index.ts +95 -0
- package/template/templates/asas/src/storage/local.ts +143 -0
- package/template/templates/asas/src/storage/r2.ts +5 -0
- package/template/templates/asas/src/storage/s3.ts +91 -0
- package/template/templates/asas/src/storage/uploadthing.ts +59 -0
- package/template/templates/asas/src/tags/tags.ts +80 -0
- package/template/templates/asas/src/tenant-access.ts +221 -0
- package/template/templates/asas/src/tenant-roles.ts +262 -0
- package/template/templates/asas/src/ui/app-shell.tsx +260 -0
- package/template/templates/asas/src/ui/kpi-card.tsx +25 -0
- package/template/templates/asas/src/ui/record-page.tsx +50 -0
- package/template/templates/asas/src/ui/rich-text-nodes.tsx +15 -0
- package/template/templates/asas/src/ui/screen-nav.tsx +28 -0
- package/template/templates/asas/src/ui/session-labels.tsx +36 -0
- package/template/templates/asas/src/ui/table-page.tsx +9 -0
- package/template/templates/asas/src/ui/top-shell.tsx +60 -0
- package/template/templates/asas/src/ui-dashboard/dashboard.tsx +294 -0
- package/template/templates/asas/src/ui-dashboard/members.tsx +630 -0
- package/template/templates/asas/src/ui-dashboard/theme-provider.tsx +10 -0
- package/template/templates/asas/src/ui-dashboard/versions.tsx +432 -0
- package/template/templates/asas/src/ui-platform/home.tsx +63 -0
- package/template/templates/asas/src/ui-platform/organization-actions.tsx +114 -0
- package/template/templates/asas/src/ui-platform/record-page.tsx +30 -0
- package/template/templates/asas/src/ui-platform/role-cells.tsx +52 -0
- package/template/templates/asas/src/ui-platform/user-actions.tsx +251 -0
- package/template/templates/asas/src/ui-portal/home.tsx +77 -0
- package/template/templates/asas/src/ui-portal/page.tsx +11 -0
- package/template/templates/auth/package.json +14 -0
- package/template/templates/auth/src/index.ts +690 -0
- package/template/templates/auth/src/platform-roles.ts +87 -0
- package/README.md +0 -3
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
|
|
3
|
+
const MOBILE_BREAKPOINT = 768
|
|
4
|
+
|
|
5
|
+
export function useIsMobile() {
|
|
6
|
+
const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)
|
|
7
|
+
|
|
8
|
+
React.useEffect(() => {
|
|
9
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
|
|
10
|
+
const onChange = () => {
|
|
11
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
|
|
12
|
+
}
|
|
13
|
+
mql.addEventListener("change", onChange)
|
|
14
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
|
|
15
|
+
return () => mql.removeEventListener("change", onChange)
|
|
16
|
+
}, [])
|
|
17
|
+
|
|
18
|
+
return !!isMobile
|
|
19
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The path a click on a plain `<a href>` is routed to inside the screen, or
|
|
3
|
+
* `undefined` for a click the browser keeps: a modified or handled click, another
|
|
4
|
+
* target, a download, another origin, or a path outside the screen's `base`.
|
|
5
|
+
*/
|
|
6
|
+
export const routedHref = ({
|
|
7
|
+
event,
|
|
8
|
+
origin,
|
|
9
|
+
base,
|
|
10
|
+
}: {
|
|
11
|
+
event: Pick<MouseEvent, 'button' | 'metaKey' | 'altKey' | 'ctrlKey' | 'shiftKey' | 'defaultPrevented' | 'target'>
|
|
12
|
+
origin: string
|
|
13
|
+
base: string
|
|
14
|
+
}): string | undefined => {
|
|
15
|
+
if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) return undefined
|
|
16
|
+
const anchor = (event.target as Element | null)?.closest?.('a[href]')
|
|
17
|
+
const target = anchor?.getAttribute('target')
|
|
18
|
+
if (!anchor || (target && target !== '_self') || anchor.hasAttribute('download')) return undefined
|
|
19
|
+
// The browser's own resolution against the current page: against the origin
|
|
20
|
+
// alone, `href="edit"` on `/dashboard/courses/` would read as `/edit`.
|
|
21
|
+
const url = new URL((anchor as HTMLAnchorElement).href)
|
|
22
|
+
if (url.origin !== origin || (url.pathname !== base && !url.pathname.startsWith(`${base}/`))) return undefined
|
|
23
|
+
return `${url.pathname}${url.search}${url.hash}`
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Where a list asked for a page past its last is sent instead: the same URL at
|
|
28
|
+
* the last page, or with no page where the last is the first. `undefined` for a
|
|
29
|
+
* page in range.
|
|
30
|
+
*/
|
|
31
|
+
export const clampedHref = ({ href, page, totalPages }: { href: string; page: number; totalPages: number }): string | undefined => {
|
|
32
|
+
if (page <= Math.max(1, totalPages)) return undefined
|
|
33
|
+
const url = new URL(href, 'http://local')
|
|
34
|
+
if (totalPages > 1) url.searchParams.set('page', String(totalPages))
|
|
35
|
+
else url.searchParams.delete('page')
|
|
36
|
+
return `${url.pathname}${url.search}${url.hash}`
|
|
37
|
+
}
|
|
38
|
+
// mithaq-admin b06d8d335d306c07556f8f2b81fba20ba7ded198 4754cbac64eeac528e7e037173ad56ffa8d07df3e526e1191bbe3be400db97a5
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Button } from '@/components/ui/button'
|
|
2
|
+
import { localeEntries } from './components/mithaq/nav.tsx'
|
|
3
|
+
import { locales, switchLocale, type Locale } from './copy.ts'
|
|
4
|
+
|
|
5
|
+
/** The language switch for pages without a form: `switchLocale` reloads without asking, so a page with a form must use the user menu, which asks first. */
|
|
6
|
+
export function LocaleSwitch({ locale }: { locale: Locale }) {
|
|
7
|
+
return (
|
|
8
|
+
<div className="flex items-center gap-1">
|
|
9
|
+
{localeEntries(locales, locale).map((entry) => (
|
|
10
|
+
<Button
|
|
11
|
+
key={entry.locale}
|
|
12
|
+
type="button"
|
|
13
|
+
variant={entry.active ? 'secondary' : 'ghost'}
|
|
14
|
+
size="xs"
|
|
15
|
+
aria-current={entry.active}
|
|
16
|
+
aria-label={entry.label}
|
|
17
|
+
onClick={() => switchLocale({ to: entry.locale })}
|
|
18
|
+
>
|
|
19
|
+
<span className="hidden sm:inline">{entry.label}</span>
|
|
20
|
+
<span className="sm:hidden">{entry.locale.toUpperCase()}</span>
|
|
21
|
+
</Button>
|
|
22
|
+
))}
|
|
23
|
+
</div>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
// mithaq-admin b06d8d335d306c07556f8f2b81fba20ba7ded198 43c6d309a5bae4f6af3cdcf4c741106b3a16129ac77d142f1e4254594f5b8a54
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* h3 knows its own error by the name `HTTPError` alone. 499 is the status nginx logs for a client
|
|
3
|
+
* that closed its request.
|
|
4
|
+
*/
|
|
5
|
+
const gone = () =>
|
|
6
|
+
Object.assign(new Error('The client closed the request.'), {
|
|
7
|
+
name: 'HTTPError',
|
|
8
|
+
status: 499,
|
|
9
|
+
statusText: 'Client Closed Request',
|
|
10
|
+
toJSON: () => ({ status: 499, message: 'The client closed the request.' }),
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The request handed to TanStack Start, whose signal aborts with `gone` when the client's does.
|
|
15
|
+
* Start throws the signal's reason on abort and h3 logs any error that is not its own as an
|
|
16
|
+
* unhandled 500, so a closed tab would be logged as a fault. The request is rebuilt from its parts
|
|
17
|
+
* because the Node server's srvx request is a class `new Request(request)` cannot read.
|
|
18
|
+
*/
|
|
19
|
+
export const withQuietAbort = (request: Request): Request => {
|
|
20
|
+
const controller = new AbortController()
|
|
21
|
+
if (request.signal.aborted) controller.abort(gone())
|
|
22
|
+
else request.signal.addEventListener('abort', () => controller.abort(gone()), { once: true })
|
|
23
|
+
const { method, headers, body } = request
|
|
24
|
+
return new Request(request.url, { method, headers, body: method === 'GET' || method === 'HEAD' ? null : body, signal: controller.signal, duplex: 'half' } as RequestInit)
|
|
25
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where signing in lands: only a path of this origin, so a link cannot turn the sign-in page
|
|
3
|
+
* into a jump to another site; anything else lands on `home`.
|
|
4
|
+
*
|
|
5
|
+
* The origin is the URL parser's answer rather than a prefix test's, so `https://elsewhere`,
|
|
6
|
+
* `//elsewhere` and `javascript:` are refused however they are spelled. A backslash, a C0 control
|
|
7
|
+
* and DEL are refused before the parse, since the parser rewrites or strips them before reading
|
|
8
|
+
* the host. They are written as escapes so git and grep keep reading this file as text.
|
|
9
|
+
*/
|
|
10
|
+
const base = 'https://mithaq.invalid'
|
|
11
|
+
|
|
12
|
+
export const wanted = ({ asked, home }: { asked: string | undefined; home: string }): string => {
|
|
13
|
+
if (asked === undefined || !asked.startsWith('/') || /[\\\x00-\x1f\x7f]/.test(asked)) return home
|
|
14
|
+
try {
|
|
15
|
+
return new URL(asked, base).origin === base ? asked : home
|
|
16
|
+
} catch {
|
|
17
|
+
// `new URL('//', base)` throws rather than resolving.
|
|
18
|
+
return home
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The headers a page's server-side `request` call sends: the session's, with
|
|
3
|
+
* the loader's own layered over them. The session's cookie always wins, so a
|
|
4
|
+
* loader's headers cannot act as another actor.
|
|
5
|
+
*/
|
|
6
|
+
export const mergedHeaders = (session: Headers, own?: HeadersInit): Headers => {
|
|
7
|
+
const headers = new Headers(session)
|
|
8
|
+
if (own) for (const [key, value] of new Headers(own)) if (key !== 'cookie') headers.set(key, value)
|
|
9
|
+
return headers
|
|
10
|
+
}
|
|
11
|
+
// mithaq-admin b06d8d335d306c07556f8f2b81fba20ba7ded198 2969a3dafbf201d6eb6074ecda0e8f17e341cbd1ca176100350844e74ec23623
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
|
|
5
|
+
// noinspection JSUnusedGlobalSymbols
|
|
6
|
+
|
|
7
|
+
// This file was automatically generated by TanStack Router.
|
|
8
|
+
// You should NOT make any changes in this file as it will be overwritten.
|
|
9
|
+
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
|
10
|
+
|
|
11
|
+
import { Route as rootRouteImport } from './routes/__root'
|
|
12
|
+
import { Route as IndexRouteImport } from './routes/index'
|
|
13
|
+
import { Route as UnauthorizedRouteImport } from './routes/unauthorized'
|
|
14
|
+
import { Route as screensDashboardRouteImport } from './routes/(screens)/dashboard'
|
|
15
|
+
import { Route as screensPortalRouteImport } from './routes/(screens)/portal'
|
|
16
|
+
import { Route as ApiSplatRouteImport } from './routes/api/$'
|
|
17
|
+
import { Route as AuthAcceptInvitationRouteImport } from './routes/auth.accept-invitation'
|
|
18
|
+
import { Route as AuthForgotPasswordRouteImport } from './routes/auth.forgot-password'
|
|
19
|
+
import { Route as AuthHandoffRouteImport } from './routes/auth.handoff'
|
|
20
|
+
import { Route as AuthResetPasswordRouteImport } from './routes/auth.reset-password'
|
|
21
|
+
import { Route as AuthSignInRouteImport } from './routes/auth.sign-in'
|
|
22
|
+
import { Route as AuthSignUpRouteImport } from './routes/auth.sign-up'
|
|
23
|
+
import { Route as screensDashboardIndexRouteImport } from './routes/(screens)/dashboard.index'
|
|
24
|
+
import { Route as screensDashboardSplatRouteImport } from './routes/(screens)/dashboard.$'
|
|
25
|
+
import { Route as screensPortalIndexRouteImport } from './routes/(screens)/portal.index'
|
|
26
|
+
import { Route as screensPortalSplatRouteImport } from './routes/(screens)/portal.$'
|
|
27
|
+
|
|
28
|
+
const IndexRoute = IndexRouteImport.update({
|
|
29
|
+
id: '/',
|
|
30
|
+
path: '/',
|
|
31
|
+
getParentRoute: () => rootRouteImport,
|
|
32
|
+
} as any)
|
|
33
|
+
const UnauthorizedRoute = UnauthorizedRouteImport.update({
|
|
34
|
+
id: '/unauthorized',
|
|
35
|
+
path: '/unauthorized',
|
|
36
|
+
getParentRoute: () => rootRouteImport,
|
|
37
|
+
} as any)
|
|
38
|
+
const screensDashboardRoute = screensDashboardRouteImport.update({
|
|
39
|
+
id: '/(screens)/dashboard',
|
|
40
|
+
path: '/dashboard',
|
|
41
|
+
getParentRoute: () => rootRouteImport,
|
|
42
|
+
} as any)
|
|
43
|
+
const screensPortalRoute = screensPortalRouteImport.update({
|
|
44
|
+
id: '/(screens)/portal',
|
|
45
|
+
path: '/portal',
|
|
46
|
+
getParentRoute: () => rootRouteImport,
|
|
47
|
+
} as any)
|
|
48
|
+
const ApiSplatRoute = ApiSplatRouteImport.update({
|
|
49
|
+
id: '/api/$',
|
|
50
|
+
path: '/api/$',
|
|
51
|
+
getParentRoute: () => rootRouteImport,
|
|
52
|
+
} as any)
|
|
53
|
+
const AuthAcceptInvitationRoute = AuthAcceptInvitationRouteImport.update({
|
|
54
|
+
id: '/auth/accept-invitation',
|
|
55
|
+
path: '/auth/accept-invitation',
|
|
56
|
+
getParentRoute: () => rootRouteImport,
|
|
57
|
+
} as any)
|
|
58
|
+
const AuthForgotPasswordRoute = AuthForgotPasswordRouteImport.update({
|
|
59
|
+
id: '/auth/forgot-password',
|
|
60
|
+
path: '/auth/forgot-password',
|
|
61
|
+
getParentRoute: () => rootRouteImport,
|
|
62
|
+
} as any)
|
|
63
|
+
const AuthHandoffRoute = AuthHandoffRouteImport.update({
|
|
64
|
+
id: '/auth/handoff',
|
|
65
|
+
path: '/auth/handoff',
|
|
66
|
+
getParentRoute: () => rootRouteImport,
|
|
67
|
+
} as any)
|
|
68
|
+
const AuthResetPasswordRoute = AuthResetPasswordRouteImport.update({
|
|
69
|
+
id: '/auth/reset-password',
|
|
70
|
+
path: '/auth/reset-password',
|
|
71
|
+
getParentRoute: () => rootRouteImport,
|
|
72
|
+
} as any)
|
|
73
|
+
const AuthSignInRoute = AuthSignInRouteImport.update({
|
|
74
|
+
id: '/auth/sign-in',
|
|
75
|
+
path: '/auth/sign-in',
|
|
76
|
+
getParentRoute: () => rootRouteImport,
|
|
77
|
+
} as any)
|
|
78
|
+
const AuthSignUpRoute = AuthSignUpRouteImport.update({
|
|
79
|
+
id: '/auth/sign-up',
|
|
80
|
+
path: '/auth/sign-up',
|
|
81
|
+
getParentRoute: () => rootRouteImport,
|
|
82
|
+
} as any)
|
|
83
|
+
const screensDashboardIndexRoute = screensDashboardIndexRouteImport.update({
|
|
84
|
+
id: '/',
|
|
85
|
+
path: '/',
|
|
86
|
+
getParentRoute: () => screensDashboardRoute,
|
|
87
|
+
} as any)
|
|
88
|
+
const screensDashboardSplatRoute = screensDashboardSplatRouteImport.update({
|
|
89
|
+
id: '/$',
|
|
90
|
+
path: '/$',
|
|
91
|
+
getParentRoute: () => screensDashboardRoute,
|
|
92
|
+
} as any)
|
|
93
|
+
const screensPortalIndexRoute = screensPortalIndexRouteImport.update({
|
|
94
|
+
id: '/',
|
|
95
|
+
path: '/',
|
|
96
|
+
getParentRoute: () => screensPortalRoute,
|
|
97
|
+
} as any)
|
|
98
|
+
const screensPortalSplatRoute = screensPortalSplatRouteImport.update({
|
|
99
|
+
id: '/$',
|
|
100
|
+
path: '/$',
|
|
101
|
+
getParentRoute: () => screensPortalRoute,
|
|
102
|
+
} as any)
|
|
103
|
+
|
|
104
|
+
export interface FileRoutesByFullPath {
|
|
105
|
+
'/': typeof IndexRoute
|
|
106
|
+
'/unauthorized': typeof UnauthorizedRoute
|
|
107
|
+
'/dashboard': typeof screensDashboardRouteWithChildren
|
|
108
|
+
'/portal': typeof screensPortalRouteWithChildren
|
|
109
|
+
'/api/$': typeof ApiSplatRoute
|
|
110
|
+
'/auth/accept-invitation': typeof AuthAcceptInvitationRoute
|
|
111
|
+
'/auth/forgot-password': typeof AuthForgotPasswordRoute
|
|
112
|
+
'/auth/handoff': typeof AuthHandoffRoute
|
|
113
|
+
'/auth/reset-password': typeof AuthResetPasswordRoute
|
|
114
|
+
'/auth/sign-in': typeof AuthSignInRoute
|
|
115
|
+
'/auth/sign-up': typeof AuthSignUpRoute
|
|
116
|
+
'/dashboard/$': typeof screensDashboardSplatRoute
|
|
117
|
+
'/portal/$': typeof screensPortalSplatRoute
|
|
118
|
+
'/dashboard/': typeof screensDashboardIndexRoute
|
|
119
|
+
'/portal/': typeof screensPortalIndexRoute
|
|
120
|
+
}
|
|
121
|
+
export interface FileRoutesByTo {
|
|
122
|
+
'/': typeof IndexRoute
|
|
123
|
+
'/unauthorized': typeof UnauthorizedRoute
|
|
124
|
+
'/api/$': typeof ApiSplatRoute
|
|
125
|
+
'/auth/accept-invitation': typeof AuthAcceptInvitationRoute
|
|
126
|
+
'/auth/forgot-password': typeof AuthForgotPasswordRoute
|
|
127
|
+
'/auth/handoff': typeof AuthHandoffRoute
|
|
128
|
+
'/auth/reset-password': typeof AuthResetPasswordRoute
|
|
129
|
+
'/auth/sign-in': typeof AuthSignInRoute
|
|
130
|
+
'/auth/sign-up': typeof AuthSignUpRoute
|
|
131
|
+
'/dashboard/$': typeof screensDashboardSplatRoute
|
|
132
|
+
'/portal/$': typeof screensPortalSplatRoute
|
|
133
|
+
'/dashboard': typeof screensDashboardIndexRoute
|
|
134
|
+
'/portal': typeof screensPortalIndexRoute
|
|
135
|
+
}
|
|
136
|
+
export interface FileRoutesById {
|
|
137
|
+
__root__: typeof rootRouteImport
|
|
138
|
+
'/': typeof IndexRoute
|
|
139
|
+
'/unauthorized': typeof UnauthorizedRoute
|
|
140
|
+
'/(screens)/dashboard': typeof screensDashboardRouteWithChildren
|
|
141
|
+
'/(screens)/portal': typeof screensPortalRouteWithChildren
|
|
142
|
+
'/api/$': typeof ApiSplatRoute
|
|
143
|
+
'/auth/accept-invitation': typeof AuthAcceptInvitationRoute
|
|
144
|
+
'/auth/forgot-password': typeof AuthForgotPasswordRoute
|
|
145
|
+
'/auth/handoff': typeof AuthHandoffRoute
|
|
146
|
+
'/auth/reset-password': typeof AuthResetPasswordRoute
|
|
147
|
+
'/auth/sign-in': typeof AuthSignInRoute
|
|
148
|
+
'/auth/sign-up': typeof AuthSignUpRoute
|
|
149
|
+
'/(screens)/dashboard/$': typeof screensDashboardSplatRoute
|
|
150
|
+
'/(screens)/portal/$': typeof screensPortalSplatRoute
|
|
151
|
+
'/(screens)/dashboard/': typeof screensDashboardIndexRoute
|
|
152
|
+
'/(screens)/portal/': typeof screensPortalIndexRoute
|
|
153
|
+
}
|
|
154
|
+
export interface FileRouteTypes {
|
|
155
|
+
fileRoutesByFullPath: FileRoutesByFullPath
|
|
156
|
+
fullPaths:
|
|
157
|
+
| '/'
|
|
158
|
+
| '/unauthorized'
|
|
159
|
+
| '/dashboard'
|
|
160
|
+
| '/portal'
|
|
161
|
+
| '/api/$'
|
|
162
|
+
| '/auth/accept-invitation'
|
|
163
|
+
| '/auth/forgot-password'
|
|
164
|
+
| '/auth/handoff'
|
|
165
|
+
| '/auth/reset-password'
|
|
166
|
+
| '/auth/sign-in'
|
|
167
|
+
| '/auth/sign-up'
|
|
168
|
+
| '/dashboard/$'
|
|
169
|
+
| '/portal/$'
|
|
170
|
+
| '/dashboard/'
|
|
171
|
+
| '/portal/'
|
|
172
|
+
fileRoutesByTo: FileRoutesByTo
|
|
173
|
+
to:
|
|
174
|
+
| '/'
|
|
175
|
+
| '/unauthorized'
|
|
176
|
+
| '/api/$'
|
|
177
|
+
| '/auth/accept-invitation'
|
|
178
|
+
| '/auth/forgot-password'
|
|
179
|
+
| '/auth/handoff'
|
|
180
|
+
| '/auth/reset-password'
|
|
181
|
+
| '/auth/sign-in'
|
|
182
|
+
| '/auth/sign-up'
|
|
183
|
+
| '/dashboard/$'
|
|
184
|
+
| '/portal/$'
|
|
185
|
+
| '/dashboard'
|
|
186
|
+
| '/portal'
|
|
187
|
+
id:
|
|
188
|
+
| '__root__'
|
|
189
|
+
| '/'
|
|
190
|
+
| '/unauthorized'
|
|
191
|
+
| '/(screens)/dashboard'
|
|
192
|
+
| '/(screens)/portal'
|
|
193
|
+
| '/api/$'
|
|
194
|
+
| '/auth/accept-invitation'
|
|
195
|
+
| '/auth/forgot-password'
|
|
196
|
+
| '/auth/handoff'
|
|
197
|
+
| '/auth/reset-password'
|
|
198
|
+
| '/auth/sign-in'
|
|
199
|
+
| '/auth/sign-up'
|
|
200
|
+
| '/(screens)/dashboard/$'
|
|
201
|
+
| '/(screens)/portal/$'
|
|
202
|
+
| '/(screens)/dashboard/'
|
|
203
|
+
| '/(screens)/portal/'
|
|
204
|
+
fileRoutesById: FileRoutesById
|
|
205
|
+
}
|
|
206
|
+
export interface RootRouteChildren {
|
|
207
|
+
IndexRoute: typeof IndexRoute
|
|
208
|
+
UnauthorizedRoute: typeof UnauthorizedRoute
|
|
209
|
+
screensDashboardRoute: typeof screensDashboardRouteWithChildren
|
|
210
|
+
screensPortalRoute: typeof screensPortalRouteWithChildren
|
|
211
|
+
ApiSplatRoute: typeof ApiSplatRoute
|
|
212
|
+
AuthAcceptInvitationRoute: typeof AuthAcceptInvitationRoute
|
|
213
|
+
AuthForgotPasswordRoute: typeof AuthForgotPasswordRoute
|
|
214
|
+
AuthHandoffRoute: typeof AuthHandoffRoute
|
|
215
|
+
AuthResetPasswordRoute: typeof AuthResetPasswordRoute
|
|
216
|
+
AuthSignInRoute: typeof AuthSignInRoute
|
|
217
|
+
AuthSignUpRoute: typeof AuthSignUpRoute
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
declare module '@tanstack/react-router' {
|
|
221
|
+
interface FileRoutesByPath {
|
|
222
|
+
'/': {
|
|
223
|
+
id: '/'
|
|
224
|
+
path: '/'
|
|
225
|
+
fullPath: '/'
|
|
226
|
+
preLoaderRoute: typeof IndexRouteImport
|
|
227
|
+
parentRoute: typeof rootRouteImport
|
|
228
|
+
}
|
|
229
|
+
'/unauthorized': {
|
|
230
|
+
id: '/unauthorized'
|
|
231
|
+
path: '/unauthorized'
|
|
232
|
+
fullPath: '/unauthorized'
|
|
233
|
+
preLoaderRoute: typeof UnauthorizedRouteImport
|
|
234
|
+
parentRoute: typeof rootRouteImport
|
|
235
|
+
}
|
|
236
|
+
'/(screens)/dashboard': {
|
|
237
|
+
id: '/(screens)/dashboard'
|
|
238
|
+
path: '/dashboard'
|
|
239
|
+
fullPath: '/dashboard'
|
|
240
|
+
preLoaderRoute: typeof screensDashboardRouteImport
|
|
241
|
+
parentRoute: typeof rootRouteImport
|
|
242
|
+
}
|
|
243
|
+
'/(screens)/portal': {
|
|
244
|
+
id: '/(screens)/portal'
|
|
245
|
+
path: '/portal'
|
|
246
|
+
fullPath: '/portal'
|
|
247
|
+
preLoaderRoute: typeof screensPortalRouteImport
|
|
248
|
+
parentRoute: typeof rootRouteImport
|
|
249
|
+
}
|
|
250
|
+
'/api/$': {
|
|
251
|
+
id: '/api/$'
|
|
252
|
+
path: '/api/$'
|
|
253
|
+
fullPath: '/api/$'
|
|
254
|
+
preLoaderRoute: typeof ApiSplatRouteImport
|
|
255
|
+
parentRoute: typeof rootRouteImport
|
|
256
|
+
}
|
|
257
|
+
'/auth/accept-invitation': {
|
|
258
|
+
id: '/auth/accept-invitation'
|
|
259
|
+
path: '/auth/accept-invitation'
|
|
260
|
+
fullPath: '/auth/accept-invitation'
|
|
261
|
+
preLoaderRoute: typeof AuthAcceptInvitationRouteImport
|
|
262
|
+
parentRoute: typeof rootRouteImport
|
|
263
|
+
}
|
|
264
|
+
'/auth/forgot-password': {
|
|
265
|
+
id: '/auth/forgot-password'
|
|
266
|
+
path: '/auth/forgot-password'
|
|
267
|
+
fullPath: '/auth/forgot-password'
|
|
268
|
+
preLoaderRoute: typeof AuthForgotPasswordRouteImport
|
|
269
|
+
parentRoute: typeof rootRouteImport
|
|
270
|
+
}
|
|
271
|
+
'/auth/handoff': {
|
|
272
|
+
id: '/auth/handoff'
|
|
273
|
+
path: '/auth/handoff'
|
|
274
|
+
fullPath: '/auth/handoff'
|
|
275
|
+
preLoaderRoute: typeof AuthHandoffRouteImport
|
|
276
|
+
parentRoute: typeof rootRouteImport
|
|
277
|
+
}
|
|
278
|
+
'/auth/reset-password': {
|
|
279
|
+
id: '/auth/reset-password'
|
|
280
|
+
path: '/auth/reset-password'
|
|
281
|
+
fullPath: '/auth/reset-password'
|
|
282
|
+
preLoaderRoute: typeof AuthResetPasswordRouteImport
|
|
283
|
+
parentRoute: typeof rootRouteImport
|
|
284
|
+
}
|
|
285
|
+
'/auth/sign-in': {
|
|
286
|
+
id: '/auth/sign-in'
|
|
287
|
+
path: '/auth/sign-in'
|
|
288
|
+
fullPath: '/auth/sign-in'
|
|
289
|
+
preLoaderRoute: typeof AuthSignInRouteImport
|
|
290
|
+
parentRoute: typeof rootRouteImport
|
|
291
|
+
}
|
|
292
|
+
'/auth/sign-up': {
|
|
293
|
+
id: '/auth/sign-up'
|
|
294
|
+
path: '/auth/sign-up'
|
|
295
|
+
fullPath: '/auth/sign-up'
|
|
296
|
+
preLoaderRoute: typeof AuthSignUpRouteImport
|
|
297
|
+
parentRoute: typeof rootRouteImport
|
|
298
|
+
}
|
|
299
|
+
'/(screens)/dashboard/': {
|
|
300
|
+
id: '/(screens)/dashboard/'
|
|
301
|
+
path: '/'
|
|
302
|
+
fullPath: '/dashboard/'
|
|
303
|
+
preLoaderRoute: typeof screensDashboardIndexRouteImport
|
|
304
|
+
parentRoute: typeof screensDashboardRoute
|
|
305
|
+
}
|
|
306
|
+
'/(screens)/dashboard/$': {
|
|
307
|
+
id: '/(screens)/dashboard/$'
|
|
308
|
+
path: '/$'
|
|
309
|
+
fullPath: '/dashboard/$'
|
|
310
|
+
preLoaderRoute: typeof screensDashboardSplatRouteImport
|
|
311
|
+
parentRoute: typeof screensDashboardRoute
|
|
312
|
+
}
|
|
313
|
+
'/(screens)/portal/': {
|
|
314
|
+
id: '/(screens)/portal/'
|
|
315
|
+
path: '/'
|
|
316
|
+
fullPath: '/portal/'
|
|
317
|
+
preLoaderRoute: typeof screensPortalIndexRouteImport
|
|
318
|
+
parentRoute: typeof screensPortalRoute
|
|
319
|
+
}
|
|
320
|
+
'/(screens)/portal/$': {
|
|
321
|
+
id: '/(screens)/portal/$'
|
|
322
|
+
path: '/$'
|
|
323
|
+
fullPath: '/portal/$'
|
|
324
|
+
preLoaderRoute: typeof screensPortalSplatRouteImport
|
|
325
|
+
parentRoute: typeof screensPortalRoute
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
interface screensDashboardRouteChildren {
|
|
331
|
+
screensDashboardSplatRoute: typeof screensDashboardSplatRoute
|
|
332
|
+
screensDashboardIndexRoute: typeof screensDashboardIndexRoute
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
const screensDashboardRouteChildren: screensDashboardRouteChildren = {
|
|
336
|
+
screensDashboardSplatRoute: screensDashboardSplatRoute,
|
|
337
|
+
screensDashboardIndexRoute: screensDashboardIndexRoute,
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
const screensDashboardRouteWithChildren =
|
|
341
|
+
screensDashboardRoute._addFileChildren(screensDashboardRouteChildren)
|
|
342
|
+
|
|
343
|
+
interface screensPortalRouteChildren {
|
|
344
|
+
screensPortalSplatRoute: typeof screensPortalSplatRoute
|
|
345
|
+
screensPortalIndexRoute: typeof screensPortalIndexRoute
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
const screensPortalRouteChildren: screensPortalRouteChildren = {
|
|
349
|
+
screensPortalSplatRoute: screensPortalSplatRoute,
|
|
350
|
+
screensPortalIndexRoute: screensPortalIndexRoute,
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
const screensPortalRouteWithChildren = screensPortalRoute._addFileChildren(
|
|
354
|
+
screensPortalRouteChildren,
|
|
355
|
+
)
|
|
356
|
+
|
|
357
|
+
const rootRouteChildren: RootRouteChildren = {
|
|
358
|
+
IndexRoute: IndexRoute,
|
|
359
|
+
UnauthorizedRoute: UnauthorizedRoute,
|
|
360
|
+
screensDashboardRoute: screensDashboardRouteWithChildren,
|
|
361
|
+
screensPortalRoute: screensPortalRouteWithChildren,
|
|
362
|
+
ApiSplatRoute: ApiSplatRoute,
|
|
363
|
+
AuthAcceptInvitationRoute: AuthAcceptInvitationRoute,
|
|
364
|
+
AuthForgotPasswordRoute: AuthForgotPasswordRoute,
|
|
365
|
+
AuthHandoffRoute: AuthHandoffRoute,
|
|
366
|
+
AuthResetPasswordRoute: AuthResetPasswordRoute,
|
|
367
|
+
AuthSignInRoute: AuthSignInRoute,
|
|
368
|
+
AuthSignUpRoute: AuthSignUpRoute,
|
|
369
|
+
}
|
|
370
|
+
export const routeTree = rootRouteImport
|
|
371
|
+
._addFileChildren(rootRouteChildren)
|
|
372
|
+
._addFileTypes<FileRouteTypes>()
|
|
373
|
+
|
|
374
|
+
import type { getRouter } from './router.tsx'
|
|
375
|
+
import type { startInstance } from './start.ts'
|
|
376
|
+
declare module '@tanstack/react-start' {
|
|
377
|
+
interface Register {
|
|
378
|
+
ssr: true
|
|
379
|
+
router: Awaited<ReturnType<typeof getRouter>>
|
|
380
|
+
config: Awaited<ReturnType<typeof startInstance.getOptions>>
|
|
381
|
+
}
|
|
382
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRouter } from '@tanstack/react-router'
|
|
2
|
+
import { routeTree } from './routeTree.gen'
|
|
3
|
+
import { flatSearch } from './screen-list.tsx'
|
|
4
|
+
|
|
5
|
+
// The search is read and written as the URL's own pairs, one string each, because a list
|
|
6
|
+
// keeps its `qs` query there.
|
|
7
|
+
export const getRouter = () => createRouter({ routeTree, scrollRestoration: true, ...flatSearch })
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// Written by `mithaq generate screens`. Do not edit.
|
|
2
|
+
/// <reference types="vite/client" />
|
|
3
|
+
// Every file the `dashboard` screen's references name, each loaded when a page draws it.
|
|
4
|
+
export const files = import.meta.glob(['./src/audit-log/ui/activity.tsx', './src/courses/ui/fee-cell.tsx', './src/courses/ui/no-courses.tsx', './src/courses/ui/status-cell.tsx', './src/enrollments/ui/session-cell.tsx', './src/media/ui/preview.tsx', './src/roles/ui/role-form.tsx', './src/roles/ui/roles.tsx', './src/ui-dashboard/dashboard.tsx', './src/ui-dashboard/members.tsx', './src/ui-dashboard/theme-provider.tsx', './src/ui-dashboard/versions.tsx', './src/ui/app-shell.tsx', './src/ui/record-page.tsx', './src/ui/rich-text-nodes.tsx', './src/ui/session-labels.tsx', './src/ui/table-page.tsx', './src/ui/top-shell.tsx'], { base: '/node_modules/asas/', exhaustive: true })
|