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,2567 @@
1
+ // Dialog Demo
2
+ export function initDialogDemo() {
3
+ const section = document.getElementById('dialog');
4
+ if (!section) return;
5
+
6
+ section.innerHTML = `
7
+ <p>Modal dialogs with customizable headers, content, and footers.</p>
8
+
9
+ <div class="demo-controls-wrapper">
10
+ <div class="demo-grid-wrapper">
11
+ <ui-button id="btnInteractiveDialog" label="🎮 Playground" size="md" variant="outline"></ui-button>
12
+ <ui-button id="btnBasicDialog" label="Basic" size="md" variant="outline"></ui-button>
13
+ <ui-button id="btnSlotDialog" label="Custom Slots" size="md" variant="outline"></ui-button>
14
+ <ui-button id="btnDialogSizes" label="Sizes" size="md" variant="outline"></ui-button>
15
+ <ui-button id="btnDialogPositions" label="Positions" size="md" variant="outline"></ui-button>
16
+ <ui-button id="btnDialogScroll" label="Scrolling" size="md" variant="outline"></ui-button>
17
+ <ui-button id="btnAdvancedDialogs" label="Advanced" size="md" variant="outline"></ui-button>
18
+ <ui-button id="btnFormDialog" label="Form Dialog" size="md" variant="outline"></ui-button>
19
+ <ui-button id="btnNestedDialogs" label="Nested" size="md" variant="outline"></ui-button>
20
+ <ui-button id="btnPremiumFeatures" label="💎 Premium" size="md" variant="outline"></ui-button>
21
+ <ui-button id="btnApexShowcase" label="🌌 Apex Tier" size="md" variant="outline"></ui-button>
22
+ <ui-button id="btnGodTier" label="🎭 God Tier" size="md" variant="outline"></ui-button>
23
+ <ui-button id="btnSovereignTier" label="⚡ Sovereign" size="md" variant="outline"></ui-button>
24
+ <ui-button id="btnCustomHeaderShowcase" label="💎 Branded Header" size="md" variant="outline"></ui-button>
25
+ <ui-button id="btnMockupDesign" label="📐 Mockup" size="md" variant="outline"></ui-button>
26
+ <ui-button id="btnTermsDialog" label="⚖️ Terms" size="md" variant="outline"></ui-button>
27
+ <ui-button id="btnEliteFeatures" label="🏆 Elite" size="md" variant="outline"></ui-button>
28
+ <ui-button id="btnSecurityLifecycleFeatures" label="🔐 Security" size="md" variant="outline"></ui-button>
29
+ <ui-button id="btnWindowFeatures" label="🪟 Windows" size="md" variant="outline"></ui-button>
30
+ <ui-button id="btnDrawerShowcase" label="📐 Drawers" size="md" variant="outline"></ui-button>
31
+ <ui-button id="btnFullscreenDemo" label="🖥️ Fullscreen" size="md" variant="outline"></ui-button>
32
+ <ui-button id="btnPromiseDemo" label="🤝 Promise API" size="md" variant="outline"></ui-button>
33
+ <ui-button id="btnSlotsAndPartsDemo" label="💎 Slots/Parts" size="md" variant="outline"></ui-button>
34
+ <ui-button id="btnMessageBoxDemo" label="💬 MessageBox" size="md" variant="outline"></ui-button>
35
+ <ui-button id="btnConfirmDemo" label="🗑️ Confirm" size="md" variant="outline"></ui-button>
36
+ <ui-button id="btnPromptDemo" label="✍️ Prompt" size="md" variant="outline"></ui-button>
37
+ <ui-button id="btnMenuShowroom" label="⋮ Menu" size="md" variant="outline"></ui-button>
38
+ <ui-button id="btnTraySystemDemo" label="🗂 Tray" size="md" variant="outline"></ui-button>
39
+ <ui-button id="btnGlassStatusShowroom" label="✨ Glass" size="md" variant="outline"></ui-button>
40
+ <ui-button id="btnEnterpriseLogicShowcase" label="🧠 Logic" size="md" variant="outline"></ui-button>
41
+ <ui-button id="btnParentChildDialogDemo" label="⛓️ Parent/Child" size="md" variant="outline"></ui-button>
42
+ <ui-button id="btnAuthSessionDemo" label="🔐 Auth" size="md" variant="outline"></ui-button>
43
+ </div>
44
+ </div>
45
+
46
+ <div id="dialogDemoContainer" style="margin-top: 20px;"></div>
47
+ `;
48
+
49
+ setTimeout(() => {
50
+ const btnMap = {
51
+ btnInteractiveDialog: window.showInteractiveDialog,
52
+ btnBasicDialog: window.showBasicDialog,
53
+ btnSlotDialog: window.showSlotDialog,
54
+ btnDialogSizes: window.showDialogSizes,
55
+ btnDialogPositions: window.showDialogPositions,
56
+ btnDialogScroll: window.showDialogScroll,
57
+ btnAdvancedDialogs: window.showAdvancedDialogs,
58
+ btnFormDialog: window.showFormDialog,
59
+ btnNestedDialogs: window.showNestedDialogs,
60
+ btnPremiumFeatures: window.showPremiumFeatures,
61
+ btnApexShowcase: window.showApexShowcase,
62
+ btnGodTier: window.showGodTier,
63
+ btnSovereignTier: window.showSovereignTier,
64
+ btnCustomHeaderShowcase: window.showCustomHeaderShowcase,
65
+ btnMockupDesign: window.showMockupDesign,
66
+ btnTermsDialog: window.showTermsDialog,
67
+ btnEliteFeatures: window.showEliteFeatures,
68
+ btnSecurityLifecycleFeatures: window.showSecurityLifecycleFeatures,
69
+ btnWindowFeatures: window.showWindowFeatures,
70
+ btnDrawerShowcase: window.showDrawerShowcase,
71
+ btnFullscreenDemo: window.showFullscreenDemo,
72
+ btnPromiseDemo: window.showPromiseDemo,
73
+ btnSlotsAndPartsDemo: window.showSlotsAndPartsDemo,
74
+ btnMessageBoxDemo: window.showMessageBoxDemo,
75
+ btnConfirmDemo: window.showConfirmDemo,
76
+ btnPromptDemo: window.showPromptDemo,
77
+ btnMenuShowroom: window.showMenuShowroom,
78
+ btnTraySystemDemo: window.showTraySystemDemo,
79
+ btnGlassStatusShowroom: window.showGlassStatusShowroom,
80
+ btnEnterpriseLogicShowcase: window.showEnterpriseLogicShowcase,
81
+ btnParentChildDialogDemo: window.showParentChildDialogDemo,
82
+ btnAuthSessionDemo: window.showAuthSessionDemo,
83
+ };
84
+
85
+ const updateActiveBtn = id => {
86
+ Object.keys(btnMap).forEach(btnId => {
87
+ const btn = document.getElementById(btnId);
88
+ if (btn) btn.selected = btnId === id;
89
+ });
90
+ };
91
+
92
+ Object.entries(btnMap).forEach(([id, func]) => {
93
+ const btn = document.getElementById(id);
94
+ if (btn) {
95
+ btn.addEventListener('click', () => {
96
+ updateActiveBtn(id);
97
+ func?.();
98
+ });
99
+ }
100
+ });
101
+
102
+ // Set default
103
+ updateActiveBtn('btnInteractiveDialog');
104
+ window.showInteractiveDialog();
105
+ }, 100);
106
+
107
+ // Define global functions for the demo
108
+ window.openDialog = id => {
109
+ const d = document.getElementById(id);
110
+ if (d) d.show();
111
+ };
112
+ window.closeDialog = id => {
113
+ const d = document.getElementById(id);
114
+ if (d) d.hide();
115
+ };
116
+
117
+ window.logEvent = function (message) {
118
+ const logContent = document.getElementById('eventLogContent');
119
+ if (logContent) {
120
+ const timestamp = new Date().toLocaleTimeString();
121
+ const entry = document.createElement('div');
122
+ entry.style.color = '#059669';
123
+ entry.textContent = `[${timestamp}] ${message}`;
124
+ if (logContent.querySelector('[style*="color: #9ca3af"]')) {
125
+ logContent.innerHTML = '';
126
+ }
127
+ logContent.insertBefore(entry, logContent.firstChild);
128
+ while (logContent.children.length > 5) {
129
+ logContent.removeChild(logContent.lastChild);
130
+ }
131
+ }
132
+ };
133
+
134
+ window.showBasicDialog = function () {
135
+ const container = document.getElementById('dialogDemoContainer');
136
+ if (!container) return;
137
+ container.innerHTML = `
138
+ <div class="demo-block">
139
+ <h3>Basic Dialog (Showcasing All Major Props)</h3>
140
+ <p style="margin-bottom: 12px; font-size: 14px; color: #6b7280;">
141
+ This demo instance has been upgraded to activate all significant layout, interaction, and styling properties natively supported by the UI Dialog Box.
142
+ </p>
143
+ <ui-button id="btnOpenBasicDialog" size="md" variant="outline" color="primary" label="Open Basic Dialog"></ui-button>
144
+
145
+ <ui-dialog-box
146
+ id="basicDialog"
147
+ icon-library="lucide"
148
+ dialog-title="Advanced Zenith Dialog"
149
+ subtitle="Showcasing Enterprise Dialog Capabilities"
150
+ icon="shield"
151
+ size="lg"
152
+ width="600px"
153
+ show-maximize="true"
154
+ show-minimize="true"
155
+ show-close="true"
156
+ show-menu="true"
157
+ show-header="true"
158
+ show-footer="true"
159
+ variant="default"
160
+ status="success"
161
+ backdrop="blur"
162
+ scroll-behavior="inside"
163
+ resizable="true"
164
+ global-blur="true"
165
+ glass="true"
166
+ ok-text="Acknowledge"
167
+ cancel-text="Dismiss"
168
+ animation="zoom"
169
+ swipe-to-close="true"
170
+ >
171
+ <div style="padding: 16px;">
172
+ <p style="margin-bottom: 10px; line-height: 1.6;">This is the "Basic Dialog" instance, which has been configured to demonstrate the full power of the Zenith API properties:</p>
173
+ <ul style="padding-left: 20px; margin-bottom: 16px; line-height: 1.8;">
174
+ <li><strong>Glass & Blur:</strong> Notice the frosted glass effect and global background blur.</li>
175
+ <li><strong>Window Controls:</strong> Full support for Minimize, Maximize, and Close.</li>
176
+ <li><strong>Resizability:</strong> Drag the bottom-right corner to resize this dialog dynamically.</li>
177
+ <li><strong>Headers & Status:</strong> Integrated icons, subtitles, and specialized status bars.</li>
178
+ <li><strong>Responsive Actions:</strong> Built-in OK and Cancel handlers mapping directly to Zenith's button engine.</li>
179
+ </ul>
180
+ </div>
181
+ </ui-dialog-box>
182
+
183
+ <div id="eventLog" style="margin-top: 24px; padding: 12px; background-color: var(--bg-secondary, #f3f4f6); border-radius: 6px; border: 1px solid var(--border-default, #d1d5db);">
184
+ <h4 style="margin: 0 0 8px; font-size: 14px; color: var(--text-primary, #374151);">Event Log:</h4>
185
+ <div id="eventLogContent" style="font-family: monospace; font-size: 12px; color: var(--text-secondary, #6b7280); max-height: 100px; overflow-y: auto;">
186
+ <div style="color: #9ca3af;">Waiting for events...</div>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ `;
191
+
192
+ setTimeout(() => {
193
+ document.getElementById('btnOpenBasicDialog')?.addEventListener('click', () => window.openDialog('basicDialog'));
194
+
195
+ const dialog = document.getElementById('basicDialog');
196
+ const logContent = document.getElementById('eventLogContent');
197
+
198
+ function logEvent(name, detail) {
199
+ if (!logContent) return;
200
+ const entry = document.createElement('div');
201
+ entry.style.marginBottom = '4px';
202
+ entry.innerHTML = `<strong style="color: var(--color-primary, #10b981)">[${new Date().toLocaleTimeString()}]</strong> ${name}: ${JSON.stringify(detail || {})}`;
203
+ logContent.prepend(entry);
204
+ }
205
+
206
+ if (dialog) {
207
+ dialog.addEventListener('dialogOpen', () => logEvent('dialogOpen'));
208
+ dialog.addEventListener('dialogClose', e => logEvent('dialogClose', e.detail));
209
+ dialog.addEventListener('dialogMaximize', () => logEvent('dialogMaximize'));
210
+ dialog.addEventListener('dialogMinimize', () => logEvent('dialogMinimize'));
211
+ dialog.addEventListener('dialogRestore', () => logEvent('dialogRestore'));
212
+ dialog.addEventListener('dialogResize', e => logEvent('dialogResize', { width: e.detail.width, height: e.detail.height }));
213
+
214
+ // Listen for internal button events if emitted
215
+ dialog.addEventListener('ok', () => logEvent('dialogOkAction', { action: 'acknowledged' }));
216
+ dialog.addEventListener('cancel', () => logEvent('dialogCancelAction', { action: 'dismissed' }));
217
+ }
218
+ }, 100);
219
+ };
220
+
221
+ window.showSlotDialog = function () {
222
+ const container = document.getElementById('dialogDemoContainer');
223
+ if (!container) return;
224
+ container.innerHTML = `
225
+ <div class="demo-block">
226
+ <h3>Fully Customizable Slots</h3>
227
+ <ui-button id="btnOpenCustomSlotsDialog" size="md" variant="outline" color="success" label="Open Custom Slots Dialog"></ui-button>
228
+
229
+ <ui-dialog-box id="dSlots" width="500px" icon-library="lucide" ok-text="Save" cancel-text="Cancel">
230
+ <div slot="header" style="display:flex; align-items:center; gap:8px;">
231
+ <ui-icon name="palette" library="lucide" size="24px" style="color: #10b981;"></ui-icon>
232
+ <div>
233
+ <h3 style="margin:0; color:#10b981; font-size:18px;">Custom Header</h3>
234
+ <span style="font-size:12px; color:#666;">With subtitle</span>
235
+ </div>
236
+ </div>
237
+ <ui-button id="btnCustomHeaderAction" slot="header-actions" title="Star" variant="ghost" color="secondary" size="md">
238
+ <ui-icon name="star" library="lucide" size="16px"></ui-icon>
239
+ </ui-button>
240
+ <div style="padding:16px; background:#f0fdf4; border:1px dashed #10b981; border-radius:6px; margin-top:8px;">
241
+ <h4 style="margin-top:0;">Slot Content Area</h4>
242
+ <p>This content is injected via the <b>default slot</b>. It is fully customizable.</p>
243
+ </div>
244
+ </ui-dialog-box>
245
+ </div>
246
+ `;
247
+ setTimeout(() => {
248
+ document.getElementById('btnOpenCustomSlotsDialog')?.addEventListener('click', () => window.openDialog('dSlots'));
249
+ document.getElementById('btnCustomHeaderAction')?.addEventListener('click', () => alert('Custom Header Action!'));
250
+ }, 100);
251
+ };
252
+
253
+ window.showDialogSizes = function () {
254
+ const container = document.getElementById('dialogDemoContainer');
255
+ if (!container) return;
256
+ container.innerHTML = `
257
+ <div class="demo-block">
258
+ <h3>Predefined Dialog Sizes</h3>
259
+ <p>Predefined sizes ensure consistency (xs, sm, md, lg, xl) and responsiveness (max-width 90%).</p>
260
+ <div style="display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 20px;">
261
+ <div style="display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 30px;">
262
+ <ui-button id="btnOpenXS" size="xs" variant="outline" color="secondary" label="XS" style="--btn-bg: #6b7280;"></ui-button>
263
+ <ui-button id="btnOpenSM" size="sm" variant="outline" color="success" label="SM"></ui-button>
264
+ <ui-button id="btnOpenMD" size="md" variant="outline" color="success" label="MD"></ui-button>
265
+ <ui-button id="btnOpenLG" size="lg" variant="outline" color="success" label="LG"></ui-button>
266
+ <ui-button id="btnOpenXL" size="xl" variant="outline" color="success" label="XL"></ui-button>
267
+ <ui-button id="btnOpenFill" size="md" variant="outline" color="success" label="Full Screen"></ui-button>
268
+ </div>
269
+
270
+ <ui-dialog-box id="sXS" size="xs" dialog-title="Size XS (320px)" ok-text="Accept" cancel-text="Dismiss" icon-library="lucide"><div>Content</div></ui-dialog-box>
271
+ <ui-dialog-box id="sSM" size="sm" dialog-title="Size SM (480px)" ok-text="Accept" cancel-text="Dismiss" icon-library="lucide"><div>Content</div></ui-dialog-box>
272
+ <ui-dialog-box id="sMD" size="md" dialog-title="Size MD (768px)" ok-text="Accept" cancel-text="Dismiss" icon-library="lucide"><div>Content</div></ui-dialog-box>
273
+ <ui-dialog-box id="sLG" size="lg" dialog-title="Size LG (1024px)" ok-text="Accept" cancel-text="Dismiss" icon-library="lucide"><div>Content</div></ui-dialog-box>
274
+ <ui-dialog-box id="sXL" size="xl" dialog-title="Size XL (1280px)" ok-text="Accept" cancel-text="Dismiss" icon-library="lucide"><div>Content</div></ui-dialog-box>
275
+ <ui-dialog-box id="sFill" size="fill" dialog-title="Size Full (100%)" ok-text="Accept" cancel-text="Dismiss" icon-library="lucide"><div>Content</div></ui-dialog-box>
276
+ </div>
277
+ `;
278
+ setTimeout(() => {
279
+ const sizeMap = {
280
+ btnOpenXS: 'sXS',
281
+ btnOpenSM: 'sSM',
282
+ btnOpenMD: 'sMD',
283
+ btnOpenLG: 'sLG',
284
+ btnOpenXL: 'sXL',
285
+ btnOpenFill: 'sFill',
286
+ };
287
+ Object.entries(sizeMap).forEach(([btnId, dialogId]) => {
288
+ document.getElementById(btnId)?.addEventListener('click', () => window.openDialog(dialogId));
289
+ });
290
+ }, 100);
291
+ };
292
+
293
+ window.showDialogVariants = function () {
294
+ const container = document.getElementById('dialogDemoContainer');
295
+ if (!container) return;
296
+ container.innerHTML = `
297
+ <div class="demo-block">
298
+ <h3>Dialog Variants & Status</h3>
299
+ <div style="display: flex; gap: 12px; flex-wrap: wrap;">
300
+ <ui-button id="btnOpenVPrimary" size="md" variant="outline" color="primary" label="Primary"></ui-button>
301
+ <ui-button id="btnOpenVSecondary" size="md" variant="outline" color="secondary" label="Secondary"></ui-button>
302
+ <ui-button id="btnOpenVInfo" size="md" variant="outline" color="info" label="Info"></ui-button>
303
+ <ui-button id="btnOpenVSuccess" size="md" variant="outline" color="success" label="Success"></ui-button>
304
+ <ui-button id="btnOpenVWarning" size="md" variant="outline" color="warning" label="Warning"></ui-button>
305
+ <ui-button id="btnOpenVError" size="md" variant="outline" color="danger" label="Error"></ui-button>
306
+ </div>
307
+ <ui-dialog-box id="vPrimary" variant="filled" status="primary" dialog-title="Primary" ok-text="OK" cancel-text="Close" icon-library="lucide"><div><p>Primary content</p></div></ui-dialog-box>
308
+ <ui-dialog-box id="vSecondary" variant="filled" status="secondary" dialog-title="Secondary" ok-text="OK" cancel-text="Close" icon-library="lucide"><div><p>Secondary content</p></div></ui-dialog-box>
309
+ <ui-dialog-box id="vInfo" variant="filled" status="info" dialog-title="Info" ok-text="OK" cancel-text="Close" icon-library="lucide"><div><p>Info content</p></div></ui-dialog-box>
310
+ <ui-dialog-box id="vSuccess" variant="filled" status="success" dialog-title="Success" ok-text="OK" cancel-text="Close" icon-library="lucide"><div><p>Success content</p></div></ui-dialog-box>
311
+ <ui-dialog-box id="vWarning" variant="filled" status="warning" dialog-title="Warning" ok-text="OK" cancel-text="Close" icon-library="lucide"><div><p>Warning content</p></div></ui-dialog-box>
312
+ <ui-dialog-box id="vError" variant="filled" status="error" dialog-title="Error" ok-text="OK" cancel-text="Close" icon-library="lucide"><div><p>Error content</p></div></ui-dialog-box>
313
+ </div>
314
+ `;
315
+ setTimeout(() => {
316
+ const varMap = {
317
+ btnOpenVPrimary: 'vPrimary',
318
+ btnOpenVSecondary: 'vSecondary',
319
+ btnOpenVInfo: 'vInfo',
320
+ btnOpenVSuccess: 'vSuccess',
321
+ btnOpenVWarning: 'vWarning',
322
+ btnOpenVError: 'vError',
323
+ };
324
+ Object.entries(varMap).forEach(([btnId, dialogId]) => {
325
+ document.getElementById(btnId)?.addEventListener('click', () => window.openDialog(dialogId));
326
+ });
327
+ }, 100);
328
+ };
329
+
330
+ window.showDialogTypes = function () {
331
+ const container = document.getElementById('dialogDemoContainer');
332
+ if (!container) return;
333
+ container.innerHTML = `
334
+ <div class="demo-block">
335
+ <h3>Dialog Types</h3>
336
+ <div style="display: flex; gap: 12px; flex-wrap: wrap;">
337
+ <ui-button id="btnOpenTInfo" size="md" variant="outline" color="success" label="Info"></ui-button>
338
+ </div>
339
+ <ui-dialog-box id="tInfo" dialog-title="Information" ok-text="Acknowledge" cancel-text="Dismiss" icon="info" icon-library="lucide"><div><p>Info message content</p></div></ui-dialog-box>
340
+ </div>
341
+ `;
342
+ setTimeout(() => {
343
+ document.getElementById('btnOpenTInfo')?.addEventListener('click', () => window.openDialog('tInfo'));
344
+ }, 100);
345
+ };
346
+
347
+ window.showFormDialog = function () {
348
+ const container = document.getElementById('dialogDemoContainer');
349
+ if (!container) return;
350
+ container.innerHTML = `
351
+ <div class="demo-block">
352
+ <h3>Complex Form Dialog</h3>
353
+ <p style="color: #64748b; margin-bottom: 16px;">This demo showcases a multi-control form integrated directly into the dialog, demonstrating native component interoperability.</p>
354
+ <ui-button id="btnOpenForm" size="md" variant="outline" color="success" label="Launch Complex Form"></ui-button>
355
+
356
+ <ui-dialog-box id="formDialog" width="650px" icon-library="lucide" icon="edit-3" dialog-title="User Configuration" subtitle="Update your account preferences and settings" ok-text="Save Configuration" cancel-text="Discard Changes" scroll-behavior="paper" glass="true">
357
+ <div style="padding: 20px; display: flex; flex-direction: column; gap: 24px;">
358
+
359
+ <!-- Section: Personal Info -->
360
+ <div>
361
+ <h4 style="margin: 0 0 16px; font-size: 14px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8;">Personal Information</h4>
362
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px;">
363
+ <ui-input label="First Name" placeholder="Enter first name" value="John"></ui-input>
364
+ <ui-input label="Last Name" placeholder="Enter last name" value="Doe"></ui-input>
365
+ <ui-input label="Email Address" type="email" placeholder="john.doe@example.com" value="john.doe@enterprise.com" style="grid-column: span 2;"></ui-input>
366
+ </div>
367
+ </div>
368
+
369
+ <!-- Section: Preferences -->
370
+ <div>
371
+ <h4 style="margin: 0 0 16px; font-size: 14px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8;">Preferences</h4>
372
+ <div style="display: flex; flex-direction: column; gap: 16px;">
373
+ <div style="display: flex; justify-content: space-between; align-items: center;">
374
+ <div>
375
+ <div style="font-weight: 600; font-size: 14px;">Notification Emails</div>
376
+ <div style="font-size: 12px; color: #64748b;">Receive weekly product updates</div>
377
+ </div>
378
+ <ui-switch checked="true"></ui-switch>
379
+ </div>
380
+
381
+ <div>
382
+ <label style="display: block; font-weight: 600; font-size: 14px; margin-bottom: 8px;">Theme Selection</label>
383
+ <ui-button-toggle-group value="system" size="sm" variant="outline">
384
+ <ui-button-toggle value="light" label="Light"></ui-button-toggle>
385
+ <ui-button-toggle value="dark" label="Dark"></ui-button-toggle>
386
+ <ui-button-toggle value="system" label="System"></ui-button-toggle>
387
+ </ui-button-toggle-group>
388
+ </div>
389
+
390
+ <div>
391
+ <label style="display: block; font-weight: 600; font-size: 14px; margin-bottom: 8px;">Experience Level</label>
392
+ <ui-range-slider value="75" min="0" max="100" step="5"></ui-range-slider>
393
+ </div>
394
+ </div>
395
+ </div>
396
+
397
+ <!-- Section: Security -->
398
+ <div>
399
+ <h4 style="margin: 0 0 16px; font-size: 14px; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8;">Security & Access</h4>
400
+ <div style="display: flex; flex-direction: column; gap: 12px;">
401
+ <ui-checkbox label="Enable Two-Factor Authentication" checked="true"></ui-checkbox>
402
+ <ui-checkbox label="Subscribe to Security Alerts"></ui-checkbox>
403
+ </div>
404
+ </div>
405
+
406
+ <!-- Section: Satisfaction -->
407
+ <div style="background: rgba(128,128,128,0.05); padding: 16px; border-radius: 8px; border: 1px solid rgba(128,128,128,0.1);">
408
+ <label style="display: block; font-weight: 600; font-size: 14px; margin-bottom: 8px;">How would you rate our library?</label>
409
+ <ui-rating value="4" max="5" size="lg"></ui-rating>
410
+ </div>
411
+ </div>
412
+ </ui-dialog-box>
413
+ </div>
414
+ `;
415
+ setTimeout(() => {
416
+ document.getElementById('btnOpenForm')?.addEventListener('click', () => window.openDialog('formDialog'));
417
+ }, 100);
418
+ };
419
+
420
+ window.showDialogPositions = function () {
421
+ const container = document.getElementById('dialogDemoContainer');
422
+ if (!container) return;
423
+ container.innerHTML = `
424
+ <div class="demo-block">
425
+ <h3>Dialog Positions</h3>
426
+ <div style="display:flex; gap:10px; flex-wrap:wrap;">
427
+ <ui-button id="btnPosCenter" size="md" variant="outline" color="danger" label="Center"></ui-button>
428
+ <ui-button id="btnPosTop" size="md" variant="outline" color="primary" label="Top"></ui-button>
429
+ <ui-button id="btnPosBottom" size="md" variant="outline" color="success" label="Bottom"></ui-button>
430
+ <ui-button id="btnPosRight" size="md" variant="outline" color="warning" label="Right"></ui-button>
431
+ <ui-button id="btnPosTR" size="md" variant="outline" color="secondary" label="Top Right" style="--btn-bg: orange;"></ui-button>
432
+ </div>
433
+
434
+ <ui-dialog-box id="dPosCenter" position="center" dialog-title="Center" ok-text="Confirm" cancel-text="Exit" width="400px" icon-library="lucide"><div>Content</div></ui-dialog-box>
435
+ <ui-dialog-box id="dPosTop" position="top" dialog-title="Top" ok-text="Confirm" cancel-text="Exit" width="400px" icon-library="lucide"><div>Content</div></ui-dialog-box>
436
+ <ui-dialog-box id="dPosBottom" position="bottom" dialog-title="Bottom" ok-text="Confirm" cancel-text="Exit" width="400px" icon-library="lucide"><div>Content</div></ui-dialog-box>
437
+ <ui-dialog-box id="dPosRight" position="right" dialog-title="Right Side" ok-text="Confirm" cancel-text="Exit" width="400px" height="100vh" style="--ui-dialog-border-radius:0;" icon-library="lucide"><div>Side Panel Style</div></ui-dialog-box>
438
+ <ui-dialog-box id="dPosTR" position="top-right" dialog-title="Top Right" ok-text="Confirm" cancel-text="Exit" width="400px" icon-library="lucide"><div>Content</div></ui-dialog-box>
439
+ </div>
440
+ `;
441
+ setTimeout(() => {
442
+ const posMap = {
443
+ btnPosCenter: 'dPosCenter',
444
+ btnPosTop: 'dPosTop',
445
+ btnPosBottom: 'dPosBottom',
446
+ btnPosRight: 'dPosRight',
447
+ btnPosTR: 'dPosTR',
448
+ };
449
+ Object.entries(posMap).forEach(([btnId, dialogId]) => {
450
+ document.getElementById(btnId)?.addEventListener('click', () => window.openDialog(dialogId));
451
+ });
452
+ }, 100);
453
+ };
454
+
455
+ window.showDialogScroll = function () {
456
+ const container = document.getElementById('dialogDemoContainer');
457
+ if (!container) return;
458
+ const longContent = Array(25)
459
+ .fill(
460
+ '<p style="color: #64748b; font-size: 14px;">This is a paragraph of scrollable content used to demonstrate boundary management within the Zenith Dialog system. Enterprise layouts often require fixed headers and footers while the central content area remains scrollable.</p>',
461
+ )
462
+ .join('');
463
+ container.innerHTML = `
464
+ <div class="demo-block">
465
+ <h3>📜 Scrolling Behaviors</h3>
466
+ <p style="margin-bottom: 20px; color: #6b7280;">Choose how the dialog handles overflow: either the entire panel scrolls (Body) or only the content area (Paper).</p>
467
+ <div style="display:flex; gap:12px; flex-wrap:wrap;">
468
+ <ui-button id="btnOpenScrollPaper" size="md" variant="outline" color="success" label="Open Scroll Paper"></ui-button>
469
+ <ui-button id="btnOpenScrollBody" size="md" variant="outline" color="success" label="Open Scroll Body"></ui-button>
470
+ </div>
471
+
472
+ <ui-dialog-box id="dScrollPaper" scroll-behavior="paper" dialog-title="Terms & Conditions" subtitle="Scroll Behavior: Paper" width="600px" icon="file-text" icon-library="lucide" ok-text="Agree & Continue" cancel-text="Decline">
473
+ <div style="padding: 24px;">
474
+ <h4 style="margin-top:0">1. Acceptance of Terms</h4>
475
+ ${longContent}
476
+ </div>
477
+ </ui-dialog-box>
478
+
479
+ <ui-dialog-box id="dScrollBody" scroll-behavior="body" dialog-title="Privacy Policy" subtitle="Scroll Behavior: Body" width="600px" icon="shield" icon-library="lucide" ok-text="Acknowledge" cancel-text="Close">
480
+ <div style="padding: 24px;">
481
+ <h4 style="margin-top:0">1. Data Sovereignty</h4>
482
+ ${longContent}
483
+ </div>
484
+ </ui-dialog-box>
485
+ </div>
486
+ `;
487
+ setTimeout(() => {
488
+ document.getElementById('btnOpenScrollPaper')?.addEventListener('click', () => window.openDialog('dScrollPaper'));
489
+ document.getElementById('btnOpenScrollBody')?.addEventListener('click', () => window.openDialog('dScrollBody'));
490
+ }, 100);
491
+ };
492
+
493
+ window.showAdvancedDialogs = function () {
494
+ const container = document.getElementById('dialogDemoContainer');
495
+ if (!container) return;
496
+ container.innerHTML = `
497
+ <div class="demo-block">
498
+ <h3>Advanced Behaviors</h3>
499
+ <div style="display:flex; gap:10px; flex-wrap:wrap;">
500
+ <ui-button id="btnOpenStatic" size="md" variant="outline" color="warning" label="Static Backdrop"></ui-button>
501
+ <ui-button id="btnOpenDraggable" size="md" variant="outline" color="secondary" label="Draggable" style="--btn-bg: #8b5cf6;"></ui-button>
502
+ <ui-button id="btnOpenResizable" size="md" variant="outline" color="secondary" label="Resizable" style="--btn-bg: #ec4899;"></ui-button>
503
+ <ui-button id="btnOpenCombo" size="md" variant="outline" color="secondary" label="Drag & Resize" style="--btn-bg: #111827;"></ui-button>
504
+ </div>
505
+
506
+ <ui-dialog-box id="dStatic" backdrop="static" dialog-title="Static Backdrop (Shake on click)" ok-text="Understood" icon-library="lucide">
507
+ <div><p>Try clicking outside. I won't close, but I will shake to notify you!</p><p>Use Close button or Escape key.</p></div>
508
+ </ui-dialog-box>
509
+
510
+ <ui-dialog-box id="dDraggable" draggable="true" dialog-title="Draggable Dialog" ok-text="Got it" cancel-text="Close" icon-library="lucide">
511
+ <div><p>Grab the header to move me around.</p><p><i>(Now constrained to viewport!)</i></p></div>
512
+ </ui-dialog-box>
513
+
514
+ <ui-dialog-box id="dResizable" resizable="true" dialog-title="Resizable Dialog" ok-text="Done" cancel-text="Cancel" icon-library="lucide">
515
+ <div><p>Grab the bottom-right corner to resize me.</p></div>
516
+ </ui-dialog-box>
517
+
518
+ <ui-dialog-box id="dCombo" draggable="true" resizable="true" dialog-title="Power User" ok-text="Save Layout" cancel-text="Reset" icon-library="lucide">
519
+ <div><p>I can be moved and resized.</p></div>
520
+ </ui-dialog-box>
521
+ </div>
522
+ `;
523
+ setTimeout(() => {
524
+ const advMap = {
525
+ btnOpenStatic: 'dStatic',
526
+ btnOpenDraggable: 'dDraggable',
527
+ btnOpenResizable: 'dResizable',
528
+ btnOpenCombo: 'dCombo',
529
+ };
530
+ Object.entries(advMap).forEach(([btnId, dialogId]) => {
531
+ document.getElementById(btnId)?.addEventListener('click', () => window.openDialog(dialogId));
532
+ });
533
+ }, 100);
534
+ };
535
+
536
+ window.showPremiumFeatures = function () {
537
+ const container = document.getElementById('dialogDemoContainer');
538
+ if (!container) return;
539
+ container.innerHTML = `
540
+ <div class="demo-block">
541
+ <h3>💎 Premium Capabilities</h3>
542
+ <p style="color: #6b7280; margin-bottom: 20px;">Experience the high-fidelity features designed for professional applications.</p>
543
+
544
+ <!-- Feature 1: Async Workflow -->
545
+ <div style="background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px; padding: 16px; margin-bottom: 16px;">
546
+ <h4 style="margin-top:0; color: #1e40af;">🔄 Async Validation & Loading</h4>
547
+ <p style="font-size: 14px; color: #10b981;">Simulates a server request with button loading states and data persistence.</p>
548
+ <ui-button id="btnOpenAsync" size="md" variant="outline" color="primary" label="Test Async Workflow" size="md" variant="outline"></ui-button>
549
+ </div>
550
+
551
+ <!-- Feature 2: Transitions -->
552
+ <div style="background: #fdf4ff; border: 1px solid #f0abfc; border-radius: 8px; padding: 16px; margin-bottom: 16px;">
553
+ <h4 style="margin-top:0; color: #86198f;">✨ Animation Gallery</h4>
554
+ <p style="font-size: 14px; color: #c026d3;">Smooth entry and exit transitions for different contexts.</p>
555
+ <div style="display: flex; gap: 10px; flex-wrap: wrap;">
556
+ <ui-button id="btnOpenAnimScale" size="md" variant="outline" color="secondary" label="Scale (Default)" size="md" variant="outline" style="--btn-bg: white; --btn-border: #e879f9; --btn-text: #a21caf;"></ui-button>
557
+ <ui-button id="btnOpenAnimFade" size="md" variant="outline" color="secondary" label="Fade" size="md" variant="outline" style="--btn-bg: white; --btn-border: #e879f9; --btn-text: #a21caf;"></ui-button>
558
+ <ui-button id="btnOpenAnimSlideR" size="md" variant="outline" color="secondary" label="Slide Right (Drawer)" size="md" variant="outline" style="--btn-bg: white; --btn-border: #e879f9; --btn-text: #a21caf;"></ui-button>
559
+ <ui-button id="btnOpenAnimSlideB" size="md" variant="outline" color="secondary" label="Slide Bottom (Sheet)" size="md" variant="outline" style="--btn-bg: white; --btn-border: #e879f9; --btn-text: #a21caf;"></ui-button>
560
+ </div>
561
+ </div>
562
+
563
+ <!-- Feature 3: Window Management -->
564
+ <div style="background: #f0fdf4; border: 1px solid #86efac; border-radius: 8px; padding: 16px;">
565
+ <h4 style="margin-top:0; color: #15803d;">🪟 Persistent Window Widget</h4>
566
+ <p style="font-size: 14px; color: #16a34a;">Draggable, Resizable, Non-Modal, and Persistent state (Keep Mounted).</p>
567
+ <ui-button id="btnOpenWidget" size="md" variant="outline" color="success" label="Open Main Widget" size="md" variant="outline"></ui-button>
568
+ <ui-button id="btnSpawnWidget" size="md" variant="outline" color="success" label="Spawn New Note (+)" size="md" variant="outline" style="margin-left: 10px; --btn-bg: #15803d;"></ui-button>
569
+ </div>
570
+
571
+ <!-- Dialogs -->
572
+
573
+ <!-- Async Dialog -->
574
+ <ui-dialog-box id="dAsync" dialog-title="Edit Profile" ok-text="Save Changes" cancel-text="Cancel" keep-mounted="true" width="500px" icon-library="lucide">
575
+ <div style="display: flex; flex-direction: column; gap: 12px;">
576
+ <div>
577
+ <label style="display: block; font-size: 12px; font-weight: 600; margin-bottom: 4px; color: #374151;">Full Name</label>
578
+ <ui-input id="profName" value="John Doe"></ui-input>
579
+ </div>
580
+ <div>
581
+ <label style="display: block; font-size: 12px; font-weight: 600; margin-bottom: 4px; color: #374151;">Email</label>
582
+ <ui-input type="email" id="profEmail" value="john@company.com"></ui-input>
583
+ </div>
584
+ <div style="font-size: 13px; color: #6b7280; background: #f9fafb; padding: 8px; border-radius: 4px; display: flex; align-items: center; gap: 8px;">
585
+ <ui-icon name="info" library="lucide" size="14px"></ui-icon>
586
+ <span><b>Try this:</b> modify values, click Save to see loading, then open again. Values persist!</span>
587
+ </div>
588
+ </div>
589
+ </ui-dialog-box>
590
+
591
+ <!-- Animation Dialogs -->
592
+ <ui-dialog-box id="dAnimScale" animation="scale" dialog-title="Scale Animation" ok-text="Close" width="400px" icon-library="lucide">
593
+ <div>Standard modern dialog entrance.</div>
594
+ </ui-dialog-box>
595
+
596
+ <ui-dialog-box id="dAnimFade" animation="fade" dialog-title="Fade Animation" ok-text="Close" width="400px" icon-library="lucide">
597
+ <div>Subtle fade-in effect.</div>
598
+ </ui-dialog-box>
599
+
600
+ <ui-dialog-box id="dAnimSlideR" animation="slide-right" position="right" height="100vh" style="--ui-dialog-border-radius:0;" dialog-title="Side Drawer" ok-text="Close Drawer" icon-library="lucide">
601
+ <div style="padding-bottom: 20px;">
602
+ <p>Ideal for menus, filters, or details panels.</p>
603
+ <p>Moves in from the side.</p>
604
+ </div>
605
+ </ui-dialog-box>
606
+
607
+ <ui-dialog-box id="dAnimSlideB" animation="slide-bottom" position="bottom" dialog-title="Bottom Sheet" ok-text="Agree & Close" cancel-text="Dismiss" width="100%" style="--ui-dialog-border-radius: 16px 16px 0 0;" icon-library="lucide">
608
+ <div style="text-align: center; padding: 20px;">
609
+ <p>Great for mobile actions or share sheets.</p>
610
+ </div>
611
+ </ui-dialog-box>
612
+
613
+ <!-- Widget Dialog (Persistent Notepad) -->
614
+ <ui-dialog-box id="dWidget"
615
+ dialog-title="📝 Sticky Notes"
616
+ backdrop="none"
617
+ draggable="true"
618
+ resizable="true"
619
+ keep-mounted="true"
620
+ width="300px"
621
+ height="300px"
622
+ icon-library="lucide"
623
+ style="--ui-dialog-border-radius: 8px; box-shadow: 0 10px 40px rgba(0,0,0,0.2);">
624
+ <div style="height: 100%; display: flex; flex-direction: column;">
625
+ <ui-input variant="plain" multiline="true" placeholder="Type your notes here... I won't lose them if you close me!"
626
+ style="flex: 1; width: 100%; height: 100%; padding: 4px; font-family: sans-serif;"></ui-input>
627
+ </div>
628
+ </ui-dialog-box>
629
+
630
+ </div>
631
+ `;
632
+
633
+ setTimeout(() => {
634
+ document.getElementById('btnOpenAsync')?.addEventListener('click', () => window.openDialog('dAsync'));
635
+ document.getElementById('btnOpenAnimScale')?.addEventListener('click', () => window.openDialog('dAnimScale'));
636
+ document.getElementById('btnOpenAnimFade')?.addEventListener('click', () => window.openDialog('dAnimFade'));
637
+ document.getElementById('btnOpenAnimSlideR')?.addEventListener('click', () => window.openDialog('dAnimSlideR'));
638
+ document.getElementById('btnOpenAnimSlideB')?.addEventListener('click', () => window.openDialog('dAnimSlideB'));
639
+ document.getElementById('btnOpenWidget')?.addEventListener('click', () => window.openDialog('dWidget'));
640
+ document.getElementById('btnSpawnWidget')?.addEventListener('click', () => window.spawnWidget());
641
+
642
+ const dAsync = document.getElementById('dAsync');
643
+
644
+ if (dAsync) {
645
+ dAsync.addEventListener('ok', () => {
646
+ const name = document.getElementById('profName').value;
647
+ // Set Loading
648
+ dAsync.okLoading = true;
649
+
650
+ // Simulate API call
651
+ setTimeout(() => {
652
+ dAsync.okLoading = false;
653
+ alert(`Saved profile for ${name}!`);
654
+ dAsync.hide();
655
+ }, 1500);
656
+ });
657
+ }
658
+ }, 100);
659
+ };
660
+
661
+ // Dynamic Widget Spawner
662
+ window.spawnWidget = function () {
663
+ const id = 'note-' + Date.now();
664
+ const dialog = document.createElement('ui-dialog-box');
665
+ dialog.id = id;
666
+ dialog.setAttribute('dialog-title', `Note ${Math.floor(Math.random() * 100)}`);
667
+ dialog.setAttribute('backdrop', 'none');
668
+ dialog.setAttribute('draggable', 'true');
669
+ dialog.setAttribute('resizable', 'true');
670
+ dialog.setAttribute('keep-mounted', 'true');
671
+ dialog.setAttribute('show-menu', 'true'); // Enable menu button
672
+
673
+ // Native Menu Items (New Feature)
674
+ const menuItems = [
675
+ { label: 'Color: Yellow', icon: 'square', id: 'yellow' },
676
+ { label: 'Color: Blue', icon: 'square', id: 'blue' },
677
+ { label: 'Color: Red', icon: 'square', id: 'red' },
678
+ { type: 'separator' },
679
+ { label: 'Close Note', icon: 'x', variant: 'danger', id: 'close' },
680
+ ];
681
+ dialog.setAttribute('menu-items', JSON.stringify(menuItems));
682
+
683
+ dialog.setAttribute('width', '250px');
684
+ dialog.setAttribute('height', '200px');
685
+ dialog.style.setProperty('--ui-dialog-border-radius', '8px');
686
+ dialog.style.boxShadow = '0 10px 40px rgba(0,0,0,0.2)';
687
+
688
+ // Random position initial
689
+ const top = 100 + Math.random() * 200;
690
+ const left = 100 + Math.random() * 400;
691
+ dialog.style.top = `${top}px`;
692
+ dialog.style.left = `${left}px`;
693
+ dialog.style.position = 'fixed';
694
+ dialog.style.margin = '0'; // override default centering
695
+
696
+ dialog.innerHTML = `
697
+ <div style="height: 100%; display: flex; flex-direction: column;">
698
+ <ui-input variant="plain" multiline="true" placeholder="New note..."
699
+ style="flex: 1; width: 100%; height: 100%; padding: 4px; font-family: sans-serif; --ui-input-bg: #fffbeb;"></ui-input>
700
+ </div>
701
+ `;
702
+
703
+ // Action Handler
704
+ dialog.addEventListener('menuAction', e => {
705
+ const action = e.detail?.id; // Action comes from action detail
706
+ const input = dialog.querySelector('ui-input');
707
+ if (input) {
708
+ if (action === 'yellow') input.style.setProperty('--ui-input-bg', '#fffbeb');
709
+ if (action === 'blue') input.style.setProperty('--ui-input-bg', '#eff6ff');
710
+ if (action === 'red') input.style.setProperty('--ui-input-bg', '#fef2f2');
711
+ }
712
+ });
713
+
714
+ // Basic menu event might still fire, but we use menuAction for built-in items
715
+
716
+ document.body.appendChild(dialog);
717
+ setTimeout(() => dialog.show(), 50);
718
+ };
719
+
720
+ // --- Parent/Child Dialog Size Demo ---
721
+ window.showParentChildDialogDemo = function () {
722
+ const container = document.getElementById('dialogDemoContainer');
723
+ if (!container) return;
724
+ container.innerHTML = `
725
+ <div class="demo-block">
726
+ <h3>Parent/Child Dialog Size Demo</h3>
727
+ <p>Open a parent dialog and launch a child dialog with a user-defined size.</p>
728
+ <ui-button id="openParentDialogBtn" size="md" variant="outline" color="success" label="Open Parent Dialog" size="md" variant="outline"></ui-button>
729
+ </div>
730
+ `;
731
+ setTimeout(() => {
732
+ const btn = document.getElementById('openParentDialogBtn');
733
+ if (btn) {
734
+ btn.onclick = () => {
735
+ // Create Parent Dialog
736
+ const parentDialog = document.createElement('ui-dialog-box');
737
+ parentDialog.setAttribute('dialog-title', 'Parent Dialog');
738
+ parentDialog.setAttribute('width', '650px');
739
+ parentDialog.setAttribute('size', 'custom');
740
+ parentDialog.setAttribute('icon-library', 'lucide');
741
+ parentDialog.setAttribute('status', 'info');
742
+ parentDialog.innerHTML = `
743
+ <div style="padding: 16px;">
744
+ <label style="display: flex; align-items: center; gap: 8px; margin-bottom: 12px;">
745
+ <span>Child Dialog Width:</span>
746
+ <ui-input id="childWidthInput" value="400px" style="width: 100px;"></ui-input>
747
+ </label>
748
+ <label style="display: flex; align-items: center; gap: 8px; margin-bottom: 12px;">
749
+ <span>Child Dialog Height:</span>
750
+ <ui-input id="childHeightInput" value="300px" style="width: 100px;"></ui-input>
751
+ </label>
752
+ <ui-button id="openChildDialogBtn" size="md" variant="outline" color="primary" label="Open Child Dialog" size="md" variant="outline" style="--btn-bg: #6366f1;"></ui-button>
753
+ </div>
754
+ `;
755
+ document.body.appendChild(parentDialog);
756
+ setTimeout(() => {
757
+ parentDialog.show();
758
+ const openChildBtn = parentDialog.querySelector('#openChildDialogBtn');
759
+ if (openChildBtn) {
760
+ openChildBtn.onclick = () => {
761
+ const width = parentDialog.querySelector('#childWidthInput').value || '400px';
762
+ const height = parentDialog.querySelector('#childHeightInput').value || '300px';
763
+
764
+ // Create Child Dialog with specific nested properties
765
+ const childDialog = document.createElement('ui-dialog-box');
766
+ childDialog.id = 'demo-child-dialog';
767
+ childDialog.setAttribute('dialog-title', 'Child Dialog');
768
+ childDialog.setAttribute('width', width);
769
+ childDialog.setAttribute('height', height);
770
+ childDialog.setAttribute('size', 'custom');
771
+ childDialog.setAttribute('icon-library', 'lucide');
772
+ childDialog.setAttribute('icon', 'layers');
773
+ childDialog.setAttribute('status', 'success');
774
+ childDialog.setAttribute('is-nested', 'true'); // Visually differentiates nested dialogs
775
+ childDialog.setAttribute('z-index', '20000'); // Ensure it sits above parent
776
+ childDialog.setAttribute('animation', 'scale');
777
+
778
+ childDialog.innerHTML = `
779
+ <div style="padding: 20px; font-family: sans-serif; background: #f0fdf4; height: 100%; border-radius: 0 0 8px 8px;">
780
+ <p style="margin: 0 0 16px; color: #166534; font-weight: 500;">This is the child dialog, running inside the parent's context.</p>
781
+ <div style="background: white; padding: 12px; border-radius: 6px; border: 1px solid #bbf7d0;">
782
+ <div style="font-size: 13px; color: #6b7280; margin-bottom: 4px;">Configured Dimensions:</div>
783
+ <div style="font-family: monospace; font-weight: bold; color: #059669;">Width: ${width}</div>
784
+ <div style="font-family: monospace; font-weight: bold; color: #059669;">Height: ${height}</div>
785
+ </div>
786
+ <p style="font-size: 12px; color: #666; margin-top: 20px;">
787
+ Typically, nested dialogs should be smaller than their parents to maintain visual hierarchy.
788
+ </p>
789
+ </div>
790
+ `;
791
+ document.body.appendChild(childDialog);
792
+ setTimeout(() => childDialog.show(), 50);
793
+
794
+ childDialog.addEventListener('dialogClosed', () => {
795
+ document.body.removeChild(childDialog);
796
+ });
797
+ };
798
+ }
799
+ }, 50);
800
+ };
801
+ }
802
+ }, 50);
803
+ };
804
+
805
+ window.showAuthSessionDemo = function () {
806
+ const dialog = document.createElement('ui-dialog-box');
807
+ dialog.setAttribute('type', 'session');
808
+ dialog.setAttribute('dialog-title', 'Session Security');
809
+ dialog.setAttribute('icon-library', 'lucide');
810
+ dialog.setAttribute('icon', 'shield-check');
811
+ dialog.setAttribute('status', 'info');
812
+ dialog.setAttribute('session-timeout', '10'); // Short for demo
813
+ dialog.setAttribute('ok-text', 'Stay Logged In');
814
+ dialog.setAttribute('cancel-text', 'Logout Now');
815
+
816
+ dialog.innerHTML = `
817
+ <div style="padding: 10px 0;">
818
+ <p>Your session is about to expire due to inactivity. For your security, we will automatically log you out once the timer reaches zero.</p>
819
+ <div style="background: #fffbeb; border: 1px solid #fde68a; padding: 12px; border-radius: 6px; display: flex; align-items: flex-start; gap: 10px;">
820
+ <span style="font-size: 20px;">⚠️</span>
821
+ <div>
822
+ <div style="font-weight: 600; color: #92400e;">Unsaved data may be lost</div>
823
+ <div style="font-size: 13px; color: #b45309;">Please click 'Stay Logged In' to extend your session validity.</div>
824
+ </div>
825
+ </div>
826
+ </div>
827
+ `;
828
+
829
+ document.body.appendChild(dialog);
830
+ setTimeout(() => dialog.show(), 50);
831
+
832
+ dialog.addEventListener('dialogClosed', () => {
833
+ document.body.removeChild(dialog);
834
+ });
835
+ };
836
+
837
+ // Keep the original nested dialog demo
838
+ window.showNestedDialogs = function () {
839
+ const openLevel = level => {
840
+ const d = document.createElement('ui-dialog-box');
841
+ d.setAttribute('dialog-title', `Level ${level} Dialog`);
842
+ d.setAttribute('width', '350px');
843
+ d.setAttribute('icon-library', 'lucide');
844
+ d.setAttribute('status', level % 2 === 0 ? 'info' : 'default'); // Alternate styles
845
+
846
+ // NEW: Enable high-fidelity nesting visuals for Level 2+
847
+ if (level > 1) {
848
+ d.setAttribute('is-nested', 'true');
849
+ }
850
+
851
+ d.innerHTML = `
852
+ <div style="padding: 10px;">
853
+ <p><strong>Stack Level: ${level}</strong></p>
854
+ <p>This dialog should appear above Level ${level - 1}.</p>
855
+ <div style="display: flex; gap: 10px; margin-top: 15px;">
856
+ <ui-button class="btn-next-level" size="md" variant="outline" color="secondary" label="Open Level ${level + 1} ➕" style="flex: 1; --btn-bg: #ec4899;"></ui-button>
857
+ <ui-button class="btn-close-dialog" size="md" variant="outline" color="secondary" label="Close" style="--btn-bg: #6b7280;"></ui-button>
858
+ </div>
859
+ </div>
860
+ `;
861
+ document.body.appendChild(d);
862
+
863
+ setTimeout(() => {
864
+ d.show();
865
+ const btnNext = d.querySelector('.btn-next-level');
866
+ if (btnNext) {
867
+ btnNext.onclick = () => openLevel(level + 1);
868
+ }
869
+ const btnClose = d.querySelector('.btn-close-dialog');
870
+ if (btnClose) {
871
+ btnClose.onclick = () => d.hide();
872
+ }
873
+ }, 50);
874
+ };
875
+
876
+ openLevel(1);
877
+ };
878
+
879
+ window.showInteractiveDialog = function () {
880
+ const container = document.getElementById('dialogDemoContainer');
881
+ if (!container) return;
882
+
883
+ container.innerHTML = `
884
+ <div class="demo-block">
885
+ <h3 style="margin-bottom: 24px; font-weight: 800; letter-spacing: -0.02em;">🎮 Custom Dialog Builder</h3>
886
+
887
+ <div style="background: white; border: 1px solid #eef2f6; border-radius: 20px; padding: 28px; box-shadow: 0 10px 30px rgba(0,0,0,0.04); margin-bottom: 30px;">
888
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px; align-items: flex-end;">
889
+
890
+ <!-- Basic Controls -->
891
+ <div class="control-group">
892
+ <label style="display: flex; flex-direction: column; gap: 8px;">
893
+ <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.1em;">Window Size</span>
894
+ <ui-dropdown id="iDSize" value="sm" full-width="true" options='[
895
+ {"label": "Custom", "value": "custom"},
896
+ {"label": "XXXS (160px)", "value": "xxxs"},
897
+ {"label": "XXS (240px)", "value": "xxs"},
898
+ {"label": "XS (320px)", "value": "xs"},
899
+ {"label": "SM (480px)", "value": "sm"},
900
+ {"label": "MD (768px)", "value": "md"},
901
+ {"label": "LG (1024px)", "value": "lg"},
902
+ {"label": "XL (1280px)", "value": "xl"},
903
+ {"label": "XXL (1440px)", "value": "xxl"},
904
+ {"label": "XXXL (1600px)", "value": "xxxl"},
905
+ {"label": "Fill (90%)", "value": "fill"}
906
+ ]'></ui-dropdown>
907
+ </label>
908
+ </div>
909
+
910
+ <div class="control-group">
911
+ <label style="display: flex; flex-direction: column; gap: 8px;">
912
+ <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.1em;">Aesthetic Variant</span>
913
+ <ui-dropdown id="iDVariant" value="soft" full-width="true" options='[
914
+ {"label": "Soft (Modern)", "value": "soft"},
915
+ {"label": "Outline (Clean)", "value": "outline"},
916
+ {"label": "Filled (Bold)", "value": "filled"},
917
+ {"label": "Glass (Premium)", "value": "glass"}
918
+ ]'></ui-dropdown>
919
+ </label>
920
+ </div>
921
+
922
+ <div class="control-group">
923
+ <label style="display: flex; flex-direction: column; gap: 8px;">
924
+ <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.1em;">Semantic Status</span>
925
+ <ui-dropdown id="iDStatus" value="default" full-width="true" options='[
926
+ {"label": "Default", "value": "default"},
927
+ {"label": "Info Blue", "value": "info"},
928
+ {"label": "Success Green", "value": "success"},
929
+ {"label": "Warning Yellow", "value": "warning"},
930
+ {"label": "Danger Red", "value": "error"}
931
+ ]'></ui-dropdown>
932
+ </label>
933
+ </div>
934
+
935
+ <div class="control-group">
936
+ <label style="display: flex; flex-direction: column; gap: 8px;">
937
+ <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.1em;">Background Accent</span>
938
+ <ui-color-picker id="iDBgColor" value="#ffffff"></ui-color-picker>
939
+ </label>
940
+ </div>
941
+
942
+ <!-- Settings Toggles -->
943
+ <div class="control-group" style="grid-column: 1 / -1; display: flex; flex-direction:row; flex-wrap: wrap; gap: 20px; padding: 20px; background: #f8fafc; border-radius: 12px; margin-top: 10px;">
944
+ <ui-checkbox id="iDDraggable" label="Draggable" checked></ui-checkbox>
945
+ <ui-checkbox id="iDResizable" label="Resizable"></ui-checkbox>
946
+ <ui-checkbox id="iDShowHeader" label="Header" checked></ui-checkbox>
947
+ <ui-checkbox id="iDShowFooter" label="Footer" checked></ui-checkbox>
948
+ <ui-checkbox id="iDShowMin" label="Minimize" checked></ui-checkbox>
949
+ <ui-checkbox id="iDShowMax" label="Maximize" checked></ui-checkbox>
950
+ <ui-checkbox id="iDShowClose" label="Close" checked></ui-checkbox>
951
+ </div>
952
+
953
+ <!-- Action Button -->
954
+ <div class="control-group" style="grid-column: 1 / -1;">
955
+ <ui-button id="btnOpenInteractive" variant="primary" color="success" label="Launch Masterpiece Dialog" icon="sparkles" icon-library="lucide" full-width="true" size="lg"></ui-button>
956
+ </div>
957
+ </div>
958
+ </div>
959
+
960
+ <div id="interactiveDialogContainer"></div>
961
+
962
+ <div style="margin-top: 20px; background: #0f172a; padding: 20px; border-radius: 12px; position: relative; box-shadow: 0 10px 25px rgba(0,0,0,0.2);">
963
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;">
964
+ <span style="color: #64748b; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.15em;">Generated Implementation</span>
965
+ <ui-button id="btnCopyDialogCode" variant="outline" color="primary" label="Copy Code" size="md" style="--btn-text: #38bdf8;"></ui-button>
966
+ </div>
967
+ <code id="dialogCodeBlock" style="color: #94a3b8; font-family: 'JetBrains Mono', monospace; font-size: 12px; display: block; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;"></code>
968
+ </div>
969
+
970
+ <div id="eventLog" style="margin-top: 20px; padding: 16px; background: #ffffff; border-radius: 12px; border: 1px solid #eef2f6;">
971
+ <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 12px;">
972
+ <div style="width: 8px; height: 8px; border-radius: 50%; background: #22c55e;"></div>
973
+ <h4 style="margin: 0; font-size: 12px; font-weight: 800; color: #1e293b; text-transform: uppercase; letter-spacing: 0.05em;">Live Event Stream</h4>
974
+ </div>
975
+ <div id="eventLogContent" style="font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #64748b; max-height: 120px; overflow-y: auto;">
976
+ <div style="opacity: 0.5;">Awaiting interactions...</div>
977
+ </div>
978
+ </div>
979
+ </div>
980
+ `;
981
+
982
+ // Rebind event listeners
983
+ setTimeout(() => {
984
+ document.getElementById('btnOpenInteractive')?.addEventListener('click', () => window.openDialog('interactiveDialog'));
985
+ document.getElementById('btnCopyDialogCode')?.addEventListener('click', () => window.copyDialogCode());
986
+
987
+ // Auto-update code block when inputs change
988
+ const inputs = ['iDSize', 'iDVariant', 'iDStatus', 'iDBgColor', 'iDDraggable', 'iDResizable', 'iDShowHeader', 'iDShowFooter', 'iDShowMin', 'iDShowMax', 'iDShowClose'];
989
+ inputs.forEach(id => {
990
+ document.getElementById(id)?.addEventListener('dropdownChange', () => window.updateInteractiveDialog());
991
+ document.getElementById(id)?.addEventListener('checkboxChange', () => window.updateInteractiveDialog());
992
+ document.getElementById(id)?.addEventListener('colorChange', () => window.updateInteractiveDialog());
993
+ });
994
+ }, 100);
995
+
996
+ updateInteractiveDialog();
997
+ };
998
+
999
+ window.updateInteractiveDialog = function () {
1000
+ const size = document.getElementById('iDSize')?.value || 'custom';
1001
+ const variant = document.getElementById('iDVariant')?.value || 'outlined';
1002
+ const status = document.getElementById('iDStatus')?.value || 'default';
1003
+ const backdrop = document.getElementById('iDBackdrop')?.value || 'default';
1004
+ const position = document.getElementById('iDPosition')?.value || 'center';
1005
+ const okText = document.getElementById('iDOkText')?.value;
1006
+ const cancelText = document.getElementById('iDCancelText')?.value;
1007
+ const bgColor = document.getElementById('iDBgColor')?.value || '#ffffff';
1008
+
1009
+ const draggable = document.getElementById('iDDraggable')?.checked || false;
1010
+ const resizable = document.getElementById('iDResizable')?.checked || false;
1011
+ const showHeader = document.getElementById('iDShowHeader')?.checked;
1012
+ const showFooter = document.getElementById('iDShowFooter')?.checked;
1013
+ const showMenu = document.getElementById('iDShowMenu')?.checked || false;
1014
+ const showMin = document.getElementById('iDShowMin')?.checked;
1015
+ const showMax = document.getElementById('iDShowMax')?.checked;
1016
+ const showClose = document.getElementById('iDShowClose')?.checked;
1017
+
1018
+ const container = document.getElementById('interactiveDialogContainer');
1019
+ if (container) {
1020
+ // Re-create the element to apply changes properly
1021
+ while (container.firstChild) {
1022
+ container.removeChild(container.firstChild);
1023
+ }
1024
+
1025
+ const dialog = document.createElement('ui-dialog-box');
1026
+ dialog.id = 'interactiveDialog';
1027
+ if (size !== 'custom') dialog.setAttribute('size', size);
1028
+ dialog.setAttribute('variant', variant);
1029
+ dialog.setAttribute('status', status);
1030
+ dialog.setAttribute('backdrop', backdrop);
1031
+ dialog.setAttribute('position', position);
1032
+ if (okText) dialog.setAttribute('ok-text', okText);
1033
+ if (cancelText) dialog.setAttribute('cancel-text', cancelText);
1034
+ if (bgColor !== '#ffffff') dialog.setAttribute('background-color', bgColor);
1035
+
1036
+ if (draggable) dialog.setAttribute('draggable', '');
1037
+ if (resizable) dialog.setAttribute('resizable', '');
1038
+ if (showHeader === false) dialog.setAttribute('show-header', 'false'); // defaults true
1039
+ if (showFooter === false) dialog.setAttribute('show-footer', 'false');
1040
+ if (showMenu) {
1041
+ dialog.setAttribute('show-menu', 'true');
1042
+ // Provide example menu items so the button works
1043
+ const menuItems = [
1044
+ { label: 'Action 1', id: 'act1', icon: 'zap' },
1045
+ { label: 'Action 2', id: 'act2', icon: 'flag' },
1046
+ { type: 'separator' },
1047
+ { label: 'Close', id: 'close', icon: 'x', variant: 'danger' },
1048
+ ];
1049
+ dialog.setAttribute('menu-items', JSON.stringify(menuItems));
1050
+ }
1051
+ if (showMin === false) dialog.setAttribute('show-minimize', 'false');
1052
+ if (showMax === false) dialog.setAttribute('show-maximize', 'false');
1053
+ if (showClose === false) dialog.setAttribute('show-close', 'false');
1054
+ dialog.setAttribute('dialog-title', `Dialog`);
1055
+
1056
+ // Content
1057
+ const content = document.createElement('div');
1058
+ content.innerHTML = `<p>Interact with controls above.</p><p>Size: ${size}</p>`;
1059
+ dialog.appendChild(content);
1060
+
1061
+ // Always provide a default close button if none specified to avoid trapped dialog
1062
+ if (!okText && !cancelText) {
1063
+ dialog.setAttribute('ok-text', 'Close');
1064
+ }
1065
+
1066
+ container.appendChild(dialog);
1067
+
1068
+ // Events attachment
1069
+ const iDSize = document.getElementById('iDSize');
1070
+ const iDVariant = document.getElementById('iDVariant');
1071
+ const iDStatus = document.getElementById('iDStatus');
1072
+ const iDBackdrop = document.getElementById('iDBackdrop');
1073
+ const iDPosition = document.getElementById('iDPosition');
1074
+ const iDOkText = document.getElementById('iDOkText');
1075
+ const iDCancelText = document.getElementById('iDCancelText');
1076
+
1077
+ const checkboxes = ['iDDraggable', 'iDResizable', 'iDShowHeader', 'iDShowFooter', 'iDShowMenu', 'iDShowMin', 'iDShowMax', 'iDShowClose'];
1078
+
1079
+ if (iDSize) iDSize.addEventListener('dropdownChange', updateInteractiveDialog);
1080
+ if (iDVariant) iDVariant.addEventListener('dropdownChange', updateInteractiveDialog);
1081
+ if (iDStatus) iDStatus.addEventListener('dropdownChange', updateInteractiveDialog);
1082
+ if (iDBackdrop) iDBackdrop.addEventListener('dropdownChange', updateInteractiveDialog);
1083
+ if (iDPosition) iDPosition.addEventListener('dropdownChange', updateInteractiveDialog);
1084
+ if (iDOkText) iDOkText.addEventListener('inputChange', updateInteractiveDialog);
1085
+ if (iDCancelText) iDCancelText.addEventListener('inputChange', updateInteractiveDialog);
1086
+ if (document.getElementById('iDBgColor')) document.getElementById('iDBgColor').addEventListener('colorChange', updateInteractiveDialog);
1087
+
1088
+ checkboxes.forEach(id => {
1089
+ const el = document.getElementById(id);
1090
+ if (el) el.addEventListener('checkboxChange', updateInteractiveDialog);
1091
+ });
1092
+
1093
+ dialog.setAttribute('icon-library', 'lucide');
1094
+
1095
+ // Events
1096
+ dialog.addEventListener('menu', () => window.logEvent('Menu button clicked'));
1097
+ dialog.addEventListener('ok', () => window.logEvent('OK Clicked'));
1098
+ dialog.addEventListener('cancel', () => window.logEvent('Cancel Clicked'));
1099
+ dialog.addEventListener('dialogClosed', () => window.logEvent('Dialog Closed'));
1100
+ dialog.addEventListener('dialogMaximized', e => window.logEvent(`Maximized: ${e.detail.maximized}`));
1101
+ dialog.addEventListener('dialogMinimized', e => window.logEvent(`Minimized: ${e.detail.minimized}`));
1102
+
1103
+ // Generate code block
1104
+ const codeBlock = document.getElementById('dialogCodeBlock');
1105
+ if (codeBlock) {
1106
+ let props = '';
1107
+ if (size !== 'custom') props += ` size="${size}"`;
1108
+ if (variant !== 'outlined') props += ` variant="${variant}"`;
1109
+ if (status !== 'default') props += ` status="${status}"`;
1110
+ if (backdrop !== 'default') props += ` backdrop="${backdrop}"`;
1111
+ if (position !== 'center') props += ` position="${position}"`;
1112
+ if (okText) props += ` ok-text="${okText}"`;
1113
+ else if (!cancelText) props += ` ok-text="Close"`;
1114
+ if (cancelText) props += ` cancel-text="${cancelText}"`;
1115
+ if (bgColor !== '#ffffff') props += ` background-color="${bgColor}"`;
1116
+ if (draggable) props += ' draggable';
1117
+ if (resizable) props += ' resizable';
1118
+ if (showHeader === false) props += ' show-header="false"';
1119
+ if (showFooter === false) props += ' show-footer="false"';
1120
+ if (showMenu) props += ' show-menu="true"';
1121
+ if (showMin === false) props += ' show-minimize="false"';
1122
+ if (showMax === false) props += ' show-maximize="false"';
1123
+ if (showClose === false) props += ' show-close="false"';
1124
+
1125
+ codeBlock.innerText = `<ui-dialog-box${props} dialog-title="Dialog Title" icon-library="lucide">
1126
+ <div>Dialog content goes here</div>
1127
+ </ui-dialog-box>`;
1128
+ }
1129
+ }
1130
+ };
1131
+
1132
+ window.copyDialogCode = () => {
1133
+ const code = document.getElementById('dialogCodeBlock').innerText;
1134
+ const btn = document.getElementById('copyDialogBtn');
1135
+ navigator.clipboard.writeText(code).then(() => {
1136
+ const originalText = btn.innerText;
1137
+ btn.innerText = 'Copied!';
1138
+ btn.style.background = '#10b981';
1139
+ setTimeout(() => {
1140
+ btn.innerText = originalText;
1141
+ btn.style.background = 'rgba(255,255,255,0.1)';
1142
+ }, 2000);
1143
+ });
1144
+ };
1145
+
1146
+ window.showApexShowcase = function () {
1147
+ const container = document.getElementById('dialogDemoContainer');
1148
+ if (!container) return;
1149
+ container.innerHTML = `
1150
+ <div class="demo-block">
1151
+ <h3>🌌 Apex Tier: Application Framework</h3>
1152
+ <p style="color: #6b7280; margin-bottom: 20px;">Transforming the dialog into a full-featured application frame with Toolbars, Side-Navs, and Edge Snapping.</p>
1153
+
1154
+ <div style="display: flex; gap: 15px; flex-wrap: wrap;">
1155
+ <ui-button id="btnLaunchApexApp" size="md" variant="outline" color="primary" label="🚀 Launch Master/Detail App" style="--btn-bg: linear-gradient(to right, #10b981, #8b5cf6);"></ui-button>
1156
+ <ui-button id="btnLaunchSnapping" size="md" variant="outline" color="secondary" label="🧲 Test Edge Snapping" style="--btn-bg: #111827;"></ui-button>
1157
+ </div>
1158
+
1159
+ <!-- Apex Master/Detail Dialog -->
1160
+ <ui-dialog-box id="dApexFull"
1161
+ dialog-title="Cloud Console v2.0"
1162
+ layout="side-nav"
1163
+ show-toolbar="true"
1164
+ show-status-bar="true"
1165
+ size="lg"
1166
+ draggable="true"
1167
+ resizable="true"
1168
+ ok-text="Save Assets"
1169
+ cancel-text="Dismiss"
1170
+ icon-library="lucide">
1171
+
1172
+ <div slot="side-nav" style="padding: 16px; display: flex; flex-direction: column; gap: 8px;">
1173
+ <div style="padding: 10px; background: rgba(0,0,0,0.05); border-radius: 6px; font-weight: 600; font-size: 13px;">📁 Projects</div>
1174
+ <div style="padding: 10px; border-radius: 6px; font-size: 13px; color: #666; cursor: pointer;">🌐 Domains</div>
1175
+ <div style="padding: 10px; border-radius: 6px; font-size: 13px; color: #666; cursor: pointer;">🔐 Security</div>
1176
+ <div style="padding: 10px; border-radius: 6px; font-size: 13px; color: #666; cursor: pointer;">⚙️ Settings</div>
1177
+ </div>
1178
+
1179
+ <div slot="toolbar" style="display: flex; align-items: center; gap: 8px; width: 100%;">
1180
+ <ui-button size="md" variant="outline" color="secondary">
1181
+ <ui-icon name="plus" library="lucide" size="14px" slot="prefix"></ui-icon> New Resource
1182
+ </ui-button>
1183
+ <ui-button size="md" variant="outline" color="secondary" label="Refresh"></ui-button>
1184
+ <div style="flex: 1;"></div>
1185
+ <ui-input placeholder="Search resources..." style="width: 200px;"></ui-input>
1186
+ </div>
1187
+
1188
+ <div style="padding: 24px;">
1189
+ <h2>Main Content Area</h2>
1190
+ <p>This dialog uses <code>layout="side-nav"</code> which automatically renders the sidebar slot.</p>
1191
+ <div style="border: 1px dashed #ccc; padding: 40px; text-align: center; border-radius: 12px; margin-top: 20px; color: #999;">
1192
+ Dashboard Charts / Data Grid would go here.
1193
+ </div>
1194
+
1195
+ <ui-button id="btnForceConfirm" size="md" variant="outline" color="danger" label="Force Sub-Overlay Confirmation" style="margin-top: 20px;"></ui-button>
1196
+ </div>
1197
+
1198
+ <div slot="status-bar" style="display: flex; align-items: center; gap: 15px; width: 100%;">
1199
+ <span>Ready</span>
1200
+ <span style="display: flex; align-items: center; gap: 4px;"><ui-icon name="database" library="lucide" size="12px"></ui-icon> connected: us-east-1</span>
1201
+ <div style="flex: 1;"></div>
1202
+ <span>Last sync: 2s ago</span>
1203
+ </div>
1204
+
1205
+ </ui-dialog-box>
1206
+
1207
+ <!-- Snapping Demo -->
1208
+ <ui-dialog-box id="dSnapping"
1209
+ dialog-title="Window Manager"
1210
+ draggable="true"
1211
+ snap-to-edges="true"
1212
+ width="400px"
1213
+ icon-library="lucide">
1214
+ <div style="padding: 20px;">
1215
+ <h3>Try Edge Snapping! 🧲</h3>
1216
+ <p>Drag this dialog to the <b>Top, Left, or Right</b> edges of your screen.</p>
1217
+ <div style="background: #fffbeb; border: 1px solid #fde68a; padding: 12px; border-radius: 8px; font-size: 13px; color: #92400e;">
1218
+ A blue highlight bar will appear to show where the window will snap.
1219
+ </div>
1220
+ </div>
1221
+ </ui-dialog-box>
1222
+ </div>
1223
+ `;
1224
+
1225
+ setTimeout(() => {
1226
+ document.getElementById('btnLaunchApexApp')?.addEventListener('click', () => window.openDialog('dApexFull'));
1227
+ document.getElementById('btnLaunchSnapping')?.addEventListener('click', () => window.openDialog('dSnapping'));
1228
+ document.getElementById('btnForceConfirm')?.addEventListener('click', () => window.confirmApexAction());
1229
+ }, 100);
1230
+
1231
+ window.confirmApexAction = () => {
1232
+ const d = document.getElementById('dApexFull');
1233
+ if (d) {
1234
+ d.showConfirmation('Unsaved Changes', 'You have unsaved configuration changes. Are you sure you want to discard them and refresh the project?', () => {
1235
+ alert('Action confirmed in sub-overlay!');
1236
+ });
1237
+ }
1238
+ };
1239
+ };
1240
+
1241
+ window.showGodTier = function () {
1242
+ const container = document.getElementById('dialogDemoContainer');
1243
+ if (!container) return;
1244
+ container.innerHTML = `
1245
+ <div class="demo-block">
1246
+ <h3>🎭 God Tier: Ultimate Window Experience</h3>
1247
+ <p style="color: #6b7280; margin-bottom: 20px;">Experience the absolute pinnacle of UI with Physical Shadows, Global Blurring, and Integrated Wizard Steppers.</p>
1248
+
1249
+ <div style="display: flex; gap: 15px; flex-wrap: wrap;">
1250
+ <ui-button id="btnLaunchWizard" size="md" variant="outline" color="primary" label="🧛 Launch Setup Wizard" style="--btn-bg: linear-gradient(to right, #7c3aed, #db2777);"></ui-button>
1251
+ <ui-button id="btnLaunchGlobalBlur" size="md" variant="outline" color="secondary" label="☁️ Global Backdrop Blur" style="--btn-bg: #111827;"></ui-button>
1252
+ </div>
1253
+
1254
+ <!-- Wizard Dialog -->
1255
+ <ui-dialog-box id="dWizard"
1256
+ dialog-title="Project Setup Wizard"
1257
+ steps='["Configuration", "Permissions", "Resources", "Review"]'
1258
+ current-step="1"
1259
+ draggable="true"
1260
+ resizable="true"
1261
+ ok-text="Next Step"
1262
+ cancel-text="Exit Wizard"
1263
+ icon-library="lucide">
1264
+
1265
+ <div id="wizardStepContent" style="padding: 30px; min-height: 150px;">
1266
+ <h4>Step 1: Basic Configuration</h4>
1267
+ <p>Select your deployment region and base language settings below.</p>
1268
+ <ui-dropdown style="width: 100%; margin-top: 10px;" options='[
1269
+ {"label": "US-East (Virginia)", "value": "US-East (Virginia)"},
1270
+ {"label": "EU-West (Ireland)", "value": "EU-West (Ireland)"},
1271
+ {"label": "AP-South (Mumbai)", "value": "AP-South (Mumbai)"}
1272
+ ]' value="US-East (Virginia)"></ui-dropdown>
1273
+ </div>
1274
+ </ui-dialog-box>
1275
+
1276
+ <!-- Global Blur Dialog -->
1277
+ <ui-dialog-box id="dGlobalBlur"
1278
+ dialog-title="Total Focus Mode"
1279
+ global-blur="true"
1280
+ ok-text="Complete Task"
1281
+ cancel-text="Exit Focus Mode"
1282
+ width="450px"
1283
+ icon-library="lucide">
1284
+ <div style="padding: 30px; text-align: center;">
1285
+ <ui-icon name="eye-off" library="lucide" size="48px" style="color: #7c3aed; margin-bottom: 20px;"></ui-icon>
1286
+ <h3>Immersion at 100%</h3>
1287
+ <p>Notice how everything else on the screen is <b>blurred and grayed out</b>. This ensures zero distractions until the task is complete.</p>
1288
+ </div>
1289
+ </ui-dialog-box>
1290
+ </div>
1291
+ `;
1292
+
1293
+ // Wizard Logic
1294
+ setTimeout(() => {
1295
+ document.getElementById('btnLaunchWizard')?.addEventListener('click', () => window.openDialog('dWizard'));
1296
+ document.getElementById('btnLaunchGlobalBlur')?.addEventListener('click', () => window.openDialog('dGlobalBlur'));
1297
+
1298
+ const d = document.getElementById('dWizard');
1299
+ if (d) {
1300
+ d.addEventListener('ok', e => {
1301
+ e.preventDefault();
1302
+ const current = Math.min(d.currentStep + 1, 4);
1303
+ d.currentStep = current;
1304
+ d.okText = current === 4 ? 'Finish Setup' : 'Next Step';
1305
+
1306
+ const contents = [
1307
+ '<h4>Step 1: Configuration</h4><p>Set up your environment variables here.</p>',
1308
+ '<h4>Step 2: Security</h4><p>Assign IAM roles and user permissions.</p>',
1309
+ '<h4>Step 3: Resources</h4><p>Select instance sizes and storage quotas.</p>',
1310
+ '<h4>Step 4: Final Review</h4><p>Click Finish to deploy your changes.</p>',
1311
+ ];
1312
+ const stepContent = document.getElementById('wizardStepContent');
1313
+ if (stepContent) stepContent.innerHTML = contents[current - 1];
1314
+ });
1315
+ }
1316
+ }, 100);
1317
+ };
1318
+
1319
+ window.showSovereignTier = function () {
1320
+ const container = document.getElementById('dialogDemoContainer');
1321
+ if (!container) return;
1322
+ container.innerHTML = `
1323
+ <div class="demo-block">
1324
+ <h3>⚡ Sovereign Tier: Operating System Simulation</h3>
1325
+ <p style="color: #6b7280; margin-bottom: 20px;">The absolute zenith of component engineering. Truly multi-window orchestration with dock, detached pop-outs, and intelligent guards.</p>
1326
+
1327
+ <div style="display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 30px;">
1328
+ <ui-button id="btnSpawnTerminal" size="md" variant="outline" color="secondary" label="📟 Spawn Terminal" style="--btn-bg: #111827;"></ui-button>
1329
+ <ui-button id="btnSpawnEditor" size="md" variant="outline" color="success" label="📝 Spawn Editor (Dirty)"></ui-button>
1330
+ <ui-button id="btnSpawnMonitor" size="md" variant="outline" color="success" label="📈 Spawn Monitor (Skeleton)"></ui-button>
1331
+ </div>
1332
+
1333
+ <div style="background: #f3f4f6; padding: 20px; border-radius: 12px; border: 1px solid #ddd;">
1334
+ <h4 style="margin-top: 0;">Window Orchestration</h4>
1335
+ <div style="display: flex; gap: 10px;">
1336
+ <ui-button id="btnCascadeWindows" size="md" variant="outline" color="secondary" label="Cascade Windows" style="--btn-bg: white;"></ui-button>
1337
+ <ui-button id="btnTileWindows" size="md" variant="outline" color="secondary" label="Tile Windows" style="--btn-bg: white;"></ui-button>
1338
+ </div>
1339
+ <p style="font-size: 12px; color: #666; margin-top: 10px;">Try spawning multiple windows then tiling them!</p>
1340
+ </div>
1341
+
1342
+ <p style="margin-top: 20px; font-size: 14px; font-style: italic; color: #444;">
1343
+ <b>Key Features:</b><br>
1344
+ - Minimize to Dock (bottom taskbar)<br>
1345
+ - Pop-out to real Browser Window<br>
1346
+ - Auto-guard Confirmation for "Dirty" editors<br>
1347
+ - Skeleton Loading mode
1348
+ </p>
1349
+ </div>
1350
+ `;
1351
+
1352
+ setTimeout(() => {
1353
+ document.getElementById('btnSpawnTerminal')?.addEventListener('click', () => window.spawnSovWindow('Terminal'));
1354
+ document.getElementById('btnSpawnEditor')?.addEventListener('click', () => window.spawnSovWindow('Editor'));
1355
+ document.getElementById('btnSpawnMonitor')?.addEventListener('click', () => window.spawnSovWindow('Monitor'));
1356
+ document.getElementById('btnCascadeWindows')?.addEventListener('click', () => document.querySelector('ui-dialog-box').constructor.cascade());
1357
+ document.getElementById('btnTileWindows')?.addEventListener('click', () => document.querySelector('ui-dialog-box').constructor.tile());
1358
+ }, 100);
1359
+
1360
+ window.spawnSovWindow = type => {
1361
+ const id = 'sov-' + type.toLowerCase() + '-' + Math.round(Math.random() * 1000);
1362
+ const d = document.createElement('ui-dialog-box');
1363
+ d.id = id;
1364
+ d.setAttribute('dialog-title', type + ' - ' + id.substring(id.length - 4));
1365
+ d.setAttribute('draggable', 'true');
1366
+ d.setAttribute('resizable', 'true');
1367
+ d.setAttribute('backdrop', 'none');
1368
+ d.setAttribute('dock-label', type);
1369
+ d.setAttribute('allow-pop-out', 'true');
1370
+ d.setAttribute('icon-library', 'lucide');
1371
+ d.setAttribute('width', '400px');
1372
+ d.setAttribute('height', '300px');
1373
+ d.setAttribute('ok-text', 'Apply Changes');
1374
+ d.setAttribute('cancel-text', 'Exit Window');
1375
+
1376
+ // Starting position randomness
1377
+ d.style.position = 'fixed';
1378
+ d.style.left = 150 + Math.random() * 200 + 'px';
1379
+ d.style.top = 150 + Math.random() * 200 + 'px';
1380
+ d.style.margin = '0';
1381
+
1382
+ if (type === 'Editor') {
1383
+ d.setAttribute('dirty', 'true');
1384
+ d.innerHTML =
1385
+ '<div style="padding: 20px;"><h3>Unsaved Work</h3><p>Try closing me directly. The sovereign guard will stop you!</p><ui-input multiline="true" rows="4" value="Typing some data..." style="width:100%;"></ui-input><ui-button class="btn-close-editor" label="Close" style="margin-top:12px;"></ui-button></div>';
1386
+ const editorCloseBtn = d.querySelector('.btn-close-editor');
1387
+ if (editorCloseBtn) {
1388
+ editorCloseBtn.addEventListener('click', () => d.hide());
1389
+ }
1390
+ } else if (type === 'Monitor') {
1391
+ d.setAttribute('loading', 'true');
1392
+ d.innerHTML =
1393
+ '<div style="padding: 24px;"><h3>Live Data Stream</h3><div style="margin-top:20px; height:20px; width:80%;">Pulse</div><div style="margin-top:10px; height:100px; width:100%;">Chart Chart Chart Chart Chart</div></div>';
1394
+ setTimeout(() => (d.loading = false), 3000);
1395
+ } else {
1396
+ d.innerHTML = '<div style="padding: 20px; background: #000; color: #0f0; height: 100%; font-family: monospace;">user@dreamui:~$ _</div>';
1397
+ }
1398
+
1399
+ document.body.appendChild(d);
1400
+ setTimeout(() => d.show(), 50);
1401
+ };
1402
+ };
1403
+
1404
+ window.testDialogResult = async function () {
1405
+ const id = 'dResultPrompt';
1406
+ let d = document.getElementById(id);
1407
+ if (!d) {
1408
+ d = document.createElement('ui-dialog-box');
1409
+ d.id = id;
1410
+ d.setAttribute('dialog-title', 'Choose Your Upgrade');
1411
+ d.setAttribute('ok-text', 'Accept Upgrade');
1412
+ d.setAttribute('cancel-text', 'Decline');
1413
+ d.setAttribute('size', 'sm');
1414
+ d.setAttribute('icon-library', 'lucide');
1415
+ document.body.appendChild(d);
1416
+ }
1417
+
1418
+ // Always re-render inner content to ensure select is present
1419
+ d.innerHTML = `
1420
+ <div style="padding: 20px;">
1421
+ <h4>System Reward</h4>
1422
+ <p>Select a reward to continue your journey.</p>
1423
+ <ui-dropdown id="rewardSelect" name="rewardSelect" style="width: 100%; margin-top: 10px;" options='[
1424
+ {"label": "💎 +5000 Experience", "value": "XP"},
1425
+ {"label": "💰 +1000 Gold", "value": "GOLD"},
1426
+ {"label": "🧪 Mystic Elixir", "value": "ELIXIR"}
1427
+ ]' value="XP"></ui-dropdown>
1428
+ </div>
1429
+ `;
1430
+
1431
+ try {
1432
+ const result = await d.showWithResult();
1433
+ if (!result.canceled && result.data) {
1434
+ alert('🎉 Selection Success: ' + JSON.stringify(result.data));
1435
+ } else if (result.canceled) {
1436
+ console.log('Dialog was canceled by user.');
1437
+ } else {
1438
+ alert('ℹ️ No selection made (Form was empty)');
1439
+ }
1440
+ } catch (err) {
1441
+ console.log('Dialog error:', err);
1442
+ }
1443
+ };
1444
+
1445
+ window.showCustomHeaderShowcase = function () {
1446
+ const container = document.getElementById('dialogDemoContainer');
1447
+ if (!container) return;
1448
+ container.innerHTML = `
1449
+ <div class="demo-block">
1450
+ <h3>🎨 Ultra-Custom Header Architecture</h3>
1451
+ <p style="color: #6b7280; margin-bottom: 20px;">Take full control of the frame. Inject images, remove OS controls, or replace the entire header via slots.</p>
1452
+
1453
+ <div style="display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 30px;">
1454
+ <ui-button onclick="openDialog('dBranded')" size="md" variant="outline" color="secondary" label="🖼️ Branded with Image" style="--btn-bg: #111827;"></ui-button>
1455
+ <ui-button onclick="openDialog('dStealth')" size="md" variant="outline" color="primary" label="🕵️ Stealth (No Controls)" style="--btn-bg: #6366f1;"></ui-button>
1456
+ <ui-button onclick="openDialog('dFullHeader')" size="md" variant="outline" color="secondary" label="🧩 Full Slot Replacement" style="--btn-bg: #ec4899;"></ui-button>
1457
+ </div>
1458
+
1459
+ <!-- Branded -->
1460
+ <ui-dialog-box id="dBranded" dialog-title="Dream Workspace" header-image="https://primefaces.org/cdn/primereact/images/logo.png" width="400px" ok-text="Explore" cancel-text="Dismiss" icon-library="lucide" resizable="true">
1461
+ <div style="padding: 24px;">
1462
+ <p>Header image automatically injected before the title. Resizing is enabled via the bottom-right corner.</p>
1463
+ </div>
1464
+ </ui-dialog-box>
1465
+
1466
+ <!-- Stealth -->
1467
+ <ui-dialog-box id="dStealth" dialog-title="Kiosk Mode" show-close="false" show-minimize="false" show-maximize="false" width="400px" ok-text="Finish" cancel-text="Exit" icon-library="lucide">
1468
+ <div style="padding: 24px;">
1469
+ <p>Buttons removed for "Kiosk" or "Mandatory Action" modes.</p>
1470
+ </div>
1471
+ </ui-dialog-box>
1472
+
1473
+ <!-- Full Header Replacement -->
1474
+ <ui-dialog-box id="dFullHeader" width="500px" ok-text="Save" cancel-text="Close">
1475
+ <div slot="header" style="background: linear-gradient(90deg, #ec4899, #8b5cf6); padding: 15px 20px; color: white; display: flex; justify-content: space-between; align-items:center;">
1476
+ <div style="font-weight: bold; font-size: 1.2rem;">✨ MAGICAL HEADER SLOT</div>
1477
+ <ui-button onclick="closeDialog('dFullHeader')" variant="ghost" color="secondary" label="×" style="--btn-text: white; font-size: 20px;"></ui-button>
1478
+ </div>
1479
+ <div style="padding: 40px; text-align: center;">
1480
+ <h3>Framework Hijacked!</h3>
1481
+ <p>The entire standard header has been replaced by a custom pink-purple gradient div via the <b>header slot</b>.</p>
1482
+ </div>
1483
+ </ui-dialog-box>
1484
+
1485
+ </div>
1486
+ `;
1487
+ };
1488
+
1489
+ window.showMockupDesign = function () {
1490
+ const container = document.getElementById('dialogDemoContainer');
1491
+ if (!container) return;
1492
+ container.innerHTML = `
1493
+ <div class="demo-block">
1494
+ <h3>📐 Pixel-Perfect Mockup Matcher</h3>
1495
+ <p style="color: #6b7280; margin-bottom: 20px;">Every pixel matters. This demo follows the 24px outer / 20px inner spacing rules, blue primary buttons, and left-aligned Reset actions.</p>
1496
+
1497
+ <div style="display: flex; gap: 12px; margin-bottom: 30px;">
1498
+ <ui-button onclick="openDialog('dMockup')" size="md" variant="outline" color="secondary" label="🚀 Launch Mockup Modal" style="--btn-bg: #111827;"></ui-button>
1499
+ </div>
1500
+
1501
+ <ui-dialog-box
1502
+ id="dMockup"
1503
+ dialog-title="Title modal"
1504
+ width="500px"
1505
+ ok-text="Save"
1506
+ cancel-text="Cancel"
1507
+ reset-text="Reset"
1508
+ show-menu="true"
1509
+ icon-library="lucide"
1510
+ >
1511
+ <ul slot="menu-list" style="list-style: none; padding: 0; margin: 0;">
1512
+ <li style="padding: 8px 12px; cursor: pointer; border-radius: 4px;" onmouseover="this.style.background='#f3f4f6'" onmouseout="this.style.background='transparent'">Action 1</li>
1513
+ <li style="padding: 8px 12px; cursor: pointer; border-radius: 4px;" onmouseover="this.style.background='#f3f4f6'" onmouseout="this.style.background='transparent'">Action 2</li>
1514
+ </ul>
1515
+ <div slot="header-icon">
1516
+ <div style="width: 24px; height: 24px; border: 2px solid #10b981; border-radius: 50%;"></div>
1517
+ </div>
1518
+ <div>
1519
+ A dialog is a type of modal window that appears in front of app content to provide critical information, or ask for a decision.
1520
+ </div>
1521
+ </ui-dialog-box>
1522
+
1523
+ </div>
1524
+ `;
1525
+ };
1526
+
1527
+ window.showTermsDialog = function () {
1528
+ const container = document.getElementById('dialogDemoContainer');
1529
+ if (!container) return;
1530
+ container.innerHTML = `
1531
+ <div class="demo-block">
1532
+ <h3>⚖️ Terms and Agreement Mode</h3>
1533
+ <p style="color: #6b7280; margin-bottom: 20px;">The <code>type="terms"</code> preset automatically configures the title, Accept/Decline labels, and enforces a scrollable 'paper' layout.</p>
1534
+
1535
+ <ui-button onclick="openDialog('dTerms')" size="md" variant="outline" color="success" label="View License Agreement" style="--btn-bg: #059669;"></ui-button>
1536
+
1537
+ <ui-dialog-box id="dTerms" type="terms" icon-library="lucide">
1538
+ <div slot="header-icon">
1539
+ <ui-icon name="scroll" library="lucide" size="24px" style="color: #059669;"></ui-icon>
1540
+ </div>
1541
+ <div style="line-height: 1.6; color: #374151;">
1542
+ <h3>1. Terms of Use</h3>
1543
+ <p>By accessing this application, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws.</p>
1544
+
1545
+ <h3>2. Use License</h3>
1546
+ <p>Permission is granted to temporarily download one copy of the materials (information or software) on DreamUI's website for personal, non-commercial transitory viewing only.</p>
1547
+
1548
+ <h3>3. Disclaimer</h3>
1549
+ <p>The materials on DreamUI's website are provided on an 'as is' basis. DreamUI makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.</p>
1550
+
1551
+ <h3>4. Limitations</h3>
1552
+ <p>In no event shall DreamUI or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials on DreamUI's website.</p>
1553
+
1554
+ <h3>5. Governing Law</h3>
1555
+ <p>These terms and conditions are governed by and construed in accordance with the laws of the jurisdiction and you irrevocably submit to the exclusive jurisdiction of the courts in that State or location.</p>
1556
+
1557
+ <div style="margin-top: 20px; padding: 12px; background: #f0fdf4; border-radius: 8px; border: 1px solid #bbf7d0;">
1558
+ <ui-checkbox id="agreeCheckbox" label="I have read and agree to the terms listed above."></ui-checkbox>
1559
+ </div>
1560
+ </div>
1561
+ </ui-dialog-box>
1562
+ </div>
1563
+ `;
1564
+
1565
+ setTimeout(() => {
1566
+ const d = document.getElementById('dTerms');
1567
+ const agree = document.getElementById('agreeCheckbox');
1568
+ if (d && agree) {
1569
+ if (!d.okDisabled) d.okDisabled = true; // Set initial state
1570
+ agree.addEventListener('checkboxChange', e => {
1571
+ d.okDisabled = !e.detail.checked;
1572
+ });
1573
+ d.addEventListener('ok', () => alert('Terms Accepted!'));
1574
+ }
1575
+ }, 100);
1576
+ };
1577
+
1578
+ window.showEliteFeatures = function () {
1579
+ const container = document.getElementById('dialogDemoContainer');
1580
+ if (!container) return;
1581
+ container.innerHTML = `
1582
+ <div class="demo-block">
1583
+ <h3>🏆 "Elite" Intelligence Features</h3>
1584
+ <p style="color: #6b7280; margin-bottom: 20px;">Features that differentiate standard modals from professional windowing systems.</p>
1585
+
1586
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px;">
1587
+ <div style="padding: 24px; background: #f9fafb; border-radius: 12px; border: 1px solid #e5e7eb;">
1588
+ <ui-icon name="pin" library="lucide" size="32px" style="color: #10b981; margin-bottom: 12px;"></ui-icon>
1589
+ <h4>Persistent Layout</h4>
1590
+ <p style="font-size: 14px; color: #6b7280; margin-bottom: 16px;">Moves and resizes are remembered across page reloads using <code>remember="true"</code>.</p>
1591
+ <ui-button onclick="openDialog('dPersistent')" size="md" variant="outline" color="success" label="Open Sticky Window" style="width: 100%;"></ui-button>
1592
+ </div>
1593
+
1594
+ <div style="padding: 24px; background: #f9fafb; border-radius: 12px; border: 1px solid #e5e7eb;">
1595
+ <ui-icon name="smartphone" library="lucide" size="32px" style="color: #8b5cf6; margin-bottom: 12px;"></ui-icon>
1596
+ <h4>Touch Gestures</h4>
1597
+ <p style="font-size: 14px; color: #6b7280; margin-bottom: 16px;">Enables <code>swipe-to-close</code> on mobile. Try swiping left or right to dismiss on touch devices.</p>
1598
+ <ui-button onclick="openDialog('dSwipe')" size="md" variant="outline" color="secondary" label="Open Gesture Window" style="width: 100%; --btn-bg: #8b5cf6;"></ui-button>
1599
+ </div>
1600
+ </div>
1601
+
1602
+ <ui-dialog-box id="dPersistent" dialog-title="I Remember You" ok-text="Save Position" cancel-text="Close" remember="true" resizable="true" is-draggable="true" icon-library="lucide">
1603
+ <div style="padding: 24px; text-align: center;">
1604
+ <p>Move me to the corner, resize me, or maximize me. Then <b>refresh the page</b>.</p>
1605
+ <div style="margin-top: 10px; font-weight: bold; color: #059669;">✨ Your layout will be restored automatically.</div>
1606
+ </div>
1607
+ </ui-dialog-box>
1608
+
1609
+ <ui-dialog-box id="dSwipe" dialog-title="Swipe Support" ok-text="Dismiss" cancel-text="Cancel" swipe-to-close="true" width="400px" icon-library="lucide">
1610
+ <div style="padding: 24px;">
1611
+ <p>Common on modern mobile apps. If you are on a touch device or using Chrome DevTools mobile mode, swipe me left or right to close.</p>
1612
+ <div style="height: 100px; margin-top: 20px; border: 2px dashed #ddd; display: flex; align-items: center; justify-content: center; color: #9ca3af;">
1613
+ <<< Swipe Area >>>
1614
+ </div>
1615
+ </div>
1616
+ </ui-dialog-box>
1617
+ </div>
1618
+ `;
1619
+ };
1620
+ window.showSecurityLifecycleFeatures = function () {
1621
+ const container = document.getElementById('dialogDemoContainer');
1622
+ if (!container) return;
1623
+ container.innerHTML = `
1624
+ <div class="demo-block">
1625
+ <h3>🔐 Security & Lifecycle Operations</h3>
1626
+ <p style="color: #6b7280; margin-bottom: 20px;">Mission-critical features for sensitive applications and advanced UX feedback.</p>
1627
+
1628
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px;">
1629
+ <div style="padding: 24px; background: #fff1f2; border-radius: 12px; border: 1px solid #fecaca;">
1630
+ <ui-icon name="shield-check" library="lucide" size="32px" style="color: #e11d48; margin-bottom: 12px;"></ui-icon>
1631
+ <h4>Sensitive Action Confirmation</h4>
1632
+ <p style="font-size: 14px; color: #6b7280; margin-bottom: 16px;">Using <code>sensitive="true"</code> requires a secondary verification overlay before the OK event fires.</p>
1633
+ <ui-button onclick="openDialog('dSnsitive')" size="md" variant="outline" color="danger" label="Execute Restricted Action" style="width: 100%; --btn-bg: #e11d48;"></ui-button>
1634
+ </div>
1635
+
1636
+ <div style="padding: 24px; background: #f0f9ff; border-radius: 12px; border: 1px solid #bae6fd;">
1637
+ <ui-icon name="loader" library="lucide" size="32px" style="color: #0284c7; margin-bottom: 12px;"></ui-icon>
1638
+ <h4>Live Progress & Lifecycle</h4>
1639
+ <p style="font-size: 14px; color: #6b7280; margin-bottom: 16px;">Integrated <code>progress</code> bar for long-running tasks and <code>timeout</code> for session handling.</p>
1640
+ <ui-button onclick="openDialog('dLifecycle'); startProgressDemo();" size="md" variant="outline" color="primary" label="Start Process Modal" style="width: 100%; --btn-bg: #0284c7;"></ui-button>
1641
+ </div>
1642
+ </div>
1643
+
1644
+ <ui-dialog-box id="dSnsitive" dialog-title="Restrict Access" sensitive="true" ok-text="Delete Core Data" cancel-text="Cancel" status="error" icon-library="lucide">
1645
+ <div style="padding: 24px;">
1646
+ <p>Critical actions require a safety net. This dialog will prompt you again when you click Delete.</p>
1647
+ </div>
1648
+ </ui-dialog-box>
1649
+
1650
+ <ui-dialog-box id="dLifecycle" dialog-title="Installing Updates" progress="0" ok-text="Done" cancel-text="Abort" ok-disabled="true" icon-library="lucide">
1651
+ <div style="padding: 24px; text-align: center;">
1652
+ <div id="progressStatus" style="font-weight: 500; font-size: 1.1rem; margin-bottom: 10px;">Initializing...</div>
1653
+ <p>This modal tracks real-time progress and auto-enables the finish button.</p>
1654
+ </div>
1655
+ </ui-dialog-box>
1656
+ </div>
1657
+ `;
1658
+
1659
+ // Add event listeners for audit logs
1660
+ setTimeout(() => {
1661
+ const d = document.getElementById('dSnsitive');
1662
+ if (d) d.addEventListener('auditLog', e => console.log('🛡️ Audit Log:', e.detail));
1663
+ }, 100);
1664
+ };
1665
+
1666
+ window.startProgressDemo = function () {
1667
+ const d = document.getElementById('dLifecycle');
1668
+ const status = document.getElementById('progressStatus');
1669
+ let p = 0;
1670
+ d.show();
1671
+
1672
+ const interval = setInterval(() => {
1673
+ p += Math.floor(Math.random() * 15);
1674
+ if (p > 100) p = 100;
1675
+ d.progress = p;
1676
+ if (status) status.innerText = `Downloading Files... ${p}%`;
1677
+
1678
+ if (p === 100) {
1679
+ clearInterval(interval);
1680
+ if (status) status.innerHTML = '✨ <span style="color: #059669;">Update Complete!</span>';
1681
+ d.okDisabled = false;
1682
+ }
1683
+ }, 600);
1684
+ };
1685
+
1686
+ window.showDialogHeaderMastery = function () {
1687
+ const container = document.getElementById('dialogDemoContainer');
1688
+ if (!container) return;
1689
+ container.innerHTML = `
1690
+ <div class="demo-block">
1691
+ <h3>💎 Header Mastery Showcase</h3>
1692
+ <p style="color: #64748b; margin-bottom: 24px;">The <code>ui-dialog-header</code> is fully extensible. Use slots for branding, multi-action toolbars, and status-driven visuals.</p>
1693
+
1694
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 24px;">
1695
+ <div style="background: white; padding: 24px; border-radius: 12px; border: 1px solid #e2e8f0; display: flex; flex-direction: column; gap: 16px;">
1696
+ <h4 style="margin: 0;">🏷️ Branded Slot Header</h4>
1697
+ <p style="font-size: 13px; color: #64748b;">Override the entire header content with a custom slot for deep branding.</p>
1698
+ <ui-button onclick="openDialog('dBrandedHeader')" size="md" variant="outline" color="success" label="Open Branded Dialog" style="margin-top:auto;"></ui-button>
1699
+ </div>
1700
+ <div style="background: white; padding: 24px; border-radius: 12px; border: 1px solid #e2e8f0; display: flex; flex-direction: column; gap: 16px;">
1701
+ <h4 style="margin: 0;">🛠️ Multi-Action Toolbar</h4>
1702
+ <p style="font-size: 13px; color: #64748b;">Inject additional action buttons into the header via <code>slot="header-actions"</code>.</p>
1703
+ <ui-button onclick="openDialog('dMultiAction')" size="md" variant="outline" color="secondary" label="Open Multi-Action Dialog" style="margin-top:auto; --btn-bg: #8b5cf6;"></ui-button>
1704
+ </div>
1705
+ <div style="background: white; padding: 24px; border-radius: 12px; border: 1px solid #e2e8f0; display: flex; flex-direction: column; gap: 16px;">
1706
+ <h4 style="margin: 0;">🎨 Status Elevation</h4>
1707
+ <p style="font-size: 13px; color: #64748b;">Headers that react to the <code>status</code> prop for high-urgency notifications.</p>
1708
+ <div style="display: flex; gap: 8px;">
1709
+ <ui-button onclick="openDialog('dStatusSuccess')" size="md" variant="outline" color="success" label="Success"style="flex:1;"></ui-button>
1710
+ <ui-button onclick="openDialog('dStatusError')" size="md" variant="outline" color="danger" label="Error"style="flex:1;"></ui-button>
1711
+ </div>
1712
+ </div>
1713
+ </div>
1714
+
1715
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 24px; margin-top: 24px;">
1716
+ <!-- Case 4: Avatar Header -->
1717
+ <div style="background: white; padding: 24px; border-radius: 12px; border: 1px solid #e2e8f0; display: flex; flex-direction: column; gap: 16px;">
1718
+ <h4 style="margin: 0;">👤 Profile/Avatar Headers</h4>
1719
+ <p style="font-size: 13px; color: #64748b;">Direct support for user avatars and custom icons without manual slots.</p>
1720
+ <ui-button onclick="openDialog('dAvatarHeader')" size="md" variant="outline" color="success" label="Open Profile Dialog" style="margin-top:auto;"></ui-button>
1721
+ </div>
1722
+ </div>
1723
+
1724
+ <ui-dialog-box id="dBrandedHeader" width="550px" ok-text="Accept" cancel-text="Dismiss">
1725
+ <div slot="header" style="display: flex; align-items: center; gap: 12px; width: 100%;">
1726
+ <div style="background: linear-gradient(135deg, #10b981, #10b981); width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; font-size: 18px;">D</div>
1727
+ <div style="flex: 1;">
1728
+ <h3 style="margin: 0; font-size: 16px; font-weight: 700;">Design System v3</h3>
1729
+ <span style="font-size: 11px; color: #64748b; font-weight: 500;">DREAMUI_CONSOLE_PRO_692</span>
1730
+ </div>
1731
+ <div style="padding: 4px 8px; background: #dcfce7; color: #166534; border-radius: 12px; font-size: 10px; font-weight: bold; text-transform: uppercase;">Verified</div>
1732
+ </div>
1733
+ <div style="padding: 20px;"><p>This header is completely custom using <code>slot="header"</code>.</p></div>
1734
+ </ui-dialog-box>
1735
+
1736
+ <ui-dialog-box id="dAvatarHeader" dialog-title="John Doe" subtitle="Lead Systems Architect" avatar="https://i.pravatar.cc/150?img=68" ok-text="View Profile" cancel-text="Close">
1737
+ <div style="padding: 20px;">
1738
+ <p>This dialog uses the new <code>avatar</code> prop on the header. It handles sizing, border-radius, and alignment automatically.</p>
1739
+ </div>
1740
+ </ui-dialog-box>
1741
+
1742
+ <ui-dialog-box id="dMultiAction" dialog-title="Project Settings" icon="settings" icon-library="lucide" ok-text="Save Changes" cancel-text="Discard">
1743
+ <div slot="header-actions" style="display: flex; gap: 4px;">
1744
+ <ui-button onclick="alert('Starred!')" title="Starred!" variant="ghost" color="secondary" size="md" variant="outline"
1745
+ <ui-icon name="star" library="lucide" size="16px"></ui-icon>
1746
+ </ui-button>
1747
+ <ui-button onclick="alert('Shared!')" title="Shared!" variant="ghost" color="secondary" size="md" variant="outline"
1748
+ <ui-icon name="share-2" library="lucide" size="16px"></ui-icon>
1749
+ </ui-button>
1750
+ </div>
1751
+ <div style="padding: 20px;"><p>Additional actions injected via <code>slot="header-actions"</code>.</p></div>
1752
+ </ui-dialog-box>
1753
+
1754
+ <ui-dialog-box id="dStatusSuccess" status="success" dialog-title="Transaction Complete" ok-text="Understood">
1755
+ <div style="padding: 24px; text-align: center;"><h3>Payment Success!</h3></div>
1756
+ </ui-dialog-box>
1757
+
1758
+ <ui-dialog-box id="dStatusError" status="error" dialog-title="Security Alert" ok-text="Acknowledge">
1759
+ <div style="padding: 24px;"><h4>Connection Refused</h4></div>
1760
+ </ui-dialog-box>
1761
+ </div>
1762
+ `;
1763
+ };
1764
+
1765
+ // Initialize with playground
1766
+ setTimeout(() => {
1767
+ if (window.showInteractiveDialog) showInteractiveDialog();
1768
+ }, 100);
1769
+
1770
+ window.showWindowFeatures = function () {
1771
+ const container = document.getElementById('dialogDemoContainer');
1772
+ if (!container) return;
1773
+ container.innerHTML = `
1774
+ <div class="demo-block" style="display:flex;flex-direction:column;gap:40px;">
1775
+
1776
+ <!-- ① Smooth Drag (no jump on click) -->
1777
+ <div>
1778
+ <h3 style="margin:0 0 6px;">🖱 Smooth Drag — No Jump on Click</h3>
1779
+ <p style="font-size:13px;color:#64748b;margin:0 0 12px;">
1780
+ Draggable dialogs now anchor position on first move (>5 px threshold), so clicking the header
1781
+ no longer snaps the dialog to the cursor.
1782
+ </p>
1783
+ <ui-button onclick="openDialog('wfDragDialog')" size="md" variant="outline" color="primary" label="Open Draggable Dialog" style="--btn-bg: #0ea5e9;"></ui-button>
1784
+ <ui-dialog-box id="wfDragDialog" is-draggable="true" snap-to-edges="true" show-minimize="true" show-maximize="true"
1785
+ ok-text="Accept" cancel-text="Dismiss"
1786
+ icon-library="lucide" dialog-title="Desktop Experience">
1787
+ <div style="padding:12px 0; font-size:14px; color:#475569;">
1788
+ <p><b>✨ Windows Snap:</b> Try dragging me to the very top, left, or right edge of the screen to snap and maximize.</p>
1789
+ <p><b>✨ Integrated Tray:</b> When I am minimized, I move to the new global tray at the bottom center of the screen. Try clicking my tab there to open a <b>Peek Panel</b>!</p>
1790
+ </div>
1791
+ </ui-dialog-box>
1792
+ </div>
1793
+
1794
+ <!-- ② Nested z-index auto-stacking -->
1795
+ <div>
1796
+ <h3 style="margin:0 0 6px;">🗂 Auto Z-Index Stacking</h3>
1797
+ <p style="font-size:13px;color:#64748b;margin:0 0 12px;">
1798
+ Every newly opened dialog automatically rises above all existing open dialogs — no manual
1799
+ z-index required.
1800
+ </p>
1801
+ <ui-button onclick="openDialog('wfParentDialog')" size="md" variant="outline" color="primary" label="Open Parent Dialog" style="--btn-bg: #6366f1;"></ui-button>
1802
+ <ui-dialog-box id="wfParentDialog" is-draggable="true" ok-text="Understood" cancel-text="Close" icon-library="lucide" dialog-title="Parent Dialog">
1803
+ <div style="padding:8px 0;font-size:14px;color:#475569;">
1804
+ I am the parent. Click the button below to open a child dialog on top of me.
1805
+ <br><br>
1806
+ <ui-button onclick="openDialog('wfChildDialog')" size="md" variant="outline" color="secondary" label="Open Child Dialog (should be on top)" style="--btn-bg: #8b5cf6;"></ui-button>
1807
+ </div>
1808
+ </ui-dialog-box>
1809
+ <ui-dialog-box id="wfChildDialog" is-draggable="true" ok-text="Accept" cancel-text="Close" icon-library="lucide" dialog-title="Child Dialog (auto z-index)">
1810
+ <div style="padding:8px 0;font-size:14px;color:#475569;">
1811
+ I automatically opened above the parent — no extra z-index config.
1812
+ </div>
1813
+ </ui-dialog-box>
1814
+ </div>
1815
+
1816
+ <!-- NEW: Programmatic Control Demo -->
1817
+ <div>
1818
+ <h3 style="margin:0 0 6px;">⚡ Programmatic API Control</h3>
1819
+ <p style="font-size:13px;color:#64748b;margin:0 0 12px;">
1820
+ Trigger window states directly from your app logic using <code>.minimize()</code> and <code>.maximize()</code>.
1821
+ </p>
1822
+ <div style="display:flex; gap:10px;">
1823
+ <ui-button onclick="openDialog('wfApiDialog')" size="md" variant="outline" color="secondary" label="1. Open Dialog" style="--btn-bg: #111827;"></ui-button>
1824
+ <ui-button onclick="document.getElementById('wfApiDialog').minimize()" size="md" variant="outline" color="secondary" label="2. Call .minimize()" style="--btn-bg: #6d28d9;"></ui-button>
1825
+ <ui-button onclick="document.getElementById('wfApiDialog').maximize()" size="md" variant="outline" color="secondary" label="3. Call .maximize()" style="--btn-bg: #4338ca;"></ui-button>
1826
+ </div>
1827
+ <ui-dialog-box id="wfApiDialog" is-draggable="true" ok-text="OK" cancel-text="Dismiss" icon-library="lucide" dialog-title="API Controlled Window" show-minimize="true">
1828
+ <div style="padding:20px; text-align:center;">
1829
+ <p style="font-size:15px; font-weight:600; color:#1e293b;">I am controlled by external code!</p>
1830
+ <p style="font-size:13px; color:#64748b;">The buttons outside this dialog are calling my internal methods directly.</p>
1831
+ </div>
1832
+ </ui-dialog-box>
1833
+ </div>
1834
+
1835
+ <!-- ③ Return value auto-form-collection -->
1836
+ <div>
1837
+ <h3 style="margin:0 0 6px;">📋 Return Value — Auto Form Collection</h3>
1838
+ <p style="font-size:13px;color:#64748b;margin:0 0 12px;">
1839
+ <code>showWithResult()</code> auto-collects all named inputs (including selects).
1840
+ </p>
1841
+ <ui-button id="wfReturnBtn" onclick="wfOpenReturnDialog()" size="md" variant="outline" color="success" label="Open Form Dialog"></ui-button>
1842
+ <div id="wfReturnOutput" style="margin-top:10px;font-size:13px;color:#475569;"></div>
1843
+ <ui-dialog-box id="wfReturnDialog" ok-text="Save Output" cancel-text="Cancel" icon-library="lucide">
1844
+ <span slot="header">User Profile</span>
1845
+ <div style="padding:16px;">
1846
+ <form id="wfForm" style="display:grid;gap:12px;">
1847
+ <ui-input name="username" label="Name" value="Praveen" placeholder="Your name"></ui-input>
1848
+ <ui-dropdown id="wfReturnRole" name="role" label="System Role" options='[
1849
+ {"label": "Developer", "value": "dev"},
1850
+ {"label": "Designer", "value": "design"},
1851
+ {"label": "Manager", "value": "mgr"}
1852
+ ]' value="dev" style="width: 100%;"></ui-dropdown>
1853
+ </form>
1854
+ </div>
1855
+ </ui-dialog-box>
1856
+ </div>
1857
+
1858
+ <!-- ④ Action Menu (menuItems + menuIcon + menuTitle) -->
1859
+ <div>
1860
+ <h3 style="margin:0 0 6px;">⚙ Action Menu — menuItems + menuIcon + menuTitle</h3>
1861
+ <p style="font-size:13px;color:#64748b;margin:0 0 12px;">
1862
+ Set <code>menu-items</code> JSON on a dialog to auto-show a header menu button.
1863
+ Customise the icon with <code>menu-icon</code> and tooltip with <code>menu-title</code>.
1864
+ </p>
1865
+ <div style="display:flex;gap:10px;flex-wrap:wrap;">
1866
+ <ui-button onclick="openDialog('wfMenuDialog1')" size="md" variant="outline" color="secondary" label="Default Menu (⋯)" style="--btn-bg: #f59e0b;"></ui-button>
1867
+ <ui-button onclick="openDialog('wfMenuDialog2')" size="md" variant="outline" color="secondary" label="Settings Menu (⚙)" style="--btn-bg: #ef4444;"></ui-button>
1868
+ <ui-button onclick="openDialog('wfMenuDialog3')" size="md" variant="outline" color="secondary" label="Filter Menu (sliders)" style="--btn-bg: #8b5cf6;"></ui-button>
1869
+ </div>
1870
+
1871
+ <!-- Default more-horizontal icon -->
1872
+ <ui-dialog-box id="wfMenuDialog1" icon-library="lucide" dialog-title="Default Action Menu" ok-text="Accept" cancel-text="Close"
1873
+ menu-items='[{"label":"Rename","icon":"pencil"},{"label":"Duplicate","icon":"copy"},{"divider":true},{"label":"Delete","icon":"trash-2","danger":true}]'>
1874
+ <div style="padding:8px 0;font-size:14px;color:#475569;">
1875
+ The header shows a <strong>⋯</strong> button (default <code>menu-icon="more-horizontal"</code>)
1876
+ when <code>menu-items</code> is set. Try clicking it.
1877
+ </div>
1878
+ </ui-dialog-box>
1879
+
1880
+ <!-- Settings / gear icon -->
1881
+ <ui-dialog-box id="wfMenuDialog2" icon-library="lucide" dialog-title="Settings Menu" ok-text="Save" cancel-text="Close"
1882
+ menu-icon="settings" menu-title="Settings"
1883
+ menu-items='[{"label":"Profile","icon":"user"},{"label":"Notifications","icon":"bell"},{"label":"Security","icon":"shield"},{"divider":true},{"label":"Logout","icon":"log-out","danger":true}]'>
1884
+ <div style="padding:8px 0;font-size:14px;color:#475569;">
1885
+ <code>menu-icon="settings"</code> replaces the default icon with a gear icon.
1886
+ <code>menu-title="Settings"</code> sets the tooltip.
1887
+ </div>
1888
+ </ui-dialog-box>
1889
+
1890
+ <!-- Sliders / filter icon -->
1891
+ <ui-dialog-box id="wfMenuDialog3" icon-library="lucide" dialog-title="Filter Menu" ok-text="Apply Filters" cancel-text="Close"
1892
+ menu-icon="sliders-horizontal" menu-title="Filters"
1893
+ menu-items='[{"label":"Sort A → Z","icon":"arrow-up-az"},{"label":"Sort Z → A","icon":"arrow-down-az"},{"divider":true},{"label":"Date Range","icon":"calendar"},{"label":"Clear Filters","icon":"x-circle","danger":true}]'>
1894
+ <div style="padding:8px 0;font-size:14px;color:#475569;">
1895
+ <code>menu-icon="sliders-horizontal"</code> and
1896
+ <code>menu-title="Filters"</code> for a data-table style filter menu.
1897
+ </div>
1898
+ </ui-dialog-box>
1899
+ </div>
1900
+ </div>
1901
+ `;
1902
+
1903
+ // Taskbar logic is now handled globally in initDialogDemo()
1904
+
1905
+ // Wire up return-value demo
1906
+ window.wfOpenReturnDialog = function () {
1907
+ const dlg = document.getElementById('wfReturnDialog');
1908
+ if (dlg)
1909
+ dlg.showWithResult().then(result => {
1910
+ const out = document.getElementById('wfReturnOutput');
1911
+ if (out) {
1912
+ if (!result.canceled && result.data) {
1913
+ out.innerHTML = '<pre style="background:#f1f5f9;padding:12px;border-radius:8px;font-size:12px;">' + JSON.stringify(result.data, null, 2) + '</pre>';
1914
+ } else {
1915
+ out.textContent = result.canceled ? '(dialog cancelled)' : '(no data returned — form empty)';
1916
+ }
1917
+ }
1918
+ });
1919
+ };
1920
+
1921
+ window.wfConfirmReturn = function () {
1922
+ const dlg = document.getElementById('wfReturnDialog');
1923
+ if (dlg && dlg.submit) dlg.submit(); // submit resolves the promise with the form data
1924
+ };
1925
+ };
1926
+
1927
+ window.showDrawerShowcase = function () {
1928
+ const container = document.getElementById('dialogDemoContainer');
1929
+ if (!container) return;
1930
+ container.innerHTML = `
1931
+ <div class="demo-block">
1932
+ <h3>📐 Enterprise Drawer System</h3>
1933
+ <p style="margin-bottom: 20px; color: #6b7280;">Drawers are ideal for navigation, detail panels, and quick settings. They slide from the viewport edges.</p>
1934
+
1935
+ <div style="display: flex; gap: 12px; flex-wrap: wrap;">
1936
+ <ui-button onclick="openDialog('drawerLeft')" size="md" variant="outline" color="primary" label="Left Drawer" style="--btn-bg: #4f46e5;"></ui-button>
1937
+ <ui-button onclick="openDialog('drawerRight')" size="md" variant="outline" color="primary" label="Right Drawer" style="--btn-bg: #4f46e5;"></ui-button>
1938
+ <ui-button onclick="openDialog('drawerTop')" size="md" variant="outline" color="primary" label="Top Drawer" style="--btn-bg: #4f46e5;"></ui-button>
1939
+ <ui-button onclick="openDialog('drawerBottom')" size="md" variant="outline" color="primary" label="Bottom Drawer" style="--btn-bg: #4f46e5;"></ui-button>
1940
+ </div>
1941
+
1942
+ <ui-dialog-box id="drawerLeft" type="drawer" position="left" ok-text="Accept" cancel-text="Close" dialog-title="Navigation" subtitle="Main Menu" icon="menu" icon-library="lucide">
1943
+ <div style="padding: 16px;">
1944
+ <p>This is a <b>Left Drawer</b>.</p>
1945
+ <p>Ideal for primary navigation in mobile or dashboards.</p>
1946
+ </div>
1947
+ </ui-dialog-box>
1948
+
1949
+ <ui-dialog-box id="drawerRight" type="drawer" position="right" ok-text="Save" cancel-text="Dismiss" dialog-title="Properties" subtitle="Element Inspector" icon="info" icon-library="lucide">
1950
+ <div style="padding: 16px;">
1951
+ <p>This is a <b>Right Drawer</b>.</p>
1952
+ <p>Commonly used for inspecting items in a table or list.</p>
1953
+ </div>
1954
+ </ui-dialog-box>
1955
+
1956
+ <ui-dialog-box id="drawerTop" type="drawer" position="top" ok-text="Search" cancel-text="Close" dialog-title="Global Search" subtitle="Search across all resources" icon="search" icon-library="lucide">
1957
+ <div style="padding: 24px; text-align: center;">
1958
+ <ui-input placeholder="Search components..." style="width: 100%; max-width: 600px;"></ui-input>
1959
+ </div>
1960
+ </ui-dialog-box>
1961
+
1962
+ <ui-dialog-box id="drawerBottom" type="drawer" position="bottom" ok-text="Execute" cancel-text="Close" dialog-title="System Actions" subtitle="Select an action to continue" icon="zap" icon-library="lucide">
1963
+ <div style="padding: 24px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px;">
1964
+ <ui-button label="🚀 Deploy" size="md" variant="outline" color="secondary" style="height: 80px; --btn-bg: #f3f4f6; --btn-text: #1e293b; border: 1px solid #e5e7eb;"></ui-button>
1965
+ <ui-button label="🧪 Test" size="md" variant="outline" color="secondary" style="height: 80px; --btn-bg: #f3f4f6; --btn-text: #1e293b; border: 1px solid #e5e7eb;"></ui-button>
1966
+ <ui-button label="🗑️ Delete" size="md" variant="outline" color="danger" style="height: 80px; --btn-bg: #fef2f2; border: 1px solid #fee2e2;"></ui-button>
1967
+ </div>
1968
+ </ui-dialog-box>
1969
+ </div>
1970
+ `;
1971
+ };
1972
+
1973
+ window.showFullscreenDemo = function () {
1974
+ const container = document.getElementById('dialogDemoContainer');
1975
+ if (!container) return;
1976
+ container.innerHTML = `
1977
+ <div class="demo-block">
1978
+ <h3>🖥️ Fullscreen Interaction</h3>
1979
+ <p style="margin-bottom: 20px; color: #6b7280;">The fullscreen type occupies the entire viewport, providing an immersive experience for complex editors or wizards.</p>
1980
+
1981
+ <ui-button onclick="openDialog('fullDialog')" size="md" variant="outline" color="secondary" label="🖥️ Open Immersive Editor" style="--btn-bg: #111827; border-radius: 12px;"></ui-button>
1982
+
1983
+ <ui-dialog-box id="fullDialog" type="fullscreen" dialog-title="Zenith Cloud IDE" icon="code" icon-library="lucide" ok-text="Build & Deploy" cancel-text="Discard Changes">
1984
+ <div style="height: 100%; display: flex; flex-direction: column; background: #000;">
1985
+ <!-- Real Code Editor Integration -->
1986
+ <div style="flex: 1; min-height: 0;">
1987
+ <ui-code-editor
1988
+ language="typescript"
1989
+ value='export class CloudService {\n private workers = 12;\n\n async provision() {\n console.log("Provisioning resources...");\n return await fetch("/api/v1/cloud");\n }\n}'
1990
+ style="height: 100%;"
1991
+ ></ui-code-editor>
1992
+ </div>
1993
+
1994
+ <!-- Real Terminal Integration -->
1995
+ <div style="height: 200px; border-top: 2px solid #333;">
1996
+ <ui-terminal
1997
+ title="Cloud Shell"
1998
+ prompt="zenith-cloud:~$"
1999
+ history='["npm install", "npm run build"]'
2000
+ ></ui-terminal>
2001
+ </div>
2002
+ </div>
2003
+ </ui-dialog-box>
2004
+ </div>
2005
+ `;
2006
+ };
2007
+
2008
+ window.showDensityDemo = function () {
2009
+ const container = document.getElementById('dialogDemoContainer');
2010
+ if (!container) return;
2011
+ container.innerHTML = `
2012
+ <div class="demo-block">
2013
+ <h3>⚖️ Visual Density Comparison</h3>
2014
+ <p style="margin-bottom: 20px; color: #6b7280;">Three density levels to match different UI contexts and user preferences.</p>
2015
+
2016
+ <div style="display: flex; gap: 12px; flex-wrap: wrap;">
2017
+ <ui-button onclick="openDialog('densCompact')" size="md" variant="outline" color="success" label="Compact Mode" style="--btn-bg: #10b981;"></ui-button>
2018
+ <ui-button onclick="openDialog('densCozy')" size="md" variant="outline" color="success" label="Cozy (Primary)" style="--btn-bg: #10b981;"></ui-button>
2019
+ <ui-button onclick="openDialog('densComfortable')" size="md" variant="outline" color="success" label="Comfortable Mode" style="--btn-bg: #10b981;"></ui-button>
2020
+ </div>
2021
+
2022
+ <ui-dialog-box id="densCompact" density="compact" dialog-title="Compact Dialog" icon="server" icon-library="lucide" ok-text="Done">
2023
+ <div style="font-size: 13px;">Compact mode reduces paddings and font sizes for data-dense applications.</div>
2024
+ </ui-dialog-box>
2025
+
2026
+ <ui-dialog-box id="densCozy" density="cozy" dialog-title="Cozy Dialog" icon="layout" icon-library="lucide" ok-text="Done">
2027
+ <div>Cozy mode is the default, balanced for standard interaction.</div>
2028
+ </ui-dialog-box>
2029
+
2030
+ <ui-dialog-box id="densComfortable" density="comfortable" dialog-title="Comfortable Dialog" icon="coffee" icon-library="lucide" ok-text="Done">
2031
+ <div style="font-size: 18px;">Comfortable mode provides generous white space and larger fonts for readability.</div>
2032
+ </ui-dialog-box>
2033
+ </div>
2034
+ `;
2035
+ };
2036
+
2037
+ window.showPromiseDemo = async function () {
2038
+ const container = document.getElementById('dialogDemoContainer');
2039
+ if (!container) return;
2040
+
2041
+ container.innerHTML = `
2042
+ <div class="demo-block">
2043
+ <h3>🤝 Promise-based API (Modern DX)</h3>
2044
+ <p style="margin-bottom: 20px; color: #6b7280;">Use <code>await dialog.openDialog()</code> to write clean, linear code for complex user flows.</p>
2045
+
2046
+ <ui-button id="promiseFlowBtn" onclick="startWizardSequence()" size="md" variant="outline" color="secondary" label="🚀 Launch Project Wizard" style="--btn-bg: #f59e0b; border-radius: 12px;"></ui-button>
2047
+ <div id="promiseStatus" style="margin-top: 16px; font-weight: 600; color: #10b981;">Status: Idle</div>
2048
+
2049
+ <ui-dialog-box id="wizardDialog" width="500px" icon-library="lucide" cancel-text="Cancel">
2050
+ <div id="wizardContent" style="padding: 16px;"></div>
2051
+ </ui-dialog-box>
2052
+ </div>
2053
+ `;
2054
+
2055
+ window.startWizardSequence = async () => {
2056
+ const startBtn = document.getElementById('promiseFlowBtn');
2057
+ if (startBtn.disabled) return;
2058
+ startBtn.disabled = true;
2059
+
2060
+ const dlg = document.getElementById('wizardDialog');
2061
+ const content = document.getElementById('wizardContent');
2062
+ const statusLine = document.getElementById('promiseStatus');
2063
+
2064
+ const setStepUI = (num, title, body, showNext = true, nextLabel = 'Continue') => {
2065
+ dlg.dialogTitle = `Wizard Step ${num}: ${title}`;
2066
+ dlg.steps = 4;
2067
+ dlg.currentStep = num;
2068
+ content.innerHTML = body;
2069
+ dlg.okText = showNext ? nextLabel : '';
2070
+ };
2071
+
2072
+ statusLine.textContent = 'Status: Wizard Running...';
2073
+ dlg.show();
2074
+
2075
+ // Step 1
2076
+ setStepUI(1, 'Configuration', "<h4>Welcome to the Setup Wizard</h4><p>We'll guide you through the initial configuration. Click Continue to proceed.</p>");
2077
+ await new Promise(r => dlg.addEventListener('ok', r, { once: true }));
2078
+
2079
+ // Step 2 (Loading Step)
2080
+ setStepUI(
2081
+ 2,
2082
+ 'Processing',
2083
+ "<div style='text-align:center; padding:20px;'><h4 id='procMsg'>Applying Settings...</h4><div style='margin-top:15px; color:#10b981;'>Please wait while we sync with the cloud.</div></div>",
2084
+ false,
2085
+ );
2086
+ dlg.loading = true;
2087
+ await new Promise(r => setTimeout(r, 2000));
2088
+ dlg.loading = false;
2089
+
2090
+ // Step 3
2091
+ setStepUI(3, 'Security', '<h4>Step 3: Security Policy</h4><p>Scanning firewall rules and generating encryption keys for the new cluster.</p>');
2092
+ await new Promise(r => dlg.addEventListener('ok', r, { once: true }));
2093
+
2094
+ // Step 4
2095
+ setStepUI(4, 'Completion', '<h4>✨ Success!</h4><p>All settings have been applied successfully. You can now close this wizard.</p>', true, 'Finish');
2096
+ await new Promise(r => dlg.addEventListener('ok', r, { once: true }));
2097
+
2098
+ dlg.hide();
2099
+ statusLine.textContent = 'Status: Setup Completed!';
2100
+ startBtn.disabled = false;
2101
+ };
2102
+ };
2103
+
2104
+ window.showSlotsAndPartsDemo = function () {
2105
+ const container = document.getElementById('dialogDemoContainer');
2106
+ if (!container) return;
2107
+ container.innerHTML = `
2108
+ <div class="demo-block">
2109
+ <h3>💎 Enterprise Slots & Parts Mastery</h3>
2110
+ <p style="margin-bottom: 20px; color: #6b7280;">Granular control over specific sections using <b>Slots</b> for content and <b>CSS Parts</b> for styling.</p>
2111
+
2112
+ <div style="display: flex; gap: 12px; flex-wrap: wrap;">
2113
+ <ui-button onclick="openDialog('dSlotsAdvanced')" size="md" variant="outline" color="secondary" label="Deep Slotting" style="--btn-bg: #ec4899;"></ui-button>
2114
+ <ui-button onclick="openDialog('dPartsStyling')" size="md" variant="outline" color="secondary" label="Part-based Styling" style="--btn-bg: #111827;"></ui-button>
2115
+ </div>
2116
+
2117
+ <ui-dialog-box id="dSlotsAdvanced" icon-library="lucide" width="500px" ok-text="Primary Action" cancel-text="Secondary">
2118
+ <div slot="title" style="color: #ec4899; font-weight: 800; display: flex; align-items: center; gap: 8px;">
2119
+ <ui-icon name="heart" size="20px"></ui-icon> Custom Title Slot
2120
+ </div>
2121
+ <div slot="subtitle" style="color: #6366f1; font-style: italic;">
2122
+ This subtitle is injected via slot="subtitle"
2123
+ </div>
2124
+ <div slot="body" style="padding: 20px; background: #fdf2f8; border-radius: 12px; border: 1px dashed #ec4899;">
2125
+ <p>This entire body area is controlled by <b>slot="body"</b>.</p>
2126
+ <ui-button label="Nested Button"></ui-button>
2127
+ </div>
2128
+ </ui-dialog-box>
2129
+
2130
+ <ui-dialog-box id="dPartsStyling" dialog-title="CSS Parts Customization" icon="palette" icon-library="lucide" ok-text="Apply Style" class="custom-parts-demo">
2131
+ <div>
2132
+ <p>This dialog is styled entirely from the outside using <code>::part()</code> selectors.</p>
2133
+ <p>No internal styles were modified to achieve this "Cyberpunk" theme.</p>
2134
+ </div>
2135
+ </ui-dialog-box>
2136
+
2137
+ <style>
2138
+ #dPartsStyling::part(backdrop) { background-color: rgba(139, 92, 246, 0.3); backdrop-filter: blur(10px) hue-rotate(90deg); }
2139
+ #dPartsStyling::part(panel) { background: #0f172a; border: 2px solid #00fff2; box-shadow: 0 0 20px #00fff2; }
2140
+ #dPartsStyling::part(header) { background: linear-gradient(90deg, #1e293b, #0f172a); border-bottom: 1px solid #00fff2; color: #00fff2; }
2141
+ #dPartsStyling::part(body) { color: #e2e8f0; }
2142
+ #dPartsStyling::part(footer) { background: #1e293b; border-top: 1px solid #00fff2; }
2143
+ #dPartsStyling::part(ok-btn) { background: #00fff2; color: #0f172a; font-weight: 900; text-transform: uppercase; border-radius: 0; clip-path: polygon(10% 0, 100% 0, 90% 100%, 0 100%); }
2144
+ </style>
2145
+ </div>
2146
+ `;
2147
+ };
2148
+
2149
+ window.showMessageBoxDemo = function () {
2150
+ const container = document.getElementById('dialogDemoContainer');
2151
+ if (!container) return;
2152
+ container.innerHTML = `
2153
+ <div class="demo-block" style="padding: 24px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0;">
2154
+ <h3 style="margin-top: 0; color: #1e293b;">💬 Enterprise MessageBox</h3>
2155
+ <p style="color: #64748b; font-size: 14px; line-height: 1.6;">
2156
+ Simplified modal layout optimized for system notifications and informational alerts. Centers the content and provides high-visibility headers.
2157
+ </p>
2158
+ <ui-button onclick="openDialog('msgBoxDialog')" size="md" variant="outline" color="secondary" label="Open MessageBox" style="margin-top: 12px; --btn-bg: #5b21b6;"></ui-button>
2159
+ </div>
2160
+ <ui-dialog-box id="msgBoxDialog" type="messagebox" status="success" dialog-title="Cloud Sync Complete" subtitle="Project: Zenith Core v4.0" ok-text="Understood" icon-library="lucide" icon="cloud-check">
2161
+ <div style="padding: 24px; text-align: center;">
2162
+ <div style="font-size: 48px; margin-bottom: 16px;">✅</div>
2163
+ <p style="margin: 0; font-weight: 600; font-size: 18px;">Deployment Successful</p>
2164
+ <p style="color: #64748b; margin-top: 8px;">All assets have been optimized and synchronized with the production cluster in <b>us-east-1</b>.</p>
2165
+ </div>
2166
+ </ui-dialog-box>
2167
+ `;
2168
+ };
2169
+
2170
+ window.showConfirmDemo = function () {
2171
+ const container = document.getElementById('dialogDemoContainer');
2172
+ if (!container) return;
2173
+ container.innerHTML = `
2174
+ <div class="demo-block" style="padding: 24px; background: #fef2f2; border-radius: 12px; border: 1px solid #fee2e2;">
2175
+ <h3 style="margin-top: 0; color: #991b1b;">🗑️ High-Stakes Confirmation</h3>
2176
+ <p style="color: #b91c1c; font-size: 14px; line-height: 1.6;">
2177
+ Specialized "confirm" type for destructive actions. Features custom confirmation text that must be acknowledged before proceeding.
2178
+ </p>
2179
+ <ui-button onclick="openDialog('confirmDangerDialog')" size="md" variant="outline" color="danger" label="Delete Production Database" style="margin-top: 12px; --btn-bg: #dc2626;"></ui-button>
2180
+ </div>
2181
+ <ui-dialog-box id="confirmDangerDialog"
2182
+ type="confirm"
2183
+ status="error"
2184
+ dialog-title="Critical Action Required"
2185
+ icon="trash-2"
2186
+ icon-library="lucide"
2187
+ width="450px"
2188
+ ok-text="Destroy Database Permanently"
2189
+ cancel-text="Abort Action"
2190
+ confirmation-text="I understand that this action will result in permanent loss of all analytic historical data.">
2191
+ <div style="padding: 24px;">
2192
+ <p style="margin: 0;">You are attempting to delete the <b>Zenith_Sales_2024</b> database. This will affect 45 related services and cannot be reversed.</p>
2193
+ </div>
2194
+ </ui-dialog-box>
2195
+ `;
2196
+ };
2197
+
2198
+ window.showPromptDemo = function () {
2199
+ const container = document.getElementById('dialogDemoContainer');
2200
+ if (!container) return;
2201
+ container.innerHTML = `
2202
+ <div class="demo-block" style="padding: 20px; background: #f3f4f6; border-radius: 12px; border: 1px dashed #d1d5db;">
2203
+ <h3 style="margin-top: 0;">✍️ Alert Input (Prompt)</h3>
2204
+ <p style="color: #6b7280; font-size: 14px;">Built-in input field for collecting user input with full async result support.</p>
2205
+ <ui-button id="promptBtn" size="md" variant="outline" color="secondary" label="Launch Prompt" style="--btn-bg: #0891b2;"></ui-button>
2206
+ <div id="promptResult" style="margin-top: 16px; min-height: 40px; padding: 12px; background: white; border-radius: 6px; border: 1px solid #e5e7eb; display: flex; align-items: center;">
2207
+ <span style="color: #9ca3af; font-style: italic;">Results will appear here...</span>
2208
+ </div>
2209
+ </div>
2210
+ <ui-dialog-box id="promptDialog" type="prompt" status="default" dialog-title="Create New Project" subtitle="Enterprise Project Wizard" prompt-label="Project Identifier" prompt-placeholder="Enter unique project name" prompt-initial-value="Zenith-Alpha-2026" ok-text="Initialize Project" cancel-text="Discard" icon="plus-circle"></ui-dialog-box>
2211
+ `;
2212
+
2213
+ const dialog = container.querySelector('#promptDialog');
2214
+ const btn = container.querySelector('#promptBtn');
2215
+ const resultDisplay = container.querySelector('#promptResult');
2216
+
2217
+ if (btn && dialog) {
2218
+ btn.onclick = async () => {
2219
+ resultDisplay.innerHTML = '<span style="color: #10b981;">Waiting for input...</span>';
2220
+ const result = await dialog.showWithResult();
2221
+ if (result.canceled) {
2222
+ resultDisplay.innerHTML = '<span style="color: #ef4444; font-weight: bold;">✕ Creation Canceled</span>';
2223
+ } else {
2224
+ resultDisplay.innerHTML = `<div style="display: flex; flex-direction: column;"><span style="color: #10b981; font-weight: bold;">✓ Project Initialized Successfully</span><span style="font-size: 12px; color: #6b7280;">Returned Value: ${result.data}</span></div>`;
2225
+ }
2226
+ };
2227
+ }
2228
+ };
2229
+
2230
+ window.showMenuShowroom = function () {
2231
+ const container = document.getElementById('dialogDemoContainer');
2232
+ if (!container) return;
2233
+ container.innerHTML = `
2234
+ <div class="demo-block" style="padding: 24px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; margin-bottom: 20px;">
2235
+ <h3 style="margin-top: 0; color: #1e293b;">⋮ Enterprise Action Menu</h3>
2236
+ <p style="color: #64748b; font-size: 14px; line-height: 1.6;">
2237
+ Elevate headers with context-aware actions. Customize the trigger icon and tooltip title for branded experiences.
2238
+ </p>
2239
+ <div style="display: flex; gap: 12px; margin-top: 16px;">
2240
+ <ui-button onclick="openDialog('menuShowroom1')" size="md" variant="outline" color="primary" label="Standard Menu" style="--btn-bg: #4f46e5;"></ui-button>
2241
+ <ui-button onclick="openDialog('menuShowroomCustom')" size="md" variant="outline" color="secondary" label="Custom Icon & Title" style="--btn-bg: #0f172a;"></ui-button>
2242
+ </div>
2243
+ </div>
2244
+
2245
+ <ui-dialog-box id="menuShowroom1"
2246
+ dialog-title="System Logs"
2247
+ icon-library="lucide"
2248
+ icon="activity"
2249
+ menu-items='[{"id":"refresh", "label":"Refresh Data", "icon":"refresh-cw"}, {"id":"export", "label":"Export CSV", "icon":"download"}, {"type":"separator"}, {"id":"clear", "label":"Clear History", "icon":"trash-2", "variant":"danger"}]'>
2250
+ <div style="padding: 20px;">
2251
+ <p>Click the standard <b>⋮</b> button in the header to see available actions.</p>
2252
+ </div>
2253
+ </ui-dialog-box>
2254
+
2255
+ <ui-dialog-box id="menuShowroomCustom"
2256
+ dialog-title="Project Settings"
2257
+ icon-library="lucide"
2258
+ icon="settings"
2259
+ menu-icon="sliders-horizontal"
2260
+ menu-title="Configuration Settings"
2261
+ menu-items='[{"id":"general", "label":"General Settings", "icon":"user"}, {"id":"billing", "label":"Billing Info", "icon":"credit-card"}]'>
2262
+ <div style="padding: 20px;">
2263
+ <p>This dialog uses a custom menu icon (<b>Sliders</b>) and a custom tooltip title (<b>Configuration Settings</b>).</p>
2264
+ </div>
2265
+ </ui-dialog-box>
2266
+ `;
2267
+
2268
+ // Listen for menu actions
2269
+ [container.querySelector('#menuShowroom1'), container.querySelector('#menuShowroomCustom')].forEach(d => {
2270
+ if (d) {
2271
+ d.addEventListener('menuAction', ev => {
2272
+ alert(`Executing action: ${ev.detail.id || ev.detail.item?.id}`);
2273
+ });
2274
+ }
2275
+ });
2276
+ };
2277
+
2278
+ window.showTraySystemDemo = function () {
2279
+ const container = document.getElementById('dialogDemoContainer');
2280
+ if (!container) return;
2281
+ container.innerHTML = `
2282
+ <div class="demo-block">
2283
+ <h3>🗂 Global Tray & Peek System</h3>
2284
+ <p style="margin-bottom: 20px; color: #6b7280;">Modern enterprise application taskbar. Minimized windows move to a centered dock with scrollable tabs and status indicators.</p>
2285
+
2286
+ <div style="display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 30px;">
2287
+ <ui-button onclick="spawnTrayDialog('Terminal', 'terminal', 'info')" size="md" variant="outline" color="secondary" label="🖥️ Open Terminal" style="--btn-bg: #1e293b;"></ui-button>
2288
+ <ui-button onclick="spawnTrayDialog('Messages', 'message-square', 'success')" size="md" variant="outline" color="success" label="💬 Open Chat" style="--btn-bg: #059669;"></ui-button>
2289
+ <ui-button onclick="spawnTrayDialog('Errors', 'alert-circle', 'error')" size="md" variant="outline" color="danger" label="🚨 Open Alerts" style="--btn-bg: #dc2626;"></ui-button>
2290
+ <ui-button onclick="spawnManyTrayDialogs(8)" size="md" variant="outline" color="primary" label="🌀 Spawn 8+ Windows" style="--btn-bg: #4f46e5;"></ui-button>
2291
+ </div>
2292
+
2293
+ <div style="background: rgba(59, 130, 246, 0.05); border: 2px dashed #10b981; border-radius: 16px; padding: 40px; text-align: center;">
2294
+ <div style="font-size: 24px; margin-bottom: 12px;">👇</div>
2295
+ <p style="font-weight: 700; color: #1e3a8a; margin: 0;">MINIMIZE THE WINDOWS ABOVE</p>
2296
+ <p style="color: #10b981; font-size: 14px;">They will cluster into the global tray at the bottom center of the screen.</p>
2297
+ <p style="color: #64748b; font-size: 13px; margin-top: 20px;"><b>Pro Tip:</b> Use the "≡ All Tabs" menu in the tray to manage many windows at once!</p>
2298
+ </div>
2299
+ </div>
2300
+ `;
2301
+
2302
+ window.spawnTrayDialog = (title, icon, status) => {
2303
+ const id = 'tray-' + Math.random().toString(36).substr(2, 9);
2304
+ const d = document.createElement('ui-dialog-box');
2305
+ d.id = id;
2306
+ d.dialogTitle = title;
2307
+ d.dockLabel = title; // Custom label for tray
2308
+ d.icon = icon;
2309
+ d.status = status;
2310
+ d.showMinimize = true;
2311
+ d.showMaximize = true;
2312
+ d.draggable = true;
2313
+ d.width = '350px';
2314
+ d.okText = 'Acknowledge';
2315
+ d.cancelText = 'Ignore';
2316
+ d.iconLibrary = 'lucide';
2317
+ d.innerHTML = `
2318
+ <div style="padding: 20px;">
2319
+ <h4>${title} Window</h4>
2320
+ <p>This window is integrated with the global Tray registry.</p>
2321
+ <p>Status: <b style="color: var(--ui-status-color, #1e293b)">${status.toUpperCase()}</b></p>
2322
+ <div style="margin-top:20px; padding:12px; background:#f1f5f9; border-radius:8px; font-family:monospace; font-size:12px;">
2323
+ const d = document.createElement('ui-dialog-box');<br>
2324
+ d.dockLabel = '${title}';<br>
2325
+ d.minimized = true;
2326
+ </div>
2327
+ </div>
2328
+ `;
2329
+ document.body.appendChild(d);
2330
+ setTimeout(() => d.show(), 50);
2331
+ };
2332
+
2333
+ window.spawnManyTrayDialogs = count => {
2334
+ const icons = ['search', 'settings', 'user', 'bell', 'heart', 'star', 'cpu', 'database'];
2335
+ for (let i = 0; i < count; i++) {
2336
+ setTimeout(() => {
2337
+ const icon = icons[i % icons.length];
2338
+ const d = document.createElement('ui-dialog-box');
2339
+ d.dialogTitle = `Process #${i + 1}`;
2340
+ d.dockLabel = `Proc-${i + 1}`;
2341
+ d.icon = icon;
2342
+ d.showMinimize = true;
2343
+ d.draggable = true;
2344
+ d.iconLibrary = 'lucide';
2345
+ d.width = '250px';
2346
+ // Start minimized to show tray behavior immediately
2347
+ d.minimized = true;
2348
+ document.body.appendChild(d);
2349
+ d.show();
2350
+ }, i * 200);
2351
+ }
2352
+ };
2353
+ };
2354
+
2355
+ window.showGlassStatusShowroom = function () {
2356
+ const container = document.getElementById('dialogDemoContainer');
2357
+ if (!container) return;
2358
+ container.innerHTML = `
2359
+ <div class="demo-block">
2360
+ <h3>✨ Glass & Status Showroom</h3>
2361
+ <p style="margin-bottom: 30px; color: #64748b;">Showcasing ultra-modern visual variants and status-aware styling.</p>
2362
+
2363
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px;">
2364
+ <!-- Glass Info -->
2365
+ <div style="background: rgba(59, 130, 246, 0.1); border: 1px solid rgba(59, 130, 246, 0.2); padding: 24px; border-radius: 16px;">
2366
+ <h4 style="margin-top:0; color: #2563eb;">💎 Glass Variant</h4>
2367
+ <p style="font-size: 13px; color: #1e40af;">Frosted glass effect with high-fidelity blur. Works best over colorful backgrounds.</p>
2368
+ <ui-button onclick="openDialog('showroomGlass')" size="md" variant="outline" color="primary" label="Open Glass" style="--btn-bg: #2563eb;"></ui-button>
2369
+ </div>
2370
+
2371
+ <!-- Minimal Primary -->
2372
+ <div style="background: rgba(244, 114, 182, 0.1); border: 1px solid rgba(244, 114, 182, 0.2); padding: 24px; border-radius: 16px;">
2373
+ <h4 style="margin-top:0; color: #db2777;">📏 Minimal Variant</h4>
2374
+ <p style="font-size: 13px; color: #9d174d;">Clean, floating look without a background color on the header. Modern and lightweight.</p>
2375
+ <ui-button onclick="openDialog('showroomMinimal')" size="md" variant="outline" color="secondary" label="Open Minimal" style="--btn-bg: #db2777;"></ui-button>
2376
+ </div>
2377
+
2378
+ <!-- Ghost Success -->
2379
+ <div style="background: rgba(16, 185, 129, 0.1); border: 1px solid rgba(16, 185, 129, 0.2); padding: 24px; border-radius: 16px;">
2380
+ <h4 style="margin-top:0; color: #059669;">👻 Ghost Variant</h4>
2381
+ <p style="font-size: 13px; color: #065f46;">Fully transparent surface with border emphasis. Minimalist design.</p>
2382
+ <ui-button onclick="openDialog('showroomGhost')" size="md" variant="outline" color="success" label="Open Ghost" style="--btn-bg: #059669;"></ui-button>
2383
+ </div>
2384
+
2385
+ <!-- Status Tints -->
2386
+ <div style="background: rgba(245, 158, 11, 0.1); border: 1px solid rgba(245, 158, 11, 0.2); padding: 24px; border-radius: 16px;">
2387
+ <h4 style="margin-top:0; color: #d97706;">🎨 Status Tints</h4>
2388
+ <p style="font-size: 13px; color: #92400e;">Automatic top-border and icon tinting based on status (info, success, warning, error).</p>
2389
+ <div style="display:flex; gap:8px;">
2390
+ <ui-button onclick="document.getElementById('showroomStatus').status='error'; openDialog('showroomStatus')" size="md" variant="outline" color="danger" label="Error"></ui-button>
2391
+ <ui-button onclick="document.getElementById('showroomStatus').status='warning'; openDialog('showroomStatus')" size="md" variant="outline" color="warning" label="Warning" style="--btn-bg: #d97706;"></ui-button>
2392
+ <ui-button onclick="document.getElementById('showroomStatus').status='success'; openDialog('showroomStatus')" size="md" variant="outline" color="success" label="Success"></ui-button>
2393
+ </div>
2394
+ </div>
2395
+ </div>
2396
+
2397
+ <!-- Dialogs -->
2398
+ <ui-dialog-box id="showroomGlass" variant="glass" status="info" dialog-title="Glass System" subtitle="Aero Blur Enabled" icon="sparkles" icon-library="lucide" width="500px">
2399
+ <div style="padding: 40px; text-align: center;">
2400
+ <h3>Ultra High Fidelity</h3>
2401
+ <p>This dialog uses advanced CSS back-drop filters for a professional, glassmorphism look.</p>
2402
+ </div>
2403
+ </ui-dialog-box>
2404
+
2405
+ <ui-dialog-box id="showroomMinimal" variant="minimal" status="success" dialog-title="Modern Minimal" subtitle="Clean aesthetics" icon="feather" icon-library="lucide" width="450px" ok-text="Clear">
2406
+ <div style="padding: 24px;">
2407
+ <p>Minimal variant removes header backgrounds to emphasize the content and typography.</p>
2408
+ </div>
2409
+ </ui-dialog-box>
2410
+
2411
+ <ui-dialog-box id="showroomGhost" variant="ghost" status="default" dialog-title="Ghost Interface" icon="ghost" icon-library="lucide" width="400px">
2412
+ <div style="padding: 24px; color: white;">
2413
+ <p>Ghost variant is fully transparent. Use it for overlay widgets or simplified alerts.</p>
2414
+ </div>
2415
+ </ui-dialog-box>
2416
+
2417
+ <ui-dialog-box id="showroomStatus" variant="default" status="error" dialog-title="Dynamic Status" icon="shield-alert" icon-library="lucide" width="400px" ok-text="Acknowledge">
2418
+ <div style="padding: 24px;">
2419
+ <p>Status tints apply to the top indicator bar and header icons automatically.</p>
2420
+ </div>
2421
+ </ui-dialog-box>
2422
+ </div>
2423
+ `;
2424
+ };
2425
+
2426
+ window.showEnterpriseLogicShowcase = function () {
2427
+ const container = document.getElementById('dialogDemoContainer');
2428
+ if (!container) return;
2429
+ container.innerHTML = `
2430
+ <div class="demo-block">
2431
+ <h3>🧠 Advanced Enterprise Logic</h3>
2432
+ <p style="margin-bottom: 24px; color: #64748b;">Showcasing recursive nesting, time-sensitive alerts, and layout persistence.</p>
2433
+
2434
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px;">
2435
+ <!-- Recursive Nesting -->
2436
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 24px; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);">
2437
+ <h4 style="margin: 0 0 10px 0; color: #7c3aed;">🌳 Triple Nesting</h4>
2438
+ <p style="font-size: 13px; color: #6b7280; line-height: 1.5; margin-bottom: 20px;">
2439
+ Demonstrates automatic backdrop dimming, focus trapping, and recursive z-index management across three levels of depth.
2440
+ </p>
2441
+ <ui-button onclick="openDialog('entNestedP')" size="md" variant="outline" color="primary" label="Launch Nested Tree" style="width: 100%; --btn-bg: #7c3aed;"></ui-button>
2442
+ </div>
2443
+
2444
+ <!-- Auto-Closing Alert -->
2445
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 24px; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);">
2446
+ <h4 style="margin: 0 0 10px 0; color: #f59e0b;">⏱️ Auto-Expiring Alert</h4>
2447
+ <p style="font-size: 13px; color: #6b7280; line-height: 1.5; margin-bottom: 20px;">
2448
+ Programmatic lifecycle control with a synchronized countdown timer and progress bar for time-sensitive notifications.
2449
+ </p>
2450
+ <ui-button onclick="runEntAutoClose()" size="md" variant="outline" color="warning" label="Start Timer Demo" style="width: 100%; --btn-bg: #f59e0b;"></ui-button>
2451
+ </div>
2452
+
2453
+ <!-- Workspace Persistence -->
2454
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 24px; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);">
2455
+ <h4 style="margin: 0 0 10px 0; color: #10b981;">💾 Layout Persistence</h4>
2456
+ <p style="font-size: 13px; color: #6b7280; line-height: 1.5; margin-bottom: 20px;">
2457
+ Remembers window position and size across page reloads using localStorage. Drag/resize then refresh the browser.
2458
+ </p>
2459
+ <ui-button onclick="openDialog('entRemember')" size="md" variant="outline" color="success" label="Open Persistent Window" style="width: 100%; --btn-bg: #10b981;"></ui-button>
2460
+ </div>
2461
+
2462
+ <!-- Custom Sizing -->
2463
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 24px; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);">
2464
+ <h4 style="margin: 0 0 10px 0; color: #10b981;">📐 Custom Dimension</h4>
2465
+ <p style="font-size: 13px; color: #6b7280; line-height: 1.5; margin-bottom: 20px;">
2466
+ Bypass semantic sizing (sm, md, lg) and define pixel-perfect footprints.
2467
+ </p>
2468
+ <div style="display: flex; gap: 8px; margin-bottom: 12px;">
2469
+ <ui-input id="ent-custom-w" placeholder="Width (e.g. 800px)" style="flex:1;"></ui-input>
2470
+ <ui-input id="ent-custom-h" placeholder="Height (e.g. 300px)" style="flex:1;"></ui-input>
2471
+ </div>
2472
+ <ui-button onclick="runEntCustomSize()" size="md" variant="outline" color="success" label="Launch Custom Size" style="width: 100%; --btn-bg: #10b981;"></ui-button>
2473
+ </div>
2474
+ </div>
2475
+
2476
+ <!-- Dialog Definitions -->
2477
+ <ui-dialog-box id="entCustomDim" dialog-title="Custom Precision" ok-text="Clear" cancel-text="Dismiss" icon="ruler" icon-library="lucide"></ui-dialog-box>
2478
+ <ui-dialog-box id="entNestedP" dialog-title="Parent Layer [Level 1]" ok-text="Accept All" cancel-text="Dismiss Tree" icon="cpu" icon-library="lucide" width="550px">
2479
+ <div style="padding: 24px;">
2480
+ <h4 style="margin-top:0">System Root</h4>
2481
+ <p>Stacked z-index management and recursive backdrop scaling are handled natively.</p>
2482
+ <ui-button onclick="openDialog('entNestedC1')" size="md" variant="outline" color="primary" label="Open Level 2" style="--btn-bg: #7c3aed;"></ui-button>
2483
+ </div>
2484
+
2485
+ <ui-dialog-box id="entNestedC1" dialog-title="Module Layer [Level 2]" ok-text="Save Module" cancel-text="Close" icon="package" icon-library="lucide" width="450px" portal="false">
2486
+ <div style="padding: 24px;">
2487
+ <h4 style="margin-top:0">Intermediate Node</h4>
2488
+ <p>Focus is trapped within this window until dismissed.</p>
2489
+ <ui-button onclick="openDialog('entNestedC2')" size="md" variant="outline" color="primary" label="Open Level 3" style="--btn-bg: #7c3aed;"></ui-button>
2490
+ </div>
2491
+
2492
+ <ui-dialog-box id="entNestedC2" dialog-title="Detail Layer [Level 3]" ok-text="Finish" cancel-text="Close" icon="search" icon-library="lucide" width="350px" portal="false">
2493
+ <div style="padding: 24px;">
2494
+ <h4 style="margin-top:0">Detail View</h4>
2495
+ <p>The deepest level of the current demonstration stack.</p>
2496
+ </div>
2497
+ </ui-dialog-box>
2498
+ </ui-dialog-box>
2499
+ </ui-dialog-box>
2500
+
2501
+ <ui-dialog-box id="entRemember" ok-text="Save Workspace" cancel-text="Close" remember="true" draggable="true" dialog-title="Workspace Restore" subtitle="State Persistence Demo" icon="hard-drive" icon-library="lucide" width="400px">
2502
+ <div style="padding: 24px;">
2503
+ <div style="background: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 16px; border-radius: 8px; font-size: 14px;">
2504
+ <strong>Instruction:</strong> Position this window anywhere and resize it. Refresh the page to see it reappear exactly here.
2505
+ </div>
2506
+ </div>
2507
+ </ui-dialog-box>
2508
+ </div>
2509
+ `;
2510
+
2511
+ // Script for Auto Close in demo
2512
+ window.runEntAutoClose = function () {
2513
+ const d = document.createElement('ui-dialog-box');
2514
+ d.dialogTitle = 'Security Sync Active';
2515
+ d.status = 'warning';
2516
+ d.icon = 'clock';
2517
+ d.iconLibrary = 'lucide';
2518
+ d.width = '400px';
2519
+ d.okText = 'Acknowledge';
2520
+ d.cancelText = 'Abort';
2521
+ d.innerHTML =
2522
+ ' \
2523
+ <div style="padding: 24px; text-align: center"> \
2524
+ <h2 style="margin: 0">Auto-Finalizing</h2> \
2525
+ <p>Session sync will complete and close in <span id="ent-timer-val">3</span>s...</p> \
2526
+ <div style="height: 4px; background: #e2e8f0; width: 100%; margin-top: 15px; border-radius: 2px; overflow: hidden"> \
2527
+ <div id="ent-timer-progress" style="height: 100%; background: #f59e0b; width: 100%; transition: width 3s linear"></div> \
2528
+ </div> \
2529
+ </div> \
2530
+ ';
2531
+ document.body.appendChild(d);
2532
+ d.show();
2533
+
2534
+ let count = 3;
2535
+ const interval = setInterval(() => {
2536
+ count--;
2537
+ const label = document.getElementById('ent-timer-val');
2538
+ if (label) label.textContent = count;
2539
+ if (count <= 0) {
2540
+ clearInterval(interval);
2541
+ d.hide();
2542
+ setTimeout(() => document.body.removeChild(d), 1000);
2543
+ }
2544
+ }, 1000);
2545
+
2546
+ setTimeout(() => {
2547
+ const prog = document.getElementById('ent-timer-progress');
2548
+ if (prog) prog.style.width = '0%';
2549
+ }, 50);
2550
+ };
2551
+
2552
+ window.runEntCustomSize = function () {
2553
+ const w = document.getElementById('ent-custom-w').value || '800px';
2554
+ const h = document.getElementById('ent-custom-h').value || '350px';
2555
+ const modal = document.getElementById('entCustomDim');
2556
+ if (modal) {
2557
+ modal.size = 'custom';
2558
+ modal.width = w;
2559
+ modal.height = h;
2560
+ modal.setAttribute('width', w);
2561
+ modal.setAttribute('height', h);
2562
+ modal.subtitle = `Custom Geometry: ${w} x ${h}`;
2563
+ modal.show();
2564
+ }
2565
+ };
2566
+ };
2567
+ }