robodev 0.10.0 → 0.12.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.
Files changed (197) hide show
  1. package/package.json +1 -1
  2. package/src/collect-files.test.ts +19 -0
  3. package/src/collect-files.ts +1 -0
  4. package/src/config.test.ts +26 -0
  5. package/src/config.ts +34 -5
  6. package/src/emit-starter.test.ts +54 -0
  7. package/src/emit-starter.ts +47 -13
  8. package/src/index.ts +37 -4
  9. package/templates/auth-chat/README.md +1 -1
  10. package/templates/auth-chat/api/health.ts +1 -1
  11. package/templates/auth-chat/api/me.ts +1 -1
  12. package/templates/auth-chat/api/messages.ts +1 -1
  13. package/templates/auth-chat/package.json +1 -1
  14. package/templates/auth-chat/src/main.tsx +5 -5
  15. package/templates/backend/README.md +1 -1
  16. package/templates/backend/api/health.ts +1 -1
  17. package/templates/backend/api/launch.ts +1 -1
  18. package/templates/backend/api/me.ts +1 -1
  19. package/templates/backend/api/motto.ts +1 -1
  20. package/templates/backend/api/planets/[id].ts +1 -1
  21. package/templates/backend/api/planets.ts +1 -1
  22. package/templates/backend/api/rockets.ts +1 -1
  23. package/templates/backend/package.json +1 -1
  24. package/templates/catalog.json +2 -2
  25. package/templates/empty/README.md +1 -1
  26. package/templates/empty/api/health.ts +1 -1
  27. package/templates/empty/package.json +1 -1
  28. package/templates/space/.config/local.spa.template.yml +27 -0
  29. package/templates/space/.oxlint-base.json +29 -0
  30. package/templates/space/.oxlintrc.json +78 -0
  31. package/templates/space/.rulesync/rules/frontend-api-boundary.md +36 -0
  32. package/templates/space/.rulesync/rules/frontend-component-structure.md +38 -0
  33. package/templates/space/.rulesync/rules/frontend-forms.md +32 -0
  34. package/templates/space/.rulesync/rules/frontend-notifications.md +24 -0
  35. package/templates/space/.rulesync/rules/frontend-povio-components.md +42 -0
  36. package/templates/space/.rulesync/rules/frontend-povio-ui.md +45 -0
  37. package/templates/space/.rulesync/rules/frontend-query-autocomplete.md +29 -0
  38. package/templates/space/.rulesync/rules/frontend-tables-and-lists.md +34 -0
  39. package/templates/space/.rulesync/rules/frontend-translations.md +26 -0
  40. package/templates/space/.rulesync/rules/project-overview.md +32 -0
  41. package/templates/space/.rulesync/rules/robodev-api.md +30 -0
  42. package/templates/space/.rulesync/rules/robodev-auth.md +40 -0
  43. package/templates/space/.rulesync/rules/robodev-database.md +22 -0
  44. package/templates/space/.rulesync/rules/role-based-app-structure.md +36 -0
  45. package/templates/space/.rulesync/skills/media-feature/SKILL.md +21 -0
  46. package/templates/space/.rulesync/skills/povio-ui-styling/SKILL.md +208 -0
  47. package/templates/space/.rulesync/skills/povio-ui-styling/agents/openai.yaml +4 -0
  48. package/templates/space/.rulesync/skills/robodev-api-route/SKILL.md +13 -0
  49. package/templates/space/.rulesync/skills/robodev-table/SKILL.md +12 -0
  50. package/templates/space/README.md +26 -7
  51. package/templates/space/api/_lib.ts +359 -0
  52. package/templates/space/api/aliens/labels.ts +19 -0
  53. package/templates/space/api/files/presigned-url.ts +48 -0
  54. package/templates/space/api/files/upload.ts +29 -0
  55. package/templates/space/api/planets/[id]/like.ts +36 -0
  56. package/templates/space/api/planets/[id].ts +56 -13
  57. package/templates/space/api/planets/paginate.ts +36 -0
  58. package/templates/space/api/planets.ts +52 -44
  59. package/templates/space/apps/fe/index.html +24 -0
  60. package/templates/space/apps/fe/openapi-codegen.config.ts +37 -0
  61. package/templates/space/apps/fe/package.json +82 -0
  62. package/templates/space/apps/fe/public/apple-touch-icon.png +0 -0
  63. package/templates/space/apps/fe/public/favicon-96x96.png +0 -0
  64. package/templates/space/apps/fe/public/favicon.ico +0 -0
  65. package/templates/space/apps/fe/public/favicon.svg +3 -0
  66. package/templates/space/apps/fe/public/site.webmanifest +21 -0
  67. package/templates/space/apps/fe/public/web-app-manifest-192x192.png +0 -0
  68. package/templates/space/apps/fe/public/web-app-manifest-512x512.png +0 -0
  69. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Bold.otf +0 -0
  70. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Medium.otf +0 -0
  71. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Regular.otf +0 -0
  72. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Semibold.otf +0 -0
  73. package/templates/space/apps/fe/src/assets/locales/en/translation.json +301 -0
  74. package/templates/space/apps/fe/src/assets/locales/sl/translation.json +301 -0
  75. package/templates/space/apps/fe/src/clients/app-rest-client.ts +15 -0
  76. package/templates/space/apps/fe/src/clients/auth-token-store.ts +101 -0
  77. package/templates/space/apps/fe/src/clients/rest/app-error-handler.ts +31 -0
  78. package/templates/space/apps/fe/src/clients/rest/interceptors/authorization-header.interceptor.ts +15 -0
  79. package/templates/space/apps/fe/src/clients/rest/interceptors/refresh-token.interceptor.ts +37 -0
  80. package/templates/space/apps/fe/src/clients/rest/interceptors/response.interceptor.ts +17 -0
  81. package/templates/space/apps/fe/src/components/404.tsx +18 -0
  82. package/templates/space/apps/fe/src/components/features/auth/AuthBrandPanel.tsx +60 -0
  83. package/templates/space/apps/fe/src/components/features/auth/AuthLayout.tsx +23 -0
  84. package/templates/space/apps/fe/src/components/features/auth/LoginPage.tsx +111 -0
  85. package/templates/space/apps/fe/src/components/features/auth/RegisterPage.tsx +143 -0
  86. package/templates/space/apps/fe/src/components/features/home/HomePage.tsx +21 -0
  87. package/templates/space/apps/fe/src/components/features/planets/details/PlanetDetailsPage.tsx +139 -0
  88. package/templates/space/apps/fe/src/components/features/planets/details/PlanetEditPage.tsx +266 -0
  89. package/templates/space/apps/fe/src/components/features/planets/feed/PlanetFeedCard.tsx +131 -0
  90. package/templates/space/apps/fe/src/components/features/planets/feed/PlanetsFeedPage.tsx +119 -0
  91. package/templates/space/apps/fe/src/components/features/planets/list/PlanetCard.tsx +89 -0
  92. package/templates/space/apps/fe/src/components/features/planets/list/PlanetCreateModal.tsx +179 -0
  93. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsFilters.css +3 -0
  94. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsFilters.tsx +73 -0
  95. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsGridPage.tsx +51 -0
  96. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsInfiniteTablePage.tsx +79 -0
  97. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsPage.tsx +65 -0
  98. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsTablePage.tsx +72 -0
  99. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsTableSummary.tsx +29 -0
  100. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsViewTabs.tsx +79 -0
  101. package/templates/space/apps/fe/src/components/features/planets/list/table/PlanetsTable.tsx +30 -0
  102. package/templates/space/apps/fe/src/components/features/planets/list/table/PlanetsTableActions.tsx +64 -0
  103. package/templates/space/apps/fe/src/components/features/planets/list/table/PlanetsTableInfinite.tsx +36 -0
  104. package/templates/space/apps/fe/src/components/features/planets/list/table/planetsTableColumns.tsx +72 -0
  105. package/templates/space/apps/fe/src/components/features/planets/list/table/usePlanetTableFilters.tsx +102 -0
  106. package/templates/space/apps/fe/src/components/features/profile/ProfilePage.tsx +96 -0
  107. package/templates/space/apps/fe/src/components/googleAnalytics/GoogleAnalytics.tsx +35 -0
  108. package/templates/space/apps/fe/src/components/layout/AppLayout.tsx +19 -0
  109. package/templates/space/apps/fe/src/components/layout/app-header/AppHeader.tsx +93 -0
  110. package/templates/space/apps/fe/src/components/layout/app-header/MobileNavigation.tsx +53 -0
  111. package/templates/space/apps/fe/src/components/layout/app-header/NavLink.tsx +29 -0
  112. package/templates/space/apps/fe/src/components/shared/branding/BrandLogo.tsx +13 -0
  113. package/templates/space/apps/fe/src/components/shared/error/ErrorFallback.tsx +43 -0
  114. package/templates/space/apps/fe/src/components/shared/error/ErrorText.tsx +20 -0
  115. package/templates/space/apps/fe/src/components/shared/error/NotFound.tsx +36 -0
  116. package/templates/space/apps/fe/src/components/shared/forms/RequiredLabel.tsx +21 -0
  117. package/templates/space/apps/fe/src/components/shared/forms/RowInputWrapper.tsx +50 -0
  118. package/templates/space/apps/fe/src/components/shared/head/AppHead.tsx +32 -0
  119. package/templates/space/apps/fe/src/components/shared/head/DefaultAppHead.tsx +34 -0
  120. package/templates/space/apps/fe/src/components/shared/layout/LoadingState.tsx +9 -0
  121. package/templates/space/apps/fe/src/components/shared/layout/ThinPageWrapper.tsx +5 -0
  122. package/templates/space/apps/fe/src/components/shared/page/PageHeader.tsx +69 -0
  123. package/templates/space/apps/fe/src/components/shared/ui/Card.tsx +60 -0
  124. package/templates/space/apps/fe/src/components/shared/ui/GoogleLoginButton.tsx +19 -0
  125. package/templates/space/apps/fe/src/components/shared/ui/RequiredLabel.tsx +22 -0
  126. package/templates/space/apps/fe/src/components/shared/ui/TableActions.tsx +22 -0
  127. package/templates/space/apps/fe/src/config/app.config.ts +35 -0
  128. package/templates/space/apps/fe/src/config/i18n.ts +43 -0
  129. package/templates/space/apps/fe/src/config/inits/a11y.ts +14 -0
  130. package/templates/space/apps/fe/src/config/inits/logger.ts +7 -0
  131. package/templates/space/apps/fe/src/config/inits/sentry.ts +21 -0
  132. package/templates/space/apps/fe/src/config/jwt.config.ts +2 -0
  133. package/templates/space/apps/fe/src/config/query.config.ts +20 -0
  134. package/templates/space/apps/fe/src/hooks/useAuth.ts +5 -0
  135. package/templates/space/apps/fe/src/main.tsx +52 -0
  136. package/templates/space/apps/fe/src/pages/(guest)/login.tsx +23 -0
  137. package/templates/space/apps/fe/src/pages/(guest)/register.tsx +23 -0
  138. package/templates/space/apps/fe/src/pages/(guest)/route.tsx +18 -0
  139. package/templates/space/apps/fe/src/pages/(private)/index.tsx +23 -0
  140. package/templates/space/apps/fe/src/pages/(private)/planets/$id/edit.tsx +53 -0
  141. package/templates/space/apps/fe/src/pages/(private)/planets/$id/index.tsx +41 -0
  142. package/templates/space/apps/fe/src/pages/(private)/planets/index.tsx +24 -0
  143. package/templates/space/apps/fe/src/pages/(private)/planets-feed.tsx +23 -0
  144. package/templates/space/apps/fe/src/pages/(private)/profile.tsx +23 -0
  145. package/templates/space/apps/fe/src/pages/(private)/route.tsx +18 -0
  146. package/templates/space/apps/fe/src/pages/(public)/auth.tsx +37 -0
  147. package/templates/space/apps/fe/src/pages/(public)/route.tsx +9 -0
  148. package/templates/space/apps/fe/src/pages/__root.tsx +164 -0
  149. package/templates/space/apps/fe/src/providers/AppErrorBoundary.tsx +10 -0
  150. package/templates/space/apps/fe/src/providers/OpenApiRuntimeProvider.tsx +31 -0
  151. package/templates/space/apps/fe/src/providers/index.tsx +44 -0
  152. package/templates/space/apps/fe/src/providers/jwt.provider.tsx +95 -0
  153. package/templates/space/apps/fe/src/routeTree.gen.ts +309 -0
  154. package/templates/space/apps/fe/src/styles/base.css +103 -0
  155. package/templates/space/apps/fe/src/styles/fonts/fonts.tsx +10 -0
  156. package/templates/space/apps/fe/src/styles/fonts/general-sans.css +31 -0
  157. package/templates/space/apps/fe/src/styles/globals.css +28 -0
  158. package/templates/space/apps/fe/src/styles/overrides/defaults/button.override.ts +536 -0
  159. package/templates/space/apps/fe/src/styles/overrides/defaults/checkbox.override.ts +71 -0
  160. package/templates/space/apps/fe/src/styles/overrides/defaults/input.override.ts +252 -0
  161. package/templates/space/apps/fe/src/styles/overrides/defaults/label.override.ts +91 -0
  162. package/templates/space/apps/fe/src/styles/overrides/defaults/modal.override.ts +57 -0
  163. package/templates/space/apps/fe/src/styles/overrides/defaults/radio.override.ts +46 -0
  164. package/templates/space/apps/fe/src/styles/overrides/defaults/table.override.ts +104 -0
  165. package/templates/space/apps/fe/src/styles/overrides/defaults/tag.override.ts +66 -0
  166. package/templates/space/apps/fe/src/styles/overrides/defaults/typography.override.ts +115 -0
  167. package/templates/space/apps/fe/src/styles/overrides/outline.clsx.ts +10 -0
  168. package/templates/space/apps/fe/src/styles/overrides/uiOverrides.override.ts +60 -0
  169. package/templates/space/apps/fe/src/styles/theme.css +2177 -0
  170. package/templates/space/apps/fe/src/types/i18next.d.ts +12 -0
  171. package/templates/space/apps/fe/src/types/table.d.ts +17 -0
  172. package/templates/space/apps/fe/src/types/ui.d.ts +26 -0
  173. package/templates/space/apps/fe/src/types/vite-env.d.ts +20 -0
  174. package/templates/space/apps/fe/src/utils/date.utils.ts +17 -0
  175. package/templates/space/apps/fe/src/utils/image-fallback.ts +9 -0
  176. package/templates/space/apps/fe/src/utils/media-upload.ts +63 -0
  177. package/templates/space/apps/fe/src/utils/number.utils.ts +12 -0
  178. package/templates/space/apps/fe/src/utils/string.utils.ts +5 -0
  179. package/templates/space/apps/fe/src/vite-env.d.ts +1 -0
  180. package/templates/space/apps/fe/tsconfig.app.json +32 -0
  181. package/templates/space/apps/fe/tsconfig.json +9 -0
  182. package/templates/space/apps/fe/tsconfig.node.json +31 -0
  183. package/templates/space/apps/fe/vite.config.ts +94 -0
  184. package/templates/space/database.ts +33 -13
  185. package/templates/space/openapi.json +1819 -0
  186. package/templates/space/oxfmt.config.js +23 -0
  187. package/templates/space/package.json +6 -13
  188. package/templates/space/rulesync.jsonc +18 -0
  189. package/templates/space/tsconfig.json +2 -4
  190. package/templates/space/api/health.ts +0 -7
  191. package/templates/space/api/launch.ts +0 -29
  192. package/templates/space/api/me.ts +0 -14
  193. package/templates/space/api/motto.ts +0 -9
  194. package/templates/space/api/rockets.ts +0 -43
  195. package/templates/space/index.html +0 -138
  196. package/templates/space/src/main.tsx +0 -229
  197. package/templates/space/vite.config.ts +0 -7
@@ -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,309 @@
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 privatePlanetsFeedRouteImport } from './pages/(private)/planets-feed'
19
+ import { Route as guestRegisterRouteImport } from './pages/(guest)/register'
20
+ import { Route as guestLoginRouteImport } from './pages/(guest)/login'
21
+ import { Route as privatePlanetsIndexRouteImport } from './pages/(private)/planets/index'
22
+ import { Route as privatePlanetsIdIndexRouteImport } from './pages/(private)/planets/$id/index'
23
+ import { Route as privatePlanetsIdEditRouteImport } from './pages/(private)/planets/$id/edit'
24
+
25
+ const publicRouteRoute = publicRouteRouteImport.update({
26
+ id: '/(public)',
27
+ getParentRoute: () => rootRouteImport,
28
+ } as any)
29
+ const privateRouteRoute = privateRouteRouteImport.update({
30
+ id: '/(private)',
31
+ getParentRoute: () => rootRouteImport,
32
+ } as any)
33
+ const guestRouteRoute = guestRouteRouteImport.update({
34
+ id: '/(guest)',
35
+ getParentRoute: () => rootRouteImport,
36
+ } as any)
37
+ const privateIndexRoute = privateIndexRouteImport.update({
38
+ id: '/',
39
+ path: '/',
40
+ getParentRoute: () => privateRouteRoute,
41
+ } as any)
42
+ const publicAuthRoute = publicAuthRouteImport.update({
43
+ id: '/auth',
44
+ path: '/auth',
45
+ getParentRoute: () => publicRouteRoute,
46
+ } as any)
47
+ const privateProfileRoute = privateProfileRouteImport.update({
48
+ id: '/profile',
49
+ path: '/profile',
50
+ getParentRoute: () => privateRouteRoute,
51
+ } as any)
52
+ const privatePlanetsFeedRoute = privatePlanetsFeedRouteImport.update({
53
+ id: '/planets-feed',
54
+ path: '/planets-feed',
55
+ getParentRoute: () => privateRouteRoute,
56
+ } as any)
57
+ const guestRegisterRoute = guestRegisterRouteImport.update({
58
+ id: '/register',
59
+ path: '/register',
60
+ getParentRoute: () => guestRouteRoute,
61
+ } as any)
62
+ const guestLoginRoute = guestLoginRouteImport.update({
63
+ id: '/login',
64
+ path: '/login',
65
+ getParentRoute: () => guestRouteRoute,
66
+ } as any)
67
+ const privatePlanetsIndexRoute = privatePlanetsIndexRouteImport.update({
68
+ id: '/planets/',
69
+ path: '/planets/',
70
+ getParentRoute: () => privateRouteRoute,
71
+ } as any)
72
+ const privatePlanetsIdIndexRoute = privatePlanetsIdIndexRouteImport.update({
73
+ id: '/planets/$id/',
74
+ path: '/planets/$id/',
75
+ getParentRoute: () => privateRouteRoute,
76
+ } as any)
77
+ const privatePlanetsIdEditRoute = privatePlanetsIdEditRouteImport.update({
78
+ id: '/planets/$id/edit',
79
+ path: '/planets/$id/edit',
80
+ getParentRoute: () => privateRouteRoute,
81
+ } as any)
82
+
83
+ export interface FileRoutesByFullPath {
84
+ '/login': typeof guestLoginRoute
85
+ '/register': typeof guestRegisterRoute
86
+ '/planets-feed': typeof privatePlanetsFeedRoute
87
+ '/profile': typeof privateProfileRoute
88
+ '/auth': typeof publicAuthRoute
89
+ '/': typeof privateIndexRoute
90
+ '/planets/': typeof privatePlanetsIndexRoute
91
+ '/planets/$id/edit': typeof privatePlanetsIdEditRoute
92
+ '/planets/$id/': typeof privatePlanetsIdIndexRoute
93
+ }
94
+ export interface FileRoutesByTo {
95
+ '/login': typeof guestLoginRoute
96
+ '/register': typeof guestRegisterRoute
97
+ '/planets-feed': typeof privatePlanetsFeedRoute
98
+ '/profile': typeof privateProfileRoute
99
+ '/auth': typeof publicAuthRoute
100
+ '/': typeof privateIndexRoute
101
+ '/planets': typeof privatePlanetsIndexRoute
102
+ '/planets/$id/edit': typeof privatePlanetsIdEditRoute
103
+ '/planets/$id': typeof privatePlanetsIdIndexRoute
104
+ }
105
+ export interface FileRoutesById {
106
+ __root__: typeof rootRouteImport
107
+ '/(guest)': typeof guestRouteRouteWithChildren
108
+ '/(private)': typeof privateRouteRouteWithChildren
109
+ '/(public)': typeof publicRouteRouteWithChildren
110
+ '/(guest)/login': typeof guestLoginRoute
111
+ '/(guest)/register': typeof guestRegisterRoute
112
+ '/(private)/planets-feed': typeof privatePlanetsFeedRoute
113
+ '/(private)/profile': typeof privateProfileRoute
114
+ '/(public)/auth': typeof publicAuthRoute
115
+ '/(private)/': typeof privateIndexRoute
116
+ '/(private)/planets/': typeof privatePlanetsIndexRoute
117
+ '/(private)/planets/$id/edit': typeof privatePlanetsIdEditRoute
118
+ '/(private)/planets/$id/': typeof privatePlanetsIdIndexRoute
119
+ }
120
+ export interface FileRouteTypes {
121
+ fileRoutesByFullPath: FileRoutesByFullPath
122
+ fullPaths:
123
+ | '/login'
124
+ | '/register'
125
+ | '/planets-feed'
126
+ | '/profile'
127
+ | '/auth'
128
+ | '/'
129
+ | '/planets/'
130
+ | '/planets/$id/edit'
131
+ | '/planets/$id/'
132
+ fileRoutesByTo: FileRoutesByTo
133
+ to:
134
+ | '/login'
135
+ | '/register'
136
+ | '/planets-feed'
137
+ | '/profile'
138
+ | '/auth'
139
+ | '/'
140
+ | '/planets'
141
+ | '/planets/$id/edit'
142
+ | '/planets/$id'
143
+ id:
144
+ | '__root__'
145
+ | '/(guest)'
146
+ | '/(private)'
147
+ | '/(public)'
148
+ | '/(guest)/login'
149
+ | '/(guest)/register'
150
+ | '/(private)/planets-feed'
151
+ | '/(private)/profile'
152
+ | '/(public)/auth'
153
+ | '/(private)/'
154
+ | '/(private)/planets/'
155
+ | '/(private)/planets/$id/edit'
156
+ | '/(private)/planets/$id/'
157
+ fileRoutesById: FileRoutesById
158
+ }
159
+ export interface RootRouteChildren {
160
+ guestRouteRoute: typeof guestRouteRouteWithChildren
161
+ privateRouteRoute: typeof privateRouteRouteWithChildren
162
+ publicRouteRoute: typeof publicRouteRouteWithChildren
163
+ }
164
+
165
+ declare module '@tanstack/react-router' {
166
+ interface FileRoutesByPath {
167
+ '/(public)': {
168
+ id: '/(public)'
169
+ path: ''
170
+ fullPath: ''
171
+ preLoaderRoute: typeof publicRouteRouteImport
172
+ parentRoute: typeof rootRouteImport
173
+ }
174
+ '/(private)': {
175
+ id: '/(private)'
176
+ path: ''
177
+ fullPath: ''
178
+ preLoaderRoute: typeof privateRouteRouteImport
179
+ parentRoute: typeof rootRouteImport
180
+ }
181
+ '/(guest)': {
182
+ id: '/(guest)'
183
+ path: ''
184
+ fullPath: ''
185
+ preLoaderRoute: typeof guestRouteRouteImport
186
+ parentRoute: typeof rootRouteImport
187
+ }
188
+ '/(private)/': {
189
+ id: '/(private)/'
190
+ path: '/'
191
+ fullPath: '/'
192
+ preLoaderRoute: typeof privateIndexRouteImport
193
+ parentRoute: typeof privateRouteRoute
194
+ }
195
+ '/(public)/auth': {
196
+ id: '/(public)/auth'
197
+ path: '/auth'
198
+ fullPath: '/auth'
199
+ preLoaderRoute: typeof publicAuthRouteImport
200
+ parentRoute: typeof publicRouteRoute
201
+ }
202
+ '/(private)/profile': {
203
+ id: '/(private)/profile'
204
+ path: '/profile'
205
+ fullPath: '/profile'
206
+ preLoaderRoute: typeof privateProfileRouteImport
207
+ parentRoute: typeof privateRouteRoute
208
+ }
209
+ '/(private)/planets-feed': {
210
+ id: '/(private)/planets-feed'
211
+ path: '/planets-feed'
212
+ fullPath: '/planets-feed'
213
+ preLoaderRoute: typeof privatePlanetsFeedRouteImport
214
+ parentRoute: typeof privateRouteRoute
215
+ }
216
+ '/(guest)/register': {
217
+ id: '/(guest)/register'
218
+ path: '/register'
219
+ fullPath: '/register'
220
+ preLoaderRoute: typeof guestRegisterRouteImport
221
+ parentRoute: typeof guestRouteRoute
222
+ }
223
+ '/(guest)/login': {
224
+ id: '/(guest)/login'
225
+ path: '/login'
226
+ fullPath: '/login'
227
+ preLoaderRoute: typeof guestLoginRouteImport
228
+ parentRoute: typeof guestRouteRoute
229
+ }
230
+ '/(private)/planets/': {
231
+ id: '/(private)/planets/'
232
+ path: '/planets'
233
+ fullPath: '/planets/'
234
+ preLoaderRoute: typeof privatePlanetsIndexRouteImport
235
+ parentRoute: typeof privateRouteRoute
236
+ }
237
+ '/(private)/planets/$id/': {
238
+ id: '/(private)/planets/$id/'
239
+ path: '/planets/$id'
240
+ fullPath: '/planets/$id/'
241
+ preLoaderRoute: typeof privatePlanetsIdIndexRouteImport
242
+ parentRoute: typeof privateRouteRoute
243
+ }
244
+ '/(private)/planets/$id/edit': {
245
+ id: '/(private)/planets/$id/edit'
246
+ path: '/planets/$id/edit'
247
+ fullPath: '/planets/$id/edit'
248
+ preLoaderRoute: typeof privatePlanetsIdEditRouteImport
249
+ parentRoute: typeof privateRouteRoute
250
+ }
251
+ }
252
+ }
253
+
254
+ interface guestRouteRouteChildren {
255
+ guestLoginRoute: typeof guestLoginRoute
256
+ guestRegisterRoute: typeof guestRegisterRoute
257
+ }
258
+
259
+ const guestRouteRouteChildren: guestRouteRouteChildren = {
260
+ guestLoginRoute: guestLoginRoute,
261
+ guestRegisterRoute: guestRegisterRoute,
262
+ }
263
+
264
+ const guestRouteRouteWithChildren = guestRouteRoute._addFileChildren(
265
+ guestRouteRouteChildren,
266
+ )
267
+
268
+ interface privateRouteRouteChildren {
269
+ privatePlanetsFeedRoute: typeof privatePlanetsFeedRoute
270
+ privateProfileRoute: typeof privateProfileRoute
271
+ privateIndexRoute: typeof privateIndexRoute
272
+ privatePlanetsIndexRoute: typeof privatePlanetsIndexRoute
273
+ privatePlanetsIdEditRoute: typeof privatePlanetsIdEditRoute
274
+ privatePlanetsIdIndexRoute: typeof privatePlanetsIdIndexRoute
275
+ }
276
+
277
+ const privateRouteRouteChildren: privateRouteRouteChildren = {
278
+ privatePlanetsFeedRoute: privatePlanetsFeedRoute,
279
+ privateProfileRoute: privateProfileRoute,
280
+ privateIndexRoute: privateIndexRoute,
281
+ privatePlanetsIndexRoute: privatePlanetsIndexRoute,
282
+ privatePlanetsIdEditRoute: privatePlanetsIdEditRoute,
283
+ privatePlanetsIdIndexRoute: privatePlanetsIdIndexRoute,
284
+ }
285
+
286
+ const privateRouteRouteWithChildren = privateRouteRoute._addFileChildren(
287
+ privateRouteRouteChildren,
288
+ )
289
+
290
+ interface publicRouteRouteChildren {
291
+ publicAuthRoute: typeof publicAuthRoute
292
+ }
293
+
294
+ const publicRouteRouteChildren: publicRouteRouteChildren = {
295
+ publicAuthRoute: publicAuthRoute,
296
+ }
297
+
298
+ const publicRouteRouteWithChildren = publicRouteRoute._addFileChildren(
299
+ publicRouteRouteChildren,
300
+ )
301
+
302
+ const rootRouteChildren: RootRouteChildren = {
303
+ guestRouteRoute: guestRouteRouteWithChildren,
304
+ privateRouteRoute: privateRouteRouteWithChildren,
305
+ publicRouteRoute: publicRouteRouteWithChildren,
306
+ }
307
+ export const routeTree = rootRouteImport
308
+ ._addFileChildren(rootRouteChildren)
309
+ ._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,10 @@
1
+ export const globalFontClass = "font-primary";
2
+
3
+ export const Fonts = () => (
4
+ <style>{`
5
+ :root {
6
+ --font-inter-base: "General Sans";
7
+ --font-geist-base: "Geist Variable";
8
+ }
9
+ `}</style>
10
+ );
@@ -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
+ }