Skip to content

Commit c1722e1

Browse files
committed
Add a jwt-skills banner
1 parent e5b52cd commit c1722e1

10 files changed

Lines changed: 320 additions & 14 deletions

File tree

package-lock.json

Lines changed: 21 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public.key

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
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
50+
=eAMi
51+
-----END PGP PUBLIC KEY BLOCK-----

src/features/home/components/assets/assets.component.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { Button } from "react-aria-components";
1919
import { ArrowHeadIconComponent } from "@/features/common/assets/arrow-head-icon.component";
2020
import { Auth0DictionaryModel } from "@/features/localization/models/auth0-dictionary.model";
2121
import { Auth0CtaComponent } from "@/features/common/components/auth0-cta/auth0-cta.component";
22+
import { SkillsCtaComponent } from "./skills-cta.component";
2223

2324
type AssetsComponentProps = {
2425
languageCode: string;
@@ -63,6 +64,10 @@ export const AssetsComponent: React.FC<AssetsComponentProps> = ({
6364
languageCode={languageCode}
6465
dictionary={auth0Dictionary.banner}
6566
/>
67+
<SkillsCtaComponent
68+
languageCode={languageCode}
69+
dictionary={jwtDictionary.skills}
70+
/>
6671
</div>
6772
);
6873
};

src/features/home/components/assets/assets.module.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
width: calc(100% - 2rem);
2929
max-width: 1312px;
3030
margin: 0 auto;
31-
grid-row-gap: unset;
32-
row-gap: unset;
31+
row-gap: 1rem;
3332
}
3433

3534
}
@@ -52,6 +51,7 @@
5251
}
5352
}
5453

54+
5555
.assets__title {
5656
width: 100%;
5757
margin: 0;
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import React from "react";
2+
import { JwtDictionaryModel } from "@/features/localization/models/jwt-dictionary.model";
3+
import { CardWithHeadlineComponent } from "@/features/common/components/card/card.component";
4+
import { CardToolbarComponent } from "@/features/common/components/card-toolbar/card-toolbar.component";
5+
import { CardToolbarCopyButtonComponent } from "@/features/common/components/card-toolbar-buttons/card-toolbar-copy-button/card-toolbar-copy-button.component";
6+
7+
const COMMAND = "npx skills add jsonwebtoken/jwt-skills";
8+
const COMMAND_SPECIFIC = "npx skills add jsonwebtoken/jwt-skills -s jwt-decode";
9+
10+
const labelStyle: React.CSSProperties = {
11+
fontSize: "0.75rem",
12+
lineHeight: "1.25rem",
13+
opacity: 0.6,
14+
};
15+
16+
interface Props {
17+
languageCode: string;
18+
dictionary: JwtDictionaryModel["skills"];
19+
}
20+
21+
export const SkillsCardComponent: React.FC<Props> = ({ languageCode, dictionary }) => {
22+
return (
23+
<CardWithHeadlineComponent
24+
sectionHeadline={null}
25+
id="skills-card"
26+
languageCode={languageCode}
27+
title="Terminal"
28+
compactTitle="Terminal"
29+
hasHeaderIcon
30+
options={null}
31+
slots={{
32+
toolbar: (
33+
<CardToolbarComponent ariaLabel="Skills command toolbar">
34+
<CardToolbarCopyButtonComponent
35+
languageCode={languageCode}
36+
value={COMMAND}
37+
/>
38+
</CardToolbarComponent>
39+
),
40+
}}
41+
messages={null}
42+
>
43+
<p style={labelStyle}>{dictionary.installAllSkills}</p>
44+
<code>{"$ " + COMMAND}</code>
45+
<p style={{ ...labelStyle, marginTop: "0.75rem" }}>{dictionary.installSpecificSkill}</p>
46+
<code>{"$ " + COMMAND_SPECIFIC}</code>
47+
</CardWithHeadlineComponent>
48+
);
49+
};

0 commit comments

Comments
 (0)