robodev 0.12.0 → 0.13.0
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/package.json +1 -1
- package/src/emit-starter.test.ts +14 -0
- package/src/index.ts +12 -4
- package/templates/auth-chat/.config/local.spa.template.yml +27 -0
- package/templates/auth-chat/.oxlint-base.json +29 -0
- package/templates/auth-chat/.oxlintrc.json +78 -0
- package/templates/auth-chat/.rulesync/rules/frontend-api-boundary.md +36 -0
- package/templates/auth-chat/.rulesync/rules/frontend-component-structure.md +38 -0
- package/templates/auth-chat/.rulesync/rules/frontend-forms.md +32 -0
- package/templates/auth-chat/.rulesync/rules/frontend-notifications.md +24 -0
- package/templates/auth-chat/.rulesync/rules/frontend-povio-components.md +42 -0
- package/templates/auth-chat/.rulesync/rules/frontend-povio-ui.md +45 -0
- package/templates/auth-chat/.rulesync/rules/frontend-query-autocomplete.md +29 -0
- package/templates/auth-chat/.rulesync/rules/frontend-tables-and-lists.md +34 -0
- package/templates/auth-chat/.rulesync/rules/frontend-translations.md +26 -0
- package/templates/auth-chat/.rulesync/rules/project-overview.md +32 -0
- package/templates/auth-chat/.rulesync/rules/robodev-api.md +30 -0
- package/templates/auth-chat/.rulesync/rules/robodev-auth.md +40 -0
- package/templates/auth-chat/.rulesync/rules/robodev-database.md +22 -0
- package/templates/auth-chat/.rulesync/rules/role-based-app-structure.md +36 -0
- package/templates/auth-chat/.rulesync/skills/media-feature/SKILL.md +21 -0
- package/templates/auth-chat/.rulesync/skills/povio-ui-styling/SKILL.md +208 -0
- package/templates/auth-chat/.rulesync/skills/povio-ui-styling/agents/openai.yaml +4 -0
- package/templates/auth-chat/.rulesync/skills/robodev-api-route/SKILL.md +13 -0
- package/templates/auth-chat/.rulesync/skills/robodev-table/SKILL.md +12 -0
- package/templates/auth-chat/README.md +26 -7
- package/templates/auth-chat/api/invite.ts +43 -0
- package/templates/auth-chat/apps/fe/index.html +24 -0
- package/templates/auth-chat/apps/fe/openapi-codegen.config.ts +37 -0
- package/templates/auth-chat/apps/fe/package.json +82 -0
- package/templates/auth-chat/apps/fe/public/apple-touch-icon.png +0 -0
- package/templates/auth-chat/apps/fe/public/favicon-96x96.png +0 -0
- package/templates/auth-chat/apps/fe/public/favicon.ico +0 -0
- package/templates/auth-chat/apps/fe/public/favicon.svg +3 -0
- package/templates/auth-chat/apps/fe/public/site.webmanifest +21 -0
- package/templates/auth-chat/apps/fe/public/web-app-manifest-192x192.png +0 -0
- package/templates/auth-chat/apps/fe/public/web-app-manifest-512x512.png +0 -0
- package/templates/auth-chat/apps/fe/src/assets/fonts/GeneralSans-Bold.otf +0 -0
- package/templates/auth-chat/apps/fe/src/assets/fonts/GeneralSans-Medium.otf +0 -0
- package/templates/auth-chat/apps/fe/src/assets/fonts/GeneralSans-Regular.otf +0 -0
- package/templates/auth-chat/apps/fe/src/assets/fonts/GeneralSans-Semibold.otf +0 -0
- package/templates/auth-chat/apps/fe/src/assets/locales/en/translation.json +202 -0
- package/templates/auth-chat/apps/fe/src/assets/locales/sl/translation.json +202 -0
- package/templates/auth-chat/apps/fe/src/clients/app-rest-client.ts +15 -0
- package/templates/auth-chat/apps/fe/src/clients/auth-token-store.ts +101 -0
- package/templates/auth-chat/apps/fe/src/clients/rest/app-error-handler.ts +31 -0
- package/templates/auth-chat/apps/fe/src/clients/rest/interceptors/authorization-header.interceptor.ts +15 -0
- package/templates/auth-chat/apps/fe/src/clients/rest/interceptors/refresh-token.interceptor.ts +37 -0
- package/templates/auth-chat/apps/fe/src/clients/rest/interceptors/response.interceptor.ts +17 -0
- package/templates/auth-chat/apps/fe/src/components/404.tsx +18 -0
- package/templates/auth-chat/apps/fe/src/components/features/auth/AuthBrandPanel.tsx +60 -0
- package/templates/auth-chat/apps/fe/src/components/features/auth/AuthLayout.tsx +23 -0
- package/templates/auth-chat/apps/fe/src/components/features/auth/LoginPage.tsx +111 -0
- package/templates/auth-chat/apps/fe/src/components/features/auth/RegisterPage.tsx +143 -0
- package/templates/auth-chat/apps/fe/src/components/features/chat/ChatPage.tsx +105 -0
- package/templates/auth-chat/apps/fe/src/components/features/chat/InviteForm.tsx +84 -0
- package/templates/auth-chat/apps/fe/src/components/features/profile/ProfilePage.tsx +96 -0
- package/templates/auth-chat/apps/fe/src/components/googleAnalytics/GoogleAnalytics.tsx +35 -0
- package/templates/auth-chat/apps/fe/src/components/layout/AppLayout.tsx +19 -0
- package/templates/auth-chat/apps/fe/src/components/layout/app-header/AppHeader.tsx +91 -0
- package/templates/auth-chat/apps/fe/src/components/layout/app-header/MobileNavigation.tsx +51 -0
- package/templates/auth-chat/apps/fe/src/components/layout/app-header/NavLink.tsx +29 -0
- package/templates/auth-chat/apps/fe/src/components/shared/branding/BrandLogo.tsx +13 -0
- package/templates/auth-chat/apps/fe/src/components/shared/error/ErrorFallback.tsx +43 -0
- package/templates/auth-chat/apps/fe/src/components/shared/error/ErrorText.tsx +20 -0
- package/templates/auth-chat/apps/fe/src/components/shared/error/NotFound.tsx +36 -0
- package/templates/auth-chat/apps/fe/src/components/shared/forms/RequiredLabel.tsx +21 -0
- package/templates/auth-chat/apps/fe/src/components/shared/forms/RowInputWrapper.tsx +50 -0
- package/templates/auth-chat/apps/fe/src/components/shared/head/AppHead.tsx +32 -0
- package/templates/auth-chat/apps/fe/src/components/shared/head/DefaultAppHead.tsx +34 -0
- package/templates/auth-chat/apps/fe/src/components/shared/layout/LoadingState.tsx +9 -0
- package/templates/auth-chat/apps/fe/src/components/shared/layout/ThinPageWrapper.tsx +5 -0
- package/templates/auth-chat/apps/fe/src/components/shared/page/PageHeader.tsx +69 -0
- package/templates/auth-chat/apps/fe/src/components/shared/ui/Card.tsx +60 -0
- package/templates/auth-chat/apps/fe/src/components/shared/ui/GoogleLoginButton.tsx +19 -0
- package/templates/auth-chat/apps/fe/src/components/shared/ui/RequiredLabel.tsx +22 -0
- package/templates/auth-chat/apps/fe/src/components/shared/ui/TableActions.tsx +22 -0
- package/templates/auth-chat/apps/fe/src/config/app.config.ts +35 -0
- package/templates/auth-chat/apps/fe/src/config/i18n.ts +43 -0
- package/templates/auth-chat/apps/fe/src/config/inits/a11y.ts +14 -0
- package/templates/auth-chat/apps/fe/src/config/inits/logger.ts +7 -0
- package/templates/auth-chat/apps/fe/src/config/inits/sentry.ts +21 -0
- package/templates/auth-chat/apps/fe/src/config/jwt.config.ts +2 -0
- package/templates/auth-chat/apps/fe/src/config/query.config.ts +20 -0
- package/templates/auth-chat/apps/fe/src/hooks/useAuth.ts +5 -0
- package/templates/auth-chat/apps/fe/src/main.tsx +52 -0
- package/templates/auth-chat/apps/fe/src/pages/(guest)/login.tsx +23 -0
- package/templates/auth-chat/apps/fe/src/pages/(guest)/register.tsx +23 -0
- package/templates/auth-chat/apps/fe/src/pages/(guest)/route.tsx +18 -0
- package/templates/auth-chat/apps/fe/src/pages/(private)/index.tsx +23 -0
- package/templates/auth-chat/apps/fe/src/pages/(private)/profile.tsx +23 -0
- package/templates/auth-chat/apps/fe/src/pages/(private)/route.tsx +18 -0
- package/templates/auth-chat/apps/fe/src/pages/(public)/auth.tsx +37 -0
- package/templates/auth-chat/apps/fe/src/pages/(public)/route.tsx +9 -0
- package/templates/auth-chat/apps/fe/src/pages/__root.tsx +164 -0
- package/templates/auth-chat/apps/fe/src/providers/AppErrorBoundary.tsx +10 -0
- package/templates/auth-chat/apps/fe/src/providers/OpenApiRuntimeProvider.tsx +31 -0
- package/templates/auth-chat/apps/fe/src/providers/index.tsx +44 -0
- package/templates/auth-chat/apps/fe/src/providers/jwt.provider.tsx +95 -0
- package/templates/auth-chat/apps/fe/src/routeTree.gen.ts +225 -0
- package/templates/auth-chat/apps/fe/src/styles/base.css +103 -0
- package/templates/auth-chat/apps/fe/src/styles/fonts/fonts.tsx +10 -0
- package/templates/auth-chat/apps/fe/src/styles/fonts/general-sans.css +31 -0
- package/templates/auth-chat/apps/fe/src/styles/globals.css +28 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/button.override.ts +536 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/checkbox.override.ts +71 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/input.override.ts +252 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/label.override.ts +91 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/modal.override.ts +57 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/radio.override.ts +46 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/table.override.ts +104 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/tag.override.ts +66 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/defaults/typography.override.ts +115 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/outline.clsx.ts +10 -0
- package/templates/auth-chat/apps/fe/src/styles/overrides/uiOverrides.override.ts +60 -0
- package/templates/auth-chat/apps/fe/src/styles/theme.css +2177 -0
- package/templates/auth-chat/apps/fe/src/types/i18next.d.ts +12 -0
- package/templates/auth-chat/apps/fe/src/types/table.d.ts +17 -0
- package/templates/auth-chat/apps/fe/src/types/ui.d.ts +26 -0
- package/templates/auth-chat/apps/fe/src/types/vite-env.d.ts +20 -0
- package/templates/auth-chat/apps/fe/src/utils/date.utils.ts +17 -0
- package/templates/auth-chat/apps/fe/src/utils/number.utils.ts +12 -0
- package/templates/auth-chat/apps/fe/src/utils/string.utils.ts +5 -0
- package/templates/auth-chat/apps/fe/src/vite-env.d.ts +1 -0
- package/templates/auth-chat/apps/fe/tsconfig.app.json +32 -0
- package/templates/auth-chat/apps/fe/tsconfig.json +9 -0
- package/templates/auth-chat/apps/fe/tsconfig.node.json +31 -0
- package/templates/auth-chat/apps/fe/vite.config.ts +94 -0
- package/templates/auth-chat/openapi.json +1016 -0
- package/templates/auth-chat/oxfmt.config.js +23 -0
- package/templates/auth-chat/package.json +6 -13
- package/templates/auth-chat/rulesync.jsonc +18 -0
- package/templates/auth-chat/tsconfig.json +2 -4
- package/templates/backend/README.md +2 -2
- package/templates/backend/api/_lib.ts +359 -0
- package/templates/backend/api/aliens/labels.ts +19 -0
- package/templates/backend/api/files/presigned-url.ts +48 -0
- package/templates/backend/api/files/upload.ts +29 -0
- package/templates/backend/api/planets/[id]/like.ts +36 -0
- package/templates/backend/api/planets/[id].ts +56 -13
- package/templates/backend/api/planets/paginate.ts +36 -0
- package/templates/backend/api/planets.ts +52 -44
- package/templates/backend/database.ts +33 -13
- package/templates/backend/package.json +1 -1
- package/templates/catalog.json +2 -2
- package/templates/empty/package.json +1 -1
- package/templates/space/package.json +1 -1
- package/templates/auth-chat/index.html +0 -201
- package/templates/auth-chat/src/main.tsx +0 -282
- package/templates/auth-chat/vite.config.ts +0 -7
- package/templates/backend/api/health.ts +0 -7
- package/templates/backend/api/launch.ts +0 -29
- package/templates/backend/api/me.ts +0 -14
- package/templates/backend/api/motto.ts +0 -9
- package/templates/backend/api/rockets.ts +0 -43
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { AuthContext } from "@povio/openapi-codegen-cli";
|
|
2
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
3
|
+
import { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from "react";
|
|
4
|
+
|
|
5
|
+
import { authTokenStore } from "@/clients/auth-token-store";
|
|
6
|
+
import { LoadingState } from "@/components/shared/layout/LoadingState";
|
|
7
|
+
import { UserApi } from "@/openapi/user/user.api";
|
|
8
|
+
import type { UserModels } from "@/openapi/user/user.models";
|
|
9
|
+
import { UserQueries } from "@/openapi/user/user.queries";
|
|
10
|
+
|
|
11
|
+
const routes: AuthContext.Routes = {
|
|
12
|
+
authenticated: "/",
|
|
13
|
+
unauthenticated: "/login",
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const JWTProvider = ({ children }: PropsWithChildren) => {
|
|
17
|
+
const queryClient = useQueryClient();
|
|
18
|
+
|
|
19
|
+
const previousAccessToken = useRef<string | null>(null);
|
|
20
|
+
const accessToken = useSyncExternalStore(
|
|
21
|
+
authTokenStore.subscribe,
|
|
22
|
+
authTokenStore.getAccessToken,
|
|
23
|
+
authTokenStore.getServerSnapshot,
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const authenticated = !!accessToken;
|
|
27
|
+
const isInitializing = false;
|
|
28
|
+
|
|
29
|
+
const { data: user } = UserQueries.useGet({
|
|
30
|
+
enabled: authenticated,
|
|
31
|
+
staleTime: 10 * 60 * 1000,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const onAccessTokenChange = useCallback((token: string | null) => {
|
|
35
|
+
authTokenStore.setAccessToken(token);
|
|
36
|
+
}, []);
|
|
37
|
+
|
|
38
|
+
const onRefreshTokenChange = useCallback((token: string | null) => {
|
|
39
|
+
authTokenStore.setRefreshToken(token);
|
|
40
|
+
}, []);
|
|
41
|
+
|
|
42
|
+
const logout = useCallback(() => {
|
|
43
|
+
authTokenStore.clear();
|
|
44
|
+
queryClient.clear();
|
|
45
|
+
}, [queryClient]);
|
|
46
|
+
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (previousAccessToken.current && !accessToken) {
|
|
49
|
+
queryClient.clear();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
previousAccessToken.current = accessToken;
|
|
53
|
+
}, [accessToken, queryClient]);
|
|
54
|
+
|
|
55
|
+
const userPromise = useCallback(async () => {
|
|
56
|
+
try {
|
|
57
|
+
const user = await UserApi.get();
|
|
58
|
+
queryClient.setQueryData<UserModels.UserMeResponse>(UserQueries.keys.get(), user);
|
|
59
|
+
return user;
|
|
60
|
+
} catch {
|
|
61
|
+
logout();
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}, [logout, queryClient]);
|
|
65
|
+
|
|
66
|
+
const updateTokens = useCallback(
|
|
67
|
+
(accessToken: string | null, refreshToken?: string | null) => {
|
|
68
|
+
if (accessToken !== null) {
|
|
69
|
+
onAccessTokenChange(accessToken);
|
|
70
|
+
}
|
|
71
|
+
if (refreshToken !== null && refreshToken !== undefined) {
|
|
72
|
+
onRefreshTokenChange(refreshToken);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
[onAccessTokenChange, onRefreshTokenChange],
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const loadingState = useMemo(() => <LoadingState />, []);
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
<AuthContext.Provider
|
|
82
|
+
isAuthenticated={authenticated}
|
|
83
|
+
isInitializing={isInitializing}
|
|
84
|
+
logout={logout}
|
|
85
|
+
updateTokens={updateTokens}
|
|
86
|
+
accessToken={accessToken}
|
|
87
|
+
user={user}
|
|
88
|
+
userPromise={userPromise}
|
|
89
|
+
routes={routes}
|
|
90
|
+
loadingState={loadingState}
|
|
91
|
+
>
|
|
92
|
+
{children}
|
|
93
|
+
</AuthContext.Provider>
|
|
94
|
+
);
|
|
95
|
+
};
|
|
@@ -0,0 +1,225 @@
|
|
|
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 './pages/__root'
|
|
12
|
+
import { Route as publicRouteRouteImport } from './pages/(public)/route'
|
|
13
|
+
import { Route as privateRouteRouteImport } from './pages/(private)/route'
|
|
14
|
+
import { Route as guestRouteRouteImport } from './pages/(guest)/route'
|
|
15
|
+
import { Route as privateIndexRouteImport } from './pages/(private)/index'
|
|
16
|
+
import { Route as publicAuthRouteImport } from './pages/(public)/auth'
|
|
17
|
+
import { Route as privateProfileRouteImport } from './pages/(private)/profile'
|
|
18
|
+
import { Route as guestRegisterRouteImport } from './pages/(guest)/register'
|
|
19
|
+
import { Route as guestLoginRouteImport } from './pages/(guest)/login'
|
|
20
|
+
|
|
21
|
+
const publicRouteRoute = publicRouteRouteImport.update({
|
|
22
|
+
id: '/(public)',
|
|
23
|
+
getParentRoute: () => rootRouteImport,
|
|
24
|
+
} as any)
|
|
25
|
+
const privateRouteRoute = privateRouteRouteImport.update({
|
|
26
|
+
id: '/(private)',
|
|
27
|
+
getParentRoute: () => rootRouteImport,
|
|
28
|
+
} as any)
|
|
29
|
+
const guestRouteRoute = guestRouteRouteImport.update({
|
|
30
|
+
id: '/(guest)',
|
|
31
|
+
getParentRoute: () => rootRouteImport,
|
|
32
|
+
} as any)
|
|
33
|
+
const privateIndexRoute = privateIndexRouteImport.update({
|
|
34
|
+
id: '/',
|
|
35
|
+
path: '/',
|
|
36
|
+
getParentRoute: () => privateRouteRoute,
|
|
37
|
+
} as any)
|
|
38
|
+
const publicAuthRoute = publicAuthRouteImport.update({
|
|
39
|
+
id: '/auth',
|
|
40
|
+
path: '/auth',
|
|
41
|
+
getParentRoute: () => publicRouteRoute,
|
|
42
|
+
} as any)
|
|
43
|
+
const privateProfileRoute = privateProfileRouteImport.update({
|
|
44
|
+
id: '/profile',
|
|
45
|
+
path: '/profile',
|
|
46
|
+
getParentRoute: () => privateRouteRoute,
|
|
47
|
+
} as any)
|
|
48
|
+
const guestRegisterRoute = guestRegisterRouteImport.update({
|
|
49
|
+
id: '/register',
|
|
50
|
+
path: '/register',
|
|
51
|
+
getParentRoute: () => guestRouteRoute,
|
|
52
|
+
} as any)
|
|
53
|
+
const guestLoginRoute = guestLoginRouteImport.update({
|
|
54
|
+
id: '/login',
|
|
55
|
+
path: '/login',
|
|
56
|
+
getParentRoute: () => guestRouteRoute,
|
|
57
|
+
} as any)
|
|
58
|
+
|
|
59
|
+
export interface FileRoutesByFullPath {
|
|
60
|
+
'/login': typeof guestLoginRoute
|
|
61
|
+
'/register': typeof guestRegisterRoute
|
|
62
|
+
'/profile': typeof privateProfileRoute
|
|
63
|
+
'/auth': typeof publicAuthRoute
|
|
64
|
+
'/': typeof privateIndexRoute
|
|
65
|
+
}
|
|
66
|
+
export interface FileRoutesByTo {
|
|
67
|
+
'/login': typeof guestLoginRoute
|
|
68
|
+
'/register': typeof guestRegisterRoute
|
|
69
|
+
'/profile': typeof privateProfileRoute
|
|
70
|
+
'/auth': typeof publicAuthRoute
|
|
71
|
+
'/': typeof privateIndexRoute
|
|
72
|
+
}
|
|
73
|
+
export interface FileRoutesById {
|
|
74
|
+
__root__: typeof rootRouteImport
|
|
75
|
+
'/(guest)': typeof guestRouteRouteWithChildren
|
|
76
|
+
'/(private)': typeof privateRouteRouteWithChildren
|
|
77
|
+
'/(public)': typeof publicRouteRouteWithChildren
|
|
78
|
+
'/(guest)/login': typeof guestLoginRoute
|
|
79
|
+
'/(guest)/register': typeof guestRegisterRoute
|
|
80
|
+
'/(private)/profile': typeof privateProfileRoute
|
|
81
|
+
'/(public)/auth': typeof publicAuthRoute
|
|
82
|
+
'/(private)/': typeof privateIndexRoute
|
|
83
|
+
}
|
|
84
|
+
export interface FileRouteTypes {
|
|
85
|
+
fileRoutesByFullPath: FileRoutesByFullPath
|
|
86
|
+
fullPaths:
|
|
87
|
+
| '/login'
|
|
88
|
+
| '/register'
|
|
89
|
+
| '/profile'
|
|
90
|
+
| '/auth'
|
|
91
|
+
| '/'
|
|
92
|
+
fileRoutesByTo: FileRoutesByTo
|
|
93
|
+
to:
|
|
94
|
+
| '/login'
|
|
95
|
+
| '/register'
|
|
96
|
+
| '/profile'
|
|
97
|
+
| '/auth'
|
|
98
|
+
| '/'
|
|
99
|
+
id:
|
|
100
|
+
| '__root__'
|
|
101
|
+
| '/(guest)'
|
|
102
|
+
| '/(private)'
|
|
103
|
+
| '/(public)'
|
|
104
|
+
| '/(guest)/login'
|
|
105
|
+
| '/(guest)/register'
|
|
106
|
+
| '/(private)/profile'
|
|
107
|
+
| '/(public)/auth'
|
|
108
|
+
| '/(private)/'
|
|
109
|
+
fileRoutesById: FileRoutesById
|
|
110
|
+
}
|
|
111
|
+
export interface RootRouteChildren {
|
|
112
|
+
guestRouteRoute: typeof guestRouteRouteWithChildren
|
|
113
|
+
privateRouteRoute: typeof privateRouteRouteWithChildren
|
|
114
|
+
publicRouteRoute: typeof publicRouteRouteWithChildren
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare module '@tanstack/react-router' {
|
|
118
|
+
interface FileRoutesByPath {
|
|
119
|
+
'/(public)': {
|
|
120
|
+
id: '/(public)'
|
|
121
|
+
path: ''
|
|
122
|
+
fullPath: ''
|
|
123
|
+
preLoaderRoute: typeof publicRouteRouteImport
|
|
124
|
+
parentRoute: typeof rootRouteImport
|
|
125
|
+
}
|
|
126
|
+
'/(private)': {
|
|
127
|
+
id: '/(private)'
|
|
128
|
+
path: ''
|
|
129
|
+
fullPath: ''
|
|
130
|
+
preLoaderRoute: typeof privateRouteRouteImport
|
|
131
|
+
parentRoute: typeof rootRouteImport
|
|
132
|
+
}
|
|
133
|
+
'/(guest)': {
|
|
134
|
+
id: '/(guest)'
|
|
135
|
+
path: ''
|
|
136
|
+
fullPath: ''
|
|
137
|
+
preLoaderRoute: typeof guestRouteRouteImport
|
|
138
|
+
parentRoute: typeof rootRouteImport
|
|
139
|
+
}
|
|
140
|
+
'/(private)/': {
|
|
141
|
+
id: '/(private)/'
|
|
142
|
+
path: '/'
|
|
143
|
+
fullPath: '/'
|
|
144
|
+
preLoaderRoute: typeof privateIndexRouteImport
|
|
145
|
+
parentRoute: typeof privateRouteRoute
|
|
146
|
+
}
|
|
147
|
+
'/(public)/auth': {
|
|
148
|
+
id: '/(public)/auth'
|
|
149
|
+
path: '/auth'
|
|
150
|
+
fullPath: '/auth'
|
|
151
|
+
preLoaderRoute: typeof publicAuthRouteImport
|
|
152
|
+
parentRoute: typeof publicRouteRoute
|
|
153
|
+
}
|
|
154
|
+
'/(private)/profile': {
|
|
155
|
+
id: '/(private)/profile'
|
|
156
|
+
path: '/profile'
|
|
157
|
+
fullPath: '/profile'
|
|
158
|
+
preLoaderRoute: typeof privateProfileRouteImport
|
|
159
|
+
parentRoute: typeof privateRouteRoute
|
|
160
|
+
}
|
|
161
|
+
'/(guest)/register': {
|
|
162
|
+
id: '/(guest)/register'
|
|
163
|
+
path: '/register'
|
|
164
|
+
fullPath: '/register'
|
|
165
|
+
preLoaderRoute: typeof guestRegisterRouteImport
|
|
166
|
+
parentRoute: typeof guestRouteRoute
|
|
167
|
+
}
|
|
168
|
+
'/(guest)/login': {
|
|
169
|
+
id: '/(guest)/login'
|
|
170
|
+
path: '/login'
|
|
171
|
+
fullPath: '/login'
|
|
172
|
+
preLoaderRoute: typeof guestLoginRouteImport
|
|
173
|
+
parentRoute: typeof guestRouteRoute
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
interface guestRouteRouteChildren {
|
|
179
|
+
guestLoginRoute: typeof guestLoginRoute
|
|
180
|
+
guestRegisterRoute: typeof guestRegisterRoute
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const guestRouteRouteChildren: guestRouteRouteChildren = {
|
|
184
|
+
guestLoginRoute: guestLoginRoute,
|
|
185
|
+
guestRegisterRoute: guestRegisterRoute,
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const guestRouteRouteWithChildren = guestRouteRoute._addFileChildren(
|
|
189
|
+
guestRouteRouteChildren,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
interface privateRouteRouteChildren {
|
|
193
|
+
privateProfileRoute: typeof privateProfileRoute
|
|
194
|
+
privateIndexRoute: typeof privateIndexRoute
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const privateRouteRouteChildren: privateRouteRouteChildren = {
|
|
198
|
+
privateProfileRoute: privateProfileRoute,
|
|
199
|
+
privateIndexRoute: privateIndexRoute,
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const privateRouteRouteWithChildren = privateRouteRoute._addFileChildren(
|
|
203
|
+
privateRouteRouteChildren,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
interface publicRouteRouteChildren {
|
|
207
|
+
publicAuthRoute: typeof publicAuthRoute
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const publicRouteRouteChildren: publicRouteRouteChildren = {
|
|
211
|
+
publicAuthRoute: publicAuthRoute,
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const publicRouteRouteWithChildren = publicRouteRoute._addFileChildren(
|
|
215
|
+
publicRouteRouteChildren,
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
const rootRouteChildren: RootRouteChildren = {
|
|
219
|
+
guestRouteRoute: guestRouteRouteWithChildren,
|
|
220
|
+
privateRouteRoute: privateRouteRouteWithChildren,
|
|
221
|
+
publicRouteRoute: publicRouteRouteWithChildren,
|
|
222
|
+
}
|
|
223
|
+
export const routeTree = rootRouteImport
|
|
224
|
+
._addFileChildren(rootRouteChildren)
|
|
225
|
+
._addFileTypes<FileRouteTypes>()
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
@plugin "tailwindcss-react-aria-components";
|
|
2
|
+
|
|
3
|
+
@layer base {
|
|
4
|
+
button:not(:disabled),
|
|
5
|
+
[role="button"]:not(:disabled) {
|
|
6
|
+
cursor: pointer;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@theme static {
|
|
11
|
+
--color-*: initial;
|
|
12
|
+
--color-inherit: inherit;
|
|
13
|
+
--color-transparent: transparent;
|
|
14
|
+
--color-current: currentColor;
|
|
15
|
+
--radius-*: initial;
|
|
16
|
+
--radius-none: 0rem;
|
|
17
|
+
--container-*: initial;
|
|
18
|
+
--container-none: none;
|
|
19
|
+
--container-modal: 32.5rem;
|
|
20
|
+
--container-toast: 45rem;
|
|
21
|
+
--spacing-*: initial;
|
|
22
|
+
--spacing-0: 0rem;
|
|
23
|
+
--shadow-*: initial;
|
|
24
|
+
--shadow-none: none;
|
|
25
|
+
--text-*: initial;
|
|
26
|
+
--text-inherit: inherit;
|
|
27
|
+
--text-inherit--line-height: inherit;
|
|
28
|
+
--text-inherit--letter-spacing: inherit;
|
|
29
|
+
--breakpoint-*: initial;
|
|
30
|
+
--breakpoint-sm: 23.75rem;
|
|
31
|
+
--breakpoint-md: 37.5rem;
|
|
32
|
+
--breakpoint-lg: 80rem;
|
|
33
|
+
--breakpoint-xl: 105rem;
|
|
34
|
+
--rotate-*: initial;
|
|
35
|
+
--rotate-0: 0deg;
|
|
36
|
+
--rotate-45: 45deg;
|
|
37
|
+
--rotate-90: 90deg;
|
|
38
|
+
--rotate-180: 180deg;
|
|
39
|
+
--rotate-270: 270deg;
|
|
40
|
+
--rotate-360: 360deg;
|
|
41
|
+
--animate-drawer-enter-right: drawer-slide-right 0.3s;
|
|
42
|
+
--animate-drawer-exit-right: drawer-slide-right 0.3s reverse;
|
|
43
|
+
--animate-drawer-enter-left: drawer-slide-left 0.3s;
|
|
44
|
+
--animate-drawer-exit-left: drawer-slide-left 0.3s reverse;
|
|
45
|
+
--animate-loader-spin: loader-spin 1s linear infinite;
|
|
46
|
+
--z-index-base: 0;
|
|
47
|
+
--z-index-raised: 1;
|
|
48
|
+
--z-index-sticky: 10;
|
|
49
|
+
--z-index-drawer: 20;
|
|
50
|
+
--z-index-modal: 30;
|
|
51
|
+
--z-index-bottom-sheet: 40;
|
|
52
|
+
--z-index-drop-target: 50;
|
|
53
|
+
--z-index-overlay-above: 100;
|
|
54
|
+
|
|
55
|
+
@keyframes drawer-slide-right {
|
|
56
|
+
from {
|
|
57
|
+
transform: translateX(100%);
|
|
58
|
+
}
|
|
59
|
+
to {
|
|
60
|
+
transform: translateX(0);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
@keyframes drawer-slide-left {
|
|
64
|
+
from {
|
|
65
|
+
transform: translateX(-100%);
|
|
66
|
+
}
|
|
67
|
+
to {
|
|
68
|
+
transform: translateX(0);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
@keyframes loader-spin {
|
|
72
|
+
to {
|
|
73
|
+
transform: rotate(360deg);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
html {
|
|
79
|
+
-webkit-font-smoothing: antialiased;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.flex-fill {
|
|
83
|
+
flex: 1 0 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:root {
|
|
87
|
+
--elevation-fill-default-2-base: 248 249 249;
|
|
88
|
+
--elevation-outline-default-1-base: 218 220 221;
|
|
89
|
+
--elevation-outline-default-2-base: 198 200 201;
|
|
90
|
+
--interactive-contained-primary-idle-base: 0 90 154;
|
|
91
|
+
--interactive-contained-primary-hover-base: 46 142 210;
|
|
92
|
+
--interactive-contained-primary-pressed-base: 95 170 224;
|
|
93
|
+
--interactive-contained-primary-disabled-base: 155 194 221;
|
|
94
|
+
--interactive-contained-primary-focus-base: 95 170 224;
|
|
95
|
+
--interactive-outlined-primary-on-idle-base: 0 90 154;
|
|
96
|
+
--interactive-outlined-primary-outline-idle-base: 0 90 154;
|
|
97
|
+
--interactive-outlined-primary-outline-hover-base: 46 142 210;
|
|
98
|
+
--interactive-text-primary-idle-base: 0 90 154;
|
|
99
|
+
--interactive-text-primary-hover-base: 46 142 210;
|
|
100
|
+
--text-default-1-base: 25 26 27;
|
|
101
|
+
--text-default-2-base: 79 85 88;
|
|
102
|
+
--text-default-3-base: 111 114 116;
|
|
103
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: "General Sans";
|
|
3
|
+
src: url("../../assets/fonts/GeneralSans-Regular.otf") format("opentype");
|
|
4
|
+
font-weight: 400;
|
|
5
|
+
font-style: normal;
|
|
6
|
+
font-display: swap;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@font-face {
|
|
10
|
+
font-family: "General Sans";
|
|
11
|
+
src: url("../../assets/fonts/GeneralSans-Medium.otf") format("opentype");
|
|
12
|
+
font-weight: 500;
|
|
13
|
+
font-style: normal;
|
|
14
|
+
font-display: swap;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@font-face {
|
|
18
|
+
font-family: "General Sans";
|
|
19
|
+
src: url("../../assets/fonts/GeneralSans-Semibold.otf") format("opentype");
|
|
20
|
+
font-weight: 600;
|
|
21
|
+
font-style: normal;
|
|
22
|
+
font-display: swap;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@font-face {
|
|
26
|
+
font-family: "General Sans";
|
|
27
|
+
src: url("../../assets/fonts/GeneralSans-Bold.otf") format("opentype");
|
|
28
|
+
font-weight: 700;
|
|
29
|
+
font-style: normal;
|
|
30
|
+
font-display: swap;
|
|
31
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
@import "@fontsource-variable/inter";
|
|
2
|
+
@import "@fontsource-variable/geist";
|
|
3
|
+
@import "./fonts/general-sans.css";
|
|
4
|
+
|
|
5
|
+
@import "tailwindcss";
|
|
6
|
+
@source "../../node_modules/@povio/ui/dist";
|
|
7
|
+
@import "./base.css";
|
|
8
|
+
@import "./theme.css";
|
|
9
|
+
|
|
10
|
+
/* width */
|
|
11
|
+
::-webkit-scrollbar {
|
|
12
|
+
@apply w-1-5;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Track */
|
|
16
|
+
::-webkit-scrollbar-track {
|
|
17
|
+
@apply bg-transparent;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Handle */
|
|
21
|
+
::-webkit-scrollbar-thumb {
|
|
22
|
+
@apply bg-elevation-outline-default-2 rounded-full;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Handle on hover */
|
|
26
|
+
::-webkit-scrollbar-thumb:hover {
|
|
27
|
+
@apply bg-elevation-outline-default-2;
|
|
28
|
+
}
|