@neptune.fintech/web-ui 2.0.0 → 2.2.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 (73) hide show
  1. package/README.md +24 -2
  2. package/dist/components/actions.d.ts +43 -0
  3. package/dist/components/actions.d.ts.map +1 -0
  4. package/dist/components/actions.js +279 -0
  5. package/dist/components/actions.js.map +1 -0
  6. package/dist/components/button.d.ts +1 -1
  7. package/dist/components/button.d.ts.map +1 -1
  8. package/dist/components/button.js +9 -1
  9. package/dist/components/button.js.map +1 -1
  10. package/dist/components/cards.d.ts +64 -0
  11. package/dist/components/cards.d.ts.map +1 -0
  12. package/dist/components/cards.js +498 -0
  13. package/dist/components/cards.js.map +1 -0
  14. package/dist/components/containers.d.ts +54 -0
  15. package/dist/components/containers.d.ts.map +1 -0
  16. package/dist/components/containers.js +298 -0
  17. package/dist/components/containers.js.map +1 -0
  18. package/dist/components/corporate.d.ts +84 -0
  19. package/dist/components/corporate.d.ts.map +1 -0
  20. package/dist/components/corporate.js +782 -0
  21. package/dist/components/corporate.js.map +1 -0
  22. package/dist/components/data-viz.d.ts +69 -0
  23. package/dist/components/data-viz.d.ts.map +1 -0
  24. package/dist/components/data-viz.js +526 -0
  25. package/dist/components/data-viz.js.map +1 -0
  26. package/dist/components/feedback-status.d.ts +80 -0
  27. package/dist/components/feedback-status.d.ts.map +1 -0
  28. package/dist/components/feedback-status.js +537 -0
  29. package/dist/components/feedback-status.js.map +1 -0
  30. package/dist/components/feedback.d.ts +42 -0
  31. package/dist/components/feedback.d.ts.map +1 -0
  32. package/dist/components/feedback.js +241 -0
  33. package/dist/components/feedback.js.map +1 -0
  34. package/dist/components/inputs.d.ts +8 -1
  35. package/dist/components/inputs.d.ts.map +1 -1
  36. package/dist/components/inputs.js +57 -3
  37. package/dist/components/inputs.js.map +1 -1
  38. package/dist/components/layout.d.ts +68 -0
  39. package/dist/components/layout.d.ts.map +1 -0
  40. package/dist/components/layout.js +359 -0
  41. package/dist/components/layout.js.map +1 -0
  42. package/dist/components/money-inputs.d.ts +105 -0
  43. package/dist/components/money-inputs.d.ts.map +1 -0
  44. package/dist/components/money-inputs.js +766 -0
  45. package/dist/components/money-inputs.js.map +1 -0
  46. package/dist/components/money-movement.d.ts +79 -0
  47. package/dist/components/money-movement.d.ts.map +1 -0
  48. package/dist/components/money-movement.js +740 -0
  49. package/dist/components/money-movement.js.map +1 -0
  50. package/dist/components/nav-rail.d.ts +22 -0
  51. package/dist/components/nav-rail.d.ts.map +1 -0
  52. package/dist/components/nav-rail.js +120 -0
  53. package/dist/components/nav-rail.js.map +1 -0
  54. package/dist/components/selection.d.ts +51 -0
  55. package/dist/components/selection.d.ts.map +1 -0
  56. package/dist/components/selection.js +377 -0
  57. package/dist/components/selection.js.map +1 -0
  58. package/dist/components/shell-layout.d.ts +103 -0
  59. package/dist/components/shell-layout.d.ts.map +1 -0
  60. package/dist/components/shell-layout.js +582 -0
  61. package/dist/components/shell-layout.js.map +1 -0
  62. package/dist/components/wallet-pay.d.ts +85 -0
  63. package/dist/components/wallet-pay.d.ts.map +1 -0
  64. package/dist/components/wallet-pay.js +633 -0
  65. package/dist/components/wallet-pay.js.map +1 -0
  66. package/dist/index.d.ts +15 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +15 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/register.d.ts.map +1 -1
  71. package/dist/register.js +103 -0
  72. package/dist/register.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,498 @@
1
+ // © 2026 Neptune.Fintech (neptune.ly) · Neptune Odyssey Community License v1.0
2
+ // Neptune Odyssey — payment-card components
3
+ // <npt-card-art>, <npt-card-row>, <npt-add-card>, <npt-card-controls>.
4
+ // Custom-property driven only; logical layout → mirrors in RTL. Money tabular.
5
+ import { NptElement, css, html, A11Y, define } from "./base.js";
6
+ const esc = (v) => (v ?? "").replace(/[&<>"]/g, (c) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" })[c]);
7
+ /**
8
+ * <npt-card-art holder="A. KELLER" last4="4821" expiry="08/29" scheme="VISA"
9
+ * variant="virtual|physical|frozen"><span slot="brand">◈</span></npt-card-art>
10
+ * Payment-card visual on the brand gradient. `scheme` is a plain label; provide a
11
+ * brand mark via the `brand` slot (top-trailing). [frozen] dims and shows a frozen
12
+ * affordance. Card number digits use tabular figures.
13
+ */
14
+ export class NptCardArt extends NptElement {
15
+ attributeChangedCallback() {
16
+ if (this.isConnected)
17
+ this.update();
18
+ }
19
+ styles() {
20
+ return css `
21
+ ${A11Y}
22
+ :host {
23
+ display: block;
24
+ }
25
+ .card {
26
+ position: relative;
27
+ box-sizing: border-box;
28
+ aspect-ratio: 1.586;
29
+ inline-size: 100%;
30
+ padding: var(--npt-space-6, 24px);
31
+ border-radius: var(--npt-corner-lg, 24px);
32
+ background: linear-gradient(135deg, var(--md-sys-color-primary), var(--md-sys-color-tertiary));
33
+ color: var(--md-sys-color-on-primary);
34
+ box-shadow: var(--npt-elevation-2, 0 2px 6px rgba(0, 0, 0, 0.18));
35
+ display: flex;
36
+ flex-direction: column;
37
+ justify-content: space-between;
38
+ overflow: hidden;
39
+ transition: filter var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
40
+ }
41
+ :host([variant="virtual"]) .card {
42
+ background: linear-gradient(
43
+ 135deg,
44
+ var(--md-sys-color-tertiary),
45
+ var(--md-sys-color-primary)
46
+ );
47
+ }
48
+ .top {
49
+ display: flex;
50
+ align-items: flex-start;
51
+ justify-content: space-between;
52
+ gap: var(--npt-space-4, 16px);
53
+ }
54
+ .scheme {
55
+ font-family: var(--npt-font-display);
56
+ font-size: var(--npt-text-label, 14px);
57
+ font-weight: 700;
58
+ letter-spacing: 0.08em;
59
+ text-transform: uppercase;
60
+ opacity: 0.92;
61
+ }
62
+ .brand {
63
+ display: inline-flex;
64
+ align-items: center;
65
+ font-size: var(--npt-text-title, 18px);
66
+ line-height: 1;
67
+ }
68
+ .number {
69
+ font-family: var(--npt-font-num);
70
+ font-feature-settings: "tnum" 1;
71
+ font-variant-numeric: tabular-nums;
72
+ font-size: var(--npt-text-title, 18px);
73
+ letter-spacing: 0.18em;
74
+ margin: 0;
75
+ }
76
+ .dots {
77
+ opacity: 0.7;
78
+ margin-inline-end: var(--npt-space-2, 8px);
79
+ }
80
+ .bottom {
81
+ display: flex;
82
+ align-items: flex-end;
83
+ justify-content: space-between;
84
+ gap: var(--npt-space-4, 16px);
85
+ }
86
+ .holder {
87
+ font-family: var(--npt-font-text);
88
+ font-size: var(--npt-text-label, 14px);
89
+ text-transform: uppercase;
90
+ letter-spacing: 0.04em;
91
+ margin: 0;
92
+ min-inline-size: 0;
93
+ overflow: hidden;
94
+ text-overflow: ellipsis;
95
+ white-space: nowrap;
96
+ }
97
+ .meta {
98
+ font-family: var(--npt-font-text);
99
+ font-size: var(--npt-text-caption, 12px);
100
+ opacity: 0.85;
101
+ margin: 0 0 var(--npt-space-1, 4px);
102
+ }
103
+ .expiry {
104
+ font-family: var(--npt-font-num);
105
+ font-variant-numeric: tabular-nums;
106
+ font-size: var(--npt-text-label, 14px);
107
+ text-align: end;
108
+ margin: 0;
109
+ }
110
+ .frost {
111
+ position: absolute;
112
+ inset: 0;
113
+ display: none;
114
+ align-items: center;
115
+ justify-content: center;
116
+ gap: var(--npt-space-2, 8px);
117
+ background: var(--md-sys-color-scrim);
118
+ opacity: 0.42;
119
+ font-family: var(--npt-font-text);
120
+ font-size: var(--npt-text-label, 14px);
121
+ color: var(--md-sys-color-on-primary);
122
+ pointer-events: none;
123
+ }
124
+ :host([variant="frozen"]) .card {
125
+ filter: grayscale(0.65) brightness(0.9);
126
+ }
127
+ :host([variant="frozen"]) .frost {
128
+ display: flex;
129
+ }
130
+ `;
131
+ }
132
+ render() {
133
+ const holder = esc(this.getAttribute("holder"));
134
+ const last4 = esc(this.getAttribute("last4"));
135
+ const expiry = esc(this.getAttribute("expiry"));
136
+ const scheme = esc(this.getAttribute("scheme"));
137
+ const frozen = this.getAttribute("variant") === "frozen";
138
+ const label = `${scheme} card ending ${last4}${frozen ? ", frozen" : ""}`;
139
+ return html `<div class="card" part="card" role="group" aria-label="${label}">
140
+ <div class="top">
141
+ <span class="scheme">${scheme}</span>
142
+ <span class="brand"><slot name="brand"></slot></span>
143
+ </div>
144
+ <p class="number">
145
+ <span class="dots" aria-hidden="true">•••• •••• ••••</span>${last4}
146
+ </p>
147
+ <div class="bottom">
148
+ <p class="holder">${holder}</p>
149
+ <div>
150
+ <p class="meta">Expires</p>
151
+ <p class="expiry">${expiry}</p>
152
+ </div>
153
+ </div>
154
+ <div class="frost" aria-hidden="true"><span aria-hidden="true">❄</span> Frozen</div>
155
+ </div>`;
156
+ }
157
+ }
158
+ NptCardArt.observedAttributes = ["holder", "last4", "expiry", "scheme", "variant"];
159
+ /**
160
+ * <npt-card-row label="Salary card" last4="4821" scheme="VISA" [interactive]>
161
+ * <span slot="brand">◈</span></npt-card-row>
162
+ * Saved-card list item. Leading `brand` slot, trailing chevron. [interactive] makes
163
+ * the whole row a button (role/tabindex/hover) that emits a bubbling `select` event.
164
+ */
165
+ export class NptCardRow extends NptElement {
166
+ constructor() {
167
+ super(...arguments);
168
+ this.onClick = () => this.activate();
169
+ this.onKey = (e) => {
170
+ if (!this.hasAttribute("interactive"))
171
+ return;
172
+ if (e.key === " " || e.key === "Enter") {
173
+ e.preventDefault();
174
+ this.activate();
175
+ }
176
+ };
177
+ }
178
+ attributeChangedCallback() {
179
+ if (this.isConnected)
180
+ this.update();
181
+ }
182
+ connectedCallback() {
183
+ super.connectedCallback();
184
+ this.addEventListener("click", this.onClick);
185
+ this.addEventListener("keydown", this.onKey);
186
+ }
187
+ disconnectedCallback() {
188
+ this.removeEventListener("click", this.onClick);
189
+ this.removeEventListener("keydown", this.onKey);
190
+ }
191
+ activate() {
192
+ if (!this.hasAttribute("interactive"))
193
+ return;
194
+ this.dispatchEvent(new CustomEvent("select", { bubbles: true }));
195
+ }
196
+ styles() {
197
+ return css `
198
+ ${A11Y}
199
+ :host {
200
+ display: block;
201
+ }
202
+ .row {
203
+ display: flex;
204
+ align-items: center;
205
+ gap: var(--npt-space-4, 16px);
206
+ min-height: 56px;
207
+ padding-block: var(--npt-space-3, 12px);
208
+ padding-inline: var(--npt-space-2, 8px);
209
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
210
+ border-radius: var(--npt-corner-sm, 12px);
211
+ color: var(--md-sys-color-on-surface);
212
+ transition: background-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
213
+ }
214
+ :host([interactive]) {
215
+ cursor: pointer;
216
+ }
217
+ :host([interactive]) .row:hover {
218
+ background: var(--md-sys-color-surface-container);
219
+ }
220
+ .brand {
221
+ inline-size: 40px;
222
+ block-size: 40px;
223
+ flex: 0 0 auto;
224
+ border-radius: var(--npt-corner-xs, 8px);
225
+ background: var(--md-sys-color-secondary-container);
226
+ color: var(--md-sys-color-on-secondary-container);
227
+ display: grid;
228
+ place-items: center;
229
+ font-family: var(--npt-font-display);
230
+ font-weight: 700;
231
+ }
232
+ .body {
233
+ flex: 1 1 auto;
234
+ min-inline-size: 0;
235
+ }
236
+ .label {
237
+ font-family: var(--npt-font-text);
238
+ font-size: var(--npt-text-body-lg, 16px);
239
+ margin: 0;
240
+ white-space: nowrap;
241
+ overflow: hidden;
242
+ text-overflow: ellipsis;
243
+ }
244
+ .sub {
245
+ font-family: var(--npt-font-num);
246
+ font-variant-numeric: tabular-nums;
247
+ font-size: var(--npt-text-body, 14px);
248
+ color: var(--md-sys-color-on-surface-variant);
249
+ margin: 2px 0 0;
250
+ display: flex;
251
+ align-items: center;
252
+ gap: var(--npt-space-2, 8px);
253
+ }
254
+ .scheme {
255
+ text-transform: uppercase;
256
+ letter-spacing: 0.04em;
257
+ font-family: var(--npt-font-text);
258
+ }
259
+ .chevron {
260
+ flex: 0 0 auto;
261
+ color: var(--md-sys-color-on-surface-variant);
262
+ font-size: var(--npt-text-title, 18px);
263
+ line-height: 1;
264
+ display: none;
265
+ }
266
+ :host([interactive]) .chevron {
267
+ display: inline;
268
+ }
269
+ `;
270
+ }
271
+ render() {
272
+ const label = esc(this.getAttribute("label"));
273
+ const last4 = esc(this.getAttribute("last4"));
274
+ const scheme = esc(this.getAttribute("scheme"));
275
+ const initial = scheme.trim().charAt(0).toUpperCase() || label.trim().charAt(0).toUpperCase() || "•";
276
+ const interactive = this.hasAttribute("interactive");
277
+ const rowAttrs = interactive ? html `role="button" tabindex="0"` : html `role="group"`;
278
+ return html `<div class="row" part="row" ${rowAttrs} aria-label="${label} ${scheme} ending ${last4}">
279
+ <span class="brand" aria-hidden="true"><slot name="brand">${initial}</slot></span>
280
+ <div class="body">
281
+ <p class="label">${label}</p>
282
+ <p class="sub">
283
+ ${scheme ? html `<span class="scheme">${scheme}</span>` : ""}
284
+ <span>•••• ${last4}</span>
285
+ </p>
286
+ </div>
287
+ <span class="chevron" aria-hidden="true">›</span>
288
+ </div>`;
289
+ }
290
+ }
291
+ NptCardRow.observedAttributes = ["label", "last4", "scheme", "interactive"];
292
+ /**
293
+ * <npt-add-card>Add a new card</npt-add-card>
294
+ * Dashed call-to-action tile with a leading +. Behaves as a button (role/tabindex)
295
+ * and emits a bubbling `add` event on click / Enter / Space.
296
+ */
297
+ export class NptAddCard extends NptElement {
298
+ constructor() {
299
+ super(...arguments);
300
+ this.onClick = () => this.activate();
301
+ this.onKey = (e) => {
302
+ if (e.key === " " || e.key === "Enter") {
303
+ e.preventDefault();
304
+ this.activate();
305
+ }
306
+ };
307
+ }
308
+ attributeChangedCallback() {
309
+ if (this.isConnected)
310
+ this.update();
311
+ }
312
+ connectedCallback() {
313
+ super.connectedCallback();
314
+ this.addEventListener("click", this.onClick);
315
+ this.addEventListener("keydown", this.onKey);
316
+ }
317
+ disconnectedCallback() {
318
+ this.removeEventListener("click", this.onClick);
319
+ this.removeEventListener("keydown", this.onKey);
320
+ }
321
+ activate() {
322
+ if (this.hasAttribute("disabled"))
323
+ return;
324
+ this.dispatchEvent(new CustomEvent("add", { bubbles: true }));
325
+ }
326
+ styles() {
327
+ return css `
328
+ ${A11Y}
329
+ :host {
330
+ display: block;
331
+ cursor: pointer;
332
+ }
333
+ :host([disabled]) {
334
+ cursor: not-allowed;
335
+ opacity: 0.38;
336
+ }
337
+ .tile {
338
+ box-sizing: border-box;
339
+ inline-size: 100%;
340
+ min-height: 88px;
341
+ display: flex;
342
+ align-items: center;
343
+ gap: var(--npt-space-4, 16px);
344
+ padding-inline: var(--npt-space-5, 20px);
345
+ padding-block: var(--npt-space-4, 16px);
346
+ border: 2px dashed var(--md-sys-color-outline);
347
+ border-radius: var(--npt-corner-lg, 24px);
348
+ background: transparent;
349
+ color: var(--md-sys-color-on-surface-variant);
350
+ transition: border-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease),
351
+ background-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease),
352
+ color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
353
+ }
354
+ :host(:not([disabled])) .tile:hover {
355
+ border-color: var(--md-sys-color-primary);
356
+ background: var(--md-sys-color-primary-container);
357
+ color: var(--md-sys-color-on-primary-container);
358
+ }
359
+ .plus {
360
+ inline-size: 44px;
361
+ block-size: 44px;
362
+ flex: 0 0 auto;
363
+ border-radius: var(--npt-corner-full, 999px);
364
+ background: var(--md-sys-color-secondary-container);
365
+ color: var(--md-sys-color-on-secondary-container);
366
+ display: grid;
367
+ place-items: center;
368
+ font-family: var(--npt-font-display);
369
+ font-size: var(--npt-text-title, 18px);
370
+ font-weight: 700;
371
+ line-height: 1;
372
+ }
373
+ .label {
374
+ font-family: var(--npt-font-text);
375
+ font-size: var(--npt-text-body-lg, 16px);
376
+ }
377
+ `;
378
+ }
379
+ render() {
380
+ const disabled = this.hasAttribute("disabled");
381
+ const tabindex = disabled ? "-1" : "0";
382
+ return html `<div
383
+ class="tile"
384
+ part="tile"
385
+ role="button"
386
+ tabindex="${tabindex}"
387
+ aria-disabled="${disabled}"
388
+ >
389
+ <span class="plus" aria-hidden="true">+</span>
390
+ <span class="label"><slot>Add card</slot></span>
391
+ </div>`;
392
+ }
393
+ }
394
+ NptAddCard.observedAttributes = ["disabled"];
395
+ /**
396
+ * <npt-card-controls [frozen]></npt-card-controls>
397
+ * Row of toggle actions (Freeze, Limits, Details, PIN). Each press dispatches a
398
+ * bubbling `control` event whose detail is { action }. [frozen] flips the first
399
+ * action's label/affordance to Unfreeze.
400
+ */
401
+ export class NptCardControls extends NptElement {
402
+ constructor() {
403
+ super(...arguments);
404
+ this.onClick = (e) => {
405
+ const btn = e.target?.closest("[data-action]");
406
+ if (!btn)
407
+ return;
408
+ const action = btn.dataset["action"];
409
+ if (!action)
410
+ return;
411
+ this.dispatchEvent(new CustomEvent("control", { bubbles: true, detail: { action } }));
412
+ };
413
+ }
414
+ attributeChangedCallback() {
415
+ if (this.isConnected)
416
+ this.update();
417
+ }
418
+ connectedCallback() {
419
+ super.connectedCallback();
420
+ this.root.addEventListener("click", this.onClick);
421
+ }
422
+ disconnectedCallback() {
423
+ this.root.removeEventListener("click", this.onClick);
424
+ }
425
+ styles() {
426
+ return css `
427
+ ${A11Y}
428
+ :host {
429
+ display: block;
430
+ }
431
+ .bar {
432
+ display: flex;
433
+ gap: var(--npt-space-2, 8px);
434
+ }
435
+ button {
436
+ flex: 1 1 0;
437
+ min-inline-size: 0;
438
+ min-height: 64px;
439
+ display: flex;
440
+ flex-direction: column;
441
+ align-items: center;
442
+ justify-content: center;
443
+ gap: var(--npt-space-1, 4px);
444
+ padding-block: var(--npt-space-3, 12px);
445
+ padding-inline: var(--npt-space-2, 8px);
446
+ border: 1px solid var(--md-sys-color-outline-variant);
447
+ border-radius: var(--npt-corner-md, 16px);
448
+ background: var(--md-sys-color-surface-container-low);
449
+ color: var(--md-sys-color-on-surface);
450
+ font-family: var(--npt-font-text);
451
+ font-size: var(--npt-text-label, 14px);
452
+ cursor: pointer;
453
+ transition: background-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease),
454
+ color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
455
+ }
456
+ button:hover {
457
+ background: var(--md-sys-color-surface-container-high);
458
+ }
459
+ .glyph {
460
+ font-size: var(--npt-text-title, 18px);
461
+ line-height: 1;
462
+ }
463
+ button[data-action="freeze"][aria-pressed="true"] {
464
+ background: var(--md-sys-color-primary-container);
465
+ color: var(--md-sys-color-on-primary-container);
466
+ border-color: transparent;
467
+ }
468
+ `;
469
+ }
470
+ render() {
471
+ const frozen = this.hasAttribute("frozen");
472
+ const buttons = NptCardControls.ACTIONS.map((a) => {
473
+ const isFreeze = a.action === "freeze";
474
+ const label = isFreeze && frozen ? "Unfreeze" : a.label;
475
+ const pressed = isFreeze ? html `aria-pressed="${frozen}"` : "";
476
+ return html `<button
477
+ type="button"
478
+ part="control"
479
+ data-action="${esc(a.action)}"
480
+ aria-label="${esc(label)}"
481
+ ${pressed}
482
+ >
483
+ <span class="glyph" aria-hidden="true">${a.glyph}</span>
484
+ <span>${esc(label)}</span>
485
+ </button>`;
486
+ }).join("");
487
+ return html `<div class="bar" part="bar" role="group" aria-label="Card controls">${buttons}</div>`;
488
+ }
489
+ }
490
+ NptCardControls.observedAttributes = ["frozen"];
491
+ NptCardControls.ACTIONS = [
492
+ { action: "freeze", label: "Freeze", glyph: "❄" },
493
+ { action: "limits", label: "Limits", glyph: "⚖" },
494
+ { action: "details", label: "Details", glyph: "≣" },
495
+ { action: "pin", label: "PIN", glyph: "⊞" },
496
+ ];
497
+ void define;
498
+ //# sourceMappingURL=cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/components/cards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { NptElement } from "./base.js";
2
+ /**
3
+ * <npt-dialog [open] headline="Confirm">
4
+ * …content… <span slot="actions">…</span>
5
+ * </npt-dialog>
6
+ * Scrim + centred surface. ESC and backdrop close; focus-trap-lite.
7
+ */
8
+ export declare class NptDialog extends NptElement {
9
+ static observedAttributes: string[];
10
+ attributeChangedCallback(name: string): void;
11
+ connectedCallback(): void;
12
+ disconnectedCallback(): void;
13
+ /** Close the overlay and emit a `close` event. */
14
+ close(): void;
15
+ private focusFirst;
16
+ private onClick;
17
+ private onKey;
18
+ protected styles(): string;
19
+ protected render(): string;
20
+ }
21
+ /**
22
+ * <npt-bottom-sheet [open]>…content…</npt-bottom-sheet>
23
+ * Bottom-anchored sheet with a drag affordance + scrim. Backdrop/ESC close.
24
+ */
25
+ export declare class NptBottomSheet extends NptElement {
26
+ static observedAttributes: string[];
27
+ attributeChangedCallback(): void;
28
+ connectedCallback(): void;
29
+ disconnectedCallback(): void;
30
+ /** Close the sheet and emit a `close` event. */
31
+ close(): void;
32
+ private onClick;
33
+ private onKey;
34
+ protected styles(): string;
35
+ protected render(): string;
36
+ }
37
+ /**
38
+ * <npt-menu [open]> with <npt-menu-item> children.
39
+ * Anchored popover. Place inside a positioned ancestor for anchoring.
40
+ */
41
+ export declare class NptMenu extends NptElement {
42
+ static observedAttributes: string[];
43
+ attributeChangedCallback(): void;
44
+ protected styles(): string;
45
+ protected render(): string;
46
+ }
47
+ /** <npt-menu-item [disabled]>Settings</npt-menu-item> */
48
+ export declare class NptMenuItem extends NptElement {
49
+ static observedAttributes: string[];
50
+ attributeChangedCallback(): void;
51
+ protected styles(): string;
52
+ protected render(): string;
53
+ }
54
+ //# sourceMappingURL=containers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/components/containers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AAKxD;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,MAAM,CAAC,kBAAkB,WAAwB;IAEjD,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,iBAAiB,IAAI,IAAI;IAMlC,oBAAoB,IAAI,IAAI;IAK5B,kDAAkD;IAClD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,OAAO,CAGb;IAEF,OAAO,CAAC,KAAK,CAoBX;IAEF,SAAS,CAAC,MAAM,IAAI,MAAM;IAiD1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAU3B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,kBAAkB,WAAY;IAErC,wBAAwB,IAAI,IAAI;IAIvB,iBAAiB,IAAI,IAAI;IAMlC,oBAAoB,IAAI,IAAI;IAK5B,gDAAgD;IAChD,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,OAAO,CAGb;IAEF,OAAO,CAAC,KAAK,CAKX;IAEF,SAAS,CAAC,MAAM,IAAI,MAAM;IAwC1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAQ3B;AAED;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,CAAC,kBAAkB,WAAY;IAErC,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IAwB1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAG3B;AAED,yDAAyD;AACzD,qBAAa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,kBAAkB,WAAgB;IAEzC,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IAgC1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAM3B"}