@aquera/nile-elements 1.6.1 → 1.6.3

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 (741) hide show
  1. package/README.md +14 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +1150 -624
  5. package/dist/internal/accessibility/a11y.custom-value.enum.cjs.js +2 -0
  6. package/dist/internal/accessibility/a11y.custom-value.enum.cjs.js.map +1 -0
  7. package/dist/internal/accessibility/a11y.custom-value.enum.esm.js +1 -0
  8. package/dist/internal/accessibility/a11y.property.enum.cjs.js +2 -0
  9. package/dist/internal/accessibility/a11y.property.enum.cjs.js.map +1 -0
  10. package/dist/internal/accessibility/a11y.property.enum.esm.js +1 -0
  11. package/dist/internal/accessibility/a11y.role.enum.cjs.js +2 -0
  12. package/dist/internal/accessibility/a11y.role.enum.cjs.js.map +1 -0
  13. package/dist/internal/accessibility/a11y.role.enum.esm.js +1 -0
  14. package/dist/internal/accessibility/a11y.state.enum.cjs.js +2 -0
  15. package/dist/internal/accessibility/a11y.state.enum.cjs.js.map +1 -0
  16. package/dist/internal/accessibility/a11y.state.enum.esm.js +1 -0
  17. package/dist/internal/accessibility/accessibility.const.cjs.js +2 -0
  18. package/dist/internal/accessibility/accessibility.const.cjs.js.map +1 -0
  19. package/dist/internal/accessibility/accessibility.const.esm.js +1 -0
  20. package/dist/internal/accessibility/role.enum.cjs.js +2 -0
  21. package/dist/internal/accessibility/role.enum.cjs.js.map +1 -0
  22. package/dist/internal/accessibility/role.enum.esm.js +1 -0
  23. package/dist/internal/enum.cjs.js +1 -1
  24. package/dist/internal/enum.cjs.js.map +1 -1
  25. package/dist/internal/enum.esm.js +1 -1
  26. package/dist/internal/nile-element.cjs.js +1 -1
  27. package/dist/internal/nile-element.cjs.js.map +1 -1
  28. package/dist/internal/nile-element.esm.js +1 -1
  29. package/dist/nile-accordion/index.cjs.js +1 -1
  30. package/dist/nile-accordion/index.esm.js +1 -1
  31. package/dist/nile-accordion/nile-accordion.cjs.js +1 -1
  32. package/dist/nile-accordion/nile-accordion.cjs.js.map +1 -1
  33. package/dist/nile-accordion/nile-accordion.esm.js +2 -2
  34. package/dist/nile-auto-complete/index.cjs.js +1 -1
  35. package/dist/nile-auto-complete/index.esm.js +1 -1
  36. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  37. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  38. package/dist/nile-auto-complete/nile-auto-complete.esm.js +1 -1
  39. package/dist/nile-avatar/index.cjs.js +1 -1
  40. package/dist/nile-avatar/index.esm.js +1 -1
  41. package/dist/nile-avatar/nile-avatar.cjs.js +1 -1
  42. package/dist/nile-avatar/nile-avatar.cjs.js.map +1 -1
  43. package/dist/nile-avatar/nile-avatar.esm.js +3 -1
  44. package/dist/nile-badge/index.cjs.js +1 -1
  45. package/dist/nile-badge/index.esm.js +1 -1
  46. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  47. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  48. package/dist/nile-badge/nile-badge.esm.js +2 -2
  49. package/dist/nile-breadcrumb/index.cjs.js +1 -1
  50. package/dist/nile-breadcrumb/index.esm.js +1 -1
  51. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js +1 -1
  52. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js.map +1 -1
  53. package/dist/nile-breadcrumb/nile-breadcrumb.esm.js +1 -1
  54. package/dist/nile-breadcrumb-item/index.cjs.js +1 -1
  55. package/dist/nile-breadcrumb-item/index.esm.js +1 -1
  56. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
  57. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
  58. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +4 -4
  59. package/dist/nile-button/index.cjs.js +1 -1
  60. package/dist/nile-button/index.esm.js +1 -1
  61. package/dist/nile-button/nile-button.cjs.js +1 -1
  62. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  63. package/dist/nile-button/nile-button.esm.js +1 -1
  64. package/dist/nile-button-filter/index.cjs.js +1 -1
  65. package/dist/nile-button-filter/index.esm.js +1 -1
  66. package/dist/nile-button-filter/nile-button-filter.cjs.js +1 -1
  67. package/dist/nile-button-filter/nile-button-filter.cjs.js.map +1 -1
  68. package/dist/nile-button-filter/nile-button-filter.esm.js +7 -7
  69. package/dist/nile-button-toggle/index.cjs.js +1 -1
  70. package/dist/nile-button-toggle/index.esm.js +1 -1
  71. package/dist/nile-button-toggle/nile-button-toggle.cjs.js +1 -1
  72. package/dist/nile-button-toggle/nile-button-toggle.cjs.js.map +1 -1
  73. package/dist/nile-button-toggle/nile-button-toggle.esm.js +2 -2
  74. package/dist/nile-button-toggle-group/index.cjs.js +1 -1
  75. package/dist/nile-button-toggle-group/index.esm.js +1 -1
  76. package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js +1 -1
  77. package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js.map +1 -1
  78. package/dist/nile-button-toggle-group/nile-button-toggle-group.esm.js +1 -1
  79. package/dist/nile-calendar/index.cjs.js +1 -1
  80. package/dist/nile-calendar/index.esm.js +1 -1
  81. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  82. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  83. package/dist/nile-calendar/nile-calendar.esm.js +4 -4
  84. package/dist/nile-card/index.cjs.js +1 -1
  85. package/dist/nile-card/index.esm.js +1 -1
  86. package/dist/nile-card/nile-card.cjs.js +1 -1
  87. package/dist/nile-card/nile-card.cjs.js.map +1 -1
  88. package/dist/nile-card/nile-card.esm.js +2 -2
  89. package/dist/nile-carousel/index.cjs.js +1 -1
  90. package/dist/nile-carousel/index.esm.js +1 -1
  91. package/dist/nile-carousel/nile-carousel-item/index.cjs.js +1 -1
  92. package/dist/nile-carousel/nile-carousel-item/index.esm.js +1 -1
  93. package/dist/nile-carousel/nile-carousel-item/nile-carousel-item.cjs.js +1 -1
  94. package/dist/nile-carousel/nile-carousel-item/nile-carousel-item.cjs.js.map +1 -1
  95. package/dist/nile-carousel/nile-carousel-item/nile-carousel-item.esm.js +2 -2
  96. package/dist/nile-carousel/nile-carousel.cjs.js +1 -1
  97. package/dist/nile-carousel/nile-carousel.cjs.js.map +1 -1
  98. package/dist/nile-carousel/nile-carousel.esm.js +1 -1
  99. package/dist/nile-checkbox/index.cjs.js +1 -1
  100. package/dist/nile-checkbox/index.esm.js +1 -1
  101. package/dist/nile-checkbox/nile-checkbox.cjs.js +1 -1
  102. package/dist/nile-checkbox/nile-checkbox.cjs.js.map +1 -1
  103. package/dist/nile-checkbox/nile-checkbox.css.cjs.js +1 -1
  104. package/dist/nile-checkbox/nile-checkbox.css.cjs.js.map +1 -1
  105. package/dist/nile-checkbox/nile-checkbox.css.esm.js +4 -0
  106. package/dist/nile-checkbox/nile-checkbox.esm.js +3 -3
  107. package/dist/nile-checkbox-group/index.cjs.js +2 -0
  108. package/dist/nile-checkbox-group/index.cjs.js.map +1 -0
  109. package/dist/nile-checkbox-group/index.esm.js +1 -0
  110. package/dist/nile-checkbox-group/nile-checkbox-group.cjs.js +2 -0
  111. package/dist/nile-checkbox-group/nile-checkbox-group.cjs.js.map +1 -0
  112. package/dist/nile-checkbox-group/nile-checkbox-group.css.cjs.js +2 -0
  113. package/dist/nile-checkbox-group/nile-checkbox-group.css.cjs.js.map +1 -0
  114. package/dist/nile-checkbox-group/nile-checkbox-group.css.esm.js +68 -0
  115. package/dist/nile-checkbox-group/nile-checkbox-group.esm.js +56 -0
  116. package/dist/nile-chip/index.cjs.js +1 -1
  117. package/dist/nile-chip/index.esm.js +1 -1
  118. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  119. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  120. package/dist/nile-chip/nile-chip.esm.js +2 -2
  121. package/dist/nile-circular-progressbar/index.cjs.js +1 -1
  122. package/dist/nile-circular-progressbar/index.esm.js +1 -1
  123. package/dist/nile-circular-progressbar/nile-circular-progressbar.cjs.js +1 -1
  124. package/dist/nile-circular-progressbar/nile-circular-progressbar.cjs.js.map +1 -1
  125. package/dist/nile-circular-progressbar/nile-circular-progressbar.esm.js +2 -2
  126. package/dist/nile-code-editor/index.cjs.js +1 -1
  127. package/dist/nile-code-editor/index.esm.js +1 -1
  128. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  129. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  130. package/dist/nile-code-editor/nile-code-editor.esm.js +1 -1
  131. package/dist/nile-content-editor/index.cjs.js +1 -1
  132. package/dist/nile-content-editor/index.esm.js +1 -1
  133. package/dist/nile-content-editor/nile-content-editor.cjs.js +1 -1
  134. package/dist/nile-content-editor/nile-content-editor.cjs.js.map +1 -1
  135. package/dist/nile-content-editor/nile-content-editor.esm.js +5 -5
  136. package/dist/nile-date-picker/index.cjs.js +1 -1
  137. package/dist/nile-date-picker/index.esm.js +1 -1
  138. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  139. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  140. package/dist/nile-date-picker/nile-date-picker.esm.js +1 -1
  141. package/dist/nile-detail/index.cjs.js +1 -1
  142. package/dist/nile-detail/index.esm.js +1 -1
  143. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  144. package/dist/nile-detail/nile-detail.cjs.js.map +1 -1
  145. package/dist/nile-detail/nile-detail.esm.js +2 -2
  146. package/dist/nile-dialog/index.cjs.js +1 -1
  147. package/dist/nile-dialog/index.esm.js +1 -1
  148. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  149. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  150. package/dist/nile-dialog/nile-dialog.esm.js +2 -2
  151. package/dist/nile-divider/index.cjs.js +1 -1
  152. package/dist/nile-divider/index.esm.js +1 -1
  153. package/dist/nile-divider/nile-divider.cjs.js +1 -1
  154. package/dist/nile-divider/nile-divider.cjs.js.map +1 -1
  155. package/dist/nile-divider/nile-divider.esm.js +2 -2
  156. package/dist/nile-drawer/index.cjs.js +1 -1
  157. package/dist/nile-drawer/index.esm.js +1 -1
  158. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  159. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  160. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  161. package/dist/nile-dropdown/index.cjs.js +1 -1
  162. package/dist/nile-dropdown/index.esm.js +1 -1
  163. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  164. package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
  165. package/dist/nile-dropdown/nile-dropdown.esm.js +1 -1
  166. package/dist/nile-empty-state/index.cjs.js +1 -1
  167. package/dist/nile-empty-state/index.esm.js +1 -1
  168. package/dist/nile-empty-state/nile-empty-state.cjs.js +1 -1
  169. package/dist/nile-empty-state/nile-empty-state.cjs.js.map +1 -1
  170. package/dist/nile-empty-state/nile-empty-state.esm.js +2 -2
  171. package/dist/nile-file-preview/index.cjs.js +1 -1
  172. package/dist/nile-file-preview/index.esm.js +1 -1
  173. package/dist/nile-file-preview/nile-file-preview.cjs.js +1 -1
  174. package/dist/nile-file-preview/nile-file-preview.cjs.js.map +1 -1
  175. package/dist/nile-file-preview/nile-file-preview.esm.js +1 -1
  176. package/dist/nile-file-upload/index.cjs.js +1 -1
  177. package/dist/nile-file-upload/index.esm.js +1 -1
  178. package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
  179. package/dist/nile-file-upload/nile-file-upload.cjs.js.map +1 -1
  180. package/dist/nile-file-upload/nile-file-upload.esm.js +2 -2
  181. package/dist/nile-filter-chip/index.cjs.js +1 -1
  182. package/dist/nile-filter-chip/index.esm.js +1 -1
  183. package/dist/nile-filter-chip/nile-filter-chip.cjs.js +1 -1
  184. package/dist/nile-filter-chip/nile-filter-chip.cjs.js.map +1 -1
  185. package/dist/nile-filter-chip/nile-filter-chip.esm.js +2 -2
  186. package/dist/nile-floating-panel/index.cjs.js +1 -1
  187. package/dist/nile-floating-panel/index.esm.js +1 -1
  188. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  189. package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
  190. package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
  191. package/dist/nile-form-group/index.cjs.js +1 -1
  192. package/dist/nile-form-group/index.esm.js +1 -1
  193. package/dist/nile-form-group/nile-form-group.cjs.js +1 -1
  194. package/dist/nile-form-group/nile-form-group.cjs.js.map +1 -1
  195. package/dist/nile-form-group/nile-form-group.esm.js +2 -2
  196. package/dist/nile-format-date/index.cjs.js +1 -1
  197. package/dist/nile-format-date/index.esm.js +1 -1
  198. package/dist/nile-format-date/nile-format-date.cjs.js +1 -1
  199. package/dist/nile-format-date/nile-format-date.cjs.js.map +1 -1
  200. package/dist/nile-format-date/nile-format-date.esm.js +1 -1
  201. package/dist/nile-grid/index.cjs.js +1 -1
  202. package/dist/nile-grid/index.esm.js +1 -1
  203. package/dist/nile-grid/nile-grid-body/index.cjs.js +1 -1
  204. package/dist/nile-grid/nile-grid-body/index.esm.js +1 -1
  205. package/dist/nile-grid/nile-grid-body/nile-grid-body.cjs.js +1 -1
  206. package/dist/nile-grid/nile-grid-body/nile-grid-body.cjs.js.map +1 -1
  207. package/dist/nile-grid/nile-grid-body/nile-grid-body.esm.js +2 -2
  208. package/dist/nile-grid/nile-grid-cell-item/index.cjs.js +1 -1
  209. package/dist/nile-grid/nile-grid-cell-item/index.esm.js +1 -1
  210. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
  211. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
  212. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.esm.js +2 -2
  213. package/dist/nile-grid/nile-grid-head/index.cjs.js +1 -1
  214. package/dist/nile-grid/nile-grid-head/index.esm.js +1 -1
  215. package/dist/nile-grid/nile-grid-head/nile-grid-head.cjs.js +1 -1
  216. package/dist/nile-grid/nile-grid-head/nile-grid-head.cjs.js.map +1 -1
  217. package/dist/nile-grid/nile-grid-head/nile-grid-head.esm.js +2 -2
  218. package/dist/nile-grid/nile-grid-head-item/index.cjs.js +1 -1
  219. package/dist/nile-grid/nile-grid-head-item/index.esm.js +1 -1
  220. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
  221. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
  222. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.esm.js +3 -3
  223. package/dist/nile-grid/nile-grid-row/index.cjs.js +1 -1
  224. package/dist/nile-grid/nile-grid-row/index.esm.js +1 -1
  225. package/dist/nile-grid/nile-grid-row/nile-grid-row.cjs.js +1 -1
  226. package/dist/nile-grid/nile-grid-row/nile-grid-row.cjs.js.map +1 -1
  227. package/dist/nile-grid/nile-grid-row/nile-grid-row.esm.js +2 -2
  228. package/dist/nile-grid/nile-grid.cjs.js +1 -1
  229. package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
  230. package/dist/nile-grid/nile-grid.esm.js +2 -2
  231. package/dist/nile-hero/index.cjs.js +1 -1
  232. package/dist/nile-hero/index.esm.js +1 -1
  233. package/dist/nile-hero/nile-hero.cjs.js +1 -1
  234. package/dist/nile-hero/nile-hero.cjs.js.map +1 -1
  235. package/dist/nile-hero/nile-hero.esm.js +2 -2
  236. package/dist/nile-hero-header/index.cjs.js +1 -1
  237. package/dist/nile-hero-header/index.esm.js +1 -1
  238. package/dist/nile-hero-header/nile-hero-header.cjs.js +1 -1
  239. package/dist/nile-hero-header/nile-hero-header.cjs.js.map +1 -1
  240. package/dist/nile-hero-header/nile-hero-header.esm.js +2 -2
  241. package/dist/nile-icon/icons/svg/folder_delete.cjs.js +2 -0
  242. package/dist/nile-icon/icons/svg/folder_delete.cjs.js.map +1 -0
  243. package/dist/nile-icon/icons/svg/folder_delete.esm.js +1 -0
  244. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  245. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  246. package/dist/nile-icon/icons/svg/layers-three-02.cjs.js +1 -1
  247. package/dist/nile-icon/icons/svg/layers-three-02.cjs.js.map +1 -1
  248. package/dist/nile-icon/icons/svg/layers-three-02.esm.js +1 -1
  249. package/dist/nile-icon/index.cjs.js +1 -1
  250. package/dist/nile-icon/index.cjs.js.map +1 -1
  251. package/dist/nile-icon/index.esm.js +1 -1
  252. package/dist/nile-icon-button/index.cjs.js +1 -1
  253. package/dist/nile-icon-button/index.esm.js +1 -1
  254. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  255. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  256. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  257. package/dist/nile-inline-edit/index.cjs.js +1 -1
  258. package/dist/nile-inline-edit/index.esm.js +1 -1
  259. package/dist/nile-inline-edit/nile-inline-edit.cjs.js +1 -1
  260. package/dist/nile-inline-edit/nile-inline-edit.cjs.js.map +1 -1
  261. package/dist/nile-inline-edit/nile-inline-edit.esm.js +2 -2
  262. package/dist/nile-inline-sidebar/index.cjs.js +1 -1
  263. package/dist/nile-inline-sidebar/index.esm.js +1 -1
  264. package/dist/nile-inline-sidebar/nile-inline-sidebar.cjs.js +1 -1
  265. package/dist/nile-inline-sidebar/nile-inline-sidebar.cjs.js.map +1 -1
  266. package/dist/nile-inline-sidebar/nile-inline-sidebar.esm.js +3 -3
  267. package/dist/nile-inline-sidebar-group/index.cjs.js +1 -1
  268. package/dist/nile-inline-sidebar-group/index.esm.js +1 -1
  269. package/dist/nile-inline-sidebar-group/nile-inline-sidebar-group.cjs.js +1 -1
  270. package/dist/nile-inline-sidebar-group/nile-inline-sidebar-group.cjs.js.map +1 -1
  271. package/dist/nile-inline-sidebar-group/nile-inline-sidebar-group.esm.js +3 -3
  272. package/dist/nile-inline-sidebar-item/index.cjs.js +1 -1
  273. package/dist/nile-inline-sidebar-item/index.esm.js +1 -1
  274. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.cjs.js +1 -1
  275. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.cjs.js.map +1 -1
  276. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.esm.js +3 -3
  277. package/dist/nile-input/index.cjs.js +1 -1
  278. package/dist/nile-input/index.esm.js +1 -1
  279. package/dist/nile-input/nile-input.cjs.js +1 -1
  280. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  281. package/dist/nile-input/nile-input.esm.js +1 -1
  282. package/dist/nile-link/index.cjs.js +1 -1
  283. package/dist/nile-link/index.esm.js +1 -1
  284. package/dist/nile-link/nile-link.cjs.js +1 -1
  285. package/dist/nile-link/nile-link.cjs.js.map +1 -1
  286. package/dist/nile-link/nile-link.esm.js +3 -3
  287. package/dist/nile-list/index.cjs.js +1 -1
  288. package/dist/nile-list/index.esm.js +1 -1
  289. package/dist/nile-list/nile-list.cjs.js +1 -1
  290. package/dist/nile-list/nile-list.cjs.js.map +1 -1
  291. package/dist/nile-list/nile-list.esm.js +1 -1
  292. package/dist/nile-list-item/index.cjs.js +1 -1
  293. package/dist/nile-list-item/index.esm.js +1 -1
  294. package/dist/nile-list-item/nile-list-item.cjs.js +1 -1
  295. package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -1
  296. package/dist/nile-list-item/nile-list-item.esm.js +2 -2
  297. package/dist/nile-lite-tooltip/index.cjs.js +1 -1
  298. package/dist/nile-lite-tooltip/index.esm.js +1 -1
  299. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
  300. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js.map +1 -1
  301. package/dist/nile-lite-tooltip/nile-lite-tooltip.esm.js +1 -1
  302. package/dist/nile-menu/index.cjs.js +1 -1
  303. package/dist/nile-menu/index.esm.js +1 -1
  304. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  305. package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
  306. package/dist/nile-menu/nile-menu.esm.js +2 -2
  307. package/dist/nile-menu-item/index.cjs.js +1 -1
  308. package/dist/nile-menu-item/index.esm.js +1 -1
  309. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  310. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  311. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  312. package/dist/nile-option/index.cjs.js +1 -1
  313. package/dist/nile-option/index.esm.js +1 -1
  314. package/dist/nile-option/nile-option.cjs.js +1 -1
  315. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  316. package/dist/nile-option/nile-option.esm.js +5 -5
  317. package/dist/nile-option-group/index.cjs.js +1 -1
  318. package/dist/nile-option-group/index.esm.js +1 -1
  319. package/dist/nile-option-group/nile-option-group.cjs.js +1 -1
  320. package/dist/nile-option-group/nile-option-group.cjs.js.map +1 -1
  321. package/dist/nile-option-group/nile-option-group.esm.js +2 -2
  322. package/dist/nile-otp-input/index.cjs.js +2 -0
  323. package/dist/nile-otp-input/index.cjs.js.map +1 -0
  324. package/dist/nile-otp-input/index.esm.js +1 -0
  325. package/dist/nile-otp-input/nile-otp-input.cjs.js +2 -0
  326. package/dist/nile-otp-input/nile-otp-input.cjs.js.map +1 -0
  327. package/dist/nile-otp-input/nile-otp-input.css.cjs.js +2 -0
  328. package/dist/nile-otp-input/nile-otp-input.css.cjs.js.map +1 -0
  329. package/dist/nile-otp-input/nile-otp-input.css.esm.js +257 -0
  330. package/dist/nile-otp-input/nile-otp-input.enum.cjs.js +2 -0
  331. package/dist/nile-otp-input/nile-otp-input.enum.cjs.js.map +1 -0
  332. package/dist/nile-otp-input/nile-otp-input.enum.esm.js +1 -0
  333. package/dist/nile-otp-input/nile-otp-input.esm.js +103 -0
  334. package/dist/nile-page-header/index.cjs.js +1 -1
  335. package/dist/nile-page-header/index.esm.js +1 -1
  336. package/dist/nile-page-header/nile-page-header.cjs.js +1 -1
  337. package/dist/nile-page-header/nile-page-header.cjs.js.map +1 -1
  338. package/dist/nile-page-header/nile-page-header.esm.js +2 -2
  339. package/dist/nile-pagination/index.cjs.js +1 -1
  340. package/dist/nile-pagination/index.esm.js +1 -1
  341. package/dist/nile-pagination/nile-pagination.cjs.js +1 -1
  342. package/dist/nile-pagination/nile-pagination.cjs.js.map +1 -1
  343. package/dist/nile-pagination/nile-pagination.css.cjs.js +1 -1
  344. package/dist/nile-pagination/nile-pagination.css.cjs.js.map +1 -1
  345. package/dist/nile-pagination/nile-pagination.css.esm.js +7 -0
  346. package/dist/nile-pagination/nile-pagination.esm.js +1 -1
  347. package/dist/nile-popover/index.cjs.js +1 -1
  348. package/dist/nile-popover/index.esm.js +1 -1
  349. package/dist/nile-popover/nile-popover.cjs.js +2 -2
  350. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  351. package/dist/nile-popover/nile-popover.esm.js +3 -3
  352. package/dist/nile-popup/index.cjs.js +1 -1
  353. package/dist/nile-popup/index.esm.js +1 -1
  354. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  355. package/dist/nile-popup/nile-popup.cjs.js.map +1 -1
  356. package/dist/nile-popup/nile-popup.esm.js +2 -2
  357. package/dist/nile-progress-bar/index.cjs.js +1 -1
  358. package/dist/nile-progress-bar/index.esm.js +1 -1
  359. package/dist/nile-progress-bar/nile-progress-bar.cjs.js +1 -1
  360. package/dist/nile-progress-bar/nile-progress-bar.cjs.js.map +1 -1
  361. package/dist/nile-progress-bar/nile-progress-bar.esm.js +2 -2
  362. package/dist/nile-qr-code/index.cjs.js +1 -1
  363. package/dist/nile-qr-code/index.esm.js +1 -1
  364. package/dist/nile-qr-code/nile-qr-code.cjs.js +1 -1
  365. package/dist/nile-qr-code/nile-qr-code.cjs.js.map +1 -1
  366. package/dist/nile-qr-code/nile-qr-code.esm.js +2 -2
  367. package/dist/nile-radio/index.cjs.js +1 -1
  368. package/dist/nile-radio/index.esm.js +1 -1
  369. package/dist/nile-radio/nile-radio.cjs.js +1 -1
  370. package/dist/nile-radio/nile-radio.cjs.js.map +1 -1
  371. package/dist/nile-radio/nile-radio.css.cjs.js +1 -1
  372. package/dist/nile-radio/nile-radio.css.cjs.js.map +1 -1
  373. package/dist/nile-radio/nile-radio.css.esm.js +4 -0
  374. package/dist/nile-radio/nile-radio.esm.js +2 -2
  375. package/dist/nile-radio-group/index.cjs.js +1 -1
  376. package/dist/nile-radio-group/index.esm.js +1 -1
  377. package/dist/nile-radio-group/nile-radio-group.cjs.js +1 -1
  378. package/dist/nile-radio-group/nile-radio-group.cjs.js.map +1 -1
  379. package/dist/nile-radio-group/nile-radio-group.esm.js +2 -2
  380. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
  381. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
  382. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
  383. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
  384. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +8 -6
  385. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
  386. package/dist/nile-section-message/index.cjs.js +1 -1
  387. package/dist/nile-section-message/index.esm.js +1 -1
  388. package/dist/nile-section-message/nile-section-message.cjs.js +1 -1
  389. package/dist/nile-section-message/nile-section-message.cjs.js.map +1 -1
  390. package/dist/nile-section-message/nile-section-message.esm.js +2 -2
  391. package/dist/nile-select/index.cjs.js +1 -1
  392. package/dist/nile-select/index.esm.js +1 -1
  393. package/dist/nile-select/nile-select.cjs.js +1 -1
  394. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  395. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  396. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  397. package/dist/nile-select/nile-select.css.esm.js +21 -2
  398. package/dist/nile-select/nile-select.esm.js +33 -25
  399. package/dist/nile-select/portal-utils.cjs.js +1 -1
  400. package/dist/nile-select/portal-utils.cjs.js.map +1 -1
  401. package/dist/nile-select/portal-utils.esm.js +1 -1
  402. package/dist/nile-side-bar/index.cjs.js +1 -1
  403. package/dist/nile-side-bar/index.esm.js +1 -1
  404. package/dist/nile-side-bar/nile-side-bar.cjs.js +1 -1
  405. package/dist/nile-side-bar/nile-side-bar.cjs.js.map +1 -1
  406. package/dist/nile-side-bar/nile-side-bar.esm.js +2 -2
  407. package/dist/nile-side-bar-action/index.cjs.js +1 -1
  408. package/dist/nile-side-bar-action/index.esm.js +1 -1
  409. package/dist/nile-side-bar-action/nile-side-bar-action.cjs.js +1 -1
  410. package/dist/nile-side-bar-action/nile-side-bar-action.cjs.js.map +1 -1
  411. package/dist/nile-side-bar-action/nile-side-bar-action.esm.js +3 -3
  412. package/dist/nile-side-bar-action-menu/index.cjs.js +1 -1
  413. package/dist/nile-side-bar-action-menu/index.esm.js +1 -1
  414. package/dist/nile-side-bar-action-menu/nile-side-bar-action-menu.cjs.js +1 -1
  415. package/dist/nile-side-bar-action-menu/nile-side-bar-action-menu.cjs.js.map +1 -1
  416. package/dist/nile-side-bar-action-menu/nile-side-bar-action-menu.esm.js +2 -2
  417. package/dist/nile-side-bar-action-menu-item/index.cjs.js +1 -1
  418. package/dist/nile-side-bar-action-menu-item/index.esm.js +1 -1
  419. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js +1 -1
  420. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js.map +1 -1
  421. package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.esm.js +1 -1
  422. package/dist/nile-side-bar-expand/index.cjs.js +1 -1
  423. package/dist/nile-side-bar-expand/index.esm.js +1 -1
  424. package/dist/nile-side-bar-expand/nile-side-bar-expand.cjs.js +1 -1
  425. package/dist/nile-side-bar-expand/nile-side-bar-expand.cjs.js.map +1 -1
  426. package/dist/nile-side-bar-expand/nile-side-bar-expand.esm.js +2 -2
  427. package/dist/nile-side-bar-footer/index.cjs.js +1 -1
  428. package/dist/nile-side-bar-footer/index.esm.js +1 -1
  429. package/dist/nile-side-bar-footer/nile-side-bar-footer.cjs.js +1 -1
  430. package/dist/nile-side-bar-footer/nile-side-bar-footer.cjs.js.map +1 -1
  431. package/dist/nile-side-bar-footer/nile-side-bar-footer.esm.js +2 -2
  432. package/dist/nile-side-bar-footer-item/index.cjs.js +1 -1
  433. package/dist/nile-side-bar-footer-item/index.esm.js +1 -1
  434. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.cjs.js +1 -1
  435. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.cjs.js.map +1 -1
  436. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.esm.js +1 -1
  437. package/dist/nile-side-bar-footer-text/index.cjs.js +1 -1
  438. package/dist/nile-side-bar-footer-text/index.esm.js +1 -1
  439. package/dist/nile-side-bar-footer-text/nile-side-bar-footer-text.cjs.js +1 -1
  440. package/dist/nile-side-bar-footer-text/nile-side-bar-footer-text.cjs.js.map +1 -1
  441. package/dist/nile-side-bar-footer-text/nile-side-bar-footer-text.esm.js +3 -3
  442. package/dist/nile-side-bar-group/index.cjs.js +1 -1
  443. package/dist/nile-side-bar-group/index.esm.js +1 -1
  444. package/dist/nile-side-bar-group/nile-side-bar-group.cjs.js +1 -1
  445. package/dist/nile-side-bar-group/nile-side-bar-group.cjs.js.map +1 -1
  446. package/dist/nile-side-bar-group/nile-side-bar-group.esm.js +2 -2
  447. package/dist/nile-side-bar-group-item/index.cjs.js +1 -1
  448. package/dist/nile-side-bar-group-item/index.esm.js +1 -1
  449. package/dist/nile-side-bar-group-item/nile-side-bar-group-item.cjs.js +1 -1
  450. package/dist/nile-side-bar-group-item/nile-side-bar-group-item.cjs.js.map +1 -1
  451. package/dist/nile-side-bar-group-item/nile-side-bar-group-item.esm.js +2 -2
  452. package/dist/nile-side-bar-group-item-icon/index.cjs.js +1 -1
  453. package/dist/nile-side-bar-group-item-icon/index.esm.js +1 -1
  454. package/dist/nile-side-bar-group-item-icon/nile-side-bar-group-item-icon.cjs.js +1 -1
  455. package/dist/nile-side-bar-group-item-icon/nile-side-bar-group-item-icon.cjs.js.map +1 -1
  456. package/dist/nile-side-bar-group-item-icon/nile-side-bar-group-item-icon.esm.js +2 -2
  457. package/dist/nile-side-bar-group-item-text/index.cjs.js +1 -1
  458. package/dist/nile-side-bar-group-item-text/index.esm.js +1 -1
  459. package/dist/nile-side-bar-group-item-text/nile-side-bar-group-item-text.cjs.js +1 -1
  460. package/dist/nile-side-bar-group-item-text/nile-side-bar-group-item-text.cjs.js.map +1 -1
  461. package/dist/nile-side-bar-group-item-text/nile-side-bar-group-item-text.esm.js +1 -1
  462. package/dist/nile-side-bar-header/index.cjs.js +1 -1
  463. package/dist/nile-side-bar-header/index.esm.js +1 -1
  464. package/dist/nile-side-bar-header/nile-side-bar-header.cjs.js +1 -1
  465. package/dist/nile-side-bar-header/nile-side-bar-header.cjs.js.map +1 -1
  466. package/dist/nile-side-bar-header/nile-side-bar-header.esm.js +2 -2
  467. package/dist/nile-side-bar-logo/index.cjs.js +1 -1
  468. package/dist/nile-side-bar-logo/index.esm.js +1 -1
  469. package/dist/nile-side-bar-logo/nile-side-bar-logo.cjs.js +1 -1
  470. package/dist/nile-side-bar-logo/nile-side-bar-logo.cjs.js.map +1 -1
  471. package/dist/nile-side-bar-logo/nile-side-bar-logo.esm.js +2 -2
  472. package/dist/nile-side-bar-panel/index.cjs.js +1 -1
  473. package/dist/nile-side-bar-panel/index.esm.js +1 -1
  474. package/dist/nile-side-bar-panel/nile-side-bar-panel.cjs.js +1 -1
  475. package/dist/nile-side-bar-panel/nile-side-bar-panel.cjs.js.map +1 -1
  476. package/dist/nile-side-bar-panel/nile-side-bar-panel.esm.js +2 -2
  477. package/dist/nile-skeleton-loader/index.cjs.js +1 -1
  478. package/dist/nile-skeleton-loader/index.esm.js +1 -1
  479. package/dist/nile-skeleton-loader/nile-skeleton-loader.cjs.js +1 -1
  480. package/dist/nile-skeleton-loader/nile-skeleton-loader.cjs.js.map +1 -1
  481. package/dist/nile-skeleton-loader/nile-skeleton-loader.esm.js +2 -2
  482. package/dist/nile-slide-toggle/index.cjs.js +1 -1
  483. package/dist/nile-slide-toggle/index.esm.js +1 -1
  484. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js +1 -1
  485. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js.map +1 -1
  486. package/dist/nile-slide-toggle/nile-slide-toggle.esm.js +2 -2
  487. package/dist/nile-slider/index.cjs.js +1 -1
  488. package/dist/nile-slider/index.esm.js +1 -1
  489. package/dist/nile-slider/nile-slider.cjs.js +1 -1
  490. package/dist/nile-slider/nile-slider.cjs.js.map +1 -1
  491. package/dist/nile-slider/nile-slider.esm.js +3 -3
  492. package/dist/nile-split-panel/index.cjs.js +1 -1
  493. package/dist/nile-split-panel/index.esm.js +1 -1
  494. package/dist/nile-split-panel/nile-split-panel.cjs.js +1 -1
  495. package/dist/nile-split-panel/nile-split-panel.cjs.js.map +1 -1
  496. package/dist/nile-split-panel/nile-split-panel.esm.js +2 -2
  497. package/dist/nile-stepper/index.cjs.js +1 -1
  498. package/dist/nile-stepper/index.esm.js +1 -1
  499. package/dist/nile-stepper/nile-stepper.cjs.js +1 -1
  500. package/dist/nile-stepper/nile-stepper.cjs.js.map +1 -1
  501. package/dist/nile-stepper/nile-stepper.esm.js +3 -3
  502. package/dist/nile-stepper-item/index.cjs.js +1 -1
  503. package/dist/nile-stepper-item/index.esm.js +1 -1
  504. package/dist/nile-stepper-item/nile-stepper-item.cjs.js +1 -1
  505. package/dist/nile-stepper-item/nile-stepper-item.cjs.js.map +1 -1
  506. package/dist/nile-stepper-item/nile-stepper-item.esm.js +1 -1
  507. package/dist/nile-switcher/index.cjs.js +1 -1
  508. package/dist/nile-switcher/index.esm.js +1 -1
  509. package/dist/nile-switcher/nile-switcher.cjs.js +1 -1
  510. package/dist/nile-switcher/nile-switcher.cjs.js.map +1 -1
  511. package/dist/nile-switcher/nile-switcher.esm.js +23 -23
  512. package/dist/nile-tab/index.cjs.js +1 -1
  513. package/dist/nile-tab/index.esm.js +1 -1
  514. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  515. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  516. package/dist/nile-tab/nile-tab.esm.js +1 -1
  517. package/dist/nile-tab-group/index.cjs.js +1 -1
  518. package/dist/nile-tab-group/index.esm.js +1 -1
  519. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  520. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  521. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  522. package/dist/nile-tab-panel/index.cjs.js +1 -1
  523. package/dist/nile-tab-panel/index.esm.js +1 -1
  524. package/dist/nile-tab-panel/nile-tab-panel.cjs.js +1 -1
  525. package/dist/nile-tab-panel/nile-tab-panel.cjs.js.map +1 -1
  526. package/dist/nile-tab-panel/nile-tab-panel.esm.js +3 -3
  527. package/dist/nile-table/index.cjs.js +1 -1
  528. package/dist/nile-table/index.esm.js +1 -1
  529. package/dist/nile-table/nile-table.cjs.js +1 -1
  530. package/dist/nile-table/nile-table.cjs.js.map +1 -1
  531. package/dist/nile-table/nile-table.esm.js +1 -1
  532. package/dist/nile-table-body/index.cjs.js +1 -1
  533. package/dist/nile-table-body/index.esm.js +1 -1
  534. package/dist/nile-table-body/nile-table-body.cjs.js +1 -1
  535. package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
  536. package/dist/nile-table-body/nile-table-body.esm.js +3 -3
  537. package/dist/nile-table-cell-item/index.cjs.js +1 -1
  538. package/dist/nile-table-cell-item/index.esm.js +1 -1
  539. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js +1 -1
  540. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js.map +1 -1
  541. package/dist/nile-table-cell-item/nile-table-cell-item.esm.js +5 -5
  542. package/dist/nile-table-header-item/index.cjs.js +1 -1
  543. package/dist/nile-table-header-item/index.esm.js +1 -1
  544. package/dist/nile-table-header-item/nile-table-header-item.cjs.js +1 -1
  545. package/dist/nile-table-header-item/nile-table-header-item.cjs.js.map +1 -1
  546. package/dist/nile-table-header-item/nile-table-header-item.esm.js +1 -1
  547. package/dist/nile-table-row/index.cjs.js +1 -1
  548. package/dist/nile-table-row/index.esm.js +1 -1
  549. package/dist/nile-table-row/nile-table-row.cjs.js +1 -1
  550. package/dist/nile-table-row/nile-table-row.cjs.js.map +1 -1
  551. package/dist/nile-table-row/nile-table-row.esm.js +2 -2
  552. package/dist/nile-tag/index.cjs.js +1 -1
  553. package/dist/nile-tag/index.esm.js +1 -1
  554. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  555. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  556. package/dist/nile-tag/nile-tag.esm.js +1 -1
  557. package/dist/nile-textarea/index.cjs.js +1 -1
  558. package/dist/nile-textarea/index.esm.js +1 -1
  559. package/dist/nile-textarea/nile-textarea.cjs.js +1 -1
  560. package/dist/nile-textarea/nile-textarea.cjs.js.map +1 -1
  561. package/dist/nile-textarea/nile-textarea.esm.js +2 -2
  562. package/dist/nile-title/index.cjs.js +1 -1
  563. package/dist/nile-title/index.esm.js +1 -1
  564. package/dist/nile-title/nile-title.cjs.js +1 -1
  565. package/dist/nile-title/nile-title.cjs.js.map +1 -1
  566. package/dist/nile-title/nile-title.esm.js +1 -1
  567. package/dist/nile-toast/index.cjs.js +1 -1
  568. package/dist/nile-toast/index.esm.js +1 -1
  569. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  570. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  571. package/dist/nile-toast/nile-toast.esm.js +2 -2
  572. package/dist/nile-toolbar/index.cjs.js +1 -1
  573. package/dist/nile-toolbar/index.esm.js +1 -1
  574. package/dist/nile-toolbar/nile-toolbar.cjs.js +1 -1
  575. package/dist/nile-toolbar/nile-toolbar.cjs.js.map +1 -1
  576. package/dist/nile-toolbar/nile-toolbar.esm.js +2 -2
  577. package/dist/nile-tooltip/index.cjs.js +1 -1
  578. package/dist/nile-tooltip/index.esm.js +1 -1
  579. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  580. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  581. package/dist/nile-tooltip/nile-tooltip.esm.js +2 -2
  582. package/dist/nile-tree/index.cjs.js +1 -1
  583. package/dist/nile-tree/index.esm.js +1 -1
  584. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  585. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  586. package/dist/nile-tree/nile-tree.esm.js +1 -1
  587. package/dist/nile-tree-item/index.cjs.js +1 -1
  588. package/dist/nile-tree-item/index.esm.js +1 -1
  589. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  590. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  591. package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
  592. package/dist/nile-vertical-stepper-item/index.cjs.js +1 -1
  593. package/dist/nile-vertical-stepper-item/index.esm.js +1 -1
  594. package/dist/nile-vertical-stepper-item/nile-vertical-stepper-item.cjs.js +1 -1
  595. package/dist/nile-vertical-stepper-item/nile-vertical-stepper-item.cjs.js.map +1 -1
  596. package/dist/nile-vertical-stepper-item/nile-vertical-stepper-item.esm.js +7 -7
  597. package/dist/nile-virtual-select/index.cjs.js +1 -1
  598. package/dist/nile-virtual-select/index.esm.js +1 -1
  599. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +3 -3
  600. package/dist/nile-virtual-select/nile-virtual-select.esm.js +3 -3
  601. package/dist/src/index.d.ts +2 -0
  602. package/dist/src/index.js +2 -0
  603. package/dist/src/index.js.map +1 -1
  604. package/dist/src/internal/accessibility/a11y.custom-value.enum.d.ts +69 -0
  605. package/dist/src/internal/accessibility/a11y.custom-value.enum.js +71 -0
  606. package/dist/src/internal/accessibility/a11y.custom-value.enum.js.map +1 -0
  607. package/dist/src/internal/accessibility/a11y.property.enum.d.ts +33 -0
  608. package/dist/src/internal/accessibility/a11y.property.enum.js +35 -0
  609. package/dist/src/internal/accessibility/a11y.property.enum.js.map +1 -0
  610. package/dist/src/internal/accessibility/a11y.role.enum.d.ts +50 -0
  611. package/dist/src/internal/accessibility/a11y.role.enum.js +52 -0
  612. package/dist/src/internal/accessibility/a11y.role.enum.js.map +1 -0
  613. package/dist/src/internal/accessibility/a11y.state.enum.d.ts +17 -0
  614. package/dist/src/internal/accessibility/a11y.state.enum.js +19 -0
  615. package/dist/src/internal/accessibility/a11y.state.enum.js.map +1 -0
  616. package/dist/src/internal/accessibility/accessibility.const.d.ts +8 -0
  617. package/dist/src/internal/accessibility/accessibility.const.js +9 -0
  618. package/dist/src/internal/accessibility/accessibility.const.js.map +1 -0
  619. package/dist/src/internal/accessibility/role.enum.d.ts +3 -0
  620. package/dist/src/internal/accessibility/role.enum.js +5 -0
  621. package/dist/src/internal/accessibility/role.enum.js.map +1 -0
  622. package/dist/src/internal/enum.d.ts +21 -0
  623. package/dist/src/internal/enum.js +23 -1
  624. package/dist/src/internal/enum.js.map +1 -1
  625. package/dist/src/internal/nile-element.d.ts +52 -0
  626. package/dist/src/internal/nile-element.js +45 -0
  627. package/dist/src/internal/nile-element.js.map +1 -1
  628. package/dist/src/nile-avatar/nile-avatar.js +2 -0
  629. package/dist/src/nile-avatar/nile-avatar.js.map +1 -1
  630. package/dist/src/nile-badge/nile-badge.d.ts +1 -0
  631. package/dist/src/nile-badge/nile-badge.js +12 -1
  632. package/dist/src/nile-badge/nile-badge.js.map +1 -1
  633. package/dist/src/nile-checkbox/nile-checkbox.css.js +4 -0
  634. package/dist/src/nile-checkbox/nile-checkbox.css.js.map +1 -1
  635. package/dist/src/nile-checkbox/nile-checkbox.d.ts +2 -0
  636. package/dist/src/nile-checkbox/nile-checkbox.js +5 -0
  637. package/dist/src/nile-checkbox/nile-checkbox.js.map +1 -1
  638. package/dist/src/nile-checkbox-group/index.d.ts +1 -0
  639. package/dist/src/nile-checkbox-group/index.js +2 -0
  640. package/dist/src/nile-checkbox-group/index.js.map +1 -0
  641. package/dist/src/nile-checkbox-group/nile-checkbox-group.css.d.ts +1 -0
  642. package/dist/src/nile-checkbox-group/nile-checkbox-group.css.js +70 -0
  643. package/dist/src/nile-checkbox-group/nile-checkbox-group.css.js.map +1 -0
  644. package/dist/src/nile-checkbox-group/nile-checkbox-group.d.ts +84 -0
  645. package/dist/src/nile-checkbox-group/nile-checkbox-group.js +355 -0
  646. package/dist/src/nile-checkbox-group/nile-checkbox-group.js.map +1 -0
  647. package/dist/src/nile-checkbox-group/nile-checkbox-group.test.d.ts +2 -0
  648. package/dist/src/nile-checkbox-group/nile-checkbox-group.test.js +671 -0
  649. package/dist/src/nile-checkbox-group/nile-checkbox-group.test.js.map +1 -0
  650. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +2 -0
  651. package/dist/src/nile-floating-panel/nile-floating-panel.js +12 -1
  652. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
  653. package/dist/src/nile-icon/icons/svg/folder_delete.d.ts +5 -0
  654. package/dist/src/nile-icon/icons/svg/folder_delete.js +5 -0
  655. package/dist/src/nile-icon/icons/svg/folder_delete.js.map +1 -0
  656. package/dist/src/nile-icon/icons/svg/index.d.ts +1 -0
  657. package/dist/src/nile-icon/icons/svg/index.js +1 -0
  658. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  659. package/dist/src/nile-icon/icons/svg/layers-three-02.d.ts +1 -1
  660. package/dist/src/nile-icon/icons/svg/layers-three-02.js +1 -1
  661. package/dist/src/nile-icon/icons/svg/layers-three-02.js.map +1 -1
  662. package/dist/src/nile-link/nile-link.d.ts +2 -1
  663. package/dist/src/nile-link/nile-link.js +18 -1
  664. package/dist/src/nile-link/nile-link.js.map +1 -1
  665. package/dist/src/nile-otp-input/index.d.ts +1 -0
  666. package/dist/src/nile-otp-input/index.js +2 -0
  667. package/dist/src/nile-otp-input/index.js.map +1 -0
  668. package/dist/src/nile-otp-input/nile-otp-input.css.d.ts +12 -0
  669. package/dist/src/nile-otp-input/nile-otp-input.css.js +269 -0
  670. package/dist/src/nile-otp-input/nile-otp-input.css.js.map +1 -0
  671. package/dist/src/nile-otp-input/nile-otp-input.d.ts +156 -0
  672. package/dist/src/nile-otp-input/nile-otp-input.enum.d.ts +26 -0
  673. package/dist/src/nile-otp-input/nile-otp-input.enum.js +32 -0
  674. package/dist/src/nile-otp-input/nile-otp-input.enum.js.map +1 -0
  675. package/dist/src/nile-otp-input/nile-otp-input.js +762 -0
  676. package/dist/src/nile-otp-input/nile-otp-input.js.map +1 -0
  677. package/dist/src/nile-otp-input/nile-otp-input.test.d.ts +1 -0
  678. package/dist/src/nile-otp-input/nile-otp-input.test.js +493 -0
  679. package/dist/src/nile-otp-input/nile-otp-input.test.js.map +1 -0
  680. package/dist/src/nile-pagination/nile-pagination.css.js +7 -0
  681. package/dist/src/nile-pagination/nile-pagination.css.js.map +1 -1
  682. package/dist/src/nile-radio/nile-radio.css.js +4 -0
  683. package/dist/src/nile-radio/nile-radio.css.js.map +1 -1
  684. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +8 -6
  685. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
  686. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +2 -0
  687. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +43 -0
  688. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
  689. package/dist/src/nile-rich-text-editor/nile-rte-link.test.js +6 -5
  690. package/dist/src/nile-rich-text-editor/nile-rte-link.test.js.map +1 -1
  691. package/dist/src/nile-select/nile-select.css.js +21 -2
  692. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  693. package/dist/src/nile-select/nile-select.d.ts +4 -0
  694. package/dist/src/nile-select/nile-select.js +42 -24
  695. package/dist/src/nile-select/nile-select.js.map +1 -1
  696. package/dist/src/nile-select/portal-utils.d.ts +2 -0
  697. package/dist/src/nile-select/portal-utils.js +36 -3
  698. package/dist/src/nile-select/portal-utils.js.map +1 -1
  699. package/dist/src/version.js +2 -2
  700. package/dist/src/version.js.map +1 -1
  701. package/dist/tsconfig.tsbuildinfo +1 -1
  702. package/package.json +4 -2
  703. package/plop-templates/lit/index.ts.hbs +1 -1
  704. package/plop-templates/lit/lit.css.ts.hbs +1 -1
  705. package/plop-templates/lit/lit.ts.hbs +1 -1
  706. package/src/index.ts +3 -1
  707. package/src/internal/accessibility/a11y.custom-value.enum.ts +69 -0
  708. package/src/internal/accessibility/a11y.property.enum.ts +33 -0
  709. package/src/internal/accessibility/a11y.role.enum.ts +50 -0
  710. package/src/internal/accessibility/a11y.state.enum.ts +17 -0
  711. package/src/internal/accessibility/accessibility.const.ts +9 -0
  712. package/src/internal/accessibility/role.enum.ts +3 -0
  713. package/src/internal/enum.ts +23 -1
  714. package/src/internal/nile-element.ts +99 -0
  715. package/src/nile-avatar/nile-avatar.ts +2 -0
  716. package/src/nile-badge/nile-badge.ts +13 -1
  717. package/src/nile-checkbox/nile-checkbox.css.ts +4 -0
  718. package/src/nile-checkbox/nile-checkbox.ts +3 -0
  719. package/src/nile-checkbox-group/index.ts +1 -0
  720. package/src/nile-checkbox-group/nile-checkbox-group.css.ts +70 -0
  721. package/src/nile-checkbox-group/nile-checkbox-group.test.ts +769 -0
  722. package/src/nile-checkbox-group/nile-checkbox-group.ts +351 -0
  723. package/src/nile-floating-panel/nile-floating-panel.ts +10 -1
  724. package/src/nile-icon/icons/svg/folder_delete.ts +5 -0
  725. package/src/nile-icon/icons/svg/index.ts +1 -0
  726. package/src/nile-icon/icons/svg/layers-three-02.ts +1 -1
  727. package/src/nile-link/nile-link.ts +21 -2
  728. package/src/nile-otp-input/index.ts +1 -0
  729. package/src/nile-otp-input/nile-otp-input.css.ts +271 -0
  730. package/src/nile-otp-input/nile-otp-input.enum.ts +30 -0
  731. package/src/nile-otp-input/nile-otp-input.test.ts +732 -0
  732. package/src/nile-otp-input/nile-otp-input.ts +835 -0
  733. package/src/nile-pagination/nile-pagination.css.ts +7 -0
  734. package/src/nile-radio/nile-radio.css.ts +4 -0
  735. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +8 -6
  736. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +43 -0
  737. package/src/nile-rich-text-editor/nile-rte-link.test.ts +6 -5
  738. package/src/nile-select/nile-select.css.ts +21 -2
  739. package/src/nile-select/nile-select.ts +44 -24
  740. package/src/nile-select/portal-utils.ts +46 -3
  741. package/vscode-html-custom-data.json +281 -19
@@ -0,0 +1,835 @@
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 { html } from 'lit';
9
+ import {
10
+ customElement,
11
+ property,
12
+ query,
13
+ queryAll,
14
+ state,
15
+ } from 'lit/decorators.js';
16
+ import { classMap } from 'lit/directives/class-map.js';
17
+ import { ifDefined } from 'lit/directives/if-defined.js';
18
+ import { live } from 'lit/directives/live.js';
19
+ import { defaultValue } from '../internal/default-value';
20
+ import { FormControlController, validValidityState } from '../internal/form';
21
+ import { HasSlotController } from '../internal/slot';
22
+ import { watch } from '../internal/watch';
23
+ import NileElement from '../internal/nile-element';
24
+ import { KeyCode, Nile_Events } from '../internal/enum';
25
+ import type { CSSResultGroup } from 'lit';
26
+ import type { NileFormControl } from '../internal/nile-element';
27
+ import { styles } from './nile-otp-input.css';
28
+ import {
29
+ OtpInputMode,
30
+ OtpInputType,
31
+ OtpEnterKeyHint,
32
+ OtpAutoComplete,
33
+ OtpCellPattern,
34
+ } from './nile-otp-input.enum';
35
+ import '../nile-form-help-text';
36
+ import '../nile-form-error-message';
37
+
38
+ /**
39
+ * @summary OTP input renders a segmented set of cells but behaves like a single logical form control.
40
+ * @tag nile-otp-input
41
+ *
42
+ * @slot label - The input label. Alternatively, use the `label` attribute.
43
+ * @slot help-text - Helpful guidance text. Alternatively, use the `help-text` attribute.
44
+ *
45
+ * @event nile-input - Emitted whenever the OTP value changes from user input.
46
+ * @event nile-change - Emitted whenever the OTP value changes from user input.
47
+ * @event nile-complete - Emitted when all OTP cells are filled.
48
+ * @event nile-focus - Emitted when focus enters the component.
49
+ * @event nile-blur - Emitted when focus leaves the component.
50
+ * @event nile-paste - Emitted when OTP text is pasted.
51
+ * @event nile-invalid - Emitted when the control is invalid.
52
+ *
53
+ * @csspart form-control - Wrapper for label, input, and help/error content.
54
+ * @csspart form-control-label - Label wrapper.
55
+ * @csspart form-control-input - Input wrapper.
56
+ * @csspart form-control-help-text - Help text wrapper.
57
+ * @csspart form-control-error-message - Error message wrapper.
58
+ * @csspart base - OTP cell container.
59
+ * @csspart cell - Individual OTP cell.
60
+ * @csspart separator - Separator element between cell groups.
61
+ */
62
+ @customElement('nile-otp-input')
63
+ export class NileOtpInput extends NileElement implements NileFormControl {
64
+ static styles: CSSResultGroup = styles;
65
+
66
+ private readonly formControlController: FormControlController =
67
+ new FormControlController(this, {
68
+ assumeInteractionOn: [Nile_Events.NILE_BLUR, Nile_Events.NILE_INPUT],
69
+ });
70
+
71
+ private readonly hasSlotController = new HasSlotController(
72
+ this,
73
+ 'help-text',
74
+ 'label'
75
+ );
76
+
77
+ private customValidationMessage = '';
78
+ private wasComplete = false;
79
+
80
+ @query('.otp__value-input') valueInput: HTMLInputElement;
81
+ @queryAll('.otp__cell') cellInputs: NodeListOf<HTMLInputElement>;
82
+
83
+ @state() private hasFocus = false;
84
+ @state() private activeIndex = -1;
85
+ @state() private cells: string[] = this.createCells('');
86
+
87
+ /** The name of the input, submitted as a name/value pair with form data. */
88
+ @property({ reflect: true, type: String, attribute: true }) name = '';
89
+
90
+ /** The current value of the OTP control. */
91
+ @property({ reflect: true, type: String, attribute: true }) value = '';
92
+
93
+ /** The default value of the form control. Primarily used for resetting the form control. */
94
+ @defaultValue() defaultValue = '';
95
+
96
+ /** Number of OTP cells. Values below 4 are clamped to 4. */
97
+ @property({ type: Number, reflect: true, attribute: true }) length = 6;
98
+
99
+ /** Restricts input to numeric digits when true. Overridden by `alphanumeric`. */
100
+ @property({ type: Boolean, reflect: true, attribute: true }) numericOnly = true;
101
+
102
+ /** Allows both letters and digits. When present, overrides `numeric-only`. */
103
+ @property({ type: Boolean, reflect: true, attribute: true }) alphanumeric = false;
104
+
105
+ /** The input's label. */
106
+ @property({ reflect: true, attribute: true, type: String }) label = '';
107
+
108
+ @property({ attribute: true, reflect: true, type: String }) helpText = '';
109
+
110
+ @property({ attribute: true, reflect: true, type: String }) errorMessage = '';
111
+
112
+ /** Placeholder shown inside each OTP cell. */
113
+ @property({ reflect: true, attribute: true, type: String }) placeholder = '';
114
+
115
+ /** Optional separator text rendered between configured OTP groups (for example "-"). */
116
+ @property({ reflect: true, type: String }) separator = '';
117
+
118
+ /** Renders a separator after each N cells when `separator` is set. */
119
+ @property({ type: Number, attribute: true, reflect: true }) separatorEvery = 0;
120
+
121
+ /** Comma-separated zero-based cell indexes after which separators are rendered. */
122
+ @property({ attribute: 'separator-positions', type: String, reflect: true }) separatorPositions = '';
123
+
124
+ /** Masks filled cells with dots, showing each character briefly while typing. */
125
+ @property({ type: Boolean, reflect: true }) masked = false;
126
+
127
+ /** Sets the input to a warning state, changing its visual appearance. */
128
+ @property({ type: Boolean, attribute: true, reflect: true }) warning = false;
129
+
130
+ /** Sets the input to an error state, changing its visual appearance. */
131
+ @property({ type: Boolean, attribute: true, reflect: true }) error = false;
132
+
133
+ /** Sets the input to a success state, changing its visual appearance. */
134
+ @property({ type: Boolean, attribute: true, reflect: true }) success = false;
135
+
136
+ /** Disables the control. */
137
+ @property({ type: Boolean, reflect: true, attribute: true }) disabled = false;
138
+
139
+ /** Makes the control readonly. */
140
+ @property({ type: Boolean, attribute: true, reflect: true }) readonly = false;
141
+
142
+ /**
143
+ * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you
144
+ * to place the form control outside of a form and associate it with the form that has this `id`.
145
+ */
146
+ @property({ reflect: true, attribute: true, type: String }) form = '';
147
+
148
+ /** Makes this field required. */
149
+ @property({ type: Boolean, reflect: true, attribute: true }) required = false;
150
+
151
+ /** Optional regex pattern for full OTP validation. */
152
+ @property({ reflect: true, attribute: true, type: String }) pattern: string;
153
+
154
+ /** Indicates that the input should receive focus on page load. */
155
+ @property({ type: Boolean, reflect: true, attribute: true }) autofocus = false;
156
+
157
+ /** Controls keyboard type shown on supporting virtual keyboards. */
158
+ @property({ reflect: true, attribute: true, type: String }) inputmode:
159
+ | 'none'
160
+ | 'text'
161
+ | 'decimal'
162
+ | 'numeric'
163
+ | 'tel'
164
+ | 'search'
165
+ | 'email'
166
+ | 'url';
167
+
168
+ /** The autocomplete mode used on the first OTP cell. */
169
+ @property({ reflect: true, type: String }) autocomplete: string = OtpAutoComplete.ONE_TIME_CODE;
170
+
171
+ connectedCallback() {
172
+ super.connectedCallback();
173
+ this.emit(Nile_Events.NILE_INIT);
174
+ }
175
+
176
+ disconnectedCallback() {
177
+ super.disconnectedCallback();
178
+ this.emit(Nile_Events.NILE_DESTROY);
179
+ }
180
+
181
+ firstUpdated() {
182
+ const normalized = this.normalizeValue(this.value);
183
+ if (normalized !== this.value) {
184
+ this.value = normalized;
185
+ return;
186
+ }
187
+
188
+ this.syncCellsFromValue(normalized);
189
+ this.wasComplete = this.isComplete(normalized);
190
+ this.valueInput.setCustomValidity(this.customValidationMessage);
191
+ this.formControlController.updateValidity();
192
+
193
+ if (this.autofocus) {
194
+ this.focus();
195
+ }
196
+ }
197
+
198
+ /** Gets the validity state object. */
199
+ get validity() {
200
+ return this.valueInput?.validity ?? validValidityState;
201
+ }
202
+
203
+ /** Gets the validation message. */
204
+ get validationMessage() {
205
+ return this.valueInput?.validationMessage ?? '';
206
+ }
207
+
208
+ /** Returns true when all OTP cells have values. */
209
+ get complete() {
210
+ return this.isComplete(this.value);
211
+ }
212
+
213
+ private getNormalizedLength() {
214
+ const parsed = Number.isFinite(this.length) ? Math.trunc(this.length) : 6;
215
+ return Math.max(4, parsed);
216
+ }
217
+
218
+ private isNumericMode() {
219
+ return this.numericOnly && !this.alphanumeric;
220
+ }
221
+
222
+ private getResolvedInputMode() {
223
+ return this.inputmode ?? (this.isNumericMode() ? OtpInputMode.NUMERIC : OtpInputMode.TEXT);
224
+ }
225
+
226
+ private getValidationPattern() {
227
+ if (this.pattern) {
228
+ return this.pattern;
229
+ }
230
+
231
+ const normalizedLength = this.getNormalizedLength();
232
+ return this.isNumericMode()
233
+ ? `[0-9]{${normalizedLength}}`
234
+ : `[A-Za-z0-9]{${normalizedLength}}`;
235
+ }
236
+
237
+ private isAllowedCharacter(char: string) {
238
+ return this.isNumericMode() ? /^[0-9]$/.test(char) : /^[A-Za-z0-9]$/.test(char);
239
+ }
240
+
241
+ private toOtpCharacters(value: string) {
242
+ return Array.from(value ?? '').filter(char =>
243
+ this.isAllowedCharacter(char)
244
+ );
245
+ }
246
+
247
+ private normalizeValue(value: string) {
248
+ return this.toOtpCharacters(value ?? '')
249
+ .slice(0, this.getNormalizedLength())
250
+ .join('');
251
+ }
252
+
253
+ private createCells(value: string) {
254
+ const normalizedLength = this.getNormalizedLength();
255
+ const normalizedChars = this.toOtpCharacters(value).slice(
256
+ 0,
257
+ normalizedLength
258
+ );
259
+ return Array.from(
260
+ { length: normalizedLength },
261
+ (_, index) => normalizedChars[index] ?? ''
262
+ );
263
+ }
264
+
265
+ private syncCellsFromValue(value: string) {
266
+ this.cells = this.createCells(value);
267
+ }
268
+
269
+ private isComplete(value: string) {
270
+ return value.length === this.getNormalizedLength();
271
+ }
272
+
273
+ private getFirstEmptyIndex() {
274
+ const index = this.cells.findIndex(char => char === '');
275
+ return index === -1 ? this.getNormalizedLength() - 1 : index;
276
+ }
277
+
278
+ private getSeparatorIndices() {
279
+ const maxIndex = this.getNormalizedLength() - 2;
280
+ const indices = new Set<number>();
281
+
282
+ if (Number.isInteger(this.separatorEvery) && this.separatorEvery > 0) {
283
+ for (
284
+ let index = this.separatorEvery - 1;
285
+ index <= maxIndex;
286
+ index += this.separatorEvery
287
+ ) {
288
+ indices.add(index);
289
+ }
290
+ }
291
+
292
+ if (this.separatorPositions.trim().length > 0) {
293
+ this.separatorPositions
294
+ .split(',')
295
+ .map(value => Number.parseInt(value.trim(), 10))
296
+ .filter(
297
+ index => Number.isInteger(index) && index >= 0 && index <= maxIndex
298
+ )
299
+ .forEach(index => indices.add(index));
300
+ }
301
+
302
+ return indices;
303
+ }
304
+
305
+ private getCellPlaceholder(index: number) {
306
+ if (!this.placeholder || this.cells[index]) {
307
+ return undefined;
308
+ }
309
+
310
+ if (this.activeIndex === -1) {
311
+ return index === this.getFirstEmptyIndex() ? this.placeholder : undefined;
312
+ }
313
+
314
+ return index === this.activeIndex ? this.placeholder : undefined;
315
+ }
316
+
317
+ private focusCell(index: number, options?: FocusOptions) {
318
+ const input = this.cellInputs?.[index];
319
+ if (input) {
320
+ input.focus(options);
321
+ input.select();
322
+ }
323
+ }
324
+
325
+ private updateCell(index: number, value: string) {
326
+ const nextCells = [...this.cells];
327
+ nextCells[index] = value;
328
+ this.cells = nextCells;
329
+ }
330
+
331
+ private fillFromIndex(startIndex: number, chars: string[]) {
332
+ const nextCells = [...this.cells];
333
+ let cursor = startIndex;
334
+
335
+ for (const char of chars) {
336
+ if (cursor >= nextCells.length) {
337
+ break;
338
+ }
339
+
340
+ nextCells[cursor] = char;
341
+ cursor += 1;
342
+ }
343
+
344
+ this.cells = nextCells;
345
+ return cursor;
346
+ }
347
+
348
+ private commitUserValueUpdate() {
349
+ const previousValue = this.value;
350
+ const nextValue = this.cells.join('');
351
+ const isNowComplete = this.isComplete(nextValue);
352
+
353
+ this.value = nextValue;
354
+ this.valueInput.value = nextValue;
355
+ this.valueInput.setCustomValidity(this.customValidationMessage);
356
+ this.formControlController.updateValidity();
357
+
358
+ this.emit(Nile_Events.NILE_INPUT, { value: nextValue, complete: isNowComplete });
359
+ if (previousValue !== nextValue) {
360
+ this.emit(Nile_Events.NILE_CHANGE, { value: nextValue, complete: isNowComplete });
361
+ }
362
+
363
+ if (isNowComplete && !this.wasComplete) {
364
+ this.emit(Nile_Events.NILE_COMPLETE, { value: nextValue });
365
+ }
366
+
367
+ this.wasComplete = isNowComplete;
368
+ }
369
+
370
+ private handleInvalid(event: Event) {
371
+ this.formControlController.setValidity(false);
372
+ this.formControlController.emitInvalidEvent(event);
373
+ }
374
+
375
+ private handleCellFocus(event: Event) {
376
+ const target = event.target as HTMLInputElement;
377
+ const index = Number(target.dataset.index ?? -1);
378
+ const firstEmpty = this.getFirstEmptyIndex();
379
+
380
+ if (index > firstEmpty) {
381
+ this.focusCell(firstEmpty);
382
+ return;
383
+ }
384
+
385
+ if (index < firstEmpty && !this.cells[index]) {
386
+ this.focusCell(firstEmpty);
387
+ return;
388
+ }
389
+
390
+ this.activeIndex = index;
391
+ target.select();
392
+
393
+ if (!this.hasFocus) {
394
+ this.hasFocus = true;
395
+ this.emit(Nile_Events.NILE_FOCUS, { value: this.value });
396
+ }
397
+ }
398
+
399
+ private handleCellBlur() {
400
+ queueMicrotask(() => {
401
+ const active = this.shadowRoot?.activeElement;
402
+ const isInsideOtp =
403
+ active instanceof HTMLInputElement &&
404
+ active.classList.contains('otp__cell');
405
+
406
+ if (!isInsideOtp && this.hasFocus) {
407
+ this.hasFocus = false;
408
+ this.activeIndex = -1;
409
+ this.emit(Nile_Events.NILE_BLUR, { value: this.value });
410
+ }
411
+ });
412
+ }
413
+
414
+ private handleCellInput(event: Event) {
415
+ const target = event.target as HTMLInputElement;
416
+ const index = Number(target.dataset.index ?? 0);
417
+
418
+ if (this.disabled || this.readonly) {
419
+ target.value = this.cells[index] ?? '';
420
+ return;
421
+ }
422
+
423
+ const chars = this.toOtpCharacters(target.value);
424
+
425
+ if (chars.length === 0) {
426
+ this.updateCell(index, '');
427
+ this.commitUserValueUpdate();
428
+ return;
429
+ }
430
+
431
+ if (chars.length === 1) {
432
+ this.updateCell(index, chars[0]);
433
+ this.commitUserValueUpdate();
434
+
435
+ const nextEmpty = this.getFirstEmptyIndex();
436
+ this.focusCell(nextEmpty);
437
+ return;
438
+ }
439
+
440
+ const nextCursor = this.fillFromIndex(index, chars);
441
+ this.commitUserValueUpdate();
442
+ const nextEmpty = this.getFirstEmptyIndex();
443
+ this.focusCell(nextEmpty);
444
+ }
445
+
446
+ private handleCellPaste(event: ClipboardEvent) {
447
+ if (this.disabled || this.readonly) {
448
+ return;
449
+ }
450
+
451
+ const pasted = event.clipboardData?.getData('text') ?? '';
452
+ const chars = this.toOtpCharacters(pasted);
453
+
454
+ if (!chars.length) {
455
+ return;
456
+ }
457
+
458
+ event.preventDefault();
459
+
460
+ this.fillFromIndex(0, chars);
461
+ this.commitUserValueUpdate();
462
+ const nextEmpty = this.getFirstEmptyIndex();
463
+ this.focusCell(nextEmpty);
464
+ this.emit(Nile_Events.NILE_PASTE, { value: this.value });
465
+ }
466
+
467
+ private handleCellKeyDown(event: KeyboardEvent) {
468
+ const hasModifier = event.metaKey || event.ctrlKey || event.altKey;
469
+ const target = event.target as HTMLInputElement;
470
+ const index = Number(target.dataset.index ?? 0);
471
+
472
+ if (event.key === KeyCode.ENTER && !hasModifier && !event.shiftKey) {
473
+ setTimeout(() => {
474
+ if (!event.defaultPrevented && !event.isComposing) {
475
+ this.formControlController.submit();
476
+ }
477
+ });
478
+ return;
479
+ }
480
+
481
+ if (this.disabled || this.readonly) {
482
+ return;
483
+ }
484
+
485
+ const isHandledKey =
486
+ event.key === KeyCode.BACKSPACE ||
487
+ event.key === KeyCode.DELETE ||
488
+ event.key === KeyCode.ARROW_LEFT ||
489
+ event.key === KeyCode.ARROW_RIGHT ||
490
+ event.key === KeyCode.HOME ||
491
+ event.key === KeyCode.END ||
492
+ event.key === KeyCode.SPACE ||
493
+ (event.key.length === 1 && !hasModifier);
494
+
495
+ if (!isHandledKey) {
496
+ return;
497
+ }
498
+
499
+ event.preventDefault();
500
+
501
+ if (event.key === KeyCode.BACKSPACE) {
502
+ if (this.cells[index]) {
503
+ this.updateCell(index, '');
504
+ this.commitUserValueUpdate();
505
+ if (index > 0) {
506
+ this.focusCell(index - 1);
507
+ }
508
+ return;
509
+ }
510
+
511
+ if (index > 0) {
512
+ this.updateCell(index - 1, '');
513
+ this.commitUserValueUpdate();
514
+ this.focusCell(index - 1);
515
+ }
516
+
517
+ return;
518
+ }
519
+
520
+ if (event.key === KeyCode.DELETE) {
521
+ if (this.cells[index]) {
522
+ this.updateCell(index, '');
523
+ this.commitUserValueUpdate();
524
+ }
525
+ return;
526
+ }
527
+
528
+ if (event.key === KeyCode.ARROW_LEFT) {
529
+ if (index > 0) {
530
+ this.focusCell(index - 1);
531
+ }
532
+ return;
533
+ }
534
+
535
+ if (event.key === KeyCode.ARROW_RIGHT) {
536
+ const firstEmpty = this.getFirstEmptyIndex();
537
+ if (index < firstEmpty) {
538
+ this.focusCell(index + 1);
539
+ }
540
+ return;
541
+ }
542
+
543
+ if (event.key === KeyCode.HOME) {
544
+ this.focusCell(0);
545
+ return;
546
+ }
547
+
548
+ if (event.key === KeyCode.END) {
549
+ this.focusCell(this.getFirstEmptyIndex());
550
+ return;
551
+ }
552
+
553
+ if (event.key === KeyCode.SPACE) {
554
+ return;
555
+ }
556
+
557
+ if (event.key.length === 1 && !hasModifier && this.isAllowedCharacter(event.key)) {
558
+ this.updateCell(index, event.key);
559
+ this.commitUserValueUpdate();
560
+ const nextEmpty = this.getFirstEmptyIndex();
561
+ this.focusCell(nextEmpty);
562
+ }
563
+ }
564
+
565
+ @watch('length', { waitUntilFirstUpdate: true })
566
+ handleLengthChange() {
567
+ const normalizedLength = this.getNormalizedLength();
568
+ if (this.length !== normalizedLength) {
569
+ this.length = normalizedLength;
570
+ return;
571
+ }
572
+
573
+ const normalizedValue = this.normalizeValue(this.value);
574
+ this.syncCellsFromValue(normalizedValue);
575
+
576
+ if (normalizedValue !== this.value) {
577
+ this.value = normalizedValue;
578
+ return;
579
+ }
580
+
581
+ this.wasComplete = this.isComplete(normalizedValue);
582
+ this.valueInput.value = normalizedValue;
583
+ this.valueInput.setCustomValidity(this.customValidationMessage);
584
+ this.formControlController.updateValidity();
585
+ }
586
+
587
+ @watch('value', { waitUntilFirstUpdate: true })
588
+ handleValueChange() {
589
+ const normalizedValue = this.normalizeValue(this.value);
590
+ if (normalizedValue !== this.value) {
591
+ this.value = normalizedValue;
592
+ return;
593
+ }
594
+
595
+ this.syncCellsFromValue(normalizedValue);
596
+ this.wasComplete = this.isComplete(normalizedValue);
597
+ this.valueInput.value = normalizedValue;
598
+ this.valueInput.setCustomValidity(this.customValidationMessage);
599
+ this.formControlController.updateValidity();
600
+ }
601
+
602
+ @watch('disabled', { waitUntilFirstUpdate: true })
603
+ handleDisabledChange() {
604
+ if (this.disabled) {
605
+ this.hasFocus = false;
606
+ this.activeIndex = -1;
607
+ this.formControlController.setValidity(true);
608
+ } else {
609
+ this.formControlController.updateValidity();
610
+ }
611
+ }
612
+
613
+ @watch('numericOnly', { waitUntilFirstUpdate: true })
614
+ handleNumericOnlyChange() {
615
+ const normalizedValue = this.normalizeValue(this.value);
616
+ if (normalizedValue !== this.value) {
617
+ this.value = normalizedValue;
618
+ return;
619
+ }
620
+
621
+ this.syncCellsFromValue(normalizedValue);
622
+ this.wasComplete = this.isComplete(normalizedValue);
623
+ this.valueInput.value = normalizedValue;
624
+ this.valueInput.setCustomValidity(this.customValidationMessage);
625
+ this.formControlController.updateValidity();
626
+ }
627
+
628
+ @watch('pattern', { waitUntilFirstUpdate: true })
629
+ handlePatternChange() {
630
+ this.valueInput.setCustomValidity(this.customValidationMessage);
631
+ this.formControlController.updateValidity();
632
+ }
633
+
634
+ /** Checks validity without showing browser UI. */
635
+ checkValidity() {
636
+ return this.valueInput.checkValidity();
637
+ }
638
+
639
+ /** Returns associated form if one exists. */
640
+ getForm(): HTMLFormElement | null {
641
+ return this.formControlController.getForm();
642
+ }
643
+
644
+ /** Checks validity and shows browser UI when invalid. */
645
+ reportValidity() {
646
+ return this.valueInput.reportValidity();
647
+ }
648
+
649
+ /** Sets a custom validation message. Pass empty string to restore validity. */
650
+ setCustomValidity(message: string) {
651
+ this.customValidationMessage = message;
652
+ if (this.valueInput) {
653
+ this.valueInput.setCustomValidity(message);
654
+ }
655
+ this.formControlController.updateValidity();
656
+ }
657
+
658
+ /** Focuses the first empty cell, or the last one when complete. */
659
+ focus(options?: FocusOptions) {
660
+ this.focusCell(this.getFirstEmptyIndex(), options);
661
+ }
662
+
663
+ /** Removes focus from whichever OTP cell is currently focused. */
664
+ blur() {
665
+ const active = this.shadowRoot?.activeElement;
666
+ if (active instanceof HTMLElement) {
667
+ active.blur();
668
+ }
669
+ }
670
+
671
+ /** Clears all OTP cells. */
672
+ clear() {
673
+ if (this.disabled || this.readonly) {
674
+ return;
675
+ }
676
+
677
+ this.cells = Array.from({ length: this.getNormalizedLength() }, () => '');
678
+ this.commitUserValueUpdate();
679
+ this.focusCell(0);
680
+ }
681
+
682
+ render() {
683
+ const normalizedLength = this.getNormalizedLength();
684
+ const separatorIndices = this.getSeparatorIndices();
685
+ const hasLabelSlot = this.hasSlotController.test('label');
686
+ const hasHelpTextSlot = this.hasSlotController.test('help-text');
687
+ const hasLabel = Boolean(this.label || hasLabelSlot);
688
+ const hasHelpText = Boolean(this.helpText || hasHelpTextSlot);
689
+ const hasErrorMessage = Boolean(this.errorMessage);
690
+ const describedBy = [
691
+ hasHelpText ? 'help-text' : '',
692
+ hasErrorMessage ? 'error-message' : '',
693
+ ]
694
+ .filter(Boolean)
695
+ .join(' ');
696
+
697
+ return html`
698
+ <div
699
+ part="form-control"
700
+ class=${classMap({
701
+ 'form-control': true,
702
+ 'form-control--has-label': hasLabel,
703
+ })}
704
+ >
705
+ <label
706
+ id="label"
707
+ part="form-control-label"
708
+ class="form-control__label"
709
+ aria-hidden=${hasLabel ? 'false' : 'true'}
710
+ >
711
+ <slot name="label">${this.label}</slot>
712
+ </label>
713
+
714
+ <div part="form-control-input" class="form-control-input">
715
+ <div
716
+ part="base"
717
+ class=${classMap({
718
+ otp: true,
719
+ 'otp--warning': this.warning,
720
+ 'otp--error': this.error,
721
+ 'otp--success': this.success,
722
+ 'otp--disabled': this.disabled,
723
+ 'otp--readonly': this.readonly,
724
+ })}
725
+ role="group"
726
+ aria-labelledby=${ifDefined(hasLabel ? 'label' : undefined)}
727
+ aria-label=${ifDefined(hasLabel ? undefined : 'One-time password')}
728
+ aria-describedby=${ifDefined(describedBy || undefined)}
729
+ aria-disabled=${this.disabled ? 'true' : 'false'}
730
+ >
731
+ ${Array.from({ length: normalizedLength }, (_, index) => {
732
+ const value = this.cells[index] ?? '';
733
+ return html`
734
+ <input
735
+ part="cell"
736
+ class=${classMap({
737
+ otp__cell: true,
738
+ 'otp__cell--active': this.activeIndex === index,
739
+ })}
740
+ data-index=${index}
741
+ type=${this.masked && value && this.activeIndex !== index ? OtpInputType.PASSWORD : OtpInputType.TEXT}
742
+ maxlength="1"
743
+ .value=${live(value)}
744
+ ?disabled=${this.disabled}
745
+ ?readonly=${this.readonly}
746
+ placeholder=${ifDefined(this.getCellPlaceholder(index))}
747
+ inputmode=${ifDefined(this.getResolvedInputMode())}
748
+ pattern=${this.isNumericMode() ? OtpCellPattern.NUMERIC : OtpCellPattern.ALPHANUMERIC}
749
+ autocapitalize="none"
750
+ autocorrect="off"
751
+ spellcheck="false"
752
+ autocomplete=${index === 0 ? this.autocomplete : OtpAutoComplete.OFF}
753
+ enterkeyhint=${index === normalizedLength - 1
754
+ ? OtpEnterKeyHint.DONE
755
+ : OtpEnterKeyHint.NEXT}
756
+ aria-label=${`Digit ${index + 1} of ${normalizedLength}`}
757
+ aria-describedby=${ifDefined(describedBy || undefined)}
758
+ aria-invalid=${this.hasAttribute('data-user-invalid')
759
+ ? 'true'
760
+ : 'false'}
761
+ @focus=${this.handleCellFocus}
762
+ @blur=${this.handleCellBlur}
763
+ @keydown=${this.handleCellKeyDown}
764
+ @input=${this.handleCellInput}
765
+ @paste=${this.handleCellPaste}
766
+ />
767
+ ${this.separator && separatorIndices.has(index)
768
+ ? html`
769
+ <span
770
+ class="otp__separator"
771
+ part="separator"
772
+ aria-hidden="true"
773
+ >
774
+ ${this.separator}
775
+ </span>
776
+ `
777
+ : ''}
778
+ `;
779
+ })}
780
+
781
+ <input
782
+ class="otp__value-input"
783
+ type="text"
784
+ .value=${live(this.value)}
785
+ ?required=${this.required}
786
+ ?disabled=${this.disabled}
787
+ minlength=${normalizedLength}
788
+ maxlength=${normalizedLength}
789
+ pattern=${this.getValidationPattern()}
790
+ tabindex="-1"
791
+ aria-hidden="true"
792
+ @focus=${() => this.focus()}
793
+ @invalid=${this.handleInvalid}
794
+ />
795
+ </div>
796
+ </div>
797
+
798
+ ${hasHelpText
799
+ ? html`
800
+ <div
801
+ id="help-text"
802
+ part="form-control-help-text"
803
+ class="form-control__help-text"
804
+ >
805
+ <nile-form-help-text>
806
+ <slot name="help-text">${this.helpText}</slot>
807
+ </nile-form-help-text>
808
+ </div>
809
+ `
810
+ : ``}
811
+ ${hasErrorMessage
812
+ ? html`
813
+ <div
814
+ id="error-message"
815
+ part="form-control-error-message"
816
+ class="form-control__error-message"
817
+ >
818
+ <nile-form-error-message
819
+ >${this.errorMessage}</nile-form-error-message
820
+ >
821
+ </div>
822
+ `
823
+ : ``}
824
+ </div>
825
+ `;
826
+ }
827
+ }
828
+
829
+ export default NileOtpInput;
830
+
831
+ declare global {
832
+ interface HTMLElementTagNameMap {
833
+ 'nile-otp-input': NileOtpInput;
834
+ }
835
+ }