@neptune.fintech/web-ui 2.1.0 → 2.3.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.
- package/dist/components/cards.d.ts +64 -0
- package/dist/components/cards.d.ts.map +1 -0
- package/dist/components/cards.js +508 -0
- package/dist/components/cards.js.map +1 -0
- package/dist/components/corporate.d.ts +84 -0
- package/dist/components/corporate.d.ts.map +1 -0
- package/dist/components/corporate.js +782 -0
- package/dist/components/corporate.js.map +1 -0
- package/dist/components/data-viz.d.ts +69 -0
- package/dist/components/data-viz.d.ts.map +1 -0
- package/dist/components/data-viz.js +526 -0
- package/dist/components/data-viz.js.map +1 -0
- package/dist/components/feedback-status.d.ts +80 -0
- package/dist/components/feedback-status.d.ts.map +1 -0
- package/dist/components/feedback-status.js +537 -0
- package/dist/components/feedback-status.js.map +1 -0
- package/dist/components/money-inputs.d.ts +105 -0
- package/dist/components/money-inputs.d.ts.map +1 -0
- package/dist/components/money-inputs.js +766 -0
- package/dist/components/money-inputs.js.map +1 -0
- package/dist/components/money-movement.d.ts +79 -0
- package/dist/components/money-movement.d.ts.map +1 -0
- package/dist/components/money-movement.js +740 -0
- package/dist/components/money-movement.js.map +1 -0
- package/dist/components/premium.d.ts +38 -0
- package/dist/components/premium.d.ts.map +1 -0
- package/dist/components/premium.js +275 -0
- package/dist/components/premium.js.map +1 -0
- package/dist/components/shell-layout.d.ts +103 -0
- package/dist/components/shell-layout.d.ts.map +1 -0
- package/dist/components/shell-layout.js +582 -0
- package/dist/components/shell-layout.js.map +1 -0
- package/dist/components/wallet-pay.d.ts +85 -0
- package/dist/components/wallet-pay.d.ts.map +1 -0
- package/dist/components/wallet-pay.js +633 -0
- package/dist/components/wallet-pay.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +70 -0
- package/dist/register.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
// © 2026 Neptune.Fintech (neptune.ly) · Neptune Odyssey Community License v1.0
|
|
2
|
+
// Neptune Odyssey — application shell & layout
|
|
3
|
+
// <npt-app-shell>, <npt-page-header>, <npt-section>, <npt-side-nav>,
|
|
4
|
+
// <npt-side-nav-item>, <npt-search-field>, <npt-toolbar>.
|
|
5
|
+
// Custom-property driven only; logical layout → mirrors in RTL.
|
|
6
|
+
import { NptElement, css, html, A11Y } from "./base.js";
|
|
7
|
+
const esc = (v) => (v ?? "").replace(/[&<>"]/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """ })[c]);
|
|
8
|
+
/**
|
|
9
|
+
* <npt-app-shell [rail]>
|
|
10
|
+
* <header slot="header">…</header>
|
|
11
|
+
* <npt-side-nav slot="nav">…</npt-side-nav>
|
|
12
|
+
* …content…
|
|
13
|
+
* </npt-app-shell>
|
|
14
|
+
* The application frame: a sticky `header` row, an inline-start `nav` sidebar
|
|
15
|
+
* (collapses to a narrow rail via [rail]), and the default content region. The
|
|
16
|
+
* nav hides under a compact breakpoint so the content takes the full width.
|
|
17
|
+
*/
|
|
18
|
+
export class NptAppShell extends NptElement {
|
|
19
|
+
attributeChangedCallback() {
|
|
20
|
+
if (this.isConnected)
|
|
21
|
+
this.update();
|
|
22
|
+
}
|
|
23
|
+
styles() {
|
|
24
|
+
return css `
|
|
25
|
+
${A11Y}
|
|
26
|
+
:host {
|
|
27
|
+
display: block;
|
|
28
|
+
block-size: 100%;
|
|
29
|
+
background: var(--md-sys-color-surface);
|
|
30
|
+
color: var(--md-sys-color-on-surface);
|
|
31
|
+
}
|
|
32
|
+
.shell {
|
|
33
|
+
display: grid;
|
|
34
|
+
grid-template-columns: auto 1fr;
|
|
35
|
+
grid-template-rows: auto 1fr;
|
|
36
|
+
grid-template-areas:
|
|
37
|
+
"header header"
|
|
38
|
+
"nav main";
|
|
39
|
+
min-block-size: 100%;
|
|
40
|
+
box-sizing: border-box;
|
|
41
|
+
}
|
|
42
|
+
.header {
|
|
43
|
+
grid-area: header;
|
|
44
|
+
position: sticky;
|
|
45
|
+
inset-block-start: 0;
|
|
46
|
+
z-index: 2;
|
|
47
|
+
background: var(--md-sys-color-surface-container);
|
|
48
|
+
color: var(--md-sys-color-on-surface);
|
|
49
|
+
}
|
|
50
|
+
.nav {
|
|
51
|
+
grid-area: nav;
|
|
52
|
+
inline-size: 280px;
|
|
53
|
+
min-inline-size: 0;
|
|
54
|
+
background: var(--md-sys-color-surface-container-low);
|
|
55
|
+
border-inline-end: 1px solid var(--md-sys-color-outline-variant);
|
|
56
|
+
overflow: auto;
|
|
57
|
+
transition: inline-size var(--npt-dur-standard, 250ms) var(--npt-ease-emphasized, ease);
|
|
58
|
+
}
|
|
59
|
+
:host([rail]) .nav {
|
|
60
|
+
inline-size: 88px;
|
|
61
|
+
}
|
|
62
|
+
.main {
|
|
63
|
+
grid-area: main;
|
|
64
|
+
min-inline-size: 0;
|
|
65
|
+
padding: var(--npt-space-6, 24px);
|
|
66
|
+
background: var(--md-sys-color-surface);
|
|
67
|
+
box-sizing: border-box;
|
|
68
|
+
}
|
|
69
|
+
@media (max-width: 768px) {
|
|
70
|
+
.shell {
|
|
71
|
+
grid-template-columns: 1fr;
|
|
72
|
+
grid-template-areas:
|
|
73
|
+
"header"
|
|
74
|
+
"main";
|
|
75
|
+
}
|
|
76
|
+
.nav {
|
|
77
|
+
display: none;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
}
|
|
82
|
+
render() {
|
|
83
|
+
return html `<div class="shell" part="shell">
|
|
84
|
+
<div class="header" part="header"><slot name="header"></slot></div>
|
|
85
|
+
<aside class="nav" part="nav"><slot name="nav"></slot></aside>
|
|
86
|
+
<main class="main" part="main"><slot></slot></main>
|
|
87
|
+
</div>`;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
NptAppShell.observedAttributes = ["rail"];
|
|
91
|
+
/**
|
|
92
|
+
* <npt-page-header title="Accounts" subtitle="All your balances">
|
|
93
|
+
* <npt-breadcrumbs slot="breadcrumb">…</npt-breadcrumbs>
|
|
94
|
+
* <npt-button slot="actions">New</npt-button>
|
|
95
|
+
* </npt-page-header>
|
|
96
|
+
* The page-level masthead. Display font; optional breadcrumb above, actions
|
|
97
|
+
* inline-end of the title row, optional supporting subtitle below.
|
|
98
|
+
*/
|
|
99
|
+
export class NptPageHeader extends NptElement {
|
|
100
|
+
attributeChangedCallback() {
|
|
101
|
+
if (this.isConnected)
|
|
102
|
+
this.update();
|
|
103
|
+
}
|
|
104
|
+
styles() {
|
|
105
|
+
return css `
|
|
106
|
+
:host {
|
|
107
|
+
display: block;
|
|
108
|
+
}
|
|
109
|
+
.header {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-direction: column;
|
|
112
|
+
gap: var(--npt-space-2, 8px);
|
|
113
|
+
padding-block-end: var(--npt-space-5, 20px);
|
|
114
|
+
}
|
|
115
|
+
.crumbs {
|
|
116
|
+
font-family: var(--npt-font-text);
|
|
117
|
+
font-size: var(--npt-text-label, 14px);
|
|
118
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
119
|
+
}
|
|
120
|
+
.row {
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
gap: var(--npt-space-4, 16px);
|
|
124
|
+
flex-wrap: wrap;
|
|
125
|
+
}
|
|
126
|
+
.title {
|
|
127
|
+
flex: 1 1 auto;
|
|
128
|
+
min-inline-size: 0;
|
|
129
|
+
font-family: var(--npt-font-display);
|
|
130
|
+
font-size: var(--npt-text-display-md, 45px);
|
|
131
|
+
line-height: var(--npt-leading-display-md, 52px);
|
|
132
|
+
font-weight: var(--npt-display-weight, 700);
|
|
133
|
+
letter-spacing: var(--npt-display-tracking, -0.02em);
|
|
134
|
+
color: var(--md-sys-color-on-surface);
|
|
135
|
+
margin: 0;
|
|
136
|
+
}
|
|
137
|
+
.actions {
|
|
138
|
+
display: inline-flex;
|
|
139
|
+
align-items: center;
|
|
140
|
+
gap: var(--npt-space-2, 8px);
|
|
141
|
+
flex: 0 0 auto;
|
|
142
|
+
}
|
|
143
|
+
.subtitle {
|
|
144
|
+
font-family: var(--npt-font-text);
|
|
145
|
+
font-size: var(--npt-text-title, 18px);
|
|
146
|
+
line-height: var(--npt-leading-title, 24px);
|
|
147
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
148
|
+
margin: 0;
|
|
149
|
+
}
|
|
150
|
+
`;
|
|
151
|
+
}
|
|
152
|
+
render() {
|
|
153
|
+
const title = esc(this.getAttribute("title"));
|
|
154
|
+
const subtitle = esc(this.getAttribute("subtitle"));
|
|
155
|
+
return html `<header class="header" part="header">
|
|
156
|
+
<div class="crumbs" part="breadcrumb"><slot name="breadcrumb"></slot></div>
|
|
157
|
+
<div class="row">
|
|
158
|
+
<h1 class="title" part="title">${title}</h1>
|
|
159
|
+
<div class="actions" part="actions"><slot name="actions"></slot></div>
|
|
160
|
+
</div>
|
|
161
|
+
${subtitle ? html `<p class="subtitle" part="subtitle">${subtitle}</p>` : ""}
|
|
162
|
+
</header>`;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
NptPageHeader.observedAttributes = ["title", "subtitle"];
|
|
166
|
+
/**
|
|
167
|
+
* <npt-section title="Recent activity" description="Last 30 days">…</npt-section>
|
|
168
|
+
* A titled content section with an optional supporting description and a default
|
|
169
|
+
* slot for the section body.
|
|
170
|
+
*/
|
|
171
|
+
export class NptSection extends NptElement {
|
|
172
|
+
attributeChangedCallback() {
|
|
173
|
+
if (this.isConnected)
|
|
174
|
+
this.update();
|
|
175
|
+
}
|
|
176
|
+
styles() {
|
|
177
|
+
return css `
|
|
178
|
+
:host {
|
|
179
|
+
display: block;
|
|
180
|
+
}
|
|
181
|
+
.section {
|
|
182
|
+
display: block;
|
|
183
|
+
margin-block-end: var(--npt-space-8, 40px);
|
|
184
|
+
}
|
|
185
|
+
.head {
|
|
186
|
+
margin-block-end: var(--npt-space-4, 16px);
|
|
187
|
+
}
|
|
188
|
+
.title {
|
|
189
|
+
font-family: var(--npt-font-display);
|
|
190
|
+
font-size: var(--npt-text-headline, 28px);
|
|
191
|
+
line-height: var(--npt-leading-headline, 36px);
|
|
192
|
+
font-weight: var(--npt-display-weight, 700);
|
|
193
|
+
letter-spacing: var(--npt-display-tracking, -0.02em);
|
|
194
|
+
color: var(--md-sys-color-on-surface);
|
|
195
|
+
margin: 0;
|
|
196
|
+
}
|
|
197
|
+
.description {
|
|
198
|
+
font-family: var(--npt-font-text);
|
|
199
|
+
font-size: var(--npt-text-body, 14px);
|
|
200
|
+
line-height: var(--npt-leading-body, 20px);
|
|
201
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
202
|
+
margin: var(--npt-space-1, 4px) 0 0;
|
|
203
|
+
}
|
|
204
|
+
.body {
|
|
205
|
+
display: block;
|
|
206
|
+
}
|
|
207
|
+
`;
|
|
208
|
+
}
|
|
209
|
+
render() {
|
|
210
|
+
const title = esc(this.getAttribute("title"));
|
|
211
|
+
const description = esc(this.getAttribute("description"));
|
|
212
|
+
return html `<section class="section" part="section">
|
|
213
|
+
${title || description
|
|
214
|
+
? html `<div class="head" part="head">
|
|
215
|
+
${title ? html `<h2 class="title" part="title">${title}</h2>` : ""}
|
|
216
|
+
${description ? html `<p class="description" part="description">${description}</p>` : ""}
|
|
217
|
+
</div>`
|
|
218
|
+
: ""}
|
|
219
|
+
<div class="body" part="body"><slot></slot></div>
|
|
220
|
+
</section>`;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
NptSection.observedAttributes = ["title", "description"];
|
|
224
|
+
/**
|
|
225
|
+
* <npt-side-nav> with <npt-side-nav-item> children — the vertical sidebar nav.
|
|
226
|
+
* Clicking an item activates it (sets [active] exclusively) and re-emits the
|
|
227
|
+
* item's `select` event from the container.
|
|
228
|
+
*/
|
|
229
|
+
export class NptSideNav extends NptElement {
|
|
230
|
+
constructor() {
|
|
231
|
+
super(...arguments);
|
|
232
|
+
this.onSelect = (e) => {
|
|
233
|
+
const item = e.target?.closest("npt-side-nav-item");
|
|
234
|
+
if (!item || item === this)
|
|
235
|
+
return;
|
|
236
|
+
for (const i of this.querySelectorAll("npt-side-nav-item")) {
|
|
237
|
+
i.toggleAttribute("active", i === item);
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
connectedCallback() {
|
|
242
|
+
super.connectedCallback();
|
|
243
|
+
this.addEventListener("select", this.onSelect);
|
|
244
|
+
}
|
|
245
|
+
disconnectedCallback() {
|
|
246
|
+
this.removeEventListener("select", this.onSelect);
|
|
247
|
+
}
|
|
248
|
+
styles() {
|
|
249
|
+
return css `
|
|
250
|
+
:host {
|
|
251
|
+
display: block;
|
|
252
|
+
block-size: 100%;
|
|
253
|
+
}
|
|
254
|
+
.nav {
|
|
255
|
+
display: flex;
|
|
256
|
+
flex-direction: column;
|
|
257
|
+
gap: var(--npt-space-1, 4px);
|
|
258
|
+
padding-block: var(--npt-space-3, 12px);
|
|
259
|
+
padding-inline: var(--npt-space-3, 12px);
|
|
260
|
+
block-size: 100%;
|
|
261
|
+
background: var(--md-sys-color-surface-container);
|
|
262
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
263
|
+
box-sizing: border-box;
|
|
264
|
+
}
|
|
265
|
+
`;
|
|
266
|
+
}
|
|
267
|
+
render() {
|
|
268
|
+
return html `<nav class="nav" part="nav" role="navigation"><slot></slot></nav>`;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* <npt-side-nav-item label="Dashboard" [active]>
|
|
273
|
+
* <span slot="icon">▦</span><npt-badge slot="leading">3</npt-badge>
|
|
274
|
+
* </npt-side-nav-item>
|
|
275
|
+
* One row of <npt-side-nav>. Emits `select` on activation. `icon` slots before
|
|
276
|
+
* the label; `leading` slots inline-end (counts/badges).
|
|
277
|
+
*/
|
|
278
|
+
export class NptSideNavItem extends NptElement {
|
|
279
|
+
constructor() {
|
|
280
|
+
super(...arguments);
|
|
281
|
+
this.onClick = () => this.activate();
|
|
282
|
+
this.onKey = (e) => {
|
|
283
|
+
if (e.key === " " || e.key === "Enter") {
|
|
284
|
+
e.preventDefault();
|
|
285
|
+
this.activate();
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
attributeChangedCallback() {
|
|
290
|
+
if (this.isConnected)
|
|
291
|
+
this.update();
|
|
292
|
+
}
|
|
293
|
+
connectedCallback() {
|
|
294
|
+
super.connectedCallback();
|
|
295
|
+
this.addEventListener("click", this.onClick);
|
|
296
|
+
this.addEventListener("keydown", this.onKey);
|
|
297
|
+
}
|
|
298
|
+
disconnectedCallback() {
|
|
299
|
+
this.removeEventListener("click", this.onClick);
|
|
300
|
+
this.removeEventListener("keydown", this.onKey);
|
|
301
|
+
}
|
|
302
|
+
activate() {
|
|
303
|
+
if (this.hasAttribute("disabled"))
|
|
304
|
+
return;
|
|
305
|
+
this.dispatchEvent(new CustomEvent("select", { bubbles: true }));
|
|
306
|
+
}
|
|
307
|
+
styles() {
|
|
308
|
+
return css `
|
|
309
|
+
${A11Y}
|
|
310
|
+
:host {
|
|
311
|
+
display: block;
|
|
312
|
+
}
|
|
313
|
+
:host([disabled]) {
|
|
314
|
+
pointer-events: none;
|
|
315
|
+
}
|
|
316
|
+
.item {
|
|
317
|
+
inline-size: 100%;
|
|
318
|
+
display: flex;
|
|
319
|
+
align-items: center;
|
|
320
|
+
gap: var(--npt-space-3, 12px);
|
|
321
|
+
min-height: 48px;
|
|
322
|
+
padding-inline: var(--npt-space-4, 16px);
|
|
323
|
+
padding-block: var(--npt-space-2, 8px);
|
|
324
|
+
border: none;
|
|
325
|
+
border-radius: var(--npt-corner-full, 999px);
|
|
326
|
+
background: transparent;
|
|
327
|
+
color: inherit;
|
|
328
|
+
text-align: start;
|
|
329
|
+
cursor: pointer;
|
|
330
|
+
font-family: var(--npt-font-text);
|
|
331
|
+
font-size: var(--npt-text-label, 14px);
|
|
332
|
+
font-weight: 600;
|
|
333
|
+
box-sizing: border-box;
|
|
334
|
+
transition: background-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease),
|
|
335
|
+
color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
|
|
336
|
+
}
|
|
337
|
+
.item:hover {
|
|
338
|
+
background: var(--md-sys-color-surface-container-high);
|
|
339
|
+
color: var(--md-sys-color-on-surface);
|
|
340
|
+
}
|
|
341
|
+
:host([active]) .item {
|
|
342
|
+
background: var(--md-sys-color-secondary-container);
|
|
343
|
+
color: var(--md-sys-color-on-secondary-container);
|
|
344
|
+
}
|
|
345
|
+
:host([disabled]) .item {
|
|
346
|
+
cursor: not-allowed;
|
|
347
|
+
opacity: 0.38;
|
|
348
|
+
}
|
|
349
|
+
.icon {
|
|
350
|
+
display: inline-flex;
|
|
351
|
+
flex: 0 0 auto;
|
|
352
|
+
}
|
|
353
|
+
.label {
|
|
354
|
+
flex: 1 1 auto;
|
|
355
|
+
min-inline-size: 0;
|
|
356
|
+
white-space: nowrap;
|
|
357
|
+
overflow: hidden;
|
|
358
|
+
text-overflow: ellipsis;
|
|
359
|
+
}
|
|
360
|
+
::slotted([slot="leading"]) {
|
|
361
|
+
margin-inline-start: auto;
|
|
362
|
+
flex: 0 0 auto;
|
|
363
|
+
}
|
|
364
|
+
`;
|
|
365
|
+
}
|
|
366
|
+
render() {
|
|
367
|
+
const label = esc(this.getAttribute("label"));
|
|
368
|
+
const active = this.hasAttribute("active");
|
|
369
|
+
const disabled = this.hasAttribute("disabled") ? "disabled" : "";
|
|
370
|
+
return html `<button
|
|
371
|
+
class="item"
|
|
372
|
+
part="item"
|
|
373
|
+
type="button"
|
|
374
|
+
aria-current="${active ? "page" : "false"}"
|
|
375
|
+
${disabled}
|
|
376
|
+
>
|
|
377
|
+
<span class="icon" aria-hidden="true"><slot name="icon"></slot></span>
|
|
378
|
+
<span class="label">${label}</span>
|
|
379
|
+
<slot name="leading"></slot>
|
|
380
|
+
</button>`;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
NptSideNavItem.observedAttributes = ["label", "active", "disabled"];
|
|
384
|
+
/**
|
|
385
|
+
* <npt-search-field placeholder="Search accounts" value=""></npt-search-field>
|
|
386
|
+
* A search input with a leading magnifier and a clear control. Emits a `search`
|
|
387
|
+
* event (detail.value) on input, lightly debounced, and on clear.
|
|
388
|
+
*/
|
|
389
|
+
export class NptSearchField extends NptElement {
|
|
390
|
+
constructor() {
|
|
391
|
+
super(...arguments);
|
|
392
|
+
this.timer = 0;
|
|
393
|
+
this.onInput = (e) => {
|
|
394
|
+
const input = e.target;
|
|
395
|
+
this.setAttribute("value", input.value);
|
|
396
|
+
this.syncClear(input.value);
|
|
397
|
+
if (this.timer)
|
|
398
|
+
clearTimeout(this.timer);
|
|
399
|
+
this.timer = setTimeout(() => this.emit(input.value), 180);
|
|
400
|
+
};
|
|
401
|
+
this.onClick = (e) => {
|
|
402
|
+
if (!e.target?.closest(".clear"))
|
|
403
|
+
return;
|
|
404
|
+
const input = this.root.querySelector("input");
|
|
405
|
+
if (input) {
|
|
406
|
+
input.value = "";
|
|
407
|
+
input.focus();
|
|
408
|
+
}
|
|
409
|
+
this.setAttribute("value", "");
|
|
410
|
+
this.syncClear("");
|
|
411
|
+
if (this.timer)
|
|
412
|
+
clearTimeout(this.timer);
|
|
413
|
+
this.emit("");
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
attributeChangedCallback() {
|
|
417
|
+
if (this.isConnected)
|
|
418
|
+
this.update();
|
|
419
|
+
}
|
|
420
|
+
get value() {
|
|
421
|
+
return this.root.querySelector("input")?.value ?? this.getAttribute("value") ?? "";
|
|
422
|
+
}
|
|
423
|
+
connectedCallback() {
|
|
424
|
+
super.connectedCallback();
|
|
425
|
+
this.root.addEventListener("input", this.onInput);
|
|
426
|
+
this.root.addEventListener("click", this.onClick);
|
|
427
|
+
}
|
|
428
|
+
disconnectedCallback() {
|
|
429
|
+
this.root.removeEventListener("input", this.onInput);
|
|
430
|
+
this.root.removeEventListener("click", this.onClick);
|
|
431
|
+
if (this.timer)
|
|
432
|
+
clearTimeout(this.timer);
|
|
433
|
+
}
|
|
434
|
+
emit(value) {
|
|
435
|
+
this.dispatchEvent(new CustomEvent("search", { detail: { value }, bubbles: true }));
|
|
436
|
+
}
|
|
437
|
+
syncClear(value) {
|
|
438
|
+
const clear = this.root.querySelector(".clear");
|
|
439
|
+
if (clear)
|
|
440
|
+
clear.hidden = value.length === 0;
|
|
441
|
+
}
|
|
442
|
+
styles() {
|
|
443
|
+
return css `
|
|
444
|
+
${A11Y}
|
|
445
|
+
:host {
|
|
446
|
+
display: block;
|
|
447
|
+
}
|
|
448
|
+
.field {
|
|
449
|
+
display: flex;
|
|
450
|
+
align-items: center;
|
|
451
|
+
gap: var(--npt-space-2, 8px);
|
|
452
|
+
min-height: 48px;
|
|
453
|
+
padding-inline: var(--npt-space-4, 16px);
|
|
454
|
+
border-radius: var(--npt-corner-full, 999px);
|
|
455
|
+
background: var(--md-sys-color-surface-container-high);
|
|
456
|
+
color: var(--md-sys-color-on-surface);
|
|
457
|
+
border: 1px solid transparent;
|
|
458
|
+
box-sizing: border-box;
|
|
459
|
+
transition: border-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
|
|
460
|
+
}
|
|
461
|
+
.field:focus-within {
|
|
462
|
+
border-color: var(--md-sys-color-primary);
|
|
463
|
+
}
|
|
464
|
+
:host([disabled]) .field {
|
|
465
|
+
opacity: 0.38;
|
|
466
|
+
pointer-events: none;
|
|
467
|
+
}
|
|
468
|
+
.glyph {
|
|
469
|
+
flex: 0 0 auto;
|
|
470
|
+
display: inline-flex;
|
|
471
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
472
|
+
font-size: var(--npt-text-body-lg, 16px);
|
|
473
|
+
line-height: 1;
|
|
474
|
+
}
|
|
475
|
+
input {
|
|
476
|
+
flex: 1 1 auto;
|
|
477
|
+
min-inline-size: 0;
|
|
478
|
+
border: none;
|
|
479
|
+
background: transparent;
|
|
480
|
+
outline: none;
|
|
481
|
+
color: inherit;
|
|
482
|
+
font-family: var(--npt-font-text);
|
|
483
|
+
font-size: var(--npt-text-body-lg, 16px);
|
|
484
|
+
}
|
|
485
|
+
input::placeholder {
|
|
486
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
487
|
+
opacity: 0.7;
|
|
488
|
+
}
|
|
489
|
+
input::-webkit-search-cancel-button {
|
|
490
|
+
display: none;
|
|
491
|
+
}
|
|
492
|
+
.clear {
|
|
493
|
+
flex: 0 0 auto;
|
|
494
|
+
inline-size: 28px;
|
|
495
|
+
block-size: 28px;
|
|
496
|
+
display: inline-grid;
|
|
497
|
+
place-items: center;
|
|
498
|
+
border: none;
|
|
499
|
+
border-radius: var(--npt-corner-full, 999px);
|
|
500
|
+
background: transparent;
|
|
501
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
502
|
+
cursor: pointer;
|
|
503
|
+
font-size: var(--npt-text-body, 14px);
|
|
504
|
+
line-height: 1;
|
|
505
|
+
}
|
|
506
|
+
.clear:hover {
|
|
507
|
+
background: var(--md-sys-color-surface-container-highest);
|
|
508
|
+
color: var(--md-sys-color-on-surface);
|
|
509
|
+
}
|
|
510
|
+
`;
|
|
511
|
+
}
|
|
512
|
+
render() {
|
|
513
|
+
const placeholder = esc(this.getAttribute("placeholder")) || "Search";
|
|
514
|
+
const value = esc(this.getAttribute("value"));
|
|
515
|
+
const disabled = this.hasAttribute("disabled") ? "disabled" : "";
|
|
516
|
+
const hideClear = value.length === 0 ? "hidden" : "";
|
|
517
|
+
return html `<div class="field" part="field" role="search">
|
|
518
|
+
<span class="glyph" aria-hidden="true">⌕</span>
|
|
519
|
+
<input
|
|
520
|
+
type="search"
|
|
521
|
+
value="${value}"
|
|
522
|
+
placeholder="${placeholder}"
|
|
523
|
+
aria-label="${placeholder}"
|
|
524
|
+
${disabled}
|
|
525
|
+
/>
|
|
526
|
+
<button class="clear" part="clear" type="button" aria-label="Clear search" ${hideClear}>✕</button>
|
|
527
|
+
</div>`;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
NptSearchField.observedAttributes = ["placeholder", "value", "disabled"];
|
|
531
|
+
/**
|
|
532
|
+
* <npt-toolbar>
|
|
533
|
+
* <…slot="start"></…><…slot="center"></…><…slot="end"></…>
|
|
534
|
+
* </npt-toolbar>
|
|
535
|
+
* A horizontal toolbar surface with start / center / end regions. `start` and
|
|
536
|
+
* `end` mirror in RTL via logical layout; `center` stays centred.
|
|
537
|
+
*/
|
|
538
|
+
export class NptToolbar extends NptElement {
|
|
539
|
+
styles() {
|
|
540
|
+
return css `
|
|
541
|
+
${A11Y}
|
|
542
|
+
:host {
|
|
543
|
+
display: block;
|
|
544
|
+
}
|
|
545
|
+
.bar {
|
|
546
|
+
display: flex;
|
|
547
|
+
align-items: center;
|
|
548
|
+
gap: var(--npt-space-3, 12px);
|
|
549
|
+
min-height: 56px;
|
|
550
|
+
padding-inline: var(--npt-space-4, 16px);
|
|
551
|
+
padding-block: var(--npt-space-2, 8px);
|
|
552
|
+
border-radius: var(--npt-corner-lg, 24px);
|
|
553
|
+
background: var(--md-sys-color-surface-container);
|
|
554
|
+
color: var(--md-sys-color-on-surface);
|
|
555
|
+
box-sizing: border-box;
|
|
556
|
+
}
|
|
557
|
+
.start,
|
|
558
|
+
.end {
|
|
559
|
+
display: inline-flex;
|
|
560
|
+
align-items: center;
|
|
561
|
+
gap: var(--npt-space-2, 8px);
|
|
562
|
+
flex: 0 0 auto;
|
|
563
|
+
}
|
|
564
|
+
.center {
|
|
565
|
+
display: inline-flex;
|
|
566
|
+
align-items: center;
|
|
567
|
+
justify-content: center;
|
|
568
|
+
gap: var(--npt-space-2, 8px);
|
|
569
|
+
flex: 1 1 auto;
|
|
570
|
+
min-inline-size: 0;
|
|
571
|
+
}
|
|
572
|
+
`;
|
|
573
|
+
}
|
|
574
|
+
render() {
|
|
575
|
+
return html `<div class="bar" part="bar" role="toolbar">
|
|
576
|
+
<div class="start" part="start"><slot name="start"></slot></div>
|
|
577
|
+
<div class="center" part="center"><slot name="center"></slot></div>
|
|
578
|
+
<div class="end" part="end"><slot name="end"></slot></div>
|
|
579
|
+
</div>`;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
//# sourceMappingURL=shell-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-layout.js","sourceRoot":"","sources":["../../src/components/shell-layout.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+CAA+C;AAC/C,qEAAqE;AACrE,0DAA0D;AAC1D,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAU,EAAE,CACvC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;AAEvG;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAY,SAAQ,UAAU;IAGzC,wBAAwB;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAES,MAAM;QACd,OAAO,GAAG,CAAA;QACN,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDP,CAAC;IACJ,CAAC;IAES,MAAM;QACd,OAAO,IAAI,CAAA;;;;WAIJ,CAAC;IACV,CAAC;;AAxEM,8BAAkB,GAAG,CAAC,MAAM,CAAC,CAAC;AA2EvC;;;;;;;GAOG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAG3C,wBAAwB;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAES,MAAM;QACd,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6CT,CAAC;IACJ,CAAC;IAES,MAAM;QACd,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAA;;;yCAG0B,KAAK;;;QAGtC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,uCAAuC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE;cACnE,CAAC;IACb,CAAC;;AAlEM,gCAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAqEpD;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,UAAU;IAGxC,wBAAwB;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAES,MAAM;QACd,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BT,CAAC;IACJ,CAAC;IAES,MAAM;QACd,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAA;QACP,KAAK,IAAI,WAAW;YACpB,CAAC,CAAC,IAAI,CAAA;cACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,kCAAkC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;cAC/D,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,6CAA6C,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE;iBAClF;YACT,CAAC,CAAC,EAAE;;eAEG,CAAC;IACd,CAAC;;AApDM,6BAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAuDvD;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QAUU,aAAQ,GAAG,CAAC,CAAQ,EAAQ,EAAE;YACpC,MAAM,IAAI,GAAI,CAAC,CAAC,MAAsB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO;YACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC3D,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IAyBJ,CAAC;IAxCU,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAUS,MAAM;QACd,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;KAgBT,CAAC;IACJ,CAAC;IAES,MAAM;QACd,OAAO,IAAI,CAAA,mEAAmE,CAAC;IACjF,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,UAAU;IAA9C;;QAuBU,YAAO,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,UAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE;YACzC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;IA8EJ,CAAC;IAxGC,wBAAwB;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAAE,OAAO;QAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAUS,MAAM;QACd,OAAO,GAAG,CAAA;QACN,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDP,CAAC;IACJ,CAAC;IAES,MAAM;QACd,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAA;;;;sBAIO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;QACvC,QAAQ;;;4BAGY,KAAK;;cAEnB,CAAC;IACb,CAAC;;AAzGM,iCAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,AAAlC,CAAmC;AA4G9D;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,UAAU;IAA9C;;QAEU,UAAK,GAAG,CAAC,CAAC;QA+BV,YAAO,GAAG,CAAC,CAAQ,EAAQ,EAAE;YACnC,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,KAAK;gBAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAsB,CAAC;QAClF,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,CAAQ,EAAQ,EAAE;YACnC,IAAI,CAAE,CAAC,CAAC,MAAsB,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK;gBAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC;IA0FJ,CAAC;IA1IC,wBAAwB;QACtB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrF,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEO,IAAI,CAAC,KAAa;QACxB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAuB,CAAC;QACtE,IAAI,KAAK;YAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/C,CAAC;IAuBS,MAAM;QACd,OAAO,GAAG,CAAA;QACN,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkEP,CAAC;IACJ,CAAC;IAES,MAAM;QACd,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,QAAQ,CAAC;QACtE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAA;;;;iBAIE,KAAK;uBACC,WAAW;sBACZ,WAAW;UACvB,QAAQ;;mFAEiE,SAAS;WACjF,CAAC;IACV,CAAC;;AA5IM,iCAAkB,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,AAAvC,CAAwC;AA+InE;;;;;;GAMG;AACH,MAAM,OAAO,UAAW,SAAQ,UAAU;IAC9B,MAAM;QACd,OAAO,GAAG,CAAA;QACN,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BP,CAAC;IACJ,CAAC;IAES,MAAM;QACd,OAAO,IAAI,CAAA;;;;WAIJ,CAAC;IACV,CAAC;CACF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { NptElement } from "./base.js";
|
|
2
|
+
/**
|
|
3
|
+
* <npt-quick-actions> with <npt-quick-action> children.
|
|
4
|
+
* A responsive grid of action tiles. Clicking a child emits a bubbling `select`
|
|
5
|
+
* event from the grid carrying the chosen tile's label.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NptQuickActions extends NptElement {
|
|
8
|
+
connectedCallback(): void;
|
|
9
|
+
disconnectedCallback(): void;
|
|
10
|
+
private activate;
|
|
11
|
+
private onClick;
|
|
12
|
+
private onKey;
|
|
13
|
+
protected styles(): string;
|
|
14
|
+
protected render(): string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* <npt-quick-action label="Send"><svg slot="icon">…</svg></npt-quick-action>
|
|
18
|
+
* A single tile inside <npt-quick-actions>. Provide the glyph via the `icon` slot.
|
|
19
|
+
*/
|
|
20
|
+
export declare class NptQuickAction extends NptElement {
|
|
21
|
+
static observedAttributes: string[];
|
|
22
|
+
attributeChangedCallback(): void;
|
|
23
|
+
protected styles(): string;
|
|
24
|
+
protected render(): string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* <npt-merchant-row name="Acme" category="Groceries" amount="-42.00" currency="LYD"
|
|
28
|
+
* time="14:32" [pending]>
|
|
29
|
+
* <img slot="logo" src="…" alt="" />
|
|
30
|
+
* </npt-merchant-row>
|
|
31
|
+
* Provide a logo via the `logo` slot; falls back to the name's initials.
|
|
32
|
+
*/
|
|
33
|
+
export declare class NptMerchantRow extends NptElement {
|
|
34
|
+
static observedAttributes: string[];
|
|
35
|
+
attributeChangedCallback(): void;
|
|
36
|
+
protected styles(): string;
|
|
37
|
+
protected render(): string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* <npt-voucher-card title="20% off" value="−20%" code="NEPTUNE20" expiry="Exp 31 Dec">
|
|
41
|
+
* …optional default-slot detail…
|
|
42
|
+
* </npt-voucher-card>
|
|
43
|
+
* A coupon visual with punched dashed-notch edges (radial-gradient masks).
|
|
44
|
+
*/
|
|
45
|
+
export declare class NptVoucherCard extends NptElement {
|
|
46
|
+
static observedAttributes: string[];
|
|
47
|
+
attributeChangedCallback(): void;
|
|
48
|
+
protected styles(): string;
|
|
49
|
+
protected render(): string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* <npt-qr-pay amount="42.00" currency="LYD" merchant="Acme Store">
|
|
53
|
+
* <img slot="qr" src="…" alt="QR code" />
|
|
54
|
+
* <npt-button slot="action">Pay</npt-button>
|
|
55
|
+
* </npt-qr-pay>
|
|
56
|
+
* Payment panel: a bordered QR area (`qr` slot), the amount + merchant, and a
|
|
57
|
+
* primary action slot.
|
|
58
|
+
*/
|
|
59
|
+
export declare class NptQrPay extends NptElement {
|
|
60
|
+
static observedAttributes: string[];
|
|
61
|
+
attributeChangedCallback(): void;
|
|
62
|
+
protected styles(): string;
|
|
63
|
+
protected render(): string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* <npt-topup-row provider="Vodafone Cash"><svg slot="icon">…</svg></npt-topup-row>
|
|
67
|
+
* A selectable top-up option: icon slot + provider label + trailing chevron.
|
|
68
|
+
*/
|
|
69
|
+
export declare class NptTopupRow extends NptElement {
|
|
70
|
+
static observedAttributes: string[];
|
|
71
|
+
attributeChangedCallback(): void;
|
|
72
|
+
protected styles(): string;
|
|
73
|
+
protected render(): string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* <npt-tier-badge tier="Gold" tone="gold|silver|primary|neutral"></npt-tier-badge>
|
|
77
|
+
* A small premium membership pill.
|
|
78
|
+
*/
|
|
79
|
+
export declare class NptTierBadge extends NptElement {
|
|
80
|
+
static observedAttributes: string[];
|
|
81
|
+
attributeChangedCallback(): void;
|
|
82
|
+
protected styles(): string;
|
|
83
|
+
protected render(): string;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=wallet-pay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-pay.d.ts","sourceRoot":"","sources":["../../src/components/wallet-pay.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AAKxD;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IACpC,iBAAiB,IAAI,IAAI;IAMlC,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,KAAK,CAKX;IAEF,SAAS,CAAC,MAAM,IAAI,MAAM;IAc1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAG3B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,kBAAkB,WAAyB;IAElD,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IA2D1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAQ3B;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,kBAAkB,WAAiE;IAE1F,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IA8F1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAyB3B;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,MAAM,CAAC,kBAAkB,WAAwC;IAEjE,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IA2F1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAiB3B;AAED;;;;;;;GAOG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,kBAAkB,WAAsC;IAE/D,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IAqE1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAa3B;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,kBAAkB,WAA4B;IAErD,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IAkE1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAS3B;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,kBAAkB,WAAoB;IAE7C,wBAAwB,IAAI,IAAI;IAIhC,SAAS,CAAC,MAAM,IAAI,MAAM;IAgD1B,SAAS,CAAC,MAAM,IAAI,MAAM;CAM3B"}
|