@oussemasahbeni/keycloakify-login-shadcn 250004.0.7 → 250004.0.8
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/keycloak-theme/components/langauges.tsx +1 -1
- package/keycloak-theme/components/theme-toggle.tsx +0 -1
- package/keycloak-theme/components/ui/alert.tsx +1 -2
- package/keycloak-theme/components/ui/button.tsx +1 -2
- package/keycloak-theme/components/ui/card.tsx +0 -1
- package/keycloak-theme/components/ui/checkbox.tsx +0 -1
- package/keycloak-theme/components/ui/dropdown-menu.tsx +14 -4
- package/keycloak-theme/components/ui/field.tsx +0 -1
- package/keycloak-theme/components/ui/input-otp.tsx +0 -1
- package/keycloak-theme/components/ui/input.tsx +0 -1
- package/keycloak-theme/components/ui/label.tsx +1 -2
- package/keycloak-theme/components/ui/radio-group.tsx +0 -1
- package/keycloak-theme/components/ui/select.tsx +12 -4
- package/keycloak-theme/components/ui/separator.tsx +0 -1
- package/keycloak-theme/components/ui/tooltip.tsx +0 -1
- package/keycloak-theme/login/KcPage.tsx +2 -4
- package/keycloak-theme/login/components/LogoutOtherSessions.tsx +3 -5
- package/keycloak-theme/login/components/PasswordWrapper.tsx +4 -4
- package/keycloak-theme/login/components/Template/Template.tsx +108 -56
- package/keycloak-theme/login/components/UserProfileFormFields/AddRemoveButtonsMultiValuedAttribute.tsx +7 -3
- package/keycloak-theme/login/components/UserProfileFormFields/FieldErrors.tsx +8 -4
- package/keycloak-theme/login/components/UserProfileFormFields/GroupLabel.tsx +33 -14
- package/keycloak-theme/login/components/UserProfileFormFields/InputFieldByType.tsx +9 -2
- package/keycloak-theme/login/components/UserProfileFormFields/InputLabel.tsx +0 -1
- package/keycloak-theme/login/components/UserProfileFormFields/InputTag.tsx +25 -8
- package/keycloak-theme/login/components/UserProfileFormFields/InputTagSelects.tsx +30 -16
- package/keycloak-theme/login/components/UserProfileFormFields/SelectTag.tsx +32 -11
- package/keycloak-theme/login/components/UserProfileFormFields/TextareaTag.tsx +19 -7
- package/keycloak-theme/login/components/UserProfileFormFields/UserProfileFormFields.tsx +11 -5
- package/keycloak-theme/login/mocks/KcPageStory.tsx +6 -2
- package/keycloak-theme/login/pages/PageIndex.tsx +0 -4
- package/keycloak-theme/login/pages/code/Page.stories.tsx +4 -5
- package/keycloak-theme/login/pages/code/Page.tsx +6 -6
- package/keycloak-theme/login/pages/delete-account-confirm/Page.stories.tsx +0 -2
- package/keycloak-theme/login/pages/delete-account-confirm/Page.tsx +3 -6
- package/keycloak-theme/login/pages/delete-credential/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/delete-credential/Page.tsx +11 -6
- package/keycloak-theme/login/pages/error/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/error/Page.tsx +13 -12
- package/keycloak-theme/login/pages/frontchannel-logout/Page.tsx +2 -4
- package/keycloak-theme/login/pages/idp-review-user-profile/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/idp-review-user-profile/Page.tsx +2 -5
- package/keycloak-theme/login/pages/info/Page.tsx +8 -6
- package/keycloak-theme/login/pages/link-idp-action/Page.tsx +5 -3
- package/keycloak-theme/login/pages/login/Form.tsx +52 -52
- package/keycloak-theme/login/pages/login/Page.stories.tsx +4 -3
- package/keycloak-theme/login/pages/login/Page.tsx +0 -1
- package/keycloak-theme/login/pages/login/SocialProviders.tsx +8 -22
- package/keycloak-theme/login/pages/login-config-totp/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-config-totp/Page.tsx +25 -12
- package/keycloak-theme/login/pages/login-idp-link-confirm/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-idp-link-confirm/Page.tsx +4 -7
- package/keycloak-theme/login/pages/login-idp-link-confirm-override/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-idp-link-confirm-override/Page.tsx +4 -7
- package/keycloak-theme/login/pages/login-idp-link-email/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-idp-link-email/Page.tsx +4 -7
- package/keycloak-theme/login/pages/login-oauth-grant/Page.tsx +21 -11
- package/keycloak-theme/login/pages/login-oauth2-device-verify-user-code/Page.tsx +5 -7
- package/keycloak-theme/login/pages/login-otp/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-otp/Page.tsx +35 -26
- package/keycloak-theme/login/pages/login-page-expired/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-page-expired/Page.tsx +4 -6
- package/keycloak-theme/login/pages/login-passkeys-conditional-authenticate/Page.tsx +153 -96
- package/keycloak-theme/login/pages/login-password/Page.tsx +14 -15
- package/keycloak-theme/login/pages/login-password/useScript.tsx +0 -1
- package/keycloak-theme/login/pages/login-recovery-authn-code-config/Page.tsx +5 -8
- package/keycloak-theme/login/pages/login-recovery-authn-code-input/Page.tsx +2 -3
- package/keycloak-theme/login/pages/login-reset-otp/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-reset-otp/Page.tsx +3 -4
- package/keycloak-theme/login/pages/login-reset-password/Form.tsx +5 -6
- package/keycloak-theme/login/pages/login-reset-password/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-reset-password/Page.tsx +3 -3
- package/keycloak-theme/login/pages/login-update-password/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-update-password/Page.tsx +5 -7
- package/keycloak-theme/login/pages/login-update-profile/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-update-profile/Page.tsx +6 -7
- package/keycloak-theme/login/pages/login-username/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-username/Page.tsx +6 -6
- package/keycloak-theme/login/pages/login-verify-email/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-verify-email/Page.tsx +3 -4
- package/keycloak-theme/login/pages/login-x509-info/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/login-x509-info/Page.tsx +3 -6
- package/keycloak-theme/login/pages/logout-confirm/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/logout-confirm/Page.tsx +3 -6
- package/keycloak-theme/login/pages/register/Form.tsx +8 -7
- package/keycloak-theme/login/pages/register/Page.stories.tsx +17 -8
- package/keycloak-theme/login/pages/register/TermsAcceptance.tsx +6 -7
- package/keycloak-theme/login/pages/saml-post-form/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/saml-post-form/Page.tsx +4 -6
- package/keycloak-theme/login/pages/select-authenticator/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/select-authenticator/Page.tsx +3 -6
- package/keycloak-theme/login/pages/select-organization/Page.tsx +5 -8
- package/keycloak-theme/login/pages/terms/Page.tsx +1 -3
- package/keycloak-theme/login/pages/update-email/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/update-email/Page.tsx +6 -7
- package/keycloak-theme/login/pages/webauthn-authenticate/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/webauthn-authenticate/Page.tsx +50 -46
- package/keycloak-theme/login/pages/webauthn-error/Page.stories.tsx +2 -5
- package/keycloak-theme/login/pages/webauthn-error/Page.tsx +3 -6
- package/keycloak-theme/login/pages/webauthn-register/Page.stories.tsx +0 -1
- package/keycloak-theme/login/pages/webauthn-register/Page.tsx +4 -4
- package/keycloak-theme/login/styleLevelCustomization.tsx +4 -6
- package/keycloak-theme/public/site.webmanifest +11 -1
- package/package.json +2 -2
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
import { Button } from "@/components/ui/button";
|
|
2
2
|
import { Input } from "@/components/ui/input";
|
|
3
|
-
import { useI18n } from
|
|
4
|
-
import { useKcContext } from
|
|
5
|
-
import { useKcClsx } from
|
|
3
|
+
import { useI18n } from "@/login/i18n";
|
|
4
|
+
import { useKcContext } from "@/login/KcContext";
|
|
5
|
+
import { useKcClsx } from "@keycloakify/login-ui/useKcClsx";
|
|
6
6
|
import { clsx } from "keycloakify/tools/clsx";
|
|
7
7
|
import { Fingerprint, Shield } from "lucide-react";
|
|
8
8
|
import { Fragment } from "react";
|
|
9
9
|
import { assert } from "tsafe/assert";
|
|
10
10
|
import { Template } from "../../components/Template";
|
|
11
|
-
import { useScript } from
|
|
11
|
+
import { useScript } from "./useScript";
|
|
12
12
|
|
|
13
13
|
export function Page() {
|
|
14
|
-
|
|
15
14
|
const { kcContext } = useKcContext();
|
|
16
15
|
assert(kcContext.pageId === "webauthn-authenticate.ftl");
|
|
17
16
|
|
|
18
17
|
const { kcClsx } = useKcClsx();
|
|
19
18
|
|
|
20
|
-
const {
|
|
19
|
+
const {
|
|
20
|
+
url,
|
|
21
|
+
realm,
|
|
22
|
+
registrationDisabled,
|
|
23
|
+
authenticators,
|
|
24
|
+
shouldDisplayAuthenticators
|
|
25
|
+
} = kcContext;
|
|
21
26
|
|
|
22
27
|
const { msg, msgStr, advancedMsg } = useI18n();
|
|
23
28
|
|
|
@@ -25,7 +30,6 @@ export function Page() {
|
|
|
25
30
|
|
|
26
31
|
useScript({ webAuthnButtonId });
|
|
27
32
|
|
|
28
|
-
|
|
29
33
|
return (
|
|
30
34
|
<Template
|
|
31
35
|
displayInfo={realm.registrationAllowed && !registrationDisabled}
|
|
@@ -127,46 +131,46 @@ export function Page() {
|
|
|
127
131
|
{authenticator.transports
|
|
128
132
|
.displayNameProperties
|
|
129
133
|
?.length && (
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
134
|
+
<div
|
|
135
|
+
id={`kc-webauthn-authenticator-transport-${i}`}
|
|
136
|
+
className="text-xs text-muted-foreground mt-1"
|
|
137
|
+
>
|
|
138
|
+
{authenticator.transports.displayNameProperties
|
|
139
|
+
.map(
|
|
140
|
+
(
|
|
141
|
+
displayNameProperty,
|
|
142
|
+
i,
|
|
143
|
+
arr
|
|
144
|
+
) => ({
|
|
145
|
+
displayNameProperty,
|
|
146
|
+
hasNext:
|
|
147
|
+
i !==
|
|
148
|
+
arr.length - 1
|
|
149
|
+
})
|
|
150
|
+
)
|
|
151
|
+
.map(
|
|
152
|
+
({
|
|
153
|
+
displayNameProperty,
|
|
154
|
+
hasNext
|
|
155
|
+
}) => (
|
|
156
|
+
<Fragment
|
|
157
|
+
key={
|
|
158
|
+
displayNameProperty
|
|
159
|
+
}
|
|
160
|
+
>
|
|
161
|
+
{advancedMsg(
|
|
162
|
+
displayNameProperty
|
|
163
|
+
)}
|
|
164
|
+
{hasNext && (
|
|
165
|
+
<span>
|
|
166
|
+
,{" "}
|
|
167
|
+
</span>
|
|
168
|
+
)}
|
|
169
|
+
</Fragment>
|
|
146
170
|
)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
hasNext
|
|
151
|
-
}) => (
|
|
152
|
-
<Fragment
|
|
153
|
-
key={
|
|
154
|
-
displayNameProperty
|
|
155
|
-
}
|
|
156
|
-
>
|
|
157
|
-
{advancedMsg(
|
|
158
|
-
displayNameProperty
|
|
159
|
-
)}
|
|
160
|
-
{hasNext && (
|
|
161
|
-
<span>
|
|
162
|
-
,{" "}
|
|
163
|
-
</span>
|
|
164
|
-
)}
|
|
165
|
-
</Fragment>
|
|
166
|
-
)
|
|
167
|
-
)}
|
|
168
|
-
</div>
|
|
169
|
-
)}
|
|
171
|
+
)}
|
|
172
|
+
</div>
|
|
173
|
+
)}
|
|
170
174
|
|
|
171
175
|
<div className="text-xs text-muted-foreground mt-1">
|
|
172
176
|
<span
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createKcPageStory, type Meta, type StoryObj } from "../../mocks/KcPageStory";
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
const { KcPageStory } = createKcPageStory({ pageId: "webauthn-error.ftl" });
|
|
5
4
|
|
|
6
5
|
const meta = {
|
|
@@ -69,8 +68,7 @@ export const WithAppInitiatedAction: Story = {
|
|
|
69
68
|
},
|
|
70
69
|
isAppInitiatedAction: true,
|
|
71
70
|
message: {
|
|
72
|
-
summary:
|
|
73
|
-
"WebAuthn authentication failed. You can try again or cancel.",
|
|
71
|
+
summary: "WebAuthn authentication failed. You can try again or cancel.",
|
|
74
72
|
type: "error"
|
|
75
73
|
}
|
|
76
74
|
}
|
|
@@ -91,8 +89,7 @@ export const WithJavaScriptDisabled: Story = {
|
|
|
91
89
|
},
|
|
92
90
|
isAppInitiatedAction: false,
|
|
93
91
|
message: {
|
|
94
|
-
summary:
|
|
95
|
-
"JavaScript is disabled or not working. Please retry manually.",
|
|
92
|
+
summary: "JavaScript is disabled or not working. Please retry manually.",
|
|
96
93
|
type: "warning"
|
|
97
94
|
}
|
|
98
95
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Button } from "@/components/ui/button";
|
|
2
|
-
import { useI18n } from
|
|
3
|
-
import { useKcContext } from
|
|
2
|
+
import { useI18n } from "@/login/i18n";
|
|
3
|
+
import { useKcContext } from "@/login/KcContext";
|
|
4
4
|
import { assert } from "tsafe/assert";
|
|
5
5
|
import { Template } from "../../components/Template";
|
|
6
6
|
|
|
@@ -13,10 +13,7 @@ export function Page() {
|
|
|
13
13
|
const { msg, msgStr } = useI18n();
|
|
14
14
|
|
|
15
15
|
return (
|
|
16
|
-
<Template
|
|
17
|
-
displayMessage
|
|
18
|
-
headerNode={msg("webauthn-error-title")}
|
|
19
|
-
>
|
|
16
|
+
<Template displayMessage headerNode={msg("webauthn-error-title")}>
|
|
20
17
|
<div className="space-y-4">
|
|
21
18
|
<form
|
|
22
19
|
id="kc-error-credential-form"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Button } from "@/components/ui/button";
|
|
2
|
-
import { LogoutOtherSessions } from
|
|
3
|
-
import { useI18n } from
|
|
4
|
-
import { useKcContext } from
|
|
2
|
+
import { LogoutOtherSessions } from "@/login/components/LogoutOtherSessions";
|
|
3
|
+
import { useI18n } from "@/login/i18n";
|
|
4
|
+
import { useKcContext } from "@/login/KcContext";
|
|
5
5
|
import { assert } from "tsafe/assert";
|
|
6
6
|
import { Template } from "../../components/Template";
|
|
7
|
-
import { useScript } from
|
|
7
|
+
import { useScript } from "./useScript";
|
|
8
8
|
|
|
9
9
|
export function Page() {
|
|
10
10
|
const { kcContext } = useKcContext();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ThemeProvider } from
|
|
1
|
+
import { ThemeProvider } from "@/components/theme-provider";
|
|
2
2
|
import type { ClassKey } from "@keycloakify/login-ui/useKcClsx";
|
|
3
3
|
import type { ReactNode } from "react";
|
|
4
|
-
import { useKcContext } from
|
|
5
|
-
import { getTheme } from
|
|
4
|
+
import { useKcContext } from "./KcContext";
|
|
5
|
+
import { getTheme } from "./shared/getColorScheme";
|
|
6
6
|
|
|
7
7
|
type Classes = { [key in ClassKey]?: string };
|
|
8
8
|
|
|
@@ -19,7 +19,6 @@ function Provider(props: { children: ReactNode }) {
|
|
|
19
19
|
|
|
20
20
|
const { kcContext } = useKcContext();
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
return (
|
|
24
23
|
<ThemeProvider defaultTheme={getTheme(kcContext.darkMode)}>
|
|
25
24
|
{children}
|
|
@@ -27,10 +26,9 @@ function Provider(props: { children: ReactNode }) {
|
|
|
27
26
|
);
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
|
|
31
29
|
export function useStyleLevelCustomization(): StyleLevelCustomization {
|
|
32
30
|
return {
|
|
33
31
|
doUseDefaultCss: false,
|
|
34
32
|
Provider
|
|
35
33
|
};
|
|
36
|
-
}
|
|
34
|
+
}
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "",
|
|
3
|
+
"short_name": "",
|
|
4
|
+
"icons": [
|
|
5
|
+
{ "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
|
|
6
|
+
{ "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
|
|
7
|
+
],
|
|
8
|
+
"theme_color": "#ffffff",
|
|
9
|
+
"background_color": "#ffffff",
|
|
10
|
+
"display": "standalone"
|
|
11
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oussemasahbeni/keycloakify-login-shadcn",
|
|
3
|
-
"version": "250004.0.
|
|
3
|
+
"version": "250004.0.8",
|
|
4
4
|
"description": "Keycloakify Shadcn Theme extensions",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"keycloak-theme"
|
|
14
14
|
],
|
|
15
15
|
"peerDependencies": {
|
|
16
|
+
"@keycloakify/login-ui": "~250004.6.5",
|
|
16
17
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
17
18
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
18
19
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
@@ -28,7 +29,6 @@
|
|
|
28
29
|
"clsx": "^2.1.1",
|
|
29
30
|
"cmdk": "^1.1.1",
|
|
30
31
|
"input-otp": "^1.4.2",
|
|
31
|
-
"@keycloakify/login-ui": "~250004.6.5",
|
|
32
32
|
"lucide-react": "^0.473.0",
|
|
33
33
|
"react-icons": "^5.5.0",
|
|
34
34
|
"tailwind-merge": "^2.6.0",
|