Compare commits
7 commits
main
...
update/acc
Author | SHA1 | Date | |
---|---|---|---|
8d31cb45fd | |||
095a0d0032 | |||
a726dbdeca | |||
4f1b8d053a | |||
2c624712cc | |||
060fdfeda6 | |||
Jakob Hoefker | 59db0b2f02 |
18
hakken_log.md
Normal file
18
hakken_log.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# hakken
|
||||||
|
## 27.04.2024
|
||||||
|
This file can be deleted once these goals are achieved.
|
||||||
|
|
||||||
|
### goals
|
||||||
|
* Create styles for unstyled page areas
|
||||||
|
|
||||||
|
### planned steps
|
||||||
|
[x] copy and import sass styles that were used in the past
|
||||||
|
[x] enable sass
|
||||||
|
[x] apply styles
|
||||||
|
[] build jar file
|
||||||
|
|
||||||
|
### obstacles
|
||||||
|
There are no stories available for the areas that actually require styles.
|
||||||
|
In our opinion it makes more sense for the keycloakify team to provide working stories before we continue.
|
||||||
|
|
||||||
|
We gave it a try importing the stories from the keycloakify repo (not the starter) but that didn't work.
|
|
@ -46,6 +46,7 @@
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"eslint-plugin-react-refresh": "^0.4.5",
|
"eslint-plugin-react-refresh": "^0.4.5",
|
||||||
"eslint-plugin-storybook": "^0.8.0",
|
"eslint-plugin-storybook": "^0.8.0",
|
||||||
|
"sass": "^1.75.0",
|
||||||
"storybook": "^8.0.2",
|
"storybook": "^8.0.2",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.2.2",
|
||||||
"vite": "^5.0.8",
|
"vite": "^5.0.8",
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { usePrepareTemplate } from "keycloakify/lib/usePrepareTemplate";
|
||||||
import { type TemplateProps } from "keycloakify/login/TemplateProps";
|
import { type TemplateProps } from "keycloakify/login/TemplateProps";
|
||||||
import type { KcContext } from "./kcContext";
|
import type { KcContext } from "./kcContext";
|
||||||
import type { I18n } from "./i18n";
|
import type { I18n } from "./i18n";
|
||||||
|
import "../resources/styles/scss/index.scss";
|
||||||
|
|
||||||
export default function Template(props: TemplateProps<KcContext, I18n>) {
|
export default function Template(props: TemplateProps<KcContext, I18n>) {
|
||||||
const {
|
const {
|
||||||
|
@ -46,133 +47,134 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (<>
|
return (
|
||||||
<header className="ps-header">
|
<div className="ps-background">
|
||||||
{realm.internationalizationEnabled && (assert(locale !== undefined), true) && locale.supported.length > 1 && (
|
<header className="ps-header">
|
||||||
<div id="kc-locale">
|
{realm.internationalizationEnabled && (assert(locale !== undefined), true) && locale.supported.length > 1 && (
|
||||||
<div id="kc-locale-wrapper" className="ps-locale-dropdown">
|
<div id="kc-locale">
|
||||||
<div className="ps-dropdown" id="kc-locale-dropdown">
|
<div id="kc-locale-wrapper" className="ps-locale-dropdown">
|
||||||
<a href="#" id="kc-current-locale-link">
|
<div className="ps-dropdown" id="kc-locale-dropdown">
|
||||||
{labelBySupportedLanguageTag[currentLanguageTag]}
|
<a href="#" id="kc-current-locale-link">
|
||||||
</a>
|
{labelBySupportedLanguageTag[currentLanguageTag]}
|
||||||
<ul>
|
</a>
|
||||||
{locale.supported.map(({ languageTag }) => (
|
<ul>
|
||||||
<li key={languageTag} className="ps-dropdown-item">
|
{locale.supported.map(({ languageTag }) => (
|
||||||
<a href="#" onClick={() => changeLocale(languageTag)}>
|
<li key={languageTag} className="ps-dropdown-item">
|
||||||
{labelBySupportedLanguageTag[languageTag]}
|
<a href="#" onClick={() => changeLocale(languageTag)}>
|
||||||
</a>
|
{labelBySupportedLanguageTag[languageTag]}
|
||||||
</li>
|
</a>
|
||||||
))}
|
</li>
|
||||||
</ul>
|
))}
|
||||||
</div>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
</div>
|
||||||
{!(auth !== undefined && auth.showUsername && !auth.showResetCredentials) ? (
|
)}
|
||||||
displayRequiredFields ? (
|
{!(auth !== undefined && auth.showUsername && !auth.showResetCredentials) ? (
|
||||||
<div className="ps-required-fields">
|
displayRequiredFields ? (
|
||||||
<div className="ps-required-fields--field">
|
<div className="ps-required-fields">
|
||||||
<span className="subtitle">
|
<div className="ps-required-fields--field">
|
||||||
<span className="required">*</span>
|
<span className="subtitle">
|
||||||
{msg("requiredFields")}
|
<span className="required">*</span>
|
||||||
</span>
|
{msg("requiredFields")}
|
||||||
</div>
|
</span>
|
||||||
<div className="col-md-10">
|
</div>
|
||||||
<h1 id="kc-page-title">{headerNode}</h1>
|
<div className="col-md-10">
|
||||||
</div>
|
<h1 id="kc-page-title">{headerNode}</h1>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
</div>
|
||||||
<h1 id="kc-page-title">{headerNode}</h1>
|
) : (
|
||||||
)
|
<h1 id="kc-page-title">{headerNode}</h1>
|
||||||
) : displayRequiredFields ? (
|
)
|
||||||
<div className="ps-content">
|
) : displayRequiredFields ? (
|
||||||
<div className="ps-required">
|
<div className="ps-content">
|
||||||
<span className="subtitle">
|
<div className="ps-required">
|
||||||
<span className="required">*</span> {msg("requiredFields")}
|
<span className="subtitle">
|
||||||
</span>
|
<span className="required">*</span> {msg("requiredFields")}
|
||||||
</div>
|
</span>
|
||||||
<div className="col-md-10">
|
</div>
|
||||||
{showUsernameNode}
|
<div className="col-md-10">
|
||||||
<div className="ps-form-group">
|
{showUsernameNode}
|
||||||
<div id="kc-username">
|
<div className="ps-form-group">
|
||||||
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
<div id="kc-username">
|
||||||
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
||||||
<div className="kc-login-tooltip">
|
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
||||||
<i className="ps-icon ps-icon_restart-flow"></i>
|
<div className="kc-login-tooltip">
|
||||||
<span className="kc-tooltip-text">{msg("restartLoginTooltip")}</span>
|
<i className="ps-icon ps-icon_restart-flow"></i>
|
||||||
</div>
|
<span className="kc-tooltip-text">{msg("restartLoginTooltip")}</span>
|
||||||
</a>
|
</div>
|
||||||
</div>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
</div>
|
||||||
<>
|
) : (
|
||||||
{showUsernameNode}
|
<>
|
||||||
<div className="ps-form-group">
|
{showUsernameNode}
|
||||||
<div id="kc-username">
|
<div className="ps-form-group">
|
||||||
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
<div id="kc-username">
|
||||||
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
||||||
<div className="kc-login-tooltip">
|
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
||||||
<i className="ps-icon ps-icon_restart-flow"></i>
|
<div className="kc-login-tooltip">
|
||||||
<span className="kc-tooltip-text">{msg("restartLoginTooltip")}</span>
|
<i className="ps-icon ps-icon_restart-flow"></i>
|
||||||
</div>
|
<span className="kc-tooltip-text">{msg("restartLoginTooltip")}</span>
|
||||||
</a>
|
</div>
|
||||||
</div>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</div>
|
||||||
)}
|
</>
|
||||||
</header>
|
)}
|
||||||
<div id="kc-content">
|
</header>
|
||||||
<div id="kc-content-wrapper">
|
<div id="kc-content">
|
||||||
{/* App-initiated actions should not see warning messages about the need to complete the action during login. */}
|
<div id="kc-content-wrapper">
|
||||||
{displayMessage && message !== undefined && (message.type !== "warning" || !isAppInitiatedAction) && (
|
{/* App-initiated actions should not see warning messages about the need to complete the action during login. */}
|
||||||
<div className={clsx("alert", `alert-${message.type}`)}>
|
{displayMessage && message !== undefined && (message.type !== "warning" || !isAppInitiatedAction) && (
|
||||||
{message.type === "success" && <span className={getClassName("kcFeedbackSuccessIcon")}></span>}
|
<div className={clsx("alert", `alert-${message.type}`)}>
|
||||||
{message.type === "warning" && <span className={getClassName("kcFeedbackWarningIcon")}></span>}
|
{message.type === "success" && <span className={getClassName("kcFeedbackSuccessIcon")}></span>}
|
||||||
{message.type === "error" && <span className={getClassName("kcFeedbackErrorIcon")}></span>}
|
{message.type === "warning" && <span className={getClassName("kcFeedbackWarningIcon")}></span>}
|
||||||
{message.type === "info" && <span className={getClassName("kcFeedbackInfoIcon")}></span>}
|
{message.type === "error" && <span className={getClassName("kcFeedbackErrorIcon")}></span>}
|
||||||
<span
|
{message.type === "info" && <span className={getClassName("kcFeedbackInfoIcon")}></span>}
|
||||||
className="kc-feedback-text"
|
<span
|
||||||
dangerouslySetInnerHTML={{
|
className="kc-feedback-text"
|
||||||
"__html": message.summary
|
dangerouslySetInnerHTML={{
|
||||||
}}
|
"__html": message.summary
|
||||||
/>
|
}}
|
||||||
</div>
|
/>
|
||||||
)}
|
</div>
|
||||||
{children}
|
)}
|
||||||
{auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && (
|
{children}
|
||||||
<form
|
{auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && (
|
||||||
id="kc-select-try-another-way-form"
|
<form
|
||||||
action={url.loginAction}
|
id="kc-select-try-another-way-form"
|
||||||
method="post"
|
action={url.loginAction}
|
||||||
>
|
method="post"
|
||||||
<div>
|
>
|
||||||
<div className="ps-form-group">
|
<div>
|
||||||
<input type="hidden" name="tryAnotherWay" value="on" />
|
<div className="ps-form-group">
|
||||||
<a
|
<input type="hidden" name="tryAnotherWay" value="on" />
|
||||||
href="#"
|
<a
|
||||||
id="try-another-way"
|
href="#"
|
||||||
onClick={() => {
|
id="try-another-way"
|
||||||
document.forms["kc-select-try-another-way-form" as never].submit();
|
onClick={() => {
|
||||||
return false;
|
document.forms["kc-select-try-another-way-form" as never].submit();
|
||||||
}}
|
return false;
|
||||||
>
|
}}
|
||||||
{msg("doTryAnotherWay")}
|
>
|
||||||
</a>
|
{msg("doTryAnotherWay")}
|
||||||
</div>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</div>
|
||||||
)}
|
</form>
|
||||||
{displayInfo && (
|
)}
|
||||||
<div id="kc-info">
|
{displayInfo && (
|
||||||
<div id="kc-info-wrapper">
|
<div id="kc-info">
|
||||||
{infoNode}
|
<div id="kc-info-wrapper">
|
||||||
</div>
|
{infoNode}
|
||||||
</div>
|
</div>
|
||||||
)}
|
</div>
|
||||||
</div>
|
)}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
27
src/keycloak-theme/resources/styles/scss/background.scss
Normal file
27
src/keycloak-theme/resources/styles/scss/background.scss
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
.ps-background {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
&--logo {
|
||||||
|
width: 100px;
|
||||||
|
margin: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--1312 {
|
||||||
|
transform: rotate(34deg);
|
||||||
|
transform-origin: center center;
|
||||||
|
color: #eee;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1;
|
||||||
|
top: -50vh;
|
||||||
|
left: -50vw;
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 7rem;
|
||||||
|
line-height: 6rem;
|
||||||
|
width: 200vw;
|
||||||
|
height: 200vh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
32
src/keycloak-theme/resources/styles/scss/button.scss
Normal file
32
src/keycloak-theme/resources/styles/scss/button.scss
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
.ps-button {
|
||||||
|
font-size: 1rem;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
line-height: 1.2em;
|
||||||
|
border: 0.125em solid var(--foreground);
|
||||||
|
border-radius: 1.5em;
|
||||||
|
background-color: var(--background-darker-2);
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
border-color: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
&_primary {
|
||||||
|
border: 0.25em solid var(--foreground);
|
||||||
|
background-color: var(--background);
|
||||||
|
color: var(--foreground);
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--foreground);
|
||||||
|
color: var(--background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&_small {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
padding: 0.25em 0.7em;
|
||||||
|
}
|
||||||
|
}
|
19
src/keycloak-theme/resources/styles/scss/card.scss
Normal file
19
src/keycloak-theme/resources/styles/scss/card.scss
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.ps-card {
|
||||||
|
background-color: var(--background);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
border: 1rem solid var(--foreground);
|
||||||
|
|
||||||
|
&--header {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--title {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--body {
|
||||||
|
padding: 0rem 2rem;
|
||||||
|
}
|
||||||
|
}
|
10
src/keycloak-theme/resources/styles/scss/container.scss
Normal file
10
src/keycloak-theme/resources/styles/scss/container.scss
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
.ps-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 1.25rem;
|
||||||
|
}
|
||||||
|
}
|
19
src/keycloak-theme/resources/styles/scss/footer.scss
Normal file
19
src/keycloak-theme/resources/styles/scss/footer.scss
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.ps-footer {
|
||||||
|
display: flex;
|
||||||
|
margin-top: auto;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
&--link {
|
||||||
|
&:hover {
|
||||||
|
text-shadow: 0.2vw 0px 0px var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 700px) {
|
||||||
|
font-size: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1000px) {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
src/keycloak-theme/resources/styles/scss/form-group.scss
Normal file
21
src/keycloak-theme/resources/styles/scss/form-group.scss
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
.ps-form-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
&--label {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
display: flex;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ps-button {
|
||||||
|
align-self: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--error {
|
||||||
|
margin-top: 0.25rem;
|
||||||
|
color: var(--accent);
|
||||||
|
font-weight: bold;
|
||||||
|
// font-family: monospace;
|
||||||
|
}
|
||||||
|
}
|
54
src/keycloak-theme/resources/styles/scss/header.scss
Normal file
54
src/keycloak-theme/resources/styles/scss/header.scss
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.ps-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
overflow-x: auto;
|
||||||
|
z-index: 100;
|
||||||
|
|
||||||
|
&--title {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
padding: 0 1rem;
|
||||||
|
margin: 0;
|
||||||
|
border-bottom: 0.5rem solid var(--foreground);
|
||||||
|
background-color: var(--background);
|
||||||
|
border-right: 0.5rem solid var(--foreground);
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--i18n {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--nav {
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 0.5rem solid var(--foreground);
|
||||||
|
border-left: 0.5rem solid var(--foreground);
|
||||||
|
background-color: var(--background);
|
||||||
|
padding-left: 1rem;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--nav-list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--nav-item {
|
||||||
|
margin: 0;
|
||||||
|
margin-right: 1rem;
|
||||||
|
|
||||||
|
&-action {
|
||||||
|
color: var(--foreground);
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
src/keycloak-theme/resources/styles/scss/homelink.scss
Normal file
25
src/keycloak-theme/resources/styles/scss/homelink.scss
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
.ps-homelink {
|
||||||
|
pointer-events: all;
|
||||||
|
color: var(--foreground);
|
||||||
|
background: white;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 24px;
|
||||||
|
padding: 8px;
|
||||||
|
line-height: 1em;
|
||||||
|
text-shadow: 0.15vw 0px 0px white;
|
||||||
|
transition: text-shadow 0.1s ease;
|
||||||
|
border: 12px solid black;
|
||||||
|
border-top: 0;
|
||||||
|
border-left: 0;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
text-shadow: 0.3vw 0px 0px var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
font-size: 32px;
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
}
|
18
src/keycloak-theme/resources/styles/scss/i18n-links.scss
Normal file
18
src/keycloak-theme/resources/styles/scss/i18n-links.scss
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.ps-i18n-links {
|
||||||
|
display: flex;
|
||||||
|
margin: 0;
|
||||||
|
pointer-events: all;
|
||||||
|
color: var(--foreground);
|
||||||
|
background: white;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 24px;
|
||||||
|
padding: 8px;
|
||||||
|
line-height: 1em;
|
||||||
|
text-shadow: 0.15vw 0px 0px var(--background);
|
||||||
|
transition: text-shadow 0.1s ease;
|
||||||
|
border: 12px solid var(--foreground);
|
||||||
|
border-top: 0;
|
||||||
|
border-right: 0;
|
||||||
|
}
|
54
src/keycloak-theme/resources/styles/scss/index.scss
Normal file
54
src/keycloak-theme/resources/styles/scss/index.scss
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
--accent: #ed1c24;
|
||||||
|
--foreground: #000;
|
||||||
|
--foreground-lighter-1: rgba(0, 0, 0, 0.7);
|
||||||
|
--foreground-lighter-2: rgba(0, 0, 0, 0.3);
|
||||||
|
--background: #fff;
|
||||||
|
--background-darker-1: #f5f5f5;
|
||||||
|
--background-darker-2: #eeeeee;
|
||||||
|
|
||||||
|
font-family: 'Open Sans', Arial, sans-serif;
|
||||||
|
font-weight: 800;
|
||||||
|
background: var(--background);
|
||||||
|
color: var(--foreground);
|
||||||
|
-ms-text-size-adjust: 100%;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*:focus-visible {
|
||||||
|
outline: 0.2rem solid var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@import './container';
|
||||||
|
@import './link';
|
||||||
|
@import './card';
|
||||||
|
@import './button';
|
||||||
|
@import './input';
|
||||||
|
@import './table';
|
||||||
|
@import './form-group';
|
||||||
|
|
||||||
|
@import './homelink';
|
||||||
|
@import './i18n-links';
|
||||||
|
@import './main';
|
||||||
|
@import './header';
|
||||||
|
@import './page';
|
||||||
|
@import './login-flow-pre';
|
||||||
|
@import './section-nav';
|
||||||
|
@import './logo';
|
||||||
|
@import './background';
|
||||||
|
@import './footer';
|
23
src/keycloak-theme/resources/styles/scss/input.scss
Normal file
23
src/keycloak-theme/resources/styles/scss/input.scss
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
.ps-input {
|
||||||
|
padding: 0.5rem 0.5rem;
|
||||||
|
border: 2px solid var(--foreground-lighter-1);
|
||||||
|
font-size: 1.2rem;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
border-color: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
color: var(--background);
|
||||||
|
background-color: var(--foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
background-color: var(--background-darker-2);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--foreground-lighter-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
src/keycloak-theme/resources/styles/scss/link.scss
Normal file
11
src/keycloak-theme/resources/styles/scss/link.scss
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
.ps-link {
|
||||||
|
cursor: pointer;
|
||||||
|
color: var(--accent);
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
transition: border-bottom 0.1s ease;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-bottom: 4px solid var(--accent);
|
||||||
|
}
|
||||||
|
}
|
16
src/keycloak-theme/resources/styles/scss/login-flow-pre.scss
Normal file
16
src/keycloak-theme/resources/styles/scss/login-flow-pre.scss
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
.ps-login-flow-pre {
|
||||||
|
margin: 2rem;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
border-bottom: 0.25rem solid var(--foreground);
|
||||||
|
padding-bottom: 0.25rem;
|
||||||
|
|
||||||
|
&--selected {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--cancel {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
45
src/keycloak-theme/resources/styles/scss/logo.scss
Normal file
45
src/keycloak-theme/resources/styles/scss/logo.scss
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
.ps-logo {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
width: 100px;
|
||||||
|
|
||||||
|
&--base {
|
||||||
|
animation-name: rotate;
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-play-state: paused;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
animation-play-state: running;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2n) &--base { animation-delay: -0.1s; }
|
||||||
|
&:nth-child(3n) &--base { animation-delay: -0.3s; }
|
||||||
|
&:nth-child(5n) &--base { animation-delay: -0.5s; }
|
||||||
|
&:nth-child(7n) &--base { animation-delay: -7s; }
|
||||||
|
&:nth-child(11n) &--base { animation-delay: -0.9s; }
|
||||||
|
&:nth-child(13n) &--base { animation-delay: -1s; }
|
||||||
|
|
||||||
|
&--base::before {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
content: '';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes rotate {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
37
src/keycloak-theme/resources/styles/scss/main.scss
Normal file
37
src/keycloak-theme/resources/styles/scss/main.scss
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
.ps-main {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 10vw;
|
||||||
|
padding-bottom: 2vw;
|
||||||
|
overflow: auto;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&--background {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--page {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_full {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_full &--page {
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
src/keycloak-theme/resources/styles/scss/nav.scss
Normal file
3
src/keycloak-theme/resources/styles/scss/nav.scss
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.ps-nav {
|
||||||
|
display: flex;
|
||||||
|
}
|
150
src/keycloak-theme/resources/styles/scss/page.scss
Normal file
150
src/keycloak-theme/resources/styles/scss/page.scss
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
.ps-page {
|
||||||
|
display: flex;
|
||||||
|
width: 100vw;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
padding-top: 4rem;
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
padding: 1vw;
|
||||||
|
padding-top: 4rem;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_home {
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--header {
|
||||||
|
width: 100%;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: auto;
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--title {
|
||||||
|
font-size: 2rem;
|
||||||
|
border-bottom: 0.5rem solid var(--foreground);
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
margin: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--section {
|
||||||
|
border: 12px solid black;
|
||||||
|
margin-top: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
max-width: 700px;
|
||||||
|
flex-basis: 100%;
|
||||||
|
flex-shrink: 1;
|
||||||
|
pointer-events: all;
|
||||||
|
color: var(--foreground);
|
||||||
|
background: var(--background);
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
hyphens: auto;
|
||||||
|
pointer-events: all;
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
margin: 1vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_home {
|
||||||
|
padding: 5vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_full {
|
||||||
|
max-width: unset;
|
||||||
|
width: calc(100vw - 1.6rem);
|
||||||
|
margin: 0.8rem;
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
width: 96vw;
|
||||||
|
margin: 1vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--accent);
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
transition: border-bottom 0.1s ease;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-bottom: 4px solid var(--accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 230px;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--section-link {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
background-color: var(--background);
|
||||||
|
padding: 1rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
text-align: right;
|
||||||
|
padding-left: 132px;
|
||||||
|
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
display: none;
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-icon {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--section-contents {
|
||||||
|
margin: 2rem;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.4;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 5vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre,
|
||||||
|
code {
|
||||||
|
background-color: var(--background-darker-2);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
border: 1px solid var(--foreground-lighter-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
> * {
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .ps-table {
|
||||||
|
margin-top: 1rem;
|
||||||
|
|
||||||
|
+ * {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> h2, h3, h4 {
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
38
src/keycloak-theme/resources/styles/scss/section-nav.scss
Normal file
38
src/keycloak-theme/resources/styles/scss/section-nav.scss
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
.ps-section-nav {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
background-color: var(--background);
|
||||||
|
border-bottom: 2px solid var(--foreground);
|
||||||
|
overflow-x: auto;
|
||||||
|
|
||||||
|
&--list {
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
position: sticky;
|
||||||
|
margin: 0 -0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--link {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
a {
|
||||||
|
padding: 1rem 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_active {
|
||||||
|
a {
|
||||||
|
color: var(--foreground);
|
||||||
|
border-bottom: 4px solid var(--foreground);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--foreground);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
35
src/keycloak-theme/resources/styles/scss/table.scss
Normal file
35
src/keycloak-theme/resources/styles/scss/table.scss
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
.ps-table {
|
||||||
|
overflow: auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-left: -0.25rem;
|
||||||
|
width: calc(100% + 0.25rem);
|
||||||
|
|
||||||
|
td, th {
|
||||||
|
padding: 0.1rem 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr {
|
||||||
|
border: 0;
|
||||||
|
border-left: 0.25rem solid transparent;
|
||||||
|
|
||||||
|
&:nth-child(2n) {
|
||||||
|
background-color: var(--background-darker-1);
|
||||||
|
border-left: 0.25rem solid var(--background-darker-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--background-darker-2);
|
||||||
|
border-color: var(--accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
thead tr {
|
||||||
|
border-bottom: 4px solid var(--foreground-lighter-1);
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead td, th {
|
||||||
|
padding: 0.1rem 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
322
src/keycloak-theme/resources/styles/scss/typography.scss
Normal file
322
src/keycloak-theme/resources/styles/scss/typography.scss
Normal file
|
@ -0,0 +1,322 @@
|
||||||
|
/* To regenerate this file, run $ google-font-downloader 'https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,800;1,400;1,800&display=swap' */
|
||||||
|
|
||||||
|
/* cyrillic-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
// }
|
||||||
|
// /* cyrillic */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
// }
|
||||||
|
// /* greek-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+1F00-1FFF;
|
||||||
|
// }
|
||||||
|
// /* greek */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0370-03FF;
|
||||||
|
// }
|
||||||
|
// /* hebrew */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||||
|
// }
|
||||||
|
// /* vietnamese */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
// }
|
||||||
|
// /* latin-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
// }
|
||||||
|
// /* latin */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
// }
|
||||||
|
// /* cyrillic-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
// }
|
||||||
|
// /* cyrillic */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
// }
|
||||||
|
// /* greek-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+1F00-1FFF;
|
||||||
|
// }
|
||||||
|
// /* greek */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0370-03FF;
|
||||||
|
// }
|
||||||
|
// /* hebrew */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||||
|
// }
|
||||||
|
// /* vietnamese */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
// }
|
||||||
|
// /* latin-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
// }
|
||||||
|
// /* latin */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: italic;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
// }
|
||||||
|
// /* cyrillic-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
// }
|
||||||
|
// /* cyrillic */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
// }
|
||||||
|
// /* greek-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+1F00-1FFF;
|
||||||
|
// }
|
||||||
|
// /* greek */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0370-03FF;
|
||||||
|
// }
|
||||||
|
// /* hebrew */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||||
|
// }
|
||||||
|
// /* vietnamese */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
// }
|
||||||
|
// /* latin-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
// }
|
||||||
|
// /* latin */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 400;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
// }
|
||||||
|
// /* cyrillic-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
// }
|
||||||
|
// /* cyrillic */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
// }
|
||||||
|
// /* greek-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+1F00-1FFF;
|
||||||
|
// }
|
||||||
|
// /* greek */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0370-03FF;
|
||||||
|
// }
|
||||||
|
// /* hebrew */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
|
||||||
|
// }
|
||||||
|
// /* vietnamese */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
// }
|
||||||
|
// /* latin-ext */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
// }
|
||||||
|
// /* latin */
|
||||||
|
// @font-face {
|
||||||
|
// font-family: 'Open Sans';
|
||||||
|
// font-style: normal;
|
||||||
|
// font-weight: 800;
|
||||||
|
// font-stretch: 100%;
|
||||||
|
// font-display: swap;
|
||||||
|
// src: url(fonts/opensans/v34/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format('woff2');
|
||||||
|
// unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
// }
|
21
yarn.lock
21
yarn.lock
|
@ -3421,7 +3421,7 @@ cheerio@^1.0.0-rc.5:
|
||||||
parse5 "^7.0.0"
|
parse5 "^7.0.0"
|
||||||
parse5-htmlparser2-tree-adapter "^7.0.0"
|
parse5-htmlparser2-tree-adapter "^7.0.0"
|
||||||
|
|
||||||
chokidar@^3.5.3:
|
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
|
||||||
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
|
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
|
||||||
|
@ -4941,6 +4941,11 @@ ignore@^5.2.0, ignore@^5.2.4:
|
||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
|
||||||
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
|
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
|
||||||
|
|
||||||
|
immutable@^4.0.0:
|
||||||
|
version "4.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0"
|
||||||
|
integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==
|
||||||
|
|
||||||
import-fresh@^3.2.1:
|
import-fresh@^3.2.1:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||||
|
@ -6839,6 +6844,15 @@ safe-buffer@5.2.1, safe-buffer@~5.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
|
sass@^1.75.0:
|
||||||
|
version "1.75.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c"
|
||||||
|
integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==
|
||||||
|
dependencies:
|
||||||
|
chokidar ">=3.0.0 <4.0.0"
|
||||||
|
immutable "^4.0.0"
|
||||||
|
source-map-js ">=0.6.2 <2.0.0"
|
||||||
|
|
||||||
scheduler@^0.23.0:
|
scheduler@^0.23.0:
|
||||||
version "0.23.0"
|
version "0.23.0"
|
||||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
|
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
|
||||||
|
@ -6989,6 +7003,11 @@ socks@^2.6.2:
|
||||||
ip-address "^9.0.5"
|
ip-address "^9.0.5"
|
||||||
smart-buffer "^4.2.0"
|
smart-buffer "^4.2.0"
|
||||||
|
|
||||||
|
"source-map-js@>=0.6.2 <2.0.0":
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
||||||
|
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
||||||
|
|
||||||
source-map-js@^1.0.2:
|
source-map-js@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
||||||
|
|
Loading…
Reference in a new issue