@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,359 @@
1
+ // © 2026 Neptune.Fintech (neptune.ly) · Neptune Odyssey Community License v1.0
2
+ // Neptune Odyssey — containers & layout
3
+ // <npt-list>, <npt-list-item>, <npt-divider>, <npt-tabs>, <npt-tab>,
4
+ // <npt-accordion>, <npt-accordion-item>, <npt-avatar>.
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) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" })[c]);
8
+ /** <npt-list> with <npt-list-item> children. */
9
+ export class NptList extends NptElement {
10
+ styles() {
11
+ return css `
12
+ :host {
13
+ display: block;
14
+ }
15
+ .list {
16
+ display: block;
17
+ background: var(--md-sys-color-surface);
18
+ color: var(--md-sys-color-on-surface);
19
+ }
20
+ `;
21
+ }
22
+ render() {
23
+ return html `<div class="list" part="list" role="list"><slot></slot></div>`;
24
+ }
25
+ }
26
+ /**
27
+ * <npt-list-item [interactive] headline="Title" supporting="Sub">
28
+ * <span slot="leading">●</span><span slot="trailing">→</span>
29
+ * </npt-list-item>
30
+ */
31
+ export class NptListItem extends NptElement {
32
+ attributeChangedCallback() {
33
+ if (this.isConnected)
34
+ this.update();
35
+ }
36
+ styles() {
37
+ return css `
38
+ ${A11Y}
39
+ :host {
40
+ display: block;
41
+ }
42
+ .item {
43
+ inline-size: 100%;
44
+ display: flex;
45
+ align-items: center;
46
+ gap: var(--npt-space-4, 16px);
47
+ min-height: 56px;
48
+ padding-inline: var(--npt-space-4, 16px);
49
+ padding-block: var(--npt-space-2, 8px);
50
+ border: none;
51
+ background: transparent;
52
+ color: inherit;
53
+ text-align: start;
54
+ font-family: var(--npt-font-text);
55
+ box-sizing: border-box;
56
+ }
57
+ :host([interactive]) .item {
58
+ cursor: pointer;
59
+ transition: background-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
60
+ }
61
+ :host([interactive]) .item:hover {
62
+ background: var(--md-sys-color-surface-container-high);
63
+ }
64
+ .body {
65
+ flex: 1 1 auto;
66
+ min-inline-size: 0;
67
+ }
68
+ .headline {
69
+ font-size: var(--npt-text-body-lg, 16px);
70
+ color: var(--md-sys-color-on-surface);
71
+ margin: 0;
72
+ }
73
+ .supporting {
74
+ font-size: var(--npt-text-body, 14px);
75
+ color: var(--md-sys-color-on-surface-variant);
76
+ margin: 2px 0 0;
77
+ }
78
+ `;
79
+ }
80
+ render() {
81
+ const headline = esc(this.getAttribute("headline"));
82
+ const supporting = esc(this.getAttribute("supporting"));
83
+ const interactive = this.hasAttribute("interactive");
84
+ const tag = interactive ? "button" : "div";
85
+ const attrs = interactive ? html `role="listitem" type="button"` : html `role="listitem"`;
86
+ return html `<${tag} class="item" part="item" ${attrs}>
87
+ <slot name="leading"></slot>
88
+ <div class="body">
89
+ ${headline ? html `<p class="headline">${headline}</p>` : ""}
90
+ ${supporting ? html `<p class="supporting">${supporting}</p>` : ""}
91
+ <slot></slot>
92
+ </div>
93
+ <slot name="trailing"></slot>
94
+ </${tag}>`;
95
+ }
96
+ }
97
+ NptListItem.observedAttributes = ["interactive", "headline", "supporting"];
98
+ /** <npt-divider [inset]></npt-divider> */
99
+ export class NptDivider extends NptElement {
100
+ attributeChangedCallback() {
101
+ if (this.isConnected)
102
+ this.update();
103
+ }
104
+ styles() {
105
+ return css `
106
+ :host {
107
+ display: block;
108
+ }
109
+ .rule {
110
+ border: none;
111
+ block-size: 1px;
112
+ background: var(--md-sys-color-outline-variant);
113
+ margin-block: 0;
114
+ }
115
+ :host([inset]) .rule {
116
+ margin-inline-start: var(--npt-space-4, 16px);
117
+ margin-inline-end: var(--npt-space-4, 16px);
118
+ }
119
+ `;
120
+ }
121
+ render() {
122
+ return html `<hr class="rule" part="divider" role="separator" />`;
123
+ }
124
+ }
125
+ NptDivider.observedAttributes = ["inset"];
126
+ /**
127
+ * <npt-tabs> with <npt-tab> children.
128
+ * Click selects a tab (sets [active]); a sliding indicator follows.
129
+ */
130
+ export class NptTabs extends NptElement {
131
+ constructor() {
132
+ super(...arguments);
133
+ this.onClick = (e) => {
134
+ const tab = e.target?.closest("npt-tab");
135
+ if (!tab)
136
+ return;
137
+ for (const t of this.querySelectorAll("npt-tab"))
138
+ t.toggleAttribute("active", t === tab);
139
+ this.dispatchEvent(new CustomEvent("change", { bubbles: true }));
140
+ };
141
+ }
142
+ connectedCallback() {
143
+ super.connectedCallback();
144
+ this.addEventListener("click", this.onClick);
145
+ }
146
+ disconnectedCallback() {
147
+ this.removeEventListener("click", this.onClick);
148
+ }
149
+ styles() {
150
+ return css `
151
+ ${A11Y}
152
+ :host {
153
+ display: block;
154
+ }
155
+ .row {
156
+ display: flex;
157
+ gap: var(--npt-space-2, 8px);
158
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
159
+ }
160
+ `;
161
+ }
162
+ render() {
163
+ return html `<div class="row" part="tabs" role="tablist"><slot></slot></div>`;
164
+ }
165
+ }
166
+ /** <npt-tab [active]>Overview</npt-tab> */
167
+ export class NptTab extends NptElement {
168
+ attributeChangedCallback() {
169
+ if (this.isConnected)
170
+ this.update();
171
+ }
172
+ styles() {
173
+ return css `
174
+ ${A11Y}
175
+ :host {
176
+ display: inline-flex;
177
+ }
178
+ .tab {
179
+ position: relative;
180
+ min-height: 48px;
181
+ display: inline-flex;
182
+ align-items: center;
183
+ gap: var(--npt-space-2, 8px);
184
+ padding-inline: var(--npt-space-4, 16px);
185
+ border: none;
186
+ background: transparent;
187
+ color: var(--md-sys-color-on-surface-variant);
188
+ cursor: pointer;
189
+ font-family: var(--npt-font-text);
190
+ font-size: var(--npt-text-label, 14px);
191
+ font-weight: 600;
192
+ }
193
+ .tab::after {
194
+ content: "";
195
+ position: absolute;
196
+ inset-block-end: 0;
197
+ inset-inline: var(--npt-space-2, 8px);
198
+ block-size: 3px;
199
+ border-start-start-radius: var(--npt-corner-full, 999px);
200
+ border-start-end-radius: var(--npt-corner-full, 999px);
201
+ background: transparent;
202
+ transition: background-color var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
203
+ }
204
+ :host([active]) .tab {
205
+ color: var(--md-sys-color-primary);
206
+ }
207
+ :host([active]) .tab::after {
208
+ background: var(--md-sys-color-primary);
209
+ }
210
+ `;
211
+ }
212
+ render() {
213
+ const active = this.hasAttribute("active");
214
+ return html `<button class="tab" part="tab" role="tab" aria-selected="${active}">
215
+ <slot></slot>
216
+ </button>`;
217
+ }
218
+ }
219
+ NptTab.observedAttributes = ["active"];
220
+ /** <npt-accordion> with <npt-accordion-item> children. */
221
+ export class NptAccordion extends NptElement {
222
+ styles() {
223
+ return css `
224
+ :host {
225
+ display: block;
226
+ }
227
+ `;
228
+ }
229
+ render() {
230
+ return html `<div part="accordion"><slot></slot></div>`;
231
+ }
232
+ }
233
+ /**
234
+ * <npt-accordion-item [open] summary="Section">…detail…</npt-accordion-item>
235
+ * Native <details>/<summary> semantics under the hood.
236
+ */
237
+ export class NptAccordionItem extends NptElement {
238
+ constructor() {
239
+ super(...arguments);
240
+ this.onToggle = (e) => {
241
+ const open = e.target.open;
242
+ this.toggleAttribute("open", open);
243
+ };
244
+ }
245
+ attributeChangedCallback() {
246
+ if (this.isConnected)
247
+ this.update();
248
+ }
249
+ connectedCallback() {
250
+ super.connectedCallback();
251
+ this.root.addEventListener("toggle", this.onToggle, true);
252
+ }
253
+ disconnectedCallback() {
254
+ this.root.removeEventListener("toggle", this.onToggle, true);
255
+ }
256
+ styles() {
257
+ return css `
258
+ ${A11Y}
259
+ :host {
260
+ display: block;
261
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
262
+ }
263
+ details {
264
+ color: var(--md-sys-color-on-surface);
265
+ }
266
+ summary {
267
+ list-style: none;
268
+ min-height: 56px;
269
+ display: flex;
270
+ align-items: center;
271
+ gap: var(--npt-space-3, 12px);
272
+ padding-inline: var(--npt-space-4, 16px);
273
+ cursor: pointer;
274
+ font-family: var(--npt-font-text);
275
+ font-size: var(--npt-text-body-lg, 16px);
276
+ font-weight: 600;
277
+ }
278
+ summary::-webkit-details-marker {
279
+ display: none;
280
+ }
281
+ .chevron {
282
+ margin-inline-start: auto;
283
+ transition: transform var(--npt-dur-fast, 200ms) var(--npt-ease-standard, ease);
284
+ }
285
+ details[open] .chevron {
286
+ transform: rotate(180deg);
287
+ }
288
+ .detail {
289
+ padding-inline: var(--npt-space-4, 16px);
290
+ padding-block-end: var(--npt-space-4, 16px);
291
+ font-family: var(--npt-font-text);
292
+ font-size: var(--npt-text-body, 14px);
293
+ color: var(--md-sys-color-on-surface-variant);
294
+ }
295
+ `;
296
+ }
297
+ render() {
298
+ const summary = esc(this.getAttribute("summary"));
299
+ const open = this.hasAttribute("open") ? "open" : "";
300
+ return html `<details part="item" ${open}>
301
+ <summary part="summary">${summary}<span class="chevron" aria-hidden="true">⌄</span></summary>
302
+ <div class="detail" part="detail"><slot></slot></div>
303
+ </details>`;
304
+ }
305
+ }
306
+ NptAccordionItem.observedAttributes = ["open", "summary"];
307
+ /** <npt-avatar src="" initials="MK" size="sm|md|lg" label="Mona"></npt-avatar> */
308
+ export class NptAvatar extends NptElement {
309
+ attributeChangedCallback() {
310
+ if (this.isConnected)
311
+ this.update();
312
+ }
313
+ styles() {
314
+ return css `
315
+ :host {
316
+ display: inline-block;
317
+ }
318
+ .avatar {
319
+ inline-size: 40px;
320
+ block-size: 40px;
321
+ border-radius: var(--npt-corner-full, 999px);
322
+ overflow: hidden;
323
+ display: grid;
324
+ place-items: center;
325
+ background: var(--md-sys-color-primary-container);
326
+ color: var(--md-sys-color-on-primary-container);
327
+ font-family: var(--npt-font-display);
328
+ font-weight: 600;
329
+ font-size: var(--npt-text-label, 14px);
330
+ }
331
+ :host([size="sm"]) .avatar {
332
+ inline-size: 28px;
333
+ block-size: 28px;
334
+ font-size: var(--npt-text-caption, 12px);
335
+ }
336
+ :host([size="lg"]) .avatar {
337
+ inline-size: 64px;
338
+ block-size: 64px;
339
+ font-size: var(--npt-text-title, 18px);
340
+ }
341
+ img {
342
+ inline-size: 100%;
343
+ block-size: 100%;
344
+ object-fit: cover;
345
+ }
346
+ `;
347
+ }
348
+ render() {
349
+ const src = esc(this.getAttribute("src"));
350
+ const initials = esc(this.getAttribute("initials"));
351
+ const label = esc(this.getAttribute("label")) || initials;
352
+ const inner = src
353
+ ? html `<img src="${src}" alt="${label}" />`
354
+ : html `<span aria-hidden="true">${initials}</span>`;
355
+ return html `<span class="avatar" part="avatar" role="img" aria-label="${label}">${inner}</span>`;
356
+ }
357
+ }
358
+ NptAvatar.observedAttributes = ["src", "initials", "size", "label"];
359
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/components/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { NptElement } from "./base.js";
2
+ /**
3
+ * <npt-amount-input currency="LYD" value="" placeholder="0.00"></npt-amount-input>
4
+ * Large amount entry with a currency affix. Big tabular figures. Numeric input
5
+ * mode; dispatches `input` (bubbling) with the sanitized value on every change.
6
+ */
7
+ export declare class NptAmountInput extends NptElement {
8
+ static observedAttributes: string[];
9
+ attributeChangedCallback(): void;
10
+ get value(): string;
11
+ set value(v: string);
12
+ connectedCallback(): void;
13
+ disconnectedCallback(): void;
14
+ private onInput;
15
+ protected styles(): string;
16
+ protected render(): string;
17
+ }
18
+ /**
19
+ * <npt-currency-field label="Amount" value="" currency="LYD"
20
+ * helper="Available 12,480.50" [error="msg"]></npt-currency-field>
21
+ * Labelled outlined money field. Tabular figures; trailing currency code.
22
+ */
23
+ export declare class NptCurrencyField extends NptElement {
24
+ static observedAttributes: string[];
25
+ attributeChangedCallback(): void;
26
+ get value(): string;
27
+ connectedCallback(): void;
28
+ disconnectedCallback(): void;
29
+ private onInput;
30
+ protected styles(): string;
31
+ protected render(): string;
32
+ }
33
+ /**
34
+ * <npt-iban-field label="IBAN" value="" country="LY"></npt-iban-field>
35
+ * Formats the IBAN into groups of four as you type and reflects valid/invalid
36
+ * state (ISO 7064 mod-97). Dispatches `input` and `change` with `{ value, valid }`.
37
+ */
38
+ export declare class NptIbanField extends NptElement {
39
+ static observedAttributes: string[];
40
+ attributeChangedCallback(): void;
41
+ /** Raw IBAN with no spaces. */
42
+ get value(): string;
43
+ get valid(): boolean;
44
+ connectedCallback(): void;
45
+ disconnectedCallback(): void;
46
+ private setState;
47
+ private onInput;
48
+ private onBlur;
49
+ protected update(): void;
50
+ protected styles(): string;
51
+ protected render(): string;
52
+ }
53
+ /**
54
+ * <npt-otp-input length="6" value="" [masked]></npt-otp-input>
55
+ * N separate single-character boxes with auto-advance, backspace-rewind, and
56
+ * paste-fill. Dispatches `input` on every change and `complete` (with
57
+ * `{ value }`) once every box is filled.
58
+ */
59
+ export declare class NptOtpInput extends NptElement {
60
+ static observedAttributes: string[];
61
+ attributeChangedCallback(): void;
62
+ protected get inputType(): string;
63
+ protected get isMasked(): boolean;
64
+ protected get count(): number;
65
+ protected get defaultLength(): number;
66
+ get value(): string;
67
+ set value(v: string);
68
+ connectedCallback(): void;
69
+ disconnectedCallback(): void;
70
+ private boxes;
71
+ private emit;
72
+ private onFocus;
73
+ private onInput;
74
+ private onKey;
75
+ private onPaste;
76
+ protected styles(): string;
77
+ protected render(): string;
78
+ }
79
+ /**
80
+ * <npt-pin-input length="4"></npt-pin-input>
81
+ * Like the OTP input, but always masked with dots. Defaults to 4 boxes.
82
+ */
83
+ export declare class NptPinInput extends NptOtpInput {
84
+ static observedAttributes: string[];
85
+ protected get defaultLength(): number;
86
+ protected get isMasked(): boolean;
87
+ }
88
+ /**
89
+ * <npt-amount-keypad value=""></npt-amount-keypad>
90
+ * Numeric keypad (0–9, ., backspace). Dispatches `key` (with the pressed key)
91
+ * on each press and `value` (with the running string) after applying it.
92
+ */
93
+ export declare class NptAmountKeypad extends NptElement {
94
+ static observedAttributes: string[];
95
+ attributeChangedCallback(): void;
96
+ get value(): string;
97
+ set value(v: string);
98
+ connectedCallback(): void;
99
+ disconnectedCallback(): void;
100
+ private apply;
101
+ private onClick;
102
+ protected styles(): string;
103
+ protected render(): string;
104
+ }
105
+ //# sourceMappingURL=money-inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money-inputs.d.ts","sourceRoot":"","sources":["../../src/components/money-inputs.ts"],"names":[],"mappings":"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"}