@aquera/nile-elements 1.6.1 → 1.6.2

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 (174) hide show
  1. package/README.md +6 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +953 -595
  5. package/dist/internal/enum.cjs.js +1 -1
  6. package/dist/internal/enum.cjs.js.map +1 -1
  7. package/dist/internal/enum.esm.js +1 -1
  8. package/dist/nile-badge/index.cjs.js +1 -1
  9. package/dist/nile-badge/index.esm.js +1 -1
  10. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  11. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  12. package/dist/nile-badge/nile-badge.esm.js +1 -1
  13. package/dist/nile-button/index.cjs.js +1 -1
  14. package/dist/nile-button/index.esm.js +1 -1
  15. package/dist/nile-button/nile-button.cjs.js +1 -1
  16. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  17. package/dist/nile-button/nile-button.esm.js +1 -1
  18. package/dist/nile-carousel/index.cjs.js +1 -1
  19. package/dist/nile-carousel/index.esm.js +1 -1
  20. package/dist/nile-carousel/nile-carousel.cjs.js +1 -1
  21. package/dist/nile-carousel/nile-carousel.cjs.js.map +1 -1
  22. package/dist/nile-carousel/nile-carousel.esm.js +1 -1
  23. package/dist/nile-dialog/index.cjs.js +1 -1
  24. package/dist/nile-dialog/index.esm.js +1 -1
  25. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  26. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  27. package/dist/nile-dialog/nile-dialog.esm.js +1 -1
  28. package/dist/nile-drawer/index.cjs.js +1 -1
  29. package/dist/nile-drawer/index.esm.js +1 -1
  30. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  31. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  32. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  33. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  34. package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
  35. package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
  36. package/dist/nile-icon/icons/svg/folder_delete.cjs.js +2 -0
  37. package/dist/nile-icon/icons/svg/folder_delete.cjs.js.map +1 -0
  38. package/dist/nile-icon/icons/svg/folder_delete.esm.js +1 -0
  39. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  40. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  41. package/dist/nile-icon/icons/svg/layers-three-02.cjs.js +1 -1
  42. package/dist/nile-icon/icons/svg/layers-three-02.cjs.js.map +1 -1
  43. package/dist/nile-icon/icons/svg/layers-three-02.esm.js +1 -1
  44. package/dist/nile-icon/index.cjs.js +1 -1
  45. package/dist/nile-icon/index.cjs.js.map +1 -1
  46. package/dist/nile-icon/index.esm.js +1 -1
  47. package/dist/nile-icon-button/index.cjs.js +1 -1
  48. package/dist/nile-icon-button/index.esm.js +1 -1
  49. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  50. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  51. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  52. package/dist/nile-input/index.cjs.js +1 -1
  53. package/dist/nile-input/index.esm.js +1 -1
  54. package/dist/nile-input/nile-input.cjs.js +1 -1
  55. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  56. package/dist/nile-input/nile-input.esm.js +1 -1
  57. package/dist/nile-menu-item/index.cjs.js +1 -1
  58. package/dist/nile-menu-item/index.esm.js +1 -1
  59. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  60. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  61. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  62. package/dist/nile-option/index.cjs.js +1 -1
  63. package/dist/nile-option/index.esm.js +1 -1
  64. package/dist/nile-option/nile-option.cjs.js +1 -1
  65. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  66. package/dist/nile-option/nile-option.esm.js +1 -1
  67. package/dist/nile-otp-input/index.cjs.js +2 -0
  68. package/dist/nile-otp-input/index.cjs.js.map +1 -0
  69. package/dist/nile-otp-input/index.esm.js +1 -0
  70. package/dist/nile-otp-input/nile-otp-input.cjs.js +2 -0
  71. package/dist/nile-otp-input/nile-otp-input.cjs.js.map +1 -0
  72. package/dist/nile-otp-input/nile-otp-input.css.cjs.js +2 -0
  73. package/dist/nile-otp-input/nile-otp-input.css.cjs.js.map +1 -0
  74. package/dist/nile-otp-input/nile-otp-input.css.esm.js +257 -0
  75. package/dist/nile-otp-input/nile-otp-input.enum.cjs.js +2 -0
  76. package/dist/nile-otp-input/nile-otp-input.enum.cjs.js.map +1 -0
  77. package/dist/nile-otp-input/nile-otp-input.enum.esm.js +1 -0
  78. package/dist/nile-otp-input/nile-otp-input.esm.js +103 -0
  79. package/dist/nile-select/index.cjs.js +1 -1
  80. package/dist/nile-select/index.esm.js +1 -1
  81. package/dist/nile-select/nile-select.cjs.js +1 -1
  82. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  83. package/dist/nile-select/nile-select.esm.js +1 -1
  84. package/dist/nile-side-bar-action-menu-item/index.cjs.js +1 -1
  85. package/dist/nile-side-bar-action-menu-item/index.esm.js +1 -1
  86. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js +1 -1
  87. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js.map +1 -1
  88. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.esm.js +1 -1
  89. package/dist/nile-tab/index.cjs.js +1 -1
  90. package/dist/nile-tab/index.esm.js +1 -1
  91. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  92. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  93. package/dist/nile-tab/nile-tab.esm.js +1 -1
  94. package/dist/nile-tab-group/index.cjs.js +1 -1
  95. package/dist/nile-tab-group/index.esm.js +1 -1
  96. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  97. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  98. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  99. package/dist/nile-tag/index.cjs.js +1 -1
  100. package/dist/nile-tag/index.esm.js +1 -1
  101. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  102. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  103. package/dist/nile-tag/nile-tag.esm.js +1 -1
  104. package/dist/nile-toast/index.cjs.js +1 -1
  105. package/dist/nile-toast/index.esm.js +1 -1
  106. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  107. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  108. package/dist/nile-toast/nile-toast.esm.js +1 -1
  109. package/dist/nile-tree/index.cjs.js +1 -1
  110. package/dist/nile-tree/index.esm.js +1 -1
  111. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  112. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  113. package/dist/nile-tree/nile-tree.esm.js +1 -1
  114. package/dist/nile-tree-item/index.cjs.js +1 -1
  115. package/dist/nile-tree-item/index.esm.js +1 -1
  116. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  117. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  118. package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
  119. package/dist/nile-virtual-select/index.cjs.js +1 -1
  120. package/dist/nile-virtual-select/index.esm.js +1 -1
  121. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
  122. package/dist/nile-virtual-select/nile-virtual-select.esm.js +1 -1
  123. package/dist/src/index.d.ts +1 -0
  124. package/dist/src/index.js +1 -0
  125. package/dist/src/index.js.map +1 -1
  126. package/dist/src/internal/enum.d.ts +21 -0
  127. package/dist/src/internal/enum.js +23 -1
  128. package/dist/src/internal/enum.js.map +1 -1
  129. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +2 -0
  130. package/dist/src/nile-floating-panel/nile-floating-panel.js +12 -1
  131. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
  132. package/dist/src/nile-icon/icons/svg/folder_delete.d.ts +5 -0
  133. package/dist/src/nile-icon/icons/svg/folder_delete.js +5 -0
  134. package/dist/src/nile-icon/icons/svg/folder_delete.js.map +1 -0
  135. package/dist/src/nile-icon/icons/svg/index.d.ts +1 -0
  136. package/dist/src/nile-icon/icons/svg/index.js +1 -0
  137. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  138. package/dist/src/nile-icon/icons/svg/layers-three-02.d.ts +1 -1
  139. package/dist/src/nile-icon/icons/svg/layers-three-02.js +1 -1
  140. package/dist/src/nile-icon/icons/svg/layers-three-02.js.map +1 -1
  141. package/dist/src/nile-otp-input/index.d.ts +1 -0
  142. package/dist/src/nile-otp-input/index.js +2 -0
  143. package/dist/src/nile-otp-input/index.js.map +1 -0
  144. package/dist/src/nile-otp-input/nile-otp-input.css.d.ts +12 -0
  145. package/dist/src/nile-otp-input/nile-otp-input.css.js +269 -0
  146. package/dist/src/nile-otp-input/nile-otp-input.css.js.map +1 -0
  147. package/dist/src/nile-otp-input/nile-otp-input.d.ts +156 -0
  148. package/dist/src/nile-otp-input/nile-otp-input.enum.d.ts +26 -0
  149. package/dist/src/nile-otp-input/nile-otp-input.enum.js +32 -0
  150. package/dist/src/nile-otp-input/nile-otp-input.enum.js.map +1 -0
  151. package/dist/src/nile-otp-input/nile-otp-input.js +762 -0
  152. package/dist/src/nile-otp-input/nile-otp-input.js.map +1 -0
  153. package/dist/src/nile-otp-input/nile-otp-input.test.d.ts +1 -0
  154. package/dist/src/nile-otp-input/nile-otp-input.test.js +493 -0
  155. package/dist/src/nile-otp-input/nile-otp-input.test.js.map +1 -0
  156. package/dist/src/version.js +2 -2
  157. package/dist/src/version.js.map +1 -1
  158. package/dist/tsconfig.tsbuildinfo +1 -1
  159. package/package.json +2 -1
  160. package/plop-templates/lit/index.ts.hbs +1 -1
  161. package/plop-templates/lit/lit.css.ts.hbs +1 -1
  162. package/plop-templates/lit/lit.ts.hbs +1 -1
  163. package/src/index.ts +2 -1
  164. package/src/internal/enum.ts +23 -1
  165. package/src/nile-floating-panel/nile-floating-panel.ts +10 -1
  166. package/src/nile-icon/icons/svg/folder_delete.ts +5 -0
  167. package/src/nile-icon/icons/svg/index.ts +1 -0
  168. package/src/nile-icon/icons/svg/layers-three-02.ts +1 -1
  169. package/src/nile-otp-input/index.ts +1 -0
  170. package/src/nile-otp-input/nile-otp-input.css.ts +271 -0
  171. package/src/nile-otp-input/nile-otp-input.enum.ts +30 -0
  172. package/src/nile-otp-input/nile-otp-input.test.ts +732 -0
  173. package/src/nile-otp-input/nile-otp-input.ts +835 -0
  174. package/vscode-html-custom-data.json +171 -1
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "1.6.1",
6
+ "version": "1.6.2",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -13,6 +13,7 @@
13
13
  "./nile-heading": "./dist/src/nile-heading/index.js",
14
14
  "./nile-icon": "./dist/src/nile-icon/index.js",
15
15
  "./nile-input": "./dist/src/nile-input/index.js",
16
+ "./nile-otp-input": "./dist/src/nile-otp-input/index.js",
16
17
  "./nile-sidebar": "./dist/src/nile-sidebar/index.js",
17
18
  "./nile-menu": "./dist/src/nile-menu/index.js",
18
19
  "./nile-badge": "./dist/src/nile-badge/index.js",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright Aquera Inc 2025
2
+ * Copyright Aquera Inc 2026
3
3
  *
4
4
  * This source code is licensed under the BSD-3-Clause license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright Aquera Inc 2025
2
+ * Copyright Aquera Inc 2026
3
3
  *
4
4
  * This source code is licensed under the BSD-3-Clause license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright Aquera Inc 2025
2
+ * Copyright Aquera Inc 2026
3
3
  *
4
4
  * This source code is licensed under the BSD-3-Clause license found in the
5
5
  * LICENSE file in the root directory of this source tree.
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ export { NileButton } from './nile-button';
2
2
  export { NileHeading } from './nile-heading';
3
3
  export { NileIcon } from './nile-icon';
4
4
  export { NileInput } from './nile-input';
5
+ export { NileOtpInput } from './nile-otp-input';
5
6
  export { NileMenu } from './nile-menu';
6
7
  export { NileBadge } from './nile-badge';
7
8
  export { NileDrawer } from './nile-drawer';
@@ -114,4 +115,4 @@ export { NileliteTooltip } from './nile-lite-tooltip';
114
115
  export { NileSideBarPanel } from './nile-side-bar-panel';
115
116
  export { NileDetail } from './nile-detail';
116
117
  export { NileQrCode } from './nile-qr-code';
117
- export { NileFloatingPanel } from './nile-floating-panel';
118
+ export { NileFloatingPanel } from './nile-floating-panel';
@@ -5,7 +5,8 @@ export const KeyCode = {
5
5
  SHIFT: 'ShiftLeft', // or 'ShiftRight'
6
6
  CTRL: 'ControlLeft', // or 'ControlRight'
7
7
  ESCAPE: 'Escape',
8
- SPACE: 'Space',
8
+ SPACE: ' ',
9
+ DELETE: 'Delete',
9
10
  PAGE_UP: 'PageUp',
10
11
  PAGE_DOWN: 'PageDown',
11
12
  END: 'End',
@@ -18,3 +19,24 @@ export const KeyCode = {
18
19
  COPY: 'Copy',
19
20
  PASTE: 'Paste',
20
21
  };
22
+
23
+ export enum Nile_Events {
24
+ NILE_INIT = "nile-init",
25
+ NILE_CHANGE = "nile-change",
26
+ NILE_DESTROY = "nile-destroy",
27
+ NILE_PASTE = "nile-paste",
28
+ NILE_CUT = "nile-cut",
29
+ NILE_COPY = "nile-copy",
30
+ NILE_SELECT_ALL = "nile-select-all",
31
+ NILE_FOCUS = "nile-focus",
32
+ NILE_BLUR = "nile-blur",
33
+ NILE_INVALID = "nile-invalid",
34
+ NILE_VALID = "nile-valid",
35
+ NILE_RESET = "nile-reset",
36
+ NILE_CLEAR = "nile-clear",
37
+ NILE_CLEAR_ALL = "nile-clear-all",
38
+ NILE_CLEAR_SELECTION = "nile-clear-selection",
39
+ NILE_CLEAR_ALL_SELECTION = "nile-clear-all-selection",
40
+ NILE_INPUT = "nile-input",
41
+ NILE_COMPLETE = "nile-complete",
42
+ }
@@ -151,6 +151,9 @@ export class NileFloatingPanel extends NileElement {
151
151
  /** Close the panel when Escape is pressed. */
152
152
  @property({ type: Boolean, reflect: true }) closeOnEscape = true;
153
153
 
154
+ /** Custom CSS class(es) added to the Tippy popper element, allowing per-instance styling from the host. */
155
+ @property({ type: String, reflect: true, attribute: true}) panelClass: string = '';
156
+
154
157
  // ─── Visibility manager props ───
155
158
 
156
159
  @property({ type: Boolean, reflect: true }) enableVisibilityEffect = false;
@@ -240,6 +243,7 @@ export class NileFloatingPanel extends NileElement {
240
243
  'animation', 'duration', 'delay', 'interactive', 'interactiveBorder',
241
244
  'maxWidth', 'zIndex', 'followCursor', 'hideOnClick', 'inertia',
242
245
  'allowHTML', 'flip', 'preventOverlayClose', 'disabled', 'width', 'height',
246
+ 'panelClass'
243
247
  ];
244
248
 
245
249
  if (rebuildProps.some(p => changed.has(p))) {
@@ -527,8 +531,13 @@ export class NileFloatingPanel extends NileElement {
527
531
  popperOptions: {
528
532
  modifiers: [{ name: 'flip', enabled: this.flip }],
529
533
  },
530
- onMount: () => {
534
+ onMount: (instance) => {
531
535
  if (this.panelContainer) this.panelContainer.style.display = '';
536
+ if (this.panelClass) {
537
+ this.panelClass.split(/\s+/).filter(Boolean).forEach(cls => {
538
+ instance.popper.classList.add(cls);
539
+ });
540
+ }
532
541
  },
533
542
  onShow: (instance) => {
534
543
  if (this.panelContainer) this.panelContainer.style.display = '';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Do not edit directly
3
+ */
4
+
5
+ export default "PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEuNzUgMi40NTcxNFYxMC43ODU3QzEuNzUgMTAuOTg2NSAxLjgyOTAyIDExLjE3OTEgMS45Njk2NyAxMS4zMjExQzIuMTEwMzIgMTEuNDYzMSAyLjMwMTA5IDExLjU0MjkgMi41IDExLjU0MjlIMy41VjEyLjNIMi41QzIuMTAyMTggMTIuMyAxLjcyMDY0IDEyLjE0MDUgMS40MzkzNCAxMS44NTY1QzEuMTU4MDQgMTEuNTcyNSAxIDExLjE4NzMgMSAxMC43ODU3VjEuN0g1LjMyNTY5TDYuODI1NjkgMy45NzE0M0gxM1YxMC43ODU3QzEzIDExLjE4NzMgMTIuODQyIDExLjU3MjUgMTIuNTYwNyAxMS44NTY1QzEyLjI3OTQgMTIuMTQwNSAxMS44OTc4IDEyLjMgMTEuNSAxMi4zSDEwLjVWMTEuNTQyOUgxMS41QzExLjY5ODkgMTEuNTQyOSAxMS44ODk3IDExLjQ2MzEgMTIuMDMwMyAxMS4zMjExQzEyLjE3MSAxMS4xNzkxIDEyLjI1IDEwLjk4NjUgMTIuMjUgMTAuNzg1N1Y0LjcyODU3SDYuNDI0MzFMNC45MjQzMSAyLjQ1NzE0SDEuNzVaIiBmaWxsPSJibGFjayIvPjxwYXRoIGQ9Ik05Ljc4MzIgNi4zMzY5MUw3LjYxOTE0IDguNUw5Ljc4MzIgMTAuNjYzMUw5LjE2MzA5IDExLjI4MzJMNyA5LjExOTE0TDQuODM2OTEgMTEuMjgzMkw0LjIxNjggMTAuNjYzMUw2LjM3OTg4IDguNUw0LjIxNjggNi4zMzY5MUw0LjgzNjkxIDUuNzE2NzlMNyA3Ljg3OTg4TDkuMTYzMDkgNS43MTY3OUw5Ljc4MzIgNi4zMzY5MVoiIGZpbGw9ImJsYWNrIi8+PC9zdmc+";
@@ -173,6 +173,7 @@ export { default as flowmapundo } from './flowmap-undo';
173
173
  export { default as flowmapworkflow } from './flowmap-workflow';
174
174
  export { default as flowmap } from './flowmap';
175
175
  export { default as folder } from './folder';
176
+ export { default as folder_delete } from './folder_delete';
176
177
  export { default as foreach } from './foreach';
177
178
  export { default as format_align_justify } from './format_align_justify';
178
179
  export { default as format_align_left } from './format_align_left';
@@ -2,4 +2,4 @@
2
2
  * Do not edit directly
3
3
  */
4
4
 
5
- export default "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJub25lIj48cGF0aCAgICBkPSJNMS4zMzU5NCA4LjAwMDM3ICAgICAgIEw3Ljc2NDA5IDExLjIxNDQgICAgICAgQzcuODUxNTUgMTEuMjU4MiA3Ljg5NTI3IDExLjI4IDcuOTQxMTQgMTEuMjg4NiAgICAgICAgIDcuOTgxNzYgMTEuMjk2MyA4LjAyMzQ1IDExLjI5NjMgOC4wNjQwNyAxMS4yODg2ICAgICAgICAgOC4xMDk5NCAxMS4yOCA4LjE1MzY2IDExLjI1ODIgOC4yNDExMiAxMS4yMTQ0ICAgICAgIEwxNC42NjkzIDguMDAwMzcgICAgICAgTTEuMzM1OTQgMTEuMzMzNyAgICAgICBMNy43NjQwOSAxNC41NDc4ICAgICAgIEM3Ljg1MTU1IDE0LjU5MTUgNy44OTUyNyAxNC42MTM0IDcuOTQxMTQgMTQuNjIyICAgICAgICAgNy45ODE3NiAxNC42Mjk2IDguMDIzNDUgMTQuNjI5NiA4LjA2NDA3IDE0LjYyMiAgICAgICAgIDguMTA5OTQgMTQuNjEzNCA4LjE1MzY2IDE0LjU5MTUgOC4yNDExMiAxNC41NDc4ICAgICAgIEwxNC42NjkzIDExLjMzMzcgICAgICAgTTEuMzM1OTQgNC42NjcwNCAgICAgICBMNy43NjQwOSAxLjQ1Mjk2ICAgICAgIEM3Ljg1MTU1IDEuNDA5MjMgNy44OTUyNyAxLjM4NzM3IDcuOTQxMTQgMS4zNzg3NiAgICAgICAgIDcuOTgxNzYgMS4zNzExNCA4LjAyMzQ1IDEuMzcxMTQgOC4wNjQwNyAxLjM3ODc2ICAgICAgICAgOC4xMDk5NCAxLjM4NzM3IDguMTUzNjYgMS40MDkyMyA4LjI0MTEyIDEuNDUyOTYgICAgICAgTDE0LjY2OTMgNC42NjcwNCAgICAgICBMOC4yNDExMiA3Ljg4MTExICAgICAgIEM4LjE1MzY2IDcuOTI0ODQgOC4xMDk5NCA3Ljk0NjcgOC4wNjQwNyA3Ljk1NTMxICAgICAgICAgOC4wMjM0NSA3Ljk2MjkzIDcuOTgxNzYgNy45NjI5MyA3Ljk0MTE0IDcuOTU1MzEgICAgICAgICA3Ljg5NTI3IDcuOTQ2NyA3Ljg1MTU1IDcuOTI0ODQgNy43NjQwOSA3Ljg4MTExICAgICAgIEwxLjMzNTk0IDQuNjY3MDQgICAgICAgWiIgICAgc3Ryb2tlPSIjMzQ0MDU0IiAgICBzdHJva2Utd2lkdGg9IjEuNiIgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgICBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+";
5
+ export default "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDE0IDE0IiBmaWxsPSJub25lIj48cGF0aCBkPSJNNy4yMDEyOSAxLjEwNTM0TDEzIDQuMTUzNzFMNyA3LjcwMTA2TDEuNzM5MjMgNC41ODk4NUwxIDQuMTUzNzFMNi43OTg3MSAxLjEwNTM0TDcgMUw3LjIwMTI5IDEuMTA1MzRaTTIuOTE4ODQgNC4yMDE3Nkw3IDYuNjE1MzNMMTEuMDgxMiA0LjIwMTc2TDcgMi4wNTcwOUwyLjkxODg0IDQuMjAxNzZaIiBmaWxsPSJibGFjayIvPjxwYXRoIGQ9Ik0xMi42NTM3IDcuMDA3NDhMNyAxMC4zNTA2TDEuMzQ3MiA3LjAwNzQ4TDEuNzg4NDYgNi4xODMyNUw3IDkuMjYzOTZMMTIuMjEyNCA2LjE4MzI1TDEyLjY1MzcgNy4wMDc0OFoiIGZpbGw9ImJsYWNrIi8+PHBhdGggZD0iTTEyLjY1MzcgOS42NTY4Nkw3IDEzTDEuMzQ3MiA5LjY1Njg2TDEuNzg4NDYgOC44MzI2M0w3IDExLjkxMzNMMTIuMjEyNCA4LjgzMjYzTDEyLjY1MzcgOS42NTY4NloiIGZpbGw9ImJsYWNrIi8+PC9zdmc+";
@@ -0,0 +1 @@
1
+ export { NileOtpInput } from './nile-otp-input';
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Copyright Aquera Inc 2026
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { css } from 'lit';
9
+
10
+ /**
11
+ * OTP input CSS
12
+ */
13
+ export const styles = css`
14
+ :host {
15
+ display: block;
16
+ --ng-private-outline-transparent: var(--ng-border-width-1) solid transparent;
17
+ -webkit-font-smoothing: var(--nile-webkit-font-smoothing, var(--ng-webkit-font-smoothing, antialiased));
18
+ -moz-osx-font-smoothing: var(--nile-moz-osx-font-smoothing, var(--ng-moz-osx-font-smoothing, grayscale));
19
+ text-rendering: var(--nile-text-rendering, var(--ng-text-rendering, optimizeLegibility));
20
+ }
21
+
22
+ .form-control {
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: var(--nile-spacing-sm, var(--ng-spacing-1-5));
26
+ align-items: flex-start;
27
+ }
28
+
29
+ .form-control .form-control__label {
30
+ display: none;
31
+ }
32
+
33
+ .form-control--has-label .form-control__label {
34
+ display: inline-block;
35
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-secondary-700));
36
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body ));
37
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm ));
38
+ font-style: normal;
39
+ font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-500 ));
40
+ line-height: var(--nile-type-scale-6, var(--ng-line-height-text-sm ));
41
+ letter-spacing: 0.2px;
42
+ }
43
+
44
+ :host([required]) .form-control--has-label .form-control__label::after {
45
+ content: '*';
46
+ margin-inline-start: -2px;
47
+ color: var(--nile-colors-red-700, var(--ng-colors-text-error-primary-600));
48
+ }
49
+
50
+ .otp {
51
+ position: relative;
52
+ display: flex;
53
+ align-items: center;
54
+ gap: var(--nile-spacing-md, var(--ng-spacing-2));
55
+ width: fit-content;
56
+ max-width: 100%;
57
+ }
58
+
59
+ /* ---- Base cell ---- */
60
+
61
+ .otp__cell {
62
+ box-sizing: border-box;
63
+ width: var(--nile-spacing-5xl, var(--ng-spacing-10));
64
+ height: var(--nile-spacing-5xl, var(--ng-spacing-10));
65
+ min-height: var(--nile-spacing-5xl, var(--ng-spacing-10));
66
+ padding: var(--nile-spacing-xxs, var(--ng-spacing-0-5)) var(--nile-spacing-md, var(--ng-spacing-2));
67
+ border: 1px solid var(--nile-colors-border-field, var(--ng-colors-border-primary));
68
+ border-radius: var(--nile-radius-radius-2xl, var(--ng-radius-lg));
69
+ background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
70
+ box-shadow: var(--nile-box-shadow-1, var(--ng-shadow-xs));
71
+ outline: var(--nile-outline-none, var(--ng-private-outline-transparent));
72
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-placeholder-subtle));
73
+ text-align: center;
74
+ font-family: var(--nile-font-family, var(--ng-font-family-display));
75
+ font-size: var(--nile-type-scale-4, var(--ng-font-size-text-md));
76
+ font-style: normal;
77
+ font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-500));
78
+ line-height: var(--nile-type-scale-4, var(--ng-line-height-text-md));
79
+ letter-spacing: 0.2px;
80
+ overflow: clip;
81
+ caret-color: transparent;
82
+ cursor: pointer;
83
+ transition: 150ms color, 150ms border, 150ms box-shadow, 150ms background-color, 150ms outline;
84
+ }
85
+
86
+ .otp__cell[type='password'] {
87
+ font-family: caption;
88
+ letter-spacing: 0;
89
+ }
90
+ /* ---- Hover (mirrors .input--standard:hover) ---- */
91
+
92
+ .otp:not(.otp--disabled):not(.otp--readonly) .otp__cell:hover {
93
+ border-color: var(--nile-colors-dark-900, var(--ng-colors-border-neutral));
94
+ }
95
+
96
+ .otp--warning:not(.otp--disabled) .otp__cell:hover {
97
+ border-color: var(--nile-colors-dark-900, var(--ng-colors-border-warning));
98
+ }
99
+
100
+ .otp--error:not(.otp--disabled) .otp__cell:hover {
101
+ border-color: var(--nile-colors-dark-900, var(--ng-colors-border-error));
102
+ }
103
+
104
+ .otp--success:not(.otp--disabled) .otp__cell:hover {
105
+ border-color: var(--nile-colors-dark-900, var(--ng-colors-border-success));
106
+ }
107
+
108
+ /* ---- Focus / active cell (mirrors .input--standard.input--focused) ---- */
109
+
110
+ .otp__cell:focus {
111
+ outline: none;
112
+ background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
113
+ border-color: var(--nile-colors-primary-500, var(--ng-colors-border-brand ));
114
+ box-shadow: var(--nile-input-shadow-standard-focused-not-disabled, var(--ng-box-shadow-1));
115
+ }
116
+
117
+ .otp__cell--active {
118
+ position: relative;
119
+ cursor: text;
120
+ caret-color: auto;
121
+ background-color: var(--nile-colors-white-base, var(--ng-colors-bg-primary ));
122
+ border-color: var(--nile-colors-primary-500, var(--ng-colors-border-brand ));
123
+ box-shadow: var(--nile-input-shadow-standard-focused-not-disabled, var(--ng-box-shadow-1));
124
+ }
125
+
126
+ .otp__cell--active::before {
127
+ content: "";
128
+ position: absolute;
129
+ inset: 0;
130
+ pointer-events: none;
131
+ border-radius: inherit;
132
+ box-shadow: inset 0 0 0 1px var(--nile-colors-primary-500, var(--ng-colors-border-brand));
133
+ }
134
+
135
+ .otp--warning .otp__cell:focus,
136
+ .otp--warning .otp__cell--active {
137
+ border-color: var(--nile-colors-primary-500, var(--ng-colors-border-warning));
138
+ box-shadow: var(--nile-input-shadow-standard-focused-not-disabled, var(--ng-box-shadow-1));
139
+ outline: var(--nile-border-width-1, var(--ng-border-width-1)) solid var(--nile-outline-none, var(--ng-colors-border-warning));
140
+ }
141
+
142
+ .otp--warning .otp__cell--active::before {
143
+ box-shadow: inset 0 0 0 1px var(--nile-colors-yellow-500, var(--ng-colors-border-warning));
144
+ }
145
+
146
+ .otp--success .otp__cell:focus,
147
+ .otp--success .otp__cell--active {
148
+ border-color: var(--nile-colors-primary-500, var(--ng-colors-border-success));
149
+ box-shadow: var(--nile-input-shadow-standard-focused-not-disabled, var(--ng-box-shadow-1));
150
+ outline: var(--nile-border-width-1, var(--ng-border-width-1)) solid var(--nile-outline-none, var(--ng-colors-border-success));
151
+ }
152
+
153
+ .otp--success .otp__cell--active::before {
154
+ box-shadow: inset 0 0 0 1px var(--nile-colors-green-500, var(--ng-colors-border-success));
155
+ }
156
+
157
+ .otp--error .otp__cell:focus,
158
+ .otp--error .otp__cell--active {
159
+ border-color: var(--nile-colors-primary-500, var(--ng-colors-border-error));
160
+ box-shadow: var(--nile-input-shadow-standard-focused-not-disabled, var(--ng-box-shadow-1));
161
+ outline: var(--nile-border-width-1, var(--ng-border-width-1)) solid var(--nile-outline-none, var(--ng-colors-border-error));
162
+ }
163
+
164
+ .otp--error .otp__cell--active::before {
165
+ box-shadow: inset 0 0 0 1px var(--nile-colors-red-500, var(--ng-colors-border-error));
166
+ }
167
+
168
+ .otp__cell::selection {
169
+ background-color: var(--nile-colors-primary-600, var(--ng-colors-bg-brand-primary ));
170
+ color: var(--nile-colors-white-base, var(--ng-colors-fg-white));
171
+ }
172
+
173
+ .otp__cell::placeholder {
174
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-placeholder-subtle));
175
+ opacity: 0.9;
176
+ font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-500));
177
+ }
178
+
179
+ /* ---- Separator ---- */
180
+
181
+ .otp__separator {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ flex-shrink: 0;
186
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-placeholder-subtle));
187
+ font-family: var(--nile-font-family, var(--ng-font-family-display ));
188
+ font-size: var(--nile-type-scale-7, var(--ng-font-size-text-xl));
189
+ font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-500));
190
+ line-height: var(--nile-type-scale-7, var(--ng-line-height-text-xl));
191
+ user-select: none;
192
+ }
193
+
194
+ /* ---- State: warning ---- */
195
+
196
+ .otp--warning .otp__cell {
197
+ border-color: var(--nile-colors-yellow-500, var(--ng-colors-border-warning-subtle ));
198
+ }
199
+
200
+ /* ---- State: error ---- */
201
+
202
+ .otp--error .otp__cell {
203
+ border-color: var(--nile-colors-red-500, var(--ng-colors-border-error-subtle ));
204
+ }
205
+
206
+ /* ---- State: success ---- */
207
+
208
+ .otp--success .otp__cell {
209
+ border-color: var(--nile-colors-green-500, var(--ng-colors-border-success-subtle));
210
+ }
211
+
212
+ /* ---- State: readonly ---- */
213
+
214
+ .otp--readonly .otp__cell {
215
+ cursor: default;
216
+ }
217
+
218
+ /* ---- State: disabled (mirrors .input--standard.input--disabled) ---- */
219
+
220
+ .otp--disabled .otp__cell {
221
+ cursor: not-allowed;
222
+ color: var(--nile-colors-neutral-500, var(--ng-colors-text-disabled ));
223
+ border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled ));
224
+ background-color: var(--nile-colors-white-base, var(--ng-colors-bg-disabled-subtle ));
225
+ }
226
+
227
+ .otp--disabled .otp__cell::placeholder {
228
+ color: var(--nile-input-standard-disabled-placeholder-font-color, var(--ng-colors-text-disabled ));
229
+ }
230
+
231
+ /* ---- Hidden value input ---- */
232
+
233
+ .otp__value-input {
234
+ position: absolute;
235
+ top: 0;
236
+ left: 0;
237
+ width: 100%;
238
+ height: 100%;
239
+ padding: 0;
240
+ margin: 0;
241
+ opacity: 0;
242
+ z-index: -1;
243
+ pointer-events: none;
244
+ }
245
+
246
+ /* ---- Help text ---- */
247
+
248
+ .form-control__help-text {
249
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-tertiary-600));
250
+ font-family: var(--nile-font-family-serif, var(--ng-font-family-body ));
251
+ font-size: var(--nile-type-scale-2, var(--ng-font-size-text-sm ));
252
+ font-style: normal;
253
+ font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-400 ));
254
+ line-height: var(--nile-type-scale-2, var(--ng-line-height-text-sm ));
255
+ letter-spacing: 0.2px;
256
+ }
257
+
258
+ /* ---- Error message ---- */
259
+
260
+ .form-control__error-message {
261
+ display: block;
262
+ color: var(--nile-colors-red-700, var(--ng-colors-text-error-primary-600));
263
+ margin-top: var(--nile-spacing-lg, var(--ng-spacing-1-5 ));
264
+ font-size: var(--nile-type-scale-2, var(--ng-font-size-text-sm ));
265
+ font-style: normal;
266
+ line-height: var(--nile-form-error-text-line-height, var(--ng-line-height-text-sm));
267
+ letter-spacing: 0.2px;
268
+ }
269
+ `;
270
+
271
+ export default [styles];
@@ -0,0 +1,30 @@
1
+ export enum OtpInputMode {
2
+ NONE = 'none',
3
+ TEXT = 'text',
4
+ DECIMAL = 'decimal',
5
+ NUMERIC = 'numeric',
6
+ TEL = 'tel',
7
+ SEARCH = 'search',
8
+ EMAIL = 'email',
9
+ URL = 'url',
10
+ }
11
+
12
+ export enum OtpInputType {
13
+ TEXT = 'text',
14
+ PASSWORD = 'password',
15
+ }
16
+
17
+ export enum OtpEnterKeyHint {
18
+ DONE = 'done',
19
+ NEXT = 'next',
20
+ }
21
+
22
+ export enum OtpAutoComplete {
23
+ ONE_TIME_CODE = 'one-time-code',
24
+ OFF = 'off',
25
+ }
26
+
27
+ export enum OtpCellPattern {
28
+ NUMERIC = '[0-9]*',
29
+ ALPHANUMERIC = '[A-Za-z0-9]*',
30
+ }