@openelement/ui 0.41.0-alpha.1

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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +78 -0
  3. package/package.json +142 -0
  4. package/src/daisy-classes.d.ts +7 -0
  5. package/src/daisy-classes.js +770 -0
  6. package/src/index.d.ts +57 -0
  7. package/src/index.js +62 -0
  8. package/src/manifest.d.ts +8 -0
  9. package/src/manifest.js +255 -0
  10. package/src/open-badge.d.ts +15 -0
  11. package/src/open-badge.js +88 -0
  12. package/src/open-brand-mark.d.ts +14 -0
  13. package/src/open-brand-mark.js +107 -0
  14. package/src/open-button.d.ts +38 -0
  15. package/src/open-button.js +219 -0
  16. package/src/open-callout.d.ts +26 -0
  17. package/src/open-callout.js +99 -0
  18. package/src/open-card.d.ts +33 -0
  19. package/src/open-card.js +107 -0
  20. package/src/open-code-block.d.ts +44 -0
  21. package/src/open-code-block.js +267 -0
  22. package/src/open-dialog.d.ts +47 -0
  23. package/src/open-dialog.js +235 -0
  24. package/src/open-dropdown.d.ts +25 -0
  25. package/src/open-dropdown.js +45 -0
  26. package/src/open-hero-ping.d.ts +27 -0
  27. package/src/open-hero-ping.js +136 -0
  28. package/src/open-input.d.ts +51 -0
  29. package/src/open-input.js +233 -0
  30. package/src/open-lab-panel.d.ts +16 -0
  31. package/src/open-lab-panel.js +151 -0
  32. package/src/open-lab-stage.d.ts +15 -0
  33. package/src/open-lab-stage.js +622 -0
  34. package/src/open-layout.d.ts +111 -0
  35. package/src/open-layout.js +1377 -0
  36. package/src/open-modal.d.ts +25 -0
  37. package/src/open-modal.js +48 -0
  38. package/src/open-props-tokens.d.ts +7 -0
  39. package/src/open-props-tokens.js +474 -0
  40. package/src/open-standards-visual.d.ts +20 -0
  41. package/src/open-standards-visual.js +425 -0
  42. package/src/open-step-card.d.ts +34 -0
  43. package/src/open-step-card.js +117 -0
  44. package/src/open-tabs.d.ts +27 -0
  45. package/src/open-tabs.js +56 -0
  46. package/src/open-theme-toggle.d.ts +38 -0
  47. package/src/open-theme-toggle.js +223 -0
@@ -0,0 +1,425 @@
1
+ /** @jsxImportSource @openelement/core */ /**
2
+ * @openelement/ui - open-standards-visual
3
+ *
4
+ * Product-art diagrams for the openElement standards lab website.
5
+ */ import { OpenElement } from '@openelement/element';
6
+ import { StyleSheet } from '@openelement/core/style-sheet';
7
+ export const tagName = 'open-standards-visual';
8
+ const sheet = new StyleSheet();
9
+ sheet.replaceSync(`
10
+ :host {
11
+ display: block;
12
+ }
13
+
14
+ * {
15
+ box-sizing: border-box;
16
+ }
17
+
18
+ .visual {
19
+ display: grid;
20
+ gap: var(--size-4);
21
+ color: var(--text-primary);
22
+ }
23
+
24
+ .visual--high {
25
+ gap: var(--size-5);
26
+ }
27
+
28
+ .hero {
29
+ display: grid;
30
+ gap: var(--size-4);
31
+ }
32
+
33
+ .hero__top {
34
+ display: grid;
35
+ grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
36
+ gap: var(--size-4);
37
+ }
38
+
39
+ .code {
40
+ margin: 0;
41
+ overflow: auto;
42
+ color: var(--code-text);
43
+ font-family: var(--font-mono);
44
+ font-size: var(--font-size-00);
45
+ line-height: var(--font-lineheight-4);
46
+ white-space: pre-wrap;
47
+ }
48
+
49
+ .mark {
50
+ color: var(--brand-light);
51
+ }
52
+
53
+ .spec {
54
+ display: grid;
55
+ gap: var(--size-3);
56
+ }
57
+
58
+ .spec__row,
59
+ .route,
60
+ .package,
61
+ .token,
62
+ .stage {
63
+ position: relative;
64
+ display: grid;
65
+ gap: var(--size-1);
66
+ padding: var(--size-3);
67
+ overflow: hidden;
68
+ border: var(--border-size-1) solid var(--border);
69
+ border-radius: var(--radius-2);
70
+ background: var(--bg-card);
71
+ }
72
+
73
+ .route::before,
74
+ .package::before,
75
+ .token::before,
76
+ .stage::before {
77
+ content: "";
78
+ position: absolute;
79
+ inset-block: 0;
80
+ inset-inline-start: 0;
81
+ width: var(--size-1);
82
+ background: var(--brand);
83
+ opacity: .72;
84
+ }
85
+
86
+ .spec__key,
87
+ .route__path,
88
+ .package__name,
89
+ .token__name,
90
+ .stage__num {
91
+ color: var(--brand);
92
+ font-family: var(--font-mono);
93
+ font-size: var(--font-size-00);
94
+ font-weight: var(--font-weight-8);
95
+ letter-spacing: 0;
96
+ }
97
+
98
+ .spec__value,
99
+ .route__desc,
100
+ .package__desc,
101
+ .token__desc,
102
+ .stage__copy {
103
+ color: var(--text-secondary);
104
+ font-size: var(--font-size-0);
105
+ line-height: var(--font-lineheight-3);
106
+ }
107
+
108
+ .pipeline {
109
+ display: grid;
110
+ grid-template-columns: repeat(5, minmax(0, 1fr));
111
+ gap: var(--size-2);
112
+ }
113
+
114
+ .stage {
115
+ min-height: var(--size-16);
116
+ background: color-mix(in srgb, var(--bg-card) 82%, var(--brand-subtle));
117
+ }
118
+
119
+ .visual--high .stage,
120
+ .visual--high .route,
121
+ .visual--high .package,
122
+ .visual--high .token {
123
+ background:
124
+ linear-gradient(135deg, color-mix(in srgb, var(--brand-subtle) 64%, transparent), transparent),
125
+ var(--bg-card);
126
+ }
127
+
128
+ .stage--success .stage__num,
129
+ .package--success .package__name {
130
+ color: var(--success);
131
+ }
132
+
133
+ .stage--success::before,
134
+ .package--success::before {
135
+ background: var(--success);
136
+ }
137
+
138
+ .stage--warning .stage__num,
139
+ .package--warning .package__name {
140
+ color: var(--warning);
141
+ }
142
+
143
+ .stage--warning::before,
144
+ .package--warning::before {
145
+ background: var(--warning);
146
+ }
147
+
148
+ .routes,
149
+ .packages,
150
+ .tokens {
151
+ display: grid;
152
+ gap: var(--size-3);
153
+ }
154
+
155
+ .route {
156
+ grid-template-columns: minmax(0, .44fr) minmax(0, 1fr);
157
+ align-items: start;
158
+ }
159
+
160
+ .package {
161
+ grid-template-columns: minmax(0, .36fr) minmax(0, 1fr);
162
+ align-items: start;
163
+ }
164
+
165
+ .tokens {
166
+ grid-template-columns: repeat(2, minmax(0, 1fr));
167
+ }
168
+
169
+ .token__swatch {
170
+ width: var(--size-8);
171
+ height: var(--size-5);
172
+ border-radius: var(--radius-1);
173
+ border: var(--border-size-1) solid var(--border);
174
+ background: var(--bg-card);
175
+ }
176
+
177
+ .token--brand .token__swatch { background: var(--brand); }
178
+ .token--success .token__swatch { background: var(--success); }
179
+ .token--warning .token__swatch { background: var(--warning); }
180
+ .token--info .token__swatch { background: var(--info); }
181
+ .token--surface .token__swatch { background: var(--bg-elevated); }
182
+ .token--code .token__swatch { background: var(--bg-code, var(--gray-11)); }
183
+
184
+ .matrix {
185
+ display: grid;
186
+ grid-template-columns: repeat(2, minmax(0, 1fr));
187
+ gap: var(--size-3);
188
+ }
189
+
190
+ .visual--motion .stage,
191
+ .visual--motion .route,
192
+ .visual--motion .package,
193
+ .visual--motion .token {
194
+ animation: visual-lift 7s var(--ease-2) infinite alternate;
195
+ }
196
+
197
+ .visual--motion .stage:nth-child(2),
198
+ .visual--motion .route:nth-child(2),
199
+ .visual--motion .package:nth-child(2),
200
+ .visual--motion .token:nth-child(2) {
201
+ animation-delay: 600ms;
202
+ }
203
+
204
+ .visual--motion .stage:nth-child(3),
205
+ .visual--motion .route:nth-child(3),
206
+ .visual--motion .package:nth-child(3),
207
+ .visual--motion .token:nth-child(3) {
208
+ animation-delay: 1200ms;
209
+ }
210
+
211
+ .visual--motion .code {
212
+ animation: visual-code 8s var(--ease-1) infinite alternate;
213
+ }
214
+
215
+ @keyframes visual-lift {
216
+ from {
217
+ filter: brightness(1);
218
+ }
219
+ to {
220
+ filter: brightness(1.12);
221
+ }
222
+ }
223
+
224
+ @keyframes visual-code {
225
+ from {
226
+ color: var(--code-text);
227
+ }
228
+ to {
229
+ color: var(--brand-light);
230
+ }
231
+ }
232
+
233
+ @media (prefers-reduced-motion: reduce) {
234
+ .visual--motion .stage,
235
+ .visual--motion .route,
236
+ .visual--motion .package,
237
+ .visual--motion .token,
238
+ .visual--motion .code {
239
+ animation: none;
240
+ }
241
+ }
242
+
243
+ @media (max-width: 760px) {
244
+ .hero__top,
245
+ .pipeline,
246
+ .route,
247
+ .package,
248
+ .tokens,
249
+ .matrix {
250
+ grid-template-columns: 1fr;
251
+ }
252
+ }
253
+ `);
254
+ export class OpenStandardsVisual extends OpenElement {
255
+ static styles = [
256
+ sheet
257
+ ];
258
+ static observedAttributes = [
259
+ 'variant',
260
+ 'motion',
261
+ 'emphasis'
262
+ ];
263
+ render() {
264
+ const variant = this._getStr('variant', 'hero');
265
+ const visualClass = this._visualClass();
266
+ if (variant === 'routes') return this._routes(visualClass);
267
+ if (variant === 'packages') return this._packages(visualClass);
268
+ if (variant === 'tokens') return this._tokens(visualClass);
269
+ return this._hero(visualClass);
270
+ }
271
+ _getStr(attr, def) {
272
+ const camel = attr.replace(/-([a-z])/g, (_, c)=>c.toUpperCase());
273
+ const prop = this[camel] ?? this[attr];
274
+ if (prop !== undefined && prop !== null) return String(prop);
275
+ return this.getAttribute(attr) || def;
276
+ }
277
+ _visualClass() {
278
+ const motion = this._getStr('motion', 'auto') === 'off' ? 'still' : 'motion';
279
+ const emphasis = this._getStr('emphasis', 'normal') === 'high' ? 'high' : 'normal';
280
+ return `visual visual--${emphasis} visual--${motion}`;
281
+ }
282
+ _hero(visualClass) {
283
+ return <div className={`${visualClass} hero`}>
284
+ <div className='hero__top'>
285
+ <pre className='code'><code>{`export default app({
286
+ routes: './app/routes',
287
+ render: 'declarative-shadow-dom',
288
+ islands: 'interaction-only',
289
+ adapter: 'vite'
290
+ })`}</code></pre>
291
+ <div className='spec' aria-label='Standards sheet'>
292
+ <div className='spec__row'>
293
+ <span className='spec__key'>HTML</span>
294
+ <span className='spec__value'>
295
+ Declarative Shadow DOM as the first rendering target
296
+ </span>
297
+ </div>
298
+ <div className='spec__row'>
299
+ <span className='spec__key'>WC</span>
300
+ <span className='spec__value'>
301
+ Custom elements own behavior and progressive hydration
302
+ </span>
303
+ </div>
304
+ <div className='spec__row'>
305
+ <span className='spec__key'>API</span>
306
+ <span className='spec__value'>
307
+ Hono endpoints sit beside pages and content routes
308
+ </span>
309
+ </div>
310
+ </div>
311
+ </div>
312
+ <div className='pipeline' aria-label='Render pipeline'>
313
+ <div className='stage'>
314
+ <span className='stage__num'>01</span>
315
+ <span className='stage__copy'>Route</span>
316
+ </div>
317
+ <div className='stage stage--success'>
318
+ <span className='stage__num'>02</span>
319
+ <span className='stage__copy'>Render DSD</span>
320
+ </div>
321
+ <div className='stage'>
322
+ <span className='stage__num'>03</span>
323
+ <span className='stage__copy'>Ship HTML</span>
324
+ </div>
325
+ <div className='stage stage--warning'>
326
+ <span className='stage__num'>04</span>
327
+ <span className='stage__copy'>Hydrate island</span>
328
+ </div>
329
+ <div className='stage'>
330
+ <span className='stage__num'>05</span>
331
+ <span className='stage__copy'>Verify</span>
332
+ </div>
333
+ </div>
334
+ </div>;
335
+ }
336
+ _routes(visualClass) {
337
+ return <div className={`${visualClass} routes`} aria-label='Route graph'>
338
+ <div className='route'>
339
+ <span className='route__path'>/</span>
340
+ <span className='route__desc'>homepage lab artifact and product paths</span>
341
+ </div>
342
+ <div className='route'>
343
+ <span className='route__path'>/guide/*</span>
344
+ <span className='route__desc'>
345
+ build path, configuration, deployment, and production flow
346
+ </span>
347
+ </div>
348
+ <div className='route'>
349
+ <span className='route__path'>/architecture/*</span>
350
+ <span className='route__desc'>package graph, DSD, islands, and standards registry</span>
351
+ </div>
352
+ <div className='route'>
353
+ <span className='route__path'>/api</span>
354
+ <span className='route__desc'>public contract index across the product graph</span>
355
+ </div>
356
+ </div>;
357
+ }
358
+ _packages(visualClass) {
359
+ return <div className={`${visualClass} packages`} aria-label='Package graph'>
360
+ <div className='package package--success'>
361
+ <span className='package__name'>Elements</span>
362
+ <span className='package__desc'>
363
+ custom elements, DSD rendering, and component contracts
364
+ </span>
365
+ </div>
366
+ <div className='package'>
367
+ <span className='package__name'>UI</span>
368
+ <span className='package__desc'>
369
+ Open Props primitives used by this website and consumers
370
+ </span>
371
+ </div>
372
+ <div className='package package--warning'>
373
+ <span className='package__name'>Framework</span>
374
+ <span className='package__desc'>
375
+ routes, layouts, content, islands, i18n, and adapter-vite
376
+ </span>
377
+ </div>
378
+ <div className='package'>
379
+ <span className='package__name'>Protocols</span>
380
+ <span className='package__desc'>
381
+ public boundary declarations and package compatibility language
382
+ </span>
383
+ </div>
384
+ </div>;
385
+ }
386
+ _tokens(visualClass) {
387
+ return <div className={`${visualClass} tokens`} aria-label='Token board'>
388
+ <div className='token token--surface'>
389
+ <span className='token__swatch'></span>
390
+ <span className='token__name'>--bg-card</span>
391
+ <span className='token__desc'>reading surfaces</span>
392
+ </div>
393
+ <div className='token token--brand'>
394
+ <span className='token__swatch'></span>
395
+ <span className='token__name'>--brand</span>
396
+ <span className='token__desc'>links and primary action</span>
397
+ </div>
398
+ <div className='token token--success'>
399
+ <span className='token__swatch'></span>
400
+ <span className='token__name'>--success</span>
401
+ <span className='token__desc'>standards and shipped state</span>
402
+ </div>
403
+ <div className='token token--warning'>
404
+ <span className='token__swatch'></span>
405
+ <span className='token__name'>--warning</span>
406
+ <span className='token__desc'>planned or directional state</span>
407
+ </div>
408
+ <div className='token token--info'>
409
+ <span className='token__swatch'></span>
410
+ <span className='token__name'>--info</span>
411
+ <span className='token__desc'>reference and API state</span>
412
+ </div>
413
+ <div className='token token--code'>
414
+ <span className='token__swatch'></span>
415
+ <span className='token__name'>--bg-code</span>
416
+ <span className='token__desc'>code and artifact panels</span>
417
+ </div>
418
+ </div>;
419
+ }
420
+ }
421
+ export default OpenStandardsVisual;
422
+ if (typeof customElements !== 'undefined' && !customElements.get(tagName)) {
423
+ customElements.define(tagName, OpenStandardsVisual);
424
+ }
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy91aS9zcmMvb3Blbi1zdGFuZGFyZHMtdmlzdWFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeEltcG9ydFNvdXJjZSBAb3BlbmVsZW1lbnQvY29yZSAqL1xuLyoqXG4gKiBAb3BlbmVsZW1lbnQvdWkgLSBvcGVuLXN0YW5kYXJkcy12aXN1YWxcbiAqXG4gKiBQcm9kdWN0LWFydCBkaWFncmFtcyBmb3IgdGhlIG9wZW5FbGVtZW50IHN0YW5kYXJkcyBsYWIgd2Vic2l0ZS5cbiAqL1xuXG5pbXBvcnQgeyBPcGVuRWxlbWVudCB9IGZyb20gJ0BvcGVuZWxlbWVudC9lbGVtZW50JztcbmltcG9ydCB7IFN0eWxlU2hlZXQsIHR5cGUgU3R5bGVTaGVldExpa2UgfSBmcm9tICdAb3BlbmVsZW1lbnQvY29yZS9zdHlsZS1zaGVldCc7XG5cbmV4cG9ydCBjb25zdCB0YWdOYW1lID0gJ29wZW4tc3RhbmRhcmRzLXZpc3VhbCc7XG5cbmNvbnN0IHNoZWV0OiBTdHlsZVNoZWV0TGlrZSA9IG5ldyBTdHlsZVNoZWV0KCk7XG5zaGVldC5yZXBsYWNlU3luYyhgXG4gIDpob3N0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICoge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICAudmlzdWFsIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc2l6ZS00KTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgfVxuXG4gIC52aXN1YWwtLWhpZ2gge1xuICAgIGdhcDogdmFyKC0tc2l6ZS01KTtcbiAgfVxuXG4gIC5oZXJvIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc2l6ZS00KTtcbiAgfVxuXG4gIC5oZXJvX190b3Age1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4xMmZyKSBtaW5tYXgoMCwgLjg4ZnIpO1xuICAgIGdhcDogdmFyKC0tc2l6ZS00KTtcbiAgfVxuXG4gIC5jb2RlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgY29sb3I6IHZhcigtLWNvZGUtdGV4dCk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMDApO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1mb250LWxpbmVoZWlnaHQtNCk7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB9XG5cbiAgLm1hcmsge1xuICAgIGNvbG9yOiB2YXIoLS1icmFuZC1saWdodCk7XG4gIH1cblxuICAuc3BlYyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXNpemUtMyk7XG4gIH1cblxuICAuc3BlY19fcm93LFxuICAucm91dGUsXG4gIC5wYWNrYWdlLFxuICAudG9rZW4sXG4gIC5zdGFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zaXplLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNpemUtMyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXI6IHZhcigtLWJvcmRlci1zaXplLTEpIHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLTIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpO1xuICB9XG5cbiAgLnJvdXRlOjpiZWZvcmUsXG4gIC5wYWNrYWdlOjpiZWZvcmUsXG4gIC50b2tlbjo6YmVmb3JlLFxuICAuc3RhZ2U6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQtYmxvY2s6IDA7XG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgIHdpZHRoOiB2YXIoLS1zaXplLTEpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJyYW5kKTtcbiAgICBvcGFjaXR5OiAuNzI7XG4gIH1cblxuICAuc3BlY19fa2V5LFxuICAucm91dGVfX3BhdGgsXG4gIC5wYWNrYWdlX19uYW1lLFxuICAudG9rZW5fX25hbWUsXG4gIC5zdGFnZV9fbnVtIHtcbiAgICBjb2xvcjogdmFyKC0tYnJhbmQpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTAwKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtOCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIH1cblxuICAuc3BlY19fdmFsdWUsXG4gIC5yb3V0ZV9fZGVzYyxcbiAgLnBhY2thZ2VfX2Rlc2MsXG4gIC50b2tlbl9fZGVzYyxcbiAgLnN0YWdlX19jb3B5IHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTApO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1mb250LWxpbmVoZWlnaHQtMyk7XG4gIH1cblxuICAucGlwZWxpbmUge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgbWlubWF4KDAsIDFmcikpO1xuICAgIGdhcDogdmFyKC0tc2l6ZS0yKTtcbiAgfVxuXG4gIC5zdGFnZSB7XG4gICAgbWluLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XG4gICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJnLWNhcmQpIDgyJSwgdmFyKC0tYnJhbmQtc3VidGxlKSk7XG4gIH1cblxuICAudmlzdWFsLS1oaWdoIC5zdGFnZSxcbiAgLnZpc3VhbC0taGlnaCAucm91dGUsXG4gIC52aXN1YWwtLWhpZ2ggLnBhY2thZ2UsXG4gIC52aXN1YWwtLWhpZ2ggLnRva2VuIHtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyYW5kLXN1YnRsZSkgNjQlLCB0cmFuc3BhcmVudCksIHRyYW5zcGFyZW50KSxcbiAgICAgIHZhcigtLWJnLWNhcmQpO1xuICB9XG5cbiAgLnN0YWdlLS1zdWNjZXNzIC5zdGFnZV9fbnVtLFxuICAucGFja2FnZS0tc3VjY2VzcyAucGFja2FnZV9fbmFtZSB7XG4gICAgY29sb3I6IHZhcigtLXN1Y2Nlc3MpO1xuICB9XG5cbiAgLnN0YWdlLS1zdWNjZXNzOjpiZWZvcmUsXG4gIC5wYWNrYWdlLS1zdWNjZXNzOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1Y2Nlc3MpO1xuICB9XG5cbiAgLnN0YWdlLS13YXJuaW5nIC5zdGFnZV9fbnVtLFxuICAucGFja2FnZS0td2FybmluZyAucGFja2FnZV9fbmFtZSB7XG4gICAgY29sb3I6IHZhcigtLXdhcm5pbmcpO1xuICB9XG5cbiAgLnN0YWdlLS13YXJuaW5nOjpiZWZvcmUsXG4gIC5wYWNrYWdlLS13YXJuaW5nOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXdhcm5pbmcpO1xuICB9XG5cbiAgLnJvdXRlcyxcbiAgLnBhY2thZ2VzLFxuICAudG9rZW5zIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc2l6ZS0zKTtcbiAgfVxuXG4gIC5yb3V0ZSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgLjQ0ZnIpIG1pbm1heCgwLCAxZnIpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgfVxuXG4gIC5wYWNrYWdlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAuMzZmcikgbWlubWF4KDAsIDFmcik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICB9XG5cbiAgLnRva2VucyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICB9XG5cbiAgLnRva2VuX19zd2F0Y2gge1xuICAgIHdpZHRoOiB2YXIoLS1zaXplLTgpO1xuICAgIGhlaWdodDogdmFyKC0tc2l6ZS01KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtMSk7XG4gICAgYm9yZGVyOiB2YXIoLS1ib3JkZXItc2l6ZS0xKSBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpO1xuICB9XG5cbiAgLnRva2VuLS1icmFuZCAudG9rZW5fX3N3YXRjaCB7IGJhY2tncm91bmQ6IHZhcigtLWJyYW5kKTsgfVxuICAudG9rZW4tLXN1Y2Nlc3MgLnRva2VuX19zd2F0Y2ggeyBiYWNrZ3JvdW5kOiB2YXIoLS1zdWNjZXNzKTsgfVxuICAudG9rZW4tLXdhcm5pbmcgLnRva2VuX19zd2F0Y2ggeyBiYWNrZ3JvdW5kOiB2YXIoLS13YXJuaW5nKTsgfVxuICAudG9rZW4tLWluZm8gLnRva2VuX19zd2F0Y2ggeyBiYWNrZ3JvdW5kOiB2YXIoLS1pbmZvKTsgfVxuICAudG9rZW4tLXN1cmZhY2UgLnRva2VuX19zd2F0Y2ggeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1lbGV2YXRlZCk7IH1cbiAgLnRva2VuLS1jb2RlIC50b2tlbl9fc3dhdGNoIHsgYmFja2dyb3VuZDogdmFyKC0tYmctY29kZSwgdmFyKC0tZ3JheS0xMSkpOyB9XG5cbiAgLm1hdHJpeCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS1zaXplLTMpO1xuICB9XG5cbiAgLnZpc3VhbC0tbW90aW9uIC5zdGFnZSxcbiAgLnZpc3VhbC0tbW90aW9uIC5yb3V0ZSxcbiAgLnZpc3VhbC0tbW90aW9uIC5wYWNrYWdlLFxuICAudmlzdWFsLS1tb3Rpb24gLnRva2VuIHtcbiAgICBhbmltYXRpb246IHZpc3VhbC1saWZ0IDdzIHZhcigtLWVhc2UtMikgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICB9XG5cbiAgLnZpc3VhbC0tbW90aW9uIC5zdGFnZTpudGgtY2hpbGQoMiksXG4gIC52aXN1YWwtLW1vdGlvbiAucm91dGU6bnRoLWNoaWxkKDIpLFxuICAudmlzdWFsLS1tb3Rpb24gLnBhY2thZ2U6bnRoLWNoaWxkKDIpLFxuICAudmlzdWFsLS1tb3Rpb24gLnRva2VuOm50aC1jaGlsZCgyKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiA2MDBtcztcbiAgfVxuXG4gIC52aXN1YWwtLW1vdGlvbiAuc3RhZ2U6bnRoLWNoaWxkKDMpLFxuICAudmlzdWFsLS1tb3Rpb24gLnJvdXRlOm50aC1jaGlsZCgzKSxcbiAgLnZpc3VhbC0tbW90aW9uIC5wYWNrYWdlOm50aC1jaGlsZCgzKSxcbiAgLnZpc3VhbC0tbW90aW9uIC50b2tlbjpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMTIwMG1zO1xuICB9XG5cbiAgLnZpc3VhbC0tbW90aW9uIC5jb2RlIHtcbiAgICBhbmltYXRpb246IHZpc3VhbC1jb2RlIDhzIHZhcigtLWVhc2UtMSkgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICB9XG5cbiAgQGtleWZyYW1lcyB2aXN1YWwtbGlmdCB7XG4gICAgZnJvbSB7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjEyKTtcbiAgICB9XG4gIH1cblxuICBAa2V5ZnJhbWVzIHZpc3VhbC1jb2RlIHtcbiAgICBmcm9tIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2RlLXRleHQpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICBjb2xvcjogdmFyKC0tYnJhbmQtbGlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLnZpc3VhbC0tbW90aW9uIC5zdGFnZSxcbiAgICAudmlzdWFsLS1tb3Rpb24gLnJvdXRlLFxuICAgIC52aXN1YWwtLW1vdGlvbiAucGFja2FnZSxcbiAgICAudmlzdWFsLS1tb3Rpb24gLnRva2VuLFxuICAgIC52aXN1YWwtLW1vdGlvbiAuY29kZSB7XG4gICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSB7XG4gICAgLmhlcm9fX3RvcCxcbiAgICAucGlwZWxpbmUsXG4gICAgLnJvdXRlLFxuICAgIC5wYWNrYWdlLFxuICAgIC50b2tlbnMsXG4gICAgLm1hdHJpeCB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG4gIH1cbmApO1xuXG5leHBvcnQgY2xhc3MgT3BlblN0YW5kYXJkc1Zpc3VhbCBleHRlbmRzIE9wZW5FbGVtZW50IHtcbiAgc3RhdGljIG92ZXJyaWRlIHN0eWxlcyA9IFtzaGVldF07XG4gIHN0YXRpYyBvdmVycmlkZSBvYnNlcnZlZEF0dHJpYnV0ZXMgPSBbJ3ZhcmlhbnQnLCAnbW90aW9uJywgJ2VtcGhhc2lzJ107XG5cbiAgb3ZlcnJpZGUgcmVuZGVyKCk6IFJldHVyblR5cGU8dHlwZW9mIE9wZW5FbGVtZW50LnByb3RvdHlwZS5yZW5kZXI+IHtcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy5fZ2V0U3RyKCd2YXJpYW50JywgJ2hlcm8nKTtcbiAgICBjb25zdCB2aXN1YWxDbGFzcyA9IHRoaXMuX3Zpc3VhbENsYXNzKCk7XG4gICAgaWYgKHZhcmlhbnQgPT09ICdyb3V0ZXMnKSByZXR1cm4gdGhpcy5fcm91dGVzKHZpc3VhbENsYXNzKTtcbiAgICBpZiAodmFyaWFudCA9PT0gJ3BhY2thZ2VzJykgcmV0dXJuIHRoaXMuX3BhY2thZ2VzKHZpc3VhbENsYXNzKTtcbiAgICBpZiAodmFyaWFudCA9PT0gJ3Rva2VucycpIHJldHVybiB0aGlzLl90b2tlbnModmlzdWFsQ2xhc3MpO1xuICAgIHJldHVybiB0aGlzLl9oZXJvKHZpc3VhbENsYXNzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFN0cihhdHRyOiBzdHJpbmcsIGRlZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjYW1lbCA9IGF0dHIucmVwbGFjZSgvLShbYS16XSkvZywgKF8sIGM6IHN0cmluZykgPT4gYy50b1VwcGVyQ2FzZSgpKTtcbiAgICBjb25zdCBwcm9wID0gKHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2NhbWVsXSA/P1xuICAgICAgKHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2F0dHJdO1xuICAgIGlmIChwcm9wICE9PSB1bmRlZmluZWQgJiYgcHJvcCAhPT0gbnVsbCkgcmV0dXJuIFN0cmluZyhwcm9wKTtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoYXR0cikgfHwgZGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzdWFsQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb3Rpb24gPSB0aGlzLl9nZXRTdHIoJ21vdGlvbicsICdhdXRvJykgPT09ICdvZmYnID8gJ3N0aWxsJyA6ICdtb3Rpb24nO1xuICAgIGNvbnN0IGVtcGhhc2lzID0gdGhpcy5fZ2V0U3RyKCdlbXBoYXNpcycsICdub3JtYWwnKSA9PT0gJ2hpZ2gnID8gJ2hpZ2gnIDogJ25vcm1hbCc7XG4gICAgcmV0dXJuIGB2aXN1YWwgdmlzdWFsLS0ke2VtcGhhc2lzfSB2aXN1YWwtLSR7bW90aW9ufWA7XG4gIH1cblxuICBwcml2YXRlIF9oZXJvKHZpc3VhbENsYXNzOiBzdHJpbmcpOiBSZXR1cm5UeXBlPHR5cGVvZiBPcGVuRWxlbWVudC5wcm90b3R5cGUucmVuZGVyPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHt2aXN1YWxDbGFzc30gaGVyb2B9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0naGVyb19fdG9wJz5cbiAgICAgICAgICA8cHJlIGNsYXNzTmFtZT0nY29kZSc+PGNvZGU+e2BleHBvcnQgZGVmYXVsdCBhcHAoe1xuICByb3V0ZXM6ICcuL2FwcC9yb3V0ZXMnLFxuICByZW5kZXI6ICdkZWNsYXJhdGl2ZS1zaGFkb3ctZG9tJyxcbiAgaXNsYW5kczogJ2ludGVyYWN0aW9uLW9ubHknLFxuICBhZGFwdGVyOiAndml0ZSdcbn0pYH08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3NwZWMnIGFyaWEtbGFiZWw9J1N0YW5kYXJkcyBzaGVldCc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nc3BlY19fcm93Jz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzcGVjX19rZXknPkhUTUw8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc3BlY19fdmFsdWUnPlxuICAgICAgICAgICAgICAgIERlY2xhcmF0aXZlIFNoYWRvdyBET00gYXMgdGhlIGZpcnN0IHJlbmRlcmluZyB0YXJnZXRcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nc3BlY19fcm93Jz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzcGVjX19rZXknPldDPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3NwZWNfX3ZhbHVlJz5cbiAgICAgICAgICAgICAgICBDdXN0b20gZWxlbWVudHMgb3duIGJlaGF2aW9yIGFuZCBwcm9ncmVzc2l2ZSBoeWRyYXRpb25cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nc3BlY19fcm93Jz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzcGVjX19rZXknPkFQSTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzcGVjX192YWx1ZSc+XG4gICAgICAgICAgICAgICAgSG9ubyBlbmRwb2ludHMgc2l0IGJlc2lkZSBwYWdlcyBhbmQgY29udGVudCByb3V0ZXNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncGlwZWxpbmUnIGFyaWEtbGFiZWw9J1JlbmRlciBwaXBlbGluZSc+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3N0YWdlJz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc3RhZ2VfX251bSc+MDE8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3N0YWdlX19jb3B5Jz5Sb3V0ZTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nc3RhZ2Ugc3RhZ2UtLXN1Y2Nlc3MnPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzdGFnZV9fbnVtJz4wMjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc3RhZ2VfX2NvcHknPlJlbmRlciBEU0Q8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3N0YWdlJz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc3RhZ2VfX251bSc+MDM8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3N0YWdlX19jb3B5Jz5TaGlwIEhUTUw8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3N0YWdlIHN0YWdlLS13YXJuaW5nJz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc3RhZ2VfX251bSc+MDQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3N0YWdlX19jb3B5Jz5IeWRyYXRlIGlzbGFuZDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nc3RhZ2UnPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzdGFnZV9fbnVtJz4wNTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc3RhZ2VfX2NvcHknPlZlcmlmeTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcm91dGVzKHZpc3VhbENsYXNzOiBzdHJpbmcpOiBSZXR1cm5UeXBlPHR5cGVvZiBPcGVuRWxlbWVudC5wcm90b3R5cGUucmVuZGVyPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHt2aXN1YWxDbGFzc30gcm91dGVzYH0gYXJpYS1sYWJlbD0nUm91dGUgZ3JhcGgnPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncm91dGUnPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ncm91dGVfX3BhdGgnPi88L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdyb3V0ZV9fZGVzYyc+aG9tZXBhZ2UgbGFiIGFydGlmYWN0IGFuZCBwcm9kdWN0IHBhdGhzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3JvdXRlJz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3JvdXRlX19wYXRoJz4vZ3VpZGUvKjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3JvdXRlX19kZXNjJz5cbiAgICAgICAgICAgIGJ1aWxkIHBhdGgsIGNvbmZpZ3VyYXRpb24sIGRlcGxveW1lbnQsIGFuZCBwcm9kdWN0aW9uIGZsb3dcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncm91dGUnPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ncm91dGVfX3BhdGgnPi9hcmNoaXRlY3R1cmUvKjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3JvdXRlX19kZXNjJz5wYWNrYWdlIGdyYXBoLCBEU0QsIGlzbGFuZHMsIGFuZCBzdGFuZGFyZHMgcmVnaXN0cnk8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncm91dGUnPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ncm91dGVfX3BhdGgnPi9hcGk8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdyb3V0ZV9fZGVzYyc+cHVibGljIGNvbnRyYWN0IGluZGV4IGFjcm9zcyB0aGUgcHJvZHVjdCBncmFwaDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFja2FnZXModmlzdWFsQ2xhc3M6IHN0cmluZyk6IFJldHVyblR5cGU8dHlwZW9mIE9wZW5FbGVtZW50LnByb3RvdHlwZS5yZW5kZXI+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3Zpc3VhbENsYXNzfSBwYWNrYWdlc2B9IGFyaWEtbGFiZWw9J1BhY2thZ2UgZ3JhcGgnPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncGFja2FnZSBwYWNrYWdlLS1zdWNjZXNzJz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3BhY2thZ2VfX25hbWUnPkVsZW1lbnRzPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ncGFja2FnZV9fZGVzYyc+XG4gICAgICAgICAgICBjdXN0b20gZWxlbWVudHMsIERTRCByZW5kZXJpbmcsIGFuZCBjb21wb25lbnQgY29udHJhY3RzXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3BhY2thZ2UnPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ncGFja2FnZV9fbmFtZSc+VUk8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdwYWNrYWdlX19kZXNjJz5cbiAgICAgICAgICAgIE9wZW4gUHJvcHMgcHJpbWl0aXZlcyB1c2VkIGJ5IHRoaXMgd2Vic2l0ZSBhbmQgY29uc3VtZXJzXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J3BhY2thZ2UgcGFja2FnZS0td2FybmluZyc+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdwYWNrYWdlX19uYW1lJz5GcmFtZXdvcms8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdwYWNrYWdlX19kZXNjJz5cbiAgICAgICAgICAgIHJvdXRlcywgbGF5b3V0cywgY29udGVudCwgaXNsYW5kcywgaTE4biwgYW5kIGFkYXB0ZXItdml0ZVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdwYWNrYWdlJz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3BhY2thZ2VfX25hbWUnPlByb3RvY29sczwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3BhY2thZ2VfX2Rlc2MnPlxuICAgICAgICAgICAgcHVibGljIGJvdW5kYXJ5IGRlY2xhcmF0aW9ucyBhbmQgcGFja2FnZSBjb21wYXRpYmlsaXR5IGxhbmd1YWdlXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF90b2tlbnModmlzdWFsQ2xhc3M6IHN0cmluZyk6IFJldHVyblR5cGU8dHlwZW9mIE9wZW5FbGVtZW50LnByb3RvdHlwZS5yZW5kZXI+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3Zpc3VhbENsYXNzfSB0b2tlbnNgfSBhcmlhLWxhYmVsPSdUb2tlbiBib2FyZCc+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0b2tlbiB0b2tlbi0tc3VyZmFjZSc+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fc3dhdGNoJz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fbmFtZSc+LS1iZy1jYXJkPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX2Rlc2MnPnJlYWRpbmcgc3VyZmFjZXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndG9rZW4gdG9rZW4tLWJyYW5kJz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3Rva2VuX19zd2F0Y2gnPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3Rva2VuX19uYW1lJz4tLWJyYW5kPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX2Rlc2MnPmxpbmtzIGFuZCBwcmltYXJ5IGFjdGlvbjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0b2tlbiB0b2tlbi0tc3VjY2Vzcyc+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fc3dhdGNoJz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fbmFtZSc+LS1zdWNjZXNzPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX2Rlc2MnPnN0YW5kYXJkcyBhbmQgc2hpcHBlZCBzdGF0ZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0b2tlbiB0b2tlbi0td2FybmluZyc+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fc3dhdGNoJz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fbmFtZSc+LS13YXJuaW5nPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX2Rlc2MnPnBsYW5uZWQgb3IgZGlyZWN0aW9uYWwgc3RhdGU8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndG9rZW4gdG9rZW4tLWluZm8nPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX3N3YXRjaCc+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX25hbWUnPi0taW5mbzwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3Rva2VuX19kZXNjJz5yZWZlcmVuY2UgYW5kIEFQSSBzdGF0ZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0b2tlbiB0b2tlbi0tY29kZSc+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fc3dhdGNoJz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSd0b2tlbl9fbmFtZSc+LS1iZy1jb2RlPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0ndG9rZW5fX2Rlc2MnPmNvZGUgYW5kIGFydGlmYWN0IHBhbmVsczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9wZW5TdGFuZGFyZHNWaXN1YWw7XG5cbmlmICh0eXBlb2YgY3VzdG9tRWxlbWVudHMgIT09ICd1bmRlZmluZWQnICYmICFjdXN0b21FbGVtZW50cy5nZXQodGFnTmFtZSkpIHtcbiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKHRhZ05hbWUsIE9wZW5TdGFuZGFyZHNWaXN1YWwpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QyxHQUN2Qzs7OztDQUlDLEdBRUQsU0FBUyxXQUFXLFFBQVEsdUJBQXVCO0FBQ25ELFNBQVMsVUFBVSxRQUE2QixnQ0FBZ0M7QUFFaEYsT0FBTyxNQUFNLFVBQVUsd0JBQXdCO0FBRS9DLE1BQU0sUUFBd0IsSUFBSTtBQUNsQyxNQUFNLFdBQVcsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -0,0 +1,34 @@
1
+ /** @jsxImportSource @openelement/core */ /**
2
+ * @openelement/ui - OpenStepCard Component
3
+ *
4
+ * Step card with numbered indicator and label.
5
+ * Used in Quick Start sections and Getting Started guides.
6
+ *
7
+ * v0.20.0: Migrated from DsdLitElement to DsdElement (Ocean component).
8
+ * v0.24.1: Migrated from html`` template to JSX (ADR-0057).
9
+ *
10
+ * @csspart container -The step card wrapper
11
+ * @csspart indicator -The step number circle
12
+ * @csspart title -The step label heading
13
+ * @csspart description -The step description paragraph
14
+ * @csspart content -The slot content area
15
+ *
16
+ * Usage:
17
+ * ```html
18
+ * <open-step-card step="1" label="Create">
19
+ * deno run -A npm:@openelement/create my-app
20
+ * </open-step-card>
21
+ * ```
22
+ */ import { OpenElement } from '@openelement/element';
23
+ import { type StyleSheetLike } from '@openelement/core/style-sheet';
24
+ export declare const tagName: 'open-step-card';
25
+ declare const sheet: StyleSheetLike;
26
+ export declare class OpenStepCard extends OpenElement {
27
+ static override styles: [];
28
+ static override observedAttributes: [string, string, string, string];
29
+ override render(): ReturnType<typeof OpenElement.prototype.render>;
30
+ override attributeChangedCallback(_name: string, old: string | null, val: string | null): void;
31
+ private _syncDOM: any;
32
+ private _esc: any;
33
+ }
34
+ export default OpenStepCard;
@@ -0,0 +1,117 @@
1
+ /** @jsxImportSource @openelement/core */ /**
2
+ * @openelement/ui - OpenStepCard Component
3
+ *
4
+ * Step card with numbered indicator and label.
5
+ * Used in Quick Start sections and Getting Started guides.
6
+ *
7
+ * v0.20.0: Migrated from DsdLitElement to DsdElement (Ocean component).
8
+ * v0.24.1: Migrated from html`` template to JSX (ADR-0057).
9
+ *
10
+ * @csspart container -The step card wrapper
11
+ * @csspart indicator -The step number circle
12
+ * @csspart title -The step label heading
13
+ * @csspart description -The step description paragraph
14
+ * @csspart content -The slot content area
15
+ *
16
+ * Usage:
17
+ * ```html
18
+ * <open-step-card step="1" label="Create">
19
+ * deno run -A npm:@openelement/create my-app
20
+ * </open-step-card>
21
+ * ```
22
+ */ import { OpenElement } from '@openelement/element';
23
+ import { StyleSheet } from '@openelement/core/style-sheet';
24
+ import { escapeHtml } from '@openelement/core';
25
+ export const tagName = 'open-step-card';
26
+ const sheet = new StyleSheet();
27
+ sheet.replaceSync(`
28
+ :host {
29
+ display: block;
30
+ }
31
+ .step-card {
32
+ border: var(--border-size-1) solid var(--gray-3);
33
+ border-radius: var(--radius-2);
34
+ padding: var(--size-4);
35
+ background: var(--gray-1);
36
+ position: relative;
37
+ border-top: var(--border-size-2) solid var(--brand);
38
+ }
39
+ .step-header {
40
+ display: flex;
41
+ align-items: center;
42
+ gap: var(--size-2);
43
+ margin-bottom: var(--size-2);
44
+ }
45
+ .step-number {
46
+ width: 28px;
47
+ height: 28px;
48
+ border-radius: var(--radius-round);
49
+ background: var(--brand);
50
+ color: var(--text-primary);
51
+ font-size: var(--font-size-00);
52
+ font-weight: var(--font-weight-7);
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ flex-shrink: 0;
57
+ }
58
+ .step-label {
59
+ font-size: var(--font-size-00);
60
+ font-weight: var(--font-weight-6);
61
+ color: var(--gray-5);
62
+ text-transform: uppercase;
63
+ letter-spacing: var(--font-letterspacing-5);
64
+ }
65
+ .step-body {
66
+ font-size: var(--font-size-1);
67
+ line-height: var(--font-lineheight-3);
68
+ color: var(--gray-9);
69
+ }
70
+ .step-body ::slotted(code) {
71
+ font-family: var(--font-mono);
72
+ font-size: var(--font-size-00);
73
+ color: var(--gray-9);
74
+ }
75
+ `);
76
+ export class OpenStepCard extends OpenElement {
77
+ static styles = [
78
+ sheet
79
+ ];
80
+ static observedAttributes = [
81
+ 'step',
82
+ 'label',
83
+ 'description',
84
+ 'status'
85
+ ];
86
+ render() {
87
+ const step = parseInt(this.getAttribute('step') || '1', 10);
88
+ const label = this.getAttribute('label') || '';
89
+ const description = this.getAttribute('description') || '';
90
+ return <div className='step-card' part='container'>
91
+ <div className='step-header'>
92
+ <span className='step-number' part='indicator'>{step}</span>
93
+ <span className='step-label' part='title'>{this._esc(label)}</span>
94
+ </div>
95
+ {description && <p part='description' style='margin:0 0 var(--size-2);color:var(--gray-7);font-size:var(--font-size-0);'>
96
+ {this._esc(description)}
97
+ </p>}
98
+ <div className='step-body' part='content'>
99
+ <slot></slot>
100
+ </div>
101
+ </div>;
102
+ }
103
+ attributeChangedCallback(_name, old, val) {
104
+ if (old === val) return;
105
+ this._syncDOM();
106
+ }
107
+ _syncDOM() {
108
+ this.update();
109
+ }
110
+ _esc = escapeHtml;
111
+ }
112
+ export default OpenStepCard;
113
+ // Guard: idempotent across SSR paths
114
+ if (typeof customElements !== 'undefined' && !customElements.get(tagName)) {
115
+ customElements.define(tagName, OpenStepCard);
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy91aS9zcmMvb3Blbi1zdGVwLWNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4SW1wb3J0U291cmNlIEBvcGVuZWxlbWVudC9jb3JlICovXG4vKipcbiAqIEBvcGVuZWxlbWVudC91aSAtIE9wZW5TdGVwQ2FyZCBDb21wb25lbnRcbiAqXG4gKiBTdGVwIGNhcmQgd2l0aCBudW1iZXJlZCBpbmRpY2F0b3IgYW5kIGxhYmVsLlxuICogVXNlZCBpbiBRdWljayBTdGFydCBzZWN0aW9ucyBhbmQgR2V0dGluZyBTdGFydGVkIGd1aWRlcy5cbiAqXG4gKiB2MC4yMC4wOiBNaWdyYXRlZCBmcm9tIERzZExpdEVsZW1lbnQgdG8gRHNkRWxlbWVudCAoT2NlYW4gY29tcG9uZW50KS5cbiAqIHYwLjI0LjE6IE1pZ3JhdGVkIGZyb20gaHRtbGBgIHRlbXBsYXRlIHRvIEpTWCAoQURSLTAwNTcpLlxuICpcbiAqIEBjc3NwYXJ0IGNvbnRhaW5lciAtVGhlIHN0ZXAgY2FyZCB3cmFwcGVyXG4gKiBAY3NzcGFydCBpbmRpY2F0b3IgLVRoZSBzdGVwIG51bWJlciBjaXJjbGVcbiAqIEBjc3NwYXJ0IHRpdGxlIC1UaGUgc3RlcCBsYWJlbCBoZWFkaW5nXG4gKiBAY3NzcGFydCBkZXNjcmlwdGlvbiAtVGhlIHN0ZXAgZGVzY3JpcHRpb24gcGFyYWdyYXBoXG4gKiBAY3NzcGFydCBjb250ZW50IC1UaGUgc2xvdCBjb250ZW50IGFyZWFcbiAqXG4gKiBVc2FnZTpcbiAqIGBgYGh0bWxcbiAqIDxvcGVuLXN0ZXAtY2FyZCBzdGVwPVwiMVwiIGxhYmVsPVwiQ3JlYXRlXCI+XG4gKiAgIGRlbm8gcnVuIC1BIG5wbTpAb3BlbmVsZW1lbnQvY3JlYXRlIG15LWFwcFxuICogPC9vcGVuLXN0ZXAtY2FyZD5cbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IE9wZW5FbGVtZW50IH0gZnJvbSAnQG9wZW5lbGVtZW50L2VsZW1lbnQnO1xuaW1wb3J0IHsgU3R5bGVTaGVldCwgdHlwZSBTdHlsZVNoZWV0TGlrZSB9IGZyb20gJ0BvcGVuZWxlbWVudC9jb3JlL3N0eWxlLXNoZWV0JztcbmltcG9ydCB7IGVzY2FwZUh0bWwgfSBmcm9tICdAb3BlbmVsZW1lbnQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCB0YWdOYW1lID0gJ29wZW4tc3RlcC1jYXJkJztcblxuY29uc3Qgc2hlZXQ6IFN0eWxlU2hlZXRMaWtlID0gbmV3IFN0eWxlU2hlZXQoKTtcbnNoZWV0LnJlcGxhY2VTeW5jKGBcbiAgOmhvc3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIC5zdGVwLWNhcmQge1xuICAgIGJvcmRlcjogdmFyKC0tYm9yZGVyLXNpemUtMSkgc29saWQgdmFyKC0tZ3JheS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc2l6ZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmF5LTEpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItc2l6ZS0yKSBzb2xpZCB2YXIoLS1icmFuZCk7XG4gIH1cbiAgLnN0ZXAtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zaXplLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNpemUtMik7XG4gIH1cbiAgLnN0ZXAtbnVtYmVyIHtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXJvdW5kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1icmFuZCk7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMDApO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC03KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gIH1cbiAgLnN0ZXAtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTAwKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtNik7XG4gICAgY29sb3I6IHZhcigtLWdyYXktNSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZm9udC1sZXR0ZXJzcGFjaW5nLTUpO1xuICB9XG4gIC5zdGVwLWJvZHkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTEpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1mb250LWxpbmVoZWlnaHQtMyk7XG4gICAgY29sb3I6IHZhcigtLWdyYXktOSk7XG4gIH1cbiAgLnN0ZXAtYm9keSA6OnNsb3R0ZWQoY29kZSkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTAwKTtcbiAgICBjb2xvcjogdmFyKC0tZ3JheS05KTtcbiAgfVxuYCk7XG5cbmV4cG9ydCBjbGFzcyBPcGVuU3RlcENhcmQgZXh0ZW5kcyBPcGVuRWxlbWVudCB7XG4gIHN0YXRpYyBvdmVycmlkZSBzdHlsZXMgPSBbc2hlZXRdO1xuICBzdGF0aWMgb3ZlcnJpZGUgb2JzZXJ2ZWRBdHRyaWJ1dGVzID0gWydzdGVwJywgJ2xhYmVsJywgJ2Rlc2NyaXB0aW9uJywgJ3N0YXR1cyddO1xuXG4gIG92ZXJyaWRlIHJlbmRlcigpOiBSZXR1cm5UeXBlPHR5cGVvZiBPcGVuRWxlbWVudC5wcm90b3R5cGUucmVuZGVyPiB7XG4gICAgY29uc3Qgc3RlcCA9IHBhcnNlSW50KHRoaXMuZ2V0QXR0cmlidXRlKCdzdGVwJykgfHwgJzEnLCAxMCk7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldEF0dHJpYnV0ZSgnbGFiZWwnKSB8fCAnJztcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0QXR0cmlidXRlKCdkZXNjcmlwdGlvbicpIHx8ICcnO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdzdGVwLWNhcmQnIHBhcnQ9J2NvbnRhaW5lcic+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdzdGVwLWhlYWRlcic+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzdGVwLW51bWJlcicgcGFydD0naW5kaWNhdG9yJz57c3RlcH08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdzdGVwLWxhYmVsJyBwYXJ0PSd0aXRsZSc+e3RoaXMuX2VzYyhsYWJlbCl9PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge2Rlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICA8cFxuICAgICAgICAgICAgcGFydD0nZGVzY3JpcHRpb24nXG4gICAgICAgICAgICBzdHlsZT0nbWFyZ2luOjAgMCB2YXIoLS1zaXplLTIpO2NvbG9yOnZhcigtLWdyYXktNyk7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS0wKTsnXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RoaXMuX2VzYyhkZXNjcmlwdGlvbil9XG4gICAgICAgICAgPC9wPlxuICAgICAgICApfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nc3RlcC1ib2R5JyBwYXJ0PSdjb250ZW50Jz5cbiAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhfbmFtZTogc3RyaW5nLCBvbGQ6IHN0cmluZyB8IG51bGwsIHZhbDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChvbGQgPT09IHZhbCkgcmV0dXJuO1xuICAgIHRoaXMuX3N5bmNET00oKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNET00oKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VzYyA9IGVzY2FwZUh0bWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9wZW5TdGVwQ2FyZDtcblxuLy8gR3VhcmQ6IGlkZW1wb3RlbnQgYWNyb3NzIFNTUiBwYXRoc1xuaWYgKHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgIWN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKSkge1xuICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGFnTmFtZSwgT3BlblN0ZXBDYXJkKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUMsR0FDdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUVELFNBQVMsV0FBVyxRQUFRLHVCQUF1QjtBQUNuRCxTQUFTLFVBQVUsUUFBNkIsZ0NBQWdDO0FBQ2hGLFNBQVMsVUFBVSxRQUFRLG9CQUFvQjtBQUUvQyxPQUFPLE1BQU0sVUFBVSxpQkFBaUI7QUFFeEMsTUFBTSxRQUF3QixJQUFJO0FBQ2xDLE1BQU0sV0FBVyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdEbkIsQ0FBQztBQUVELE9BQU8sTUFBTSxxQkFBcUI7RUFDaEMsT0FBZ0IsU0FBUztJQUFDO0dBQU0sQ0FBQztFQUNqQyxPQUFnQixxQkFBcUI7SUFBQztJQUFRO0lBQVM7SUFBZTtHQUFTLENBQUM7RUFFdkUsU0FBMEQ7SUFDakUsTUFBTSxPQUFPLFNBQVMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEtBQUs7SUFDeEQsTUFBTSxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWTtJQUM1QyxNQUFNLGNBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0I7SUFFeEQsUUFDRyxJQUFJLFVBQVUsWUFBWSxLQUFLLFlBQVk7UUFDMUMsQ0FBQyxJQUFJLFVBQVUsY0FBYztVQUMzQixDQUFDLEtBQUssVUFBVSxjQUFjLEtBQUssYUFBYSxPQUFPLEtBQUs7VUFDNUQsQ0FBQyxLQUFLLFVBQVUsYUFBYSxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUs7UUFDckUsRUFBRSxJQUFJO1FBQ04sQ0FBQyxnQkFDRSxFQUNDLEtBQUssY0FDTCxNQUFNLDZFQUNQO1lBQ0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7VUFDMUIsRUFBRSxHQUNGO1FBQ0YsQ0FBQyxJQUFJLFVBQVUsWUFBWSxLQUFLLFVBQVU7VUFDeEMsQ0FBQyxPQUFPLEtBQUs7UUFDZixFQUFFLElBQUk7TUFDUixFQUFFO0VBRU47RUFFUyx5QkFBeUIsS0FBYSxFQUFFLEdBQWtCLEVBQUUsR0FBa0IsRUFBUTtJQUM3RixJQUFJLFFBQVEsS0FBSztJQUNqQixJQUFJLENBQUMsUUFBUTtFQUNmO0VBRVEsV0FBaUI7SUFDdkIsSUFBSSxDQUFDLE1BQU07RUFDYjtFQUVRLE9BQU8sV0FBVztBQUM1QjtBQUVBLGVBQWUsYUFBYTtBQUU1QixxQ0FBcUM7QUFDckMsSUFBSSxPQUFPLG1CQUFtQixlQUFlLENBQUMsZUFBZSxHQUFHLENBQUMsVUFBVTtFQUN6RSxlQUFlLE1BQU0sQ0FBQyxTQUFTO0FBQ2pDIn0=
@@ -0,0 +1,27 @@
1
+ /** @jsxImportSource @openelement/core */ /**
2
+ * @openelement/ui - open-tabs
3
+ *
4
+ * DaisyUI-style tabs using DsdElement + Signals.
5
+ * Reads light DOM children with `slot="tab"` and `slot="panel"`
6
+ * to render tab buttons and panel content.
7
+ *
8
+ * Usage:
9
+ * ```html
10
+ * <open-tabs>
11
+ * <span slot="tab">Tab 1</span>
12
+ * <span slot="tab">Tab 2</span>
13
+ * <div slot="panel">Panel 1 content</div>
14
+ * <div slot="panel">Panel 2 content</div>
15
+ * </open-tabs>
16
+ * ```
17
+ *
18
+ * @slot tab - Tab button labels (multiple)
19
+ * @slot panel - Tab panel content (multiple, one per tab)
20
+ */ import { OpenElement, type VNode } from '@openelement/element';
21
+ import { daisyClassSheet } from "./daisy-classes.js";
22
+ export declare const tagName: 'open-tabs';
23
+ export declare class OpenTabs extends OpenElement {
24
+ static override styles: [];
25
+ override render(): VNode;
26
+ }
27
+ export default OpenTabs;