@llmnative/react 2.0.1 → 2.2.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/bin/cli.js +117 -117
- package/dist/index.css +1 -1
- package/dist/index.js +21 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10468 -8488
- package/dist/index.mjs.map +1 -1
- package/dist/types/src/App.d.ts +19 -1
- package/dist/types/src/I18n.d.ts +91 -0
- package/dist/types/src/Theme.d.ts +16 -0
- package/dist/types/src/components/auth/AuthGate.d.ts +26 -0
- package/dist/types/src/components/auth/AuthLayout.d.ts +38 -0
- package/dist/types/src/components/auth/ForgotPassword.d.ts +19 -0
- package/dist/types/src/components/auth/OneTimeCodeInput.d.ts +27 -0
- package/dist/types/src/components/auth/ResetPassword.d.ts +31 -0
- package/dist/types/src/components/auth/SignIn.d.ts +42 -0
- package/dist/types/src/components/auth/SignUp.d.ts +43 -0
- package/dist/types/src/components/auth/VerifyCode.d.ts +32 -0
- package/dist/types/src/components/auth/VerifyEmail.d.ts +31 -0
- package/dist/types/src/components/auth/index.d.ts +12 -0
- package/dist/types/src/components/auth/providers.d.ts +22 -0
- package/dist/types/src/components/auth/shared.d.ts +124 -0
- package/dist/types/src/components/auth/useAuthFlows.d.ts +46 -0
- package/dist/types/src/index.d.ts +5 -1
- package/dist/types/src/providers/auth/AuthProvider.d.ts +51 -0
- package/dist/types/src/providers/auth/firebase/FirebaseAuthProvider.d.ts +8 -1
- package/dist/types/src/providers/auth/github/GitHubAuthProvider.d.ts +2 -0
- package/dist/types/src/providers/auth/mock/MockAuthProvider.d.ts +55 -0
- package/dist/types/src/providers/auth/supabase/SupabaseAuthProvider.d.ts +16 -1
- package/dist/types/src/providers/manifest.d.ts +4 -1
- package/llms-full.txt +96 -2
- package/package.json +1 -1
- package/scripts/cli/setup-project.js +678 -647
- package/templates/_shared/conf/access.tsx +23 -0
- package/templates/_shared/pages/access/ForgotPasswordPage.tsx +13 -0
- package/templates/_shared/pages/access/ResetPasswordPage.tsx +19 -0
- package/templates/_shared/pages/access/SignInPage.tsx +21 -0
- package/templates/_shared/pages/access/SignUpPage.tsx +23 -0
- package/templates/_shared/pages/access/VerifyEmailPage.tsx +20 -0
- package/templates/_shared/pages/access/paths.ts +12 -0
- package/templates/_shared/sections/Footer.tsx +1 -1
- package/templates/_shared/sections/Header.tsx +2 -2
- package/themes/default.ts +13 -12
- package/themes/tokyo-night-light.ts +24 -2
- package/themes/tokyo-night.ts +24 -2
- package/themes/vscode-dark-modern.ts +24 -2
- package/themes/vscode-dark-plus.ts +24 -2
- package/themes/vscode-light-modern.ts +24 -2
- package/themes/vscode-light-plus.ts +24 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { MenuConfig } from '@llmnative/react';
|
|
3
|
+
import SignUpPage from '../pages/access/SignUpPage';
|
|
4
|
+
import ForgotPasswordPage from '../pages/access/ForgotPasswordPage';
|
|
5
|
+
import ResetPasswordPage from '../pages/access/ResetPasswordPage';
|
|
6
|
+
import VerifyEmailPage from '../pages/access/VerifyEmailPage';
|
|
7
|
+
import { ACCESS_PATHS } from '../pages/access/paths';
|
|
8
|
+
|
|
9
|
+
/** The pages of access take the whole screen: no header, no menu. */
|
|
10
|
+
const Bare = ({ children }: { children?: React.ReactNode }) => <>{children}</>;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The pages open without a session (`public`): the sign-in itself has no page, the gate of
|
|
14
|
+
* `index.tsx` shows it in place of any other page. No title: they are never entries of a menu.
|
|
15
|
+
*/
|
|
16
|
+
export const accessMenu: MenuConfig = {
|
|
17
|
+
access: [
|
|
18
|
+
{ path: ACCESS_PATHS.signUp, page: SignUpPage, layout: Bare, public: true },
|
|
19
|
+
{ path: ACCESS_PATHS.forgotPassword, page: ForgotPasswordPage, layout: Bare, public: true },
|
|
20
|
+
{ path: ACCESS_PATHS.resetPassword, page: ResetPasswordPage, layout: Bare, public: true },
|
|
21
|
+
{ path: ACCESS_PATHS.verifyEmail, page: VerifyEmailPage, layout: Bare, public: true },
|
|
22
|
+
],
|
|
23
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Navigate } from 'react-router-dom';
|
|
3
|
+
import { Brand, ForgotPassword, useAuthFlows } from '@llmnative/react';
|
|
4
|
+
import { ACCESS_FLOWS } from './paths';
|
|
5
|
+
|
|
6
|
+
/** Sends the link to choose a new password; the link opens `/reset-password`. */
|
|
7
|
+
export default function ForgotPasswordPage() {
|
|
8
|
+
const flows = useAuthFlows(undefined, ACCESS_FLOWS);
|
|
9
|
+
|
|
10
|
+
if (!flows.forgotPassword) return <Navigate to="/" replace />;
|
|
11
|
+
|
|
12
|
+
return <ForgotPassword {...flows.forgotPassword} brand={<Brand label="[projectname]" />} signInLink="/" />;
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useLocation } from 'react-router-dom';
|
|
3
|
+
import { Brand, ResetPassword, linkCode, useAuthFlows } from '@llmnative/react';
|
|
4
|
+
import { ACCESS_FLOWS, ACCESS_PATHS } from './paths';
|
|
5
|
+
|
|
6
|
+
/** Opened by the link of the email: the code of the link sets the new password. */
|
|
7
|
+
export default function ResetPasswordPage() {
|
|
8
|
+
const flows = useAuthFlows(undefined, ACCESS_FLOWS);
|
|
9
|
+
const code = linkCode(useLocation().search);
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<ResetPassword
|
|
13
|
+
{...flows.resetPassword(code)}
|
|
14
|
+
brand={<Brand label="[projectname]" />}
|
|
15
|
+
signInLink="/"
|
|
16
|
+
requestNewLink={ACCESS_PATHS.forgotPassword}
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Brand, SignIn, useAuthFlows } from '@llmnative/react';
|
|
3
|
+
import { ACCESS_FLOWS, ACCESS_PATHS } from './paths';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The sign-in, shown by the gate of `index.tsx` in place of any page opened without a session:
|
|
7
|
+
* the address does not change, and once signed in the page appears.
|
|
8
|
+
*/
|
|
9
|
+
export default function SignInPage() {
|
|
10
|
+
const flows = useAuthFlows(undefined, ACCESS_FLOWS);
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<SignIn
|
|
14
|
+
{...flows.signIn}
|
|
15
|
+
appName="[projectname]"
|
|
16
|
+
brand={<Brand label="[projectname]" />}
|
|
17
|
+
signUpLink={flows.signUp ? ACCESS_PATHS.signUp : undefined}
|
|
18
|
+
forgotPasswordLink={flows.forgotPassword ? ACCESS_PATHS.forgotPassword : undefined}
|
|
19
|
+
/>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Navigate, useNavigate } from 'react-router-dom';
|
|
3
|
+
import { Brand, SignUp, useAuthFlows } from '@llmnative/react';
|
|
4
|
+
import { ACCESS_FLOWS } from './paths';
|
|
5
|
+
|
|
6
|
+
/** Creates an account; the confirmation link of the email opens `/verify-email`. */
|
|
7
|
+
export default function SignUpPage() {
|
|
8
|
+
const flows = useAuthFlows(undefined, ACCESS_FLOWS);
|
|
9
|
+
const navigate = useNavigate();
|
|
10
|
+
|
|
11
|
+
// A provider without accounts of its own (Google, GitHub): its sign-in creates them.
|
|
12
|
+
if (!flows.signUp) return <Navigate to="/" replace />;
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<SignUp
|
|
16
|
+
{...flows.signUp}
|
|
17
|
+
terms
|
|
18
|
+
brand={<Brand label="[projectname]" />}
|
|
19
|
+
signInLink="/"
|
|
20
|
+
onSignedUp={() => navigate('/')}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useLocation } from 'react-router-dom';
|
|
3
|
+
import { Brand, VerifyEmail, linkCode, useAuthFlows } from '@llmnative/react';
|
|
4
|
+
import { ACCESS_FLOWS } from './paths';
|
|
5
|
+
|
|
6
|
+
/** Opened by the confirmation link of a new account: it activates the account at once. */
|
|
7
|
+
export default function VerifyEmailPage() {
|
|
8
|
+
const flows = useAuthFlows(undefined, ACCESS_FLOWS);
|
|
9
|
+
const code = linkCode(useLocation().search);
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<VerifyEmail
|
|
13
|
+
{...flows.verifyEmail}
|
|
14
|
+
code={code}
|
|
15
|
+
brand={<Brand label="[projectname]" />}
|
|
16
|
+
continueLink="/"
|
|
17
|
+
signInLink="/"
|
|
18
|
+
/>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// The pages the links of the access emails open: the provider puts them in the emails it sends.
|
|
2
|
+
export const ACCESS_PATHS = {
|
|
3
|
+
signUp: '/sign-up',
|
|
4
|
+
forgotPassword: '/forgot-password',
|
|
5
|
+
resetPassword: '/reset-password',
|
|
6
|
+
verifyEmail: '/verify-email',
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const ACCESS_FLOWS = {
|
|
10
|
+
verifyEmailPath: ACCESS_PATHS.verifyEmail,
|
|
11
|
+
resetPasswordPath: ACCESS_PATHS.resetPassword,
|
|
12
|
+
};
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
|
|
3
3
|
export default function Footer() {
|
|
4
4
|
return (
|
|
5
|
-
<footer className="shrink-0 border-t bg-
|
|
5
|
+
<footer className="shrink-0 border-t border-footer-border bg-footer px-4 py-1.5 text-end text-xs text-footer-foreground">
|
|
6
6
|
Powered by [projectname]
|
|
7
7
|
</footer>
|
|
8
8
|
);
|
|
@@ -7,7 +7,7 @@ type HeaderProps = {
|
|
|
7
7
|
|
|
8
8
|
export default function Header({ onMenuToggle }: HeaderProps) {
|
|
9
9
|
return (
|
|
10
|
-
<header className="flex h-14 shrink-0 items-center gap-3 border-b bg-
|
|
10
|
+
<header className="flex h-14 shrink-0 items-center gap-3 border-b border-header-border bg-header px-4 text-header-foreground">
|
|
11
11
|
<ActionButton
|
|
12
12
|
icon="menu"
|
|
13
13
|
ariaLabel="Toggle navigation"
|
|
@@ -17,7 +17,7 @@ export default function Header({ onMenuToggle }: HeaderProps) {
|
|
|
17
17
|
/>
|
|
18
18
|
<Brand url="/" label="[projectname]" />
|
|
19
19
|
<div className="ms-auto">
|
|
20
|
-
<AuthButton />
|
|
20
|
+
<AuthButton aspect="avatar" />
|
|
21
21
|
</div>
|
|
22
22
|
</header>
|
|
23
23
|
);
|
package/themes/default.ts
CHANGED
|
@@ -367,27 +367,28 @@ export const components: Theme = {
|
|
|
367
367
|
},
|
|
368
368
|
SideNav: {
|
|
369
369
|
wrapperClassName: '',
|
|
370
|
-
|
|
370
|
+
// The side bar of the theme (CR-126): `sidebar*` tokens, the base ones when the theme has none.
|
|
371
|
+
shellClassName: 'border-r border-sidebar-border bg-sidebar text-sidebar-foreground',
|
|
371
372
|
overlayClassName: 'shadow-xl',
|
|
372
|
-
headerClassName: 'border-b border-border
|
|
373
|
+
headerClassName: 'border-b border-sidebar-border px-1.5 py-2',
|
|
373
374
|
navClassName: 'px-1.5 py-2',
|
|
374
|
-
bottomNavClassName: 'border-t border-border
|
|
375
|
-
footerClassName: 'border-t border-border
|
|
376
|
-
groupLabelClassName: 'text-[10.5px] font-semibold uppercase tracking-widest text-
|
|
377
|
-
groupDividerClassName: 'bg-border
|
|
375
|
+
bottomNavClassName: 'border-t border-sidebar-border px-1.5 py-2',
|
|
376
|
+
footerClassName: 'border-t border-sidebar-border px-1.5 py-2',
|
|
377
|
+
groupLabelClassName: 'text-[10.5px] font-semibold uppercase tracking-widest text-sidebar-foreground/60 select-none',
|
|
378
|
+
groupDividerClassName: 'bg-sidebar-border',
|
|
378
379
|
itemClassName: 'rounded-lg',
|
|
379
|
-
itemActiveClassName: 'bg-
|
|
380
|
-
itemChildActiveClassName: 'bg-accent/
|
|
381
|
-
itemInactiveClassName: 'text-
|
|
380
|
+
itemActiveClassName: 'bg-sidebar-accent text-sidebar-accent-foreground font-medium',
|
|
381
|
+
itemChildActiveClassName: 'bg-sidebar-accent/60 text-sidebar-accent-foreground font-medium',
|
|
382
|
+
itemInactiveClassName: 'text-sidebar-foreground/80 hover:text-sidebar-accent-foreground hover:bg-sidebar-accent/70',
|
|
382
383
|
itemIconClassName: '',
|
|
383
384
|
itemTextClassName: '',
|
|
384
385
|
itemBadgeClassName: 'ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-full bg-primary/15 text-primary',
|
|
385
386
|
itemCollapsedBadgeClassName: 'absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-full bg-primary ring-1 ring-card',
|
|
386
387
|
itemToggleClassName: 'shrink-0 flex items-center justify-center w-6 h-6 rounded-md transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/70',
|
|
387
388
|
subItemClassName: 'rounded-md',
|
|
388
|
-
subItemActiveClassName: 'bg-
|
|
389
|
-
subItemInactiveClassName: 'text-
|
|
390
|
-
collapseButtonClassName: 'shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-
|
|
389
|
+
subItemActiveClassName: 'bg-sidebar-accent text-sidebar-accent-foreground font-medium',
|
|
390
|
+
subItemInactiveClassName: 'text-sidebar-foreground/80 hover:text-sidebar-accent-foreground hover:bg-sidebar-accent/70',
|
|
391
|
+
collapseButtonClassName: 'shrink-0 flex items-center justify-center rounded-md w-8 h-8 transition-colors text-sidebar-foreground/70 hover:text-sidebar-accent-foreground hover:bg-sidebar-accent/70',
|
|
391
392
|
},
|
|
392
393
|
Toolbar: {
|
|
393
394
|
wrapperClassName: 'z-20 w-full',
|
|
@@ -28,7 +28,18 @@ const definition: ThemeDefinition = {
|
|
|
28
28
|
accentForeground: '224.3 17.6% 25.7%',
|
|
29
29
|
border: '230 5.1% 76.9%',
|
|
30
30
|
input: '230 5.1% 76.9%',
|
|
31
|
-
ring: '226.7 10.1% 82.5%'
|
|
31
|
+
ring: '226.7 10.1% 82.5%',
|
|
32
|
+
header: '226.7 12.3% 85.7%',
|
|
33
|
+
headerForeground: '224.3 17.6% 25.7%',
|
|
34
|
+
headerBorder: '230 5.1% 76.9%',
|
|
35
|
+
sidebar: '226.7 12.3% 85.7%',
|
|
36
|
+
sidebarForeground: '224.3 17.6% 25.7%',
|
|
37
|
+
sidebarBorder: '230 5.1% 76.9%',
|
|
38
|
+
sidebarAccent: '231.4 16.3% 91.6%',
|
|
39
|
+
sidebarAccentForeground: '224.3 17.6% 25.7%',
|
|
40
|
+
footer: '226.7 12.3% 85.7%',
|
|
41
|
+
footerForeground: '224.3 17.6% 25.7%',
|
|
42
|
+
footerBorder: '230 5.1% 76.9%'
|
|
32
43
|
},
|
|
33
44
|
},
|
|
34
45
|
dark: {
|
|
@@ -51,7 +62,18 @@ const definition: ThemeDefinition = {
|
|
|
51
62
|
accentForeground: '229.3 35.4% 75.1%',
|
|
52
63
|
border: '240 11.1% 7.1%',
|
|
53
64
|
input: '240 14.3% 6.9%',
|
|
54
|
-
ring: '233.3 19.1% 18.4%'
|
|
65
|
+
ring: '233.3 19.1% 18.4%',
|
|
66
|
+
header: '240 15.4% 10.2%',
|
|
67
|
+
headerForeground: '232.7 13.9% 53.5%',
|
|
68
|
+
headerBorder: '240 11.1% 7.1%',
|
|
69
|
+
sidebar: '240 15.4% 10.2%',
|
|
70
|
+
sidebarForeground: '232.7 13.9% 53.5%',
|
|
71
|
+
sidebarBorder: '240 11.1% 7.1%',
|
|
72
|
+
sidebarAccent: '235.4 18.8% 13.5%',
|
|
73
|
+
sidebarAccentForeground: '229.3 35.4% 75.1%',
|
|
74
|
+
footer: '240 15.4% 10.2%',
|
|
75
|
+
footerForeground: '232.7 13.9% 53.5%',
|
|
76
|
+
footerBorder: '240 11.1% 7.1%'
|
|
55
77
|
},
|
|
56
78
|
},
|
|
57
79
|
},
|
package/themes/tokyo-night.ts
CHANGED
|
@@ -28,7 +28,18 @@ const definition: ThemeDefinition = {
|
|
|
28
28
|
accentForeground: '224.3 17.6% 25.7%',
|
|
29
29
|
border: '230 5.1% 76.9%',
|
|
30
30
|
input: '230 5.1% 76.9%',
|
|
31
|
-
ring: '226.7 10.1% 82.5%'
|
|
31
|
+
ring: '226.7 10.1% 82.5%',
|
|
32
|
+
header: '226.7 12.3% 85.7%',
|
|
33
|
+
headerForeground: '224.3 17.6% 25.7%',
|
|
34
|
+
headerBorder: '230 5.1% 76.9%',
|
|
35
|
+
sidebar: '226.7 12.3% 85.7%',
|
|
36
|
+
sidebarForeground: '224.3 17.6% 25.7%',
|
|
37
|
+
sidebarBorder: '230 5.1% 76.9%',
|
|
38
|
+
sidebarAccent: '231.4 16.3% 91.6%',
|
|
39
|
+
sidebarAccentForeground: '224.3 17.6% 25.7%',
|
|
40
|
+
footer: '226.7 12.3% 85.7%',
|
|
41
|
+
footerForeground: '224.3 17.6% 25.7%',
|
|
42
|
+
footerBorder: '230 5.1% 76.9%'
|
|
32
43
|
},
|
|
33
44
|
},
|
|
34
45
|
dark: {
|
|
@@ -51,7 +62,18 @@ const definition: ThemeDefinition = {
|
|
|
51
62
|
accentForeground: '229.3 35.4% 75.1%',
|
|
52
63
|
border: '240 11.1% 7.1%',
|
|
53
64
|
input: '240 14.3% 6.9%',
|
|
54
|
-
ring: '233.3 19.1% 18.4%'
|
|
65
|
+
ring: '233.3 19.1% 18.4%',
|
|
66
|
+
header: '240 15.4% 10.2%',
|
|
67
|
+
headerForeground: '232.7 13.9% 53.5%',
|
|
68
|
+
headerBorder: '240 11.1% 7.1%',
|
|
69
|
+
sidebar: '240 15.4% 10.2%',
|
|
70
|
+
sidebarForeground: '232.7 13.9% 53.5%',
|
|
71
|
+
sidebarBorder: '240 11.1% 7.1%',
|
|
72
|
+
sidebarAccent: '235.4 18.8% 13.5%',
|
|
73
|
+
sidebarAccentForeground: '229.3 35.4% 75.1%',
|
|
74
|
+
footer: '240 15.4% 10.2%',
|
|
75
|
+
footerForeground: '232.7 13.9% 53.5%',
|
|
76
|
+
footerBorder: '240 11.1% 7.1%'
|
|
55
77
|
},
|
|
56
78
|
},
|
|
57
79
|
},
|
|
@@ -28,7 +28,18 @@ const definition: ThemeDefinition = {
|
|
|
28
28
|
accentForeground: '0 0% 23.1%',
|
|
29
29
|
border: '0 0% 89.8%',
|
|
30
30
|
input: '0 0% 80.8%',
|
|
31
|
-
ring: '209 100% 36.1%'
|
|
31
|
+
ring: '209 100% 36.1%',
|
|
32
|
+
header: '0 0% 97.3%',
|
|
33
|
+
headerForeground: '0 0% 11.8%',
|
|
34
|
+
headerBorder: '0 0% 89.8%',
|
|
35
|
+
sidebar: '0 0% 97.3%',
|
|
36
|
+
sidebarForeground: '0 0% 23.1%',
|
|
37
|
+
sidebarBorder: '0 0% 89.8%',
|
|
38
|
+
sidebarAccent: '230.8 31.7% 92%',
|
|
39
|
+
sidebarAccentForeground: '0 0% 23.1%',
|
|
40
|
+
footer: '0 0% 97.3%',
|
|
41
|
+
footerForeground: '0 0% 23.1%',
|
|
42
|
+
footerBorder: '0 0% 89.8%'
|
|
32
43
|
},
|
|
33
44
|
},
|
|
34
45
|
dark: {
|
|
@@ -51,7 +62,18 @@ const definition: ThemeDefinition = {
|
|
|
51
62
|
accentForeground: '0 0% 80%',
|
|
52
63
|
border: '0 0% 16.9%',
|
|
53
64
|
input: '0 0% 23.5%',
|
|
54
|
-
ring: '206 100% 41.6%'
|
|
65
|
+
ring: '206 100% 41.6%',
|
|
66
|
+
header: '0 0% 9.4%',
|
|
67
|
+
headerForeground: '0 0% 80%',
|
|
68
|
+
headerBorder: '0 0% 16.9%',
|
|
69
|
+
sidebar: '0 0% 9.4%',
|
|
70
|
+
sidebarForeground: '0 0% 80%',
|
|
71
|
+
sidebarBorder: '0 0% 16.9%',
|
|
72
|
+
sidebarAccent: '240 5.2% 22.7%',
|
|
73
|
+
sidebarAccentForeground: '0 0% 80%',
|
|
74
|
+
footer: '0 0% 9.4%',
|
|
75
|
+
footerForeground: '0 0% 80%',
|
|
76
|
+
footerBorder: '0 0% 16.9%'
|
|
55
77
|
},
|
|
56
78
|
},
|
|
57
79
|
},
|
|
@@ -28,7 +28,18 @@ const definition: ThemeDefinition = {
|
|
|
28
28
|
accentForeground: '0 0% 38%',
|
|
29
29
|
border: '0 0% 82.7%',
|
|
30
30
|
input: '0 0% 80.8%',
|
|
31
|
-
ring: '204.1 100% 47.3%'
|
|
31
|
+
ring: '204.1 100% 47.3%',
|
|
32
|
+
header: '0 0% 86.7%',
|
|
33
|
+
headerForeground: '0 0% 20%',
|
|
34
|
+
headerBorder: '0 0% 86.7%',
|
|
35
|
+
sidebar: '0 0% 95.3%',
|
|
36
|
+
sidebarForeground: '0 0% 38%',
|
|
37
|
+
sidebarBorder: '0 0% 95.3%',
|
|
38
|
+
sidebarAccent: '230.8 31.7% 92%',
|
|
39
|
+
sidebarAccentForeground: '0 0% 38%',
|
|
40
|
+
footer: '204.1 100% 40%',
|
|
41
|
+
footerForeground: '0 0% 100%',
|
|
42
|
+
footerBorder: '204.1 100% 40%'
|
|
32
43
|
},
|
|
33
44
|
},
|
|
34
45
|
dark: {
|
|
@@ -51,7 +62,18 @@ const definition: ThemeDefinition = {
|
|
|
51
62
|
accentForeground: '0 0% 80%',
|
|
52
63
|
border: '0 0% 27.1%',
|
|
53
64
|
input: '0 0% 23.5%',
|
|
54
|
-
ring: '204.1 100% 41.6%'
|
|
65
|
+
ring: '204.1 100% 41.6%',
|
|
66
|
+
header: '0 0% 23.5%',
|
|
67
|
+
headerForeground: '0 0% 80%',
|
|
68
|
+
headerBorder: '0 0% 23.5%',
|
|
69
|
+
sidebar: '240 1.3% 14.7%',
|
|
70
|
+
sidebarForeground: '0 0% 80%',
|
|
71
|
+
sidebarBorder: '240 1.3% 14.7%',
|
|
72
|
+
sidebarAccent: '240 5.2% 22.7%',
|
|
73
|
+
sidebarAccentForeground: '0 0% 80%',
|
|
74
|
+
footer: '204.1 100% 40%',
|
|
75
|
+
footerForeground: '0 0% 100%',
|
|
76
|
+
footerBorder: '204.1 100% 40%'
|
|
55
77
|
},
|
|
56
78
|
},
|
|
57
79
|
},
|
|
@@ -28,7 +28,18 @@ const definition: ThemeDefinition = {
|
|
|
28
28
|
accentForeground: '0 0% 23.1%',
|
|
29
29
|
border: '0 0% 89.8%',
|
|
30
30
|
input: '0 0% 80.8%',
|
|
31
|
-
ring: '209 100% 36.1%'
|
|
31
|
+
ring: '209 100% 36.1%',
|
|
32
|
+
header: '0 0% 97.3%',
|
|
33
|
+
headerForeground: '0 0% 11.8%',
|
|
34
|
+
headerBorder: '0 0% 89.8%',
|
|
35
|
+
sidebar: '0 0% 97.3%',
|
|
36
|
+
sidebarForeground: '0 0% 23.1%',
|
|
37
|
+
sidebarBorder: '0 0% 89.8%',
|
|
38
|
+
sidebarAccent: '230.8 31.7% 92%',
|
|
39
|
+
sidebarAccentForeground: '0 0% 23.1%',
|
|
40
|
+
footer: '0 0% 97.3%',
|
|
41
|
+
footerForeground: '0 0% 23.1%',
|
|
42
|
+
footerBorder: '0 0% 89.8%'
|
|
32
43
|
},
|
|
33
44
|
},
|
|
34
45
|
dark: {
|
|
@@ -51,7 +62,18 @@ const definition: ThemeDefinition = {
|
|
|
51
62
|
accentForeground: '0 0% 80%',
|
|
52
63
|
border: '0 0% 16.9%',
|
|
53
64
|
input: '0 0% 23.5%',
|
|
54
|
-
ring: '206 100% 41.6%'
|
|
65
|
+
ring: '206 100% 41.6%',
|
|
66
|
+
header: '0 0% 9.4%',
|
|
67
|
+
headerForeground: '0 0% 80%',
|
|
68
|
+
headerBorder: '0 0% 16.9%',
|
|
69
|
+
sidebar: '0 0% 9.4%',
|
|
70
|
+
sidebarForeground: '0 0% 80%',
|
|
71
|
+
sidebarBorder: '0 0% 16.9%',
|
|
72
|
+
sidebarAccent: '240 5.2% 22.7%',
|
|
73
|
+
sidebarAccentForeground: '0 0% 80%',
|
|
74
|
+
footer: '0 0% 9.4%',
|
|
75
|
+
footerForeground: '0 0% 80%',
|
|
76
|
+
footerBorder: '0 0% 16.9%'
|
|
55
77
|
},
|
|
56
78
|
},
|
|
57
79
|
},
|
|
@@ -28,7 +28,18 @@ const definition: ThemeDefinition = {
|
|
|
28
28
|
accentForeground: '0 0% 38%',
|
|
29
29
|
border: '0 0% 82.7%',
|
|
30
30
|
input: '0 0% 80.8%',
|
|
31
|
-
ring: '204.1 100% 47.3%'
|
|
31
|
+
ring: '204.1 100% 47.3%',
|
|
32
|
+
header: '0 0% 86.7%',
|
|
33
|
+
headerForeground: '0 0% 20%',
|
|
34
|
+
headerBorder: '0 0% 86.7%',
|
|
35
|
+
sidebar: '0 0% 95.3%',
|
|
36
|
+
sidebarForeground: '0 0% 38%',
|
|
37
|
+
sidebarBorder: '0 0% 95.3%',
|
|
38
|
+
sidebarAccent: '230.8 31.7% 92%',
|
|
39
|
+
sidebarAccentForeground: '0 0% 38%',
|
|
40
|
+
footer: '204.1 100% 40%',
|
|
41
|
+
footerForeground: '0 0% 100%',
|
|
42
|
+
footerBorder: '204.1 100% 40%'
|
|
32
43
|
},
|
|
33
44
|
},
|
|
34
45
|
dark: {
|
|
@@ -51,7 +62,18 @@ const definition: ThemeDefinition = {
|
|
|
51
62
|
accentForeground: '0 0% 80%',
|
|
52
63
|
border: '0 0% 27.1%',
|
|
53
64
|
input: '0 0% 23.5%',
|
|
54
|
-
ring: '204.1 100% 41.6%'
|
|
65
|
+
ring: '204.1 100% 41.6%',
|
|
66
|
+
header: '0 0% 23.5%',
|
|
67
|
+
headerForeground: '0 0% 80%',
|
|
68
|
+
headerBorder: '0 0% 23.5%',
|
|
69
|
+
sidebar: '240 1.3% 14.7%',
|
|
70
|
+
sidebarForeground: '0 0% 80%',
|
|
71
|
+
sidebarBorder: '240 1.3% 14.7%',
|
|
72
|
+
sidebarAccent: '240 5.2% 22.7%',
|
|
73
|
+
sidebarAccentForeground: '0 0% 80%',
|
|
74
|
+
footer: '204.1 100% 40%',
|
|
75
|
+
footerForeground: '0 0% 100%',
|
|
76
|
+
footerBorder: '204.1 100% 40%'
|
|
55
77
|
},
|
|
56
78
|
},
|
|
57
79
|
},
|