From b541340ca59b8c1037f590574d1d98a7f58dd525 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Sun, 30 Nov 2025 23:09:40 +0000 Subject: [PATCH] update --- ts/index.ts | 5 +- ts_web/elements/idp-registration-stepper.ts | 250 ++++++++++++++++++-- 2 files changed, 228 insertions(+), 27 deletions(-) diff --git a/ts/index.ts b/ts/index.ts index fdafd49..88ca382 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -14,10 +14,7 @@ export const runCli = async () => { const reception = new Reception({ name: (await serviceQenv.getEnvVarOnDemand('INSTANCE_NAME')) || 'idp.global', mongoDescriptor: { - mongoDbUser: await serviceQenv.getEnvVarOnDemand('MONGO_DB_USER'), - mongoDbName: await serviceQenv.getEnvVarOnDemand('MONGO_DB_NAME'), - mongoDbPass: await serviceQenv.getEnvVarOnDemand('MONGO_DB_PASS'), - mongoDbUrl: await serviceQenv.getEnvVarOnDemand('MONGO_DB_URL'), + mongoDbUrl: await serviceQenv.getEnvVarOnDemand('MONGODB_URL'), }, websiteServer: websiteServer, baseUrl: await serviceQenv.getEnvVarOnDemand('IDP_BASEURL'), diff --git a/ts_web/elements/idp-registration-stepper.ts b/ts_web/elements/idp-registration-stepper.ts index 2b90129..0fcf35d 100644 --- a/ts_web/elements/idp-registration-stepper.ts +++ b/ts_web/elements/idp-registration-stepper.ts @@ -34,54 +34,250 @@ export class IdpRegistrationStepper extends DeesElement { cssManager.defaultStyles, css` :host { - --foreground: hsl(0 0% 98%); - --muted-foreground: hsl(240 5% 64.9%); --background: hsl(240 10% 3.9%); + --foreground: hsl(0 0% 98%); + --muted: hsl(240 3.7% 15.9%); + --muted-foreground: hsl(240 5% 64.9%); + --border: hsl(240 3.7% 15.9%); - display: block; - color: var(--foreground); font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, sans-serif; - } - - .main { position: absolute; - top: 0px; - right: 0px; - left: 0px; - bottom: 0px; - display: flex; - justify-content: center; - align-items: center; + width: 100%; + height: 100%; background: var(--background); + color: var(--foreground); } - .stepper-container { + .split-container { + position: absolute; + top: 0; + left: 0; width: 100%; - max-width: 480px; - padding: 48px 24px; + height: 100%; + display: grid; + grid-template-columns: 45% 55%; + } + + /* Left Panel - Branding */ + .brand-panel { + background: linear-gradient(135deg, hsl(240 10% 8%) 0%, hsl(240 10% 4%) 50%, hsl(240 12% 6%) 100%); + display: flex; + flex-direction: column; + justify-content: center; + padding: 48px; + position: relative; + overflow: hidden; + } + + .brand-panel::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: radial-gradient(ellipse at 30% 20%, hsla(240 20% 20% / 0.3) 0%, transparent 50%), + radial-gradient(ellipse at 70% 80%, hsla(240 20% 15% / 0.2) 0%, transparent 50%); + pointer-events: none; + } + + .brand-content { + position: relative; + z-index: 1; + max-width: 400px; + } + + .logo { + font-family: 'Cal Sans', 'Geist Sans', sans-serif; + font-size: 42px; + font-weight: 600; + color: var(--foreground); + margin: 0 0 12px 0; + letter-spacing: -0.02em; + } + + .tagline { + font-size: 18px; + color: var(--muted-foreground); + margin: 0 0 48px 0; + line-height: 1.5; + } + + .features { + display: flex; + flex-direction: column; + gap: 28px; + } + + .feature { + display: flex; + align-items: flex-start; + gap: 16px; + } + + .feature-icon { + width: 40px; + height: 40px; + border-radius: 10px; + background: hsla(240 10% 20% / 0.5); + border: 1px solid hsla(240 10% 30% / 0.3); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + } + + .feature-icon dees-icon { + color: var(--muted-foreground); + font-size: 18px; + } + + .feature-text h3 { + font-size: 15px; + font-weight: 600; + color: var(--foreground); + margin: 0 0 4px 0; + } + + .feature-text p { + font-size: 14px; + color: var(--muted-foreground); + margin: 0; + line-height: 1.4; + } + + .learn-more { + margin-top: 48px; + } + + /* Right Panel - Stepper */ + .stepper-panel { + background: linear-gradient(-255deg, #06152280 -3.35%, #939eff38 32.79%, #22578480 67.41%, #06152280 97.48%), #212121; + position: relative; + overflow: hidden; + } + + .stepper-content { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow-y: auto; } .error-message { + display: flex; + align-items: center; + justify-content: center; + height: 100%; text-align: center; color: var(--muted-foreground); font-size: 14px; line-height: 1.6; - padding: 24px; + } + + .spinner-container { + display: flex; + align-items: center; + justify-content: center; + height: 100%; } dees-stepper { --dees-stepper-background: transparent; + height: 100%; + } + + /* Mobile Responsive */ + @media (max-width: 900px) { + .split-container { + grid-template-columns: 1fr; + grid-template-rows: auto 1fr; + } + + .brand-panel { + padding: 32px 24px; + min-height: auto; + } + + .brand-content { + max-width: 100%; + } + + .logo { + font-size: 32px; + } + + .tagline { + font-size: 16px; + margin-bottom: 24px; + } + + .features { + display: none; + } } `, ]; public render(): TemplateResult { return html` -
-
- ${this.usedSubTemplate - ? this.usedSubTemplate - : html``} +
+ +
+
+

idp.global

+

Your permanent identity on the web

+ +
+
+
+ +
+
+

Open Source

+

Fully transparent, community-driven, no vendor lock-in

+
+
+ +
+
+ +
+
+

Always Free

+

Free for individuals and organizations. Paid support available for SLAs

+
+
+ +
+
+ +
+
+

Permanent Identity

+

One identity across all your applications

+
+
+
+ +
+ window.open('https://about.idp.global', '_blank')} + >Learn more +
+
+
+ + +
+
+ ${this.usedSubTemplate + ? this.usedSubTemplate + : html`
`} +
`; @@ -310,4 +506,12 @@ export class IdpRegistrationStepper extends DeesElement { >`; await this.domtools.convenience.smartdelay.delayFor(100); } + + public async show() { + await this.updateComplete; + } + + public async hide() { + await this.updateComplete; + } }