robodev 0.22.0 → 0.24.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 +36 -0
- package/templates/auth-chat/package.json +1 -1
- package/templates/backend/api/_lib.ts +9 -2
- package/templates/backend/package.json +1 -1
- package/templates/catalog.json +5 -0
- package/templates/empty/package.json +1 -1
- package/templates/marketplace/.config/local.spa.template.yml +27 -0
- package/templates/marketplace/.oxlint-base.json +29 -0
- package/templates/marketplace/.oxlintrc.json +78 -0
- package/templates/marketplace/.rulesync/rules/frontend-api-boundary.md +36 -0
- package/templates/marketplace/.rulesync/rules/frontend-component-structure.md +38 -0
- package/templates/marketplace/.rulesync/rules/frontend-forms.md +32 -0
- package/templates/marketplace/.rulesync/rules/frontend-notifications.md +24 -0
- package/templates/marketplace/.rulesync/rules/frontend-povio-components.md +42 -0
- package/templates/marketplace/.rulesync/rules/frontend-povio-ui.md +45 -0
- package/templates/marketplace/.rulesync/rules/frontend-query-autocomplete.md +29 -0
- package/templates/marketplace/.rulesync/rules/frontend-tables-and-lists.md +34 -0
- package/templates/marketplace/.rulesync/rules/frontend-translations.md +26 -0
- package/templates/marketplace/.rulesync/rules/project-overview.md +32 -0
- package/templates/marketplace/.rulesync/rules/robodev-api.md +30 -0
- package/templates/marketplace/.rulesync/rules/robodev-auth.md +40 -0
- package/templates/marketplace/.rulesync/rules/robodev-database.md +22 -0
- package/templates/marketplace/.rulesync/rules/role-based-app-structure.md +36 -0
- package/templates/marketplace/.rulesync/skills/media-feature/SKILL.md +21 -0
- package/templates/marketplace/.rulesync/skills/povio-ui-styling/SKILL.md +208 -0
- package/templates/marketplace/.rulesync/skills/povio-ui-styling/agents/openai.yaml +4 -0
- package/templates/marketplace/.rulesync/skills/robodev-api-route/SKILL.md +13 -0
- package/templates/marketplace/.rulesync/skills/robodev-table/SKILL.md +12 -0
- package/templates/marketplace/README.md +40 -0
- package/templates/marketplace/api/_lib.ts +677 -0
- package/templates/marketplace/api/cart/[id].ts +51 -0
- package/templates/marketplace/api/cart.ts +70 -0
- package/templates/marketplace/api/categories.ts +11 -0
- package/templates/marketplace/api/checkout.ts +157 -0
- package/templates/marketplace/api/health.ts +7 -0
- package/templates/marketplace/api/listings/[id].ts +101 -0
- package/templates/marketplace/api/listings/paginate.ts +29 -0
- package/templates/marketplace/api/listings.ts +90 -0
- package/templates/marketplace/api/me.ts +14 -0
- package/templates/marketplace/api/orders/[id]/complete.ts +27 -0
- package/templates/marketplace/api/orders/[id]/ship.ts +24 -0
- package/templates/marketplace/api/orders/[id].ts +15 -0
- package/templates/marketplace/api/purchases.ts +19 -0
- package/templates/marketplace/api/reviews.ts +58 -0
- package/templates/marketplace/api/sales.ts +19 -0
- package/templates/marketplace/api/watches/[listingId].ts +18 -0
- package/templates/marketplace/api/watches.ts +51 -0
- package/templates/marketplace/apps/fe/index.html +24 -0
- package/templates/marketplace/apps/fe/openapi-codegen.config.ts +72 -0
- package/templates/marketplace/apps/fe/package.json +84 -0
- package/templates/marketplace/apps/fe/public/apple-touch-icon.png +0 -0
- package/templates/marketplace/apps/fe/public/favicon-96x96.png +0 -0
- package/templates/marketplace/apps/fe/public/favicon.ico +0 -0
- package/templates/marketplace/apps/fe/public/favicon.svg +3 -0
- package/templates/marketplace/apps/fe/public/site.webmanifest +21 -0
- package/templates/marketplace/apps/fe/public/web-app-manifest-192x192.png +0 -0
- package/templates/marketplace/apps/fe/public/web-app-manifest-512x512.png +0 -0
- package/templates/marketplace/apps/fe/src/assets/fonts/GeneralSans-Bold.otf +0 -0
- package/templates/marketplace/apps/fe/src/assets/fonts/GeneralSans-Medium.otf +0 -0
- package/templates/marketplace/apps/fe/src/assets/fonts/GeneralSans-Regular.otf +0 -0
- package/templates/marketplace/apps/fe/src/assets/fonts/GeneralSans-Semibold.otf +0 -0
- package/templates/marketplace/apps/fe/src/assets/locales/en/translation.json +335 -0
- package/templates/marketplace/apps/fe/src/assets/locales/sl/translation.json +335 -0
- package/templates/marketplace/apps/fe/src/clients/app-rest-client.ts +15 -0
- package/templates/marketplace/apps/fe/src/clients/auth-token-store.ts +101 -0
- package/templates/marketplace/apps/fe/src/clients/rest/app-error-handler.ts +31 -0
- package/templates/marketplace/apps/fe/src/clients/rest/interceptors/authorization-header.interceptor.ts +15 -0
- package/templates/marketplace/apps/fe/src/clients/rest/interceptors/refresh-token.interceptor.ts +37 -0
- package/templates/marketplace/apps/fe/src/clients/rest/interceptors/response.interceptor.ts +17 -0
- package/templates/marketplace/apps/fe/src/components/404.tsx +18 -0
- package/templates/marketplace/apps/fe/src/components/features/auth/AuthBrandPanel.tsx +60 -0
- package/templates/marketplace/apps/fe/src/components/features/auth/AuthLayout.tsx +23 -0
- package/templates/marketplace/apps/fe/src/components/features/auth/LoginPage.tsx +111 -0
- package/templates/marketplace/apps/fe/src/components/features/auth/RegisterPage.tsx +143 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/BrowsePage.tsx +76 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/CartPage.tsx +88 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/CheckoutPage.tsx +193 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/ListingCard.tsx +50 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/ListingDetailsPage.tsx +152 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/ListingFormPage.tsx +243 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/MyListingsPage.tsx +84 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/OrdersPage.tsx +224 -0
- package/templates/marketplace/apps/fe/src/components/features/marketplace/WatchlistPage.tsx +56 -0
- package/templates/marketplace/apps/fe/src/components/features/profile/ProfilePage.tsx +96 -0
- package/templates/marketplace/apps/fe/src/components/googleAnalytics/GoogleAnalytics.tsx +35 -0
- package/templates/marketplace/apps/fe/src/components/layout/AppLayout.tsx +19 -0
- package/templates/marketplace/apps/fe/src/components/layout/app-header/AppHeader.tsx +95 -0
- package/templates/marketplace/apps/fe/src/components/layout/app-header/MobileNavigation.tsx +55 -0
- package/templates/marketplace/apps/fe/src/components/layout/app-header/NavLink.tsx +29 -0
- package/templates/marketplace/apps/fe/src/components/shared/branding/BrandLogo.tsx +13 -0
- package/templates/marketplace/apps/fe/src/components/shared/error/ErrorFallback.tsx +43 -0
- package/templates/marketplace/apps/fe/src/components/shared/error/ErrorText.tsx +20 -0
- package/templates/marketplace/apps/fe/src/components/shared/error/NotFound.tsx +36 -0
- package/templates/marketplace/apps/fe/src/components/shared/forms/RequiredLabel.tsx +21 -0
- package/templates/marketplace/apps/fe/src/components/shared/forms/RowInputWrapper.tsx +50 -0
- package/templates/marketplace/apps/fe/src/components/shared/head/AppHead.tsx +32 -0
- package/templates/marketplace/apps/fe/src/components/shared/head/DefaultAppHead.tsx +34 -0
- package/templates/marketplace/apps/fe/src/components/shared/layout/LoadingState.tsx +9 -0
- package/templates/marketplace/apps/fe/src/components/shared/layout/ThinPageWrapper.tsx +5 -0
- package/templates/marketplace/apps/fe/src/components/shared/page/PageHeader.tsx +69 -0
- package/templates/marketplace/apps/fe/src/components/shared/ui/Card.tsx +60 -0
- package/templates/marketplace/apps/fe/src/components/shared/ui/GoogleLoginButton.tsx +19 -0
- package/templates/marketplace/apps/fe/src/components/shared/ui/RequiredLabel.tsx +22 -0
- package/templates/marketplace/apps/fe/src/components/shared/ui/TableActions.tsx +22 -0
- package/templates/marketplace/apps/fe/src/config/app.config.ts +35 -0
- package/templates/marketplace/apps/fe/src/config/i18n.ts +43 -0
- package/templates/marketplace/apps/fe/src/config/inits/a11y.ts +14 -0
- package/templates/marketplace/apps/fe/src/config/inits/logger.ts +7 -0
- package/templates/marketplace/apps/fe/src/config/inits/sentry.ts +21 -0
- package/templates/marketplace/apps/fe/src/config/jwt.config.ts +2 -0
- package/templates/marketplace/apps/fe/src/config/query.config.ts +20 -0
- package/templates/marketplace/apps/fe/src/hooks/useAuth.ts +5 -0
- package/templates/marketplace/apps/fe/src/main.tsx +52 -0
- package/templates/marketplace/apps/fe/src/pages/(guest)/login.tsx +23 -0
- package/templates/marketplace/apps/fe/src/pages/(guest)/register.tsx +23 -0
- package/templates/marketplace/apps/fe/src/pages/(guest)/route.tsx +18 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/cart.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/checkout.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/index.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/listings/$id/index.tsx +37 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/my-listings.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/orders/$id.tsx +40 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/orders/index.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/profile.tsx +23 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/route.tsx +18 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/sales.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/sell/$id.tsx +44 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/sell/index.tsx +19 -0
- package/templates/marketplace/apps/fe/src/pages/(private)/watchlist.tsx +22 -0
- package/templates/marketplace/apps/fe/src/pages/(public)/auth.tsx +37 -0
- package/templates/marketplace/apps/fe/src/pages/(public)/route.tsx +9 -0
- package/templates/marketplace/apps/fe/src/pages/__root.tsx +164 -0
- package/templates/marketplace/apps/fe/src/providers/AppErrorBoundary.tsx +10 -0
- package/templates/marketplace/apps/fe/src/providers/OpenApiRuntimeProvider.tsx +31 -0
- package/templates/marketplace/apps/fe/src/providers/index.tsx +44 -0
- package/templates/marketplace/apps/fe/src/providers/jwt.provider.tsx +95 -0
- package/templates/marketplace/apps/fe/src/routeTree.gen.ts +435 -0
- package/templates/marketplace/apps/fe/src/styles/base.css +103 -0
- package/templates/marketplace/apps/fe/src/styles/fonts/fonts.tsx +10 -0
- package/templates/marketplace/apps/fe/src/styles/fonts/general-sans.css +31 -0
- package/templates/marketplace/apps/fe/src/styles/globals.css +28 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/button.override.ts +536 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/checkbox.override.ts +71 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/input.override.ts +252 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/label.override.ts +91 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/modal.override.ts +57 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/radio.override.ts +46 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/table.override.ts +104 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/tag.override.ts +66 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/defaults/typography.override.ts +115 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/outline.clsx.ts +10 -0
- package/templates/marketplace/apps/fe/src/styles/overrides/uiOverrides.override.ts +60 -0
- package/templates/marketplace/apps/fe/src/styles/theme.css +2177 -0
- package/templates/marketplace/apps/fe/src/types/i18next.d.ts +12 -0
- package/templates/marketplace/apps/fe/src/types/table.d.ts +17 -0
- package/templates/marketplace/apps/fe/src/types/ui.d.ts +26 -0
- package/templates/marketplace/apps/fe/src/types/vite-env.d.ts +20 -0
- package/templates/marketplace/apps/fe/src/utils/date.utils.ts +17 -0
- package/templates/marketplace/apps/fe/src/utils/image-fallback.ts +9 -0
- package/templates/marketplace/apps/fe/src/utils/listing-form.test.ts +69 -0
- package/templates/marketplace/apps/fe/src/utils/listing-form.ts +77 -0
- package/templates/marketplace/apps/fe/src/utils/listing-submit.ts +29 -0
- package/templates/marketplace/apps/fe/src/utils/number.utils.ts +12 -0
- package/templates/marketplace/apps/fe/src/utils/string.utils.ts +5 -0
- package/templates/marketplace/apps/fe/src/vite-env.d.ts +1 -0
- package/templates/marketplace/apps/fe/tsconfig.app.json +32 -0
- package/templates/marketplace/apps/fe/tsconfig.json +9 -0
- package/templates/marketplace/apps/fe/tsconfig.node.json +31 -0
- package/templates/marketplace/apps/fe/vite.config.ts +125 -0
- package/templates/marketplace/database.ts +154 -0
- package/templates/marketplace/openapi.json +2303 -0
- package/templates/marketplace/oxfmt.config.js +23 -0
- package/templates/marketplace/package.json +18 -0
- package/templates/marketplace/rulesync.jsonc +18 -0
- package/templates/marketplace/tsconfig.json +11 -0
- package/templates/space/api/_lib.ts +9 -2
- package/templates/space/package.json +1 -1
|
@@ -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,435 @@
|
|
|
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 guestRouteRouteImport } from './pages/(guest)/route'
|
|
13
|
+
import { Route as privateRouteRouteImport } from './pages/(private)/route'
|
|
14
|
+
import { Route as publicRouteRouteImport } from './pages/(public)/route'
|
|
15
|
+
import { Route as guestLoginRouteImport } from './pages/(guest)/login'
|
|
16
|
+
import { Route as guestRegisterRouteImport } from './pages/(guest)/register'
|
|
17
|
+
import { Route as privateIndexRouteImport } from './pages/(private)/index'
|
|
18
|
+
import { Route as privateCartRouteImport } from './pages/(private)/cart'
|
|
19
|
+
import { Route as privateCheckoutRouteImport } from './pages/(private)/checkout'
|
|
20
|
+
import { Route as privateMyListingsRouteImport } from './pages/(private)/my-listings'
|
|
21
|
+
import { Route as privateProfileRouteImport } from './pages/(private)/profile'
|
|
22
|
+
import { Route as privateSalesRouteImport } from './pages/(private)/sales'
|
|
23
|
+
import { Route as privateWatchlistRouteImport } from './pages/(private)/watchlist'
|
|
24
|
+
import { Route as publicAuthRouteImport } from './pages/(public)/auth'
|
|
25
|
+
import { Route as privateOrdersIndexRouteImport } from './pages/(private)/orders/index'
|
|
26
|
+
import { Route as privateOrdersIdRouteImport } from './pages/(private)/orders/$id'
|
|
27
|
+
import { Route as privateSellIndexRouteImport } from './pages/(private)/sell/index'
|
|
28
|
+
import { Route as privateSellIdRouteImport } from './pages/(private)/sell/$id'
|
|
29
|
+
import { Route as privateListingsIdIndexRouteImport } from './pages/(private)/listings/$id/index'
|
|
30
|
+
|
|
31
|
+
const guestRouteRoute = guestRouteRouteImport.update({
|
|
32
|
+
id: '/(guest)',
|
|
33
|
+
getParentRoute: () => rootRouteImport,
|
|
34
|
+
} as any)
|
|
35
|
+
const privateRouteRoute = privateRouteRouteImport.update({
|
|
36
|
+
id: '/(private)',
|
|
37
|
+
getParentRoute: () => rootRouteImport,
|
|
38
|
+
} as any)
|
|
39
|
+
const publicRouteRoute = publicRouteRouteImport.update({
|
|
40
|
+
id: '/(public)',
|
|
41
|
+
getParentRoute: () => rootRouteImport,
|
|
42
|
+
} as any)
|
|
43
|
+
const guestLoginRoute = guestLoginRouteImport.update({
|
|
44
|
+
id: '/login',
|
|
45
|
+
path: '/login',
|
|
46
|
+
getParentRoute: () => guestRouteRoute,
|
|
47
|
+
} as any)
|
|
48
|
+
const guestRegisterRoute = guestRegisterRouteImport.update({
|
|
49
|
+
id: '/register',
|
|
50
|
+
path: '/register',
|
|
51
|
+
getParentRoute: () => guestRouteRoute,
|
|
52
|
+
} as any)
|
|
53
|
+
const privateIndexRoute = privateIndexRouteImport.update({
|
|
54
|
+
id: '/',
|
|
55
|
+
path: '/',
|
|
56
|
+
getParentRoute: () => privateRouteRoute,
|
|
57
|
+
} as any)
|
|
58
|
+
const privateCartRoute = privateCartRouteImport.update({
|
|
59
|
+
id: '/cart',
|
|
60
|
+
path: '/cart',
|
|
61
|
+
getParentRoute: () => privateRouteRoute,
|
|
62
|
+
} as any)
|
|
63
|
+
const privateCheckoutRoute = privateCheckoutRouteImport.update({
|
|
64
|
+
id: '/checkout',
|
|
65
|
+
path: '/checkout',
|
|
66
|
+
getParentRoute: () => privateRouteRoute,
|
|
67
|
+
} as any)
|
|
68
|
+
const privateMyListingsRoute = privateMyListingsRouteImport.update({
|
|
69
|
+
id: '/my-listings',
|
|
70
|
+
path: '/my-listings',
|
|
71
|
+
getParentRoute: () => privateRouteRoute,
|
|
72
|
+
} as any)
|
|
73
|
+
const privateProfileRoute = privateProfileRouteImport.update({
|
|
74
|
+
id: '/profile',
|
|
75
|
+
path: '/profile',
|
|
76
|
+
getParentRoute: () => privateRouteRoute,
|
|
77
|
+
} as any)
|
|
78
|
+
const privateSalesRoute = privateSalesRouteImport.update({
|
|
79
|
+
id: '/sales',
|
|
80
|
+
path: '/sales',
|
|
81
|
+
getParentRoute: () => privateRouteRoute,
|
|
82
|
+
} as any)
|
|
83
|
+
const privateWatchlistRoute = privateWatchlistRouteImport.update({
|
|
84
|
+
id: '/watchlist',
|
|
85
|
+
path: '/watchlist',
|
|
86
|
+
getParentRoute: () => privateRouteRoute,
|
|
87
|
+
} as any)
|
|
88
|
+
const publicAuthRoute = publicAuthRouteImport.update({
|
|
89
|
+
id: '/auth',
|
|
90
|
+
path: '/auth',
|
|
91
|
+
getParentRoute: () => publicRouteRoute,
|
|
92
|
+
} as any)
|
|
93
|
+
const privateOrdersIndexRoute = privateOrdersIndexRouteImport.update({
|
|
94
|
+
id: '/orders/',
|
|
95
|
+
path: '/orders/',
|
|
96
|
+
getParentRoute: () => privateRouteRoute,
|
|
97
|
+
} as any)
|
|
98
|
+
const privateOrdersIdRoute = privateOrdersIdRouteImport.update({
|
|
99
|
+
id: '/orders/$id',
|
|
100
|
+
path: '/orders/$id',
|
|
101
|
+
getParentRoute: () => privateRouteRoute,
|
|
102
|
+
} as any)
|
|
103
|
+
const privateSellIndexRoute = privateSellIndexRouteImport.update({
|
|
104
|
+
id: '/sell/',
|
|
105
|
+
path: '/sell/',
|
|
106
|
+
getParentRoute: () => privateRouteRoute,
|
|
107
|
+
} as any)
|
|
108
|
+
const privateSellIdRoute = privateSellIdRouteImport.update({
|
|
109
|
+
id: '/sell/$id',
|
|
110
|
+
path: '/sell/$id',
|
|
111
|
+
getParentRoute: () => privateRouteRoute,
|
|
112
|
+
} as any)
|
|
113
|
+
const privateListingsIdIndexRoute = privateListingsIdIndexRouteImport.update({
|
|
114
|
+
id: '/listings/$id/',
|
|
115
|
+
path: '/listings/$id/',
|
|
116
|
+
getParentRoute: () => privateRouteRoute,
|
|
117
|
+
} as any)
|
|
118
|
+
|
|
119
|
+
export interface FileRoutesByFullPath {
|
|
120
|
+
'/login': typeof guestLoginRoute
|
|
121
|
+
'/register': typeof guestRegisterRoute
|
|
122
|
+
'/cart': typeof privateCartRoute
|
|
123
|
+
'/checkout': typeof privateCheckoutRoute
|
|
124
|
+
'/my-listings': typeof privateMyListingsRoute
|
|
125
|
+
'/profile': typeof privateProfileRoute
|
|
126
|
+
'/sales': typeof privateSalesRoute
|
|
127
|
+
'/watchlist': typeof privateWatchlistRoute
|
|
128
|
+
'/auth': typeof publicAuthRoute
|
|
129
|
+
'/': typeof privateIndexRoute
|
|
130
|
+
'/orders/$id': typeof privateOrdersIdRoute
|
|
131
|
+
'/sell/$id': typeof privateSellIdRoute
|
|
132
|
+
'/orders/': typeof privateOrdersIndexRoute
|
|
133
|
+
'/sell/': typeof privateSellIndexRoute
|
|
134
|
+
'/listings/$id/': typeof privateListingsIdIndexRoute
|
|
135
|
+
}
|
|
136
|
+
export interface FileRoutesByTo {
|
|
137
|
+
'/login': typeof guestLoginRoute
|
|
138
|
+
'/register': typeof guestRegisterRoute
|
|
139
|
+
'/cart': typeof privateCartRoute
|
|
140
|
+
'/checkout': typeof privateCheckoutRoute
|
|
141
|
+
'/my-listings': typeof privateMyListingsRoute
|
|
142
|
+
'/profile': typeof privateProfileRoute
|
|
143
|
+
'/sales': typeof privateSalesRoute
|
|
144
|
+
'/watchlist': typeof privateWatchlistRoute
|
|
145
|
+
'/auth': typeof publicAuthRoute
|
|
146
|
+
'/': typeof privateIndexRoute
|
|
147
|
+
'/orders/$id': typeof privateOrdersIdRoute
|
|
148
|
+
'/sell/$id': typeof privateSellIdRoute
|
|
149
|
+
'/orders': typeof privateOrdersIndexRoute
|
|
150
|
+
'/sell': typeof privateSellIndexRoute
|
|
151
|
+
'/listings/$id': typeof privateListingsIdIndexRoute
|
|
152
|
+
}
|
|
153
|
+
export interface FileRoutesById {
|
|
154
|
+
__root__: typeof rootRouteImport
|
|
155
|
+
'/(guest)': typeof guestRouteRouteWithChildren
|
|
156
|
+
'/(private)': typeof privateRouteRouteWithChildren
|
|
157
|
+
'/(public)': typeof publicRouteRouteWithChildren
|
|
158
|
+
'/(guest)/login': typeof guestLoginRoute
|
|
159
|
+
'/(guest)/register': typeof guestRegisterRoute
|
|
160
|
+
'/(private)/cart': typeof privateCartRoute
|
|
161
|
+
'/(private)/checkout': typeof privateCheckoutRoute
|
|
162
|
+
'/(private)/my-listings': typeof privateMyListingsRoute
|
|
163
|
+
'/(private)/profile': typeof privateProfileRoute
|
|
164
|
+
'/(private)/sales': typeof privateSalesRoute
|
|
165
|
+
'/(private)/watchlist': typeof privateWatchlistRoute
|
|
166
|
+
'/(public)/auth': typeof publicAuthRoute
|
|
167
|
+
'/(private)/': typeof privateIndexRoute
|
|
168
|
+
'/(private)/orders/$id': typeof privateOrdersIdRoute
|
|
169
|
+
'/(private)/sell/$id': typeof privateSellIdRoute
|
|
170
|
+
'/(private)/orders/': typeof privateOrdersIndexRoute
|
|
171
|
+
'/(private)/sell/': typeof privateSellIndexRoute
|
|
172
|
+
'/(private)/listings/$id/': typeof privateListingsIdIndexRoute
|
|
173
|
+
}
|
|
174
|
+
export interface FileRouteTypes {
|
|
175
|
+
fileRoutesByFullPath: FileRoutesByFullPath
|
|
176
|
+
fullPaths:
|
|
177
|
+
| '/login'
|
|
178
|
+
| '/register'
|
|
179
|
+
| '/cart'
|
|
180
|
+
| '/checkout'
|
|
181
|
+
| '/my-listings'
|
|
182
|
+
| '/profile'
|
|
183
|
+
| '/sales'
|
|
184
|
+
| '/watchlist'
|
|
185
|
+
| '/auth'
|
|
186
|
+
| '/'
|
|
187
|
+
| '/orders/$id'
|
|
188
|
+
| '/sell/$id'
|
|
189
|
+
| '/orders/'
|
|
190
|
+
| '/sell/'
|
|
191
|
+
| '/listings/$id/'
|
|
192
|
+
fileRoutesByTo: FileRoutesByTo
|
|
193
|
+
to:
|
|
194
|
+
| '/login'
|
|
195
|
+
| '/register'
|
|
196
|
+
| '/cart'
|
|
197
|
+
| '/checkout'
|
|
198
|
+
| '/my-listings'
|
|
199
|
+
| '/profile'
|
|
200
|
+
| '/sales'
|
|
201
|
+
| '/watchlist'
|
|
202
|
+
| '/auth'
|
|
203
|
+
| '/'
|
|
204
|
+
| '/orders/$id'
|
|
205
|
+
| '/sell/$id'
|
|
206
|
+
| '/orders'
|
|
207
|
+
| '/sell'
|
|
208
|
+
| '/listings/$id'
|
|
209
|
+
id:
|
|
210
|
+
| '__root__'
|
|
211
|
+
| '/(guest)'
|
|
212
|
+
| '/(private)'
|
|
213
|
+
| '/(public)'
|
|
214
|
+
| '/(guest)/login'
|
|
215
|
+
| '/(guest)/register'
|
|
216
|
+
| '/(private)/cart'
|
|
217
|
+
| '/(private)/checkout'
|
|
218
|
+
| '/(private)/my-listings'
|
|
219
|
+
| '/(private)/profile'
|
|
220
|
+
| '/(private)/sales'
|
|
221
|
+
| '/(private)/watchlist'
|
|
222
|
+
| '/(public)/auth'
|
|
223
|
+
| '/(private)/'
|
|
224
|
+
| '/(private)/orders/$id'
|
|
225
|
+
| '/(private)/sell/$id'
|
|
226
|
+
| '/(private)/orders/'
|
|
227
|
+
| '/(private)/sell/'
|
|
228
|
+
| '/(private)/listings/$id/'
|
|
229
|
+
fileRoutesById: FileRoutesById
|
|
230
|
+
}
|
|
231
|
+
export interface RootRouteChildren {
|
|
232
|
+
guestRouteRoute: typeof guestRouteRouteWithChildren
|
|
233
|
+
privateRouteRoute: typeof privateRouteRouteWithChildren
|
|
234
|
+
publicRouteRoute: typeof publicRouteRouteWithChildren
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
declare module '@tanstack/react-router' {
|
|
238
|
+
interface FileRoutesByPath {
|
|
239
|
+
'/(guest)': {
|
|
240
|
+
id: '/(guest)'
|
|
241
|
+
path: ''
|
|
242
|
+
fullPath: ''
|
|
243
|
+
preLoaderRoute: typeof guestRouteRouteImport
|
|
244
|
+
parentRoute: typeof rootRouteImport
|
|
245
|
+
}
|
|
246
|
+
'/(private)': {
|
|
247
|
+
id: '/(private)'
|
|
248
|
+
path: ''
|
|
249
|
+
fullPath: ''
|
|
250
|
+
preLoaderRoute: typeof privateRouteRouteImport
|
|
251
|
+
parentRoute: typeof rootRouteImport
|
|
252
|
+
}
|
|
253
|
+
'/(public)': {
|
|
254
|
+
id: '/(public)'
|
|
255
|
+
path: ''
|
|
256
|
+
fullPath: ''
|
|
257
|
+
preLoaderRoute: typeof publicRouteRouteImport
|
|
258
|
+
parentRoute: typeof rootRouteImport
|
|
259
|
+
}
|
|
260
|
+
'/(guest)/login': {
|
|
261
|
+
id: '/(guest)/login'
|
|
262
|
+
path: '/login'
|
|
263
|
+
fullPath: '/login'
|
|
264
|
+
preLoaderRoute: typeof guestLoginRouteImport
|
|
265
|
+
parentRoute: typeof guestRouteRoute
|
|
266
|
+
}
|
|
267
|
+
'/(guest)/register': {
|
|
268
|
+
id: '/(guest)/register'
|
|
269
|
+
path: '/register'
|
|
270
|
+
fullPath: '/register'
|
|
271
|
+
preLoaderRoute: typeof guestRegisterRouteImport
|
|
272
|
+
parentRoute: typeof guestRouteRoute
|
|
273
|
+
}
|
|
274
|
+
'/(private)/': {
|
|
275
|
+
id: '/(private)/'
|
|
276
|
+
path: '/'
|
|
277
|
+
fullPath: '/'
|
|
278
|
+
preLoaderRoute: typeof privateIndexRouteImport
|
|
279
|
+
parentRoute: typeof privateRouteRoute
|
|
280
|
+
}
|
|
281
|
+
'/(private)/cart': {
|
|
282
|
+
id: '/(private)/cart'
|
|
283
|
+
path: '/cart'
|
|
284
|
+
fullPath: '/cart'
|
|
285
|
+
preLoaderRoute: typeof privateCartRouteImport
|
|
286
|
+
parentRoute: typeof privateRouteRoute
|
|
287
|
+
}
|
|
288
|
+
'/(private)/checkout': {
|
|
289
|
+
id: '/(private)/checkout'
|
|
290
|
+
path: '/checkout'
|
|
291
|
+
fullPath: '/checkout'
|
|
292
|
+
preLoaderRoute: typeof privateCheckoutRouteImport
|
|
293
|
+
parentRoute: typeof privateRouteRoute
|
|
294
|
+
}
|
|
295
|
+
'/(private)/my-listings': {
|
|
296
|
+
id: '/(private)/my-listings'
|
|
297
|
+
path: '/my-listings'
|
|
298
|
+
fullPath: '/my-listings'
|
|
299
|
+
preLoaderRoute: typeof privateMyListingsRouteImport
|
|
300
|
+
parentRoute: typeof privateRouteRoute
|
|
301
|
+
}
|
|
302
|
+
'/(private)/profile': {
|
|
303
|
+
id: '/(private)/profile'
|
|
304
|
+
path: '/profile'
|
|
305
|
+
fullPath: '/profile'
|
|
306
|
+
preLoaderRoute: typeof privateProfileRouteImport
|
|
307
|
+
parentRoute: typeof privateRouteRoute
|
|
308
|
+
}
|
|
309
|
+
'/(private)/sales': {
|
|
310
|
+
id: '/(private)/sales'
|
|
311
|
+
path: '/sales'
|
|
312
|
+
fullPath: '/sales'
|
|
313
|
+
preLoaderRoute: typeof privateSalesRouteImport
|
|
314
|
+
parentRoute: typeof privateRouteRoute
|
|
315
|
+
}
|
|
316
|
+
'/(private)/watchlist': {
|
|
317
|
+
id: '/(private)/watchlist'
|
|
318
|
+
path: '/watchlist'
|
|
319
|
+
fullPath: '/watchlist'
|
|
320
|
+
preLoaderRoute: typeof privateWatchlistRouteImport
|
|
321
|
+
parentRoute: typeof privateRouteRoute
|
|
322
|
+
}
|
|
323
|
+
'/(public)/auth': {
|
|
324
|
+
id: '/(public)/auth'
|
|
325
|
+
path: '/auth'
|
|
326
|
+
fullPath: '/auth'
|
|
327
|
+
preLoaderRoute: typeof publicAuthRouteImport
|
|
328
|
+
parentRoute: typeof publicRouteRoute
|
|
329
|
+
}
|
|
330
|
+
'/(private)/orders/': {
|
|
331
|
+
id: '/(private)/orders/'
|
|
332
|
+
path: '/orders'
|
|
333
|
+
fullPath: '/orders/'
|
|
334
|
+
preLoaderRoute: typeof privateOrdersIndexRouteImport
|
|
335
|
+
parentRoute: typeof privateRouteRoute
|
|
336
|
+
}
|
|
337
|
+
'/(private)/orders/$id': {
|
|
338
|
+
id: '/(private)/orders/$id'
|
|
339
|
+
path: '/orders/$id'
|
|
340
|
+
fullPath: '/orders/$id'
|
|
341
|
+
preLoaderRoute: typeof privateOrdersIdRouteImport
|
|
342
|
+
parentRoute: typeof privateRouteRoute
|
|
343
|
+
}
|
|
344
|
+
'/(private)/sell/': {
|
|
345
|
+
id: '/(private)/sell/'
|
|
346
|
+
path: '/sell'
|
|
347
|
+
fullPath: '/sell/'
|
|
348
|
+
preLoaderRoute: typeof privateSellIndexRouteImport
|
|
349
|
+
parentRoute: typeof privateRouteRoute
|
|
350
|
+
}
|
|
351
|
+
'/(private)/sell/$id': {
|
|
352
|
+
id: '/(private)/sell/$id'
|
|
353
|
+
path: '/sell/$id'
|
|
354
|
+
fullPath: '/sell/$id'
|
|
355
|
+
preLoaderRoute: typeof privateSellIdRouteImport
|
|
356
|
+
parentRoute: typeof privateRouteRoute
|
|
357
|
+
}
|
|
358
|
+
'/(private)/listings/$id/': {
|
|
359
|
+
id: '/(private)/listings/$id/'
|
|
360
|
+
path: '/listings/$id'
|
|
361
|
+
fullPath: '/listings/$id/'
|
|
362
|
+
preLoaderRoute: typeof privateListingsIdIndexRouteImport
|
|
363
|
+
parentRoute: typeof privateRouteRoute
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
interface guestRouteRouteChildren {
|
|
369
|
+
guestLoginRoute: typeof guestLoginRoute
|
|
370
|
+
guestRegisterRoute: typeof guestRegisterRoute
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
const guestRouteRouteChildren: guestRouteRouteChildren = {
|
|
374
|
+
guestLoginRoute: guestLoginRoute,
|
|
375
|
+
guestRegisterRoute: guestRegisterRoute,
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const guestRouteRouteWithChildren = guestRouteRoute._addFileChildren(
|
|
379
|
+
guestRouteRouteChildren,
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
interface privateRouteRouteChildren {
|
|
383
|
+
privateCartRoute: typeof privateCartRoute
|
|
384
|
+
privateCheckoutRoute: typeof privateCheckoutRoute
|
|
385
|
+
privateMyListingsRoute: typeof privateMyListingsRoute
|
|
386
|
+
privateProfileRoute: typeof privateProfileRoute
|
|
387
|
+
privateSalesRoute: typeof privateSalesRoute
|
|
388
|
+
privateWatchlistRoute: typeof privateWatchlistRoute
|
|
389
|
+
privateIndexRoute: typeof privateIndexRoute
|
|
390
|
+
privateOrdersIdRoute: typeof privateOrdersIdRoute
|
|
391
|
+
privateSellIdRoute: typeof privateSellIdRoute
|
|
392
|
+
privateOrdersIndexRoute: typeof privateOrdersIndexRoute
|
|
393
|
+
privateSellIndexRoute: typeof privateSellIndexRoute
|
|
394
|
+
privateListingsIdIndexRoute: typeof privateListingsIdIndexRoute
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
const privateRouteRouteChildren: privateRouteRouteChildren = {
|
|
398
|
+
privateCartRoute: privateCartRoute,
|
|
399
|
+
privateCheckoutRoute: privateCheckoutRoute,
|
|
400
|
+
privateMyListingsRoute: privateMyListingsRoute,
|
|
401
|
+
privateProfileRoute: privateProfileRoute,
|
|
402
|
+
privateSalesRoute: privateSalesRoute,
|
|
403
|
+
privateWatchlistRoute: privateWatchlistRoute,
|
|
404
|
+
privateIndexRoute: privateIndexRoute,
|
|
405
|
+
privateOrdersIdRoute: privateOrdersIdRoute,
|
|
406
|
+
privateSellIdRoute: privateSellIdRoute,
|
|
407
|
+
privateOrdersIndexRoute: privateOrdersIndexRoute,
|
|
408
|
+
privateSellIndexRoute: privateSellIndexRoute,
|
|
409
|
+
privateListingsIdIndexRoute: privateListingsIdIndexRoute,
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
const privateRouteRouteWithChildren = privateRouteRoute._addFileChildren(
|
|
413
|
+
privateRouteRouteChildren,
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
interface publicRouteRouteChildren {
|
|
417
|
+
publicAuthRoute: typeof publicAuthRoute
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
const publicRouteRouteChildren: publicRouteRouteChildren = {
|
|
421
|
+
publicAuthRoute: publicAuthRoute,
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
const publicRouteRouteWithChildren = publicRouteRoute._addFileChildren(
|
|
425
|
+
publicRouteRouteChildren,
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
const rootRouteChildren: RootRouteChildren = {
|
|
429
|
+
guestRouteRoute: guestRouteRouteWithChildren,
|
|
430
|
+
privateRouteRoute: privateRouteRouteWithChildren,
|
|
431
|
+
publicRouteRoute: publicRouteRouteWithChildren,
|
|
432
|
+
}
|
|
433
|
+
export const routeTree = rootRouteImport
|
|
434
|
+
._addFileChildren(rootRouteChildren)
|
|
435
|
+
._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
|
+
}
|