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,2952 @@
1
+ // Advanced Data Table Demo Functions
2
+ export function initAdvancedDataTableDemo() {
3
+ const section = document.getElementById('advanced-data-table');
4
+ if (!section) return;
5
+
6
+ section.innerHTML = `
7
+ <p>Feature-rich data table with sorting, filtering, resizing, grouping, and more.</p>
8
+
9
+ <div class="demo-controls-wrapper">
10
+ <div class="demo-grid-wrapper">
11
+ <ui-button id="btnMasterTier" label="✨ Master Tier" variant="outline"></ui-button>
12
+ <ui-button id="btnInteractiveTable" label="🎮 Playground" variant="outline"></ui-button>
13
+ <ui-button id="btnBasicTable" label="Basic" variant="outline"></ui-button>
14
+ <ui-button id="btnSkeletonLoading" label="Skeleton Loading" variant="outline"></ui-button>
15
+ <ui-button id="btnColumnGrouping" label="Column Grouping" variant="outline"></ui-button>
16
+ <ui-button id="btnRowGrouping" label="Row Grouping" variant="outline"></ui-button>
17
+ <ui-button id="btnInputTypes" label="Input Types" variant="outline"></ui-button>
18
+ <ui-button id="btnTableWithSelection" label="Selection" variant="outline"></ui-button>
19
+ <ui-button id="btnRowActions" label="Row Actions" variant="outline"></ui-button>
20
+ <ui-button id="btnEditableTable" label="Editable Mode" variant="outline"></ui-button>
21
+ <ui-button id="btnColumnPinning" label="📌 Column Pinning" variant="outline"></ui-button>
22
+ <ui-button id="btnRowPinning" label="📍 Row Pinning" variant="outline"></ui-button>
23
+ <ui-button id="btnRowReordering" label="↕️ Row Reorder" variant="outline"></ui-button>
24
+ <ui-button id="btnMultiFilter" label="🔍 Multi-Filter" variant="outline"></ui-button>
25
+ <ui-button id="btnSearchMultiFilterPanel" label="🔎 Search + Multi-Filter Panel" variant="outline"></ui-button>
26
+ <ui-button id="btnEditEvents" label="📡 Edit Events" variant="outline"></ui-button>
27
+ <ui-button id="btnAdvancedPanels" label="🎛️ Panels" variant="outline"></ui-button>
28
+ <ui-button id="btnAdvancedFilterPanel" label="🔍 Advanced Filters" variant="outline"></ui-button>
29
+ <ui-button id="btnTreeData" label="🌲 Tree Data" variant="outline"></ui-button>
30
+ <ui-button id="btnSparklines" label="📈 Sparklines" variant="outline"></ui-button>
31
+ <ui-button id="btnLazyLoading" label="⏳ Lazy Load" variant="outline"></ui-button>
32
+ <ui-button id="btnPDFExport" label="📄 PDF Export" variant="outline"></ui-button>
33
+ <ui-button id="btnContextMobile" label="📱 Mobile & Menu" variant="outline"></ui-button>
34
+ <ui-button id="btnUndoRedo" label="↩️ Undo/Redo" variant="outline"></ui-button>
35
+ <ui-button id="btnRangeSelection" label="🟦 Range Select & Copy" variant="outline"></ui-button>
36
+ <ui-button id="btnConditionalFormatting" label="🎨 Conditional Format" variant="outline"></ui-button>
37
+ <ui-button id="btnAggregation" label="∑ Aggregation" variant="outline"></ui-button>
38
+ <ui-button id="btnValidationPrint" label="✔️ Validation & Print" variant="outline"></ui-button>
39
+ <ui-button id="btnPrintPage" label="🖨️ Print Page" variant="outline"></ui-button>
40
+ </div>
41
+ </div>
42
+
43
+ <div id="tableDemoContainer" style="margin-top: 20px;"></div>
44
+ `;
45
+
46
+ // Map of buttons to functions
47
+ const demoMap = {
48
+ btnMasterTier: showMasterTier,
49
+ btnInteractiveTable: showInteractiveTable,
50
+ btnBasicTable: showBasicTable,
51
+ btnSkeletonLoading: showSkeletonLoading,
52
+ btnColumnGrouping: showColumnGrouping,
53
+ btnRowGrouping: showRowGrouping,
54
+ btnInputTypes: showInputTypes,
55
+ btnTableWithSelection: showTableWithSelection,
56
+ btnRowActions: showRowActions,
57
+ btnEditableTable: showEditableTable,
58
+ btnColumnPinning: showColumnPinning,
59
+ btnRowPinning: showRowPinning,
60
+ btnRowReordering: showRowReordering,
61
+ btnMultiFilter: showMultiFilter,
62
+ btnSearchMultiFilterPanel: showSearchMultiFilterPanel,
63
+ btnEditEvents: showEditEvents,
64
+ btnAdvancedPanels: showAdvancedPanels,
65
+ btnAdvancedFilterPanel: showAdvancedFilterPanel,
66
+ btnTreeData: showTreeData,
67
+ btnSparklines: showSparklines,
68
+ btnLazyLoading: showLazyLoading,
69
+ btnPDFExport: showPDFExport,
70
+ btnContextMobile: showContextMobile,
71
+ btnUndoRedo: showUndoRedo,
72
+ btnRangeSelection: showRangeSelection,
73
+ btnConditionalFormatting: showConditionalFormatting,
74
+ btnAggregation: showAggregation,
75
+ btnValidationPrint: showValidationPrintDemo,
76
+ btnPrintPage: () => window.print(),
77
+ };
78
+
79
+ const updateActiveBtn = id => {
80
+ Object.keys(demoMap).forEach(btnId => {
81
+ const btn = document.getElementById(btnId);
82
+ if (btn) btn.selected = btnId === id;
83
+ });
84
+ };
85
+
86
+ setTimeout(() => {
87
+ Object.entries(demoMap).forEach(([id, func]) => {
88
+ const btn = document.getElementById(id);
89
+ if (btn) {
90
+ btn.addEventListener('click', () => {
91
+ updateActiveBtn(id);
92
+ func?.();
93
+ });
94
+ }
95
+ });
96
+
97
+ // Default view
98
+ updateActiveBtn('btnInteractiveTable');
99
+ showInteractiveTable();
100
+ }, 100);
101
+
102
+ const tableContainer = document.getElementById('tableDemoContainer');
103
+ if (!tableContainer) return;
104
+
105
+ const sampleData = [
106
+ {
107
+ id: 1,
108
+ name: 'John Doe',
109
+ email: 'john@example.com',
110
+ website: 'https://johndoe.com',
111
+ phone: '+1-555-0123',
112
+ department: 'Engineering',
113
+ role: 'Senior Developer',
114
+ salary: 95000,
115
+ status: 'Active',
116
+ rating: 4,
117
+ active: true,
118
+ verified: true,
119
+ startDate: '2022-01-15',
120
+ location: 'New York',
121
+ manager: 'Sarah Connor',
122
+ project: 'Phoenix',
123
+ skillset: 'React, Node.js',
124
+ experience: '8 years',
125
+ avatar: 'https://i.pravatar.cc/150?img=1',
126
+ },
127
+ {
128
+ id: 2,
129
+ name: 'Jane Smith',
130
+ email: 'jane@example.com',
131
+ website: 'https://janesmith.io',
132
+ phone: '+1-555-0124',
133
+ department: 'Marketing',
134
+ role: 'Marketing Manager',
135
+ salary: 85000,
136
+ status: 'Active',
137
+ rating: 5,
138
+ active: true,
139
+ verified: false,
140
+ startDate: '2021-06-10',
141
+ location: 'Los Angeles',
142
+ manager: 'Mike Ross',
143
+ project: 'Alpha',
144
+ skillset: 'SEO, Analytics',
145
+ experience: '6 years',
146
+ avatar: 'https://i.pravatar.cc/150?img=5',
147
+ },
148
+ {
149
+ id: 3,
150
+ name: 'Bob Johnson',
151
+ email: 'bob@example.com',
152
+ website: 'https://bobjohnson.dev',
153
+ phone: '+1-555-0125',
154
+ department: 'Engineering',
155
+ role: 'Team Lead',
156
+ salary: 105000,
157
+ status: 'Active',
158
+ rating: 3,
159
+ active: false,
160
+ verified: true,
161
+ startDate: '2020-03-22',
162
+ location: 'San Francisco',
163
+ manager: 'Sarah Connor',
164
+ project: 'Phoenix',
165
+ skillset: 'Python, AWS',
166
+ experience: '10 years',
167
+ avatar: 'https://i.pravatar.cc/150?img=8',
168
+ },
169
+ {
170
+ id: 4,
171
+ name: 'Alice Williams',
172
+ email: 'alice@example.com',
173
+ website: 'https://alice.dev',
174
+ phone: '+1-555-0126',
175
+ department: 'Sales',
176
+ role: 'Sales Representative',
177
+ salary: 70000,
178
+ status: 'On Leave',
179
+ rating: 4,
180
+ active: true,
181
+ verified: true,
182
+ startDate: '2021-09-05',
183
+ location: 'Chicago',
184
+ manager: 'Tom Hardy',
185
+ project: 'Beta',
186
+ skillset: 'CRM, Negotiation',
187
+ experience: '4 years',
188
+ avatar: 'https://i.pravatar.cc/150?img=9',
189
+ },
190
+ {
191
+ id: 5,
192
+ name: 'Charlie Brown',
193
+ email: 'charlie@example.com',
194
+ website: 'https://charlieb.com',
195
+ phone: '+1-555-0127',
196
+ department: 'Engineering',
197
+ role: 'Junior Developer',
198
+ salary: 65000,
199
+ status: 'Active',
200
+ rating: 5,
201
+ active: true,
202
+ verified: false,
203
+ startDate: '2023-02-14',
204
+ location: 'Austin',
205
+ manager: 'Sarah Connor',
206
+ project: 'Gamma',
207
+ skillset: 'JavaScript, CSS',
208
+ experience: '2 years',
209
+ avatar: 'https://i.pravatar.cc/150?img=12',
210
+ },
211
+ {
212
+ id: 6,
213
+ name: 'Diana Prince',
214
+ email: 'diana@example.com',
215
+ website: 'https://diana.io',
216
+ phone: '+1-555-0128',
217
+ department: 'HR',
218
+ role: 'HR Manager',
219
+ salary: 80000,
220
+ status: 'Inactive',
221
+ rating: 4,
222
+ active: false,
223
+ verified: true,
224
+ startDate: '2019-11-20',
225
+ location: 'Boston',
226
+ manager: 'Bruce Wayne',
227
+ project: 'Delta',
228
+ skillset: 'Recruitment, Policy',
229
+ experience: '7 years',
230
+ avatar: 'https://i.pravatar.cc/150?img=20',
231
+ },
232
+ {
233
+ id: 7,
234
+ name: 'Ethan Hunt',
235
+ email: 'ethan@example.com',
236
+ website: 'https://ethanhunt.com',
237
+ phone: '+1-555-0129',
238
+ department: 'Marketing',
239
+ role: 'Content Strategist',
240
+ salary: 72000,
241
+ status: 'Active',
242
+ rating: 3,
243
+ active: true,
244
+ verified: true,
245
+ startDate: '2022-07-08',
246
+ location: 'Seattle',
247
+ manager: 'Mike Ross',
248
+ project: 'Alpha',
249
+ skillset: 'Content, Copywriting',
250
+ experience: '5 years',
251
+ avatar: 'https://i.pravatar.cc/150?img=13',
252
+ },
253
+ {
254
+ id: 8,
255
+ name: 'Fiona Apple',
256
+ email: 'fiona@example.com',
257
+ website: 'https://fiona.dev',
258
+ phone: '+1-555-0130',
259
+ department: 'Sales',
260
+ role: 'Account Executive',
261
+ salary: 78000,
262
+ status: 'Active',
263
+ rating: 5,
264
+ active: true,
265
+ verified: false,
266
+ startDate: '2021-12-01',
267
+ location: 'Miami',
268
+ manager: 'Tom Hardy',
269
+ project: 'Beta',
270
+ skillset: 'B2B Sales, Closing',
271
+ experience: '6 years',
272
+ avatar: 'https://i.pravatar.cc/150?img=23',
273
+ },
274
+ {
275
+ id: 9,
276
+ name: 'George Lucas',
277
+ email: 'george@example.com',
278
+ website: 'https://george.com',
279
+ phone: '+1-555-0131',
280
+ department: 'Engineering',
281
+ role: 'Senior Developer',
282
+ salary: 98000,
283
+ status: 'Active',
284
+ rating: 5,
285
+ active: true,
286
+ verified: true,
287
+ startDate: '2021-01-20',
288
+ location: 'Portland',
289
+ manager: 'Sarah Connor',
290
+ project: 'Phoenix',
291
+ skillset: 'Java, Spring',
292
+ experience: '9 years',
293
+ avatar: 'https://i.pravatar.cc/150?img=14',
294
+ },
295
+ {
296
+ id: 10,
297
+ name: 'Hannah Montana',
298
+ email: 'hannah@example.com',
299
+ website: 'https://hannah.io',
300
+ phone: '+1-555-0132',
301
+ department: 'Design',
302
+ role: 'UX Designer',
303
+ salary: 82000,
304
+ status: 'Active',
305
+ rating: 4,
306
+ active: true,
307
+ verified: true,
308
+ startDate: '2022-03-15',
309
+ location: 'Denver',
310
+ manager: 'Clark Kent',
311
+ project: 'Omega',
312
+ skillset: 'Figma, User Research',
313
+ experience: '5 years',
314
+ avatar: 'https://i.pravatar.cc/150?img=25',
315
+ },
316
+ {
317
+ id: 11,
318
+ name: 'Ian McKellen',
319
+ email: 'ian@example.com',
320
+ website: 'https://ian.dev',
321
+ phone: '+1-555-0133',
322
+ department: 'Engineering',
323
+ role: 'DevOps Engineer',
324
+ salary: 92000,
325
+ status: 'Active',
326
+ rating: 5,
327
+ active: true,
328
+ verified: true,
329
+ startDate: '2020-08-10',
330
+ location: 'Phoenix',
331
+ manager: 'Sarah Connor',
332
+ project: 'Gamma',
333
+ skillset: 'Docker, Kubernetes',
334
+ experience: '7 years',
335
+ avatar: 'https://i.pravatar.cc/150?img=15',
336
+ },
337
+ {
338
+ id: 12,
339
+ name: 'Julia Roberts',
340
+ email: 'julia@example.com',
341
+ website: 'https://julia.com',
342
+ phone: '+1-555-0134',
343
+ department: 'Marketing',
344
+ role: 'Social Media Manager',
345
+ salary: 68000,
346
+ status: 'Active',
347
+ rating: 4,
348
+ active: true,
349
+ verified: false,
350
+ startDate: '2022-11-05',
351
+ location: 'Nashville',
352
+ manager: 'Mike Ross',
353
+ project: 'Alpha',
354
+ skillset: 'Social Media, Ads',
355
+ experience: '4 years',
356
+ avatar: 'https://i.pravatar.cc/150?img=26',
357
+ },
358
+ {
359
+ id: 13,
360
+ name: 'Kevin Hart',
361
+ email: 'kevin@example.com',
362
+ website: 'https://kevin.io',
363
+ phone: '+1-555-0135',
364
+ department: 'Sales',
365
+ role: 'Sales Manager',
366
+ salary: 88000,
367
+ status: 'Active',
368
+ rating: 5,
369
+ active: true,
370
+ verified: true,
371
+ startDate: '2019-05-12',
372
+ location: 'Dallas',
373
+ manager: 'Tom Hardy',
374
+ project: 'Beta',
375
+ skillset: 'Leadership, Strategy',
376
+ experience: '10 years',
377
+ avatar: 'https://i.pravatar.cc/150?img=16',
378
+ },
379
+ {
380
+ id: 14,
381
+ name: 'Laura Croft',
382
+ email: 'laura@example.com',
383
+ website: 'https://laura.dev',
384
+ phone: '+1-555-0136',
385
+ department: 'Engineering',
386
+ role: 'QA Engineer',
387
+ salary: 75000,
388
+ status: 'Active',
389
+ rating: 4,
390
+ active: true,
391
+ verified: true,
392
+ startDate: '2021-07-18',
393
+ location: 'Atlanta',
394
+ manager: 'Sarah Connor',
395
+ project: 'Phoenix',
396
+ skillset: 'Testing, Automation',
397
+ experience: '5 years',
398
+ avatar: 'https://i.pravatar.cc/150?img=27',
399
+ },
400
+ {
401
+ id: 15,
402
+ name: 'Michael Scott',
403
+ email: 'michael@example.com',
404
+ website: 'https://michael.com',
405
+ phone: '+1-555-0137',
406
+ department: 'Sales',
407
+ role: 'Regional Manager',
408
+ salary: 95000,
409
+ status: 'Active',
410
+ rating: 3,
411
+ active: true,
412
+ verified: true,
413
+ startDate: '2018-02-01',
414
+ location: 'Scranton',
415
+ manager: 'David Wallace',
416
+ project: 'Beta',
417
+ skillset: 'Management, Sales',
418
+ experience: '12 years',
419
+ avatar: 'https://i.pravatar.cc/150?img=17',
420
+ },
421
+ {
422
+ id: 16,
423
+ name: 'Nancy Drew',
424
+ email: 'nancy@example.com',
425
+ website: 'https://nancy.io',
426
+ phone: '+1-555-0138',
427
+ department: 'HR',
428
+ role: 'Recruiter',
429
+ salary: 65000,
430
+ status: 'Active',
431
+ rating: 4,
432
+ active: true,
433
+ verified: false,
434
+ startDate: '2023-01-10',
435
+ location: 'Minneapolis',
436
+ manager: 'Bruce Wayne',
437
+ project: 'Delta',
438
+ skillset: 'Sourcing, Interviews',
439
+ experience: '3 years',
440
+ avatar: 'https://i.pravatar.cc/150?img=28',
441
+ },
442
+ {
443
+ id: 17,
444
+ name: 'Oscar Martinez',
445
+ email: 'oscar@example.com',
446
+ website: 'https://oscar.dev',
447
+ phone: '+1-555-0139',
448
+ department: 'Finance',
449
+ role: 'Accountant',
450
+ salary: 72000,
451
+ status: 'Active',
452
+ rating: 5,
453
+ active: true,
454
+ verified: true,
455
+ startDate: '2020-06-22',
456
+ location: 'Philadelphia',
457
+ manager: 'Angela Martin',
458
+ project: 'Sigma',
459
+ skillset: 'Accounting, Excel',
460
+ experience: '8 years',
461
+ avatar: 'https://i.pravatar.cc/150?img=18',
462
+ },
463
+ {
464
+ id: 18,
465
+ name: 'Pam Beesly',
466
+ email: 'pam@example.com',
467
+ website: 'https://pam.com',
468
+ phone: '+1-555-0140',
469
+ department: 'Design',
470
+ role: 'Graphic Designer',
471
+ salary: 70000,
472
+ status: 'Active',
473
+ rating: 4,
474
+ active: true,
475
+ verified: true,
476
+ startDate: '2021-04-15',
477
+ location: 'Scranton',
478
+ manager: 'Clark Kent',
479
+ project: 'Omega',
480
+ skillset: 'Photoshop, Illustrator',
481
+ experience: '6 years',
482
+ avatar: 'https://i.pravatar.cc/150?img=29',
483
+ },
484
+ {
485
+ id: 19,
486
+ name: 'Quentin Tarantino',
487
+ email: 'quentin@example.com',
488
+ website: 'https://quentin.io',
489
+ phone: '+1-555-0141',
490
+ department: 'Engineering',
491
+ role: 'Full Stack Developer',
492
+ salary: 94000,
493
+ status: 'Active',
494
+ rating: 5,
495
+ active: true,
496
+ verified: true,
497
+ startDate: '2020-09-08',
498
+ location: 'San Diego',
499
+ manager: 'Sarah Connor',
500
+ project: 'Phoenix',
501
+ skillset: 'MERN, GraphQL',
502
+ experience: '7 years',
503
+ avatar: 'https://i.pravatar.cc/150?img=19',
504
+ },
505
+ {
506
+ id: 20,
507
+ name: 'Rachel Green',
508
+ email: 'rachel@example.com',
509
+ website: 'https://rachel.dev',
510
+ phone: '+1-555-0142',
511
+ department: 'Marketing',
512
+ role: 'Brand Manager',
513
+ salary: 79000,
514
+ status: 'Active',
515
+ rating: 4,
516
+ active: true,
517
+ verified: false,
518
+ startDate: '2022-02-20',
519
+ location: 'New York',
520
+ manager: 'Mike Ross',
521
+ project: 'Alpha',
522
+ skillset: 'Branding, Strategy',
523
+ experience: '5 years',
524
+ avatar: 'https://i.pravatar.cc/150?img=30',
525
+ },
526
+ {
527
+ id: 21,
528
+ name: 'Steve Rogers',
529
+ email: 'steve@example.com',
530
+ website: 'https://steve.com',
531
+ phone: '+1-555-0143',
532
+ department: 'Engineering',
533
+ role: 'Security Engineer',
534
+ salary: 102000,
535
+ status: 'Active',
536
+ rating: 5,
537
+ active: true,
538
+ verified: true,
539
+ startDate: '2019-12-01',
540
+ location: 'Washington DC',
541
+ manager: 'Sarah Connor',
542
+ project: 'Gamma',
543
+ skillset: 'Security, Pentesting',
544
+ experience: '9 years',
545
+ avatar: 'https://i.pravatar.cc/150?img=21',
546
+ },
547
+ {
548
+ id: 22,
549
+ name: 'Tony Stark',
550
+ email: 'tony@example.com',
551
+ website: 'https://tony.io',
552
+ phone: '+1-555-0144',
553
+ department: 'Engineering',
554
+ role: 'Tech Lead',
555
+ salary: 115000,
556
+ status: 'Active',
557
+ rating: 5,
558
+ active: true,
559
+ verified: true,
560
+ startDate: '2018-05-15',
561
+ location: 'Malibu',
562
+ manager: 'Pepper Potts',
563
+ project: 'Phoenix',
564
+ skillset: 'AI, ML, IoT',
565
+ experience: '15 years',
566
+ avatar: 'https://i.pravatar.cc/150?img=22',
567
+ },
568
+ {
569
+ id: 23,
570
+ name: 'Uma Thurman',
571
+ email: 'uma@example.com',
572
+ website: 'https://uma.dev',
573
+ phone: '+1-555-0145',
574
+ department: 'Sales',
575
+ role: 'Enterprise Sales',
576
+ salary: 86000,
577
+ status: 'Active',
578
+ rating: 4,
579
+ active: true,
580
+ verified: true,
581
+ startDate: '2021-10-12',
582
+ location: 'Las Vegas',
583
+ manager: 'Tom Hardy',
584
+ project: 'Beta',
585
+ skillset: 'Enterprise, Contracts',
586
+ experience: '7 years',
587
+ avatar: 'https://i.pravatar.cc/150?img=31',
588
+ },
589
+ {
590
+ id: 24,
591
+ name: 'Victor Hugo',
592
+ email: 'victor@example.com',
593
+ website: 'https://victor.com',
594
+ phone: '+1-555-0146',
595
+ department: 'Design',
596
+ role: 'UI Designer',
597
+ salary: 76000,
598
+ status: 'Active',
599
+ rating: 4,
600
+ active: true,
601
+ verified: false,
602
+ startDate: '2022-08-25',
603
+ location: 'Portland',
604
+ manager: 'Clark Kent',
605
+ project: 'Omega',
606
+ skillset: 'UI Design, Prototyping',
607
+ experience: '4 years',
608
+ avatar: 'https://i.pravatar.cc/150?img=32',
609
+ },
610
+ {
611
+ id: 25,
612
+ name: 'Wanda Vision',
613
+ email: 'wanda@example.com',
614
+ website: 'https://wanda.io',
615
+ phone: '+1-555-0147',
616
+ department: 'Engineering',
617
+ role: 'Mobile Developer',
618
+ salary: 89000,
619
+ status: 'Active',
620
+ rating: 5,
621
+ active: true,
622
+ verified: true,
623
+ startDate: '2020-11-30',
624
+ location: 'Westview',
625
+ manager: 'Sarah Connor',
626
+ project: 'Gamma',
627
+ skillset: 'React Native, Swift',
628
+ experience: '6 years',
629
+ avatar: 'https://i.pravatar.cc/150?img=33',
630
+ },
631
+ {
632
+ id: 26,
633
+ name: 'Xavier Charles',
634
+ email: 'xavier@example.com',
635
+ website: 'https://xavier.dev',
636
+ phone: '+1-555-0148',
637
+ department: 'HR',
638
+ role: 'Training Manager',
639
+ salary: 73000,
640
+ status: 'Active',
641
+ rating: 4,
642
+ active: true,
643
+ verified: true,
644
+ startDate: '2021-05-20',
645
+ location: 'Salem',
646
+ manager: 'Bruce Wayne',
647
+ project: 'Delta',
648
+ skillset: 'Training, L&D',
649
+ experience: '5 years',
650
+ avatar: 'https://i.pravatar.cc/150?img=34',
651
+ },
652
+ {
653
+ id: 27,
654
+ name: 'Yvonne Strahovski',
655
+ email: 'yvonne@example.com',
656
+ website: 'https://yvonne.com',
657
+ phone: '+1-555-0149',
658
+ department: 'Marketing',
659
+ role: 'Email Marketing',
660
+ salary: 64000,
661
+ status: 'Active',
662
+ rating: 4,
663
+ active: true,
664
+ verified: false,
665
+ startDate: '2023-03-08',
666
+ location: 'Tampa',
667
+ manager: 'Mike Ross',
668
+ project: 'Alpha',
669
+ skillset: 'Mailchimp, Automation',
670
+ experience: '3 years',
671
+ avatar: 'https://i.pravatar.cc/150?img=35',
672
+ },
673
+ {
674
+ id: 28,
675
+ name: 'Zachary Levi',
676
+ email: 'zachary@example.com',
677
+ website: 'https://zachary.io',
678
+ phone: '+1-555-0150',
679
+ department: 'Engineering',
680
+ role: 'Backend Developer',
681
+ salary: 91000,
682
+ status: 'Active',
683
+ rating: 5,
684
+ active: true,
685
+ verified: true,
686
+ startDate: '2020-07-14',
687
+ location: 'Baltimore',
688
+ manager: 'Sarah Connor',
689
+ project: 'Phoenix',
690
+ skillset: 'Node.js, MongoDB',
691
+ experience: '7 years',
692
+ avatar: 'https://i.pravatar.cc/150?img=36',
693
+ },
694
+ {
695
+ id: 29,
696
+ name: 'Amy Adams',
697
+ email: 'amy@example.com',
698
+ website: 'https://amy.dev',
699
+ phone: '+1-555-0151',
700
+ department: 'Sales',
701
+ role: 'Sales Operations',
702
+ salary: 71000,
703
+ status: 'On Leave',
704
+ rating: 4,
705
+ active: false,
706
+ verified: true,
707
+ startDate: '2022-04-18',
708
+ location: 'Detroit',
709
+ manager: 'Tom Hardy',
710
+ project: 'Beta',
711
+ skillset: 'Salesforce, Analytics',
712
+ experience: '4 years',
713
+ avatar: 'https://i.pravatar.cc/150?img=37',
714
+ },
715
+ {
716
+ id: 30,
717
+ name: 'Ben Affleck',
718
+ email: 'ben@example.com',
719
+ website: 'https://ben.com',
720
+ phone: '+1-555-0152',
721
+ department: 'Finance',
722
+ role: 'Financial Analyst',
723
+ salary: 77000,
724
+ status: 'Active',
725
+ rating: 4,
726
+ active: true,
727
+ verified: true,
728
+ startDate: '2021-09-22',
729
+ location: 'Boston',
730
+ manager: 'Angela Martin',
731
+ project: 'Sigma',
732
+ skillset: 'Finance, Modeling',
733
+ experience: '6 years',
734
+ avatar: 'https://i.pravatar.cc/150?img=38',
735
+ },
736
+ {
737
+ id: 31,
738
+ name: 'Cate Blanchett',
739
+ email: 'cate@example.com',
740
+ website: 'https://cate.io',
741
+ phone: '+1-555-0153',
742
+ department: 'Design',
743
+ role: 'Creative Director',
744
+ salary: 96000,
745
+ status: 'Active',
746
+ rating: 5,
747
+ active: true,
748
+ verified: true,
749
+ startDate: '2019-08-05',
750
+ location: 'Los Angeles',
751
+ manager: 'Clark Kent',
752
+ project: 'Omega',
753
+ skillset: 'Creative Strategy, Art',
754
+ experience: '11 years',
755
+ avatar: 'https://i.pravatar.cc/150?img=39',
756
+ },
757
+ {
758
+ id: 32,
759
+ name: 'Daniel Craig',
760
+ email: 'daniel@example.com',
761
+ website: 'https://daniel.dev',
762
+ phone: '+1-555-0154',
763
+ department: 'Engineering',
764
+ role: 'Cloud Architect',
765
+ salary: 108000,
766
+ status: 'Active',
767
+ rating: 5,
768
+ active: true,
769
+ verified: true,
770
+ startDate: '2019-03-12',
771
+ location: 'London',
772
+ manager: 'Sarah Connor',
773
+ project: 'Phoenix',
774
+ skillset: 'AWS, Azure, GCP',
775
+ experience: '12 years',
776
+ avatar: 'https://i.pravatar.cc/150?img=40',
777
+ },
778
+ {
779
+ id: 33,
780
+ name: 'Emma Stone',
781
+ email: 'emma@example.com',
782
+ website: 'https://emma.com',
783
+ phone: '+1-555-0155',
784
+ department: 'Marketing',
785
+ role: 'PR Manager',
786
+ salary: 81000,
787
+ status: 'Active',
788
+ rating: 4,
789
+ active: true,
790
+ verified: true,
791
+ startDate: '2021-11-18',
792
+ location: 'New York',
793
+ manager: 'Mike Ross',
794
+ project: 'Alpha',
795
+ skillset: 'PR, Media Relations',
796
+ experience: '6 years',
797
+ avatar: 'https://i.pravatar.cc/150?img=41',
798
+ },
799
+ {
800
+ id: 34,
801
+ name: 'Frank Sinatra',
802
+ email: 'frank@example.com',
803
+ website: 'https://frank.io',
804
+ phone: '+1-555-0156',
805
+ department: 'Sales',
806
+ role: 'Channel Sales',
807
+ salary: 74000,
808
+ status: 'Active',
809
+ rating: 4,
810
+ active: true,
811
+ verified: false,
812
+ startDate: '2022-06-10',
813
+ location: 'Las Vegas',
814
+ manager: 'Tom Hardy',
815
+ project: 'Beta',
816
+ skillset: 'Partnerships, B2B',
817
+ experience: '5 years',
818
+ avatar: 'https://i.pravatar.cc/150?img=42',
819
+ },
820
+ {
821
+ id: 35,
822
+ name: 'Grace Kelly',
823
+ email: 'grace@example.com',
824
+ website: 'https://grace.dev',
825
+ phone: '+1-555-0157',
826
+ department: 'HR',
827
+ role: 'HR Specialist',
828
+ salary: 67000,
829
+ status: 'Active',
830
+ rating: 4,
831
+ active: true,
832
+ verified: true,
833
+ startDate: '2022-12-01',
834
+ location: 'Monaco',
835
+ manager: 'Bruce Wayne',
836
+ project: 'Delta',
837
+ skillset: 'HR Operations, Benefits',
838
+ experience: '4 years',
839
+ avatar: 'https://i.pravatar.cc/150?img=43',
840
+ },
841
+ {
842
+ id: 36,
843
+ name: 'Henry Cavill',
844
+ email: 'henry@example.com',
845
+ website: 'https://henry.com',
846
+ phone: '+1-555-0158',
847
+ department: 'Engineering',
848
+ role: 'Data Engineer',
849
+ salary: 97000,
850
+ status: 'Active',
851
+ rating: 5,
852
+ active: true,
853
+ verified: true,
854
+ startDate: '2020-10-08',
855
+ location: 'London',
856
+ manager: 'Sarah Connor',
857
+ project: 'Gamma',
858
+ skillset: 'ETL, Spark, SQL',
859
+ experience: '8 years',
860
+ avatar: 'https://i.pravatar.cc/150?img=44',
861
+ },
862
+ {
863
+ id: 37,
864
+ name: 'Isla Fisher',
865
+ email: 'isla@example.com',
866
+ website: 'https://isla.io',
867
+ phone: '+1-555-0159',
868
+ department: 'Design',
869
+ role: 'Product Designer',
870
+ salary: 84000,
871
+ status: 'Active',
872
+ rating: 5,
873
+ active: true,
874
+ verified: true,
875
+ startDate: '2021-02-14',
876
+ location: 'Sydney',
877
+ manager: 'Clark Kent',
878
+ project: 'Omega',
879
+ skillset: 'Product Design, UX',
880
+ experience: '7 years',
881
+ avatar: 'https://i.pravatar.cc/150?img=45',
882
+ },
883
+ {
884
+ id: 38,
885
+ name: 'Jake Gyllenhaal',
886
+ email: 'jake@example.com',
887
+ website: 'https://jake.dev',
888
+ phone: '+1-555-0160',
889
+ department: 'Engineering',
890
+ role: 'Frontend Developer',
891
+ salary: 87000,
892
+ status: 'Active',
893
+ rating: 4,
894
+ active: true,
895
+ verified: true,
896
+ startDate: '2021-08-20',
897
+ location: 'San Francisco',
898
+ manager: 'Sarah Connor',
899
+ project: 'Phoenix',
900
+ skillset: 'Vue.js, TypeScript',
901
+ experience: '6 years',
902
+ avatar: 'https://i.pravatar.cc/150?img=46',
903
+ },
904
+ {
905
+ id: 39,
906
+ name: 'Kate Winslet',
907
+ email: 'kate@example.com',
908
+ website: 'https://kate.com',
909
+ phone: '+1-555-0161',
910
+ department: 'Marketing',
911
+ role: 'Marketing Analyst',
912
+ salary: 69000,
913
+ status: 'Active',
914
+ rating: 4,
915
+ active: true,
916
+ verified: false,
917
+ startDate: '2022-09-15',
918
+ location: 'London',
919
+ manager: 'Mike Ross',
920
+ project: 'Alpha',
921
+ skillset: 'Analytics, Reporting',
922
+ experience: '5 years',
923
+ avatar: 'https://i.pravatar.cc/150?img=47',
924
+ },
925
+ {
926
+ id: 40,
927
+ name: 'Leo DiCaprio',
928
+ email: 'leo@example.com',
929
+ website: 'https://leo.io',
930
+ phone: '+1-555-0162',
931
+ department: 'Sales',
932
+ role: 'Business Development',
933
+ salary: 83000,
934
+ status: 'Active',
935
+ rating: 5,
936
+ active: true,
937
+ verified: true,
938
+ startDate: '2020-12-10',
939
+ location: 'Hollywood',
940
+ manager: 'Tom Hardy',
941
+ project: 'Beta',
942
+ skillset: 'BD, Partnerships',
943
+ experience: '8 years',
944
+ avatar: 'https://i.pravatar.cc/150?img=48',
945
+ },
946
+ {
947
+ id: 41,
948
+ name: 'Morgan Freeman',
949
+ email: 'morgan@example.com',
950
+ website: 'https://morgan.dev',
951
+ phone: '+1-555-0163',
952
+ department: 'Engineering',
953
+ role: 'Solutions Architect',
954
+ salary: 112000,
955
+ status: 'Active',
956
+ rating: 5,
957
+ active: true,
958
+ verified: true,
959
+ startDate: '2018-07-01',
960
+ location: 'Memphis',
961
+ manager: 'Sarah Connor',
962
+ project: 'Phoenix',
963
+ skillset: 'Architecture, Design',
964
+ experience: '14 years',
965
+ avatar: 'https://i.pravatar.cc/150?img=49',
966
+ },
967
+ {
968
+ id: 42,
969
+ name: 'Natalie Portman',
970
+ email: 'natalie@example.com',
971
+ website: 'https://natalie.com',
972
+ phone: '+1-555-0164',
973
+ department: 'Design',
974
+ role: 'Design Lead',
975
+ salary: 93000,
976
+ status: 'Active',
977
+ rating: 5,
978
+ active: true,
979
+ verified: true,
980
+ startDate: '2020-04-22',
981
+ location: 'Jerusalem',
982
+ manager: 'Clark Kent',
983
+ project: 'Omega',
984
+ skillset: 'Leadership, Design',
985
+ experience: '9 years',
986
+ avatar: 'https://i.pravatar.cc/150?img=50',
987
+ },
988
+ {
989
+ id: 43,
990
+ name: 'Owen Wilson',
991
+ email: 'owen@example.com',
992
+ website: 'https://owen.io',
993
+ phone: '+1-555-0165',
994
+ department: 'Sales',
995
+ role: 'Inside Sales Rep',
996
+ salary: 66000,
997
+ status: 'Active',
998
+ rating: 3,
999
+ active: true,
1000
+ verified: false,
1001
+ startDate: '2023-04-05',
1002
+ location: 'Dallas',
1003
+ manager: 'Tom Hardy',
1004
+ project: 'Beta',
1005
+ skillset: 'Cold Calling, Demos',
1006
+ experience: '2 years',
1007
+ avatar: 'https://i.pravatar.cc/150?img=51',
1008
+ },
1009
+ {
1010
+ id: 44,
1011
+ name: 'Penelope Cruz',
1012
+ email: 'penelope@example.com',
1013
+ website: 'https://penelope.dev',
1014
+ phone: '+1-555-0166',
1015
+ department: 'Marketing',
1016
+ role: 'Event Manager',
1017
+ salary: 75000,
1018
+ status: 'Active',
1019
+ rating: 4,
1020
+ active: true,
1021
+ verified: true,
1022
+ startDate: '2021-12-20',
1023
+ location: 'Madrid',
1024
+ manager: 'Mike Ross',
1025
+ project: 'Alpha',
1026
+ skillset: 'Events, Coordination',
1027
+ experience: '6 years',
1028
+ avatar: 'https://i.pravatar.cc/150?img=52',
1029
+ },
1030
+ {
1031
+ id: 45,
1032
+ name: 'Quinn Fabray',
1033
+ email: 'quinn@example.com',
1034
+ website: 'https://quinn.com',
1035
+ phone: '+1-555-0167',
1036
+ department: 'HR',
1037
+ role: 'Benefits Coordinator',
1038
+ salary: 63000,
1039
+ status: 'Active',
1040
+ rating: 4,
1041
+ active: true,
1042
+ verified: true,
1043
+ startDate: '2022-10-12',
1044
+ location: 'Columbus',
1045
+ manager: 'Bruce Wayne',
1046
+ project: 'Delta',
1047
+ skillset: 'Benefits, Payroll',
1048
+ experience: '3 years',
1049
+ avatar: 'https://i.pravatar.cc/150?img=53',
1050
+ },
1051
+ {
1052
+ id: 46,
1053
+ name: 'Ryan Gosling',
1054
+ email: 'ryan@example.com',
1055
+ website: 'https://ryan.io',
1056
+ phone: '+1-555-0168',
1057
+ department: 'Engineering',
1058
+ role: 'ML Engineer',
1059
+ salary: 104000,
1060
+ status: 'Active',
1061
+ rating: 5,
1062
+ active: true,
1063
+ verified: true,
1064
+ startDate: '2019-09-18',
1065
+ location: 'Toronto',
1066
+ manager: 'Sarah Connor',
1067
+ project: 'Gamma',
1068
+ skillset: 'ML, TensorFlow, PyTorch',
1069
+ experience: '10 years',
1070
+ avatar: 'https://i.pravatar.cc/150?img=54',
1071
+ },
1072
+ {
1073
+ id: 47,
1074
+ name: 'Scarlett Johansson',
1075
+ email: 'scarlett@example.com',
1076
+ website: 'https://scarlett.dev',
1077
+ phone: '+1-555-0169',
1078
+ department: 'Design',
1079
+ role: 'Interaction Designer',
1080
+ salary: 80000,
1081
+ status: 'Active',
1082
+ rating: 5,
1083
+ active: true,
1084
+ verified: true,
1085
+ startDate: '2021-06-25',
1086
+ location: 'New York',
1087
+ manager: 'Clark Kent',
1088
+ project: 'Omega',
1089
+ skillset: 'Interaction, Motion',
1090
+ experience: '7 years',
1091
+ avatar: 'https://i.pravatar.cc/150?img=55',
1092
+ },
1093
+ {
1094
+ id: 48,
1095
+ name: 'Tom Hanks',
1096
+ email: 'tom@example.com',
1097
+ website: 'https://tom.com',
1098
+ phone: '+1-555-0170',
1099
+ department: 'Sales',
1100
+ role: 'Key Account Manager',
1101
+ salary: 90000,
1102
+ status: 'Active',
1103
+ rating: 5,
1104
+ active: true,
1105
+ verified: true,
1106
+ startDate: '2019-11-08',
1107
+ location: 'Oakland',
1108
+ manager: 'Tom Hardy',
1109
+ project: 'Beta',
1110
+ skillset: 'Account Management',
1111
+ experience: '11 years',
1112
+ avatar: 'https://i.pravatar.cc/150?img=56',
1113
+ },
1114
+ {
1115
+ id: 49,
1116
+ name: 'Viola Davis',
1117
+ email: 'viola@example.com',
1118
+ website: 'https://viola.io',
1119
+ phone: '+1-555-0171',
1120
+ department: 'Finance',
1121
+ role: 'Controller',
1122
+ salary: 99000,
1123
+ status: 'Active',
1124
+ rating: 5,
1125
+ active: true,
1126
+ verified: true,
1127
+ startDate: '2018-10-15',
1128
+ location: 'Providence',
1129
+ manager: 'Angela Martin',
1130
+ project: 'Sigma',
1131
+ skillset: 'Finance, Compliance',
1132
+ experience: '13 years',
1133
+ avatar: 'https://i.pravatar.cc/150?img=57',
1134
+ },
1135
+ {
1136
+ id: 50,
1137
+ name: 'Will Smith',
1138
+ email: 'will@example.com',
1139
+ website: 'https://will.dev',
1140
+ phone: '+1-555-0172',
1141
+ department: 'Engineering',
1142
+ role: 'Site Reliability Engineer',
1143
+ salary: 101000,
1144
+ status: 'Active',
1145
+ rating: 5,
1146
+ active: true,
1147
+ verified: true,
1148
+ startDate: '2019-06-30',
1149
+ location: 'Philadelphia',
1150
+ manager: 'Sarah Connor',
1151
+ project: 'Phoenix',
1152
+ skillset: 'SRE, Monitoring',
1153
+ experience: '9 years',
1154
+ avatar: 'https://i.pravatar.cc/150?img=58',
1155
+ },
1156
+ ];
1157
+
1158
+ const columns = [
1159
+ { id: 'id', field: 'id', label: 'ID', sortable: true, width: '60px' },
1160
+ { id: 'name', field: 'name', label: 'Name', sortable: true, width: '150px' },
1161
+ { id: 'email', field: 'email', label: 'Email', sortable: true, width: '200px' },
1162
+ { id: 'phone', field: 'phone', label: 'Phone', sortable: true, width: '130px' },
1163
+ { id: 'department', field: 'department', label: 'Department', sortable: true, filterable: true, width: '120px' },
1164
+ { id: 'role', field: 'role', label: 'Role', sortable: true, width: '180px' },
1165
+ {
1166
+ id: 'salary',
1167
+ field: 'salary',
1168
+ label: 'Salary',
1169
+ sortable: true,
1170
+ width: '110px',
1171
+ format: function (value) {
1172
+ return '$' + value.toLocaleString();
1173
+ },
1174
+ },
1175
+ { id: 'status', field: 'status', label: 'Status', sortable: true, filterable: true, width: '100px' },
1176
+ { id: 'location', field: 'location', label: 'Location', sortable: true, width: '150px' },
1177
+ { id: 'manager', field: 'manager', label: 'Manager', sortable: true, width: '140px' },
1178
+ { id: 'project', field: 'project', label: 'Project', sortable: true, filterable: true, width: '120px' },
1179
+ { id: 'skillset', field: 'skillset', label: 'Skills', sortable: false, width: '180px' },
1180
+ { id: 'experience', field: 'experience', label: 'Experience', sortable: true, width: '120px' },
1181
+ { id: 'startDate', field: 'startDate', label: 'Start Date', sortable: true, width: '120px' },
1182
+ {
1183
+ id: 'verified',
1184
+ field: 'verified',
1185
+ label: 'Verified',
1186
+ sortable: true,
1187
+ width: '90px',
1188
+ format: function (value) {
1189
+ return value ? '✓' : '✗';
1190
+ },
1191
+ },
1192
+ ];
1193
+
1194
+ function showMasterTier() {
1195
+ tableContainer.innerHTML = `
1196
+ <div class="demo-block">
1197
+ <h3>✨ Master-Tier: Enterprise Material Archetypes</h3>
1198
+ <p style="color: #6b7280; margin-bottom: 24px;">High-fidelity substrates for cinematic data density.</p>
1199
+
1200
+ <div style="display: grid; grid-template-columns: 1fr; gap: 40px;">
1201
+ <div>
1202
+ <h4 style="margin-bottom: 12px; color: #0f172a; display: flex; align-items: center; gap: 8px;">
1203
+ <span style="width: 8px; height: 8px; background: #2563eb; border-radius: 50%;"></span>
1204
+ Glassmorphism Substrate
1205
+ </h4>
1206
+ <div style="padding: 40px; background: linear-gradient(135deg, #6366f1 0%, #a855f7 100%); border-radius: 12px;">
1207
+ <ui-advanced-data-table id="glassTable" variant="glass" theme="dark"></ui-advanced-data-table>
1208
+ </div>
1209
+ </div>
1210
+
1211
+ <div>
1212
+ <h4 style="margin-bottom: 12px; color: #0f172a; display: flex; align-items: center; gap: 8px;">
1213
+ <span style="width: 8px; height: 8px; background: #10b981; border-radius: 50%;"></span>
1214
+ Raised Relief (Light Theme)
1215
+ </h4>
1216
+ <ui-advanced-data-table id="raisedTable" variant="raised" color="success"></ui-advanced-data-table>
1217
+ </div>
1218
+
1219
+ <div>
1220
+ <h4 style="margin-bottom: 12px; color: #0f172a; display: flex; align-items: center; gap: 8px;">
1221
+ <span style="width: 8px; height: 8px; background: #ef4444; border-radius: 50%;"></span>
1222
+ Diagnostic Atmospheric Glow (Danger)
1223
+ </h4>
1224
+ <ui-advanced-data-table id="dangerTable" color="danger"></ui-advanced-data-table>
1225
+ </div>
1226
+ </div>
1227
+ </div>
1228
+ `;
1229
+
1230
+ setTimeout(() => {
1231
+ const miniData = sampleData.slice(0, 5);
1232
+ const miniCols = [
1233
+ { id: 'name', field: 'name', label: 'Identity' },
1234
+ { id: 'department', field: 'department', label: 'Sector' },
1235
+ { id: 'salary', field: 'salary', label: 'Capital', format: v => '$' + v.toLocaleString() },
1236
+ { id: 'status', field: 'status', label: 'Condition' },
1237
+ { id: 'rating', field: 'rating', label: 'Evaluation', type: 'rating' },
1238
+ ];
1239
+
1240
+ ['glassTable', 'raisedTable', 'dangerTable'].forEach(id => {
1241
+ const table = document.getElementById(id);
1242
+ if (table) {
1243
+ table.data = miniData;
1244
+ table.columns = miniCols;
1245
+ table.pagination = false;
1246
+ }
1247
+ });
1248
+ }, 100);
1249
+ }
1250
+
1251
+ function showBasicTable() {
1252
+ tableContainer.innerHTML = `
1253
+ <div class="demo-block">
1254
+ <h3>Basic Data Table - 50 Records with Scrolling</h3>
1255
+ <div style="overflow: auto; max-height: 600px; border: 1px solid #e5e7eb; border-radius: 8px;">
1256
+ <ui-advanced-data-table id="basicTable"></ui-advanced-data-table>
1257
+ </div>
1258
+
1259
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0f9ff; border-radius: 6px;">
1260
+ <p style="margin: 0; color: #1e40af; font-size: 14px;">
1261
+ 💡 Table with 50 records and 15 columns. Scroll horizontally and vertically to view all data. Click column headers to sort.
1262
+ </p>
1263
+ </div>
1264
+ </div>
1265
+ `;
1266
+
1267
+ setTimeout(() => {
1268
+ const table = document.getElementById('basicTable');
1269
+ if (table) {
1270
+ table.data = sampleData;
1271
+ table.columns = columns;
1272
+ table.sortable = true;
1273
+ table.filterable = true;
1274
+ table.searchable = true;
1275
+ }
1276
+ }, 100);
1277
+ }
1278
+
1279
+ function showTableWithSelection() {
1280
+ tableContainer.innerHTML = `
1281
+ <div class="demo-block">
1282
+ <h3>Table with Row Selection</h3>
1283
+ <p style="color: #6b7280; margin-bottom: 12px;">Select single or multiple rows with checkboxes</p>
1284
+ <ui-advanced-data-table id="selectTable"></ui-advanced-data-table>
1285
+
1286
+ <div id="selectionInfo" style="margin-top: 16px; padding: 12px; background-color: #dcfce7; border-radius: 6px;">
1287
+ <p style="margin: 0; color: #065f46; font-size: 14px;">
1288
+ Selected rows: <strong>0</strong>
1289
+ </p>
1290
+ </div>
1291
+ </div>
1292
+ `;
1293
+
1294
+ setTimeout(() => {
1295
+ const table = document.getElementById('selectTable');
1296
+ if (table) {
1297
+ table.data = sampleData.slice(0, 5);
1298
+ table.columns = columns.slice(0, 5);
1299
+ table.sortable = true;
1300
+ table.selectable = true;
1301
+ table.pagination = false;
1302
+
1303
+ table.addEventListener('rowSelect', e => {
1304
+ const infoDiv = document.getElementById('selectionInfo');
1305
+ if (infoDiv) {
1306
+ infoDiv.innerHTML = `
1307
+ <p style="margin: 0; color: #065f46; font-size: 14px;">
1308
+ Selected rows: <strong>${e.detail.selectedRows.length}</strong>
1309
+ </p>
1310
+ `;
1311
+ }
1312
+ });
1313
+
1314
+ table.addEventListener('rowDeselect', e => {
1315
+ const infoDiv = document.getElementById('selectionInfo');
1316
+ if (infoDiv) {
1317
+ infoDiv.innerHTML = `
1318
+ <p style="margin: 0; color: #065f46; font-size: 14px;">
1319
+ Selected rows: <strong>${e.detail.selectedRows.length}</strong>
1320
+ </p>
1321
+ `;
1322
+ }
1323
+ });
1324
+ }
1325
+ }, 100);
1326
+ }
1327
+
1328
+ function showRowActions() {
1329
+ tableContainer.innerHTML = `
1330
+ <div class="demo-block">
1331
+ <h3>Row Actions Menu</h3>
1332
+ <p style="color: #6b7280; margin-bottom: 12px;">3-dot menu for each row with edit/delete actions</p>
1333
+ <ui-advanced-data-table id="actionsTable"></ui-advanced-data-table>
1334
+
1335
+ <div id="actionLog" style="margin-top: 16px; padding: 12px; background-color: #fef3c7; border-radius: 6px;">
1336
+ <h4 style="margin: 0 0 8px 0; color: #92400e; font-size: 14px;">Action Log:</h4>
1337
+ <div id="logContent" style="color: #78350f; font-size: 14px; font-family: monospace;">
1338
+ <p style="margin: 0;">Click the 3-dot menu on any row to perform actions...</p>
1339
+ </div>
1340
+ </div>
1341
+ </div>
1342
+ `;
1343
+
1344
+ setTimeout(() => {
1345
+ const table = document.getElementById('actionsTable');
1346
+ if (table) {
1347
+ table.data = sampleData.slice(0, 6);
1348
+ table.columns = [
1349
+ { id: 'name', field: 'name', label: 'Name', sortable: true },
1350
+ { id: 'email', field: 'email', label: 'Email', sortable: true },
1351
+ { id: 'department', field: 'department', label: 'Department', sortable: true },
1352
+ { id: 'role', field: 'role', label: 'Role', sortable: true },
1353
+ { id: 'status', field: 'status', label: 'Status', sortable: true },
1354
+ ];
1355
+ table.sortable = true;
1356
+ table.showActions = true;
1357
+ table.pagination = false;
1358
+
1359
+ const logContent = document.getElementById('logContent');
1360
+ const addLog = function (message, color) {
1361
+ if (logContent) {
1362
+ const timestamp = new Date().toLocaleTimeString();
1363
+ const logEntry = document.createElement('p');
1364
+ logEntry.style.margin = '4px 0';
1365
+ logEntry.style.color = color || '#78350f';
1366
+ logEntry.textContent = '[' + timestamp + '] ' + message;
1367
+ logContent.appendChild(logEntry);
1368
+
1369
+ // Keep only last 5 logs
1370
+ while (logContent.children.length > 5) {
1371
+ logContent.removeChild(logContent.firstChild);
1372
+ }
1373
+ }
1374
+ };
1375
+
1376
+ table.addEventListener('rowEdit', function (e) {
1377
+ addLog('Edit action for: ' + e.detail.row.name + ' (ID: ' + e.detail.row.id + ')', '#1d4ed8');
1378
+ });
1379
+
1380
+ table.addEventListener('rowDelete', function (e) {
1381
+ addLog('Delete action for: ' + e.detail.row.name + ' (ID: ' + e.detail.row.id + ')', '#dc2626');
1382
+ });
1383
+
1384
+ table.addEventListener('rowAction', function (e) {
1385
+ addLog('Custom action "' + e.detail.action + '" for: ' + e.detail.row.name, '#7c3aed');
1386
+ });
1387
+ }
1388
+ }, 100);
1389
+ }
1390
+
1391
+ function showEditableTable() {
1392
+ tableContainer.innerHTML = `
1393
+ <div class="demo-block">
1394
+ <h3>Editable Table Mode</h3>
1395
+ <p style="color: #6b7280; margin-bottom: 12px;">All cells are editable with appropriate input types based on data type</p>
1396
+
1397
+ <ui-advanced-data-table id="editableTable"></ui-advanced-data-table>
1398
+
1399
+ <div id="editLog" style="margin-top: 16px; padding: 12px; background-color: #ecfdf5; border-radius: 6px;">
1400
+ <h4 style="margin: 0 0 8px 0; color: #065f46; font-size: 14px;">Edit Log:</h4>
1401
+ <div id="editLogContent" style="color: #047857; font-size: 13px; font-family: monospace; max-height: 200px; overflow-y: auto;">
1402
+ <p style="margin: 0;">Edit any cell to see changes logged here...</p>
1403
+ </div>
1404
+ </div>
1405
+
1406
+ <div style="margin-top: 16px; padding: 12px; background-color: #eff6ff; border-radius: 6px;">
1407
+ <p style="margin: 0; color: #1e40af; font-size: 14px;">
1408
+ 💡 <strong>Features:</strong> Each column type renders appropriate input (text, number, date, email, checkbox, switch, rating, select, etc.)
1409
+ </p>
1410
+ </div>
1411
+ </div>
1412
+ `;
1413
+
1414
+ setTimeout(() => {
1415
+ const table = document.getElementById('editableTable');
1416
+ if (table) {
1417
+ const editableData = [
1418
+ {
1419
+ id: 1,
1420
+ name: 'John Doe',
1421
+ email: 'john@example.com',
1422
+ age: 28,
1423
+ website: 'https://johndoe.com',
1424
+ phone: '+1-555-0123',
1425
+ salary: 95000,
1426
+ startDate: '2022-01-15',
1427
+ rating: 4,
1428
+ active: true,
1429
+ verified: true,
1430
+ },
1431
+ {
1432
+ id: 2,
1433
+ name: 'Jane Smith',
1434
+ email: 'jane@example.com',
1435
+ age: 32,
1436
+ website: 'https://janesmith.io',
1437
+ phone: '+1-555-0124',
1438
+ salary: 85000,
1439
+ startDate: '2021-06-10',
1440
+ rating: 5,
1441
+ active: true,
1442
+ verified: false,
1443
+ },
1444
+ {
1445
+ id: 3,
1446
+ name: 'Bob Johnson',
1447
+ email: 'bob@example.com',
1448
+ age: 45,
1449
+ website: 'https://bobjohnson.dev',
1450
+ phone: '+1-555-0125',
1451
+ salary: 105000,
1452
+ startDate: '2020-03-22',
1453
+ rating: 3,
1454
+ active: false,
1455
+ verified: true,
1456
+ },
1457
+ {
1458
+ id: 4,
1459
+ name: 'Alice Williams',
1460
+ email: 'alice@example.com',
1461
+ age: 29,
1462
+ website: 'https://alice.dev',
1463
+ phone: '+1-555-0126',
1464
+ salary: 70000,
1465
+ startDate: '2021-09-05',
1466
+ rating: 4,
1467
+ active: true,
1468
+ verified: true,
1469
+ },
1470
+ ];
1471
+
1472
+ const editableColumns = [
1473
+ { id: 'name', field: 'name', label: 'Name', type: 'text', editable: true },
1474
+ { id: 'email', field: 'email', label: 'Email', type: 'email', editable: true },
1475
+ { id: 'age', field: 'age', label: 'Age', type: 'number', editable: true },
1476
+ { id: 'website', field: 'website', label: 'Website', type: 'url', editable: true },
1477
+ { id: 'phone', field: 'phone', label: 'Phone', type: 'tel', editable: true },
1478
+ { id: 'salary', field: 'salary', label: 'Salary', type: 'number', editable: true },
1479
+ { id: 'startDate', field: 'startDate', label: 'Start Date', type: 'date', editable: true },
1480
+ { id: 'rating', field: 'rating', label: 'Rating', type: 'rating', maxRating: 5, editable: true },
1481
+ { id: 'active', field: 'active', label: 'Active', type: 'switch', editable: true },
1482
+ { id: 'verified', field: 'verified', label: 'Verified', type: 'checkbox', editable: true },
1483
+ ];
1484
+
1485
+ table.data = editableData;
1486
+ table.columns = editableColumns;
1487
+ table.editable = true;
1488
+ table.sortable = true;
1489
+ table.pagination = false;
1490
+
1491
+ const editLogContent = document.getElementById('editLogContent');
1492
+ editLogContent.innerHTML = '';
1493
+
1494
+ table.addEventListener('cellEdit', function (e) {
1495
+ const timestamp = new Date().toLocaleTimeString();
1496
+ const logEntry = document.createElement('p');
1497
+ logEntry.style.margin = '4px 0';
1498
+ logEntry.style.padding = '6px 8px';
1499
+ logEntry.style.background = '#fff';
1500
+ logEntry.style.borderRadius = '4px';
1501
+ logEntry.style.borderLeft = '3px solid #10b981';
1502
+ logEntry.textContent = '[' + timestamp + '] Row ' + e.detail.rowId + ' - ' + e.detail.field + ': ' + JSON.stringify(e.detail.value);
1503
+ editLogContent.appendChild(logEntry);
1504
+
1505
+ if (editLogContent.children.length > 10) {
1506
+ editLogContent.removeChild(editLogContent.firstChild);
1507
+ }
1508
+
1509
+ editLogContent.scrollTop = editLogContent.scrollHeight;
1510
+ });
1511
+ }
1512
+ }, 100);
1513
+ }
1514
+
1515
+ function showSkeletonLoading() {
1516
+ tableContainer.innerHTML = `
1517
+ <div class="demo-block">
1518
+ <h3>Skeleton Loading State</h3>
1519
+ <p style="color: #6b7280; margin-bottom: 12px;">Animated skeleton screens while data loads</p>
1520
+
1521
+ <div style="display: flex; gap: 12px; margin-bottom: 16px;">
1522
+ <ui-button id="btnLoadSkel" variant="outline" color="success" label="Load with Skeleton" style="--btn-bg: #10b981;"></ui-button>
1523
+ <ui-button id="btnLoadSpinner" variant="outline" color="success" label="Load with Spinner" style="--btn-bg: #10b981;"></ui-button>
1524
+ </div>
1525
+
1526
+ <div id="skeletonDemo"></div>
1527
+
1528
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0f9ff; border-radius: 6px;">
1529
+ <p style="margin: 0; color: #1e40af; font-size: 14px;">
1530
+ ✨ Skeleton loading provides better perceived performance by showing content placeholders.
1531
+ </p>
1532
+ </div>
1533
+ </div>
1534
+ `;
1535
+
1536
+ setTimeout(() => {
1537
+ const bSkel = document.getElementById('btnLoadSkel');
1538
+ const bSpin = document.getElementById('btnLoadSpinner');
1539
+ if (bSkel) bSkel.addEventListener('click', () => loadWithSkeleton());
1540
+ if (bSpin) bSpin.addEventListener('click', () => loadWithSpinner());
1541
+ loadWithSkeleton();
1542
+ }, 100);
1543
+ }
1544
+
1545
+ function loadWithSkeleton() {
1546
+ const container = document.getElementById('skeletonDemo');
1547
+ if (container) {
1548
+ container.innerHTML = '<ui-advanced-data-table id="skeletonTable" loading="true" show-skeleton="true" skeleton-rows="5"></ui-advanced-data-table>';
1549
+
1550
+ setTimeout(() => {
1551
+ const table = document.getElementById('skeletonTable');
1552
+ if (table) {
1553
+ table.columns = columns.slice(0, 5);
1554
+
1555
+ setTimeout(() => {
1556
+ table.data = sampleData.slice(0, 5);
1557
+ table.loading = false;
1558
+ table.pagination = false;
1559
+ }, 2000);
1560
+ }
1561
+ }, 100);
1562
+ }
1563
+ }
1564
+
1565
+ function loadWithSpinner() {
1566
+ const container = document.getElementById('skeletonDemo');
1567
+ if (container) {
1568
+ container.innerHTML = '<ui-advanced-data-table id="spinnerTable" loading="true" show-skeleton="false"></ui-advanced-data-table>';
1569
+
1570
+ setTimeout(() => {
1571
+ const table = document.getElementById('spinnerTable');
1572
+ if (table) {
1573
+ table.columns = columns.slice(0, 5);
1574
+
1575
+ setTimeout(() => {
1576
+ table.data = sampleData.slice(0, 5);
1577
+ table.loading = false;
1578
+ table.pagination = false;
1579
+ }, 2000);
1580
+ }
1581
+ }, 100);
1582
+ }
1583
+ }
1584
+
1585
+ function showColumnGrouping() {
1586
+ tableContainer.innerHTML = `
1587
+ <div class="demo-block">
1588
+ <h3>Column Grouping (Multi-Level Headers)</h3>
1589
+ <p style="color: #6b7280; margin-bottom: 12px;">Group related columns under common parent headers</p>
1590
+ <ui-advanced-data-table id="columnGroupTable"></ui-advanced-data-table>
1591
+
1592
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0fdf4; border-radius: 6px;">
1593
+ <p style="margin: 0; color: #166534; font-size: 14px;">
1594
+ ✓ Column grouping organizes related data with hierarchical headers for better visual structure.
1595
+ </p>
1596
+ </div>
1597
+ </div>
1598
+ `;
1599
+
1600
+ setTimeout(() => {
1601
+ const table = document.getElementById('columnGroupTable');
1602
+ if (table) {
1603
+ table.columns = [
1604
+ { id: 'id', field: 'id', label: 'ID', width: '70px' },
1605
+ {
1606
+ id: 'personal',
1607
+ label: 'Personal Information',
1608
+ children: [
1609
+ { id: 'name', field: 'name', label: 'Name', sortable: true },
1610
+ { id: 'email', field: 'email', label: 'Email', type: 'email' },
1611
+ { id: 'phone', field: 'phone', label: 'Phone', type: 'tel' },
1612
+ ],
1613
+ },
1614
+ {
1615
+ id: 'employment',
1616
+ label: 'Employment Details',
1617
+ children: [
1618
+ { id: 'department', field: 'department', label: 'Department', sortable: true },
1619
+ { id: 'role', field: 'role', label: 'Role' },
1620
+ {
1621
+ id: 'salary',
1622
+ field: 'salary',
1623
+ label: 'Salary',
1624
+ format: function (v) {
1625
+ return '$' + v.toLocaleString();
1626
+ },
1627
+ },
1628
+ ],
1629
+ },
1630
+ {
1631
+ id: 'status_info',
1632
+ label: 'Status',
1633
+ children: [
1634
+ { id: 'status', field: 'status', label: 'Employment Status' },
1635
+ { id: 'active', field: 'active', label: 'Active', type: 'switch', align: 'center' },
1636
+ ],
1637
+ },
1638
+ ];
1639
+ table.data = sampleData.slice(0, 5);
1640
+ table.columnGrouping = true;
1641
+ table.pagination = false;
1642
+ }
1643
+ }, 100);
1644
+ }
1645
+
1646
+ function showRowGrouping() {
1647
+ tableContainer.innerHTML = `
1648
+ <div class="demo-block">
1649
+ <h3>Row Grouping</h3>
1650
+ <p style="color: #6b7280; margin-bottom: 12px;">Group rows by column values with expand/collapse functionality</p>
1651
+
1652
+ <div style="display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px;">
1653
+ <ui-button id="btnGrpDept" variant="outline" color="secondary" label="Group by Department" size="md"ui-button>
1654
+ <ui-button id="btnGrpStatus" variant="outline" color="secondary" label="Group by Status" size="md"ui-button>
1655
+ <ui-button id="btnGrpClear" variant="outline" color="secondary" label="Clear Grouping" size="md"ui-button>
1656
+ </div>
1657
+
1658
+ <ui-advanced-data-table id="rowGroupTable"></ui-advanced-data-table>
1659
+
1660
+ <div style="margin-top: 16px; padding: 12px; background-color: #fef3c7; border-radius: 6px;">
1661
+ <p style="margin: 0; color: #92400e; font-size: 14px;">
1662
+ 💡 Click on group headers to expand/collapse groups. Each group shows item count.
1663
+ </p>
1664
+ </div>
1665
+ </div>
1666
+ `;
1667
+
1668
+ setTimeout(() => {
1669
+ const table = document.getElementById('rowGroupTable');
1670
+ if (table) {
1671
+ table.columns = [
1672
+ { id: 'name', field: 'name', label: 'Name', sortable: true },
1673
+ { id: 'email', field: 'email', label: 'Email', type: 'email' },
1674
+ { id: 'department', field: 'department', label: 'Department', sortable: true, groupable: true },
1675
+ { id: 'status', field: 'status', label: 'Status', groupable: true },
1676
+ {
1677
+ id: 'salary',
1678
+ field: 'salary',
1679
+ label: 'Salary',
1680
+ format: function (v) {
1681
+ return '$' + v.toLocaleString();
1682
+ },
1683
+ },
1684
+ ];
1685
+ table.data = sampleData;
1686
+ table.pagination = false;
1687
+ groupByDepartment();
1688
+
1689
+ const bDept = document.getElementById('btnGrpDept');
1690
+ const bStatus = document.getElementById('btnGrpStatus');
1691
+ const bClear = document.getElementById('btnGrpClear');
1692
+ if (bDept) bDept.addEventListener('click', () => groupByDepartment());
1693
+ if (bStatus) bStatus.addEventListener('click', () => groupByStatus());
1694
+ if (bClear) bClear.addEventListener('click', () => clearGrouping());
1695
+ }
1696
+ }, 100);
1697
+ }
1698
+
1699
+ const groupByDepartment = function () {
1700
+ const table = document.getElementById('rowGroupTable');
1701
+ if (table) {
1702
+ table.groupBy = 'department';
1703
+ table.expandGroupsByDefault = true;
1704
+ table.showGroupCount = true;
1705
+ }
1706
+ };
1707
+
1708
+ const groupByStatus = function () {
1709
+ const table = document.getElementById('rowGroupTable');
1710
+ if (table) {
1711
+ table.groupBy = 'status';
1712
+ table.expandGroupsByDefault = true;
1713
+ table.showGroupCount = true;
1714
+ }
1715
+ };
1716
+
1717
+ const clearGrouping = function () {
1718
+ const table = document.getElementById('rowGroupTable');
1719
+ if (table) {
1720
+ table.groupBy = '';
1721
+ }
1722
+ };
1723
+
1724
+ function showInputTypes() {
1725
+ tableContainer.innerHTML = `
1726
+ <div class="demo-block">
1727
+ <h3>Multiple Cell Input Types</h3>
1728
+ <p style="color: #6b7280; margin-bottom: 12px;">Rich input types with editable cells - double-click to edit</p>
1729
+ <ui-advanced-data-table id="inputTypesTable" editable="true"></ui-advanced-data-table>
1730
+
1731
+ <div style="margin-top: 16px; padding: 12px; background-color: #eff6ff; border-radius: 6px;">
1732
+ <p style="margin: 0; color: #1e40af; font-size: 14px;">
1733
+ 🎨 Double-click cells to edit. Available types:
1734
+ </p>
1735
+ <ul style="margin: 8px 0 0 20px; color: #1e40af; font-size: 13px; line-height: 1.8;">
1736
+ <li><strong>Text, Number, Email, URL, Tel:</strong> Standard inputs</li>
1737
+ <li><strong>Date, Time, DateTime:</strong> Date/time pickers</li>
1738
+ <li><strong>Checkbox, Switch:</strong> Toggle controls</li>
1739
+ <li><strong>Rating:</strong> Star rating (click stars)</li>
1740
+ <li><strong>Select:</strong> Dropdown selection</li>
1741
+ <li><strong>Image:</strong> Display images</li>
1742
+ </ul>
1743
+ </div>
1744
+ </div>
1745
+ `;
1746
+
1747
+ setTimeout(() => {
1748
+ const table = document.getElementById('inputTypesTable');
1749
+ if (table) {
1750
+ table.columns = [
1751
+ {
1752
+ id: 'avatar',
1753
+ field: 'avatar',
1754
+ label: 'Avatar',
1755
+ type: 'image',
1756
+ align: 'center',
1757
+ width: '80px',
1758
+ imageStyle: { width: '40px', height: '40px', borderRadius: '50%' },
1759
+ },
1760
+ { id: 'name', field: 'name', label: 'Name (Text)', type: 'text', editable: true },
1761
+ { id: 'email', field: 'email', label: 'Email', type: 'email', editable: true },
1762
+ { id: 'phone', field: 'phone', label: 'Phone', type: 'tel', editable: true },
1763
+ { id: 'website', field: 'website', label: 'Website', type: 'url', editable: true },
1764
+ { id: 'rating', field: 'rating', label: 'Rating', type: 'rating', editable: true, maxRating: 5, align: 'center' },
1765
+ { id: 'active', field: 'active', label: 'Active', type: 'switch', editable: true, align: 'center' },
1766
+ { id: 'verified', field: 'verified', label: 'Verified', type: 'checkbox', editable: true, align: 'center' },
1767
+ { id: 'startDate', field: 'startDate', label: 'Start Date', type: 'date', editable: true },
1768
+ {
1769
+ id: 'status',
1770
+ field: 'status',
1771
+ label: 'Status',
1772
+ type: 'select',
1773
+ editable: true,
1774
+ selectOptions: [
1775
+ { label: 'Active', value: 'Active' },
1776
+ { label: 'On Leave', value: 'On Leave' },
1777
+ { label: 'Inactive', value: 'Inactive' },
1778
+ ],
1779
+ },
1780
+ ];
1781
+ table.data = sampleData.slice(0, 5);
1782
+ table.pagination = false;
1783
+ }
1784
+ }, 100);
1785
+ }
1786
+
1787
+ function showInteractiveTable() {
1788
+ tableContainer.innerHTML = `
1789
+ <div class="demo-block">
1790
+ <h3>🎮 Interactive Playground</h3>
1791
+ <p style="color: #6b7280; margin-bottom: 16px;">Combine all features and see them work together!</p>
1792
+
1793
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 16px;">
1794
+ <ui-button id="btnLoadComb" variant="outline" color="warning" label="🚀 Load Demo" size="md"ui-button>
1795
+ <ui-button id="btnToggleSkel" variant="outline" color="info" label="Toggle Skeleton" size="md"ui-button>
1796
+ <ui-button id="btnToggleGrp" variant="outline" color="primary" label="Toggle Grouping" size="md"ui-button>
1797
+ <ui-button id="btnToggleSel" variant="outline" color="success" label="Toggle Selection" size="md"ui-button>
1798
+ <ui-button id="btnToggleAct" variant="outline" color="info" label="Toggle Actions" size="md"ui-button>
1799
+ <ui-button id="btnToggleEdi" variant="outline" color="warning" label="Toggle Editable" size="md"ui-button>
1800
+ <ui-button id="btnToggleTree" variant="outline" color="success" label="🌲 Toggle Tree" size="md"ui-button>
1801
+ </div>
1802
+
1803
+ <div id="playgroundStatus" style="padding: 12px; background-color: #e0e7ff; border-radius: 6px; margin-bottom: 16px; font-size: 14px; color: #3730a3;">
1804
+ <strong>Current Settings:</strong> <span id="statusText">Loading...</span>
1805
+ </div>
1806
+
1807
+ <ui-advanced-data-table
1808
+ id="combinedTable"
1809
+ selectable="true"
1810
+ show-skeleton="true"
1811
+ skeleton-rows="6"></ui-advanced-data-table>
1812
+
1813
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0fdf4; border-radius: 6px;">
1814
+ <p style="margin: 0; color: #166534; font-size: 14px;">
1815
+ 🎯 <strong>Interactive Features:</strong> Skeleton Loading, Column Grouping, Row Grouping, Selection, Row Actions, Editable Mode, Sorting, Filtering, Pagination
1816
+ </p>
1817
+ </div>
1818
+ </div>
1819
+ `;
1820
+
1821
+ setTimeout(() => {
1822
+ const bLoad = document.getElementById('btnLoadComb');
1823
+ const bSkel = document.getElementById('btnToggleSkel');
1824
+ const bGrp = document.getElementById('btnToggleGrp');
1825
+ const bSel = document.getElementById('btnToggleSel');
1826
+ const bAct = document.getElementById('btnToggleAct');
1827
+ const bEdi = document.getElementById('btnToggleEdi');
1828
+ const bTree = document.getElementById('btnToggleTree');
1829
+
1830
+ if (bLoad) bLoad.addEventListener('click', () => loadCombinedDemo());
1831
+ if (bSkel) bSkel.addEventListener('click', () => toggleSkeleton());
1832
+ if (bGrp) bGrp.addEventListener('click', () => toggleGrouping());
1833
+ if (bSel) bSel.addEventListener('click', () => toggleSelection());
1834
+ if (bAct) bAct.addEventListener('click', () => toggleActions());
1835
+ if (bEdi) bEdi.addEventListener('click', () => toggleEditable());
1836
+ if (bTree) bTree.addEventListener('click', () => toggleTreeMode());
1837
+
1838
+ loadCombinedDemo();
1839
+ }, 100);
1840
+ }
1841
+
1842
+ function loadCombinedDemo() {
1843
+ const table = document.getElementById('combinedTable');
1844
+ if (table) {
1845
+ table.loading = true;
1846
+ updatePlaygroundStatus();
1847
+
1848
+ setTimeout(() => {
1849
+ table.columns = [
1850
+ { id: 'id', field: 'id', label: 'ID', width: '70px', sortable: true },
1851
+ {
1852
+ id: 'personal',
1853
+ label: 'Personal Info',
1854
+ children: [
1855
+ {
1856
+ id: 'avatar',
1857
+ field: 'avatar',
1858
+ label: 'Avatar',
1859
+ type: 'image',
1860
+ align: 'center',
1861
+ width: '80px',
1862
+ imageStyle: { width: '40px', height: '40px', borderRadius: '50%' },
1863
+ },
1864
+ { id: 'name', field: 'name', label: 'Name', sortable: true, editable: true },
1865
+ { id: 'email', field: 'email', label: 'Email', type: 'email', editable: true },
1866
+ ],
1867
+ },
1868
+ {
1869
+ id: 'work',
1870
+ label: 'Work Details',
1871
+ children: [
1872
+ { id: 'department', field: 'department', label: 'Department', sortable: true, groupable: true },
1873
+ { id: 'role', field: 'role', label: 'Role' },
1874
+ {
1875
+ id: 'salary',
1876
+ field: 'salary',
1877
+ label: 'Salary',
1878
+ format: function (v) {
1879
+ return '$' + v.toLocaleString();
1880
+ },
1881
+ },
1882
+ ],
1883
+ },
1884
+ {
1885
+ id: 'status_group',
1886
+ label: 'Status & Performance',
1887
+ children: [
1888
+ { id: 'status', field: 'status', label: 'Status', groupable: true },
1889
+ { id: 'rating', field: 'rating', label: 'Rating', type: 'rating', editable: true, maxRating: 5, align: 'center' },
1890
+ { id: 'active', field: 'active', label: 'Active', type: 'switch', editable: true, align: 'center' },
1891
+ ],
1892
+ },
1893
+ ];
1894
+ table.data = sampleData;
1895
+ table.loading = false;
1896
+ table.columnGrouping = true;
1897
+ table.sortable = true;
1898
+ table.filterable = true;
1899
+ table.searchable = true;
1900
+ table.pagination = true;
1901
+ table.pageSize = 5;
1902
+ table.editable = false;
1903
+ table.groupBy = '';
1904
+ table.showActions = false;
1905
+ updatePlaygroundStatus();
1906
+ }, 2000);
1907
+ }
1908
+ }
1909
+
1910
+ function updatePlaygroundStatus() {
1911
+ const table = document.getElementById('combinedTable');
1912
+ const statusText = document.getElementById('statusText');
1913
+ if (!table || !statusText) return;
1914
+
1915
+ const features = [];
1916
+ if (table.loading) features.push('Loading');
1917
+ if (table.selectable) features.push('Selection');
1918
+ if (table.editable) features.push('Editable');
1919
+ if (table.groupBy) features.push('Grouped by ' + table.groupBy);
1920
+ if (table.showActions) features.push('Row Actions');
1921
+ if (table.columnGrouping) features.push('Column Groups');
1922
+ if (table.sortable) features.push('Sortable');
1923
+ if (table.filterable) features.push('Filterable');
1924
+ if (table.filterable) features.push('Filterable');
1925
+ if (table.pagination) features.push('Pagination');
1926
+ if (table.treeData) features.push('Tree Data');
1927
+
1928
+ statusText.textContent = features.length > 0 ? features.join(', ') : 'None';
1929
+ }
1930
+
1931
+ const toggleSkeleton = function () {
1932
+ const table = document.getElementById('combinedTable');
1933
+ if (table) {
1934
+ table.loading = !table.loading;
1935
+ updatePlaygroundStatus();
1936
+ }
1937
+ };
1938
+
1939
+ const toggleGrouping = function () {
1940
+ const table = document.getElementById('combinedTable');
1941
+ if (table) {
1942
+ if (table.groupBy) {
1943
+ table.groupBy = '';
1944
+ } else {
1945
+ table.groupBy = 'department';
1946
+ table.expandGroupsByDefault = true;
1947
+ table.showGroupCount = true;
1948
+ }
1949
+ updatePlaygroundStatus();
1950
+ }
1951
+ };
1952
+
1953
+ const toggleSelection = function () {
1954
+ const table = document.getElementById('combinedTable');
1955
+ if (table) {
1956
+ table.selectable = !table.selectable;
1957
+ updatePlaygroundStatus();
1958
+ }
1959
+ };
1960
+
1961
+ const toggleActions = function () {
1962
+ const table = document.getElementById('combinedTable');
1963
+ if (table) {
1964
+ table.showActions = !table.showActions;
1965
+ updatePlaygroundStatus();
1966
+ }
1967
+ };
1968
+
1969
+ const toggleEditable = function () {
1970
+ const table = document.getElementById('combinedTable');
1971
+ if (table) {
1972
+ table.editable = !table.editable;
1973
+ updatePlaygroundStatus();
1974
+ }
1975
+ };
1976
+
1977
+ const toggleTreeMode = function () {
1978
+ const table = document.getElementById('combinedTable');
1979
+ if (table) {
1980
+ table.treeData = !table.treeData;
1981
+
1982
+ if (table.treeData) {
1983
+ // Switch to tree data structure
1984
+ table.data = [
1985
+ {
1986
+ id: 'd1',
1987
+ name: 'Engineering',
1988
+ role: 'Department',
1989
+ status: 'Active',
1990
+ children: [
1991
+ { id: 1, name: 'John Doe', role: 'Senior Developer', status: 'Active' },
1992
+ { id: 2, name: 'Jane Smith', role: 'Junior Developer', status: 'Active' },
1993
+ ],
1994
+ },
1995
+ {
1996
+ id: 'd2',
1997
+ name: 'Marketing',
1998
+ role: 'Department',
1999
+ status: 'Active',
2000
+ children: [{ id: 4, name: 'Alice Williams', role: 'Sales Rep', status: 'On Leave' }],
2001
+ },
2002
+ ];
2003
+ // Simplified columns for tree view
2004
+ table.columns = [
2005
+ { id: 'name', field: 'name', label: 'Name', sortable: true, width: '250px' },
2006
+ { id: 'role', field: 'role', label: 'Role', sortable: true },
2007
+ { id: 'status', field: 'status', label: 'Status', sortable: true },
2008
+ ];
2009
+ table.pagination = false;
2010
+ } else {
2011
+ // Revert to sample flat data
2012
+ table.data = sampleData;
2013
+ table.columns = columns; // Reset to full columns
2014
+ table.pagination = true;
2015
+ }
2016
+ updatePlaygroundStatus();
2017
+ }
2018
+ };
2019
+
2020
+ // NEW ADVANCED FEATURES DEMOS
2021
+
2022
+ function showColumnPinning() {
2023
+ tableContainer.innerHTML = `
2024
+ <div class="demo-block">
2025
+ <h3>📌 Column Pinning</h3>
2026
+ <p style="color: #6b7280; margin-bottom: 16px;">Pin important columns to keep them visible while scrolling horizontally. Pinned columns stay fixed on the left or right side of the table.</p>
2027
+
2028
+ <div style="margin-bottom: 16px; padding: 16px; background-color: #fef3c7; border-radius: 6px; border-left: 4px solid #f59e0b;">
2029
+ <p style="margin: 0 0 8px 0; color: #78350f; font-size: 14px; font-weight: 600;">
2030
+ 📖 How to use:
2031
+ </p>
2032
+ <ol style="margin: 0; padding-left: 20px; color: #78350f; font-size: 13px; line-height: 1.8;">
2033
+ <li>Click any <strong>blue/purple button</strong> below to pin a column to the left or right</li>
2034
+ <li>Scroll the table horizontally to see pinned columns stay in place</li>
2035
+ <li>Click <strong>gray buttons</strong> to unpin columns</li>
2036
+ </ol>
2037
+ </div>
2038
+
2039
+ <div style="margin-bottom: 16px; display: flex; gap: 8px; flex-wrap: wrap;">
2040
+ <ui-button id="btnPinNameL" variant="outline" color="success" label="📌 Pin Name (Left)" size="md"ui-button>
2041
+ <ui-button id="btnPinEmailL" variant="outline" color="primary" label="📌 Pin Email (Left)" size="md"ui-button>
2042
+ <ui-button id="btnPinSalaryR" variant="outline" color="secondary" label="📌 Pin Salary (Right)" size="md"ui-button>
2043
+ <ui-button id="btnPinDeptR" variant="outline" color="warning" label="📌 Pin Dept (Right)" size="md"ui-button>
2044
+ <ui-button id="btnUnpinName" variant="outline" color="secondary" label="❌ Unpin Name" size="md"ui-button>
2045
+ <ui-button id="btnUnpinEmail" variant="outline" color="secondary" label="❌ Unpin Email" size="md"ui-button>
2046
+ <ui-button id="btnUnpinSalary" variant="outline" color="secondary" label="❌ Unpin Salary" size="md"ui-button>
2047
+ <ui-button id="btnUnpinDept" variant="outline" color="secondary" label="❌ Unpin Dept" size="md"ui-button>
2048
+ </div>
2049
+ <ui-advanced-data-table id="pinningTable" column-pinning="true"></ui-advanced-data-table>
2050
+ <div id="pinningInfo" style="margin-top: 16px; padding: 12px; background-color: #eff6ff; border-radius: 6px;">
2051
+ <p style="margin: 0; color: #1e40af; font-size: 14px;">
2052
+ 💡 <strong>Currently Pinned:</strong> <span id="pinnedColumnsText" style="font-weight: 600;">None</span>
2053
+ </p>
2054
+ <p style="margin: 8px 0 0 0; color: #1e40af; font-size: 12px;">
2055
+ Try scrolling the table horizontally after pinning columns to see them stay fixed!
2056
+ </p>
2057
+ </div>
2058
+ </div>
2059
+ `;
2060
+ setTimeout(() => {
2061
+ const table = document.getElementById('pinningTable');
2062
+ if (table) {
2063
+ // Add more columns
2064
+ table.columns = [
2065
+ { id: 'id', field: 'id', label: 'ID', sortable: true, width: '80px' },
2066
+ { id: 'name', field: 'name', label: 'Name', sortable: true },
2067
+ { id: 'email', field: 'email', label: 'Email', sortable: true },
2068
+ { id: 'department', field: 'department', label: 'Department', sortable: true, filterable: true },
2069
+ { id: 'role', field: 'role', label: 'Role', sortable: true },
2070
+ {
2071
+ id: 'salary',
2072
+ field: 'salary',
2073
+ label: 'Salary',
2074
+ sortable: true,
2075
+ format: function (value) {
2076
+ return '$' + value.toLocaleString();
2077
+ },
2078
+ },
2079
+ { id: 'status', field: 'status', label: 'Status', sortable: true, filterable: true },
2080
+ { id: 'rating', field: 'rating', label: 'Rating', sortable: true },
2081
+ { id: 'active', field: 'active', label: 'Active', sortable: true },
2082
+ { id: 'verified', field: 'verified', label: 'Verified', sortable: true },
2083
+ { id: 'startDate', field: 'startDate', label: 'Start Date', sortable: true },
2084
+ { id: 'avatar', field: 'avatar', label: 'Avatar', sortable: false },
2085
+ ];
2086
+ // Add more rows
2087
+ const moreRows = [];
2088
+ for (let i = 9; i <= 30; i++) {
2089
+ moreRows.push({
2090
+ id: i,
2091
+ name: 'User ' + i,
2092
+ email: 'user' + i + '@example.com',
2093
+ department: ['Engineering', 'Marketing', 'Sales', 'HR'][i % 4],
2094
+ role: ['Developer', 'Manager', 'Lead', 'Executive'][i % 4],
2095
+ salary: 50000 + i * 1000,
2096
+ status: ['Active', 'Inactive', 'On Leave'][i % 3],
2097
+ rating: (i % 5) + 1,
2098
+ active: i % 2 === 0,
2099
+ verified: i % 3 === 0,
2100
+ startDate: '2022-01-' + ((i % 28) + 1).toString().padStart(2, '0'),
2101
+ avatar: 'https://i.pravatar.cc/150?img=' + (i % 70),
2102
+ });
2103
+ }
2104
+ table.data = sampleData.concat(moreRows);
2105
+ table.sortable = true;
2106
+ table.pagination = true;
2107
+ table.pageSize = 10;
2108
+ table.filterable = true;
2109
+ table.searchable = true;
2110
+
2111
+ const updatePinnedStatus = () => {
2112
+ const pinnedText = document.getElementById('pinnedColumnsText');
2113
+ if (pinnedText) {
2114
+ const pinned = [];
2115
+ if (table.pinnedColumns?.left?.length) pinned.push(`Left: ${table.pinnedColumns.left.join(', ')}`);
2116
+ if (table.pinnedColumns?.right?.length) pinned.push(`Right: ${table.pinnedColumns.right.join(', ')}`);
2117
+ pinnedText.textContent = pinned.length > 0 ? pinned.join(' | ') : 'None';
2118
+ }
2119
+ };
2120
+
2121
+ table.addEventListener('columnPin', updatePinnedStatus);
2122
+
2123
+ const pinBtns = {
2124
+ btnPinNameL: ['name', 'left'],
2125
+ btnPinEmailL: ['email', 'left'],
2126
+ btnPinSalaryR: ['salary', 'right'],
2127
+ btnPinDeptR: ['department', 'right'],
2128
+ btnUnpinName: ['name', 'none'],
2129
+ btnUnpinEmail: ['email', 'none'],
2130
+ btnUnpinSalary: ['salary', 'none'],
2131
+ btnUnpinDept: ['department', 'none'],
2132
+ };
2133
+
2134
+ Object.entries(pinBtns).forEach(([id, [col, pos]]) => {
2135
+ const btn = document.getElementById(id);
2136
+ if (btn) btn.addEventListener('click', () => pinColumn(col, pos));
2137
+ });
2138
+
2139
+ updatePinnedStatus();
2140
+ }
2141
+ const pinColumn = function (columnId, position) {
2142
+ const table = document.getElementById('pinningTable');
2143
+ if (table && typeof table.handleColumnPin === 'function') {
2144
+ table.handleColumnPin(columnId, position);
2145
+ }
2146
+ };
2147
+ }, 100);
2148
+ }
2149
+
2150
+ function showRowPinning() {
2151
+ tableContainer.innerHTML = `
2152
+ <div class="demo-block">
2153
+ <h3>📍 Row Pinning</h3>
2154
+ <p style="color: #6b7280; margin-bottom: 12px;">Pin important rows to top or bottom</p>
2155
+
2156
+ <div style="margin-bottom: 16px; display: flex; gap: 8px; flex-wrap: wrap;">
2157
+ <ui-button id="btnPinRow1Top" variant="outline" color="success" label="📍 Pin Row 1 Top" size="md"ui-button>
2158
+ <ui-button id="btnPinRow8Bot" variant="outline" color="warning" label="📍 Pin Row 8 Bottom" size="md"ui-button>
2159
+ <ui-button id="btnUnpinRow1" variant="outline" color="secondary" label="❌ Unpin Row 1" size="md"ui-button>
2160
+ <ui-button id="btnUnpinRow8" variant="outline" color="secondary" label="❌ Unpin Row 8" size="md"ui-button>
2161
+ </div>
2162
+
2163
+ <ui-advanced-data-table id="rowPinningTable" row-pinning="true"></ui-advanced-data-table>
2164
+
2165
+ <div id="rowPinningInfo" style="margin-top: 16px; padding: 12px; background-color: #f0fdf4; border-radius: 6px;">
2166
+ <p style="margin: 0; color: #065f46; font-size: 14px;">
2167
+ 💡 Pinned rows: <strong id="pinnedRowsText">None</strong>
2168
+ </p>
2169
+ </div>
2170
+ </div>
2171
+ `;
2172
+
2173
+ setTimeout(() => {
2174
+ const table = document.getElementById('rowPinningTable');
2175
+ if (table) {
2176
+ table.data = sampleData;
2177
+ table.columns = columns.slice(0, 6);
2178
+
2179
+ table.addEventListener('rowPin', e => {
2180
+ const { rowId, position } = e.detail;
2181
+ const pinnedText = document.getElementById('pinnedRowsText');
2182
+ if (pinnedText) {
2183
+ const pinned = [];
2184
+ if (table.pinnedRows?.top?.length) pinned.push(`Top: ${table.pinnedRows.top.join(', ')}`);
2185
+ if (table.pinnedRows?.bottom?.length) pinned.push(`Bottom: ${table.pinnedRows.bottom.join(', ')}`);
2186
+ pinnedText.textContent = pinned.length > 0 ? pinned.join(' | ') : 'None';
2187
+ }
2188
+ console.log('Row pinned:', rowId, position);
2189
+ });
2190
+ }
2191
+
2192
+ const pinMap = {
2193
+ btnPinRow1Top: [1, 'top'],
2194
+ btnPinRow8Bot: [8, 'bottom'],
2195
+ btnUnpinRow1: [1, 'none'],
2196
+ btnUnpinRow8: [8, 'none'],
2197
+ };
2198
+
2199
+ Object.entries(pinMap).forEach(([id, [rowId, pos]]) => {
2200
+ const btn = document.getElementById(id);
2201
+ if (btn) btn.addEventListener('click', () => pinRow(rowId, pos));
2202
+ });
2203
+
2204
+ const pinRow = function (rowId, position) {
2205
+ const table = document.getElementById('rowPinningTable');
2206
+ if (table && typeof table.handleRowPin === 'function') {
2207
+ table.handleRowPin(rowId, position);
2208
+ }
2209
+ };
2210
+ }, 100);
2211
+ }
2212
+
2213
+ function showRowReordering() {
2214
+ tableContainer.innerHTML = `
2215
+ <div class="demo-block">
2216
+ <h3>↕️ Row Reordering</h3>
2217
+ <p style="color: #6b7280; margin-bottom: 12px;">Drag and drop rows to reorder them</p>
2218
+
2219
+ <ui-advanced-data-table id="reorderTable" row-reorder="true"></ui-advanced-data-table>
2220
+
2221
+ <div id="reorderInfo" style="margin-top: 16px; padding: 12px; background-color: #fef3c7; border-radius: 6px;">
2222
+ <p style="margin: 0; color: #78350f; font-size: 14px;">
2223
+ 💡 <strong>Drag the drag handle (⋮⋮)</strong> on each row to reorder. Last reorder: <strong id="lastReorderText">None</strong>
2224
+ </p>
2225
+ </div>
2226
+ </div>
2227
+ `;
2228
+
2229
+ setTimeout(() => {
2230
+ const table = document.getElementById('reorderTable');
2231
+ if (table) {
2232
+ table.data = [...sampleData];
2233
+ table.columns = columns.slice(0, 5);
2234
+
2235
+ table.addEventListener('rowReorderEvent', e => {
2236
+ const { fromIndex, toIndex } = e.detail;
2237
+ const lastReorderText = document.getElementById('lastReorderText');
2238
+ if (lastReorderText) {
2239
+ lastReorderText.textContent = `Row ${fromIndex + 1} → Row ${toIndex + 1}`;
2240
+ }
2241
+ console.log('Row reordered:', e.detail);
2242
+ });
2243
+ }
2244
+ }, 100);
2245
+ }
2246
+
2247
+ function showMultiFilter() {
2248
+ tableContainer.innerHTML = `
2249
+ <div class="demo-block">
2250
+ <h3>🔍 Multi-Column Filtering</h3>
2251
+ <p style="color: #6b7280; margin-bottom: 12px;">Apply multiple filters to different columns</p>
2252
+
2253
+ <div style="margin-bottom: 16px; display: flex; gap: 8px; flex-wrap: wrap;">
2254
+ <ui-button id="btnFiltEng" variant="outline" color="success" label="+ Engineering Filter" size="md"ui-button>
2255
+ <ui-button id="btnFiltSal" variant="outline" color="secondary" label="+ Salary > 80K" size="md"ui-button>
2256
+ <ui-button id="btnFiltAct" variant="outline" color="success" label="+ Active Status" size="md"ui-button>
2257
+ <ui-button id="btnFiltClr" variant="outline" color="danger" label="🗑️ Clear All" size="md"ui-button>
2258
+ </div>
2259
+
2260
+ <ui-advanced-data-table id="filterTable" multi-filter="true"></ui-advanced-data-table>
2261
+
2262
+ <div id="filterInfo" style="margin-top: 16px; padding: 12px; background-color: #dbeafe; border-radius: 6px;">
2263
+ <p style="margin: 0; color: #1e3a8a; font-size: 14px;">
2264
+ 💡 Active filters: <strong id="activeFiltersText">None</strong>
2265
+ </p>
2266
+ </div>
2267
+ </div>
2268
+ `;
2269
+
2270
+ setTimeout(() => {
2271
+ const table = document.getElementById('filterTable');
2272
+ if (table) {
2273
+ table.data = sampleData;
2274
+ table.columns = columns;
2275
+ table.sortable = true;
2276
+
2277
+ function updateFilterInfo() {
2278
+ const activeFiltersText = document.getElementById('activeFiltersText');
2279
+ if (activeFiltersText && table.activeFilters) {
2280
+ const filters = [];
2281
+ table.activeFilters.forEach((value, key) => {
2282
+ if (value.length > 0) {
2283
+ filters.push(`${key}: ${value.length} filter(s)`);
2284
+ }
2285
+ });
2286
+ activeFiltersText.textContent = filters.length > 0 ? filters.join(', ') : 'None';
2287
+ }
2288
+ }
2289
+
2290
+ const btnMap = {
2291
+ btnFiltEng: () => table.addFilter('department', 'equals', 'Engineering'),
2292
+ btnFiltSal: () => table.addFilter('salary', 'greaterThan', 80000),
2293
+ btnFiltAct: () => table.addFilter('status', 'equals', 'Active'),
2294
+ btnFiltClr: () => table.clearAllFilters(),
2295
+ };
2296
+
2297
+ Object.entries(btnMap).forEach(([id, fn]) => {
2298
+ const btn = document.getElementById(id);
2299
+ if (btn)
2300
+ btn.addEventListener('click', () => {
2301
+ fn();
2302
+ updateFilterInfo();
2303
+ });
2304
+ });
2305
+ }
2306
+ }, 100);
2307
+ }
2308
+
2309
+ function showEditEvents() {
2310
+ tableContainer.innerHTML = `
2311
+ <div class="demo-block">
2312
+ <h3>📡 Edit Lifecycle Events</h3>
2313
+ <p style="color: #6b7280; margin-bottom: 12px;">Track cell and row edit events in real-time</p>
2314
+
2315
+ <ui-advanced-data-table id="eventsTable" editable="true"></ui-advanced-data-table>
2316
+
2317
+ <div style="margin-top: 16px;">
2318
+ <h4 style="margin-bottom: 8px;">Event Log:</h4>
2319
+ <div id="eventLog" style="padding: 12px; background-color: #f9fafb; border: 1px solid #e5e7eb; border-radius: 6px; max-height: 300px; overflow-y: auto; font-family: monospace; font-size: 12px;">
2320
+ <div style="color: #6b7280;">Waiting for events...</div>
2321
+ </div>
2322
+ </div>
2323
+ </div>
2324
+ `;
2325
+
2326
+ setTimeout(() => {
2327
+ const table = document.getElementById('eventsTable');
2328
+ const eventLog = document.getElementById('eventLog');
2329
+
2330
+ if (table) {
2331
+ table.data = sampleData.slice(0, 5);
2332
+ const editableColumns = columns.slice(0, 6).map(col => ({
2333
+ ...col,
2334
+ editable: true,
2335
+ inputType: col.field === 'salary' ? 'number' : col.field === 'email' ? 'email' : 'text',
2336
+ }));
2337
+ table.columns = editableColumns;
2338
+
2339
+ function logEvent(eventName, detail, color) {
2340
+ if (eventLog) {
2341
+ const timestamp = new Date().toLocaleTimeString();
2342
+ const entry = document.createElement('div');
2343
+ entry.style.marginBottom = '4px';
2344
+ entry.style.color = color;
2345
+ entry.innerHTML = `<strong>[${timestamp}]</strong> <span style="color: ${color};">${eventName}</span>: ${JSON.stringify(detail, null, 2)}`;
2346
+ eventLog.insertBefore(entry, eventLog.firstChild);
2347
+ }
2348
+ }
2349
+
2350
+ table.addEventListener('cellEditStart', e => {
2351
+ logEvent('cellEditStart', e.detail, '#10b981');
2352
+ console.log('Cell edit started:', e.detail);
2353
+ });
2354
+
2355
+ table.addEventListener('cellEditStop', e => {
2356
+ logEvent('cellEditStop', e.detail, '#10b981');
2357
+ console.log('Cell edit stopped:', e.detail);
2358
+ });
2359
+
2360
+ table.addEventListener('rowEditStart', e => {
2361
+ logEvent('rowEditStart', { rowId: e.detail.row.id, name: e.detail.row.name }, '#8b5cf6');
2362
+ console.log('Row edit started:', e.detail);
2363
+ });
2364
+
2365
+ table.addEventListener('rowEditStop', e => {
2366
+ logEvent('rowEditStop', { rowId: e.detail.row.id, name: e.detail.row.name }, '#f59e0b');
2367
+ console.log('Row edit stopped:', e.detail);
2368
+ });
2369
+ }
2370
+ }, 100);
2371
+ }
2372
+
2373
+ function showAdvancedPanels() {
2374
+ tableContainer.innerHTML = `
2375
+ <div class="demo-block">
2376
+ <h3>🎛️ Filter & Column Panels</h3>
2377
+ <p style="color: #6b7280; margin-bottom: 12px;">Advanced UI panels for filtering and column management</p>
2378
+
2379
+ <div style="margin-bottom: 16px; display: flex; gap: 8px; flex-wrap: wrap;">
2380
+ <ui-button id="btnTogFilt" variant="outline" color="success" label="🔍 Toggle Filter Panel" size="md"ui-button>
2381
+ <ui-button id="btnTogCol" variant="outline" color="secondary" label="📋 Toggle Column Panel" size="md"ui-button>
2382
+ </div>
2383
+
2384
+ <ui-advanced-data-table id="panelsTable" show-filter-panel="false" show-column-panel="false"></ui-advanced-data-table>
2385
+
2386
+ <div style="margin-top: 16px; padding: 12px; background-color: #fef3c7; border-radius: 6px;">
2387
+ <p style="margin: 0; color: #78350f; font-size: 14px;">
2388
+ 💡 Status: <strong id="panelStatus">Both panels hidden</strong>
2389
+ </p>
2390
+ <p style="margin: 8px 0 0 0; color: #78350f; font-size: 12px;">
2391
+ Note: Panel UI components are available via props. Full visual implementation coming soon!
2392
+ </p>
2393
+ </div>
2394
+ </div>
2395
+ `;
2396
+
2397
+ setTimeout(() => {
2398
+ const table = document.getElementById('panelsTable');
2399
+ if (table) {
2400
+ table.data = sampleData;
2401
+ table.columns = columns;
2402
+ table.sortable = true;
2403
+ table.filterable = true;
2404
+
2405
+ function updatePanelStatus() {
2406
+ const status = document.getElementById('panelStatus');
2407
+ if (status) {
2408
+ const filterPanel = table.showFilterPanel ? 'Filter Panel ON' : 'Filter Panel OFF';
2409
+ const columnPanel = table.showColumnPanel ? 'Column Panel ON' : 'Column Panel OFF';
2410
+ status.textContent = `${filterPanel}, ${columnPanel}`;
2411
+ }
2412
+ }
2413
+
2414
+ const bFilt = document.getElementById('btnTogFilt');
2415
+ const bCol = document.getElementById('btnTogCol');
2416
+ if (bFilt)
2417
+ bFilt.addEventListener('click', () => {
2418
+ table.showFilterPanel = !table.showFilterPanel;
2419
+ updatePanelStatus();
2420
+ });
2421
+ if (bCol)
2422
+ bCol.addEventListener('click', () => {
2423
+ table.showColumnPanel = !table.showColumnPanel;
2424
+ updatePanelStatus();
2425
+ });
2426
+
2427
+ updatePanelStatus();
2428
+ }
2429
+ }, 100);
2430
+ }
2431
+
2432
+ function showSearchMultiFilterPanel() {
2433
+ tableContainer.innerHTML = `
2434
+ <div class="demo-block">
2435
+ <h3>🔎 Search & Multi-Filter Panel</h3>
2436
+ <div style="margin-bottom: 16px; display: flex; gap: 12px; flex-wrap: wrap; align-items: center;">
2437
+ <ui-input id="searchInput" placeholder="Search..." style="width: 220px;"></ui-input>
2438
+ <ui-button id="btnTogFiltDemo" variant="outline" color="primary" label="🔍 Toggle Filter Panel" size="md"ui-button>
2439
+ </div>
2440
+ <ui-advanced-data-table id="searchFilterTable" multi-filter="true" show-filter-panel="false" searchable="true"></ui-advanced-data-table>
2441
+ <div id="searchFilterInfo" style="margin-top: 16px; padding: 12px; background-color: #dbeafe; border-radius: 6px;">
2442
+ <p style="margin: 0; color: #1e3a8a; font-size: 14px;">Active filters: <strong id="activeSearchFiltersText">None</strong></p>
2443
+ </div>
2444
+ </div>
2445
+ `;
2446
+ setTimeout(() => {
2447
+ const table = document.getElementById('searchFilterTable');
2448
+ const searchInput = document.getElementById('searchInput');
2449
+ const btnTog = document.getElementById('btnTogFiltDemo');
2450
+ if (table) {
2451
+ table.data = sampleData;
2452
+ table.columns = columns;
2453
+ table.sortable = true;
2454
+ table.filterable = true;
2455
+ table.searchable = true;
2456
+ function updateSearchFilterInfo() {
2457
+ const activeFiltersText = document.getElementById('activeSearchFiltersText');
2458
+ if (activeFiltersText && table.activeFilters) {
2459
+ const filters = [];
2460
+ table.activeFilters.forEach((value, key) => {
2461
+ if (value.length > 0) {
2462
+ filters.push(`${key}: ${value.length} filter(s)`);
2463
+ }
2464
+ });
2465
+ activeFiltersText.textContent = filters.length > 0 ? filters.join(', ') : 'None';
2466
+ }
2467
+ }
2468
+ table.addEventListener('filterChange', updateSearchFilterInfo);
2469
+ if (searchInput) {
2470
+ searchInput.addEventListener('inputChange', function (e) {
2471
+ table.search = e.detail.value;
2472
+ });
2473
+ }
2474
+ if (btnTog) btnTog.addEventListener('click', () => (table.showFilterPanel = !table.showFilterPanel));
2475
+ }
2476
+ }, 100);
2477
+ }
2478
+
2479
+ function showAdvancedFilterPanel() {
2480
+ tableContainer.innerHTML = `
2481
+ <div class="demo-block">
2482
+ <h3>🔍 Advanced Filter Panel</h3>
2483
+ <p style="color: #6b7280; margin-bottom: 12px;">Build complex filters with multiple operators and conditions</p>
2484
+
2485
+ <div style="margin-bottom: 16px; padding: 12px; background-color: #eff6ff; border-radius: 6px;">
2486
+ <p style="margin: 0; color: #1e40af; font-size: 14px;">
2487
+ 💡 <strong>Try this:</strong> Click the "🔍 Filters" button in the toolbar to open the advanced filter panel.
2488
+ Select a column, choose an operator, enter a value, and click "+ Add" to create filters.
2489
+ </p>
2490
+ </div>
2491
+
2492
+ <ui-advanced-data-table id="filterPanelTable" show-filter-panel="false"></ui-advanced-data-table>
2493
+
2494
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0fdf4; border-radius: 6px;">
2495
+ <h4 style="margin: 0 0 8px 0; color: #166534; font-size: 14px;">Available Operators:</h4>
2496
+ <ul style="margin: 0; padding-left: 20px; color: #166534; font-size: 13px; line-height: 1.8;">
2497
+ <li><strong>Text fields:</strong> Equals, Not Equals, Contains, Not Contains, Starts With, Ends With</li>
2498
+ <li><strong>Number/Date fields:</strong> Equals, Not Equals, Greater Than, Less Than, Between</li>
2499
+ <li><strong>Filter chips:</strong> Click the × button to remove individual filters, or use "Clear All"</li>
2500
+ </ul>
2501
+ </div>
2502
+ </div>
2503
+ `;
2504
+
2505
+ setTimeout(() => {
2506
+ const table = document.getElementById('filterPanelTable');
2507
+ if (table) {
2508
+ table.data = sampleData;
2509
+ table.columns = columns;
2510
+ table.sortable = true;
2511
+ table.filterable = true;
2512
+ table.searchable = true;
2513
+ table.pagination = true;
2514
+ table.pageSize = 10;
2515
+
2516
+ // Automatically open the filter panel for demo
2517
+ setTimeout(() => {
2518
+ table.showFilterPanel = true;
2519
+ }, 500);
2520
+ }
2521
+ }, 100);
2522
+ }
2523
+
2524
+ function showTreeData() {
2525
+ tableContainer.innerHTML = `
2526
+ <div class="demo-block">
2527
+ <h3>🌲 Tree Data (Hierarchical)</h3>
2528
+ <p style="color: #6b7280; margin-bottom: 12px;">Display hierarchical data with expandable rows.</p>
2529
+
2530
+ <ui-advanced-data-table id="treeTable" tree-data="true"></ui-advanced-data-table>
2531
+
2532
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0fdf4; border-radius: 6px;">
2533
+ <p style="margin: 0; color: #166534; font-size: 14px;">
2534
+ 💡 Rows with children display an expand/collapse icon. Indentation shows depth level.
2535
+ </p>
2536
+ </div>
2537
+ </div>
2538
+ `;
2539
+
2540
+ setTimeout(() => {
2541
+ const table = document.getElementById('treeTable');
2542
+ if (table) {
2543
+ const treeData = [
2544
+ {
2545
+ id: 'd1',
2546
+ name: 'Engineering',
2547
+ role: 'Department',
2548
+ status: 'Active',
2549
+ children: [
2550
+ {
2551
+ id: 't1',
2552
+ name: 'Frontend Team',
2553
+ role: 'Team',
2554
+ status: 'Active',
2555
+ children: [
2556
+ { id: 1, name: 'John Doe', role: 'Senior Developer', status: 'Active', email: 'john@example.com' },
2557
+ { id: 2, name: 'Jane Smith', role: 'Junior Developer', status: 'Active', email: 'jane@example.com' },
2558
+ { id: 38, name: 'Jake Gyllenhaal', role: 'Frontend Developer', status: 'Active', email: 'jake@example.com' },
2559
+ ],
2560
+ },
2561
+ {
2562
+ id: 't2',
2563
+ name: 'Backend Team',
2564
+ role: 'Team',
2565
+ status: 'Active',
2566
+ children: [
2567
+ { id: 3, name: 'Bob Johnson', role: 'Team Lead', status: 'Active', email: 'bob@example.com' },
2568
+ { id: 28, name: 'Zachary Levi', role: 'Backend Developer', status: 'Active', email: 'zachary@example.com' },
2569
+ ],
2570
+ },
2571
+ {
2572
+ id: 't3',
2573
+ name: 'QA Team',
2574
+ role: 'Team',
2575
+ status: 'Active',
2576
+ children: [{ id: 14, name: 'Laura Croft', role: 'QA Engineer', status: 'Active', email: 'laura@example.com' }],
2577
+ },
2578
+ ],
2579
+ },
2580
+ {
2581
+ id: 'd2',
2582
+ name: 'Marketing',
2583
+ role: 'Department',
2584
+ status: 'Active',
2585
+ children: [
2586
+ { id: 4, name: 'Alice Williams', role: 'Sales Rep', status: 'On Leave', email: 'alice@example.com' },
2587
+ { id: 7, name: 'Ethan Hunt', role: 'Content Strategist', status: 'Active', email: 'ethan@example.com' },
2588
+ ],
2589
+ },
2590
+ {
2591
+ id: 'd3',
2592
+ name: 'Design',
2593
+ role: 'Department',
2594
+ status: 'Active',
2595
+ children: [
2596
+ { id: 10, name: 'Hannah Montana', role: 'UX Designer', status: 'Active', email: 'hannah@example.com' },
2597
+ { id: 37, name: 'Isla Fisher', role: 'Product Designer', status: 'Active', email: 'isla@example.com' },
2598
+ ],
2599
+ },
2600
+ ];
2601
+
2602
+ table.columns = [
2603
+ { id: 'name', field: 'name', label: 'Name', sortable: true, width: '250px' },
2604
+ { id: 'role', field: 'role', label: 'Role', sortable: true },
2605
+ { id: 'status', field: 'status', label: 'Status', sortable: true },
2606
+ { id: 'email', field: 'email', label: 'Email', sortable: true },
2607
+ ];
2608
+ table.data = treeData;
2609
+ table.pagination = false;
2610
+ }
2611
+ }, 100);
2612
+ }
2613
+
2614
+ // PHASE 2 DEMO FUNCTIONS
2615
+
2616
+ function showSparklines() {
2617
+ tableContainer.innerHTML = `
2618
+ <div class="demo-block">
2619
+ <h3>Sparklines & Data Visualization</h3>
2620
+ <p style="color: #6b7280; margin-bottom: 12px;">Micro-charts embedded in cells to show trends</p>
2621
+ <ui-advanced-data-table id="sparklineTable"></ui-advanced-data-table>
2622
+ <div style="margin-top: 16px; padding: 12px; background-color: #f3e8ff; border-radius: 6px;">
2623
+ <p style="margin: 0; color: #6b21a8; font-size: 14px;">
2624
+ 📈 The "Trend" column renders sparklines from an array of numbers.
2625
+ </p>
2626
+ </div>
2627
+ </div>
2628
+ `;
2629
+ setTimeout(() => {
2630
+ const table = document.getElementById('sparklineTable');
2631
+ if (table) {
2632
+ const sparkData = sampleData.map(d => ({
2633
+ ...d,
2634
+ trend: Array.from({ length: 12 }, () => Math.floor(Math.random() * 50) + 20),
2635
+ }));
2636
+ table.columns = [
2637
+ ...columns.slice(0, 4),
2638
+ { id: 'trend', field: 'trend', label: 'Trend (Last 12mo)', type: 'number', width: '150px' },
2639
+ { id: 'salary', field: 'salary', label: 'Salary', sortable: true, format: v => '$' + v.toLocaleString() },
2640
+ ];
2641
+ table.data = sparkData;
2642
+ table.enableSparklines = true;
2643
+ table.sortable = true;
2644
+ }
2645
+ }, 100);
2646
+ }
2647
+
2648
+ function showLazyLoading() {
2649
+ tableContainer.innerHTML = `
2650
+ <div class="demo-block">
2651
+ <h3>Lazy Loading & Virtual Scroll</h3>
2652
+ <p style="color: #6b7280; margin-bottom: 12px;">Infinite scroll simulation with data fetching</p>
2653
+ <ui-advanced-data-table id="lazyTable" style="height: 500px;"></ui-advanced-data-table>
2654
+ <div style="margin-top: 16px; padding: 12px; background-color: #ffe4e6; border-radius: 6px;">
2655
+ <p style="margin: 0; color: #9f1239; font-size: 14px;">
2656
+ ⏳ Scroll down to load more data automatically.
2657
+ </p>
2658
+ </div>
2659
+ </div>
2660
+ `;
2661
+ setTimeout(() => {
2662
+ const table = document.getElementById('lazyTable');
2663
+ if (table) {
2664
+ table.columns = columns;
2665
+ // Initial small dataset
2666
+ table.data = sampleData.slice(0, 10);
2667
+ table.lazyLoad = true;
2668
+ table.virtualScroll = true;
2669
+ table.pagination = false;
2670
+ }
2671
+ }, 100);
2672
+ }
2673
+
2674
+ function showPDFExport() {
2675
+ tableContainer.innerHTML = `
2676
+ <div class="demo-block">
2677
+ <h3>PDF Export & Print Optimization</h3>
2678
+ <p style="color: #6b7280; margin-bottom: 12px;">Export data to formatted PDF documents</p>
2679
+ <ui-advanced-data-table id="pdfTable"></ui-advanced-data-table>
2680
+ <div style="margin-top: 16px; padding: 12px; background-color: #fef2f2; border-radius: 6px;">
2681
+ <p style="margin: 0; color: #991b1b; font-size: 14px;">
2682
+ 📄 Click "Export" -> "PDF" in the toolbar/footer (if implemented) or use the button below.
2683
+ </p>
2684
+ <ui-button id="btnExportPDF" variant="outline" color="danger" label="Trigger Export PDF" size="md"yle="margin-top: 8px;"></ui-button>
2685
+ </div>
2686
+ </div>
2687
+ `;
2688
+ setTimeout(() => {
2689
+ const table = document.getElementById('pdfTable');
2690
+ if (table) {
2691
+ table.data = sampleData.slice(0, 15);
2692
+ table.columns = columns.slice(0, 6);
2693
+ table.pdfExport = true;
2694
+ table.exportable = true;
2695
+ table.printOptimized = true;
2696
+
2697
+ const btn = document.getElementById('btnExportPDF');
2698
+ if (btn) btn.addEventListener('click', () => table.exportToPDF());
2699
+ }
2700
+ }, 100);
2701
+ }
2702
+
2703
+ function showContextMobile() {
2704
+ tableContainer.innerHTML = `
2705
+ <div class="demo-block">
2706
+ <h3>Context Menu & Mobile View</h3>
2707
+ <p style="color: #6b7280; margin-bottom: 12px;">Right-click for options | Resize window for Card View</p>
2708
+ <ui-advanced-data-table id="contextTable"></ui-advanced-data-table>
2709
+ <div style="margin-top: 16px; padding: 12px; background-color: #ccfbf1; border-radius: 6px;">
2710
+ <p style="margin: 0; color: #0f766e; font-size: 14px;">
2711
+ 🖱️ <strong>Context Menu:</strong> Right-click on any row.<br>
2712
+ 📱 <strong>Mobile:</strong> Resize browser width < 768px to see Cards.
2713
+ </p>
2714
+ </div>
2715
+ </div>
2716
+ `;
2717
+ setTimeout(() => {
2718
+ const table = document.getElementById('contextTable');
2719
+ if (table) {
2720
+ table.data = sampleData.slice(0, 8);
2721
+ table.columns = columns.slice(0, 6);
2722
+ table.contextMenu = true;
2723
+ table.mobileCardView = true;
2724
+ table.selectable = true;
2725
+ }
2726
+ }, 100);
2727
+ }
2728
+
2729
+ function showUndoRedo() {
2730
+ tableContainer.innerHTML = `
2731
+ <div class="demo-block">
2732
+ <h3>Undo / Redo</h3>
2733
+ <p style="color: #6b7280; margin-bottom: 12px;">History tracking for Sort, Filter, Search, Selection</p>
2734
+ <ui-advanced-data-table id="undoTable"></ui-advanced-data-table>
2735
+ <div style="margin-top: 16px; padding: 12px; background-color: #fef3c7; border-radius: 6px;">
2736
+ <p style="margin: 0; color: #92400e; font-size: 14px;">
2737
+ ⌨️ <strong>Shortcuts:</strong> Ctrl+Z (Undo), Ctrl+Y (Redo).<br>
2738
+ Try sorting, filtering, or selecting rows, then undo.
2739
+ </p>
2740
+ </div>
2741
+ </div>
2742
+ `;
2743
+ setTimeout(() => {
2744
+ const table = document.getElementById('undoTable');
2745
+ if (table) {
2746
+ table.data = sampleData.slice(0, 10);
2747
+ table.columns = columns;
2748
+ table.undoRedo = true;
2749
+ table.sortable = true;
2750
+ table.filterable = true;
2751
+ table.searchable = true;
2752
+ table.selectable = true;
2753
+ }
2754
+ }, 100);
2755
+ }
2756
+
2757
+ function showRangeSelection() {
2758
+ tableContainer.innerHTML = `
2759
+ <div class="demo-block">
2760
+ <h3>Range Selection & Clipboard</h3>
2761
+ <p style="color: #6b7280; margin-bottom: 12px;">Excel-like range selection and copy-paste support</p>
2762
+ <ui-advanced-data-table id="rangeTable"></ui-advanced-data-table>
2763
+ <div style="margin-top: 16px; padding: 12px; background-color: #e0e7ff; border-radius: 6px;">
2764
+ <p style="margin: 0; color: #3730a3; font-size: 14px;">
2765
+ 🟦 <strong>How to use:</strong><br>
2766
+ 1. Click a cell to select it.<br>
2767
+ 2. Hold <strong>Shift</strong> and click another cell to select a range.<br>
2768
+ 3. Press <strong>Ctrl+C</strong> to copy selected data to clipboard.<br>
2769
+ 4. Paste (Ctrl+V) into Excel or Notepad to verify.
2770
+ </p>
2771
+ </div>
2772
+ </div>
2773
+ `;
2774
+ setTimeout(() => {
2775
+ const table = document.getElementById('rangeTable');
2776
+ if (table) {
2777
+ table.data = sampleData.slice(0, 15);
2778
+ table.columns = columns.slice(0, 8);
2779
+ table.rangeSelection = true;
2780
+ table.copyPaste = true;
2781
+ table.selectable = false; // Disable row selection to focus on cell range
2782
+ }
2783
+ }, 100);
2784
+ }
2785
+
2786
+ function showConditionalFormatting() {
2787
+ tableContainer.innerHTML = `
2788
+ <div class="demo-block">
2789
+ <h3>Conditional Formatting</h3>
2790
+ <p style="color: #6b7280; margin-bottom: 12px;">Dynamic cell styling based on data values</p>
2791
+ <ui-advanced-data-table id="formatTable"></ui-advanced-data-table>
2792
+ <div style="margin-top: 16px; padding: 12px; background-color: #ffe4e6; border-radius: 6px;">
2793
+ <p style="margin: 0; color: #be123c; font-size: 14px;">
2794
+ 🎨 <strong>Rules Applied:</strong><br>
2795
+ - <strong>Salary > $100k:</strong> Green background<br>
2796
+ - <strong>Rating < 3:</strong> Red text<br>
2797
+ - <strong>Status "Active":</strong> Blue badge style
2798
+ </p>
2799
+ </div>
2800
+ </div>
2801
+ `;
2802
+ setTimeout(() => {
2803
+ const table = document.getElementById('formatTable');
2804
+ if (table) {
2805
+ table.data = sampleData.slice(0, 15);
2806
+ table.columns = columns.slice(0, 8);
2807
+ table.conditionalFormatting = true;
2808
+ table.formattingRules = {
2809
+ salary: [
2810
+ { operator: '>', value: 100000, style: { backgroundColor: '#dcfce7', color: '#166534', fontWeight: 'bold' } },
2811
+ { operator: '<', value: 70000, style: { color: '#dc2626' } },
2812
+ ],
2813
+ rating: [{ operator: '>=', value: 5, style: { color: '#ca8a04', fontWeight: 'bold' } }],
2814
+ status: [
2815
+ { operator: '=', value: 'Active', style: { color: '#2563eb', backgroundColor: '#dbeafe', padding: '2px 6px', borderRadius: '4px' } },
2816
+ { operator: '=', value: 'Inactive', style: { color: '#9ca3af', fontStyle: 'italic' } },
2817
+ ],
2818
+ };
2819
+ }
2820
+ }, 100);
2821
+ }
2822
+
2823
+ function showAggregation() {
2824
+ tableContainer.innerHTML = `
2825
+ <div class="demo-block">
2826
+ <h3>📊 Sales Report Aggregation</h3>
2827
+ <p style="color: #6b7280; margin-bottom: 12px;">Real-world example: Summarizing quarterly sales performance.</p>
2828
+ <ui-advanced-data-table id="aggTable"></ui-advanced-data-table>
2829
+ <div style="margin-top: 16px; padding: 12px; background-color: #f0fdf4; border-radius: 6px;">
2830
+ <p style="margin: 0; color: #15803d; font-size: 14px;">
2831
+ <strong>Key Metrics Calculated:</strong><br>
2832
+ 💰 <strong>Total Revenue:</strong> Sum of all sales.<br>
2833
+ 📦 <strong>Total Units:</strong> Sum of quantity sold.<br>
2834
+ 📈 <strong>Avg Margin:</strong> Average profit margin.<br>
2835
+ 🗓️ <strong>Period:</strong> Earliest to Latest Date.
2836
+ </p>
2837
+ </div>
2838
+ </div>
2839
+ `;
2840
+ setTimeout(() => {
2841
+ const table = document.getElementById('aggTable');
2842
+ if (table) {
2843
+ // Dedicated Sales Dataset for meaningful aggregation
2844
+ const salesData = [
2845
+ { id: 101, region: 'North', product: 'MacBook Pro', category: 'Electronics', date: '2024-01-15', quantity: 5, revenue: 12500, margin: 25 },
2846
+ { id: 102, region: 'South', product: 'iPhone 15', category: 'Mobile', date: '2024-01-18', quantity: 12, revenue: 14400, margin: 35 },
2847
+ { id: 103, region: 'East', product: 'Ergo Chair', category: 'Furniture', date: '2024-01-20', quantity: 8, revenue: 4800, margin: 45 },
2848
+ { id: 104, region: 'West', product: 'Monitor 4K', category: 'Electronics', date: '2024-02-05', quantity: 15, revenue: 7500, margin: 18 },
2849
+ { id: 105, region: 'North', product: 'iPad Air', category: 'Mobile', date: '2024-02-10', quantity: 20, revenue: 12000, margin: 30 },
2850
+ { id: 106, region: 'South', product: 'Desk Lamp', category: 'Furniture', date: '2024-02-15', quantity: 30, revenue: 1500, margin: 55 },
2851
+ { id: 107, region: 'East', product: 'AirPods', category: 'Audio', date: '2024-03-01', quantity: 25, revenue: 6250, margin: 40 },
2852
+ { id: 108, region: 'West', product: 'Keyboard', category: 'Accessories', date: '2024-03-12', quantity: 10, revenue: 1500, margin: 60 },
2853
+ { id: 109, region: 'North', product: 'Mouse', category: 'Accessories', date: '2024-03-15', quantity: 40, revenue: 2000, margin: 65 },
2854
+ { id: 110, region: 'South', product: 'Server Rack', category: 'Enterprise', date: '2024-03-20', quantity: 2, revenue: 15000, margin: 20 },
2855
+ ];
2856
+
2857
+ table.data = salesData;
2858
+
2859
+ table.columns = [
2860
+ { id: 'date', field: 'date', label: 'Date', sortable: true, width: '120px', aggregation: ['min', 'max'] },
2861
+ { id: 'region', field: 'region', label: 'Region', sortable: true, width: '100px' },
2862
+ { id: 'product', field: 'product', label: 'Product', sortable: true, width: '150px', aggregation: ['count'] },
2863
+ { id: 'category', field: 'category', label: 'Category', sortable: true, width: '130px' },
2864
+ { id: 'quantity', field: 'quantity', label: 'Units Sold', sortable: true, width: '120px', aggregation: ['sum'], format: v => v + ' pcs' },
2865
+ { id: 'revenue', field: 'revenue', label: 'Revenue', sortable: true, width: '140px', aggregation: ['sum', 'max'], format: v => '$' + v.toLocaleString() },
2866
+ { id: 'margin', field: 'margin', label: 'Margin (%)', sortable: true, width: '120px', aggregation: ['avg'], format: v => v + '%' },
2867
+ ];
2868
+
2869
+ table.columnAggregation = true;
2870
+ table.pagination = false;
2871
+ }
2872
+ }, 100);
2873
+ }
2874
+
2875
+ function showValidationPrintDemo() {
2876
+ const container = document.getElementById('tableDemoContainer');
2877
+ if (!container) return;
2878
+
2879
+ container.innerHTML = `
2880
+ <div class="demo-block">
2881
+ <h3>✔️ Professional Grade: Validation & Programmatic Printing</h3>
2882
+ <p style="color: #6b7280; margin-bottom: 24px;">Features: Custom cell validators and a programmatic .print() method for reporting.</p>
2883
+
2884
+ <div style="display: flex; gap: 12px; margin-bottom: 16px;">
2885
+ <ui-button id="btnExecutePrint" variant="outline" color="secondary" label="🖨️ Execute .print() Method" style="--btn-bg: #111827; --btn-text: white; font-weight: 600;"></ui-button>
2886
+ </div>
2887
+
2888
+ <ui-advanced-data-table id="validationTable"
2889
+ editable="true"
2890
+ inline-validation="true"
2891
+ advanced-validation="true"
2892
+ column-aggregation="true">
2893
+ </ui-advanced-data-table>
2894
+
2895
+ <div style="margin-top: 16px; padding: 12px; background-color: #fdf2f8; border-radius: 6px;">
2896
+ <p style="margin: 0; color: #9d174d; font-size: 14px;">
2897
+ 💡 <strong>Testing Validation:</strong> Try editing the <strong>Email</strong> field and deleting its content or entering an invalid email. Try entering a <strong>Salary</strong> below 50,000.
2898
+ </p>
2899
+ </div>
2900
+ </div>
2901
+ `;
2902
+
2903
+ const printCurrentTable = function () {
2904
+ const table = document.getElementById('validationTable');
2905
+ if (table) table.print();
2906
+ };
2907
+
2908
+ setTimeout(() => {
2909
+ const table = document.getElementById('validationTable');
2910
+ if (table) {
2911
+ table.columns = [
2912
+ { id: 'name', field: 'name', label: 'Employee Name', sortable: true },
2913
+ {
2914
+ id: 'email',
2915
+ field: 'email',
2916
+ label: 'Email (Required)',
2917
+ type: 'email',
2918
+ editable: true,
2919
+ validator: value => {
2920
+ if (!value) return 'Email is mandatory for payroll';
2921
+ if (!value.includes('@')) return 'Please enter a valid corporate email';
2922
+ return true;
2923
+ },
2924
+ },
2925
+ {
2926
+ id: 'salary',
2927
+ field: 'salary',
2928
+ label: 'Salary (Min $50k)',
2929
+ type: 'number',
2930
+ editable: true,
2931
+ aggregation: ['avg', 'sum'],
2932
+ format: v => '$' + v.toLocaleString(),
2933
+ validator: value => {
2934
+ if (Number(value) < 50000) return 'Salary must be at least $50,000';
2935
+ return true;
2936
+ },
2937
+ },
2938
+ { id: 'department', field: 'department', label: 'Sector', groupable: true },
2939
+ ];
2940
+
2941
+ const pBtn = document.getElementById('btnExecutePrint');
2942
+ if (pBtn) pBtn.addEventListener('click', () => printCurrentTable());
2943
+
2944
+ table.data = [
2945
+ { id: 1, name: 'Alex Rivera', email: 'alex@company.com', salary: 120000, department: 'Engineering' },
2946
+ { id: 2, name: 'Beatriz Solis', email: 'beatriz@company.com', salary: 95000, department: 'Design' },
2947
+ { id: 3, name: 'Cassian Andor', email: 'cassian@rebel.org', salary: 45000, department: 'Infiltration' },
2948
+ ];
2949
+ }
2950
+ }, 100);
2951
+ }
2952
+ }