atomicuilibrary 0.0.1

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 (1108) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/cjs/category-section.cjs.entry.js +30 -0
  4. package/dist/cjs/component-size-DsYFUZcz.js +29 -0
  5. package/dist/cjs/dom-oP1E4Rd3.js +267 -0
  6. package/dist/cjs/event-bus-B6M2f8CQ.js +23 -0
  7. package/dist/cjs/exploration-project-tailwind.cjs.js +24 -0
  8. package/dist/cjs/focus-trap-i9T6oXLc.js +139 -0
  9. package/dist/cjs/index-ClkOYpT8.js +2275 -0
  10. package/dist/cjs/index.cjs.js +260 -0
  11. package/dist/cjs/layout-manager.cjs.entry.js +616 -0
  12. package/dist/cjs/library-card.cjs.entry.js +63 -0
  13. package/dist/cjs/lm-container_2.cjs.entry.js +79 -0
  14. package/dist/cjs/lm-panel_3.cjs.entry.js +108 -0
  15. package/dist/cjs/loader.cjs.js +12 -0
  16. package/dist/cjs/my-component.cjs.entry.js +33 -0
  17. package/dist/cjs/my-step.cjs.entry.js +29 -0
  18. package/dist/cjs/nav-bar.cjs.entry.js +247 -0
  19. package/dist/cjs/security-E1JcwxGc.js +1547 -0
  20. package/dist/cjs/smart-step.cjs.entry.js +47 -0
  21. package/dist/cjs/timeline-item.cjs.entry.js +29 -0
  22. package/dist/cjs/ui-accordion_10.cjs.entry.js +5733 -0
  23. package/dist/cjs/ui-advanced-data-table.cjs.entry.js +2684 -0
  24. package/dist/cjs/ui-anchor.cjs.entry.js +558 -0
  25. package/dist/cjs/ui-animate-on-scroll.cjs.entry.js +285 -0
  26. package/dist/cjs/ui-aside-panel.cjs.entry.js +638 -0
  27. package/dist/cjs/ui-avatar-group_3.cjs.entry.js +634 -0
  28. package/dist/cjs/ui-breadcrumb-item.cjs.entry.js +56 -0
  29. package/dist/cjs/ui-breadcrumb.cjs.entry.js +201 -0
  30. package/dist/cjs/ui-callout-banner.cjs.entry.js +291 -0
  31. package/dist/cjs/ui-card.cjs.entry.js +411 -0
  32. package/dist/cjs/ui-carousel.cjs.entry.js +547 -0
  33. package/dist/cjs/ui-checkbox-group.cjs.entry.js +330 -0
  34. package/dist/cjs/ui-checkbox.cjs.entry.js +260 -0
  35. package/dist/cjs/ui-code-editor.cjs.entry.js +961 -0
  36. package/dist/cjs/ui-code-preview.cjs.entry.js +315 -0
  37. package/dist/cjs/ui-color-controller.cjs.entry.js +150 -0
  38. package/dist/cjs/ui-color-picker.cjs.entry.js +658 -0
  39. package/dist/cjs/ui-command-palette.cjs.entry.js +178 -0
  40. package/dist/cjs/ui-dialog-box.cjs.entry.js +1808 -0
  41. package/dist/cjs/ui-dialog-content.cjs.entry.js +31 -0
  42. package/dist/cjs/ui-dialog-footer_2.cjs.entry.js +193 -0
  43. package/dist/cjs/ui-divider.cjs.entry.js +481 -0
  44. package/dist/cjs/ui-dock-host.cjs.entry.js +128 -0
  45. package/dist/cjs/ui-dock.cjs.entry.js +221 -0
  46. package/dist/cjs/ui-drag-drop.cjs.entry.js +172 -0
  47. package/dist/cjs/ui-dropdown_2.cjs.entry.js +1552 -0
  48. package/dist/cjs/ui-empty-state.cjs.entry.js +398 -0
  49. package/dist/cjs/ui-fab-item.cjs.entry.js +39 -0
  50. package/dist/cjs/ui-fab.cjs.entry.js +277 -0
  51. package/dist/cjs/ui-file-upload.cjs.entry.js +418 -0
  52. package/dist/cjs/ui-horizontal-nav.cjs.entry.js +135 -0
  53. package/dist/cjs/ui-image-button.cjs.entry.js +67 -0
  54. package/dist/cjs/ui-input-pair.cjs.entry.js +44 -0
  55. package/dist/cjs/ui-knob.cjs.entry.js +447 -0
  56. package/dist/cjs/ui-library.cjs.entry.js +134 -0
  57. package/dist/cjs/ui-list-group_2.cjs.entry.js +586 -0
  58. package/dist/cjs/ui-list.cjs.entry.js +732 -0
  59. package/dist/cjs/ui-masonry.cjs.entry.js +478 -0
  60. package/dist/cjs/ui-meter-group.cjs.entry.js +173 -0
  61. package/dist/cjs/ui-navigation-item.cjs.entry.js +104 -0
  62. package/dist/cjs/ui-number-input.cjs.entry.js +191 -0
  63. package/dist/cjs/ui-otp-input.cjs.entry.js +246 -0
  64. package/dist/cjs/ui-pagination_3.cjs.entry.js +1621 -0
  65. package/dist/cjs/ui-panel.cjs.entry.js +614 -0
  66. package/dist/cjs/ui-pattern-input.cjs.entry.js +278 -0
  67. package/dist/cjs/ui-popover.cjs.entry.js +517 -0
  68. package/dist/cjs/ui-progress.cjs.entry.js +516 -0
  69. package/dist/cjs/ui-radio-group.cjs.entry.js +205 -0
  70. package/dist/cjs/ui-radio.cjs.entry.js +206 -0
  71. package/dist/cjs/ui-range-slider.cjs.entry.js +637 -0
  72. package/dist/cjs/ui-resizable-panel.cjs.entry.js +484 -0
  73. package/dist/cjs/ui-scroll-top.cjs.entry.js +459 -0
  74. package/dist/cjs/ui-smart-context-menu.cjs.entry.js +376 -0
  75. package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +565 -0
  76. package/dist/cjs/ui-smart-stepper.cjs.entry.js +137 -0
  77. package/dist/cjs/ui-snackbar.cjs.entry.js +863 -0
  78. package/dist/cjs/ui-speed-dial.cjs.entry.js +520 -0
  79. package/dist/cjs/ui-speedometer.cjs.entry.js +428 -0
  80. package/dist/cjs/ui-splitter.cjs.entry.js +282 -0
  81. package/dist/cjs/ui-step.cjs.entry.js +30 -0
  82. package/dist/cjs/ui-stepper.cjs.entry.js +640 -0
  83. package/dist/cjs/ui-switch.cjs.entry.js +405 -0
  84. package/dist/cjs/ui-tabs.cjs.entry.js +703 -0
  85. package/dist/cjs/ui-tag.cjs.entry.js +299 -0
  86. package/dist/cjs/ui-timeline.cjs.entry.js +267 -0
  87. package/dist/cjs/ui-timer.cjs.entry.js +502 -0
  88. package/dist/cjs/ui-toolbar.cjs.entry.js +619 -0
  89. package/dist/cjs/ui-tooltip.cjs.entry.js +697 -0
  90. package/dist/cjs/ui-top-bar.cjs.entry.js +121 -0
  91. package/dist/cjs/ui-transfer-list.cjs.entry.js +592 -0
  92. package/dist/cjs/ui-tree.cjs.entry.js +874 -0
  93. package/dist/cjs/ui-workspace-manager.cjs.entry.js +1201 -0
  94. package/dist/cjs/utils-DVZ6gul6.js +26 -0
  95. package/dist/collection/assets/js/component-config.js +41 -0
  96. package/dist/collection/assets/js/demo-loader.js +147 -0
  97. package/dist/collection/assets/js/demo-nav.js +273 -0
  98. package/dist/collection/assets/js/demos/about-demo.js +60 -0
  99. package/dist/collection/assets/js/demos/accordion-demo.js +1954 -0
  100. package/dist/collection/assets/js/demos/advanced-data-table-demo.js +2952 -0
  101. package/dist/collection/assets/js/demos/anchor-demo.js +527 -0
  102. package/dist/collection/assets/js/demos/animate-on-scroll-demo.js +174 -0
  103. package/dist/collection/assets/js/demos/aside-panel-demo.js +1109 -0
  104. package/dist/collection/assets/js/demos/avatar-demo.js +508 -0
  105. package/dist/collection/assets/js/demos/badge-demo.js +620 -0
  106. package/dist/collection/assets/js/demos/breadcrumb-demo.js +365 -0
  107. package/dist/collection/assets/js/demos/button-demo.js +1223 -0
  108. package/dist/collection/assets/js/demos/button-toggle-demo.js +978 -0
  109. package/dist/collection/assets/js/demos/callout-banner-demo.js +366 -0
  110. package/dist/collection/assets/js/demos/card-demo.js +427 -0
  111. package/dist/collection/assets/js/demos/carousel-demo.js +360 -0
  112. package/dist/collection/assets/js/demos/checkbox-demo.js +489 -0
  113. package/dist/collection/assets/js/demos/code-preview-demo.js +216 -0
  114. package/dist/collection/assets/js/demos/color-picker-demo.js +117 -0
  115. package/dist/collection/assets/js/demos/command-palette-demo.js +105 -0
  116. package/dist/collection/assets/js/demos/complex-form-demo.js +45 -0
  117. package/dist/collection/assets/js/demos/context-menu-data.js +436 -0
  118. package/dist/collection/assets/js/demos/context-menu-demo.js +829 -0
  119. package/dist/collection/assets/js/demos/dashboard-demo.js +5 -0
  120. package/dist/collection/assets/js/demos/dialog-demo-temp.js +411 -0
  121. package/dist/collection/assets/js/demos/dialog-demo.js +2567 -0
  122. package/dist/collection/assets/js/demos/divider-demo.js +853 -0
  123. package/dist/collection/assets/js/demos/dock-demo.js +422 -0
  124. package/dist/collection/assets/js/demos/dock-host-init.js +117 -0
  125. package/dist/collection/assets/js/demos/dock-host-playground.js +59 -0
  126. package/dist/collection/assets/js/demos/documentation-demo.js +34 -0
  127. package/dist/collection/assets/js/demos/drag-drop-demo.js +132 -0
  128. package/dist/collection/assets/js/demos/dropdown-demo.js +1410 -0
  129. package/dist/collection/assets/js/demos/dropdown-subtitle-demo.js +18 -0
  130. package/dist/collection/assets/js/demos/empty-state-demo.js +580 -0
  131. package/dist/collection/assets/js/demos/fab-demo.js +374 -0
  132. package/dist/collection/assets/js/demos/file-upload-demo.js +171 -0
  133. package/dist/collection/assets/js/demos/home-components.js +750 -0
  134. package/dist/collection/assets/js/demos/home-demo.js +441 -0
  135. package/dist/collection/assets/js/demos/horizontal-nav-demo.js +277 -0
  136. package/dist/collection/assets/js/demos/icon-demo.js +380 -0
  137. package/dist/collection/assets/js/demos/input-demo.js +1932 -0
  138. package/dist/collection/assets/js/demos/knob-demo.js +570 -0
  139. package/dist/collection/assets/js/demos/layout-manager-demo.js +918 -0
  140. package/dist/collection/assets/js/demos/list-demo.js +1402 -0
  141. package/dist/collection/assets/js/demos/loader-demo.js +453 -0
  142. package/dist/collection/assets/js/demos/meter-group-demo.js +499 -0
  143. package/dist/collection/assets/js/demos/multi-level-context-menu-demo.js +924 -0
  144. package/dist/collection/assets/js/demos/my-profile-demo.js +237 -0
  145. package/dist/collection/assets/js/demos/nav-bar-demo.js +187 -0
  146. package/dist/collection/assets/js/demos/number-input-demo.js +242 -0
  147. package/dist/collection/assets/js/demos/overview-demo.js +11 -0
  148. package/dist/collection/assets/js/demos/pagination-demo.js +1042 -0
  149. package/dist/collection/assets/js/demos/panel-demo.js +789 -0
  150. package/dist/collection/assets/js/demos/pattern-input-demo.js +241 -0
  151. package/dist/collection/assets/js/demos/popover-demo.js +882 -0
  152. package/dist/collection/assets/js/demos/progress-demo.js +462 -0
  153. package/dist/collection/assets/js/demos/radio-demo.js +413 -0
  154. package/dist/collection/assets/js/demos/range-slider-demo.js +1217 -0
  155. package/dist/collection/assets/js/demos/rating-demo.js +383 -0
  156. package/dist/collection/assets/js/demos/scroll-top-demo.js +353 -0
  157. package/dist/collection/assets/js/demos/skeleton-demo.js +490 -0
  158. package/dist/collection/assets/js/demos/skeleton-performance-demo.js +26 -0
  159. package/dist/collection/assets/js/demos/smart-dialog-demo.js +552 -0
  160. package/dist/collection/assets/js/demos/smart-menu-demo.js +375 -0
  161. package/dist/collection/assets/js/demos/smart-stepper-demo.js +50 -0
  162. package/dist/collection/assets/js/demos/snackbar-demo.js +1040 -0
  163. package/dist/collection/assets/js/demos/speed-dial-demo.js +764 -0
  164. package/dist/collection/assets/js/demos/speedometer-demo.js +425 -0
  165. package/dist/collection/assets/js/demos/split-button-demo.js +201 -0
  166. package/dist/collection/assets/js/demos/stack-demo.js +228 -0
  167. package/dist/collection/assets/js/demos/stepper-demo.js +798 -0
  168. package/dist/collection/assets/js/demos/switch-demo.js +849 -0
  169. package/dist/collection/assets/js/demos/tabs-demo.js +1032 -0
  170. package/dist/collection/assets/js/demos/tag-demo.js +842 -0
  171. package/dist/collection/assets/js/demos/theme-selector-demo.js +466 -0
  172. package/dist/collection/assets/js/demos/timeline-demo.js +365 -0
  173. package/dist/collection/assets/js/demos/timeline-playground.js +59 -0
  174. package/dist/collection/assets/js/demos/timer-demo.js +313 -0
  175. package/dist/collection/assets/js/demos/toolbar-demo.js +643 -0
  176. package/dist/collection/assets/js/demos/tooltip-demo.js +730 -0
  177. package/dist/collection/assets/js/demos/top-bar-demo.js +417 -0
  178. package/dist/collection/assets/js/demos/transfer-list-demo.js +555 -0
  179. package/dist/collection/assets/js/demos/tree-demo.js +693 -0
  180. package/dist/collection/assets/js/demos/workspace-manager-demo.js +241 -0
  181. package/dist/collection/assets/js/index-boot.js +104 -0
  182. package/dist/collection/assets/js/nav-bar-demo.js +20 -0
  183. package/dist/collection/assets/js/nav-bar-init.js +119 -0
  184. package/dist/collection/assets/js/utils/layout-loader.js +80 -0
  185. package/dist/collection/collection-manifest.json +113 -0
  186. package/dist/collection/components/accordion/accordion.css +2090 -0
  187. package/dist/collection/components/accordion/accordion.js +2955 -0
  188. package/dist/collection/components/accordion/types.js +1 -0
  189. package/dist/collection/components/advanced-data-table/advanced-data-table.css +2606 -0
  190. package/dist/collection/components/advanced-data-table/advanced-data-table.js +5394 -0
  191. package/dist/collection/components/advanced-data-table/types.js +1 -0
  192. package/dist/collection/components/anchor/anchor.css +395 -0
  193. package/dist/collection/components/anchor/anchor.js +1404 -0
  194. package/dist/collection/components/anchor/types.js +1 -0
  195. package/dist/collection/components/animate-on-scroll/animate-on-scroll.css +804 -0
  196. package/dist/collection/components/animate-on-scroll/animate-on-scroll.js +696 -0
  197. package/dist/collection/components/aside-panel/aside-panel.css +472 -0
  198. package/dist/collection/components/aside-panel/aside-panel.js +1697 -0
  199. package/dist/collection/components/avatar/avatar.css +696 -0
  200. package/dist/collection/components/avatar/avatar.js +2007 -0
  201. package/dist/collection/components/avatar/types.js +1 -0
  202. package/dist/collection/components/avatar-group/avatar-group.css +253 -0
  203. package/dist/collection/components/avatar-group/avatar-group.js +405 -0
  204. package/dist/collection/components/avatar-group/types.js +1 -0
  205. package/dist/collection/components/badge/badge.css +580 -0
  206. package/dist/collection/components/badge/badge.js +723 -0
  207. package/dist/collection/components/badge/types.js +1 -0
  208. package/dist/collection/components/breadcrumb/breadcrumb-item.js +231 -0
  209. package/dist/collection/components/breadcrumb/breadcrumb.css +313 -0
  210. package/dist/collection/components/breadcrumb/breadcrumb.js +510 -0
  211. package/dist/collection/components/breadcrumb/types.js +1 -0
  212. package/dist/collection/components/button/button.css +1862 -0
  213. package/dist/collection/components/button/button.js +1380 -0
  214. package/dist/collection/components/button/types.js +1 -0
  215. package/dist/collection/components/button-toggle/button-toggle.css +97 -0
  216. package/dist/collection/components/button-toggle/button-toggle.js +620 -0
  217. package/dist/collection/components/button-toggle-group/button-toggle-group.css +401 -0
  218. package/dist/collection/components/button-toggle-group/button-toggle-group.js +1572 -0
  219. package/dist/collection/components/button-toggle-group/types.js +1 -0
  220. package/dist/collection/components/callout-banner/callout-banner.css +684 -0
  221. package/dist/collection/components/callout-banner/callout-banner.js +1076 -0
  222. package/dist/collection/components/callout-banner/types.js +1 -0
  223. package/dist/collection/components/card/card.css +663 -0
  224. package/dist/collection/components/card/card.js +1697 -0
  225. package/dist/collection/components/card/types.js +1 -0
  226. package/dist/collection/components/carousel/carousel.css +549 -0
  227. package/dist/collection/components/carousel/carousel.js +1512 -0
  228. package/dist/collection/components/carousel/types.js +1 -0
  229. package/dist/collection/components/checkbox/checkbox.css +863 -0
  230. package/dist/collection/components/checkbox/checkbox.js +1201 -0
  231. package/dist/collection/components/checkbox/types.js +1 -0
  232. package/dist/collection/components/checkbox-group/checkbox-group.css +223 -0
  233. package/dist/collection/components/checkbox-group/checkbox-group.js +1001 -0
  234. package/dist/collection/components/checkbox-group/types.js +1 -0
  235. package/dist/collection/components/code-editor/code-editor.css +1081 -0
  236. package/dist/collection/components/code-editor/code-editor.js +1211 -0
  237. package/dist/collection/components/code-editor/types.js +1 -0
  238. package/dist/collection/components/code-preview/types.js +1 -0
  239. package/dist/collection/components/code-preview/ui-code-preview.css +209 -0
  240. package/dist/collection/components/code-preview/ui-code-preview.js +548 -0
  241. package/dist/collection/components/color-controller/color-controller.css +108 -0
  242. package/dist/collection/components/color-controller/color-controller.js +224 -0
  243. package/dist/collection/components/color-picker/color-picker.css +323 -0
  244. package/dist/collection/components/color-picker/color-picker.js +1139 -0
  245. package/dist/collection/components/color-picker/types.js +1 -0
  246. package/dist/collection/components/command-palette/command-palette.css +260 -0
  247. package/dist/collection/components/command-palette/command-palette.js +429 -0
  248. package/dist/collection/components/command-palette/types.js +1 -0
  249. package/dist/collection/components/context-menu/context-menu.css +388 -0
  250. package/dist/collection/components/context-menu/context-menu.js +1412 -0
  251. package/dist/collection/components/context-menu/types.js +1 -0
  252. package/dist/collection/components/dialog-box/dialog-box.css +1261 -0
  253. package/dist/collection/components/dialog-box/dialog-box.js +4314 -0
  254. package/dist/collection/components/dialog-box/dialog-tray.css +268 -0
  255. package/dist/collection/components/dialog-box/types.js +1 -0
  256. package/dist/collection/components/dialog-content/dialog-content.css +83 -0
  257. package/dist/collection/components/dialog-content/dialog-content.js +96 -0
  258. package/dist/collection/components/dialog-footer/dialog-footer.css +89 -0
  259. package/dist/collection/components/dialog-footer/dialog-footer.js +94 -0
  260. package/dist/collection/components/dialog-footer/types.js +1 -0
  261. package/dist/collection/components/dialog-header/dialog-header.css +203 -0
  262. package/dist/collection/components/dialog-header/dialog-header.js +630 -0
  263. package/dist/collection/components/dialog-header/types.js +1 -0
  264. package/dist/collection/components/divider/divider.css +948 -0
  265. package/dist/collection/components/divider/divider.js +1612 -0
  266. package/dist/collection/components/divider/types.js +1 -0
  267. package/dist/collection/components/dock/dock.css +348 -0
  268. package/dist/collection/components/dock/dock.js +464 -0
  269. package/dist/collection/components/dock/types.js +1 -0
  270. package/dist/collection/components/dock-host/index.js +1 -0
  271. package/dist/collection/components/dock-host/types.js +1 -0
  272. package/dist/collection/components/dock-host/ui-dock-host.css +155 -0
  273. package/dist/collection/components/dock-host/ui-dock-host.js +226 -0
  274. package/dist/collection/components/drag-drop/drag-drop.css +103 -0
  275. package/dist/collection/components/drag-drop/drag-drop.js +385 -0
  276. package/dist/collection/components/drag-drop/types.js +1 -0
  277. package/dist/collection/components/dropdown/dropdown.css +1142 -0
  278. package/dist/collection/components/dropdown/dropdown.js +2033 -0
  279. package/dist/collection/components/dropdown/types.js +1 -0
  280. package/dist/collection/components/empty-state/empty-state.css +712 -0
  281. package/dist/collection/components/empty-state/empty-state.js +1256 -0
  282. package/dist/collection/components/empty-state/types.js +1 -0
  283. package/dist/collection/components/fab/fab.css +601 -0
  284. package/dist/collection/components/fab/fab.js +1124 -0
  285. package/dist/collection/components/fab-item/fab-item.css +107 -0
  286. package/dist/collection/components/fab-item/fab-item.js +177 -0
  287. package/dist/collection/components/fab-item/types.js +1 -0
  288. package/dist/collection/components/file-upload/file-upload.css +243 -0
  289. package/dist/collection/components/file-upload/file-upload.js +1022 -0
  290. package/dist/collection/components/file-upload/types.js +1 -0
  291. package/dist/collection/components/horizontal-nav/horizontal-nav.css +394 -0
  292. package/dist/collection/components/horizontal-nav/horizontal-nav.js +375 -0
  293. package/dist/collection/components/icon/icon.css +113 -0
  294. package/dist/collection/components/icon/icon.js +583 -0
  295. package/dist/collection/components/image-button/image-button.css +154 -0
  296. package/dist/collection/components/image-button/image-button.js +310 -0
  297. package/dist/collection/components/image-button/types.js +1 -0
  298. package/dist/collection/components/input/input.css +1544 -0
  299. package/dist/collection/components/input/input.js +3690 -0
  300. package/dist/collection/components/input/types.js +1 -0
  301. package/dist/collection/components/input-pair/input-pair.css +72 -0
  302. package/dist/collection/components/input-pair/input-pair.js +309 -0
  303. package/dist/collection/components/knob/knob.css +162 -0
  304. package/dist/collection/components/knob/knob.js +986 -0
  305. package/dist/collection/components/knob/types.js +1 -0
  306. package/dist/collection/components/layout-manager/layout-manager.css +41 -0
  307. package/dist/collection/components/layout-manager/layout-manager.js +525 -0
  308. package/dist/collection/components/layout-manager/lm-container/lm-container.css +117 -0
  309. package/dist/collection/components/layout-manager/lm-container/lm-container.js +110 -0
  310. package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.css +0 -0
  311. package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.js +49 -0
  312. package/dist/collection/components/layout-manager/lm-panel/lm-panel.css +97 -0
  313. package/dist/collection/components/layout-manager/lm-panel/lm-panel.js +58 -0
  314. package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.css +57 -0
  315. package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.js +120 -0
  316. package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.css +149 -0
  317. package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.js +130 -0
  318. package/dist/collection/components/layout-manager/types.js +1 -0
  319. package/dist/collection/components/library/category-section.css +147 -0
  320. package/dist/collection/components/library/category-section.js +139 -0
  321. package/dist/collection/components/library/data.js +74 -0
  322. package/dist/collection/components/library/library-card.css +181 -0
  323. package/dist/collection/components/library/library-card.js +203 -0
  324. package/dist/collection/components/library/library.css +358 -0
  325. package/dist/collection/components/library/library.js +91 -0
  326. package/dist/collection/components/list/list.css +1029 -0
  327. package/dist/collection/components/list/list.js +2167 -0
  328. package/dist/collection/components/list-group/list-group.css +275 -0
  329. package/dist/collection/components/list-group/list-group.js +356 -0
  330. package/dist/collection/components/list-item/list-item.css +1491 -0
  331. package/dist/collection/components/list-item/list-item.js +2184 -0
  332. package/dist/collection/components/masonry/masonry.css +414 -0
  333. package/dist/collection/components/masonry/masonry.js +1104 -0
  334. package/dist/collection/components/masonry/types.js +1 -0
  335. package/dist/collection/components/meter-group/meter-group.css +184 -0
  336. package/dist/collection/components/meter-group/meter-group.js +471 -0
  337. package/dist/collection/components/meter-group/types.js +1 -0
  338. package/dist/collection/components/my-component/my-component.css +27 -0
  339. package/dist/collection/components/my-component/my-component.js +95 -0
  340. package/dist/collection/components/my-step/my-step.css +25 -0
  341. package/dist/collection/components/my-step/my-step.js +237 -0
  342. package/dist/collection/components/nav-bar/nav-bar.css +448 -0
  343. package/dist/collection/components/nav-bar/nav-bar.js +608 -0
  344. package/dist/collection/components/number-input/number-input.css +200 -0
  345. package/dist/collection/components/number-input/number-input.js +695 -0
  346. package/dist/collection/components/otp-input/otp-input.css +243 -0
  347. package/dist/collection/components/otp-input/otp-input.js +761 -0
  348. package/dist/collection/components/otp-input/types.js +1 -0
  349. package/dist/collection/components/pagination/pagination.css +1399 -0
  350. package/dist/collection/components/pagination/pagination.js +2033 -0
  351. package/dist/collection/components/pagination/types.js +1 -0
  352. package/dist/collection/components/panel/panel.css +837 -0
  353. package/dist/collection/components/panel/panel.js +1842 -0
  354. package/dist/collection/components/panel/types.js +1 -0
  355. package/dist/collection/components/pattern-input/pattern-input.css +252 -0
  356. package/dist/collection/components/pattern-input/pattern-input.js +788 -0
  357. package/dist/collection/components/popover/popover.css +399 -0
  358. package/dist/collection/components/popover/popover.js +1449 -0
  359. package/dist/collection/components/popover/types.js +1 -0
  360. package/dist/collection/components/progress/progress.css +588 -0
  361. package/dist/collection/components/progress/progress.js +1414 -0
  362. package/dist/collection/components/progress/types.js +1 -0
  363. package/dist/collection/components/radio/radio.css +773 -0
  364. package/dist/collection/components/radio/radio.js +1059 -0
  365. package/dist/collection/components/radio/types.js +1 -0
  366. package/dist/collection/components/radio-group/radio-group.css +202 -0
  367. package/dist/collection/components/radio-group/radio-group.js +903 -0
  368. package/dist/collection/components/radio-group/types.js +1 -0
  369. package/dist/collection/components/range-slider/range-slider.css +602 -0
  370. package/dist/collection/components/range-slider/range-slider.js +1369 -0
  371. package/dist/collection/components/range-slider/types.js +1 -0
  372. package/dist/collection/components/rating/rating.css +768 -0
  373. package/dist/collection/components/rating/rating.js +1062 -0
  374. package/dist/collection/components/rating/types.js +1 -0
  375. package/dist/collection/components/resizable-panel/resizable-panel.css +247 -0
  376. package/dist/collection/components/resizable-panel/resizable-panel.js +874 -0
  377. package/dist/collection/components/resizable-panel/types.js +1 -0
  378. package/dist/collection/components/scroll-top/scroll-top.css +397 -0
  379. package/dist/collection/components/scroll-top/scroll-top.js +1178 -0
  380. package/dist/collection/components/scroll-top/types.js +1 -0
  381. package/dist/collection/components/skeleton/skeleton-loader.css +429 -0
  382. package/dist/collection/components/skeleton/skeleton-loader.js +1193 -0
  383. package/dist/collection/components/skeleton/types.js +1 -0
  384. package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.css +357 -0
  385. package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +1190 -0
  386. package/dist/collection/components/smart-location-dropdown/types.js +1 -0
  387. package/dist/collection/components/smart-menu/menu-item.interface.js +1 -0
  388. package/dist/collection/components/smart-menu/smart-menu.css +119 -0
  389. package/dist/collection/components/smart-menu/smart-menu.js +544 -0
  390. package/dist/collection/components/smart-stepper/smart-step.css +213 -0
  391. package/dist/collection/components/smart-stepper/smart-step.js +170 -0
  392. package/dist/collection/components/smart-stepper/smart-stepper.css +146 -0
  393. package/dist/collection/components/smart-stepper/smart-stepper.js +338 -0
  394. package/dist/collection/components/snackbar/snackbar.css +1480 -0
  395. package/dist/collection/components/snackbar/snackbar.js +1759 -0
  396. package/dist/collection/components/snackbar/types.js +1 -0
  397. package/dist/collection/components/speed-dial/speed-dial.css +478 -0
  398. package/dist/collection/components/speed-dial/speed-dial.js +1183 -0
  399. package/dist/collection/components/speed-dial/types.js +1 -0
  400. package/dist/collection/components/speedometer/speedometer.css +95 -0
  401. package/dist/collection/components/speedometer/speedometer.js +868 -0
  402. package/dist/collection/components/speedometer/types.js +1 -0
  403. package/dist/collection/components/splitter/splitter.css +269 -0
  404. package/dist/collection/components/splitter/splitter.js +713 -0
  405. package/dist/collection/components/splitter/types.js +1 -0
  406. package/dist/collection/components/stack/stack.css +269 -0
  407. package/dist/collection/components/stack/stack.js +297 -0
  408. package/dist/collection/components/stack/types.js +1 -0
  409. package/dist/collection/components/step/step.css +77 -0
  410. package/dist/collection/components/step/step.js +214 -0
  411. package/dist/collection/components/step/types.js +1 -0
  412. package/dist/collection/components/stepper/stepper.css +1079 -0
  413. package/dist/collection/components/stepper/stepper.js +1850 -0
  414. package/dist/collection/components/stepper/types.js +1 -0
  415. package/dist/collection/components/switch/switch.css +1099 -0
  416. package/dist/collection/components/switch/switch.js +1578 -0
  417. package/dist/collection/components/tabs/tabs.css +1355 -0
  418. package/dist/collection/components/tabs/tabs.js +1474 -0
  419. package/dist/collection/components/tabs/types.js +1 -0
  420. package/dist/collection/components/tag/tag.css +893 -0
  421. package/dist/collection/components/tag/tag.js +1119 -0
  422. package/dist/collection/components/tag/types.js +1 -0
  423. package/dist/collection/components/tag-group/tag-group.css +144 -0
  424. package/dist/collection/components/tag-group/tag-group.js +887 -0
  425. package/dist/collection/components/tag-group/types.js +1 -0
  426. package/dist/collection/components/timeline/timeline.css +1850 -0
  427. package/dist/collection/components/timeline/timeline.js +889 -0
  428. package/dist/collection/components/timeline/types.js +1 -0
  429. package/dist/collection/components/timeline/ui-timeline.stories.js +19 -0
  430. package/dist/collection/components/timeline-item/timeline-item.css +75 -0
  431. package/dist/collection/components/timeline-item/timeline-item.js +91 -0
  432. package/dist/collection/components/timer/timer.css +367 -0
  433. package/dist/collection/components/timer/timer.js +1292 -0
  434. package/dist/collection/components/timer/types.js +1 -0
  435. package/dist/collection/components/timer/ui-timer.stories.js +19 -0
  436. package/dist/collection/components/toggle-group/toggle-group.css +361 -0
  437. package/dist/collection/components/toggle-group/toggle-group.js +1212 -0
  438. package/dist/collection/components/toggle-group/types.js +1 -0
  439. package/dist/collection/components/toolbar/toolbar-types.js +1 -0
  440. package/dist/collection/components/toolbar/toolbar.css +1186 -0
  441. package/dist/collection/components/toolbar/toolbar.js +1635 -0
  442. package/dist/collection/components/tooltip/tooltip.css +609 -0
  443. package/dist/collection/components/tooltip/tooltip.js +1882 -0
  444. package/dist/collection/components/tooltip/types.js +1 -0
  445. package/dist/collection/components/top-bar/top-bar.css +274 -0
  446. package/dist/collection/components/top-bar/top-bar.js +383 -0
  447. package/dist/collection/components/transfer-list/transfer-list.css +520 -0
  448. package/dist/collection/components/transfer-list/transfer-list.js +1225 -0
  449. package/dist/collection/components/transfer-list/types.js +1 -0
  450. package/dist/collection/components/tree/tree.css +1197 -0
  451. package/dist/collection/components/tree/tree.js +2509 -0
  452. package/dist/collection/components/tree/types.js +1 -0
  453. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +830 -0
  454. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +1231 -0
  455. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-types.js +1 -0
  456. package/dist/collection/components/ui-navigation-bar/navigation-item.css +679 -0
  457. package/dist/collection/components/ui-navigation-bar/navigation-item.js +385 -0
  458. package/dist/collection/components/ui-navigation-bar/navigation-types.js +1 -0
  459. package/dist/collection/components/workspace-manager/types.js +1 -0
  460. package/dist/collection/components/workspace-manager/workspace-manager.css +1094 -0
  461. package/dist/collection/components/workspace-manager/workspace-manager.js +1914 -0
  462. package/dist/collection/components.js +51 -0
  463. package/dist/collection/index.js +108 -0
  464. package/dist/collection/service/drag-manager.js +23 -0
  465. package/dist/collection/service/event-bus.js +19 -0
  466. package/dist/collection/service/serialization.js +8 -0
  467. package/dist/collection/service/state-engine.js +247 -0
  468. package/dist/collection/service/theme-switcher.js +146 -0
  469. package/dist/collection/stories/Button.stories.js +15 -0
  470. package/dist/collection/types/common.js +1 -0
  471. package/dist/collection/types/index.js +4 -0
  472. package/dist/collection/utils/aria-live.js +60 -0
  473. package/dist/collection/utils/component-size.js +25 -0
  474. package/dist/collection/utils/dom.js +260 -0
  475. package/dist/collection/utils/focus-trap.js +135 -0
  476. package/dist/collection/utils/security.js +10 -0
  477. package/dist/collection/utils/test/setup-component-test-env.js +92 -0
  478. package/dist/collection/utils/utils.js +21 -0
  479. package/dist/collection/utils/validation.js +74 -0
  480. package/dist/components/avatar-group.js +1 -0
  481. package/dist/components/avatar.js +1 -0
  482. package/dist/components/badge.js +1 -0
  483. package/dist/components/button-toggle.js +1 -0
  484. package/dist/components/category-section.d.ts +11 -0
  485. package/dist/components/category-section.js +1 -0
  486. package/dist/components/category-section2.js +1 -0
  487. package/dist/components/checkbox.js +1 -0
  488. package/dist/components/context-menu.js +1 -0
  489. package/dist/components/dialog-footer.js +1 -0
  490. package/dist/components/dialog-header.js +1 -0
  491. package/dist/components/dom.js +1 -0
  492. package/dist/components/dropdown.js +1 -0
  493. package/dist/components/event-bus.js +1 -0
  494. package/dist/components/focus-trap.js +1 -0
  495. package/dist/components/icon.js +2 -0
  496. package/dist/components/index.d.ts +35 -0
  497. package/dist/components/index.js +1 -0
  498. package/dist/components/input.js +1 -0
  499. package/dist/components/layout-manager.d.ts +11 -0
  500. package/dist/components/layout-manager.js +1 -0
  501. package/dist/components/library-card.d.ts +11 -0
  502. package/dist/components/library-card.js +1 -0
  503. package/dist/components/library-card2.js +1 -0
  504. package/dist/components/list-group.js +1 -0
  505. package/dist/components/list-item.js +1 -0
  506. package/dist/components/lm-container.d.ts +11 -0
  507. package/dist/components/lm-container.js +1 -0
  508. package/dist/components/lm-container2.js +1 -0
  509. package/dist/components/lm-floating-window.d.ts +11 -0
  510. package/dist/components/lm-floating-window.js +1 -0
  511. package/dist/components/lm-floating-window2.js +1 -0
  512. package/dist/components/lm-panel.d.ts +11 -0
  513. package/dist/components/lm-panel.js +1 -0
  514. package/dist/components/lm-panel2.js +1 -0
  515. package/dist/components/lm-splitter.d.ts +11 -0
  516. package/dist/components/lm-splitter.js +1 -0
  517. package/dist/components/lm-splitter2.js +1 -0
  518. package/dist/components/lm-tabs.d.ts +11 -0
  519. package/dist/components/lm-tabs.js +1 -0
  520. package/dist/components/lm-tabs2.js +1 -0
  521. package/dist/components/my-component.d.ts +11 -0
  522. package/dist/components/my-component.js +1 -0
  523. package/dist/components/my-step.d.ts +11 -0
  524. package/dist/components/my-step.js +1 -0
  525. package/dist/components/nav-bar.d.ts +11 -0
  526. package/dist/components/nav-bar.js +1 -0
  527. package/dist/components/pagination.js +1 -0
  528. package/dist/components/radio.js +1 -0
  529. package/dist/components/range-slider.js +1 -0
  530. package/dist/components/rating.js +1 -0
  531. package/dist/components/resizable-panel.js +1 -0
  532. package/dist/components/skeleton-loader.js +1 -0
  533. package/dist/components/smart-step.d.ts +11 -0
  534. package/dist/components/smart-step.js +1 -0
  535. package/dist/components/stack.js +1 -0
  536. package/dist/components/switch.js +1 -0
  537. package/dist/components/tag-group.js +1 -0
  538. package/dist/components/tag.js +1 -0
  539. package/dist/components/timeline-item.d.ts +11 -0
  540. package/dist/components/timeline-item.js +1 -0
  541. package/dist/components/toggle-group.js +1 -0
  542. package/dist/components/tooltip.js +1 -0
  543. package/dist/components/ui-accordion.d.ts +11 -0
  544. package/dist/components/ui-accordion.js +1 -0
  545. package/dist/components/ui-advanced-data-table.d.ts +11 -0
  546. package/dist/components/ui-advanced-data-table.js +1 -0
  547. package/dist/components/ui-anchor.d.ts +11 -0
  548. package/dist/components/ui-anchor.js +1 -0
  549. package/dist/components/ui-animate-on-scroll.d.ts +11 -0
  550. package/dist/components/ui-animate-on-scroll.js +1 -0
  551. package/dist/components/ui-aside-panel.d.ts +11 -0
  552. package/dist/components/ui-aside-panel.js +1 -0
  553. package/dist/components/ui-avatar-group.d.ts +11 -0
  554. package/dist/components/ui-avatar-group.js +1 -0
  555. package/dist/components/ui-avatar.d.ts +11 -0
  556. package/dist/components/ui-avatar.js +1 -0
  557. package/dist/components/ui-badge.d.ts +11 -0
  558. package/dist/components/ui-badge.js +1 -0
  559. package/dist/components/ui-breadcrumb-item.d.ts +11 -0
  560. package/dist/components/ui-breadcrumb-item.js +1 -0
  561. package/dist/components/ui-breadcrumb.d.ts +11 -0
  562. package/dist/components/ui-breadcrumb.js +1 -0
  563. package/dist/components/ui-button-toggle-group.d.ts +11 -0
  564. package/dist/components/ui-button-toggle-group.js +1 -0
  565. package/dist/components/ui-button-toggle.d.ts +11 -0
  566. package/dist/components/ui-button-toggle.js +1 -0
  567. package/dist/components/ui-button.d.ts +11 -0
  568. package/dist/components/ui-button.js +1 -0
  569. package/dist/components/ui-callout-banner.d.ts +11 -0
  570. package/dist/components/ui-callout-banner.js +1 -0
  571. package/dist/components/ui-card.d.ts +11 -0
  572. package/dist/components/ui-card.js +1 -0
  573. package/dist/components/ui-carousel.d.ts +11 -0
  574. package/dist/components/ui-carousel.js +1 -0
  575. package/dist/components/ui-checkbox-group.d.ts +11 -0
  576. package/dist/components/ui-checkbox-group.js +1 -0
  577. package/dist/components/ui-checkbox.d.ts +11 -0
  578. package/dist/components/ui-checkbox.js +1 -0
  579. package/dist/components/ui-code-editor.d.ts +11 -0
  580. package/dist/components/ui-code-editor.js +1 -0
  581. package/dist/components/ui-code-preview.d.ts +11 -0
  582. package/dist/components/ui-code-preview.js +1 -0
  583. package/dist/components/ui-color-controller.d.ts +11 -0
  584. package/dist/components/ui-color-controller.js +1 -0
  585. package/dist/components/ui-color-picker.d.ts +11 -0
  586. package/dist/components/ui-color-picker.js +1 -0
  587. package/dist/components/ui-command-palette.d.ts +11 -0
  588. package/dist/components/ui-command-palette.js +1 -0
  589. package/dist/components/ui-context-menu.d.ts +11 -0
  590. package/dist/components/ui-context-menu.js +1 -0
  591. package/dist/components/ui-dialog-box.d.ts +11 -0
  592. package/dist/components/ui-dialog-box.js +1 -0
  593. package/dist/components/ui-dialog-content.d.ts +11 -0
  594. package/dist/components/ui-dialog-content.js +1 -0
  595. package/dist/components/ui-dialog-footer.d.ts +11 -0
  596. package/dist/components/ui-dialog-footer.js +1 -0
  597. package/dist/components/ui-dialog-header.d.ts +11 -0
  598. package/dist/components/ui-dialog-header.js +1 -0
  599. package/dist/components/ui-divider.d.ts +11 -0
  600. package/dist/components/ui-divider.js +1 -0
  601. package/dist/components/ui-dock-host.d.ts +11 -0
  602. package/dist/components/ui-dock-host.js +1 -0
  603. package/dist/components/ui-dock.d.ts +11 -0
  604. package/dist/components/ui-dock.js +1 -0
  605. package/dist/components/ui-drag-drop.d.ts +11 -0
  606. package/dist/components/ui-drag-drop.js +1 -0
  607. package/dist/components/ui-dropdown.d.ts +11 -0
  608. package/dist/components/ui-dropdown.js +1 -0
  609. package/dist/components/ui-empty-state.d.ts +11 -0
  610. package/dist/components/ui-empty-state.js +1 -0
  611. package/dist/components/ui-fab-item.d.ts +11 -0
  612. package/dist/components/ui-fab-item.js +1 -0
  613. package/dist/components/ui-fab.d.ts +11 -0
  614. package/dist/components/ui-fab.js +1 -0
  615. package/dist/components/ui-file-upload.d.ts +11 -0
  616. package/dist/components/ui-file-upload.js +1 -0
  617. package/dist/components/ui-horizontal-nav.d.ts +11 -0
  618. package/dist/components/ui-horizontal-nav.js +1 -0
  619. package/dist/components/ui-icon.d.ts +11 -0
  620. package/dist/components/ui-icon.js +1 -0
  621. package/dist/components/ui-image-button.d.ts +11 -0
  622. package/dist/components/ui-image-button.js +1 -0
  623. package/dist/components/ui-input-pair.d.ts +11 -0
  624. package/dist/components/ui-input-pair.js +1 -0
  625. package/dist/components/ui-input.d.ts +11 -0
  626. package/dist/components/ui-input.js +1 -0
  627. package/dist/components/ui-knob.d.ts +11 -0
  628. package/dist/components/ui-knob.js +1 -0
  629. package/dist/components/ui-library.d.ts +11 -0
  630. package/dist/components/ui-library.js +1 -0
  631. package/dist/components/ui-list-group.d.ts +11 -0
  632. package/dist/components/ui-list-group.js +1 -0
  633. package/dist/components/ui-list-item.d.ts +11 -0
  634. package/dist/components/ui-list-item.js +1 -0
  635. package/dist/components/ui-list.d.ts +11 -0
  636. package/dist/components/ui-list.js +1 -0
  637. package/dist/components/ui-masonry.d.ts +11 -0
  638. package/dist/components/ui-masonry.js +1 -0
  639. package/dist/components/ui-meter-group.d.ts +11 -0
  640. package/dist/components/ui-meter-group.js +1 -0
  641. package/dist/components/ui-navigation-bar.d.ts +11 -0
  642. package/dist/components/ui-navigation-bar.js +1 -0
  643. package/dist/components/ui-navigation-item.d.ts +11 -0
  644. package/dist/components/ui-navigation-item.js +1 -0
  645. package/dist/components/ui-number-input.d.ts +11 -0
  646. package/dist/components/ui-number-input.js +1 -0
  647. package/dist/components/ui-otp-input.d.ts +11 -0
  648. package/dist/components/ui-otp-input.js +1 -0
  649. package/dist/components/ui-pagination.d.ts +11 -0
  650. package/dist/components/ui-pagination.js +1 -0
  651. package/dist/components/ui-panel.d.ts +11 -0
  652. package/dist/components/ui-panel.js +1 -0
  653. package/dist/components/ui-pattern-input.d.ts +11 -0
  654. package/dist/components/ui-pattern-input.js +1 -0
  655. package/dist/components/ui-popover.d.ts +11 -0
  656. package/dist/components/ui-popover.js +1 -0
  657. package/dist/components/ui-progress.d.ts +11 -0
  658. package/dist/components/ui-progress.js +1 -0
  659. package/dist/components/ui-radio-group.d.ts +11 -0
  660. package/dist/components/ui-radio-group.js +1 -0
  661. package/dist/components/ui-radio.d.ts +11 -0
  662. package/dist/components/ui-radio.js +1 -0
  663. package/dist/components/ui-range-slider.d.ts +11 -0
  664. package/dist/components/ui-range-slider.js +1 -0
  665. package/dist/components/ui-rating.d.ts +11 -0
  666. package/dist/components/ui-rating.js +1 -0
  667. package/dist/components/ui-resizable-panel.d.ts +11 -0
  668. package/dist/components/ui-resizable-panel.js +1 -0
  669. package/dist/components/ui-scroll-top.d.ts +11 -0
  670. package/dist/components/ui-scroll-top.js +1 -0
  671. package/dist/components/ui-skeleton.d.ts +11 -0
  672. package/dist/components/ui-skeleton.js +1 -0
  673. package/dist/components/ui-smart-context-menu.d.ts +11 -0
  674. package/dist/components/ui-smart-context-menu.js +1 -0
  675. package/dist/components/ui-smart-location-dropdown.d.ts +11 -0
  676. package/dist/components/ui-smart-location-dropdown.js +1 -0
  677. package/dist/components/ui-smart-stepper.d.ts +11 -0
  678. package/dist/components/ui-smart-stepper.js +1 -0
  679. package/dist/components/ui-snackbar.d.ts +11 -0
  680. package/dist/components/ui-snackbar.js +1 -0
  681. package/dist/components/ui-speed-dial.d.ts +11 -0
  682. package/dist/components/ui-speed-dial.js +1 -0
  683. package/dist/components/ui-speedometer.d.ts +11 -0
  684. package/dist/components/ui-speedometer.js +1 -0
  685. package/dist/components/ui-splitter.d.ts +11 -0
  686. package/dist/components/ui-splitter.js +1 -0
  687. package/dist/components/ui-stack.d.ts +11 -0
  688. package/dist/components/ui-stack.js +1 -0
  689. package/dist/components/ui-step.d.ts +11 -0
  690. package/dist/components/ui-step.js +1 -0
  691. package/dist/components/ui-stepper.d.ts +11 -0
  692. package/dist/components/ui-stepper.js +1 -0
  693. package/dist/components/ui-switch.d.ts +11 -0
  694. package/dist/components/ui-switch.js +1 -0
  695. package/dist/components/ui-tabs.d.ts +11 -0
  696. package/dist/components/ui-tabs.js +1 -0
  697. package/dist/components/ui-tag-group.d.ts +11 -0
  698. package/dist/components/ui-tag-group.js +1 -0
  699. package/dist/components/ui-tag.d.ts +11 -0
  700. package/dist/components/ui-tag.js +1 -0
  701. package/dist/components/ui-timeline.d.ts +11 -0
  702. package/dist/components/ui-timeline.js +1 -0
  703. package/dist/components/ui-timer.d.ts +11 -0
  704. package/dist/components/ui-timer.js +1 -0
  705. package/dist/components/ui-toggle-group.d.ts +11 -0
  706. package/dist/components/ui-toggle-group.js +1 -0
  707. package/dist/components/ui-toolbar.d.ts +11 -0
  708. package/dist/components/ui-toolbar.js +1 -0
  709. package/dist/components/ui-tooltip.d.ts +11 -0
  710. package/dist/components/ui-tooltip.js +1 -0
  711. package/dist/components/ui-top-bar.d.ts +11 -0
  712. package/dist/components/ui-top-bar.js +1 -0
  713. package/dist/components/ui-transfer-list.d.ts +11 -0
  714. package/dist/components/ui-transfer-list.js +1 -0
  715. package/dist/components/ui-tree.d.ts +11 -0
  716. package/dist/components/ui-tree.js +1 -0
  717. package/dist/components/ui-workspace-manager.d.ts +11 -0
  718. package/dist/components/ui-workspace-manager.js +1 -0
  719. package/dist/components/utils.js +1 -0
  720. package/dist/esm/category-section.entry.js +28 -0
  721. package/dist/esm/component-size-C7gf39HE.js +27 -0
  722. package/dist/esm/dom-BMFah5q3.js +262 -0
  723. package/dist/esm/event-bus-vwwmWKs9.js +21 -0
  724. package/dist/esm/exploration-project-tailwind.js +20 -0
  725. package/dist/esm/focus-trap-BSQ8klD4.js +137 -0
  726. package/dist/esm/index-DUsoYu9r.js +2264 -0
  727. package/dist/esm/index.js +256 -0
  728. package/dist/esm/layout-manager.entry.js +614 -0
  729. package/dist/esm/library-card.entry.js +61 -0
  730. package/dist/esm/lm-container_2.entry.js +76 -0
  731. package/dist/esm/lm-panel_3.entry.js +104 -0
  732. package/dist/esm/loader.js +10 -0
  733. package/dist/esm/my-component.entry.js +31 -0
  734. package/dist/esm/my-step.entry.js +27 -0
  735. package/dist/esm/nav-bar.entry.js +245 -0
  736. package/dist/esm/security-D2WzX6vR.js +1545 -0
  737. package/dist/esm/smart-step.entry.js +45 -0
  738. package/dist/esm/timeline-item.entry.js +27 -0
  739. package/dist/esm/ui-accordion_10.entry.js +5722 -0
  740. package/dist/esm/ui-advanced-data-table.entry.js +2682 -0
  741. package/dist/esm/ui-anchor.entry.js +556 -0
  742. package/dist/esm/ui-animate-on-scroll.entry.js +283 -0
  743. package/dist/esm/ui-aside-panel.entry.js +636 -0
  744. package/dist/esm/ui-avatar-group_3.entry.js +630 -0
  745. package/dist/esm/ui-breadcrumb-item.entry.js +54 -0
  746. package/dist/esm/ui-breadcrumb.entry.js +199 -0
  747. package/dist/esm/ui-callout-banner.entry.js +289 -0
  748. package/dist/esm/ui-card.entry.js +409 -0
  749. package/dist/esm/ui-carousel.entry.js +545 -0
  750. package/dist/esm/ui-checkbox-group.entry.js +328 -0
  751. package/dist/esm/ui-checkbox.entry.js +258 -0
  752. package/dist/esm/ui-code-editor.entry.js +959 -0
  753. package/dist/esm/ui-code-preview.entry.js +313 -0
  754. package/dist/esm/ui-color-controller.entry.js +148 -0
  755. package/dist/esm/ui-color-picker.entry.js +656 -0
  756. package/dist/esm/ui-command-palette.entry.js +176 -0
  757. package/dist/esm/ui-dialog-box.entry.js +1806 -0
  758. package/dist/esm/ui-dialog-content.entry.js +29 -0
  759. package/dist/esm/ui-dialog-footer_2.entry.js +190 -0
  760. package/dist/esm/ui-divider.entry.js +479 -0
  761. package/dist/esm/ui-dock-host.entry.js +126 -0
  762. package/dist/esm/ui-dock.entry.js +219 -0
  763. package/dist/esm/ui-drag-drop.entry.js +170 -0
  764. package/dist/esm/ui-dropdown_2.entry.js +1549 -0
  765. package/dist/esm/ui-empty-state.entry.js +396 -0
  766. package/dist/esm/ui-fab-item.entry.js +37 -0
  767. package/dist/esm/ui-fab.entry.js +275 -0
  768. package/dist/esm/ui-file-upload.entry.js +416 -0
  769. package/dist/esm/ui-horizontal-nav.entry.js +133 -0
  770. package/dist/esm/ui-image-button.entry.js +65 -0
  771. package/dist/esm/ui-input-pair.entry.js +42 -0
  772. package/dist/esm/ui-knob.entry.js +445 -0
  773. package/dist/esm/ui-library.entry.js +132 -0
  774. package/dist/esm/ui-list-group_2.entry.js +583 -0
  775. package/dist/esm/ui-list.entry.js +730 -0
  776. package/dist/esm/ui-masonry.entry.js +476 -0
  777. package/dist/esm/ui-meter-group.entry.js +171 -0
  778. package/dist/esm/ui-navigation-item.entry.js +102 -0
  779. package/dist/esm/ui-number-input.entry.js +189 -0
  780. package/dist/esm/ui-otp-input.entry.js +244 -0
  781. package/dist/esm/ui-pagination_3.entry.js +1617 -0
  782. package/dist/esm/ui-panel.entry.js +612 -0
  783. package/dist/esm/ui-pattern-input.entry.js +276 -0
  784. package/dist/esm/ui-popover.entry.js +515 -0
  785. package/dist/esm/ui-progress.entry.js +514 -0
  786. package/dist/esm/ui-radio-group.entry.js +203 -0
  787. package/dist/esm/ui-radio.entry.js +204 -0
  788. package/dist/esm/ui-range-slider.entry.js +635 -0
  789. package/dist/esm/ui-resizable-panel.entry.js +482 -0
  790. package/dist/esm/ui-scroll-top.entry.js +457 -0
  791. package/dist/esm/ui-smart-context-menu.entry.js +374 -0
  792. package/dist/esm/ui-smart-location-dropdown.entry.js +563 -0
  793. package/dist/esm/ui-smart-stepper.entry.js +135 -0
  794. package/dist/esm/ui-snackbar.entry.js +861 -0
  795. package/dist/esm/ui-speed-dial.entry.js +518 -0
  796. package/dist/esm/ui-speedometer.entry.js +426 -0
  797. package/dist/esm/ui-splitter.entry.js +280 -0
  798. package/dist/esm/ui-step.entry.js +28 -0
  799. package/dist/esm/ui-stepper.entry.js +638 -0
  800. package/dist/esm/ui-switch.entry.js +403 -0
  801. package/dist/esm/ui-tabs.entry.js +701 -0
  802. package/dist/esm/ui-tag.entry.js +297 -0
  803. package/dist/esm/ui-timeline.entry.js +265 -0
  804. package/dist/esm/ui-timer.entry.js +500 -0
  805. package/dist/esm/ui-toolbar.entry.js +617 -0
  806. package/dist/esm/ui-tooltip.entry.js +695 -0
  807. package/dist/esm/ui-top-bar.entry.js +119 -0
  808. package/dist/esm/ui-transfer-list.entry.js +590 -0
  809. package/dist/esm/ui-tree.entry.js +872 -0
  810. package/dist/esm/ui-workspace-manager.entry.js +1199 -0
  811. package/dist/esm/utils-Ck6jDuhz.js +23 -0
  812. package/dist/exploration-project-tailwind/exploration-project-tailwind.css +1 -0
  813. package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -0
  814. package/dist/exploration-project-tailwind/index.esm.js +1 -0
  815. package/dist/exploration-project-tailwind/p-01c7db7a.entry.js +1 -0
  816. package/dist/exploration-project-tailwind/p-049744f9.entry.js +1 -0
  817. package/dist/exploration-project-tailwind/p-06f0c679.entry.js +1 -0
  818. package/dist/exploration-project-tailwind/p-0b004861.entry.js +1 -0
  819. package/dist/exploration-project-tailwind/p-0d31c9e9.entry.js +1 -0
  820. package/dist/exploration-project-tailwind/p-148e81df.entry.js +1 -0
  821. package/dist/exploration-project-tailwind/p-200241f8.entry.js +1 -0
  822. package/dist/exploration-project-tailwind/p-287dbf09.entry.js +1 -0
  823. package/dist/exploration-project-tailwind/p-2d273118.entry.js +1 -0
  824. package/dist/exploration-project-tailwind/p-2f1aebb3.entry.js +1 -0
  825. package/dist/exploration-project-tailwind/p-2f961934.entry.js +1 -0
  826. package/dist/exploration-project-tailwind/p-35296877.entry.js +1 -0
  827. package/dist/exploration-project-tailwind/p-36861546.entry.js +1 -0
  828. package/dist/exploration-project-tailwind/p-3d3d48fd.entry.js +1 -0
  829. package/dist/exploration-project-tailwind/p-41cd6bf0.entry.js +1 -0
  830. package/dist/exploration-project-tailwind/p-45482d86.entry.js +1 -0
  831. package/dist/exploration-project-tailwind/p-46596a28.entry.js +1 -0
  832. package/dist/exploration-project-tailwind/p-46efdea3.entry.js +1 -0
  833. package/dist/exploration-project-tailwind/p-47e2a7ee.entry.js +1 -0
  834. package/dist/exploration-project-tailwind/p-4d73c143.entry.js +1 -0
  835. package/dist/exploration-project-tailwind/p-4de419d5.entry.js +1 -0
  836. package/dist/exploration-project-tailwind/p-4f6bba75.entry.js +1 -0
  837. package/dist/exploration-project-tailwind/p-5508874f.entry.js +1 -0
  838. package/dist/exploration-project-tailwind/p-5ce0dbd8.entry.js +1 -0
  839. package/dist/exploration-project-tailwind/p-5e3e80ae.entry.js +1 -0
  840. package/dist/exploration-project-tailwind/p-61717490.entry.js +1 -0
  841. package/dist/exploration-project-tailwind/p-62352ef2.entry.js +1 -0
  842. package/dist/exploration-project-tailwind/p-64e3a484.entry.js +1 -0
  843. package/dist/exploration-project-tailwind/p-6ab80ead.entry.js +1 -0
  844. package/dist/exploration-project-tailwind/p-6e9694f2.entry.js +1 -0
  845. package/dist/exploration-project-tailwind/p-6fa9dc15.entry.js +1 -0
  846. package/dist/exploration-project-tailwind/p-70d82d79.entry.js +1 -0
  847. package/dist/exploration-project-tailwind/p-717dad1f.entry.js +1 -0
  848. package/dist/exploration-project-tailwind/p-7376ac95.entry.js +1 -0
  849. package/dist/exploration-project-tailwind/p-73d29a4a.entry.js +1 -0
  850. package/dist/exploration-project-tailwind/p-7515b1e3.entry.js +1 -0
  851. package/dist/exploration-project-tailwind/p-77124686.entry.js +1 -0
  852. package/dist/exploration-project-tailwind/p-77a21491.entry.js +1 -0
  853. package/dist/exploration-project-tailwind/p-77cc333a.entry.js +1 -0
  854. package/dist/exploration-project-tailwind/p-7f91d949.entry.js +1 -0
  855. package/dist/exploration-project-tailwind/p-807c6555.entry.js +1 -0
  856. package/dist/exploration-project-tailwind/p-81961fb1.entry.js +1 -0
  857. package/dist/exploration-project-tailwind/p-85bf89fd.entry.js +1 -0
  858. package/dist/exploration-project-tailwind/p-85e36111.entry.js +1 -0
  859. package/dist/exploration-project-tailwind/p-875be805.entry.js +1 -0
  860. package/dist/exploration-project-tailwind/p-898dd0fa.entry.js +1 -0
  861. package/dist/exploration-project-tailwind/p-8d951aef.entry.js +1 -0
  862. package/dist/exploration-project-tailwind/p-9d0c8760.entry.js +1 -0
  863. package/dist/exploration-project-tailwind/p-9fa70359.entry.js +1 -0
  864. package/dist/exploration-project-tailwind/p-9fc06ff0.entry.js +1 -0
  865. package/dist/exploration-project-tailwind/p-BMFah5q3.js +1 -0
  866. package/dist/exploration-project-tailwind/p-BSQ8klD4.js +1 -0
  867. package/dist/exploration-project-tailwind/p-C7gf39HE.js +1 -0
  868. package/dist/exploration-project-tailwind/p-Ck6jDuhz.js +1 -0
  869. package/dist/exploration-project-tailwind/p-D2WzX6vR.js +2 -0
  870. package/dist/exploration-project-tailwind/p-DUsoYu9r.js +2 -0
  871. package/dist/exploration-project-tailwind/p-a1ad32a2.entry.js +1 -0
  872. package/dist/exploration-project-tailwind/p-a3f465d9.entry.js +1 -0
  873. package/dist/exploration-project-tailwind/p-a42fdc33.entry.js +1 -0
  874. package/dist/exploration-project-tailwind/p-a4f52a76.entry.js +1 -0
  875. package/dist/exploration-project-tailwind/p-aa85ff78.entry.js +1 -0
  876. package/dist/exploration-project-tailwind/p-ab752761.entry.js +1 -0
  877. package/dist/exploration-project-tailwind/p-ba21fed3.entry.js +1 -0
  878. package/dist/exploration-project-tailwind/p-c174a372.entry.js +1 -0
  879. package/dist/exploration-project-tailwind/p-c2ca71ac.entry.js +1 -0
  880. package/dist/exploration-project-tailwind/p-c4ba7e52.entry.js +1 -0
  881. package/dist/exploration-project-tailwind/p-c5ddc817.entry.js +1 -0
  882. package/dist/exploration-project-tailwind/p-c69dd43e.entry.js +1 -0
  883. package/dist/exploration-project-tailwind/p-c6fd72e1.entry.js +1 -0
  884. package/dist/exploration-project-tailwind/p-c7e87fbb.entry.js +1 -0
  885. package/dist/exploration-project-tailwind/p-c87aeab6.entry.js +1 -0
  886. package/dist/exploration-project-tailwind/p-c90722ec.entry.js +1 -0
  887. package/dist/exploration-project-tailwind/p-ccb5c737.entry.js +1 -0
  888. package/dist/exploration-project-tailwind/p-ce1222a1.entry.js +1 -0
  889. package/dist/exploration-project-tailwind/p-d16c9635.entry.js +1 -0
  890. package/dist/exploration-project-tailwind/p-d2308a00.entry.js +1 -0
  891. package/dist/exploration-project-tailwind/p-d30e24bd.entry.js +1 -0
  892. package/dist/exploration-project-tailwind/p-d419eaf0.entry.js +1 -0
  893. package/dist/exploration-project-tailwind/p-debede45.entry.js +1 -0
  894. package/dist/exploration-project-tailwind/p-e5322e59.entry.js +1 -0
  895. package/dist/exploration-project-tailwind/p-e8ba0c95.entry.js +1 -0
  896. package/dist/exploration-project-tailwind/p-e90d5307.entry.js +1 -0
  897. package/dist/exploration-project-tailwind/p-ea51c5d8.entry.js +1 -0
  898. package/dist/exploration-project-tailwind/p-ecda1cc3.entry.js +1 -0
  899. package/dist/exploration-project-tailwind/p-f0830120.entry.js +1 -0
  900. package/dist/exploration-project-tailwind/p-f11e5cae.entry.js +1 -0
  901. package/dist/exploration-project-tailwind/p-f5719913.entry.js +1 -0
  902. package/dist/exploration-project-tailwind/p-ffb1754a.entry.js +1 -0
  903. package/dist/exploration-project-tailwind/p-vwwmWKs9.js +1 -0
  904. package/dist/index.cjs.js +1 -0
  905. package/dist/index.js +1 -0
  906. package/dist/types/components/accordion/accordion.d.ts +352 -0
  907. package/dist/types/components/accordion/types.d.ts +69 -0
  908. package/dist/types/components/advanced-data-table/advanced-data-table.d.ts +697 -0
  909. package/dist/types/components/advanced-data-table/types.d.ts +120 -0
  910. package/dist/types/components/anchor/anchor.d.ts +133 -0
  911. package/dist/types/components/anchor/types.d.ts +17 -0
  912. package/dist/types/components/animate-on-scroll/animate-on-scroll.d.ts +101 -0
  913. package/dist/types/components/aside-panel/aside-panel.d.ts +249 -0
  914. package/dist/types/components/avatar/avatar.d.ts +201 -0
  915. package/dist/types/components/avatar/types.d.ts +132 -0
  916. package/dist/types/components/avatar-group/avatar-group.d.ts +52 -0
  917. package/dist/types/components/avatar-group/types.d.ts +31 -0
  918. package/dist/types/components/badge/badge.d.ts +109 -0
  919. package/dist/types/components/badge/types.d.ts +6 -0
  920. package/dist/types/components/breadcrumb/breadcrumb-item.d.ts +36 -0
  921. package/dist/types/components/breadcrumb/breadcrumb.d.ts +73 -0
  922. package/dist/types/components/breadcrumb/types.d.ts +5 -0
  923. package/dist/types/components/button/button.d.ts +133 -0
  924. package/dist/types/components/button/types.d.ts +1 -0
  925. package/dist/types/components/button-toggle/button-toggle.d.ts +64 -0
  926. package/dist/types/components/button-toggle-group/button-toggle-group.d.ts +141 -0
  927. package/dist/types/components/button-toggle-group/types.d.ts +7 -0
  928. package/dist/types/components/callout-banner/callout-banner.d.ts +115 -0
  929. package/dist/types/components/callout-banner/types.d.ts +7 -0
  930. package/dist/types/components/card/card.d.ts +160 -0
  931. package/dist/types/components/card/types.d.ts +13 -0
  932. package/dist/types/components/carousel/carousel.d.ts +150 -0
  933. package/dist/types/components/carousel/types.d.ts +8 -0
  934. package/dist/types/components/checkbox/checkbox.d.ts +92 -0
  935. package/dist/types/components/checkbox/types.d.ts +5 -0
  936. package/dist/types/components/checkbox-group/checkbox-group.d.ts +87 -0
  937. package/dist/types/components/checkbox-group/types.d.ts +8 -0
  938. package/dist/types/components/code-editor/code-editor.d.ts +147 -0
  939. package/dist/types/components/code-editor/types.d.ts +20 -0
  940. package/dist/types/components/code-preview/types.d.ts +5 -0
  941. package/dist/types/components/code-preview/ui-code-preview.d.ts +69 -0
  942. package/dist/types/components/color-controller/color-controller.d.ts +24 -0
  943. package/dist/types/components/color-picker/color-picker.d.ts +116 -0
  944. package/dist/types/components/color-picker/types.d.ts +24 -0
  945. package/dist/types/components/command-palette/command-palette.d.ts +41 -0
  946. package/dist/types/components/command-palette/types.d.ts +7 -0
  947. package/dist/types/components/context-menu/context-menu.d.ts +135 -0
  948. package/dist/types/components/context-menu/types.d.ts +20 -0
  949. package/dist/types/components/dialog-box/dialog-box.d.ts +648 -0
  950. package/dist/types/components/dialog-box/types.d.ts +1 -0
  951. package/dist/types/components/dialog-content/dialog-content.d.ts +9 -0
  952. package/dist/types/components/dialog-footer/dialog-footer.d.ts +9 -0
  953. package/dist/types/components/dialog-footer/types.d.ts +1 -0
  954. package/dist/types/components/dialog-header/dialog-header.d.ts +102 -0
  955. package/dist/types/components/dialog-header/types.d.ts +2 -0
  956. package/dist/types/components/divider/divider.d.ts +245 -0
  957. package/dist/types/components/divider/types.d.ts +14 -0
  958. package/dist/types/components/dock/dock.d.ts +37 -0
  959. package/dist/types/components/dock/types.d.ts +11 -0
  960. package/dist/types/components/dock-host/index.d.ts +1 -0
  961. package/dist/types/components/dock-host/types.d.ts +1 -0
  962. package/dist/types/components/dock-host/ui-dock-host.d.ts +23 -0
  963. package/dist/types/components/drag-drop/drag-drop.d.ts +52 -0
  964. package/dist/types/components/drag-drop/types.d.ts +9 -0
  965. package/dist/types/components/dropdown/dropdown.d.ts +264 -0
  966. package/dist/types/components/dropdown/types.d.ts +19 -0
  967. package/dist/types/components/empty-state/empty-state.d.ts +74 -0
  968. package/dist/types/components/empty-state/types.d.ts +13 -0
  969. package/dist/types/components/fab/fab.d.ts +73 -0
  970. package/dist/types/components/fab-item/fab-item.d.ts +14 -0
  971. package/dist/types/components/fab-item/types.d.ts +3 -0
  972. package/dist/types/components/file-upload/file-upload.d.ts +91 -0
  973. package/dist/types/components/file-upload/types.d.ts +15 -0
  974. package/dist/types/components/horizontal-nav/horizontal-nav.d.ts +68 -0
  975. package/dist/types/components/icon/icon.d.ts +66 -0
  976. package/dist/types/components/image-button/image-button.d.ts +31 -0
  977. package/dist/types/components/image-button/types.d.ts +1 -0
  978. package/dist/types/components/input/input.d.ts +217 -0
  979. package/dist/types/components/input/types.d.ts +6 -0
  980. package/dist/types/components/input-pair/input-pair.d.ts +28 -0
  981. package/dist/types/components/knob/knob.d.ts +147 -0
  982. package/dist/types/components/knob/types.d.ts +4 -0
  983. package/dist/types/components/layout-manager/layout-manager.d.ts +32 -0
  984. package/dist/types/components/layout-manager/lm-container/lm-container.d.ts +7 -0
  985. package/dist/types/components/layout-manager/lm-floating-window/lm-floating-window.d.ts +6 -0
  986. package/dist/types/components/layout-manager/lm-panel/lm-panel.d.ts +7 -0
  987. package/dist/types/components/layout-manager/lm-splitter/lm-splitter.d.ts +12 -0
  988. package/dist/types/components/layout-manager/lm-tabs/lm-tabs.d.ts +12 -0
  989. package/dist/types/components/layout-manager/types.d.ts +1 -0
  990. package/dist/types/components/library/category-section.d.ts +15 -0
  991. package/dist/types/components/library/data.d.ts +11 -0
  992. package/dist/types/components/library/library-card.d.ts +19 -0
  993. package/dist/types/components/library/library.d.ts +9 -0
  994. package/dist/types/components/list/list.d.ts +183 -0
  995. package/dist/types/components/list-group/list-group.d.ts +28 -0
  996. package/dist/types/components/list-item/list-item.d.ts +200 -0
  997. package/dist/types/components/masonry/masonry.d.ts +105 -0
  998. package/dist/types/components/masonry/types.d.ts +5 -0
  999. package/dist/types/components/meter-group/meter-group.d.ts +66 -0
  1000. package/dist/types/components/meter-group/types.d.ts +12 -0
  1001. package/dist/types/components/my-component/my-component.d.ts +16 -0
  1002. package/dist/types/components/my-step/index.d.ts +12 -0
  1003. package/dist/types/components/my-step/my-step.d.ts +13 -0
  1004. package/dist/types/components/nav-bar/nav-bar.d.ts +119 -0
  1005. package/dist/types/components/number-input/number-input.d.ts +72 -0
  1006. package/dist/types/components/otp-input/otp-input.d.ts +64 -0
  1007. package/dist/types/components/otp-input/types.d.ts +3 -0
  1008. package/dist/types/components/pagination/pagination.d.ts +295 -0
  1009. package/dist/types/components/pagination/types.d.ts +1 -0
  1010. package/dist/types/components/panel/panel.d.ts +275 -0
  1011. package/dist/types/components/panel/types.d.ts +7 -0
  1012. package/dist/types/components/pattern-input/pattern-input.d.ts +88 -0
  1013. package/dist/types/components/popover/popover.d.ts +161 -0
  1014. package/dist/types/components/popover/types.d.ts +3 -0
  1015. package/dist/types/components/progress/progress.d.ts +224 -0
  1016. package/dist/types/components/progress/types.d.ts +6 -0
  1017. package/dist/types/components/radio/radio.d.ts +87 -0
  1018. package/dist/types/components/radio/types.d.ts +7 -0
  1019. package/dist/types/components/radio-group/radio-group.d.ts +74 -0
  1020. package/dist/types/components/radio-group/types.d.ts +2 -0
  1021. package/dist/types/components/range-slider/range-slider.d.ts +201 -0
  1022. package/dist/types/components/range-slider/types.d.ts +4 -0
  1023. package/dist/types/components/rating/rating.d.ts +127 -0
  1024. package/dist/types/components/rating/types.d.ts +1 -0
  1025. package/dist/types/components/resizable-panel/resizable-panel.d.ts +59 -0
  1026. package/dist/types/components/resizable-panel/types.d.ts +11 -0
  1027. package/dist/types/components/scroll-top/scroll-top.d.ts +186 -0
  1028. package/dist/types/components/scroll-top/types.d.ts +1 -0
  1029. package/dist/types/components/skeleton/skeleton-loader.d.ts +149 -0
  1030. package/dist/types/components/skeleton/types.d.ts +1 -0
  1031. package/dist/types/components/smart-location-dropdown/smart-location-dropdown.d.ts +119 -0
  1032. package/dist/types/components/smart-location-dropdown/types.d.ts +37 -0
  1033. package/dist/types/components/smart-menu/menu-item.interface.d.ts +10 -0
  1034. package/dist/types/components/smart-menu/smart-menu.d.ts +64 -0
  1035. package/dist/types/components/smart-stepper/smart-step.d.ts +29 -0
  1036. package/dist/types/components/smart-stepper/smart-stepper.d.ts +53 -0
  1037. package/dist/types/components/snackbar/snackbar.d.ts +223 -0
  1038. package/dist/types/components/snackbar/types.d.ts +104 -0
  1039. package/dist/types/components/speed-dial/speed-dial.d.ts +171 -0
  1040. package/dist/types/components/speed-dial/types.d.ts +11 -0
  1041. package/dist/types/components/speedometer/speedometer.d.ts +125 -0
  1042. package/dist/types/components/speedometer/types.d.ts +8 -0
  1043. package/dist/types/components/splitter/splitter.d.ts +63 -0
  1044. package/dist/types/components/splitter/types.d.ts +9 -0
  1045. package/dist/types/components/stack/stack.d.ts +34 -0
  1046. package/dist/types/components/stack/types.d.ts +3 -0
  1047. package/dist/types/components/step/step.d.ts +16 -0
  1048. package/dist/types/components/step/types.d.ts +1 -0
  1049. package/dist/types/components/stepper/stepper.d.ts +218 -0
  1050. package/dist/types/components/stepper/types.d.ts +39 -0
  1051. package/dist/types/components/switch/switch.d.ts +162 -0
  1052. package/dist/types/components/tabs/tabs.d.ts +182 -0
  1053. package/dist/types/components/tabs/types.d.ts +17 -0
  1054. package/dist/types/components/tag/tag.d.ts +172 -0
  1055. package/dist/types/components/tag/types.d.ts +4 -0
  1056. package/dist/types/components/tag-group/tag-group.d.ts +107 -0
  1057. package/dist/types/components/tag-group/types.d.ts +2 -0
  1058. package/dist/types/components/timeline/timeline.d.ts +73 -0
  1059. package/dist/types/components/timeline/types.d.ts +28 -0
  1060. package/dist/types/components/timeline/ui-timeline.stories.d.ts +9 -0
  1061. package/dist/types/components/timeline-item/timeline-item.d.ts +15 -0
  1062. package/dist/types/components/timer/timer.d.ts +123 -0
  1063. package/dist/types/components/timer/types.d.ts +18 -0
  1064. package/dist/types/components/timer/ui-timer.stories.d.ts +9 -0
  1065. package/dist/types/components/toggle-group/toggle-group.d.ts +136 -0
  1066. package/dist/types/components/toggle-group/types.d.ts +5 -0
  1067. package/dist/types/components/toolbar/toolbar-types.d.ts +189 -0
  1068. package/dist/types/components/toolbar/toolbar.d.ts +150 -0
  1069. package/dist/types/components/tooltip/tooltip.d.ts +166 -0
  1070. package/dist/types/components/tooltip/types.d.ts +3 -0
  1071. package/dist/types/components/top-bar/top-bar.d.ts +76 -0
  1072. package/dist/types/components/transfer-list/transfer-list.d.ts +137 -0
  1073. package/dist/types/components/transfer-list/types.d.ts +13 -0
  1074. package/dist/types/components/tree/tree.d.ts +180 -0
  1075. package/dist/types/components/tree/types.d.ts +76 -0
  1076. package/dist/types/components/ui-navigation-bar/navigation-bar/navigation-bar.d.ts +108 -0
  1077. package/dist/types/components/ui-navigation-bar/navigation-bar/navigation-types.d.ts +17 -0
  1078. package/dist/types/components/ui-navigation-bar/navigation-item.d.ts +26 -0
  1079. package/dist/types/components/ui-navigation-bar/navigation-types.d.ts +19 -0
  1080. package/dist/types/components/workspace-manager/types.d.ts +48 -0
  1081. package/dist/types/components/workspace-manager/workspace-manager.d.ts +211 -0
  1082. package/dist/types/components.d.ts +29634 -0
  1083. package/dist/types/index.d.ts +21 -0
  1084. package/dist/types/service/drag-manager.d.ts +8 -0
  1085. package/dist/types/service/event-bus.d.ts +9 -0
  1086. package/dist/types/service/serialization.d.ts +5 -0
  1087. package/dist/types/service/state-engine.d.ts +25 -0
  1088. package/dist/types/service/theme-switcher.d.ts +46 -0
  1089. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  1090. package/dist/types/types/animation.type.d.ts +96 -0
  1091. package/dist/types/types/common.d.ts +52 -0
  1092. package/dist/types/types/common.type.d.ts +608 -0
  1093. package/dist/types/types/index.d.ts +37 -0
  1094. package/dist/types/types/text.type.d.ts +32 -0
  1095. package/dist/types/utils/aria-live.d.ts +20 -0
  1096. package/dist/types/utils/component-size.d.ts +2 -0
  1097. package/dist/types/utils/dom.d.ts +58 -0
  1098. package/dist/types/utils/focus-trap.d.ts +35 -0
  1099. package/dist/types/utils/security.d.ts +5 -0
  1100. package/dist/types/utils/test/setup-component-test-env.d.ts +14 -0
  1101. package/dist/types/utils/utils.d.ts +7 -0
  1102. package/dist/types/utils/validation.d.ts +43 -0
  1103. package/loader/cdn.js +1 -0
  1104. package/loader/index.cjs.js +1 -0
  1105. package/loader/index.d.ts +24 -0
  1106. package/loader/index.es2017.js +1 -0
  1107. package/loader/index.js +2 -0
  1108. package/package.json +77 -0
@@ -0,0 +1,1932 @@
1
+ // Input Component Demo
2
+ export function initInputDemo() {
3
+ const section = document.getElementById('input');
4
+ if (!section) return;
5
+
6
+ section.innerHTML = `
7
+ <p style="margin-top: 0; opacity: 0.7; font-size: 14px; margin-bottom: 24px;">Advanced input component with variants, icons, validation states, and masking support.</p>
8
+
9
+ <div class="demo-controls-wrapper">
10
+ <div class="demo-grid-wrapper">
11
+ <ui-button id="btnInputPlayground" label="Playground" icon="layout" variant="outline"></ui-button>
12
+ <ui-button id="btnInputVariants" label="Variants" icon="layers" variant="outline"></ui-button>
13
+ <ui-button id="btnInputTextArea" label="TextArea" icon="file-text" variant="outline"></ui-button>
14
+ <ui-button id="btnInputIcons" label="Icons & Extras" icon="plus-circle" variant="outline"></ui-button>
15
+ <ui-button id="btnInputValidation" label="Validation" icon="check-square" variant="outline"></ui-button>
16
+ <ui-button id="btnInputRange" label="Range Slider" icon="sliders" variant="outline"></ui-button>
17
+ <ui-button id="btnInputColorPicker" label="Color Picker" icon="palette" variant="outline"></ui-button>
18
+ <ui-button id="btnInputMasking" label="Input Masking" icon="mask" variant="outline"></ui-button>
19
+ <ui-button id="btnInputFileUpload" label="File Upload" icon="folder" variant="outline"></ui-button>
20
+ <ui-button id="btnInputCurrencies" label="Currencies" icon="dollar-sign" variant="outline"></ui-button>
21
+ <ui-button id="btnInputMasterTier" label="Master Tier" icon="star" variant="outline"></ui-button>
22
+ <ui-button id="btnInputPair" label="Dual/Pair" icon="users" variant="outline"></ui-button>
23
+ <ui-button id="btnInputSizes" label="Sizes" icon="maximize" variant="outline"></ui-button>
24
+ <ui-button id="btnInputColors" label="Colors" icon="aperture" variant="outline"></ui-button>
25
+ <ui-button id="btnInputWidths" label="Widths" icon="move-horizontal" variant="outline"></ui-button>
26
+ <ui-button id="btnInputCustom" label="Custom" icon="edit" variant="outline"></ui-button>
27
+ <ui-button id="btnInputBlocks" label="Blocks" icon="grid" variant="outline"></ui-button>
28
+ <ui-button id="btnInputAddonClicks" label="Addon Clicks" icon="mouse-pointer-click" variant="outline"></ui-button>
29
+ <ui-button id="btnInputZenith" label="Zenith Features" icon="milky-way" variant="outline"></ui-button>
30
+ <ui-button id="btnInputEnterprise" label="Enterprise" icon="landmark" variant="outline"></ui-button>
31
+ </div>
32
+ </div>
33
+
34
+ <div id="inputDemoContainer" style="margin-top: 20px;"></div>
35
+ `;
36
+
37
+ function showGroupedInputsDemo() {
38
+ const container = document.getElementById('inputDemoContainer');
39
+ if (!container) return;
40
+
41
+ container.innerHTML = `
42
+ <div class="demo-block">
43
+ <h3>Grouped Channel Inputs</h3>
44
+ <p style="font-size:13px;color:#6b7280;margin-bottom:16px;">
45
+ Numeric input fields grouped in a single row, with per-channel validation. This pattern is ideal for RGB, RGBA, HSL, HSLA, or similar multi-part values.<br>
46
+ Each field validates its own range and highlights errors inline.
47
+ </p>
48
+ <div style="display:flex;flex-direction:column;gap:32px;max-width:520px;">
49
+ <div>
50
+ <div style="font-size:12px;color: var(--label-subtitle-color);font-weight:600;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:8px;">RGB Example</div>
51
+ <div style="display:flex;align-items:center;gap:10px;">
52
+ <ui-input id="rgb-r" type="number" min="0" max="255" value="16" label="R" size="md" style="width:70px;"></ui-input>
53
+ <ui-input id="rgb-g" type="number" min="0" max="255" value="185" label="G" size="md" style="width:70px;"></ui-input>
54
+ <ui-input id="rgb-b" type="number" min="0" max="255" value="129" label="B" size="md" style="width:70px;"></ui-input>
55
+ <span id="rgb-preview" style="display:inline-block;width:36px;height:36px;border-radius:8px;border:1.5px solid #e5e7eb;margin-left:16px;"></span>
56
+ </div>
57
+ <div id="rgb-error" style="color:#ef4444;font-size:12px;margin-top:6px;display:none;"></div>
58
+ </div>
59
+ <div>
60
+ <div style="font-size:12px;color: var(--label-subtitle-color);font-weight:600;text-transform:uppercase;letter-spacing:0.5px;margin-bottom:8px;">RGBA Example</div>
61
+ <div style="display:flex;align-items:center;gap:10px;">
62
+ <ui-input id="rgba-r" type="number" min="0" max="255" value="139" label="R" size="md" style="width:70px;"></ui-input>
63
+ <ui-input id="rgba-g" type="number" min="0" max="255" value="92" label="G" size="md" style="width:70px;"></ui-input>
64
+ <ui-input id="rgba-b" type="number" min="0" max="255" value="246" label="B" size="md" style="width:70px;"></ui-input>
65
+ <ui-input id="rgba-a" type="number" min="0" max="1" step="0.01" value="0.7" label="A" size="md" style="width:70px;"></ui-input>
66
+ <span id="rgba-preview" style="display:inline-block;width:36px;height:36px;border-radius:8px;border:1.5px solid #e5e7eb;margin-left:16px;"></span>
67
+ </div>
68
+ <div id="rgba-error" style="color:#ef4444;font-size:12px;margin-top:6px;display:none;"></div>
69
+ </div>
70
+ </div>
71
+ </div>
72
+ `;
73
+
74
+ // RGB logic
75
+ const rgbInputs = ['rgb-r', 'rgb-g', 'rgb-b'].map(id => document.getElementById(id));
76
+ const rgbPreview = document.getElementById('rgb-preview');
77
+ const rgbError = document.getElementById('rgb-error');
78
+ function updateRgb() {
79
+ const r = parseInt(rgbInputs[0].value, 10);
80
+ const g = parseInt(rgbInputs[1].value, 10);
81
+ const b = parseInt(rgbInputs[2].value, 10);
82
+ let valid = true;
83
+ let error = '';
84
+ [r, g, b].forEach((v, i) => {
85
+ if (isNaN(v) || v < 0 || v > 255) {
86
+ valid = false;
87
+ error = 'Each channel must be 0-255.';
88
+ }
89
+ });
90
+ if (valid) {
91
+ rgbPreview.style.background = `rgb(${r},${g},${b})`;
92
+ rgbError.style.display = 'none';
93
+ } else {
94
+ rgbPreview.style.background = '#fff';
95
+ rgbError.textContent = error;
96
+ rgbError.style.display = 'block';
97
+ }
98
+ }
99
+ rgbInputs.forEach(inp => inp.addEventListener('inputChange', updateRgb));
100
+ updateRgb();
101
+
102
+ // RGBA logic
103
+ const rgbaInputs = ['rgba-r', 'rgba-g', 'rgba-b', 'rgba-a'].map(id => document.getElementById(id));
104
+ const rgbaPreview = document.getElementById('rgba-preview');
105
+ const rgbaError = document.getElementById('rgba-error');
106
+ function updateRgba() {
107
+ const r = parseInt(rgbaInputs[0].value, 10);
108
+ const g = parseInt(rgbaInputs[1].value, 10);
109
+ const b = parseInt(rgbaInputs[2].value, 10);
110
+ const a = parseFloat(rgbaInputs[3].value);
111
+ let valid = true;
112
+ let error = '';
113
+ [r, g, b].forEach((v, i) => {
114
+ if (isNaN(v) || v < 0 || v > 255) {
115
+ valid = false;
116
+ error = 'RGB channels must be 0-255.';
117
+ }
118
+ });
119
+ if (isNaN(a) || a < 0 || a > 1) {
120
+ valid = false;
121
+ error = 'Alpha must be 0-1.';
122
+ }
123
+ if (valid) {
124
+ rgbaPreview.style.background = `rgba(${r},${g},${b},${a})`;
125
+ rgbaError.style.display = 'none';
126
+ } else {
127
+ rgbaPreview.style.background = '#fff';
128
+ rgbaError.textContent = error;
129
+ rgbaError.style.display = 'block';
130
+ }
131
+ }
132
+ rgbaInputs.forEach(inp => inp.addEventListener('inputChange', updateRgba));
133
+ updateRgba();
134
+ }
135
+
136
+ function showInputWidthsDemo() {
137
+ const container = document.getElementById('inputDemoContainer');
138
+ if (!container) return;
139
+
140
+ container.innerHTML = `
141
+ <div class="demo-block">
142
+ <h3>📐 Custom Width Control</h3>
143
+ <p style="margin-bottom: 24px; opacity: 0.8;">The <code>width</code> prop allows you to precisely control the input footprint using standard CSS units (px, %, etc.).</p>
144
+
145
+ <div style="display: flex; flex-direction: column; gap: 32px; padding: 20px; background: rgba(0,0,0,0.02); border-radius: 16px;">
146
+ <div>
147
+ <div style="margin-bottom: 12px; font-weight: 600; color: #475569;">Precision Pixel Widths</div>
148
+ <div style="display: flex; flex-direction: column; gap: 16px;">
149
+ <ui-input width="100px" label="100px Width" placeholder="Fixed"></ui-input>
150
+ <ui-input width="300px" label="300px Width" placeholder="Medium fixed footprint"></ui-input>
151
+ <ui-input width="500px" label="500px Width" placeholder="Large fixed footprint for complex data"></ui-input>
152
+ </div>
153
+ </div>
154
+
155
+ <div style="border-top: 1px solid #e2e8f0; paddingTop: 24px;">
156
+ <div style="margin-bottom: 12px; font-weight: 600; color: #475569;">Responsive Percentage Widths</div>
157
+ <div style="display: flex; flex-direction: column; gap: 16px;">
158
+ <ui-input width="25%" label="25% Width" placeholder="Small"></ui-input>
159
+ <ui-input width="50%" label="50% Width" placeholder="Half container"></ui-input>
160
+ <ui-input width="100%" label="100% Width (Global default)" placeholder="Full span"></ui-input>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ </div>
165
+ `;
166
+ }
167
+
168
+ window.showInputTypes = function () {
169
+ const container = document.getElementById('inputDemoContainer');
170
+ if (!container) return;
171
+
172
+ container.innerHTML = `
173
+ <div class="demo-block">
174
+ <h3>🚀 All Supported Input Types</h3>
175
+ <p style="margin-bottom: 24px; opacity: 0.8;">A comprehensive list of all HTML5 input types supported by the <code>ui-input</code> component with premium styling and automatic icons.</p>
176
+
177
+ <h4 style="margin-top: 32px; border-bottom: 1px solid #eee; padding-bottom: 8px;">Standard Text Inputs</h4>
178
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-top: 16px;">
179
+ <ui-input type="text" label="Text" placeholder="Basic text input" size="md"></ui-input>
180
+ <ui-input type="password" label="Password" placeholder="Enter password" show-password-toggle="true" size="md"></ui-input>
181
+ <ui-input type="email" label="Email" placeholder="user@example.com" size="md"></ui-input>
182
+ <ui-input type="tel" label="Tel" placeholder="(555) 555-5555" size="md"></ui-input>
183
+ <ui-input type="url" label="URL" placeholder="https://example.com" size="md"></ui-input>
184
+ <ui-input type="search" label="Search" placeholder="Press Enter to search..." show-clear="true" size="md"></ui-input>
185
+ </div>
186
+
187
+ <h4 style="margin-top: 48px; border-bottom: 1px solid #eee; padding-bottom: 8px;">Numbers & Range</h4>
188
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-top: 16px;">
189
+ <ui-input type="number" label="Number" placeholder="Enter value" size="md"></ui-input>
190
+ <ui-input type="number" label="Number with Steppers" show-steppers="true" value="10" size="md"></ui-input>
191
+ <ui-input type="range" label="Range" min="0" max="100" value="45" size="md"></ui-input>
192
+ </div>
193
+
194
+ <h4 style="margin-top: 48px; border-bottom: 1px solid #eee; padding-bottom: 8px;">Date & Time Selection</h4>
195
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-top: 16px;">
196
+ <ui-input type="date" label="Date" size="md"></ui-input>
197
+ <ui-input type="time" label="Time" size="md"></ui-input>
198
+ <ui-input type="datetime-local" label="DateTime Local" size="md"></ui-input>
199
+ <ui-input type="month" label="Month" size="md"></ui-input>
200
+ <ui-input type="week" label="Week" size="md"></ui-input>
201
+ </div>
202
+
203
+ <h4 style="margin-top: 48px; border-bottom: 1px solid #eee; padding-bottom: 8px;">Specialized Inputs & Advanced Controllers</h4>
204
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-top: 16px;">
205
+ <ui-input type="color" label="Standard Color Picker (Native)" value="#10b981" size="md"></ui-input>
206
+ <ui-input type="file" label="File Upload" placeholder="Choose files..." size="md"></ui-input>
207
+ <div style="background: white; padding: 20px; border-radius: 16px; border: 1px solid #e2e8f0; grid-row: span 2;">
208
+ <ui-color-controller label="Professional Color Studio" value="#8b5cf6" size="md"></ui-color-controller>
209
+ <p style="font-size: 11px; color: #94a3b8; margin-top: 16px; line-height: 1.4;">Advanced side-by-side editing for HSL, RGB, and HEX formats with real-time synchronization.</p>
210
+ </div>
211
+ <ui-input type="file" label="Multiple Files" multiple="true" placeholder="Choose multiple..." size="md"></ui-input>
212
+ </div>
213
+
214
+ <h4 style="margin-top: 48px; border-bottom: 1px solid #eee; padding-bottom: 8px;">Attributes & Validation Constraints</h4>
215
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-top: 16px;">
216
+ <ui-input label="MaxLength (10)" max-length="10" placeholder="Max 10 chars" show-counter="true" max-length-indicator="10" size="md"></ui-input>
217
+ <ui-input label="MinLength (5)" min-length="5" placeholder="Min 5 chars" min-length-indicator="5" size="md"></ui-input>
218
+ <ui-input label="Pattern (Numbers only)" pattern="[0-9]*" placeholder="Numbers only (Regex: [0-9]*)" size="md"></ui-input>
219
+ <ui-input type="number" label="Numeric Constraints" min="0" max="100" step="10" value="50" show-steppers="true" helper-text="Min: 0, Max: 100, Step: 10" size="md"></ui-input>
220
+ <ui-input multiline="true" label="Multi-line (Rows: 4)" rows="4" placeholder="Standard textarea height" size="md"></ui-input>
221
+ <ui-input multiline="true" label="Auto-Resize (MaxRows: 6)" auto-resize="true" max-rows="6" placeholder="Type to see it grow..." size="md"></ui-input>
222
+ </div>
223
+ </div>
224
+ `;
225
+ };
226
+
227
+ function showInteractiveInput() {
228
+ const container = document.getElementById('inputDemoContainer');
229
+ if (!container) return;
230
+
231
+ container.innerHTML = `
232
+ <div class="demo-block premium-playground" style="background: #f1f7ff; border: 1px solid #d0e1ff; border-radius: 20px; padding: 24px;">
233
+ <h3 style="color: var(--label-color); display: flex; align-items: center; gap: 8px; margin-top: 0; font-size: 1.1rem; opacity: 0.8;">
234
+ <ui-icon library="lucide" name="layout-template"></ui-icon>
235
+ Live Preview Context
236
+ </h3>
237
+ <div class="playground-workspace" style="display: flex; height: 85vh; min-height: 700px; background: white; border-radius: 24px; border: 1px solid #e2e8f0; overflow: hidden; box-shadow: 0 30px 60px rgba(0,0,0,0.12); margin-top: 32px; position: relative;">
238
+ <!-- Custom Scrollbar Style -->
239
+ <style>
240
+ .playground-sidebar-scroll::-webkit-scrollbar { width: 5px; }
241
+ .playground-sidebar-scroll::-webkit-scrollbar-track { background: transparent; }
242
+ .playground-sidebar-scroll::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.1); border-radius: 10px; }
243
+ .playground-sidebar-scroll::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.2); }
244
+ .setting-card { background: white; border-radius: 16px; padding: 20px; border: 1px solid rgba(208,225,255,0.3); transition: transform 0.2s, box-shadow 0.2s; box-shadow: 0 2px 10px rgba(0,0,0,0.02); }
245
+ .setting-card:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0,0,0,0.05); border-color: rgba(139,92,246,0.3); }
246
+ </style>
247
+
248
+ <!-- Sidebar: Navigation & Settings Groups -->
249
+ <div class="playground-sidebar" style="width: 50%; min-width: 480px; display: flex; flex-direction: column; border-right: 1px solid rgba(0,0,0,0.05);">
250
+ <div style="padding: 28px; border-bottom: 1px solid rgba(0,0,0,0.05); flex-shrink: 0;">
251
+ <h3 style="margin: 0; font-size: 1.2rem; background: linear-gradient(to right, #1e293b, #64748b); -webkit-background-clip: text; -webkit-text-fill-color: transparent; display: flex; align-items: center; gap: 12px; font-weight: 800; letter-spacing: -0.02em;">
252
+ <ui-icon name="tool" library="lucide" color="primary"></ui-icon>
253
+ Component Workbench
254
+ </h3>
255
+ </div>
256
+
257
+ <div class="playground-sidebar-scroll" style="flex: 1; overflow-y: auto; padding: 28px; display: flex; flex-direction: column; gap: 28px;">
258
+ <!-- Group Card: Identity -->
259
+ <div class="setting-card">
260
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
261
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #f1f5f9; display: flex; align-items: center; justify-content: center;"><ui-icon name="database" size="16px" color="primary"></ui-icon></div>
262
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #475569; font-weight: 700;">Data & Identity</h4>
263
+ </div>
264
+ <div style="display: flex; flex-direction: column; gap: 16px;">
265
+ <ui-dropdown id="inpType" label="Core Type" value="text" options='[
266
+ {"label": "Standard Text", "value": "text"}, {"label": "Secure Password", "value": "password"}, {"label": "Email Address", "value": "email"},
267
+ {"label": "Numeric Value", "value": "number"}, {"label": "Search Node", "value": "search"}, {"label": "Date Primary", "value": "date"},
268
+ {"label": "OTP Segment", "value": "otp"}, {"label": "PIN Master", "value": "pin"}, {"label": "Color Master", "value": "color"},
269
+ {"label": "Telephone Master", "value": "tel"}, {"label": "URL Master", "value": "url"}
270
+ ]' size="md" variant="outlined"></ui-dropdown>
271
+ <ui-input id="inpLabel" label="Visual Label" value="Username" size="md" variant="outlined"></ui-input>
272
+ <ui-input id="inpPlaceholder" label="Placeholder" value="Enter input..." size="md" variant="outlined"></ui-input>
273
+ <ui-input id="inpValue" label="Current Value" value="" size="md" variant="outlined"></ui-input>
274
+ <ui-input id="inpHelperText" label="Helping Hand (Text)" value="Keep it unique" size="md" variant="outlined"></ui-input>
275
+ </div>
276
+ </div>
277
+
278
+ <!-- Group Card: Validation & Logic -->
279
+ <div class="setting-card">
280
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
281
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #fff1f2; display: flex; align-items: center; justify-content: center;"><ui-icon name="shield-check" size="16px" color="danger"></ui-icon></div>
282
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #be123c; font-weight: 700;">Validation & Logic</h4>
283
+ </div>
284
+ <div style="display: flex; flex-direction: column; gap: 16px;">
285
+ <ui-dropdown id="inpValidation" label="Validation State" value="none" options='[
286
+ {"label": "Neutral (None)", "value": "none"}, {"label": "Success State", "value": "success"}, {"label": "Error State", "value": "error"},
287
+ {"label": "Warning State", "value": "warning"}, {"label": "Info State", "value": "info"}
288
+ ]' size="md" variant="outlined"></ui-dropdown>
289
+ <ui-input id="inpErrorText" label="Error Messenger" value="Field is required" size="md" variant="outlined"></ui-input>
290
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
291
+ <ui-checkbox id="inpRequired" label="Mandatory" size="md"></ui-checkbox>
292
+ <ui-checkbox id="inpDisabled" label="Deactivated" size="md"></ui-checkbox>
293
+ <ui-checkbox id="inpReadonly" label="Read Only" size="md"></ui-checkbox>
294
+ <ui-checkbox id="inpAutofocus" label="Auto Focus" size="md"></ui-checkbox>
295
+ </div>
296
+ </div>
297
+ </div>
298
+
299
+ <!-- Group Card: Atmosphere -->
300
+ <div class="setting-card" style="border-left: 4px solid #8b5cf6;">
301
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
302
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #f5f3ff; display: flex; align-items: center; justify-content: center;"><ui-icon name="sparkles" size="16px" color="primary"></ui-icon></div>
303
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #7c3aed; font-weight: 700;">Zenith Atmosphere</h4>
304
+ </div>
305
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px;">
306
+ <ui-checkbox id="inpGradient" label="Atmospheric Shader" size="md"></ui-checkbox>
307
+ <ui-checkbox id="inpSheen" label="Glass Sheen" size="md"></ui-checkbox>
308
+ <ui-checkbox id="inpProgress" label="Density Ring" size="md"></ui-checkbox>
309
+ <ui-checkbox id="inpDirty" label="Live Tracking" size="md"></ui-checkbox>
310
+ </div>
311
+ </div>
312
+
313
+ <!-- Group Card: Aesthetics -->
314
+ <div class="setting-card">
315
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
316
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #f1f5f9; display: flex; align-items: center; justify-content: center;"><ui-icon name="palette" size="16px" color="primary"></ui-icon></div>
317
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #475569; font-weight: 700;">Visual Synthesis</h4>
318
+ </div>
319
+ <ui-dropdown id="inpVariant" label="Render Engine" value="outlined" options='[
320
+ {"label": "Outlined Modern", "value": "outlined"}, {"label": "Frosted Glass", "value": "glass"}, {"label": "Depth Shadow", "value": "raised"},
321
+ {"label": "Subtle Soft", "value": "soft"}, {"label": "Minimalist", "value": "borderless"}, {"label": "Plain", "value": "plain"}
322
+ ]' size="md" variant="outlined"></ui-dropdown>
323
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
324
+ <ui-dropdown id="inpSize" label="Size Hub" value="md" options='[
325
+ {"label": "XXXS", "value": "xxxs"},
326
+ {"label": "XXS", "value": "xxs"},
327
+ {"label": "XS", "value": "xs"},
328
+ {"label": "Sm", "value": "sm"},
329
+ {"label": "Md", "value": "md"},
330
+ {"label": "Lg", "value": "lg"},
331
+ {"label": "XL", "value": "xl"},
332
+ {"label": "XXL", "value": "xxl"},
333
+ {"label": "XXXL", "value": "xxxl"}
334
+ ]' size="md" variant="outlined"></ui-dropdown>
335
+ <ui-dropdown id="inpDensity" label="Density" value="standard" options='[
336
+ {"label": "Cozy", "value": "cozy"}, {"label": "Compact", "value": "compact"}, {"label": "Standard", "value": "standard"}
337
+ ]' size="md" variant="outlined"></ui-dropdown>
338
+ </div>
339
+ <ui-dropdown id="inpStatus" label="Presence State" value="none" options='[
340
+ {"label": "None", "value": "none"}, {"label": "Online Master", "value": "online"}, {"label": "Offline Ghost", "value": "offline"},
341
+ {"label": "Typing Logic", "value": "typing"}, {"label": "Away Mode", "value": "away"}
342
+ ]' size="md" variant="outlined"></ui-dropdown>
343
+ <ui-checkbox id="inpShowTypeIcon" label="Show Type Icon (Hash/Mail/etc.)" checked size="md"></ui-checkbox>
344
+ <ui-dropdown id="inpColor" label="Color Core" value="primary" options='[
345
+ {"label": "Electric Violet", "value": "primary"}, {"label": "Neon Success", "value": "success"}, {"label": "Deep Danger", "value": "danger"},
346
+ {"label": "Royal Info", "value": "info"}, {"label": "Solar Warning", "value": "warning"}
347
+ ]' size="md" variant="outlined"></ui-dropdown>
348
+ <ui-input id="inpBadge" label="Overlay Badge" value="" size="md" variant="outlined" placeholder="e.g. New"></ui-input>
349
+ <ui-dropdown id="inpTransform" label="Text Engine" value="none" options='[
350
+ {"label": "No Transform", "value": "none"}, {"label": "Pascal Case", "value": "pascal"}, {"label": "Force Upper", "value": "uppercase"},
351
+ {"label": "Lower Master", "value": "lowercase"}, {"label": "Capitalize All", "value": "capitalize"}
352
+ ]' size="md" variant="outlined"></ui-dropdown>
353
+ <ui-checkbox id="inpFullWidth" label="Sovereign Width (100%)" size="md"></ui-checkbox>
354
+ </div>
355
+ </div>
356
+
357
+ <!-- Group Card: Features -->
358
+ <div class="setting-card">
359
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
360
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #fdf2f8; display: flex; align-items: center; justify-content: center;"><ui-icon name="zap" size="16px" color="danger"></ui-icon></div>
361
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #be185d; font-weight: 700;">Operational Logic</h4>
362
+ </div>
363
+ <ui-checkbox id="inpFloating" label="Floating Title" size="md"></ui-checkbox>
364
+ <ui-checkbox id="inpAlwaysFloated" label="Always Floated" size="md"></ui-checkbox>
365
+ <ui-checkbox id="inpVoice" label="Voice Node" size="md"></ui-checkbox>
366
+ <ui-checkbox id="inpClear" label="Quick Flush" size="md"></ui-checkbox>
367
+ <ui-checkbox id="inpReveal" label="Safe Reveal" size="md"></ui-checkbox>
368
+ <ui-checkbox id="inpStrength" label="Security Meter" size="md"></ui-checkbox>
369
+ <ui-checkbox id="inpCopy" label="Clone Master (Copy)" size="md"></ui-checkbox>
370
+ <ui-checkbox id="inpShake" label="Seismic Error (Shake)" size="md"></ui-checkbox>
371
+ <ui-checkbox id="inpRtl" label="Middle East Layout (RTL)" size="md"></ui-checkbox>
372
+ </div>
373
+ </div>
374
+
375
+ <!-- Group Card: Multi-line Hub -->
376
+ <div class="setting-card">
377
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
378
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #f0fdf4; display: flex; align-items: center; justify-content: center;"><ui-icon name="align-left" size="16px" color="success"></ui-icon></div>
379
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #166534; font-weight: 700;">Multi-line Hub</h4>
380
+ </div>
381
+ <div style="display: flex; flex-direction: column; gap: 16px;">
382
+ <ui-checkbox id="inpMultiline" label="Enable Multi-line" size="md"></ui-checkbox>
383
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
384
+ <ui-input id="inpRows" label="Init Rows" value="3" type="number" size="md" variant="outlined"></ui-input>
385
+ <ui-input id="inpMaxRows" label="Max Limit" value="10" type="number" size="md" variant="outlined"></ui-input>
386
+ </div>
387
+ <ui-checkbox id="inpAutoResize" label="Sentient Growth (Auto-resize)" size="md"></ui-checkbox>
388
+ </div>
389
+ </div>
390
+
391
+ <!-- Group Card: Adornments -->
392
+ <div class="setting-card">
393
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
394
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #f0f9ff; display: flex; align-items: center; justify-content: center;"><ui-icon name="plus-circle" size="16px" color="info"></ui-icon></div>
395
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #0369a1; font-weight: 700;">Adornments</h4>
396
+ </div>
397
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
398
+ <ui-input id="inpPrefixIcon" label="Hero Icon" value="user" size="md" variant="outlined"></ui-input>
399
+ <ui-input id="inpSuffixIcon" label="Action Icon" value="" size="md" variant="outlined"></ui-input>
400
+ </div>
401
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
402
+ <ui-input id="inpPrefixText" label="Prefix Text" value="" size="md" variant="outlined"></ui-input>
403
+ <ui-input id="inpSuffixText" label="Suffix Text" value="" size="md" variant="outlined"></ui-input>
404
+ </div>
405
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
406
+ <ui-dropdown id="inpPrefixColor" label="Prefix Color" value="none" options='[
407
+ {"label": "None", "value": "none"}, {"label": "Primary", "value": "primary"}, {"label": "Success", "value": "success"},
408
+ {"label": "Danger", "value": "danger"}, {"label": "Warning", "value": "warning"}, {"label": "Info", "value": "info"}
409
+ ]' size="md" variant="outlined"></ui-dropdown>
410
+ <ui-dropdown id="inpSuffixColor" label="Suffix Color" value="none" options='[
411
+ {"label": "None", "value": "none"}, {"label": "Primary", "value": "primary"}, {"label": "Success", "value": "success"},
412
+ {"label": "Danger", "value": "danger"}, {"label": "Warning", "value": "warning"}, {"label": "Info", "value": "info"}
413
+ ]' size="md" variant="outlined"></ui-dropdown>
414
+ </div>
415
+ <ui-input id="inpShortcut" label="Global Shortcut" value="Cmd + K" size="md" variant="outlined"></ui-input>
416
+ <ui-input id="inpTooltip" label="Knowledge Tip (Tooltip)" value="" size="md" variant="outlined"></ui-input>
417
+ </div>
418
+ </div>
419
+
420
+ <!-- Group Card: Constraints -->
421
+ <div class="setting-card">
422
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 20px;">
423
+ <div style="width: 32px; height: 32px; border-radius: 8px; background: #fff7ed; display: flex; align-items: center; justify-content: center;"><ui-icon name="lock" size="16px" color="warning"></ui-icon></div>
424
+ <h4 style="margin: 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.1em; color: #9a3412; font-weight: 700;">Limiter & Constraints</h4>
425
+ </div>
426
+ <div style="display: flex; flex-direction: column; gap: 16px;">
427
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;">
428
+ <ui-input id="inpMaxLength" label="Max Chars" value="" type="number" size="md" variant="outlined"></ui-input>
429
+ <ui-checkbox id="inpCounter" label="Show Counter" style="margin-top: 24px;"></ui-checkbox>
430
+ </div>
431
+ <ui-input id="inpPattern" label="Regex Pattern" value="" size="md" variant="outlined" placeholder="e.g. [A-Z]*"></ui-input>
432
+ </div>
433
+ </div>
434
+ </div>
435
+ </div>
436
+
437
+ <!-- Main: Canvas & Action Hub -->
438
+ <div class="playground-main" style="flex-grow: 1; display: flex; flex-direction: column; background: rgba(255,255,255,0.4);">
439
+ <!-- Canvas Toolbar -->
440
+ <div style="padding: 20px 32px; border-bottom: 1px solid rgba(0,0,0,0.05); display: flex; justify-content: space-between; align-items: center; background: rgba(255,255,255,0.9);">
441
+ <div style="display: flex; gap: 12px; align-items: center;">
442
+ <div style="display: flex; padding: 4px; background: #f1f5f9; border-radius: 8px; gap: 4px; align-items: center;">
443
+ <ui-button id="btnCanvasBgWhite" title="Light Cloud" style="--ui-button-bg: #fff; width: 28px; height: 28px; min-width: 28px; padding: 0; border-radius: 6px; border: 1px solid rgba(0,0,0,0.05);"></ui-button>
444
+ <ui-button id="btnCanvasBgDark" title="Deep Slate" style="--ui-button-bg: #0f172a; width: 28px; height: 28px; min-width: 28px; padding: 0; border-radius: 6px; border: none;"></ui-button>
445
+ <ui-button id="btnCanvasBgGrid" title="Blueprint Grid" icon="grid" variant="outlined" color="secondary" style="width: 28px; height: 28px; min-width: 28px; padding: 0; border-radius: 6px; --ui-button-icon-size: 14px;"></ui-button>
446
+ </div>
447
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; color: #94a3b8; font-weight: 700; margin-left: 12px;">Visual Laboratory</span>
448
+ </div>
449
+ <div style="display: flex; gap: 8px;">
450
+ <div style="padding: 6px 12px; background: #e0f2fe; color: #0369a1; border-radius: 100px; font-size: 10px; font-weight: 700;">VERSION 2.0.4 - ZENITH</div>
451
+ </div>
452
+ </div>
453
+
454
+ <!-- The Master Canvas -->
455
+ <div id="playgroundCanvas" style="flex-grow: 1; display: flex; align-items: center; justify-content: center; position: relative; transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); background: #fff; overflow: hidden;">
456
+ <div id="inpInteractivePreviewContent" style="width: 100%; max-width: 480px; filter: drop-shadow(0 30px 60px rgba(0,0,0,0.1)); transform: scale(1.1); transition: all 0.6s cubic-bezier(0.16, 1, 0.3, 1);"></div>
457
+ </div>
458
+
459
+ <!-- Action Hub: Markup & Instrumentation -->
460
+ <div style="height: 320px; border-top: 1px solid rgba(0,0,0,0.05); display: grid; grid-template-columns: 1fr 1fr; background: #fff;">
461
+ <div style="padding: 24px; border-right: 1px solid rgba(0,0,0,0.05); display: flex; flex-direction: column;">
462
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">
463
+ <h5 style="margin: 0; font-size: 11px; color: #64748b; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em;">⚡ Implementation Blueprint</h5>
464
+ <ui-button id="btnCopyMarkup" label="Grab Markup" size="xxs" variant="outlined" color="primary" icon="copy"></ui-button>
465
+ </div>
466
+ <div style="flex-grow: 1; background: #0f172a; border-radius: 16px; padding: 20px; box-shadow: inset 0 4px 15px rgba(0,0,0,0.3); position: relative; overflow: auto;">
467
+ <ui-code-preview id="markupDisplay" language="html" code="&lt;ui-input&gt;&lt;/ui-input&gt;"></ui-code-preview>
468
+ </div>
469
+ </div>
470
+ <div style="padding: 24px; display: flex; flex-direction: column;">
471
+ <h5 style="margin: 0 0 16px 0; font-size: 11px; color: #64748b; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em;">📜 Atmospheric Telemetry</h5>
472
+ <div id="playgroundLog" style="flex-grow: 1; background: #f8fafc; border: 1px solid #eef2f6; border-radius: 16px; padding: 16px; font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #475569; overflow-y: auto; display: flex; flex-direction: column; gap: 8px;">
473
+ <div style="text-align: center; color: #cbd5e1; margin-top: 30px;">Instrumenting component events...</div>
474
+ </div>
475
+ </div>
476
+ </div>
477
+
478
+ <!-- Validation Strategy -->
479
+ <div class="master-card" style="background: white; padding: 28px; border-radius: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05); grid-column: 1 / -1;">
480
+ <h4 style="margin-top:0; color: #f59e0b;">🛡️ Validation Strategy</h4>
481
+ <p style="font-size: 14px; opacity: 0.7; margin-bottom: 24px;">Control when validation occurs: real-time or deferred after interaction.</p>
482
+ <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 48px;">
483
+ <ui-input
484
+ label="Real-time Validation (onInput)"
485
+ type="email"
486
+ required="true"
487
+ validation-trigger="onInput"
488
+ placeholder="Validates as you type..."
489
+ helper-text="Triggered on Input"
490
+ ></ui-input>
491
+ <ui-input
492
+ label="Deferred Validation (onBlur)"
493
+ type="email"
494
+ required="true"
495
+ validation-trigger="onBlur"
496
+ placeholder="Validates when you leave..."
497
+ helper-text="Triggered on Blur"
498
+ ></ui-input>
499
+ </div>
500
+ </div>
501
+ </div>
502
+ </div>
503
+ </div>
504
+ `;
505
+
506
+ const setCanvasBg = function (bg) {
507
+ const canvas = document.getElementById('playgroundCanvas');
508
+ if (!canvas) return;
509
+ if (bg === 'white') canvas.style.background = '#fff';
510
+ else if (bg === 'grid') canvas.style.background = 'radial-gradient(#e5e7eb 1px, transparent 1px) 0 0 / 20px 20px, #fff';
511
+ else canvas.style.background = bg;
512
+ };
513
+
514
+ const copyMarkup = function () {
515
+ const code = document.getElementById('markupDisplay')?.textContent;
516
+ if (code) {
517
+ navigator.clipboard.writeText(code);
518
+ logAction('CODE COPIED', 'Markup added to clipboard');
519
+ }
520
+ };
521
+
522
+ setTimeout(() => {
523
+ document.getElementById('btnCanvasBgWhite')?.addEventListener('click', () => setCanvasBg('white'));
524
+ document.getElementById('btnCanvasBgDark')?.addEventListener('click', () => setCanvasBg('#0f172a'));
525
+ document.getElementById('btnCanvasBgGrid')?.addEventListener('click', () => setCanvasBg('grid'));
526
+ document.getElementById('btnCopyMarkup')?.addEventListener('click', copyMarkup);
527
+
528
+ const allControls = [
529
+ 'inpType',
530
+ 'inpVariant',
531
+ 'inpColor',
532
+ 'inpSize',
533
+ 'inpStatus',
534
+ 'inpTransform',
535
+ 'inpDensity',
536
+ 'inpShowTypeIcon',
537
+ 'inpFloating',
538
+ 'inpAlwaysFloated',
539
+ 'inpClear',
540
+ 'inpVoice',
541
+ 'inpDirty',
542
+ 'inpGradient',
543
+ 'inpSheen',
544
+ 'inpProgress',
545
+ 'inpReveal',
546
+ 'inpStrength',
547
+ 'inpCopy',
548
+ 'inpShake',
549
+ 'inpRtl',
550
+ 'inpLabel',
551
+ 'inpPlaceholder',
552
+ 'inpValue',
553
+ 'inpHelperText',
554
+ 'inpErrorText',
555
+ 'inpBadge',
556
+ 'inpPrefixIcon',
557
+ 'inpSuffixIcon',
558
+ 'inpPrefixColor',
559
+ 'inpSuffixColor',
560
+ 'inpPrefixText',
561
+ 'inpSuffixText',
562
+ 'inpShortcut',
563
+ 'inpTooltip',
564
+ 'inpValidation',
565
+ 'inpRequired',
566
+ 'inpDisabled',
567
+ 'inpReadonly',
568
+ 'inpAutofocus',
569
+ 'inpFullWidth',
570
+ 'inpMultiline',
571
+ 'inpRows',
572
+ 'inpMaxRows',
573
+ 'inpAutoResize',
574
+ 'inpMaxLength',
575
+ 'inpCounter',
576
+ 'inpPattern',
577
+ ];
578
+
579
+ allControls.forEach(id => {
580
+ const el = document.getElementById(id);
581
+ if (!el) return;
582
+
583
+ // Listen to all possible interaction events
584
+ ['valueChange', 'checkboxChange', 'inputChange', 'numberChange', 'picklistChange'].forEach(evt => {
585
+ el.addEventListener(evt, () => updateInteractiveInput());
586
+ });
587
+ });
588
+
589
+ updateInteractiveInput();
590
+ }, 200);
591
+ }
592
+
593
+ const updateInteractiveInput = function () {
594
+ const getVal = id => document.getElementById(id)?.value || '';
595
+ const getChecked = id => !!document.getElementById(id)?.checked;
596
+
597
+ const type = getVal('inpType');
598
+ const label = getVal('inpLabel');
599
+ const placeholder = getVal('inpPlaceholder');
600
+ const value = getVal('inpValue');
601
+ const helperText = getVal('inpHelperText');
602
+ const variant = getVal('inpVariant');
603
+ const size = getVal('inpSize');
604
+ const density = getVal('inpDensity');
605
+ const color = getVal('inpColor');
606
+ const showTypeIcon = document.getElementById('inpShowTypeIcon')?.checked;
607
+ const badge = getVal('inpBadge');
608
+ const transform = getVal('inpTransform');
609
+ const validation = getVal('inpValidation');
610
+ const errorText = getVal('inpErrorText');
611
+
612
+ const prefixIcon = getVal('inpPrefixIcon');
613
+ const suffixIcon = getVal('inpSuffixIcon');
614
+ const prefixColor = getVal('inpPrefixColor');
615
+ const suffixColor = getVal('inpSuffixColor');
616
+ const prefixText = getVal('inpPrefixText');
617
+ const suffixText = getVal('inpSuffixText');
618
+ const shortcut = getVal('inpShortcut');
619
+ const tooltip = getVal('inpTooltip');
620
+
621
+ const floating = getChecked('inpFloating');
622
+ const alwaysFloated = getChecked('inpAlwaysFloated');
623
+ const clearable = getChecked('inpClear');
624
+ const voice = getChecked('inpVoice');
625
+ const dirty = getChecked('inpDirty');
626
+ const gradient = getChecked('inpGradient');
627
+ const sheen = getChecked('inpSheen');
628
+ const progress = getChecked('inpProgress');
629
+ const reveal = getChecked('inpReveal');
630
+ const strength = getChecked('inpStrength');
631
+ const copy = getChecked('inpCopy');
632
+ const shake = getChecked('inpShake');
633
+ const rtl = getChecked('inpRtl');
634
+ const fullWidth = getChecked('inpFullWidth');
635
+
636
+ const required = getChecked('inpRequired');
637
+ const disabled = getChecked('inpDisabled');
638
+ const readonly = getChecked('inpReadonly');
639
+ const autofocus = getChecked('inpAutofocus');
640
+
641
+ const multiline = getChecked('inpMultiline');
642
+ const rows = parseInt(getVal('inpRows')) || 3;
643
+ const maxRows = parseInt(getVal('inpMaxRows')) || 10;
644
+ const autoResize = getChecked('inpAutoResize');
645
+
646
+ const maxLength = parseInt(getVal('inpMaxLength')) || undefined;
647
+ const counter = getChecked('inpCounter');
648
+ const pattern = getVal('inpPattern');
649
+
650
+ const preview = document.getElementById('inpInteractivePreviewContent');
651
+ if (!preview) return;
652
+
653
+ preview.innerHTML = '';
654
+ const component = document.createElement('ui-input');
655
+
656
+ // Core Props
657
+ component.type = type;
658
+ component.label = label;
659
+ component.placeholder = placeholder;
660
+ component.value = value;
661
+ component.helperText = helperText;
662
+ component.variant = variant;
663
+ component.size = size;
664
+ component.density = density;
665
+ component.color = color;
666
+ component.showTypeIcon = showTypeIcon;
667
+ component.badge = badge;
668
+ component.textTransform = transform;
669
+ component.validationState = validation;
670
+ component.errorText = errorText;
671
+
672
+ // Affixes & Decorations
673
+ if (prefixIcon) component.prefixIcon = prefixIcon;
674
+ if (suffixIcon) component.suffixIcon = suffixIcon;
675
+ if (prefixColor && prefixColor !== 'none') component.prefixColor = prefixColor;
676
+ if (suffixColor && suffixColor !== 'none') component.suffixColor = suffixColor;
677
+ if (prefixText) component.prefixText = prefixText;
678
+ if (suffixText) component.suffixText = suffixText;
679
+ if (shortcut) component.shortcutHint = shortcut;
680
+ if (tooltip) component.tooltip = tooltip;
681
+
682
+ // Boolean Logic
683
+ component.floatingLabel = floating;
684
+ component.alwaysFloated = alwaysFloated;
685
+ component.showClear = clearable;
686
+ component.voiceEnabled = voice;
687
+ component.dirtyTracking = dirty;
688
+ component.gradientBorder = gradient;
689
+ component.backdropSheen = sheen;
690
+ component.showProgressCircle = progress;
691
+ component.revealOnHold = reveal;
692
+ component.showPasswordStrength = strength;
693
+ component.showCopy = copy;
694
+ component.shakeOnError = shake;
695
+ component.rtl = rtl;
696
+ component.fullWidth = fullWidth;
697
+
698
+ // States
699
+ component.required = required;
700
+ component.disabled = disabled;
701
+ component.readonly = readonly;
702
+ component.autofocus = autofocus;
703
+
704
+ // Multi-line
705
+ component.multiline = multiline;
706
+ component.rows = rows;
707
+ component.maxRows = maxRows;
708
+ component.autoResize = autoResize;
709
+
710
+ // Constraints
711
+ if (maxLength) component.maxLength = maxLength;
712
+ component.showCounter = counter;
713
+ if (pattern) component.pattern = pattern;
714
+
715
+ if (type === 'otp' || type === 'pin') component.otpLength = 6;
716
+
717
+ // Add listeners for Action Log
718
+ ['inputChange', 'search', 'focus', 'blur', 'clear', 'copy'].forEach(evt => {
719
+ component.addEventListener(evt, e => logAction(evt, e.detail));
720
+ });
721
+
722
+ preview.appendChild(component);
723
+
724
+ // Update Markup Display
725
+ const markup = `<ui-input
726
+ type="${type}"
727
+ label="${label}"
728
+ variant="${variant}"
729
+ color="${color}"
730
+ size="${size}"
731
+ density="${density}"
732
+ ${value ? `value="${value}"` : ''}
733
+ ${placeholder ? `placeholder="${placeholder}"` : ''}
734
+ ${helperText ? `helper-text="${helperText}"` : ''}
735
+ ${prefixIcon ? `prefix-icon="${prefixIcon}"` : ''}
736
+ ${suffixIcon ? `suffix-icon="${suffixIcon}"` : ''}
737
+ ${prefixColor && prefixColor !== 'none' ? `prefix-color="${prefixColor}"` : ''}
738
+ ${suffixColor && suffixColor !== 'none' ? `suffix-color="${suffixColor}"` : ''}
739
+ ${prefixText ? `prefix-text="${prefixText}"` : ''}
740
+ ${suffixText ? `suffix-text="${suffixText}"` : ''}
741
+ ${shortcut ? `shortcut-hint="${shortcut}"` : ''}
742
+ ${floating ? 'floating-label' : ''}
743
+ ${fullWidth ? 'full-width' : ''}
744
+ ${multiline ? `multiline rows="${rows}"` : ''}
745
+ ${disabled ? 'disabled' : ''}
746
+ ${required ? 'required' : ''}
747
+ ${gradient ? 'gradient-border' : ''}
748
+ ${sheen ? 'backdrop-sheen' : ''}
749
+ ${rtl ? 'rtl' : ''}
750
+ ${validation !== 'none' ? `validation-state="${validation}"` : ''}
751
+ ${errorText && validation === 'error' ? `error-text="${errorText}"` : ''}
752
+ ></ui-input>`;
753
+
754
+ const markupEl = document.getElementById('markupDisplay');
755
+ if (markupEl) {
756
+ markupEl.htmlCode = markup.trim();
757
+ }
758
+ };
759
+
760
+ window.copyMarkup = function () {
761
+ const code = document.getElementById('markupDisplay')?.textContent;
762
+ if (code) {
763
+ navigator.clipboard.writeText(code);
764
+ logAction('CODE COPIED', 'Markup added to clipboard');
765
+ }
766
+ };
767
+
768
+ const logAction = function (type, detail) {
769
+ const log = document.getElementById('playgroundLog');
770
+ if (!log) return;
771
+ const entry = document.createElement('div');
772
+ entry.style.padding = '4px 8px';
773
+ entry.style.borderRadius = '4px';
774
+ entry.style.background = '#fff';
775
+ entry.style.border = '1px solid #eef2f6';
776
+ entry.innerHTML = `<span style="color: #10b981; font-weight: 700;">${type.toUpperCase()}</span>: <span style="color: #1e293b;">${JSON.stringify(detail) || 'N/A'}</span> <span style="float: right; opacity: 0.5;">${new Date().toLocaleTimeString()}</span>`;
777
+ log.appendChild(entry);
778
+ if (log.children.length > 20) log.removeChild(log.firstChild);
779
+ };
780
+
781
+ window.setCanvasBg = function (bg) {
782
+ const canvas = document.getElementById('playgroundCanvas');
783
+ if (!canvas) return;
784
+ if (bg === 'white') canvas.style.background = '#fff';
785
+ else if (bg === 'grid') canvas.style.background = 'radial-gradient(#e5e7eb 1px, transparent 1px) 0 0 / 20px 20px, #fff';
786
+ else canvas.style.background = bg;
787
+ };
788
+
789
+ function showInputVariants() {
790
+ const container = document.getElementById('inputDemoContainer');
791
+ container.innerHTML = `
792
+ <div class="demo-block">
793
+ <h3>Input Variants & Automatic Icons</h3>
794
+ <p style="margin-bottom: 24px; opacity: 0.8;">Variants for different design systems and automatic context-aware icons.</p>
795
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;">
796
+ <ui-input label="Outlined (Default)" variant="outlined" placeholder="Outlined helper text"></ui-input>
797
+ <ui-input label="Filled" variant="filled" placeholder="Filled helper text"></ui-input>
798
+ <ui-input label="Underlined" variant="underlined" placeholder="Underlined helper text"></ui-input>
799
+ <ui-input label="Soft" variant="outline" placeholder="Soft helper text"></ui-input>
800
+ <ui-input label="Glass (Elite)" variant="glass" placeholder="Glassmorphism effects" prefix-icon="layers"></ui-input>
801
+ <ui-input label="Raised (Elite)" variant="raised" placeholder="Neomorphic depth" prefix-icon="trending-up"></ui-input>
802
+ <ui-input label="Borderless (Elite)" variant="borderless" placeholder="Minimalist approach" prefix-icon="minus"></ui-input>
803
+ <ui-input label="Plain (New)" variant="plain" placeholder="Zero-clutter variant"></ui-input>
804
+ <ui-input label="Floating Label" floating-label variant="outlined"></ui-input>
805
+ <ui-input label="Success Theme" color="success" value="Valid input" variant="outline" prefix-icon="check-circle"></ui-input>
806
+ <ui-input label="Warning Theme" color="warning" value="Warning state" variant="outline" prefix-icon="alert-triangle"></ui-input>
807
+ <ui-input label="Danger Theme" color="danger" value="Error state" variant="outline" prefix-icon="x-circle"></ui-input>
808
+ <ui-input label="Email Type (Auto Icon)" type="email"></ui-input>
809
+ <ui-input label="Tel Type (Auto Icon)" type="tel"></ui-input>
810
+ <ui-input label="Date Type (Auto Icon)" type="date"></ui-input>
811
+ <ui-input label="Floating + Prefix" floating-label variant="outlined" prefix-icon="mail" placeholder="user@email.com"></ui-input>
812
+ <ui-input label="Floating + Suffix" floating-label variant="outlined" suffix-icon="search"></ui-input>
813
+ <ui-input label="Floating + Both" floating-label variant="outlined" prefix-icon="lock" suffix-icon="eye" type="password"></ui-input>
814
+ </div>
815
+
816
+ <h3 style="margin-top: 48px;">Smart Masking & Placeholders</h3>
817
+ <p style="margin-bottom: 24px; opacity: 0.8;">Automatic formatting and hinted placeholders for structured data.</p>
818
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;">
819
+ <ui-input label="Phone Number" mask="phone"></ui-input>
820
+ <ui-input label="Credit Card" mask="credit-card"></ui-input>
821
+ <ui-input label="Currency (USD)" mask="currency"></ui-input>
822
+ <ui-input label="Date Mask" mask="date"></ui-input>
823
+ <ui-input label="SSN" mask="ssn"></ui-input>
824
+ </div>
825
+ </div>
826
+ `;
827
+ }
828
+
829
+ function showInputIcons() {
830
+ const container = document.getElementById('inputDemoContainer');
831
+ container.innerHTML = `
832
+ <div class="demo-block">
833
+ <h3>Icons & Adornments</h3>
834
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px;">
835
+ <ui-input label="Prefix Icon" prefix-icon="mail" placeholder="Email"></ui-input>
836
+ <ui-input label="Suffix Icon" suffix-icon="search" placeholder="Search..."></ui-input>
837
+
838
+ <ui-input label="Custom Prefix Slot" placeholder="Using SVG inside slot">
839
+ <div slot="prefix-icon" style="color: #8b5cf6; display: flex; align-items: center; padding-right: 8px;">
840
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/></svg>
841
+ </div>
842
+ </ui-input>
843
+
844
+ <ui-input type="number" label="Number without default Icon" prefix-icon="none" value="45"></ui-input>
845
+
846
+ <ui-input label="Prefix Text" prefix-text="https://" placeholder="domain.com"></ui-input>
847
+ <ui-input label="Suffix Text" suffix-text=".com" placeholder="mywebsite"></ui-input>
848
+ <ui-input label="Password" type="password" prefix-icon="lock" show-password-toggle placeholder="Password"></ui-input>
849
+ <ui-input label="Clearable" show-clear placeholder="Type to see clear button" value="Clear me"></ui-input>
850
+ <ui-input label="Search Event" type="search" placeholder="Type & hit Enter..." id="demoSearchInput"></ui-input>
851
+ </div>
852
+ </div>
853
+ `;
854
+
855
+ setTimeout(() => {
856
+ const searchInp = document.getElementById('demoSearchInput');
857
+ if (searchInp) {
858
+ searchInp.addEventListener('search', e => {
859
+ alert('Search triggered for: ' + e.detail);
860
+ });
861
+ }
862
+ }, 100);
863
+ }
864
+
865
+ function showInputValidation() {
866
+ const container = document.getElementById('inputDemoContainer');
867
+ container.innerHTML = `
868
+ <div class="demo-block">
869
+ <h3>Dynamic Validation</h3>
870
+ <p style="margin-bottom: 24px; opacity: 0.8;">Trigger validation states, messages, and shake animations programmatically.</p>
871
+
872
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 32px;">
873
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
874
+ <h4>Live Email Validation</h4>
875
+ <ui-input
876
+ id="dynamicEmailInput"
877
+ label="Email Address"
878
+ placeholder="type something..."
879
+ prefix-icon="mail"
880
+ ></ui-input>
881
+ <p style="font-size: 12px; color: #64748b; margin-top: 12px;">State updates as you type (minimum 5 chars + @).</p>
882
+ </div>
883
+
884
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
885
+ <h4>Manual Trigger Controls</h4>
886
+ <ui-input
887
+ id="manualValInput"
888
+ label="Test Field"
889
+ value="Control me"
890
+ ></ui-input>
891
+ <div style="display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap;">
892
+ <ui-button id="btnSetValError" label="Set Error" variant="danger" size="md"></ui-button>
893
+ <ui-button id="btnSetValWarning" label="Set Warning" variant="warning" size="md"></ui-button>
894
+ <ui-button id="btnSetValInfo" label="Set Info" variant="info" size="md"></ui-button>
895
+ <ui-button id="btnSetValSuccess" label="Set Success" variant="success" size="md"></ui-button>
896
+ <ui-button id="btnTriggerShake" label="Shake" variant="secondary" size="md" icon="vibrate"></ui-button>
897
+ <ui-button id="btnResetVal" label="Reset" variant="primary" size="md"></ui-button>
898
+ </div>
899
+ </div>
900
+ </div>
901
+ </div>
902
+ `;
903
+
904
+ const setValState = state => {
905
+ const el = document.getElementById('manualValInput');
906
+ if (!el) return;
907
+ el.validationState = state;
908
+ if (state === 'error') el.errorText = 'An error occurred!';
909
+ if (state === 'warning') el.warningText = 'Please review this field.';
910
+ if (state === 'info') el.infoText = 'This field is required for verification.';
911
+ if (state === 'success') el.successText = 'Saved successfully!';
912
+ };
913
+
914
+ const triggerShake = () => {
915
+ const el = document.getElementById('manualValInput');
916
+ if (!el) return;
917
+ el.shake = true;
918
+ setTimeout(() => (el.shake = false), 500);
919
+ };
920
+
921
+ // 1. Hook into the dynamic email input
922
+ const emailInp = document.getElementById('dynamicEmailInput');
923
+ if (emailInp) {
924
+ emailInp.addEventListener('inputChange', e => {
925
+ const val = e.detail;
926
+ if (!val) {
927
+ emailInp.validationState = 'none';
928
+ } else if (val.length < 5 || !val.includes('@')) {
929
+ emailInp.validationState = 'error';
930
+ emailInp.errorText = 'Invalid email format';
931
+ } else {
932
+ emailInp.validationState = 'success';
933
+ emailInp.successText = 'Email looks good!';
934
+ }
935
+ });
936
+ }
937
+
938
+ // 2. Setup manual controls
939
+ setTimeout(() => {
940
+ document.getElementById('btnSetValError')?.addEventListener('click', () => setValState('error'));
941
+ document.getElementById('btnSetValWarning')?.addEventListener('click', () => setValState('warning'));
942
+ document.getElementById('btnSetValInfo')?.addEventListener('click', () => setValState('info'));
943
+ document.getElementById('btnSetValSuccess')?.addEventListener('click', () => setValState('success'));
944
+ document.getElementById('btnTriggerShake')?.addEventListener('click', triggerShake);
945
+ document.getElementById('btnResetVal')?.addEventListener('click', () => setValState('none'));
946
+ }, 100);
947
+ }
948
+
949
+ function showInputRange() {
950
+ const container = document.getElementById('inputDemoContainer');
951
+ container.innerHTML = `
952
+ <div class="demo-block">
953
+ <h3>Range Sliders</h3>
954
+ <p style="margin-bottom: 24px; opacity: 0.8;">The standard input component now supports premium range slider styling with dynamic track filling.</p>
955
+
956
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 32px;">
957
+ <div class="demo-card-inner" style="padding: 20px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
958
+ <h4>Default Outlined</h4>
959
+ <ui-input type="range" label="Volume Control" min="0" max="100" value="65"></ui-input>
960
+ <pre style="background: #f8fafc; padding: 12px; border-radius: 8px; font-size: 11px; margin-top: 16px;"><code>&lt;ui-input type="range" label="..."/&gt;</code></pre>
961
+ </div>
962
+
963
+ <div class="demo-card-inner" style="padding: 20px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
964
+ <h4>Soft Variant (Green Theme)</h4>
965
+ <ui-input type="range" label="Brightness" variant="outline" min="0" max="100" value="40" prefix-icon="sun"></ui-input>
966
+ <pre style="background: #f8fafc; padding: 12px; border-radius: 8px; font-size: 11px; margin-top: 16px;"><code>&lt;ui-input type="range" variant="outline"/&gt;</code></pre>
967
+ </div>
968
+
969
+ <div class="demo-card-inner" style="padding: 20px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
970
+ <h4>Large Sizing</h4>
971
+ <ui-input type="range" label="Opacity" size="xl" min="0" max="1" step="0.01" value="0.85"></ui-input>
972
+ </div>
973
+
974
+ <div class="demo-card-inner" style="padding: 20px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
975
+ <h4>Validation & Disabled</h4>
976
+ <div style="display: flex; flex-direction: column; gap: 20px;">
977
+ <ui-input type="range" label="Required Level" validation-state="error" error-text="Level too low" value="10"></ui-input>
978
+ <ui-input type="range" label="Locked Setting" disabled value="50"></ui-input>
979
+ </div>
980
+ </div>
981
+ </div>
982
+ </div>
983
+ `;
984
+ }
985
+
986
+ function showColorPicker() {
987
+ const container = document.getElementById('inputDemoContainer');
988
+ container.innerHTML = `
989
+ <div class="demo-block">
990
+ <h3>Premium Color Picker</h3>
991
+ <p style="margin-bottom: 24px; opacity: 0.8;">The color input features a live swatch preview and supports direct hex value editing.</p>
992
+
993
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 32px;">
994
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
995
+ <h4>Theme Color</h4>
996
+ <ui-input type="color" label="Primary Color" value="#3DCD58"></ui-input>
997
+ <p style="font-size: 12px; color: #64748b; margin-top: 12px;">Click the swatch to open picker or type directly. Invalid hex codes trigger an error state automatically.</p>
998
+ </div>
999
+
1000
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1001
+ <h4>Variants & Sizes</h4>
1002
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1003
+ <ui-input type="color" label="Background" variant="outline" value="#f1f5f9"></ui-input>
1004
+ <ui-input type="color" label="Accent" size="md" variant="underlined" value="#8b5cf6"></ui-input>
1005
+ </div>
1006
+ </div>
1007
+ </div>
1008
+ </div>
1009
+ `;
1010
+ }
1011
+
1012
+ function showFileUpload() {
1013
+ const container = document.getElementById('inputDemoContainer');
1014
+ container.innerHTML = `
1015
+ <div class="demo-block">
1016
+ <h3>Styled File Upload</h3>
1017
+ <p style="margin-bottom: 24px; opacity: 0.8;">Premium file upload experience with a custom 'Browse' button and selected filename display.</p>
1018
+
1019
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 32px;">
1020
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1021
+ <h4>Single File</h4>
1022
+ <ui-input type="file" label="Profile Picture" placeholder="Choose an image..." accept="image/*"></ui-input>
1023
+ </div>
1024
+
1025
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1026
+ <h4>Multiple Files</h4>
1027
+ <ui-input type="file" label="Documents" multiple="true" placeholder="Upload multiple files..."></ui-input>
1028
+ </div>
1029
+
1030
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1031
+ <h4>With Icons & Variants</h4>
1032
+ <ui-input type="file" label="Project Files" variant="filled" prefix-icon="file-text"></ui-input>
1033
+ </div>
1034
+ </div>
1035
+ </div>
1036
+ `;
1037
+ }
1038
+
1039
+ function showInputMasking() {
1040
+ const container = document.getElementById('inputDemoContainer');
1041
+ if (!container) return;
1042
+
1043
+ container.innerHTML = `
1044
+ <div class="demo-block animate-in" style="animation: slideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1);">
1045
+ <div style="margin-bottom: 32px; text-align: center;">
1046
+ <h2 style="font-size: 2rem; margin-bottom: 8px; background: linear-gradient(135deg, #f43f5e, #fb7185); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">🎭 Input Masking</h2>
1047
+ <p style="opacity: 0.7; font-size: 1.1rem;">Powerful automatic formatting for specialized data types with predictive placeholders.</p>
1048
+ </div>
1049
+
1050
+ <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px;">
1051
+ <!-- Phone Mask -->
1052
+ <div style="background: white; padding: 32px; border-radius: 24px; border: 1px solid #fee2e2; box-shadow: 0 10px 25px -5px rgba(244, 63, 94, 0.05); display: flex; flex-direction: column;">
1053
+ <div style="display: flex; align-items: center; gap: 16px; margin-bottom: 24px;">
1054
+ <div style="width: 44px; height: 44px; background: #fff1f2; border-radius: 14px; color: #f43f5e; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 2px 4px rgba(244, 63, 94, 0.1);">
1055
+ <ui-icon library="lucide" name="phone" style="font-size: 20px;"></ui-icon>
1056
+ </div>
1057
+ <h4 style="margin: 0; font-size: 1.25rem; font-weight: 700; color: #1e293b;">Contact Information</h4>
1058
+ </div>
1059
+ <ui-input label="Cellular Phone" mask="phone" prefix-icon="phone" helper-text="Auto-formatting as you type" full-width="true"></ui-input>
1060
+ </div>
1061
+
1062
+ <!-- Credit Card Mask -->
1063
+ <div style="background: white; padding: 32px; border-radius: 24px; border: 1px solid #fee2e2; box-shadow: 0 10px 25px -5px rgba(244, 63, 94, 0.05); display: flex; flex-direction: column;">
1064
+ <div style="display: flex; align-items: center; gap: 16px; margin-bottom: 24px;">
1065
+ <div style="width: 44px; height: 44px; background: #fff1f2; border-radius: 14px; color: #f43f5e; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 2px 4px rgba(244, 63, 94, 0.1);">
1066
+ <ui-icon library="lucide" name="credit-card" style="font-size: 20px;"></ui-icon>
1067
+ </div>
1068
+ <h4 style="margin: 0; font-size: 1.25rem; font-weight: 700; color: #1e293b;">Secure Payment</h4>
1069
+ </div>
1070
+ <ui-input label="Card Number" mask="credit-card" prefix-icon="credit-card" placeholder="XXXX XXXX XXXX XXXX" full-width="true"></ui-input>
1071
+ </div>
1072
+
1073
+ <!-- Currency Mask -->
1074
+ <div style="background: white; padding: 32px; border-radius: 24px; border: 1px solid #fee2e2; box-shadow: 0 10px 25px -5px rgba(244, 63, 94, 0.05); display: flex; flex-direction: column;">
1075
+ <div style="display: flex; align-items: center; gap: 16px; margin-bottom: 24px;">
1076
+ <div style="width: 44px; height: 44px; background: #fff1f2; border-radius: 14px; color: #f43f5e; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 2px 4px rgba(244, 63, 94, 0.1);">
1077
+ <ui-icon library="lucide" name="banknote" style="font-size: 20px;"></ui-icon>
1078
+ </div>
1079
+ <h4 style="margin: 0; font-size: 1.25rem; font-weight: 700; color: #1e293b;">Transactional</h4>
1080
+ </div>
1081
+ <ui-input label="Funding Amount" mask="currency" prefix-icon="dollar-sign" full-width="true"></ui-input>
1082
+ </div>
1083
+
1084
+ <!-- Date & Security -->
1085
+ <div style="background: white; padding: 32px; border-radius: 24px; border: 1px solid #fee2e2; box-shadow: 0 10px 25px -5px rgba(244, 63, 94, 0.05); display: flex; flex-direction: column; grid-column: span 2;">
1086
+ <div style="display: flex; align-items: center; gap: 16px; margin-bottom: 24px;">
1087
+ <div style="width: 44px; height: 44px; background: #fff1f2; border-radius: 14px; color: #f43f5e; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 2px 4px rgba(244, 63, 94, 0.1);">
1088
+ <ui-icon library="lucide" name="shield-check" style="font-size: 20px;"></ui-icon>
1089
+ </div>
1090
+ <h4 style="margin: 0; font-size: 1.25rem; font-weight: 700; color: #1e293b;">Security & Date Modules</h4>
1091
+ </div>
1092
+ <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px;">
1093
+ <ui-input label="Birth Date" mask="date" prefix-icon="calendar" full-width="true"></ui-input>
1094
+ <ui-input type="password" value="secret123" label="Protection Code (Hold eye)" reveal-on-hold="true" show-password-strength="true" full-width="true"></ui-input>
1095
+ </div>
1096
+ </div>
1097
+
1098
+ <!-- SSN & Status -->
1099
+ <div style="background: white; padding: 32px; border-radius: 24px; border: 1px solid #fee2e2; box-shadow: 0 10px 25px -5px rgba(244, 63, 94, 0.05); display: flex; flex-direction: column;">
1100
+ <div style="display: flex; align-items: center; gap: 16px; margin-bottom: 16px;">
1101
+ <ui-icon library="lucide" name="fingerprint" style="color: #f43f5e;"></ui-icon>
1102
+ <h4 style="margin: 0; font-size: 1.1rem; color: #1e293b;">Compliance</h4>
1103
+ </div>
1104
+ <ui-input label="Social Security" mask="ssn" type="password" show-password-toggle="true" full-width="true"></ui-input>
1105
+ <div style="margin-top: 16px;">
1106
+ <ui-input label="Tracking State" value="Unsaved changes" badge aria-label="Unsaved indicator" color="warning" full-width="true"></ui-input>
1107
+ </div>
1108
+ </div>
1109
+ </div>
1110
+
1111
+ <div style="margin-top: 64px; padding: 48px; background: linear-gradient(135deg, #fff1f2 0%, #fff 100%); border-radius: 32px; border: 1px solid #fee2e2; box-shadow: 0 20px 50px -20px rgba(0,0,0,0.05);">
1112
+ <h4 style="margin-top: 0; margin-bottom: 32px; color: #e11d48; display: flex; align-items: center; gap: 12px; font-size: 1.5rem;">
1113
+ <ui-icon library="lucide" name="zap" style="color: #f59e0b;"></ui-icon>
1114
+ Advanced Architectural Logic
1115
+ </h4>
1116
+ <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px;">
1117
+ <div>
1118
+ <strong style="color: #1e293b; display: block; margin-bottom: 12px; font-size: 1.1rem;">Dynamic Hinting</strong>
1119
+ <span style="font-size: 15px; color: #64748b; line-height: 1.6;">The component automatically injects context-aware placeholders (e.g. XXX-XXX-XXXX) if no custom label is provided.</span>
1120
+ </div>
1121
+ <div>
1122
+ <strong style="color: #1e293b; display: block; margin-bottom: 12px; font-size: 1.1rem;">Self-Healing Separators</strong>
1123
+ <span style="font-size: 15px; color: #64748b; line-height: 1.6;">Intelligent separator injection ("-", "/", "$") happens in real-time without disrupting the user's cursor position.</span>
1124
+ </div>
1125
+ <div>
1126
+ <strong style="color: #1e293b; display: block; margin-bottom: 12px; font-size: 1.1rem;">Financial Precision</strong>
1127
+ <span style="font-size: 15px; color: #64748b; line-height: 1.6;">Currency masking utilizes the browser's native <code>Intl</code> API for bulletproof localization and grouping.</span>
1128
+ </div>
1129
+ </div>
1130
+ </div>
1131
+ </div>
1132
+ `;
1133
+ }
1134
+
1135
+ function showCurrencyDemo() {
1136
+ const container = document.getElementById('inputDemoContainer');
1137
+ container.innerHTML = `
1138
+ <div class="demo-block">
1139
+ <h3>💵 Premium Currency Type</h3>
1140
+ <p style="margin-bottom: 24px; opacity: 0.8;">The <code>type="currency"</code> property automatically handles prefix symbols and financial masking.</p>
1141
+
1142
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 32px;">
1143
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1144
+ <h4>US Dollar (Default)</h4>
1145
+ <ui-input type="currency" label="Unit Price" value="4500"></ui-input>
1146
+ </div>
1147
+
1148
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1149
+ <h4>Euro (EUR)</h4>
1150
+ <ui-input type="currency" currency="EUR" label="EU Subtotal" variant="outlined" value="12550"></ui-input>
1151
+ </div>
1152
+
1153
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1154
+ <h4>British Pound (GBP)</h4>
1155
+ <ui-input type="currency" currency="GBP" label="London Branch" variant="outline" value="380.50"></ui-input>
1156
+ </div>
1157
+
1158
+ <div class="demo-card-inner" style="padding: 24px; border: 1px solid #eef2f6; border-radius: 12px; background: #fff;">
1159
+ <h4>Japanese Yen (JPY)</h4>
1160
+ <ui-input type="currency" currency="JPY" label="Tokyo Branch" variant="filled" value="1500000"></ui-input>
1161
+ </div>
1162
+ </div>
1163
+ </div>
1164
+ `;
1165
+ }
1166
+
1167
+ function showMasterTierFeatures() {
1168
+ const container = document.getElementById('inputDemoContainer');
1169
+ container.innerHTML = `
1170
+ <div class="demo-block master-tier-block" style="background: linear-gradient(135deg, #fafafa 0%, #f1f5f9 100%); padding: 32px; border-radius: 24px;">
1171
+ <h2 style="font-size: 2.2rem; margin-bottom: 8px; background: linear-gradient(135deg, #8b5cf6, #ec4899); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">🌟 Master Tier Showcase</h2>
1172
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 40px;">Experience the next generation of cinematic input controls with advanced functional modules.</p>
1173
+
1174
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 32px;">
1175
+ <!-- OTP & Security -->
1176
+ <div class="master-card" style="background: white; padding: 28px; border-radius: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);">
1177
+ <h4 style="margin-top:0; color: #8b5cf6;">🔐 Security Modules</h4>
1178
+ <p style="font-size: 14px; opacity: 0.7; margin-bottom: 24px;">Segmented verification fields with elite focus transitions.</p>
1179
+ <ui-input type="otp" otp-length="6" label="Verification Code" helper-text="Check your email for the 6-digit code"></ui-input>
1180
+ <div style="margin-top: 24px;">
1181
+ <ui-input type="pin" otp-length="4" label="Security PIN" helper-text="Enter your 4-digit PIN"></ui-input>
1182
+ </div>
1183
+ </div>
1184
+
1185
+ <!-- Voice & Status -->
1186
+ <div class="master-card" style="background: white; padding: 28px; border-radius: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);">
1187
+ <h4 style="margin-top:0; color: #10b981;">🎙️ Smart Context</h4>
1188
+ <p style="font-size: 14px; opacity: 0.7; margin-bottom: 24px;">Integrated AI dictation and real-time connectivity status.</p>
1189
+ <ui-input
1190
+ id="voiceMessengerInput"
1191
+ label="Voice Messenger"
1192
+ voice-enabled="true"
1193
+ placeholder="Click the mic to speak..."
1194
+ ></ui-input>
1195
+ <p style="font-size: 11px; color: #94a3b8; margin-top: 8px; margin-bottom: 0;">
1196
+ 🎙️ Click the mic → icon switches to <b>mic-off</b> while listening. Click again to stop.
1197
+ </p>
1198
+ <div style="margin-top: 24px;">
1199
+ <ui-input
1200
+ label="Dynamic State"
1201
+ status-indicator="typing"
1202
+ placeholder="Someone is typing..."
1203
+ ></ui-input>
1204
+ </div>
1205
+ </div>
1206
+
1207
+ <!-- Atmospheric Shaders -->
1208
+ <div class="master-card" style="background: white; padding: 28px; border-radius: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);">
1209
+ <h4 style="margin-top:0; color: #ec4899;">🌈 Atmospheric Shaders</h4>
1210
+ <p style="font-size: 14px; opacity: 0.7; margin-bottom: 24px;">Advanced CSS shaders for elite design systems.</p>
1211
+ <ui-input
1212
+ label="Gradient Horizon"
1213
+ gradient-border="true"
1214
+ variant="outlined"
1215
+ placeholder="Animated focus boundary"
1216
+ ></ui-input>
1217
+ <div style="margin-top: 24px;">
1218
+ <ui-input
1219
+ label="Deep Sheen"
1220
+ backdrop-sheen="true"
1221
+ variant="glass"
1222
+ placeholder="Interactive depth field"
1223
+ ></ui-input>
1224
+ </div>
1225
+ </div>
1226
+
1227
+ <!-- Feedback & Velocity -->
1228
+ <div class="master-card" style="background: white; padding: 28px; border-radius: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);">
1229
+ <h4 style="margin-top:0; color: #f59e0b;">⚡ Velocity Feedback</h4>
1230
+ <p style="font-size: 14px; opacity: 0.7; margin-bottom: 24px;">Low-friction progress indicators and unsaved change detection.</p>
1231
+ <ui-input
1232
+ label="Content Velocity"
1233
+ show-progress-circle="true"
1234
+ max-length="50"
1235
+ value="Tracking character density..."
1236
+ helper-text="Watch the SVG ring expand"
1237
+ ></ui-input>
1238
+ <div style="margin-top: 24px;">
1239
+ <ui-input
1240
+ label="Dirty Tracking"
1241
+ dirty-tracking="true"
1242
+ default-value="Original State"
1243
+ value="Modified state"
1244
+ helper-text="Amber dot indicates unsaved changes"
1245
+ ></ui-input>
1246
+ </div>
1247
+ </div>
1248
+
1249
+ <!-- AI Integration (Elite) -->
1250
+ <div class="master-card" style="background: white; padding: 28px; border-radius: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05); grid-column: 1 / -1;">
1251
+ <h4 style="margin-top:0; color: #10b981;">🧠 AI Integration (Ghost Text)</h4>
1252
+ <p style="font-size: 14px; opacity: 0.7; margin-bottom: 24px;">Experience 'God-tier' predictive typing with cinematic ghost text overlays.</p>
1253
+ <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 48px;">
1254
+ <ui-input
1255
+ label="AI Smart Search"
1256
+ value="how to "
1257
+ ghost-text="how to build elite stencil components"
1258
+ prefix-icon="sparkles"
1259
+ variant="glass"
1260
+ helper-text="Ghost text shows AI completion"
1261
+ ></ui-input>
1262
+ <ui-input
1263
+ label="Auto-complete"
1264
+ value="praveen@stenc"
1265
+ ghost-text="praveen@stencil-elite.ai"
1266
+ prefix-icon="mail"
1267
+ helper-text="Tab to accept (visual only in demo)"
1268
+ ></ui-input>
1269
+ </div>
1270
+ </div>
1271
+ </div>
1272
+ </div>
1273
+ `;
1274
+ }
1275
+
1276
+ function showInputPairDemo() {
1277
+ const container = document.getElementById('inputDemoContainer');
1278
+ container.innerHTML = `
1279
+ <div class="demo-block animate-in">
1280
+ <h3>👥 Paired Inputs (Range/Group)</h3>
1281
+ <p style="margin-bottom: 24px; opacity: 0.8;">Seamlessly connect multiple inputs for range selection or multi-part data entry.</p>
1282
+
1283
+ <div style="display: flex; flex-direction: column; gap: 40px;">
1284
+ <div class="demo-card-inner" style="padding: 24px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; max-width: 600px;">
1285
+ <h4 style="margin-top:0;">Price Filter (Connected)</h4>
1286
+ <ui-input-pair
1287
+ type="currency"
1288
+ label-left="Minimum"
1289
+ label-right="Maximum"
1290
+ placeholder-left="0.00"
1291
+ placeholder-right="No limit"
1292
+ gap="0"
1293
+ size="md"
1294
+ ></ui-input-pair>
1295
+ </div>
1296
+
1297
+ <div class="demo-card-inner" style="padding: 24px; background: #fff; border-radius: 12px; border: 1px solid #e2e8f0; max-width: 600px;">
1298
+ <h4 style="margin-top:0;">Profile Info (With Gap)</h4>
1299
+ <ui-input-pair
1300
+ label-left="First Name"
1301
+ label-right="Last Name"
1302
+ placeholder-left="John"
1303
+ placeholder-right="Doe"
1304
+ gap="12px"
1305
+ size="md"
1306
+ ></ui-input-pair>
1307
+ </div>
1308
+
1309
+ <div class="demo-card-inner" style="padding: 24px; background: #fff; border-radius: 12px; border: 1px solid #e2e8f0; max-width: 600px;">
1310
+ <h4 style="margin-top:0;">Shared Type (Number Range)</h4>
1311
+ <ui-input-pair
1312
+ type="number"
1313
+ label-left="From"
1314
+ label-right="To"
1315
+ gap="0"
1316
+ variant="outline"
1317
+ size="md"
1318
+ ></ui-input-pair>
1319
+ </div>
1320
+ </div>
1321
+ </div>
1322
+ `;
1323
+ }
1324
+
1325
+ function showColoredDecorators() {
1326
+ const container = document.getElementById('inputDemoContainer');
1327
+ container.innerHTML = `
1328
+ <div class="demo-block">
1329
+ <div style="text-align: center; margin-bottom: 40px;">
1330
+ <h2 style="font-size: 2.2rem; background: linear-gradient(135deg, #10b981, #059669); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">🎨 Chromatic Block Decorators</h2>
1331
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Professional 'Boxed' decorators with semantic coloring for high-impact context.</p>
1332
+ </div>
1333
+
1334
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 32px;">
1335
+ <!-- Security Case -->
1336
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1337
+ <h4 style="margin-top: 0; color: #10b981; margin-bottom: 20px;">🔒 Security & Verification</h4>
1338
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1339
+ <ui-input label="SECURE DOMAIN" prefix-text="https://" prefix-color="success" placeholder="example.com"></ui-input>
1340
+ <ui-input label="ACCESS TOKEN" prefix-icon="shield-check" prefix-color="primary" placeholder="Enter secure token..."></ui-input>
1341
+ </div>
1342
+ </div>
1343
+
1344
+ <!-- Action Case -->
1345
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1346
+ <h4 style="margin-top: 0; color: #10b981; margin-bottom: 20px;">🚀 Contextual Actions</h4>
1347
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1348
+ <ui-input label="GLOBAL SEARCH" suffix-icon="search" suffix-color="primary" suffix-clickable="true" placeholder="Search entire cloud..."></ui-input>
1349
+ <ui-input label="SYSTEM CLEAR" suffix-text="RESET" suffix-color="danger" suffix-clickable="true" placeholder="Warning: Irreversible action"></ui-input>
1350
+ </div>
1351
+ </div>
1352
+
1353
+ <!-- Utility Case -->
1354
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1355
+ <h4 style="margin-top: 0; color: #64748b; margin-bottom: 20px;">🛠️ Engineering Utility</h4>
1356
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1357
+ <ui-input label="SUBDOMAIN" suffix-text=".dream.io" suffix-color="secondary" placeholder="myspace"></ui-input>
1358
+ <ui-input label="CURRENCY" prefix-text="USD" prefix-color="info" type="number" placeholder="0.00"></ui-input>
1359
+ </div>
1360
+ </div>
1361
+
1362
+ <!-- Status Case -->
1363
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1364
+ <h4 style="margin-top: 0; color: #f59e0b; margin-bottom: 20px;">⚠️ Notification Cues</h4>
1365
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1366
+ <ui-input label="CRITICAL FIELD" suffix-icon="alert-triangle" suffix-color="danger" placeholder="Required for compliance"></ui-input>
1367
+ <ui-input label="HINTED FIELD" prefix-icon="info" prefix-color="warning" placeholder="Check tooltip first"></ui-input>
1368
+ </div>
1369
+ </div>
1370
+ </div>
1371
+ </div>
1372
+ `;
1373
+ }
1374
+
1375
+ function showColorVariants() {
1376
+ const container = document.getElementById('inputDemoContainer');
1377
+ const colors = [
1378
+ { id: 'primary', label: 'Primary (Blue)', icon: 'zap' },
1379
+ { id: 'success', label: 'Success (Green)', icon: 'zap' },
1380
+ { id: 'danger', label: 'Danger (Red)', icon: 'alert-circle' },
1381
+ { id: 'warning', label: 'Warning (Amber)', icon: 'alert-triangle' },
1382
+ { id: 'info', label: 'Info (Sky)', icon: 'info' },
1383
+ { id: 'error', label: 'Error (Status)', icon: 'x-circle' },
1384
+ { id: '#8b5cf6', label: 'Custom Hex (#8B5CF6)', icon: 'sparkles' },
1385
+ { id: 'secondary', label: 'Secondary (Slate)', icon: 'box' },
1386
+ ];
1387
+
1388
+ container.innerHTML = `
1389
+ <div class="demo-block">
1390
+ <div style="text-align: center; margin-bottom: 40px;">
1391
+ <h2 style="font-size: 2.2rem; background: linear-gradient(135deg, #8b5cf6, #ec4899); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">🌈 Semantic Color Palette</h2>
1392
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Professional color contexts for semantic data entry.</p>
1393
+ </div>
1394
+
1395
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 32px;">
1396
+ ${colors
1397
+ .map(
1398
+ color => `
1399
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1400
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 20px;">
1401
+ <div style="width: 10px; height: 10px; background: var(--ui-input-focus); border-radius: 50%; opacity: 0.8; box-shadow: 0 0 10px var(--ui-input-focus);"></div>
1402
+ <h4 style="margin: 0; color: #1e293b;">${color.label}</h4>
1403
+ </div>
1404
+
1405
+ <div style="display: flex; flex-direction: column; gap: 20px;">
1406
+ <ui-input color="${color.id}" variant="outlined" label="Outlined ${color.id}" prefix-icon="${color.icon}" placeholder="Focus to see focus ring color"></ui-input>
1407
+ <ui-input color="${color.id}" variant="outline" label="Soft ${color.id}" value="Soft background variant" prefix-icon="${color.icon}"></ui-input>
1408
+ </div>
1409
+ </div>
1410
+ `,
1411
+ )
1412
+ .join('')}
1413
+ </div>
1414
+ </div>
1415
+ `;
1416
+ }
1417
+
1418
+ const colors = ['primary', 'success', 'danger', 'warning', 'info', 'secondary'];
1419
+ const sizes = [
1420
+ { id: 'xxxs', label: 'XXX Small (24px)', icon: 'zap' },
1421
+ { id: 'xxs', label: 'XX Small (28px)', icon: 'bolt' },
1422
+ { id: 'xs', label: 'Extra Small (32px)', icon: 'target' },
1423
+ { id: 'sm', label: 'Small (36px)', icon: 'zap' },
1424
+ { id: 'md', label: 'Medium (42px)', icon: 'box' },
1425
+ { id: 'lg', label: 'Large (48px)', icon: 'layout' },
1426
+ { id: 'xl', label: 'Extra Large (56px)', icon: 'maximize-2' },
1427
+ { id: 'xxl', label: 'XX Large (64px)', icon: 'star' },
1428
+ { id: 'xxxl', label: 'XXX Large (80px)', icon: 'crown' },
1429
+ ];
1430
+
1431
+ function showInputSizes() {
1432
+ const container = document.getElementById('inputDemoContainer');
1433
+
1434
+ container.innerHTML = `
1435
+ <div class="demo-block">
1436
+ <div style="text-align: center; margin-bottom: 40px;">
1437
+ <h2 style="font-size: 2.2rem; background: linear-gradient(135deg, #475569, #1e293b); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">📐 Geometric & Chromatic Spectrum</h2>
1438
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Experience the precise geometric management across all theme variants.</p>
1439
+ </div>
1440
+
1441
+ <div style="margin-bottom: 48px;">
1442
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 20px; border-left: 4px solid #f59e0b; padding-left: 16px;">
1443
+ <ui-icon library="lucide" name="sliders" style="opacity: 0.6; height: 18px;"></ui-icon>
1444
+ <h4 style="margin: 0; color: #1e293b; font-size: 1.1rem;">Custom Granular Widths</h4>
1445
+ </div>
1446
+ <div style="display: flex; gap: 24px; background: rgba(248, 250, 252, 0.5); padding: 24px; border-radius: 16px; border: 1px solid #e2e8f0; flex-wrap: wrap;">
1447
+ <div>
1448
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; display: block; margin-bottom: 8px;">Tiny (Width: 60px)</span>
1449
+ <ui-input type="number" size="md" width="60px" placeholder="Age"></ui-input>
1450
+ </div>
1451
+ <div>
1452
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; display: block; margin-bottom: 8px;">Small (Width: 100px)</span>
1453
+ <ui-input size="md" width="100px" placeholder="CVV"></ui-input>
1454
+ </div>
1455
+ <div>
1456
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; display: block; margin-bottom: 8px;">Medium (Width: 250px)</span>
1457
+ <ui-input width="250px" placeholder="First Name" size="md"></ui-input>
1458
+ </div>
1459
+ <div style="flex-grow: 1;">
1460
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; display: block; margin-bottom: 8px;">Full Width (flex-grow: 1)</span>
1461
+ <ui-input full-width="true" placeholder="Street Address" size="md"></ui-input>
1462
+ </div>
1463
+ </div>
1464
+ </div>
1465
+
1466
+ <div style="display: flex; flex-direction: column; gap: 48px;">
1467
+ ${sizes
1468
+ .map(
1469
+ size => `
1470
+ <div>
1471
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 20px; border-left: 4px solid #10b981; padding-left: 16px;">
1472
+ <ui-icon library="lucide" name="${size.icon}" style="opacity: 0.6; height: 18px;"></ui-icon>
1473
+ <h4 style="margin: 0; color: #1e293b; font-size: 1.1rem;">${size.label}</h4>
1474
+ </div>
1475
+
1476
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 24px; background: rgba(248, 250, 252, 0.5); padding: 24px; border-radius: 16px; border: 1px solid #e2e8f0;">
1477
+ ${colors
1478
+ .map(
1479
+ color => `
1480
+ <div>
1481
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; display: block; margin-bottom: 8px;">${color}</span>
1482
+ <ui-input size="${size.id}" color="${color}" placeholder="${color} state" prefix-icon="feather"></ui-input>
1483
+ </div>
1484
+ `,
1485
+ )
1486
+ .join('')}
1487
+ </div>
1488
+ </div>
1489
+ `,
1490
+ )
1491
+ .join('')}
1492
+ </div>
1493
+
1494
+ <div style="margin-top: 48px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 16px; padding: 24px;">
1495
+ <h4 style="color: #92400e; display: flex; align-items: center; gap: 8px; margin-top: 0;">
1496
+ <ui-icon library="lucide" name="info" style="height: 16px;"></ui-icon>
1497
+ Managed Height Logic
1498
+ </h4>
1499
+ <p style="font-size: 14px; color: #b45309; margin-bottom: 0;">
1500
+ Each <code>size</code> variant explicitly manages the <code>min-height</code> of the input container (32px, 38px, 42px, 48px, 54px) to ensure horizontal alignment regardless of whether prefix icons or suffix adornments are used.
1501
+ </p>
1502
+ </div>
1503
+ </div>
1504
+ `;
1505
+ }
1506
+
1507
+ function showEnterpriseInputs() {
1508
+ const container = document.getElementById('inputDemoContainer');
1509
+ container.innerHTML = `
1510
+ <div class="demo-block animate-in">
1511
+ <div style="text-align: center; margin-bottom: 40px;">
1512
+ <h2 style="font-size: 2.2rem; color: #1e293b; font-weight: 800; margin-bottom: 8px;">Basic Input Types</h2>
1513
+ <p style="font-size: 1.1rem; opacity: 0.7; margin-bottom: 0;">Standard input types with various configurations</p>
1514
+ </div>
1515
+
1516
+ <div style="background: #f0fdf4; border-radius: 16px; padding: 32px; border: 1px solid #dcfce7; box-shadow: 0 4px 20px rgba(0,0,0,0.03);">
1517
+ <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 48px;">
1518
+ <ui-input label="USERNAME" placeholder="Enter your username" full-width="true" size="md"></ui-input>
1519
+ <ui-input label="EMAIL ADDRESS" placeholder="user@example.com" type="email" full-width="true" size="md"></ui-input>
1520
+ <ui-input label="PASSWORD" placeholder="Enter password" type="password" full-width="true" show-password-toggle="true" size="md"></ui-input>
1521
+
1522
+ <ui-input label="AGE" placeholder="0" type="number" full-width="true" size="md"></ui-input>
1523
+ <ui-input label="SEARCH" placeholder="Search..." type="search" full-width="true" size="md"></ui-input>
1524
+ <ui-input label="BIRTH DATE" type="date" full-width="true" size="md"></ui-input>
1525
+ </div>
1526
+ </div>
1527
+ </div>
1528
+ `;
1529
+ }
1530
+
1531
+ function showCustomBranding() {
1532
+ const container = document.getElementById('inputDemoContainer');
1533
+ container.innerHTML = `
1534
+ <div class="demo-block">
1535
+ <div style="text-align: center; margin-bottom: 40px;">
1536
+ <h2 style="font-size: 2.2rem; background: linear-gradient(135deg, #f43f5e, #8b5cf6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">🎨 Custom & Brand Colors</h2>
1537
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Theme your inputs with any custom Hex color. The component automatically calculates complementary shades for focus rings and soft variants.</p>
1538
+ </div>
1539
+
1540
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 32px;">
1541
+ <div style="background: white; padding: 28px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1542
+ <h4 style="margin-top: 0; color: #ec4899; margin-bottom: 20px;">Pink Branding (#EC4899)</h4>
1543
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1544
+ <ui-input color="#ec4899" label="Brand Identity" prefix-icon="heart" variant="outlined"></ui-input>
1545
+ <ui-input color="#ec4899" label="Subscription" prefix-icon="star" variant="outline" value="Premium Plan"></ui-input>
1546
+ </div>
1547
+ </div>
1548
+
1549
+ <div style="background: white; padding: 28px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1550
+ <h4 style="margin-top: 0; color: #8b5cf6; margin-bottom: 20px;">Purple Branding (#8B5CF6)</h4>
1551
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1552
+ <ui-input color="#8b5cf6" label="Creative Studio" prefix-icon="image" variant="outlined"></ui-input>
1553
+ <ui-input color="#8b5cf6" label="Artist Tag" prefix-icon="user" variant="outline" value="@designer"></ui-input>
1554
+ </div>
1555
+ </div>
1556
+
1557
+ <div style="background: #0f172a; padding: 28px; border-radius: 20px; box-shadow: 0 4px 12px rgba(0,0,0,0.2);">
1558
+ <h4 style="margin-top: 0; color: #38bdf8; margin-bottom: 20px;">Dark Mode Custom (#38BDF8)</h4>
1559
+ <div style="display: flex; flex-direction: column; gap: 24px;">
1560
+ <ui-input color="#38bdf8" class="dark" label="Cyberpunk Shell" prefix-icon="terminal" variant="outlined"></ui-input>
1561
+ <ui-input color="#38bdf8" class="dark" label="System Logs" prefix-icon="cpu" variant="outline" value="Boot processing..."></ui-input>
1562
+ </div>
1563
+ </div>
1564
+ </div>
1565
+ </div>
1566
+ `;
1567
+ }
1568
+
1569
+ function showInputMultilineDemo() {
1570
+ const container = document.getElementById('inputDemoContainer');
1571
+ if (!container) return;
1572
+
1573
+ container.innerHTML = `
1574
+ <div class="demo-block">
1575
+ <div style="text-align: center; margin-bottom: 40px;">
1576
+ <h2 style="font-size: 2.2rem; background: linear-gradient(135deg, #8b5cf6, #ec4899); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">📝 TextArea & Multiline</h2>
1577
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Enterprise-grade textareas with auto-resize and boundary management.</p>
1578
+ </div>
1579
+
1580
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 32px;">
1581
+ <!-- Standard TextArea -->
1582
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1583
+ <h4 style="margin-top: 0; color: #1e293b; margin-bottom: 20px;">Manual Resize (Both Axis)</h4>
1584
+ <ui-input
1585
+ multiline="true"
1586
+ resize="both"
1587
+ rows="4"
1588
+ label="Biography"
1589
+ placeholder="Drag the bottom right corner to resize..."
1590
+ helper-text="Width and height are manually adjustable"
1591
+ full-width="true"
1592
+ ></ui-input>
1593
+ </div>
1594
+
1595
+ <!-- Auto-Resize TextArea -->
1596
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1597
+ <h4 style="margin-top: 0; color: #8b5cf6; margin-bottom: 20px;">Dynamic Auto-Resize</h4>
1598
+ <ui-input
1599
+ multiline="true"
1600
+ auto-resize="true"
1601
+ max-rows="6"
1602
+ label="Live Feedback"
1603
+ placeholder="Keep typing to see me grow..."
1604
+ helper-text="Grows up to 6 rows then scrolls"
1605
+ color="#8b5cf6"
1606
+ full-width="true"
1607
+ ></ui-input>
1608
+ </div>
1609
+
1610
+ <!-- Branded Multiline -->
1611
+ <div style="background: #f8fafc; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0;">
1612
+ <h4 style="margin-top: 0; color: #0d9488; margin-bottom: 20px;">Branded & Constrained</h4>
1613
+ <ui-input
1614
+ multiline="true"
1615
+ rows="3"
1616
+ label="Restricted Input"
1617
+ placeholder="Max 200 characters..."
1618
+ max-length="200"
1619
+ show-counter="true"
1620
+ color="#0d9488"
1621
+ variant="outline"
1622
+ full-width="true"
1623
+ ></ui-input>
1624
+ </div>
1625
+ </div>
1626
+ </div>
1627
+ `;
1628
+ }
1629
+
1630
+ function showZenithFeatures() {
1631
+ const container = document.getElementById('inputDemoContainer');
1632
+ if (!container) return;
1633
+
1634
+ container.innerHTML = `
1635
+ <div class="demo-block">
1636
+ <div style="text-align: center; margin-bottom: 40px;">
1637
+ <h2 style="font-size: 2.22rem; background: linear-gradient(135deg, #7c3aed, #db2777); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">🌌 Zenith Tier Master Features</h2>
1638
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Complex layout mastery with visual separation, density control, and rich suggestions.</p>
1639
+ </div>
1640
+
1641
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 32px;">
1642
+ <!-- Density Showcase -->
1643
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1644
+ <h4 style="margin-top: 0; color: #1e293b; margin-bottom: 20px;">📦 Visual Density & Dividers</h4>
1645
+ <div style="display: flex; flex-direction: column; gap: 20px;">
1646
+ <ui-input density="standard" label="Standard (Default)" prefix-icon="zap" show-dividers="true"></ui-input>
1647
+ <ui-input density="cozy" label="Cozy (Relaxed)" prefix-icon="box" show-dividers="true" color="#10b981"></ui-input>
1648
+ <ui-input density="compact" label="Compact (Dense)" prefix-icon="cpu" show-dividers="true" color="#10b981"></ui-input>
1649
+ </div>
1650
+ </div>
1651
+
1652
+ <!-- Rich Suggestions -->
1653
+ <div style="background: white; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.03);">
1654
+ <h4 style="margin-top: 0; color: #7c3aed; margin-bottom: 20px;">🔍 Rich Autocomplete</h4>
1655
+ <ui-input
1656
+ label="Search Users"
1657
+ placeholder="Type '@' or name..."
1658
+ id="zenithAutocomplete"
1659
+ prefix-icon="user"
1660
+ ></ui-input>
1661
+ <p style="font-size: 12px; color: #94a3b8; margin-top: 12px;">Rich metadata suggestions with avatars/icons and subtitles.</p>
1662
+ </div>
1663
+
1664
+ <!-- Input Stitching/Grouping -->
1665
+ <div style="background: #f8fafc; padding: 24px; border-radius: 20px; border: 1px solid #e2e8f0;">
1666
+ <h4 style="margin-top: 0; color: #db2777; margin-bottom: 20px;">🧩 Group Stitching (Pseudo-Group)</h4>
1667
+ <div style="display: flex; align-items: flex-end;">
1668
+ <ui-input label="Protocol" value="https://" class="group-stuck-right" style="width: 100px; flex-shrink: 0;"></ui-input>
1669
+ <ui-input label="Domain Name" placeholder="example.com" class="group-stuck-middle" style="flex: 1;"></ui-input>
1670
+ <ui-input label="Extension" value=".io" class="group-stuck-left" style="width: 100px; flex-shrink: 0;"></ui-input>
1671
+ </div>
1672
+ <p style="font-size: 11px; color: #94a3b8; margin-top: 16px;">Combined multiple inputs into a single cohesive visual unit.</p>
1673
+ </div>
1674
+ </div>
1675
+ </div>
1676
+ `;
1677
+
1678
+ // Hook up rich suggestions
1679
+ const richInp = document.getElementById('zenithAutocomplete');
1680
+ if (richInp) {
1681
+ richInp.autocompleteSuggestions = [
1682
+ { text: 'Alex Johnson', subtitle: 'Lead Designer', icon: 'palette' },
1683
+ { text: 'Sarah Smith', subtitle: 'System Architect', icon: 'cpu' },
1684
+ { text: 'Robert Dow', subtitle: 'Project Manager', icon: 'briefcase' },
1685
+ { text: 'Emma Wilson', subtitle: 'QA Engineer', icon: 'shield-check' },
1686
+ ];
1687
+ }
1688
+ }
1689
+
1690
+ // ── Addon Click Demo ────────────────────────────────────────────────────────
1691
+ function showAddonClickDemo() {
1692
+ const container = document.getElementById('inputDemoContainer');
1693
+ if (!container) return;
1694
+
1695
+ container.innerHTML = `
1696
+ <div class="demo-block animate-in">
1697
+ <div style="text-align: center; margin-bottom: 40px;">
1698
+ <h2 style="font-size: 2.2rem; background: linear-gradient(135deg, #f43f5e, #f97316); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px;">
1699
+ 🖱️ Prefix &amp; Suffix Click Events
1700
+ </h2>
1701
+ <p style="opacity: 0.7; font-size: 1.1rem; margin-bottom: 0;">Interactive addon blocks that emit <code>prefixClick</code> / <code>suffixClick</code> events. Hover to see the pointer cursor, click to trigger actions.</p>
1702
+ </div>
1703
+
1704
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: 32px;">
1705
+
1706
+ <!-- Search Launch -->
1707
+ <div style="background: white; padding: 28px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 16px rgba(0,0,0,0.04);">
1708
+ <h4 style="margin-top: 0; color: #6366f1; display:flex; align-items:center; gap:8px;">
1709
+ <ui-icon library="lucide" name="search" style="height:18px;"></ui-icon>
1710
+ Clickable Suffix — Search Trigger
1711
+ </h4>
1712
+ <p style="font-size: 13px; color: #64748b; margin-bottom: 20px;">Click the search icon button on the right to launch search. Event log updates below.</p>
1713
+ <ui-input
1714
+ id="clickSuffixSearch"
1715
+ label="Global Search"
1716
+ placeholder="Type something..."
1717
+ suffix-icon="search"
1718
+ suffix-color="primary"
1719
+ suffix-clickable="true"
1720
+ full-width="true"
1721
+ ></ui-input>
1722
+ <div id="searchClickLog" style="margin-top: 16px; min-height: 40px; padding: 12px 16px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; font-size: 13px; color: #475569; font-family: monospace;">
1723
+ <span style="opacity:0.5;">awaiting suffixClick event…</span>
1724
+ </div>
1725
+ </div>
1726
+
1727
+ <!-- Copy to Clipboard -->
1728
+ <div style="background: white; padding: 28px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 16px rgba(0,0,0,0.04);">
1729
+ <h4 style="margin-top: 0; color: #10b981; display:flex; align-items:center; gap:8px;">
1730
+ <ui-icon library="lucide" name="clipboard" style="height:18px;"></ui-icon>
1731
+ Clickable Suffix — Copy to Clipboard
1732
+ </h4>
1733
+ <p style="font-size: 13px; color: #64748b; margin-bottom: 20px;">Click the copy icon to copy the input value. The icon will turn green momentarily on success.</p>
1734
+ <ui-input
1735
+ id="clickSuffixCopy"
1736
+ label="API Key"
1737
+ value="sk-prod-Xf9kL32mNpQv7Rc8"
1738
+ suffix-icon="copy"
1739
+ suffix-color="secondary"
1740
+ suffix-clickable="true"
1741
+ full-width="true"
1742
+ ></ui-input>
1743
+ <div id="copyClickLog" style="margin-top: 16px; min-height: 40px; padding: 12px 16px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; font-size: 13px; color: #475569; font-family: monospace;">
1744
+ <span style="opacity:0.5;">awaiting suffixClick event…</span>
1745
+ </div>
1746
+ </div>
1747
+
1748
+ <!-- QR Scan Launch -->
1749
+ <div style="background: white; padding: 28px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 16px rgba(0,0,0,0.04);">
1750
+ <h4 style="margin-top: 0; color: #f59e0b; display:flex; align-items:center; gap:8px;">
1751
+ <ui-icon library="lucide" name="qr-code" style="height:18px;"></ui-icon>
1752
+ Clickable Prefix — QR Scanner
1753
+ </h4>
1754
+ <p style="font-size: 13px; color: #64748b; margin-bottom: 20px;">Click the QR icon on the left to simulate opening a QR code scanner. Emits <code>prefixClick</code>.</p>
1755
+ <ui-input
1756
+ id="clickPrefixQR"
1757
+ label="Voucher Code"
1758
+ placeholder="Scan or type code…"
1759
+ prefix-icon="qr-code"
1760
+ prefix-color="warning"
1761
+ prefix-clickable="true"
1762
+ full-width="true"
1763
+ ></ui-input>
1764
+ <div id="qrClickLog" style="margin-top: 16px; min-height: 40px; padding: 12px 16px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; font-size: 13px; color: #475569; font-family: monospace;">
1765
+ <span style="opacity:0.5;">awaiting prefixClick event…</span>
1766
+ </div>
1767
+ </div>
1768
+
1769
+ <!-- Dual Addon -->
1770
+ <div style="background: white; padding: 28px; border-radius: 20px; border: 1px solid #e2e8f0; box-shadow: 0 4px 16px rgba(0,0,0,0.04);">
1771
+ <h4 style="margin-top: 0; color: #ef4444; display:flex; align-items:center; gap:8px;">
1772
+ <ui-icon library="lucide" name="zap" style="height:18px;"></ui-icon>
1773
+ Both Prefix &amp; Suffix Clickable
1774
+ </h4>
1775
+ <p style="font-size: 13px; color: #64748b; margin-bottom: 20px;">Both sides are independently clickable. Prefix opens country picker, suffix resets the field.</p>
1776
+ <ui-input
1777
+ id="clickBothInput"
1778
+ label="Phone Number"
1779
+ value="+91 98765 43210"
1780
+ prefix-icon="phone"
1781
+ prefix-color="info"
1782
+ prefix-clickable="true"
1783
+ suffix-icon="x-circle"
1784
+ suffix-color="danger"
1785
+ suffix-clickable="true"
1786
+ full-width="true"
1787
+ ></ui-input>
1788
+ <div id="dualClickLog" style="margin-top: 16px; min-height: 40px; padding: 12px 16px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; font-size: 13px; color: #475569; font-family: monospace;">
1789
+ <span style="opacity:0.5;">awaiting events…</span>
1790
+ </div>
1791
+ </div>
1792
+
1793
+ </div>
1794
+
1795
+ <!-- Event Legend -->
1796
+ <div style="margin-top: 40px; padding: 24px; background: linear-gradient(135deg, #fafafa, #f1f5f9); border-radius: 16px; border: 1px solid #e2e8f0;">
1797
+ <h4 style="margin: 0 0 16px; color: #1e293b; display:flex; align-items:center; gap:8px;">
1798
+ <ui-icon library="lucide" name="code" style="height:16px;"></ui-icon>
1799
+ Event API Reference
1800
+ </h4>
1801
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 24px;">
1802
+ <div style="background: #1e293b; border-radius: 12px; padding: 20px; color: #e2e8f0; font-family: monospace; font-size: 13px; line-height: 1.7;">
1803
+ <div style="color: #94a3b8; margin-bottom: 8px;">// HTML attribute usage</div>
1804
+ <div><span style="color:#f472b6;">prefix-clickable</span>=<span style="color:#86efac;">"true"</span></div>
1805
+ <div><span style="color:#f472b6;">suffix-clickable</span>=<span style="color:#86efac;">"true"</span></div>
1806
+ <br>
1807
+ <div style="color: #94a3b8; margin-bottom: 8px;">// Event listener</div>
1808
+ <div>el.<span style="color:#60a5fa;">addEventListener</span>(<span style="color:#86efac;">"prefixClick"</span>, fn)</div>
1809
+ <div>el.<span style="color:#60a5fa;">addEventListener</span>(<span style="color:#86efac;">"suffixClick"</span>, fn)</div>
1810
+ </div>
1811
+ <div style="background: #1e293b; border-radius: 12px; padding: 20px; color: #e2e8f0; font-family: monospace; font-size: 13px; line-height: 1.7;">
1812
+ <div style="color: #94a3b8; margin-bottom: 8px;">// Angular binding</div>
1813
+ <div>(<span style="color:#f472b6;">prefixClick</span>)=<span style="color:#86efac;">"onPrefix($event)"</span></div>
1814
+ <div>(<span style="color:#f472b6;">suffixClick</span>)=<span style="color:#86efac;">"onSuffix($event)"</span></div>
1815
+ <br>
1816
+ <div style="color: #94a3b8; margin-bottom: 8px;">// Hover cursor</div>
1817
+ <div>Applied via CSS: <span style="color:#f472b6;">cursor: pointer</span></div>
1818
+ <div>Class: <span style="color:#86efac;">.prefix-icon--clickable</span></div>
1819
+ </div>
1820
+ </div>
1821
+ </div>
1822
+ </div>
1823
+ `;
1824
+
1825
+ // ── Wire up events ──────────────────────────────────────────────────────
1826
+ function logEvent(logId, msg, color = '#6366f1') {
1827
+ const log = document.getElementById(logId);
1828
+ if (!log) return;
1829
+ const ts = new Date().toLocaleTimeString();
1830
+ log.innerHTML = `<span style="color:${color}; font-weight:700;">✓ [${ts}]</span> ${msg}`;
1831
+ }
1832
+
1833
+ // 1. Search suffix
1834
+ const searchEl = document.getElementById('clickSuffixSearch');
1835
+ if (searchEl) {
1836
+ searchEl.addEventListener('suffixClick', () => {
1837
+ const val = searchEl.value || '(empty)';
1838
+ logEvent('searchClickLog', `suffixClick fired — launching search for: <b>&quot;${val}&quot;</b>`, '#6366f1');
1839
+ });
1840
+ }
1841
+
1842
+ // 2. Copy to clipboard suffix
1843
+ const copyEl = document.getElementById('clickSuffixCopy');
1844
+ if (copyEl) {
1845
+ copyEl.addEventListener('suffixClick', async () => {
1846
+ const val = copyEl.value || '';
1847
+ try {
1848
+ await navigator.clipboard.writeText(val);
1849
+ logEvent('copyClickLog', `suffixClick fired — copied to clipboard: <b>&quot;${val}&quot;</b>`, '#10b981');
1850
+ // Momentarily change icon
1851
+ copyEl.suffixIcon = 'check';
1852
+ setTimeout(() => {
1853
+ copyEl.suffixIcon = 'copy';
1854
+ }, 1500);
1855
+ } catch {
1856
+ logEvent('copyClickLog', 'suffixClick fired — clipboard access denied', '#ef4444');
1857
+ }
1858
+ });
1859
+ }
1860
+
1861
+ // 3. QR prefix
1862
+ const qrEl = document.getElementById('clickPrefixQR');
1863
+ if (qrEl) {
1864
+ qrEl.addEventListener('prefixClick', () => {
1865
+ logEvent('qrClickLog', 'prefixClick fired — opening QR scanner (simulated)…', '#f59e0b');
1866
+ // Simulate scanner returning a code after 1.5s
1867
+ setTimeout(() => {
1868
+ qrEl.value = 'VOUCHER-XK9-2026';
1869
+ logEvent('qrClickLog', 'prefixClick — scanner returned: <b>VOUCHER-XK9-2026</b> ✅', '#10b981');
1870
+ }, 1500);
1871
+ });
1872
+ }
1873
+
1874
+ // 4. Dual clickable — prefix = country picker, suffix = clear
1875
+ const dualEl = document.getElementById('clickBothInput');
1876
+ if (dualEl) {
1877
+ dualEl.addEventListener('prefixClick', () => {
1878
+ logEvent('dualClickLog', 'prefixClick fired — open country/dial-code picker (simulated)', '#0ea5e9');
1879
+ });
1880
+ dualEl.addEventListener('suffixClick', () => {
1881
+ dualEl.value = '';
1882
+ logEvent('dualClickLog', 'suffixClick fired — field cleared ✕', '#ef4444');
1883
+ });
1884
+ }
1885
+ }
1886
+
1887
+ const updateActiveBtn = id => {
1888
+ Object.keys(demoMap).forEach(btnId => {
1889
+ const btn = document.getElementById(btnId);
1890
+ if (btn) btn.selected = btnId === id;
1891
+ });
1892
+ };
1893
+
1894
+ const demoMap = {
1895
+ btnInputPlayground: showInteractiveInput,
1896
+ btnInputVariants: showInputVariants,
1897
+ btnInputTextArea: showInputMultilineDemo,
1898
+ btnInputIcons: showInputIcons,
1899
+ btnInputValidation: showInputValidation,
1900
+ btnInputRange: showInputRange,
1901
+ btnInputColorPicker: showColorPicker,
1902
+ btnInputMasking: showInputMasking,
1903
+ btnInputFileUpload: showFileUpload,
1904
+ btnInputCurrencies: showCurrencyDemo,
1905
+ btnInputMasterTier: showMasterTierFeatures,
1906
+ btnInputPair: showInputPairDemo,
1907
+ btnInputSizes: showInputSizes,
1908
+ btnInputColors: showColorVariants,
1909
+ btnInputWidths: showInputWidthsDemo,
1910
+ btnInputCustom: showCustomBranding,
1911
+ btnInputBlocks: showColoredDecorators,
1912
+ btnInputAddonClicks: showAddonClickDemo,
1913
+ btnInputZenith: showZenithFeatures,
1914
+ btnInputEnterprise: showEnterpriseInputs,
1915
+ };
1916
+
1917
+ setTimeout(() => {
1918
+ Object.entries(demoMap).forEach(([id, func]) => {
1919
+ const btn = document.getElementById(id);
1920
+ if (btn) {
1921
+ btn.addEventListener('click', () => {
1922
+ updateActiveBtn(id);
1923
+ func();
1924
+ });
1925
+ }
1926
+ });
1927
+
1928
+ // Default view
1929
+ updateActiveBtn('btnInputEnterprise');
1930
+ showEnterpriseInputs();
1931
+ }, 100);
1932
+ }