@design.estate/dees-catalog 9.3.0 → 9.4.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.
Files changed (29) hide show
  1. package/dist_bundle/bundle.js +1372 -2727
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +2 -1
  5. package/dist_ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.js +4 -2
  6. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.d.ts +11 -9
  7. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.demo.d.ts +2 -2
  8. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.demo.js +148 -319
  9. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +60 -279
  10. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.d.ts +25 -10
  11. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.demo.d.ts +3 -4
  12. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.demo.js +229 -388
  13. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +253 -813
  14. package/dist_ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.demo.d.ts +2 -0
  15. package/dist_ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.demo.js +150 -389
  16. package/dist_ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.js +67 -11
  17. package/package.json +1 -1
  18. package/readme.hints.md +26 -0
  19. package/readme.md +76 -15
  20. package/scripts/bdtheme-baseline.json +0 -2
  21. package/ts_web/00_commitinfo_data.ts +1 -1
  22. package/ts_web/elements/00group-button/dees-button/dees-button.ts +1 -0
  23. package/ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.ts +3 -1
  24. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.demo.ts +67 -332
  25. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +65 -322
  26. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.demo.ts +136 -382
  27. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +224 -872
  28. package/ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.demo.ts +116 -421
  29. package/ts_web/elements/00group-simple/dees-simple-login/dees-simple-login.ts +66 -10
@@ -1 +1,3 @@
1
+ import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
2
+ import '../../00group-input/dees-input-multitoggle/dees-input-multitoggle.js';
1
3
  export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;
@@ -32,68 +32,23 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { html, css, cssManager, customElement, state, DeesElement } from '@design.estate/dees-element';
35
+ import { html, css, cssManager, customElement, state, DeesElement, directives } from '@design.estate/dees-element';
36
36
  import { themeDefaultStyles } from '../../00theme.js';
37
- /**
38
- * The catalog carries no third-party brand assets, so provider icons are always supplied by
39
- * the consumer. These are neutral Lucide stand-ins for what a real deployment would pass.
40
- */
41
- const demoProviders = [
37
+ import { demoPage } from '../../../demos/templates.js';
38
+ import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
39
+ import '../../00group-input/dees-input-multitoggle/dees-input-multitoggle.js';
40
+ const providers = [
41
+ { id: 'workspace', label: 'Workspace account', icon: 'lucide:building2' },
42
42
  { id: 'idp-global', label: 'idp.global', icon: 'lucide:shieldCheck' },
43
- { id: 'workspace', label: 'Workspace SSO', icon: 'lucide:building2' },
44
- { id: 'email-link', label: 'Email link', icon: 'lucide:mail' },
45
43
  ];
46
- const manyProviders = [
47
- ...demoProviders,
48
- { id: 'security-key', label: 'Security key', icon: 'lucide:usb' },
49
- { id: 'smartcard', label: 'Smartcard', icon: 'lucide:idCard' },
50
- { id: 'legacy-ldap', label: 'LDAP', icon: 'lucide:network', disabled: true },
51
- ];
52
- const delay = (msArg) => new Promise((resolve) => window.setTimeout(resolve, msArg));
53
44
  const variants = [
54
- {
55
- key: 'legacy',
56
- title: 'Default (password only)',
57
- description: 'No new properties set. This is the pre-existing component: username, password, the ' +
58
- 'legacy `login` event and nothing else.',
59
- },
60
- {
61
- key: 'full',
62
- title: 'Passkey + providers + password',
63
- description: 'Handler mode. Every method has its own busy and error state — the passkey handler ' +
64
- 'below always rejects, and the password form stays untouched by it.',
65
- },
66
- {
67
- key: 'passkeyOnly',
68
- title: 'Passkey only',
69
- description: '`.passkey=${true} .password=${false}` — no credential fallback at all.',
70
- },
71
- {
72
- key: 'enrollment',
73
- title: 'Passkey enrollment + sign in',
74
- description: "`.passkeyIntents=${['authenticate', 'register']}` renders both ceremonies. " +
75
- 'This is what Onebox hand-rolls today.',
76
- },
77
- {
78
- key: 'providerOnly',
79
- title: 'Providers only',
80
- description: 'A pure OIDC surface. The provider handler resolves after a short delay.',
81
- },
82
- {
83
- key: 'manyProviders',
84
- title: 'Six providers',
85
- description: 'Four or more providers pair up into two columns instead of growing the card. The ' +
86
- 'last one is `disabled`.',
87
- },
88
- {
89
- key: 'eventMode',
90
- title: 'Event mode (no handlers)',
91
- description: 'No handler properties. The component dispatches `passkey-login` / `provider-login` ' +
92
- 'and the demo drives busy and error state through `setBusy()` and `reportError()`.',
93
- },
45
+ { key: 'full', option: 'All sign-in methods' }, { key: 'password', option: 'Password only' },
46
+ { key: 'passkey', option: 'Passkey only' }, { key: 'enroll', option: 'Passkey enrollment' },
47
+ { key: 'providers', option: 'Identity providers' }, { key: 'many', option: 'Six providers' },
48
+ { key: 'events', option: 'Consumer-managed events' }, { key: 'unavailable', option: 'Unavailable passkey' },
94
49
  ];
95
- let DeesSimpleLoginDemo = (() => {
96
- let _classDecorators = [customElement('dees-simple-login-demo')];
50
+ let DeesDemoSimpleLogin = (() => {
51
+ let _classDecorators = [customElement('dees-demo-simple-login')];
97
52
  let _classDescriptor;
98
53
  let _classExtraInitializers = [];
99
54
  let _classThis;
@@ -101,356 +56,162 @@ let DeesSimpleLoginDemo = (() => {
101
56
  let _variant_decorators;
102
57
  let _variant_initializers = [];
103
58
  let _variant_extraInitializers = [];
104
- let _log_decorators;
105
- let _log_initializers = [];
106
- let _log_extraInitializers = [];
107
- var DeesSimpleLoginDemo = class extends _classSuper {
59
+ let _outcome_decorators;
60
+ let _outcome_initializers = [];
61
+ let _outcome_extraInitializers = [];
62
+ let _revision_decorators;
63
+ let _revision_initializers = [];
64
+ let _revision_extraInitializers = [];
65
+ let _result_decorators;
66
+ let _result_initializers = [];
67
+ let _result_extraInitializers = [];
68
+ var DeesDemoSimpleLogin = class extends _classSuper {
108
69
  static { _classThis = this; }
109
70
  static {
110
71
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
111
72
  _variant_decorators = [state()];
112
- _log_decorators = [state()];
73
+ _outcome_decorators = [state()];
74
+ _revision_decorators = [state()];
75
+ _result_decorators = [state()];
113
76
  __esDecorate(this, null, _variant_decorators, { kind: "accessor", name: "variant", static: false, private: false, access: { has: obj => "variant" in obj, get: obj => obj.variant, set: (obj, value) => { obj.variant = value; } }, metadata: _metadata }, _variant_initializers, _variant_extraInitializers);
114
- __esDecorate(this, null, _log_decorators, { kind: "accessor", name: "log", static: false, private: false, access: { has: obj => "log" in obj, get: obj => obj.log, set: (obj, value) => { obj.log = value; } }, metadata: _metadata }, _log_initializers, _log_extraInitializers);
77
+ __esDecorate(this, null, _outcome_decorators, { kind: "accessor", name: "outcome", static: false, private: false, access: { has: obj => "outcome" in obj, get: obj => obj.outcome, set: (obj, value) => { obj.outcome = value; } }, metadata: _metadata }, _outcome_initializers, _outcome_extraInitializers);
78
+ __esDecorate(this, null, _revision_decorators, { kind: "accessor", name: "revision", static: false, private: false, access: { has: obj => "revision" in obj, get: obj => obj.revision, set: (obj, value) => { obj.revision = value; } }, metadata: _metadata }, _revision_initializers, _revision_extraInitializers);
79
+ __esDecorate(this, null, _result_decorators, { kind: "accessor", name: "result", static: false, private: false, access: { has: obj => "result" in obj, get: obj => obj.result, set: (obj, value) => { obj.result = value; } }, metadata: _metadata }, _result_initializers, _result_extraInitializers);
115
80
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
116
- DeesSimpleLoginDemo = _classThis = _classDescriptor.value;
81
+ DeesDemoSimpleLogin = _classThis = _classDescriptor.value;
117
82
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
118
83
  }
119
84
  #variant_accessor_storage = __runInitializers(this, _variant_initializers, 'full');
120
85
  get variant() { return this.#variant_accessor_storage; }
121
86
  set variant(value) { this.#variant_accessor_storage = value; }
122
- #log_accessor_storage = (__runInitializers(this, _variant_extraInitializers), __runInitializers(this, _log_initializers, []));
123
- get log() { return this.#log_accessor_storage; }
124
- set log(value) { this.#log_accessor_storage = value; }
125
- static styles = [
126
- themeDefaultStyles,
127
- cssManager.defaultStyles,
128
- css `
129
- :host {
130
- display: block;
131
- position: absolute;
132
- inset: 0;
133
- font-family: var(--dees-font-family);
134
- color: var(--dees-color-text-primary);
135
- background: var(--dees-color-bg-canvas);
136
- }
137
-
138
- .layout {
139
- display: grid;
140
- grid-template-columns: 320px 1fr;
141
- height: 100%;
142
- }
143
-
144
- .sidebar {
145
- display: flex;
146
- flex-direction: column;
147
- gap: var(--dees-spacing-md);
148
- padding: var(--dees-spacing-xl);
149
- overflow-y: auto;
150
- border-right: 1px solid var(--dees-color-border-default);
151
- background: var(--dees-color-bg-secondary);
152
- }
153
-
154
- .sidebarTitle {
155
- font-size: var(--dees-font-control-size);
156
- font-weight: 600;
157
- color: var(--dees-color-text-muted);
158
- text-transform: uppercase;
159
- letter-spacing: 0.06em;
160
- }
161
-
162
- .variant {
163
- padding: var(--dees-spacing-md);
164
- border: 1px solid var(--dees-color-border-subtle);
165
- border-radius: var(--dees-radius-lg);
166
- corner-shape: var(--dees-corner-shape);
167
- background: var(--dees-color-bg-primary);
168
- cursor: pointer;
169
- transition: border-color var(--dees-transition-fast) var(--dees-ease-standard);
170
- }
171
-
172
- .variant:hover {
173
- border-color: var(--dees-color-border-strong);
174
- }
175
-
176
- .variant.selected {
177
- border-color: var(--dees-color-accent-primary);
178
- box-shadow: 0 0 0 1px var(--dees-color-accent-primary);
179
- }
180
-
181
- .variantTitle {
182
- font-size: var(--dees-font-control-size);
183
- font-weight: 600;
184
- }
185
-
186
- .variantDescription {
187
- margin-top: var(--dees-spacing-xs);
188
- font-size: var(--dees-font-control-size-sm);
189
- line-height: 1.45;
190
- color: var(--dees-color-text-muted);
191
- }
192
-
193
- .logTitle {
194
- margin-top: var(--dees-spacing-lg);
195
- }
196
-
197
- .logEntries {
198
- display: flex;
199
- flex-direction: column;
200
- gap: var(--dees-spacing-xs);
201
- font-family: var(--dees-font-family-mono);
202
- font-size: var(--dees-font-control-size-sm);
203
- color: var(--dees-color-text-secondary);
204
- user-select: text;
205
- }
206
-
207
- .stage {
208
- position: relative;
209
- overflow: hidden;
210
- }
211
-
212
- .authenticated {
213
- display: flex;
214
- flex-direction: column;
215
- gap: var(--dees-spacing-md);
216
- align-items: center;
217
- justify-content: center;
218
- height: 100%;
219
- text-align: center;
220
- }
221
-
222
- .authenticated h1 {
223
- margin: 0;
224
- font-size: var(--dees-font-title2-size);
225
- }
226
-
227
- .authenticated p {
228
- margin: 0;
229
- color: var(--dees-color-text-muted);
230
- }
231
- `,
232
- ];
233
- get loginElement() {
234
- return this.shadowRoot?.querySelector('dees-simple-login') || null;
87
+ #outcome_accessor_storage = (__runInitializers(this, _variant_extraInitializers), __runInitializers(this, _outcome_initializers, 'success'));
88
+ get outcome() { return this.#outcome_accessor_storage; }
89
+ set outcome(value) { this.#outcome_accessor_storage = value; }
90
+ #revision_accessor_storage = (__runInitializers(this, _outcome_extraInitializers), __runInitializers(this, _revision_initializers, 0));
91
+ get revision() { return this.#revision_accessor_storage; }
92
+ set revision(value) { this.#revision_accessor_storage = value; }
93
+ #result_accessor_storage = (__runInitializers(this, _revision_extraInitializers), __runInitializers(this, _result_initializers, 'Choose a sign-in method. These accounts and responses are local samples.'));
94
+ get result() { return this.#result_accessor_storage; }
95
+ set result(value) { this.#result_accessor_storage = value; }
96
+ work = (__runInitializers(this, _result_extraInitializers), new AbortController());
97
+ get login() { return this.shadowRoot?.querySelector('dees-simple-login') || null; }
98
+ static styles = [themeDefaultStyles, cssManager.defaultStyles, css `
99
+ :host { display: grid; gap: 16px; font-family: var(--dees-font-family); }
100
+ .controls { display: flex; align-items: end; flex-wrap: wrap; gap: 16px; }
101
+ .controls dees-input-dropdown { width: 250px; max-width: 100%; }
102
+ .controls dees-button { margin-left: auto; }
103
+ .stage { height: 720px; min-height: 0; position: relative; border: 1px solid var(--dees-color-border-subtle); border-radius: var(--dees-radius-2xl); corner-shape: var(--dees-corner-shape); overflow: hidden; }
104
+ .authenticated { display: grid; place-content: center; justify-items: center; text-align: center; gap: 16px; height: 100%; padding: 32px; background: var(--dees-color-bg-canvas); }
105
+ .authenticated > dees-icon { color: var(--dees-color-text-success); }
106
+ h2 { margin: 0; font-size: 28px; font-weight: 600; letter-spacing: -.03em; }
107
+ p, output { margin: 0; color: var(--dees-color-text-secondary); font-size: 13px; line-height: 1.5; }
108
+ output { min-height: 40px; padding: 12px 16px; background: var(--dees-color-bg-secondary); border-radius: var(--dees-radius-lg); }
109
+ @media (max-width: 480px) { .stage { height: 760px; } }
110
+ `];
111
+ resetDemo() {
112
+ this.work.abort();
113
+ this.work = new AbortController();
114
+ this.revision++;
115
+ this.result = 'Ready. No account or personal information is required.';
235
116
  }
236
- note(messageArg) {
237
- this.log = [messageArg, ...this.log].slice(0, 12);
117
+ async disconnectedCallback() { this.work.abort(); await super.disconnectedCallback(); }
118
+ async connectedCallback() { if (this.work.signal.aborted)
119
+ this.work = new AbortController(); await super.connectedCallback(); }
120
+ async respond(method, eventTarget) {
121
+ const login = this.login;
122
+ if (!login)
123
+ return;
124
+ const signal = this.work.signal;
125
+ const outcome = this.outcome;
126
+ if (eventTarget)
127
+ login.setBusy(eventTarget, true);
128
+ const form = eventTarget?.method === 'password' ? login.shadowRoot?.querySelector('dees-form') : null;
129
+ form?.setStatus('pending', 'Signing in…');
130
+ this.result = `Waiting for ${method}…`;
131
+ const completed = await new Promise(resolve => {
132
+ const abort = () => { window.clearTimeout(timer); resolve(false); };
133
+ const timer = window.setTimeout(() => { signal.removeEventListener('abort', abort); resolve(true); }, 700);
134
+ signal.addEventListener('abort', abort, { once: true });
135
+ });
136
+ if (!completed || signal.aborted || !login.isConnected)
137
+ return;
138
+ if (eventTarget)
139
+ login.setBusy(eventTarget, false);
140
+ form?.setStatus('normal', 'Sign in');
141
+ if (outcome === 'error') {
142
+ this.result = `${method} was declined. The other sign-in methods remain available.`;
143
+ if (eventTarget)
144
+ login.reportError(eventTarget, 'Could not sign in. Try again or choose another method.');
145
+ else
146
+ throw new Error('Could not sign in. Try again or choose another method.');
147
+ return;
148
+ }
149
+ this.result = `Signed in with ${method}.`;
150
+ await login.switchToSlottedContent();
151
+ if (signal.aborted || !login.isConnected)
152
+ return;
153
+ await this.updateComplete;
154
+ login.querySelector('dees-button')?.focus();
238
155
  }
239
- render() {
240
- return html `
241
- <div class="layout">
242
- <div class="sidebar">
243
- <div class="sidebarTitle">Variants</div>
244
- ${variants.map((variantArg) => html `
245
- <div
246
- class="variant ${this.variant === variantArg.key ? 'selected' : ''}"
247
- @click=${() => {
248
- this.variant = variantArg.key;
249
- this.log = [];
250
- }}
251
- >
252
- <div class="variantTitle">${variantArg.title}</div>
253
- <div class="variantDescription">${variantArg.description}</div>
254
- </div>
255
- `)}
256
- <div class="sidebarTitle logTitle">Event log</div>
257
- <div class="logEntries">
258
- ${this.log.length === 0
259
- ? html `<div>— nothing yet —</div>`
260
- : this.log.map((entry) => html `<div>${entry}</div>`)}
261
- </div>
262
- </div>
263
- <div class="stage">${this.renderVariant()}</div>
264
- </div>
265
- `;
156
+ signOut() {
157
+ const login = this.login;
158
+ if (!login)
159
+ return;
160
+ login.reset();
161
+ const root = login.shadowRoot;
162
+ root.querySelector('dees-form')?.setStatus('normal', 'Sign in');
163
+ Object.assign(root.querySelector('.login').style, { opacity: '1', transform: 'translateY(0px)' });
164
+ root.querySelector('.loginContainer').style.pointerEvents = 'all';
165
+ Object.assign(root.querySelector('.slotContainer').style, { opacity: '0', pointerEvents: 'none' });
166
+ this.result = 'Signed out. The same login surface is ready again.';
167
+ requestAnimationFrame(() => {
168
+ if (!login.isConnected)
169
+ return;
170
+ const button = root.querySelector('dees-button');
171
+ const input = root.querySelector('dees-input-text');
172
+ (button || input)?.focus();
173
+ });
266
174
  }
267
- renderVariant() {
268
- const shared = html `
269
- <div class="authenticated">
270
- <h1>Signed in</h1>
271
- <p>This is the slotted content that appears after login.</p>
175
+ render() {
176
+ const v = this.variant;
177
+ const eventMode = v === 'events';
178
+ const passkey = ['full', 'passkey', 'enroll', 'events', 'unavailable'].includes(v);
179
+ const password = ['full', 'password', 'many', 'events'].includes(v);
180
+ const configuredProviders = ['full', 'providers', 'events'].includes(v) ? providers : v === 'many' ? [
181
+ ...providers, { id: 'email', label: 'Email link', icon: 'lucide:mail' }, { id: 'key', label: 'Security key', icon: 'lucide:keyRound' },
182
+ { id: 'card', label: 'Smartcard', icon: 'lucide:contact' }, { id: 'directory', label: 'Directory', icon: 'lucide:network', disabled: true },
183
+ ] : [];
184
+ return html `<div class="controls">
185
+ <dees-input-dropdown label="Configuration" .options=${variants} .selectedOption=${variants.find(variant => variant.key === v)}
186
+ @selectedOption=${(event) => { this.variant = event.detail.key; this.resetDemo(); }}></dees-input-dropdown>
187
+ <dees-input-multitoggle label="Demo response" .options=${[{ key: 'success', label: 'Success' }, { key: 'error', label: 'Error' }]} .value=${this.outcome}
188
+ @change=${(event) => { this.outcome = event.detail.value; }}></dees-input-multitoggle>
189
+ <dees-button type="ghost" text="Reset demo" @clicked=${this.resetDemo}></dees-button>
190
+ </div>
191
+ <div class="stage">${directives.keyed(`${v}-${this.revision}`, html `<dees-simple-login name="Studio" .passkey=${passkey} .passkeyAvailable=${v !== 'unavailable'} .password=${password}
192
+ .providers=${configuredProviders} .passkeyIntents=${v === 'enroll' ? ['authenticate', 'register'] : ['authenticate']}
193
+ .labels=${{ heading: v === 'enroll' ? 'Your key to Studio' : 'Welcome to Studio', subheading: v === 'enroll' ? 'Sign in or create a passkey for this device.' : 'A little space for your next big idea.' }}
194
+ .passkeyLoginHandler=${eventMode ? undefined : () => this.respond('your passkey')}
195
+ .passkeyRegisterHandler=${() => this.respond('a new passkey')}
196
+ .providerLoginHandler=${eventMode ? undefined : (context) => this.respond(context.provider.label)}
197
+ .passwordLoginHandler=${eventMode || v === 'password' ? undefined : () => this.respond('your password')}
198
+ @passkey-login=${() => { if (eventMode)
199
+ void this.respond('your passkey', { method: 'passkey' }); }}
200
+ @provider-login=${(event) => { if (eventMode)
201
+ void this.respond(event.detail.provider.label, { method: 'provider', providerId: event.detail.providerId }); }}
202
+ @login=${() => { if (eventMode || v === 'password')
203
+ void this.respond('your password', { method: 'password' }); }}>
204
+ <dees-icon slot="brand" icon="lucide:layers" iconSize="26"></dees-icon>
205
+ <div class="authenticated"><dees-icon icon="lucide:circleCheck" iconSize="36"></dees-icon><h2>You're in.</h2><p>Your Studio workspace is ready.</p>
206
+ <dees-button type="accent" text="Sign out" @clicked=${this.signOut}></dees-button>
272
207
  </div>
273
- `;
274
- if (this.variant === 'legacy') {
275
- return html `
276
- <dees-simple-login
277
- name="My Application"
278
- @login=${(eventArg) => {
279
- const data = eventArg.detail?.data;
280
- this.note(`login: ${data?.username} / ${'*'.repeat(data?.password?.length || 0)}`);
281
- void this.loginElement?.switchToSlottedContent();
282
- }}
283
- >
284
- ${shared}
285
- </dees-simple-login>
286
- `;
287
- }
288
- if (this.variant === 'full') {
289
- return html `
290
- <dees-simple-login
291
- name="idp.global"
292
- .passkey=${true}
293
- .passkeyAvailable=${true}
294
- .providers=${demoProviders}
295
- .labels=${{ subheading: 'Choose how you want to continue' }}
296
- .passkeyLoginHandler=${async (contextArg) => {
297
- this.note(`passkey handler (${contextArg.mediation})`);
298
- await delay(900);
299
- throw new Error('No passkey found for this account.');
300
- }}
301
- .providerLoginHandler=${async (contextArg) => {
302
- this.note(`provider handler: ${contextArg.providerId}`);
303
- await delay(900);
304
- void this.loginElement?.switchToSlottedContent();
305
- }}
306
- .passwordLoginHandler=${async () => {
307
- this.note('password handler');
308
- await delay(900);
309
- void this.loginElement?.switchToSlottedContent();
310
- }}
311
- @login=${(eventArg) => {
312
- this.note(`login event: ${eventArg.detail?.data?.username}`);
313
- }}
314
- >
315
- ${shared}
316
- </dees-simple-login>
317
- `;
318
- }
319
- if (this.variant === 'passkeyOnly') {
320
- return html `
321
- <dees-simple-login
322
- name="Onebox"
323
- .passkey=${true}
324
- .passkeyAvailable=${true}
325
- .password=${false}
326
- .labels=${{ subheading: 'Use a passkey registered for your Onebox account' }}
327
- .passkeyLoginHandler=${async () => {
328
- this.note('passkey sign in');
329
- await delay(900);
330
- void this.loginElement?.switchToSlottedContent();
331
- }}
332
- >
333
- ${shared}
334
- </dees-simple-login>
335
- `;
336
- }
337
- if (this.variant === 'enrollment') {
338
- return html `
339
- <dees-simple-login
340
- name="Onebox"
341
- .passkey=${true}
342
- .passkeyAvailable=${true}
343
- .password=${false}
344
- .passkeyIntents=${['authenticate', 'register']}
345
- .labels=${{ subheading: 'Sign in, or enroll this device' }}
346
- .passkeyLoginHandler=${async () => {
347
- this.note('passkey authenticate');
348
- await delay(900);
349
- throw new Error('This device has no passkey for Onebox yet.');
350
- }}
351
- .passkeyRegisterHandler=${async () => {
352
- this.note('passkey register');
353
- await delay(900);
354
- void this.loginElement?.switchToSlottedContent();
355
- }}
356
- >
357
- ${shared}
358
- </dees-simple-login>
359
- `;
360
- }
361
- if (this.variant === 'providerOnly') {
362
- return html `
363
- <dees-simple-login
364
- name="login.idp.global"
365
- .password=${false}
366
- .providers=${demoProviders}
367
- .labels=${{ subheading: 'Continue with one of your identity providers' }}
368
- .providerLoginHandler=${async (contextArg) => {
369
- this.note(`provider handler: ${contextArg.providerId}`);
370
- await delay(900);
371
- void this.loginElement?.switchToSlottedContent();
372
- }}
373
- >
374
- ${shared}
375
- </dees-simple-login>
376
- `;
377
- }
378
- if (this.variant === 'manyProviders') {
379
- return html `
380
- <dees-simple-login
381
- name="login.idp.global"
382
- .providers=${manyProviders}
383
- .methodOrder=${['provider', 'password']}
384
- .providerLoginHandler=${async (contextArg) => {
385
- this.note(`provider handler: ${contextArg.providerId}`);
386
- await delay(600);
387
- throw new Error('Discovery endpoint unreachable.');
388
- }}
389
- @login=${() => this.note('login event')}
390
- >
391
- ${shared}
392
- </dees-simple-login>
393
- `;
394
- }
395
- // eventMode
396
- return html `
397
- <dees-simple-login
398
- name="Cloudly"
399
- .passkey=${true}
400
- .passkeyAvailable=${true}
401
- .providers=${demoProviders}
402
- @passkey-login=${async (eventArg) => {
403
- this.note(`passkey-login event (username: ${eventArg.detail.username || '—'})`);
404
- const element = this.loginElement;
405
- element?.setBusy({ method: 'passkey' }, true);
406
- await delay(900);
407
- element?.setBusy({ method: 'passkey' }, false);
408
- element?.reportError({ method: 'passkey' }, 'Consumer-reported: ceremony declined.');
409
- }}
410
- @provider-login=${async (eventArg) => {
411
- this.note(`provider-login event: ${eventArg.detail.providerId}`);
412
- const element = this.loginElement;
413
- const target = { method: 'provider', providerId: eventArg.detail.providerId };
414
- element?.setBusy(target, true);
415
- await delay(900);
416
- element?.setBusy(target, false);
417
- element?.reportError(target, 'Consumer-reported: redirect blocked.');
418
- }}
419
- @login=${(eventArg) => {
420
- this.note(`login event: ${eventArg.detail?.data?.username}`);
421
- this.loginElement?.reportError('password', 'Consumer-reported: invalid credentials.');
422
- }}
423
- >
424
- ${shared}
425
- </dees-simple-login>
426
- `;
427
- }
428
- constructor() {
429
- super(...arguments);
430
- __runInitializers(this, _log_extraInitializers);
208
+ </dees-simple-login>`)}</div><output role="status">${this.result}</output>`;
431
209
  }
432
210
  static {
433
211
  __runInitializers(_classThis, _classExtraInitializers);
434
212
  }
435
213
  };
436
- return DeesSimpleLoginDemo = _classThis;
214
+ return DeesDemoSimpleLogin = _classThis;
437
215
  })();
438
- export const demoFunc = () => html `
439
- <style>
440
- body {
441
- margin: 0;
442
- padding: 0;
443
- }
444
- .demo-container {
445
- width: 100%;
446
- height: 100%;
447
- position: absolute;
448
- top: 0;
449
- left: 0;
450
- }
451
- </style>
452
- <div class="demo-container">
453
- <dees-simple-login-demo></dees-simple-login-demo>
454
- </div>
455
- `;
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaW1wbGUtbG9naW4uZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLXNpbXBsZS9kZWVzLXNpbXBsZS1sb2dpbi9kZWVzLXNpbXBsZS1sb2dpbi5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVN0RDs7O0dBR0c7QUFDSCxNQUFNLGFBQWEsR0FBeUI7SUFDMUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO0lBQ3JFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTtJQUNyRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0NBQy9ELENBQUM7QUFFRixNQUFNLGFBQWEsR0FBeUI7SUFDMUMsR0FBRyxhQUFhO0lBQ2hCLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDakUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRTtJQUM5RCxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUM3RSxD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
216
+ export const demoFunc = () => demoPage('Sign in', 'One welcoming surface. Passkeys, workspace accounts, and passwords working together.', html `<dees-demo-simple-login></dees-demo-simple-login>`);
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1zaW1wbGUtbG9naW4uZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLXNpbXBsZS9kZWVzLXNpbXBsZS1sb2dpbi9kZWVzLXNpbXBsZS1sb2dpbi5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXZELE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxzRUFBc0UsQ0FBQztBQUU5RSxNQUFNLFNBQVMsR0FBeUI7SUFDdEMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7SUFDekUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO0NBQ3RFLENBQUM7QUFDRixNQUFNLFFBQVEsR0FBRztJQUNmLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRTtJQUM1RixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUU7SUFDM0YsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0s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