atomicuilibrary 0.0.1 → 0.1.0

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 (395) hide show
  1. package/dist/cjs/category-section.cjs.entry.js +1 -1
  2. package/dist/cjs/exploration-project-tailwind.cjs.js +1 -1
  3. package/dist/cjs/layout-manager.cjs.entry.js +1 -1
  4. package/dist/cjs/library-card.cjs.entry.js +1 -1
  5. package/dist/cjs/lm-container_2.cjs.entry.js +1 -1
  6. package/dist/cjs/lm-panel_3.cjs.entry.js +4 -4
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/my-step.cjs.entry.js +1 -1
  9. package/dist/cjs/nav-bar.cjs.entry.js +2 -2
  10. package/dist/cjs/{security-E1JcwxGc.js → security-CNaNip8F.js} +88 -154
  11. package/dist/cjs/smart-step.cjs.entry.js +2 -2
  12. package/dist/cjs/timeline-item.cjs.entry.js +1 -1
  13. package/dist/cjs/{ui-accordion_10.cjs.entry.js → ui-accordion_11.cjs.entry.js} +613 -26
  14. package/dist/cjs/ui-advanced-data-table.cjs.entry.js +1 -1
  15. package/dist/cjs/ui-anchor.cjs.entry.js +1 -1
  16. package/dist/cjs/ui-aside-panel.cjs.entry.js +5 -5
  17. package/dist/cjs/ui-avatar-group_3.cjs.entry.js +5 -5
  18. package/dist/cjs/ui-callout-banner.cjs.entry.js +1 -1
  19. package/dist/cjs/ui-card.cjs.entry.js +26 -4
  20. package/dist/cjs/ui-checkbox.cjs.entry.js +2 -2
  21. package/dist/cjs/ui-code-editor.cjs.entry.js +2 -2
  22. package/dist/cjs/ui-code-preview.cjs.entry.js +1 -1
  23. package/dist/cjs/ui-color-controller.cjs.entry.js +1 -1
  24. package/dist/cjs/ui-dialog-box.cjs.entry.js +1 -1
  25. package/dist/cjs/ui-dock-host.cjs.entry.js +3 -3
  26. package/dist/cjs/ui-drag-drop.cjs.entry.js +1 -1
  27. package/dist/cjs/ui-empty-state.cjs.entry.js +1 -1
  28. package/dist/cjs/ui-fab-item.cjs.entry.js +1 -1
  29. package/dist/cjs/ui-fab.cjs.entry.js +2 -2
  30. package/dist/cjs/ui-library.cjs.entry.js +1 -1
  31. package/dist/cjs/ui-list-group_2.cjs.entry.js +9 -5
  32. package/dist/cjs/ui-list.cjs.entry.js +4 -4
  33. package/dist/cjs/ui-navigation-item.cjs.entry.js +3 -3
  34. package/dist/cjs/ui-otp-input.cjs.entry.js +2 -2
  35. package/dist/cjs/{ui-pagination_3.cjs.entry.js → ui-pagination_4.cjs.entry.js} +202 -0
  36. package/dist/cjs/ui-pattern-input.cjs.entry.js +5 -5
  37. package/dist/cjs/ui-popover.cjs.entry.js +1 -1
  38. package/dist/cjs/ui-progress.cjs.entry.js +101 -17
  39. package/dist/cjs/ui-resizable-panel.cjs.entry.js +1 -1
  40. package/dist/cjs/ui-smart-location-dropdown.cjs.entry.js +2 -2
  41. package/dist/cjs/ui-smart-stepper.cjs.entry.js +1 -1
  42. package/dist/cjs/ui-snackbar.cjs.entry.js +1 -1
  43. package/dist/cjs/ui-step.cjs.entry.js +1 -1
  44. package/dist/cjs/ui-stepper.cjs.entry.js +1 -1
  45. package/dist/cjs/ui-switch.cjs.entry.js +9 -9
  46. package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
  47. package/dist/cjs/ui-timeline.cjs.entry.js +1 -1
  48. package/dist/cjs/ui-toolbar.cjs.entry.js +1 -1
  49. package/dist/cjs/ui-tooltip.cjs.entry.js +4 -4
  50. package/dist/cjs/ui-transfer-list.cjs.entry.js +1 -1
  51. package/dist/cjs/ui-workspace-manager.cjs.entry.js +1 -1
  52. package/dist/collection/assets/js/demo-loader.js +0 -1
  53. package/dist/collection/assets/js/demos/accordion-demo.js +189 -0
  54. package/dist/collection/assets/js/demos/advanced-data-table-demo.js +213 -214
  55. package/dist/collection/assets/js/demos/aside-panel-demo.js +6 -6
  56. package/dist/collection/assets/js/demos/button-demo.js +60 -1
  57. package/dist/collection/assets/js/demos/callout-banner-demo.js +324 -34
  58. package/dist/collection/assets/js/demos/card-demo.js +108 -61
  59. package/dist/collection/assets/js/demos/context-menu-demo.js +433 -12
  60. package/dist/collection/assets/js/demos/dock-demo.js +80 -60
  61. package/dist/collection/assets/js/demos/documentation-demo.js +227 -22
  62. package/dist/collection/assets/js/demos/empty-state-demo.js +10 -10
  63. package/dist/collection/assets/js/demos/list-demo.js +41 -18
  64. package/dist/collection/assets/js/demos/masonry-demo.js +164 -0
  65. package/dist/collection/assets/js/demos/progress-demo.js +701 -8
  66. package/dist/collection/assets/js/demos/radio-demo.js +1 -1
  67. package/dist/collection/assets/js/demos/splitter-demo.js +137 -0
  68. package/dist/collection/assets/js/demos/tag-demo.js +48 -18
  69. package/dist/collection/assets/js/demos/timeline-demo.js +20 -7
  70. package/dist/collection/assets/js/demos/tooltip-demo.js +26 -26
  71. package/dist/collection/assets/js/demos/tree-demo.js +28 -10
  72. package/dist/collection/collection-manifest.json +1 -4
  73. package/dist/collection/components/accordion/accordion.css +301 -0
  74. package/dist/collection/components/accordion/accordion.js +40 -8
  75. package/dist/collection/components/advanced-data-table/advanced-data-table.css +19 -5
  76. package/dist/collection/components/anchor/anchor.css +0 -2
  77. package/dist/collection/components/aside-panel/aside-panel.css +1 -3
  78. package/dist/collection/components/aside-panel/aside-panel.js +5 -5
  79. package/dist/collection/components/avatar/avatar.js +1 -1
  80. package/dist/collection/components/badge/badge.css +1 -0
  81. package/dist/collection/components/badge/badge.js +1 -1
  82. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
  83. package/dist/collection/components/button/button.css +131 -0
  84. package/dist/collection/components/button/button.js +128 -9
  85. package/dist/collection/components/card/card.css +83 -31
  86. package/dist/collection/components/card/card.js +46 -3
  87. package/dist/collection/components/checkbox/checkbox.css +8 -10
  88. package/dist/collection/components/checkbox/checkbox.js +2 -2
  89. package/dist/collection/components/code-editor/code-editor.js +1 -1
  90. package/dist/collection/components/code-preview/ui-code-preview.js +1 -1
  91. package/dist/collection/components/color-controller/color-controller.js +1 -1
  92. package/dist/collection/components/context-menu/context-menu.css +3 -3
  93. package/dist/collection/components/dialog-box/dialog-box.js +1 -1
  94. package/dist/collection/components/dialog-header/dialog-header.js +1 -1
  95. package/dist/collection/components/dock-host/ui-dock-host.js +3 -3
  96. package/dist/collection/components/drag-drop/drag-drop.js +1 -1
  97. package/dist/collection/components/empty-state/empty-state.js +1 -1
  98. package/dist/collection/components/fab/fab.js +2 -2
  99. package/dist/collection/components/fab-item/fab-item.js +1 -1
  100. package/dist/collection/components/horizontal-nav/horizontal-nav.js +2 -2
  101. package/dist/collection/components/icon/icon.js +1 -1
  102. package/dist/collection/components/input/input.js +4 -4
  103. package/dist/collection/components/layout-manager/layout-manager.js +1 -1
  104. package/dist/collection/components/layout-manager/lm-floating-window/lm-floating-window.js +1 -1
  105. package/dist/collection/components/layout-manager/lm-panel/lm-panel.js +1 -1
  106. package/dist/collection/components/layout-manager/lm-splitter/lm-splitter.js +1 -1
  107. package/dist/collection/components/layout-manager/lm-tabs/lm-tabs.js +1 -1
  108. package/dist/collection/components/library/category-section.js +1 -1
  109. package/dist/collection/components/library/library-card.js +1 -1
  110. package/dist/collection/components/library/library.js +1 -1
  111. package/dist/collection/components/list/list.js +4 -4
  112. package/dist/collection/components/list-item/list-item.css +24 -0
  113. package/dist/collection/components/list-item/list-item.js +35 -4
  114. package/dist/collection/components/loader/loader.css +1635 -0
  115. package/dist/collection/components/loader/loader.js +1120 -0
  116. package/dist/collection/components/my-step/my-step.js +1 -1
  117. package/dist/collection/components/nav-bar/nav-bar.js +6 -6
  118. package/dist/collection/components/otp-input/otp-input.js +2 -2
  119. package/dist/collection/components/pattern-input/pattern-input.js +5 -5
  120. package/dist/collection/components/progress/progress.css +150 -15
  121. package/dist/collection/components/progress/progress.js +180 -18
  122. package/dist/collection/components/radio/radio.css +3 -3
  123. package/dist/collection/components/radio/radio.js +1 -1
  124. package/dist/collection/components/resizable-panel/resizable-panel.js +1 -1
  125. package/dist/collection/components/smart-location-dropdown/smart-location-dropdown.js +2 -2
  126. package/dist/collection/components/smart-stepper/smart-step.js +2 -2
  127. package/dist/collection/components/smart-stepper/smart-stepper.js +1 -1
  128. package/dist/collection/components/snackbar/snackbar.js +1 -1
  129. package/dist/collection/components/speed-dial/speed-dial.js +1 -1
  130. package/dist/collection/components/stack/stack.js +2 -2
  131. package/dist/collection/components/step/step.js +1 -1
  132. package/dist/collection/components/switch/switch.js +10 -10
  133. package/dist/collection/components/tag-group/tag-group.js +2 -2
  134. package/dist/collection/components/timeline-item/timeline-item.js +1 -1
  135. package/dist/collection/components/toolbar/toolbar.js +1 -1
  136. package/dist/collection/components/tooltip/tooltip.js +3 -3
  137. package/dist/collection/components/top-bar/top-bar.js +2 -2
  138. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.css +19 -4
  139. package/dist/collection/components/ui-navigation-bar/navigation-bar/navigation-bar.js +6 -6
  140. package/dist/collection/components/ui-navigation-bar/navigation-item.js +3 -3
  141. package/dist/collection/components.js +1 -0
  142. package/dist/components/avatar-group.js +1 -1
  143. package/dist/components/avatar.js +1 -1
  144. package/dist/components/badge.js +1 -1
  145. package/dist/components/button-toggle.js +1 -1
  146. package/dist/components/category-section2.js +1 -1
  147. package/dist/components/checkbox.js +1 -1
  148. package/dist/components/context-menu.js +1 -1
  149. package/dist/components/dialog-header.js +1 -1
  150. package/dist/components/dropdown.js +1 -1
  151. package/dist/components/icon.js +2 -2
  152. package/dist/components/input.js +1 -1
  153. package/dist/components/layout-manager.js +1 -1
  154. package/dist/components/library-card2.js +1 -1
  155. package/dist/components/list-group.js +1 -1
  156. package/dist/components/list-item.js +1 -1
  157. package/dist/components/lm-container2.js +1 -1
  158. package/dist/components/lm-floating-window2.js +1 -1
  159. package/dist/components/lm-panel2.js +1 -1
  160. package/dist/components/lm-splitter2.js +1 -1
  161. package/dist/components/lm-tabs2.js +1 -1
  162. package/dist/components/loader.js +1 -0
  163. package/dist/components/my-step.js +1 -1
  164. package/dist/components/nav-bar.js +1 -1
  165. package/dist/components/pagination.js +1 -1
  166. package/dist/components/radio.js +1 -1
  167. package/dist/components/range-slider.js +1 -1
  168. package/dist/components/rating.js +1 -1
  169. package/dist/components/resizable-panel.js +1 -1
  170. package/dist/components/skeleton-loader.js +1 -1
  171. package/dist/components/smart-step.js +1 -1
  172. package/dist/components/stack.js +1 -1
  173. package/dist/components/switch.js +1 -1
  174. package/dist/components/tag-group.js +1 -1
  175. package/dist/components/tag.js +1 -1
  176. package/dist/components/timeline-item.js +1 -1
  177. package/dist/components/toggle-group.js +1 -1
  178. package/dist/components/tooltip.js +1 -1
  179. package/dist/components/ui-accordion.js +1 -1
  180. package/dist/components/ui-advanced-data-table.js +1 -1
  181. package/dist/components/ui-anchor.js +1 -1
  182. package/dist/components/ui-aside-panel.js +1 -1
  183. package/dist/components/ui-breadcrumb-item.js +1 -1
  184. package/dist/components/ui-breadcrumb.js +1 -1
  185. package/dist/components/ui-button-toggle-group.js +1 -1
  186. package/dist/components/ui-callout-banner.js +1 -1
  187. package/dist/components/ui-card.js +1 -1
  188. package/dist/components/ui-carousel.js +1 -1
  189. package/dist/components/ui-code-editor.js +1 -1
  190. package/dist/components/ui-code-preview.js +1 -1
  191. package/dist/components/ui-color-controller.js +1 -1
  192. package/dist/components/ui-color-picker.js +1 -1
  193. package/dist/components/ui-command-palette.js +1 -1
  194. package/dist/components/ui-dialog-box.js +1 -1
  195. package/dist/components/ui-divider.js +1 -1
  196. package/dist/components/ui-dock-host.js +1 -1
  197. package/dist/components/ui-dock.js +1 -1
  198. package/dist/components/ui-drag-drop.js +1 -1
  199. package/dist/components/ui-empty-state.js +1 -1
  200. package/dist/components/ui-fab-item.js +1 -1
  201. package/dist/components/ui-fab.js +1 -1
  202. package/dist/components/ui-file-upload.js +1 -1
  203. package/dist/components/ui-horizontal-nav.js +1 -1
  204. package/dist/components/ui-knob.js +1 -1
  205. package/dist/components/ui-library.js +1 -1
  206. package/dist/components/ui-list.js +1 -1
  207. package/dist/components/{ui-input-pair.d.ts → ui-loader.d.ts} +4 -4
  208. package/dist/components/ui-loader.js +1 -0
  209. package/dist/components/ui-masonry.js +1 -1
  210. package/dist/components/ui-meter-group.js +1 -1
  211. package/dist/components/ui-navigation-bar.js +1 -1
  212. package/dist/components/ui-navigation-item.js +1 -1
  213. package/dist/components/ui-number-input.js +1 -1
  214. package/dist/components/ui-otp-input.js +1 -1
  215. package/dist/components/ui-panel.js +1 -1
  216. package/dist/components/ui-pattern-input.js +1 -1
  217. package/dist/components/ui-popover.js +1 -1
  218. package/dist/components/ui-progress.js +1 -1
  219. package/dist/components/ui-scroll-top.js +1 -1
  220. package/dist/components/ui-smart-context-menu.js +1 -1
  221. package/dist/components/ui-smart-location-dropdown.js +1 -1
  222. package/dist/components/ui-smart-stepper.js +1 -1
  223. package/dist/components/ui-snackbar.js +1 -1
  224. package/dist/components/ui-speed-dial.js +1 -1
  225. package/dist/components/ui-splitter.js +1 -1
  226. package/dist/components/ui-step.js +1 -1
  227. package/dist/components/ui-stepper.js +1 -1
  228. package/dist/components/ui-tabs.js +1 -1
  229. package/dist/components/ui-timeline.js +1 -1
  230. package/dist/components/ui-timer.js +1 -1
  231. package/dist/components/ui-toolbar.js +1 -1
  232. package/dist/components/ui-top-bar.js +1 -1
  233. package/dist/components/ui-transfer-list.js +1 -1
  234. package/dist/components/ui-tree.js +1 -1
  235. package/dist/components/ui-workspace-manager.js +1 -1
  236. package/dist/esm/category-section.entry.js +1 -1
  237. package/dist/esm/exploration-project-tailwind.js +1 -1
  238. package/dist/esm/layout-manager.entry.js +1 -1
  239. package/dist/esm/library-card.entry.js +1 -1
  240. package/dist/esm/lm-container_2.entry.js +1 -1
  241. package/dist/esm/lm-panel_3.entry.js +4 -4
  242. package/dist/esm/loader.js +1 -1
  243. package/dist/esm/my-step.entry.js +1 -1
  244. package/dist/esm/nav-bar.entry.js +2 -2
  245. package/dist/esm/{security-D2WzX6vR.js → security-Dyu3Nplq.js} +88 -154
  246. package/dist/esm/smart-step.entry.js +2 -2
  247. package/dist/esm/timeline-item.entry.js +1 -1
  248. package/dist/esm/{ui-accordion_10.entry.js → ui-accordion_11.entry.js} +613 -27
  249. package/dist/esm/ui-advanced-data-table.entry.js +1 -1
  250. package/dist/esm/ui-anchor.entry.js +1 -1
  251. package/dist/esm/ui-aside-panel.entry.js +5 -5
  252. package/dist/esm/ui-avatar-group_3.entry.js +5 -5
  253. package/dist/esm/ui-callout-banner.entry.js +1 -1
  254. package/dist/esm/ui-card.entry.js +26 -4
  255. package/dist/esm/ui-checkbox.entry.js +2 -2
  256. package/dist/esm/ui-code-editor.entry.js +2 -2
  257. package/dist/esm/ui-code-preview.entry.js +1 -1
  258. package/dist/esm/ui-color-controller.entry.js +1 -1
  259. package/dist/esm/ui-dialog-box.entry.js +1 -1
  260. package/dist/esm/ui-dock-host.entry.js +3 -3
  261. package/dist/esm/ui-drag-drop.entry.js +1 -1
  262. package/dist/esm/ui-empty-state.entry.js +1 -1
  263. package/dist/esm/ui-fab-item.entry.js +1 -1
  264. package/dist/esm/ui-fab.entry.js +2 -2
  265. package/dist/esm/ui-library.entry.js +1 -1
  266. package/dist/esm/ui-list-group_2.entry.js +9 -5
  267. package/dist/esm/ui-list.entry.js +4 -4
  268. package/dist/esm/ui-navigation-item.entry.js +3 -3
  269. package/dist/esm/ui-otp-input.entry.js +2 -2
  270. package/dist/esm/{ui-pagination_3.entry.js → ui-pagination_4.entry.js} +202 -1
  271. package/dist/esm/ui-pattern-input.entry.js +5 -5
  272. package/dist/esm/ui-popover.entry.js +1 -1
  273. package/dist/esm/ui-progress.entry.js +101 -17
  274. package/dist/esm/ui-resizable-panel.entry.js +1 -1
  275. package/dist/esm/ui-smart-location-dropdown.entry.js +2 -2
  276. package/dist/esm/ui-smart-stepper.entry.js +1 -1
  277. package/dist/esm/ui-snackbar.entry.js +1 -1
  278. package/dist/esm/ui-step.entry.js +1 -1
  279. package/dist/esm/ui-stepper.entry.js +1 -1
  280. package/dist/esm/ui-switch.entry.js +9 -9
  281. package/dist/esm/ui-tabs.entry.js +1 -1
  282. package/dist/esm/ui-timeline.entry.js +1 -1
  283. package/dist/esm/ui-toolbar.entry.js +1 -1
  284. package/dist/esm/ui-tooltip.entry.js +4 -4
  285. package/dist/esm/ui-transfer-list.entry.js +1 -1
  286. package/dist/esm/ui-workspace-manager.entry.js +1 -1
  287. package/dist/exploration-project-tailwind/exploration-project-tailwind.esm.js +1 -1
  288. package/dist/exploration-project-tailwind/{p-c7e87fbb.entry.js → p-036d2a44.entry.js} +1 -1
  289. package/dist/exploration-project-tailwind/{p-62352ef2.entry.js → p-05a436d3.entry.js} +1 -1
  290. package/dist/exploration-project-tailwind/{p-a4f52a76.entry.js → p-16bdd162.entry.js} +1 -1
  291. package/dist/exploration-project-tailwind/{p-85bf89fd.entry.js → p-20ecc116.entry.js} +1 -1
  292. package/dist/exploration-project-tailwind/p-2347d21b.entry.js +1 -0
  293. package/dist/exploration-project-tailwind/p-3d381f75.entry.js +1 -0
  294. package/dist/exploration-project-tailwind/{p-e5322e59.entry.js → p-4288c158.entry.js} +1 -1
  295. package/dist/exploration-project-tailwind/{p-2f1aebb3.entry.js → p-4417a9d8.entry.js} +1 -1
  296. package/dist/exploration-project-tailwind/{p-049744f9.entry.js → p-44742ddd.entry.js} +1 -1
  297. package/dist/exploration-project-tailwind/{p-73d29a4a.entry.js → p-4aaa8e40.entry.js} +1 -1
  298. package/dist/exploration-project-tailwind/{p-6fa9dc15.entry.js → p-4bef8bed.entry.js} +1 -1
  299. package/dist/exploration-project-tailwind/{p-64e3a484.entry.js → p-4efd63ce.entry.js} +1 -1
  300. package/dist/exploration-project-tailwind/{p-c5ddc817.entry.js → p-54965530.entry.js} +1 -1
  301. package/dist/exploration-project-tailwind/p-5c835d90.entry.js +1 -0
  302. package/dist/exploration-project-tailwind/{p-4de419d5.entry.js → p-6b838549.entry.js} +1 -1
  303. package/dist/exploration-project-tailwind/{p-c174a372.entry.js → p-6ddbee42.entry.js} +1 -1
  304. package/dist/exploration-project-tailwind/{p-7515b1e3.entry.js → p-70bacda8.entry.js} +1 -1
  305. package/dist/exploration-project-tailwind/{p-9fa70359.entry.js → p-71d95bb1.entry.js} +1 -1
  306. package/dist/exploration-project-tailwind/{p-2d273118.entry.js → p-7889bfc4.entry.js} +1 -1
  307. package/dist/exploration-project-tailwind/{p-0b004861.entry.js → p-790556f0.entry.js} +1 -1
  308. package/dist/exploration-project-tailwind/{p-f5719913.entry.js → p-7ba2258a.entry.js} +1 -1
  309. package/dist/exploration-project-tailwind/{p-81961fb1.entry.js → p-81ebba11.entry.js} +1 -1
  310. package/dist/exploration-project-tailwind/{p-5e3e80ae.entry.js → p-8578b616.entry.js} +1 -1
  311. package/dist/exploration-project-tailwind/{p-3d3d48fd.entry.js → p-8b57fe4e.entry.js} +1 -1
  312. package/dist/exploration-project-tailwind/{p-ffb1754a.entry.js → p-97af03cc.entry.js} +1 -1
  313. package/dist/exploration-project-tailwind/{p-f0830120.entry.js → p-98e91da5.entry.js} +1 -1
  314. package/dist/exploration-project-tailwind/{p-d2308a00.entry.js → p-9bd14f69.entry.js} +1 -1
  315. package/dist/exploration-project-tailwind/p-Dyu3Nplq.js +2 -0
  316. package/dist/exploration-project-tailwind/{p-ba21fed3.entry.js → p-a27f59d2.entry.js} +1 -1
  317. package/dist/exploration-project-tailwind/{p-70d82d79.entry.js → p-a7b07cf4.entry.js} +1 -1
  318. package/dist/exploration-project-tailwind/{p-5508874f.entry.js → p-bd89d060.entry.js} +1 -1
  319. package/dist/exploration-project-tailwind/{p-9d0c8760.entry.js → p-c02284ea.entry.js} +1 -1
  320. package/dist/exploration-project-tailwind/{p-d419eaf0.entry.js → p-c1c8ac28.entry.js} +1 -1
  321. package/dist/exploration-project-tailwind/p-c63c522e.entry.js +1 -0
  322. package/dist/exploration-project-tailwind/{p-c90722ec.entry.js → p-cbee2607.entry.js} +1 -1
  323. package/dist/exploration-project-tailwind/{p-287dbf09.entry.js → p-d114a347.entry.js} +1 -1
  324. package/dist/exploration-project-tailwind/{p-8d951aef.entry.js → p-d2e45c5e.entry.js} +1 -1
  325. package/dist/exploration-project-tailwind/{p-77cc333a.entry.js → p-d59da767.entry.js} +1 -1
  326. package/dist/exploration-project-tailwind/{p-46596a28.entry.js → p-d6ce9721.entry.js} +1 -1
  327. package/dist/exploration-project-tailwind/{p-875be805.entry.js → p-dc92a343.entry.js} +1 -1
  328. package/dist/exploration-project-tailwind/{p-4f6bba75.entry.js → p-e22317c1.entry.js} +1 -1
  329. package/dist/exploration-project-tailwind/{p-d16c9635.entry.js → p-e76318c7.entry.js} +1 -1
  330. package/dist/exploration-project-tailwind/p-e8c6d395.entry.js +1 -0
  331. package/dist/exploration-project-tailwind/{p-c2ca71ac.entry.js → p-eab5ad36.entry.js} +1 -1
  332. package/dist/exploration-project-tailwind/p-f0bc5d7e.entry.js +1 -0
  333. package/dist/exploration-project-tailwind/p-f1beee72.entry.js +1 -0
  334. package/dist/exploration-project-tailwind/p-f543392f.entry.js +1 -0
  335. package/dist/exploration-project-tailwind/{p-46efdea3.entry.js → p-f61cfb7c.entry.js} +1 -1
  336. package/dist/exploration-project-tailwind/{p-77124686.entry.js → p-fb4aca69.entry.js} +1 -1
  337. package/dist/types/components/accordion/accordion.d.ts +10 -2
  338. package/dist/types/components/button/button.d.ts +9 -0
  339. package/dist/types/components/card/card.d.ts +4 -0
  340. package/dist/types/components/list-item/list-item.d.ts +1 -0
  341. package/dist/types/components/loader/loader.d.ts +145 -0
  342. package/dist/types/components/progress/progress.d.ts +34 -2
  343. package/dist/types/components.d.ts +509 -993
  344. package/dist/types/types/common.d.ts +1 -1
  345. package/dist/types/types/common.type.d.ts +1 -1
  346. package/package.json +8 -7
  347. package/dist/cjs/ui-checkbox-group.cjs.entry.js +0 -330
  348. package/dist/cjs/ui-image-button.cjs.entry.js +0 -67
  349. package/dist/cjs/ui-input-pair.cjs.entry.js +0 -44
  350. package/dist/cjs/ui-radio-group.cjs.entry.js +0 -205
  351. package/dist/cjs/ui-radio.cjs.entry.js +0 -206
  352. package/dist/collection/components/checkbox-group/checkbox-group.css +0 -223
  353. package/dist/collection/components/checkbox-group/checkbox-group.js +0 -1001
  354. package/dist/collection/components/checkbox-group/types.js +0 -1
  355. package/dist/collection/components/image-button/image-button.css +0 -154
  356. package/dist/collection/components/image-button/image-button.js +0 -310
  357. package/dist/collection/components/image-button/types.js +0 -1
  358. package/dist/collection/components/input-pair/input-pair.css +0 -72
  359. package/dist/collection/components/input-pair/input-pair.js +0 -309
  360. package/dist/collection/components/radio-group/radio-group.css +0 -202
  361. package/dist/collection/components/radio-group/radio-group.js +0 -903
  362. package/dist/collection/components/radio-group/types.js +0 -1
  363. package/dist/components/ui-checkbox-group.d.ts +0 -11
  364. package/dist/components/ui-checkbox-group.js +0 -1
  365. package/dist/components/ui-image-button.d.ts +0 -11
  366. package/dist/components/ui-image-button.js +0 -1
  367. package/dist/components/ui-input-pair.js +0 -1
  368. package/dist/components/ui-radio-group.d.ts +0 -11
  369. package/dist/components/ui-radio-group.js +0 -1
  370. package/dist/esm/ui-checkbox-group.entry.js +0 -328
  371. package/dist/esm/ui-image-button.entry.js +0 -65
  372. package/dist/esm/ui-input-pair.entry.js +0 -42
  373. package/dist/esm/ui-radio-group.entry.js +0 -203
  374. package/dist/esm/ui-radio.entry.js +0 -204
  375. package/dist/exploration-project-tailwind/p-01c7db7a.entry.js +0 -1
  376. package/dist/exploration-project-tailwind/p-5ce0dbd8.entry.js +0 -1
  377. package/dist/exploration-project-tailwind/p-6ab80ead.entry.js +0 -1
  378. package/dist/exploration-project-tailwind/p-6e9694f2.entry.js +0 -1
  379. package/dist/exploration-project-tailwind/p-7376ac95.entry.js +0 -1
  380. package/dist/exploration-project-tailwind/p-77a21491.entry.js +0 -1
  381. package/dist/exploration-project-tailwind/p-7f91d949.entry.js +0 -1
  382. package/dist/exploration-project-tailwind/p-807c6555.entry.js +0 -1
  383. package/dist/exploration-project-tailwind/p-D2WzX6vR.js +0 -2
  384. package/dist/exploration-project-tailwind/p-ab752761.entry.js +0 -1
  385. package/dist/exploration-project-tailwind/p-ce1222a1.entry.js +0 -1
  386. package/dist/exploration-project-tailwind/p-e90d5307.entry.js +0 -1
  387. package/dist/exploration-project-tailwind/p-ecda1cc3.entry.js +0 -1
  388. package/dist/exploration-project-tailwind/p-f11e5cae.entry.js +0 -1
  389. package/dist/types/components/checkbox-group/checkbox-group.d.ts +0 -87
  390. package/dist/types/components/checkbox-group/types.d.ts +0 -8
  391. package/dist/types/components/image-button/image-button.d.ts +0 -31
  392. package/dist/types/components/image-button/types.d.ts +0 -1
  393. package/dist/types/components/input-pair/input-pair.d.ts +0 -28
  394. package/dist/types/components/radio-group/radio-group.d.ts +0 -74
  395. package/dist/types/components/radio-group/types.d.ts +0 -2
@@ -16,20 +16,30 @@ export function initProgressDemo() {
16
16
  </p>
17
17
 
18
18
  <div class="demo-controls" style="margin: 20px 0; display: flex; gap: 10px; flex-wrap: wrap;">
19
- <ui-button onclick="showProgressPlayground()" variant="outline">🎮 Playground</ui-button>
20
- <ui-button onclick="showProgressBasics()" variant="outline">Line Progress</ui-button>
21
- <ui-button onclick="showProgressCircular()" variant="outline">Circular & Dashboard</ui-button>
22
- <ui-button onclick="showProgressPremium()" variant="outline">✨ Premium Effects</ui-button>
23
- <ui-button onclick="showProgressAdvanced()" variant="outline">Advanced Features</ui-button>
24
- <ui-button onclick="showProgressIndustrial()" variant="outline">🛡️ Industrial Monitoring</ui-button>
25
- <ui-button onclick="showProgressInteractive()" variant="outline">🕹️ Control Suite</ui-button>
26
- <ui-button onclick="showProgressVertical()" variant="outline">↕️ Vertical Racks</ui-button>
19
+ <ui-button onclick="showProgressPlayground()" data-demo="playground" variant="outline">🎮 Playground</ui-button>
20
+ <ui-button onclick="showProgressLifecycles()" data-demo="lifecycles" variant="outline">🔄 Lifecycle Statuses</ui-button>
21
+ <ui-button onclick="showProgressScanning()" data-demo="scanning" variant="outline">🔍 Device Scanner</ui-button>
22
+ <ui-button onclick="showProgressBasics()" data-demo="basics" variant="outline">Line Progress</ui-button>
23
+ <ui-button onclick="showProgressCircular()" data-demo="circular" variant="outline">Circular & Dashboard</ui-button>
24
+ <ui-button onclick="showProgressPremium()" data-demo="premium" variant="outline">✨ Premium Effects</ui-button>
25
+ <ui-button onclick="showProgressAdvanced()" data-demo="advanced" variant="outline">Advanced Features</ui-button>
26
+ <ui-button onclick="showProgressIndustrial()" data-demo="industrial" variant="outline">🛡️ Industrial Monitoring</ui-button>
27
+ <ui-button onclick="showProgressInteractive()" data-demo="interactive" variant="outline">🕹️ Control Suite</ui-button>
28
+ <ui-button onclick="showProgressVertical()" data-demo="vertical" variant="outline">↕️ Vertical Racks</ui-button>
29
+ <ui-button onclick="showProgressStatusBar()" data-demo="statusbar" variant="outline">🏷️ Status Bar</ui-button>
27
30
  </div>
28
31
 
29
32
  <div id="progressDemoContainer" style="margin-top: 40px; min-height: 400px; padding: 24px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0;"></div>
30
33
  `;
31
34
 
35
+ const updateProgressActiveBtn = demoName => {
36
+ section.querySelectorAll('.demo-controls ui-button').forEach(btn => {
37
+ btn.selected = btn.getAttribute('data-demo') === demoName;
38
+ });
39
+ };
40
+
32
41
  window.showProgressPlayground = function () {
42
+ updateProgressActiveBtn('playground');
33
43
  const container = document.getElementById('progressDemoContainer');
34
44
  container.innerHTML = `
35
45
  <div class="demo-block">
@@ -61,6 +71,10 @@ export function initProgressDemo() {
61
71
  <option value="exception">Exception (Red)</option>
62
72
  <option value="warning">Warning (Yellow)</option>
63
73
  <option value="danger">Danger (Vibrating)</option>
74
+ <option value="empty">Empty</option>
75
+ <option value="running">Running (Spinner)</option>
76
+ <option value="completed">Completed (Check)</option>
77
+ <option value="interrupted">Interrupted (Alert)</option>
64
78
  </ui-dropdown>
65
79
  </label>
66
80
 
@@ -133,7 +147,136 @@ export function initProgressDemo() {
133
147
  code.innerText = `<ui-progress ${props}></ui-progress>`;
134
148
  };
135
149
 
150
+ window.showProgressLifecycles = function () {
151
+ updateProgressActiveBtn('lifecycles');
152
+ const container = document.getElementById('progressDemoContainer');
153
+ container.innerHTML = `
154
+ <div class="demo-block">
155
+ <h3 style="margin-bottom: 8px;">🔄 Lifecycle Status Monitoring</h3>
156
+ <p style="font-size: 14px; color: #64748b; margin-bottom: 24px;">
157
+ Track system processes end-to-end using native status lifecycles: <code>empty</code>, <code>running</code>, <code>completed</code>, and <code>interrupted</code>.
158
+ </p>
159
+
160
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-bottom: 40px;">
161
+
162
+ <!-- Empty State -->
163
+ <div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
164
+ <h4 style="margin: 0 0 16px; font-size: 13px; color: #64748b; display: flex; align-items: center; justify-content: space-between;">
165
+ <span>Empty State</span>
166
+ <span style="font-size: 10px; font-weight: bold; background: #f1f5f9; color: #64748b; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Awaiting</span>
167
+ </h4>
168
+ <ui-progress percent="0" status="empty" stroke-width="12"></ui-progress>
169
+ <p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Task queued, awaiting resource allocation.</p>
170
+ </div>
171
+
172
+ <!-- Running State -->
173
+ <div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
174
+ <h4 style="margin: 0 0 16px; font-size: 13px; color: #1890ff; display: flex; align-items: center; justify-content: space-between;">
175
+ <span>Running State</span>
176
+ <span style="font-size: 10px; font-weight: bold; background: #e0f2fe; color: #0369a1; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Active</span>
177
+ </h4>
178
+ <ui-progress percent="45" status="running" stroke-width="12"></ui-progress>
179
+ <p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Actively processing records. Wave pulse enabled.</p>
180
+ </div>
181
+
182
+ <!-- Completed State -->
183
+ <div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
184
+ <h4 style="margin: 0 0 16px; font-size: 13px; color: #52c41a; display: flex; align-items: center; justify-content: space-between;">
185
+ <span>Completed State</span>
186
+ <span style="font-size: 10px; font-weight: bold; background: #dcfce7; color: #15803d; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Success</span>
187
+ </h4>
188
+ <ui-progress percent="100" status="completed" stroke-width="12"></ui-progress>
189
+ <p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Operation finished successfully. Output generated.</p>
190
+ </div>
191
+
192
+ <!-- Interrupted State -->
193
+ <div style="background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
194
+ <h4 style="margin: 0 0 16px; font-size: 13px; color: #ff4d4f; display: flex; align-items: center; justify-content: space-between;">
195
+ <span>Interrupted State</span>
196
+ <span style="font-size: 10px; font-weight: bold; background: #fef2f2; color: #b91c1c; padding: 2px 8px; border-radius: 10px; text-transform: uppercase;">Halted</span>
197
+ </h4>
198
+ <ui-progress percent="70" status="interrupted" stroke-width="12"></ui-progress>
199
+ <p style="font-size: 12px; color: #94a3b8; margin-top: 12px; margin-bottom: 0;">Network loss detected. Thread execution suspended.</p>
200
+ </div>
201
+
202
+ </div>
203
+
204
+ <!-- Dynamic Process Lifecycle Simulator -->
205
+ <div style="background: #1e293b; color: white; border-radius: 16px; padding: 32px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.3);">
206
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px;">
207
+ <h4 style="margin: 0; font-size: 16px; font-weight: 600; letter-spacing: 0.02em;">⚡ Operation Lifecycle Simulator</h4>
208
+ <span id="lifecycleStateText" style="font-size: 11px; font-weight: bold; background: #475569; color: #f8fafc; padding: 6px 14px; border-radius: 20px; letter-spacing: 0.05em; text-transform: uppercase;">QUEUED</span>
209
+ </div>
210
+
211
+ <div style="background: rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 24px; margin-bottom: 24px;">
212
+ <ui-progress id="lifecycleProgress" percent="0" status="empty" stroke-width="16" decimal-precision="1"></ui-progress>
213
+ </div>
214
+
215
+ <div style="display: flex; gap: 12px; flex-wrap: wrap;">
216
+ <ui-button id="btnLifecycleInit" onclick="handleLifecycleAction('init')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">🔌 Queue (Empty)</ui-button>
217
+ <ui-button id="btnLifecycleStart" onclick="handleLifecycleAction('start')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">🚀 Start (Running)</ui-button>
218
+ <ui-button id="btnLifecycleInterrupt" onclick="handleLifecycleAction('interrupt')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">🚫 Halt (Interrupt)</ui-button>
219
+ <ui-button id="btnLifecycleComplete" onclick="handleLifecycleAction('complete')" variant="outline" style="--ui-button-border-color: #475569; --ui-button-color: #f8fafc;">✨ Force Complete</ui-button>
220
+ </div>
221
+ </div>
222
+ </div>
223
+ `;
224
+
225
+ let simInterval = null;
226
+
227
+ window.handleLifecycleAction = function (action) {
228
+ const pBar = document.getElementById('lifecycleProgress');
229
+ const stateText = document.getElementById('lifecycleStateText');
230
+ if (!pBar || !stateText) return;
231
+
232
+ if (window.lifecycleInterval) {
233
+ clearInterval(window.lifecycleInterval);
234
+ window.lifecycleInterval = null;
235
+ }
236
+
237
+ if (action === 'init') {
238
+ pBar.percent = 0;
239
+ pBar.status = 'empty';
240
+ stateText.innerText = 'QUEUED';
241
+ stateText.style.background = '#475569';
242
+ } else if (action === 'start') {
243
+ pBar.status = 'running';
244
+ stateText.innerText = 'RUNNING';
245
+ stateText.style.background = '#1d4ed8';
246
+
247
+ let current = parseFloat(pBar.percent) || 0;
248
+ if (current >= 100) {
249
+ current = 0;
250
+ }
251
+
252
+ window.lifecycleInterval = setInterval(() => {
253
+ current += 1.2;
254
+ if (current < 100) {
255
+ pBar.percent = current.toFixed(1);
256
+ } else {
257
+ clearInterval(window.lifecycleInterval);
258
+ window.lifecycleInterval = null;
259
+ pBar.percent = 100;
260
+ pBar.status = 'completed';
261
+ stateText.innerText = 'COMPLETED';
262
+ stateText.style.background = '#15803d';
263
+ }
264
+ }, 100);
265
+ } else if (action === 'interrupt') {
266
+ pBar.status = 'interrupted';
267
+ stateText.innerText = 'INTERRUPTED';
268
+ stateText.style.background = '#b91c1c';
269
+ } else if (action === 'complete') {
270
+ pBar.percent = 100;
271
+ pBar.status = 'completed';
272
+ stateText.innerText = 'COMPLETED';
273
+ stateText.style.background = '#15803d';
274
+ }
275
+ };
276
+ };
277
+
136
278
  window.showProgressBasics = function () {
279
+ updateProgressActiveBtn('basics');
137
280
  const container = document.getElementById('progressDemoContainer');
138
281
  container.innerHTML = `
139
282
  <div class="demo-block">
@@ -165,6 +308,7 @@ export function initProgressDemo() {
165
308
  };
166
309
 
167
310
  window.showProgressCircular = function () {
311
+ updateProgressActiveBtn('circular');
168
312
  const container = document.getElementById('progressDemoContainer');
169
313
  container.innerHTML = `
170
314
  <div class="demo-block">
@@ -198,6 +342,7 @@ export function initProgressDemo() {
198
342
  };
199
343
 
200
344
  window.showProgressPremium = function () {
345
+ updateProgressActiveBtn('premium');
201
346
  const container = document.getElementById('progressDemoContainer');
202
347
  container.innerHTML = `
203
348
  <div class="demo-block">
@@ -234,6 +379,7 @@ export function initProgressDemo() {
234
379
  };
235
380
 
236
381
  window.showProgressAdvanced = function () {
382
+ updateProgressActiveBtn('advanced');
237
383
  const container = document.getElementById('progressDemoContainer');
238
384
  container.innerHTML = `
239
385
  <div class="demo-block">
@@ -282,6 +428,7 @@ export function initProgressDemo() {
282
428
  };
283
429
 
284
430
  window.showProgressIndustrial = function () {
431
+ updateProgressActiveBtn('industrial');
285
432
  const container = document.getElementById('progressDemoContainer');
286
433
  container.innerHTML = `
287
434
  <div class="demo-block">
@@ -387,6 +534,7 @@ export function initProgressDemo() {
387
534
  };
388
535
 
389
536
  window.showProgressInteractive = function () {
537
+ updateProgressActiveBtn('interactive');
390
538
  const container = document.getElementById('progressDemoContainer');
391
539
  container.innerHTML = `
392
540
  <div class="demo-block">
@@ -444,6 +592,7 @@ export function initProgressDemo() {
444
592
  };
445
593
 
446
594
  window.showProgressVertical = function () {
595
+ updateProgressActiveBtn('vertical');
447
596
  const container = document.getElementById('progressDemoContainer');
448
597
  container.innerHTML = `
449
598
  <div class="demo-block">
@@ -458,5 +607,549 @@ export function initProgressDemo() {
458
607
  `;
459
608
  };
460
609
 
610
+ window.showProgressScanning = function () {
611
+ updateProgressActiveBtn('scanning');
612
+ const container = document.getElementById('progressDemoContainer');
613
+ container.innerHTML = `
614
+ <div class="demo-block" style="font-family: inherit;">
615
+ <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px;">
616
+ <div>
617
+ <h3 style="margin: 0; font-size: 20px; font-weight: 700; color: #0f172a;">🔍 Cybernetic Device Scanner</h3>
618
+ <p style="margin: 4px 0 0; font-size: 14px; color: #64748b;">Automated sector, memory, and threat scanning telemetry.</p>
619
+ </div>
620
+ <span id="scanStatusBadge" style="font-size: 11px; font-weight: 700; background: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.05em;">AWAITING COMMAND</span>
621
+ </div>
622
+
623
+ <div style="display: grid; grid-template-columns: 280px 1fr; gap: 32px; margin-bottom: 32px;">
624
+ <!-- Left Panel: Dial & Actions -->
625
+ <div style="background: white; border: 1px solid #e2e8f0; border-radius: 16px; padding: 24px; display: flex; flex-direction: column; align-items: center; gap: 20px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
626
+ <div style="position: relative; width: 160px; height: 160px; display: flex; align-items: center; justify-content: center;">
627
+ <ui-progress
628
+ id="scanCircularProgress"
629
+ type="dashboard"
630
+ percent="0"
631
+ stroke-width="12"
632
+ stroke-color='{"from": "#3b82f6", "to": "#10b981"}'
633
+ gap-position="bottom"
634
+ width="160"
635
+ glow="true"
636
+ liquid="true"
637
+ status="empty"
638
+ ></ui-progress>
639
+ </div>
640
+
641
+ <!-- Scanning Controls -->
642
+ <div style="display: flex; flex-direction: column; width: 100%; gap: 10px; margin-top: 10px;">
643
+ <ui-button id="btnStartScan" onclick="handleScanAction('start')" variant="primary" style="width: 100%;">⚡ Start Full Scan</ui-button>
644
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 8px;">
645
+ <ui-button id="btnPauseScan" onclick="handleScanAction('pause')" variant="outline" style="font-size: 12px;">⏸️ Pause</ui-button>
646
+ <ui-button id="btnHaltScan" onclick="handleScanAction('halt')" variant="outline" style="font-size: 12px; --ui-button-color: #ef4444; --ui-button-border-color: #fecaca;">🚫 Abort</ui-button>
647
+ </div>
648
+ <ui-button id="btnResetScan" onclick="handleScanAction('reset')" variant="ghost" style="width: 100%; font-size: 12px;">🔄 Reset Console</ui-button>
649
+ </div>
650
+ </div>
651
+
652
+ <!-- Right Panel: Live Logs & Telemetry -->
653
+ <div style="display: flex; flex-direction: column; gap: 20px;">
654
+ <!-- Telemetry Cards -->
655
+ <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;">
656
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 16px; border-radius: 12px; text-align: center;">
657
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; font-weight: 600;">Sectors Checked</span>
658
+ <h4 id="sectorsCount" style="margin: 8px 0 0; font-size: 24px; font-weight: 800; color: #0f172a;">0</h4>
659
+ </div>
660
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 16px; border-radius: 12px; text-align: center;">
661
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; font-weight: 600;">Threats Detected</span>
662
+ <h4 id="threatsCount" style="margin: 8px 0 0; font-size: 24px; font-weight: 800; color: #0f172a;">0</h4>
663
+ </div>
664
+ <div style="background: white; border: 1px solid #e2e8f0; padding: 16px; border-radius: 12px; text-align: center;">
665
+ <span style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; font-weight: 600;">Scan Time</span>
666
+ <h4 id="elapsedScanTime" style="margin: 8px 0 0; font-size: 24px; font-weight: 800; color: #0f172a;">0.0s</h4>
667
+ </div>
668
+ </div>
669
+
670
+ <!-- Terminal Console Logs -->
671
+ <div style="background: #0f172a; color: #38bdf8; border-radius: 16px; padding: 20px; font-family: 'Courier New', Courier, monospace; font-size: 12px; height: 180px; overflow-y: auto; border: 1px solid #1e293b; box-shadow: inset 0 2px 8px rgba(0,0,0,0.5);" id="scanTerminalConsole">
672
+ <div style="color: #64748b;">[SCAN ENGINE v4.2.1] INITIALIZED...</div>
673
+ <div style="color: #64748b;">[CONSOLE] READY FOR HARDWARE RAMP...</div>
674
+ </div>
675
+ </div>
676
+ </div>
677
+
678
+ <!-- Linear Sub-System Feed -->
679
+ <div style="background: white; border: 1px solid #e2e8f0; border-radius: 16px; padding: 24px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
680
+ <h4 style="margin: 0 0 16px; font-size: 13px; text-transform: uppercase; color: #64748b; font-weight: 700; letter-spacing: 0.05em;">Memory Buffer Allocation Check</h4>
681
+ <ui-progress id="scanLinearBuffer" percent="0" status="empty" stroke-width="16" vitality="true"></ui-progress>
682
+ </div>
683
+ </div>
684
+ `;
685
+
686
+ // Active scan memory variables
687
+ if (window.scanInterval) {
688
+ clearInterval(window.scanInterval);
689
+ window.scanInterval = null;
690
+ }
691
+ window.scanTimeElapsed = 0;
692
+ window.scanSectors = 0;
693
+ window.scanThreats = 0;
694
+
695
+ const mockSectors = [
696
+ '/dev/disk0s1/System/Library/Kernels/kernel',
697
+ '/dev/disk0s1/System/Library/Extensions/AppleACPIPlatform.kext',
698
+ '/dev/disk0s1/System/Library/Extensions/AppleSMBIOS.kext',
699
+ '/dev/disk0s1/System/Library/Fonts/SF-Pro.ttf',
700
+ '/dev/disk0s1/usr/sbin/cron',
701
+ '/dev/disk0s1/usr/bin/security',
702
+ '/dev/disk0s1/private/var/log/system.log',
703
+ '/dev/disk0s1/Applications/CyberneticScanner.app',
704
+ '/Memory/Alloc/RAM_BLOCK_0x00FF34D',
705
+ '/Memory/Alloc/RAM_BLOCK_0x01AA87D',
706
+ '/Ports/TCP/Port-80-Listener',
707
+ '/Ports/TCP/Port-443-SecureGateway',
708
+ '/Ports/TCP/Port-8080-AltServer',
709
+ ];
710
+
711
+ window.handleScanAction = function (action) {
712
+ const circ = document.getElementById('scanCircularProgress');
713
+ const line = document.getElementById('scanLinearBuffer');
714
+ const statusBadge = document.getElementById('scanStatusBadge');
715
+ const term = document.getElementById('scanTerminalConsole');
716
+ const secCount = document.getElementById('sectorsCount');
717
+ const thCount = document.getElementById('threatsCount');
718
+ const timeCount = document.getElementById('elapsedScanTime');
719
+
720
+ if (!circ || !line || !statusBadge || !term) return;
721
+
722
+ const log = (msg, color = '#38bdf8') => {
723
+ const div = document.createElement('div');
724
+ div.style.color = color;
725
+ div.innerText = `[${new Date().toLocaleTimeString()}] ${msg}`;
726
+ term.appendChild(div);
727
+ term.scrollTop = term.scrollHeight;
728
+ };
729
+
730
+ if (action === 'start') {
731
+ if (window.scanInterval) return;
732
+
733
+ circ.status = 'running';
734
+ line.status = 'running';
735
+ statusBadge.innerText = 'RUNNING';
736
+ statusBadge.style.background = '#e0f2fe';
737
+ statusBadge.style.color = '#0369a1';
738
+ log('INITIATING FULL HARDWARE DEVICE SCAN...', '#10b981');
739
+
740
+ window.scanTimeStart = Date.now() - window.scanTimeElapsed;
741
+
742
+ window.scanInterval = setInterval(() => {
743
+ let current = parseFloat(circ.percent) || 0;
744
+ if (current < 100) {
745
+ current += 1.6;
746
+ if (current > 100) current = 100;
747
+
748
+ circ.percent = current.toFixed(1);
749
+ line.percent = current.toFixed(1);
750
+
751
+ // Update timer
752
+ window.scanTimeElapsed = Date.now() - window.scanTimeStart;
753
+ timeCount.innerText = (window.scanTimeElapsed / 1000).toFixed(1) + 's';
754
+
755
+ // Check mock sector files
756
+ window.scanSectors += Math.floor(Math.random() * 8) + 3;
757
+ secCount.innerText = window.scanSectors;
758
+
759
+ const randomFile = mockSectors[Math.floor(Math.random() * mockSectors.length)];
760
+ log(`CHECKING: ${randomFile}`);
761
+
762
+ // Mock threats detection at 40% and 80%
763
+ if (current >= 40 && window.scanThreats === 0) {
764
+ window.scanThreats = 1;
765
+ thCount.innerText = '1';
766
+ thCount.style.color = '#f59e0b';
767
+ circ.status = 'warning';
768
+ line.status = 'warning';
769
+ statusBadge.innerText = 'WARNING';
770
+ statusBadge.style.background = '#fef3c7';
771
+ statusBadge.style.color = '#b45309';
772
+ log('⚠️ SYSTEM WARNING: UNVERIFIED BUFFER DETECTED AT SECTOR 4!', '#f59e0b');
773
+ }
774
+
775
+ if (current >= 80 && window.scanThreats === 1) {
776
+ window.scanThreats = 2;
777
+ thCount.innerText = '2';
778
+ thCount.style.color = '#ef4444';
779
+ circ.status = 'interrupted';
780
+ line.status = 'interrupted';
781
+ statusBadge.innerText = 'SUSPECTED THREAT';
782
+ statusBadge.style.background = '#fef2f2';
783
+ statusBadge.style.color = '#b91c1c';
784
+ log('🚨 CRITICAL ALERT: CORRUPTED MALICIOUS THREAD IN RAM BLOCK!', '#ef4444');
785
+ }
786
+
787
+ } else {
788
+ clearInterval(window.scanInterval);
789
+ window.scanInterval = null;
790
+ circ.percent = 100;
791
+ line.percent = 100;
792
+
793
+ if (window.scanThreats > 0) {
794
+ circ.status = 'interrupted';
795
+ line.status = 'interrupted';
796
+ statusBadge.innerText = 'THREAT FOUND';
797
+ statusBadge.style.background = '#fef2f2';
798
+ statusBadge.style.color = '#b91c1c';
799
+ log('❌ SCAN COMPLETE: 2 CRITICAL THREATS SECURED. IMMEDIATE ACTION REQUIRED.', '#ef4444');
800
+ } else {
801
+ circ.status = 'completed';
802
+ line.status = 'completed';
803
+ statusBadge.innerText = 'COMPLETED';
804
+ statusBadge.style.background = '#dcfce7';
805
+ statusBadge.style.color = '#15803d';
806
+ log('✨ SCAN COMPLETE: DEVICE SECURE. ZERO THREATS DETECTED.', '#10b981');
807
+ }
808
+ }
809
+ }, 120);
810
+ } else if (action === 'pause') {
811
+ if (!window.scanInterval) return;
812
+ clearInterval(window.scanInterval);
813
+ window.scanInterval = null;
814
+
815
+ statusBadge.innerText = 'PAUSED';
816
+ statusBadge.style.background = '#f1f5f9';
817
+ statusBadge.style.color = '#475569';
818
+ log('SCAN SUSPENDED BY OPERATOR.', '#faad14');
819
+ } else if (action === 'halt') {
820
+ if (window.scanInterval) {
821
+ clearInterval(window.scanInterval);
822
+ window.scanInterval = null;
823
+ }
824
+ circ.status = 'interrupted';
825
+ line.status = 'interrupted';
826
+ statusBadge.innerText = 'ABORTED';
827
+ statusBadge.style.background = '#fef2f2';
828
+ statusBadge.style.color = '#b91c1c';
829
+ log('❌ CRITICAL: HARDWARE SCAN ABORTED IMMEDIATELY!', '#ef4444');
830
+ } else if (action === 'reset') {
831
+ if (window.scanInterval) {
832
+ clearInterval(window.scanInterval);
833
+ window.scanInterval = null;
834
+ }
835
+ circ.percent = 0;
836
+ circ.status = 'empty';
837
+ line.percent = 0;
838
+ line.status = 'empty';
839
+ window.scanTimeElapsed = 0;
840
+ window.scanSectors = 0;
841
+ window.scanThreats = 0;
842
+
843
+ secCount.innerText = '0';
844
+ thCount.innerText = '0';
845
+ thCount.style.color = '';
846
+ timeCount.innerText = '0.0s';
847
+ statusBadge.innerText = 'AWAITING COMMAND';
848
+ statusBadge.style.background = '';
849
+ statusBadge.style.color = '';
850
+
851
+ term.innerHTML = `
852
+ <div style="color: #64748b;">[SCAN ENGINE v4.2.1] INITIALIZED...</div>
853
+ <div style="color: #64748b;">[CONSOLE] READY FOR HARDWARE RAMP...</div>
854
+ `;
855
+ log('SCAN TELEMETRY CLEARED AND RESET.', '#64748b');
856
+ }
857
+ };
858
+ };
859
+
860
+ window.showProgressStatusBar = function () {
861
+ updateProgressActiveBtn('statusbar');
862
+ const container = document.getElementById('progressDemoContainer');
863
+ container.innerHTML = `
864
+ <div class="demo-block">
865
+ <h3 style="margin-bottom:6px;">🏷️ Status Bar Variant</h3>
866
+ <p style="font-size:13px; color:#64748b; margin:0 0 28px; line-height:1.6;">Add <code>status-bar</code> to any <code>ui-progress</code> line bar. The status badge and percentage are derived automatically from <code>percent</code> and <code>status</code>. Use <code>status-bar-align</code> to position the label and <code>status-labels</code> to override any text.</p>
867
+
868
+ <!-- Custom labels showcase -->
869
+ <h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Custom Labels</h4>
870
+ <div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; margin-bottom:36px;">
871
+
872
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
873
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">Deploy pipeline labels</span>
874
+ <ui-progress percent="0" status-bar stroke-width="6"
875
+ status-labels='{"notStarted":"Queued","running":"Deploying","interrupted":"Rolled Back","completed":"Live"}'></ui-progress>
876
+ </div>
877
+
878
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
879
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">File transfer labels</span>
880
+ <ui-progress percent="55" status-bar stroke-width="6" stroke-color="#3b82f6"
881
+ status-labels='{"notStarted":"Pending","running":"Uploading","interrupted":"Paused","completed":"Sent"}'></ui-progress>
882
+ </div>
883
+
884
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
885
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">Partial override (running only)</span>
886
+ <ui-progress percent="72" status-bar stroke-width="6" stroke-color="#8b5cf6"
887
+ status-labels='{"running":"In Progress"}'></ui-progress>
888
+ </div>
889
+
890
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
891
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">Interrupted — custom label</span>
892
+ <ui-progress percent="41" status="interrupted" status-bar stroke-width="6" stroke-color="#f59e0b"
893
+ status-labels='{"interrupted":"On Hold"}'></ui-progress>
894
+ </div>
895
+ </div>
896
+
897
+ <!-- Badge Alignment showcase -->
898
+ <h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Chip Alignment</h4>
899
+ <div style="display:flex; flex-direction:column; gap:12px; margin-bottom:36px;">
900
+
901
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
902
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">LEFT (default) — chip anchored to left edge</span>
903
+ <ui-progress percent="60" status-bar status-bar-align="left" stroke-width="7" stroke-color="#3b82f6"></ui-progress>
904
+ </div>
905
+
906
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
907
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">CENTER — chip centered on bar</span>
908
+ <ui-progress percent="60" status-bar status-bar-align="center" stroke-width="7" stroke-color="#8b5cf6"></ui-progress>
909
+ </div>
910
+
911
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
912
+ <span style="font-size:11px; font-weight:700; color:#cbd5e1; display:block; margin-bottom:10px;">RIGHT — chip anchored to right edge</span>
913
+ <ui-progress percent="60" status-bar status-bar-align="right" stroke-width="7" stroke-color="#22c55e"></ui-progress>
914
+ </div>
915
+ </div>
916
+
917
+ <!-- All 4 lifecycle states -->
918
+ <h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Lifecycle States</h4>
919
+ <div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; margin-bottom:36px;">
920
+
921
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
922
+ <ui-progress percent="0" status-bar stroke-width="6"></ui-progress>
923
+ </div>
924
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
925
+ <ui-progress percent="45" status-bar stroke-width="6" stroke-color="#3b82f6"></ui-progress>
926
+ </div>
927
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
928
+ <ui-progress percent="72" status="interrupted" status-bar stroke-width="6" stroke-color="#f59e0b"></ui-progress>
929
+ </div>
930
+ <div style="background:white; padding:18px 20px; border-radius:12px; border:1px solid #e2e8f0;">
931
+ <ui-progress percent="100" status-bar stroke-width="6" stroke-color="#22c55e"></ui-progress>
932
+ </div>
933
+ </div>
934
+
935
+ <!-- Real-world context cards -->
936
+ <h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Real-World Usage</h4>
937
+ <div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:14px; margin-bottom:36px;">
938
+
939
+ <div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
940
+ <div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
941
+ <div>
942
+ <p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">CI/CD Pipeline</p>
943
+ <p style="margin:2px 0 0; font-size:11px; color:#64748b;">main → production</p>
944
+ </div>
945
+ <span style="font-size:10px; font-weight:700; background:#eff6ff; color:#3b82f6; padding:3px 8px; border-radius:20px;">DEPLOY</span>
946
+ </div>
947
+ <ui-progress percent="68" status-bar stroke-width="7" stroke-color="#3b82f6"></ui-progress>
948
+ </div>
949
+
950
+ <div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
951
+ <div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
952
+ <div>
953
+ <p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">File Upload</p>
954
+ <p style="margin:2px 0 0; font-size:11px; color:#64748b;">design-assets-v3.zip</p>
955
+ </div>
956
+ <span style="font-size:10px; font-weight:700; background:#f0fdf4; color:#16a34a; padding:3px 8px; border-radius:20px;">DONE</span>
957
+ </div>
958
+ <ui-progress percent="100" status-bar status-bar-align="right" stroke-width="7" stroke-color="#22c55e"></ui-progress>
959
+ </div>
960
+
961
+ <div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
962
+ <div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
963
+ <div>
964
+ <p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">Database Migration</p>
965
+ <p style="margin:2px 0 0; font-size:11px; color:#64748b;">prod_db → replica_eu</p>
966
+ </div>
967
+ <span style="font-size:10px; font-weight:700; background:#fffbeb; color:#d97706; padding:3px 8px; border-radius:20px;">PAUSED</span>
968
+ </div>
969
+ <ui-progress percent="41" status="interrupted" status-bar stroke-width="7" stroke-color="#f59e0b"></ui-progress>
970
+ </div>
971
+
972
+ <div style="background:white; padding:20px; border-radius:12px; border:1px solid #e2e8f0;">
973
+ <div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:14px;">
974
+ <div>
975
+ <p style="margin:0; font-size:13px; font-weight:700; color:#0f172a;">Scheduled Backup</p>
976
+ <p style="margin:2px 0 0; font-size:11px; color:#64748b;">Starts at 03:00 UTC</p>
977
+ </div>
978
+ <span style="font-size:10px; font-weight:700; background:#f1f5f9; color:#64748b; padding:3px 8px; border-radius:20px;">QUEUED</span>
979
+ </div>
980
+ <ui-progress percent="0" status-bar status-bar-align="center" stroke-width="7"></ui-progress>
981
+ </div>
982
+ </div>
983
+
984
+ <!-- Interactive demo -->
985
+ <h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:0 0 14px;">Interactive</h4>
986
+ <div style="background:white; padding:24px; border-radius:12px; border:1px solid #e2e8f0;">
987
+ <div style="display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:16px;">
988
+ <label style="font-size:13px; font-weight:600; white-space:nowrap; color:#0f172a;">Progress: <span id="sb-val">0</span>%</label>
989
+ <input type="range" id="sb-slider" min="0" max="100" value="0" style="flex:1; min-width:140px;">
990
+ <ui-button id="sb-btn-interrupt" variant="outline" style="--ui-button-color:#d97706; --ui-button-border-color:#fde68a;">⛔ Interrupt</ui-button>
991
+ <ui-button id="sb-btn-reset" variant="ghost">↺ Reset</ui-button>
992
+ </div>
993
+ <div style="display:flex; align-items:center; gap:8px; margin-bottom:16px;">
994
+ <span style="font-size:12px; font-weight:600; color:#64748b;">Align:</span>
995
+ <button id="sb-align-left" data-align="left" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #3b82f6; background:#eff6ff; color:#2563eb; cursor:pointer;">Left</button>
996
+ <button id="sb-align-center" data-align="center" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #e2e8f0; background:#f8fafc; color:#475569; cursor:pointer;">Center</button>
997
+ <button id="sb-align-right" data-align="right" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #e2e8f0; background:#f8fafc; color:#475569; cursor:pointer;">Right</button>
998
+ </div>
999
+ <!-- Position and Height controls -->
1000
+ <div style="display:flex; align-items:center; gap:24px; flex-wrap:wrap; margin-bottom:16px; padding:12px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0;">
1001
+ <div style="display:flex; align-items:center; gap:8px;">
1002
+ <span style="font-size:12px; font-weight:600; color:#64748b;">Position:</span>
1003
+ <button id="sb-pos-inside" data-pos="inside" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #3b82f6; background:#eff6ff; color:#2563eb; cursor:pointer;">Inside Bar</button>
1004
+ <button id="sb-pos-top" data-pos="top" style="padding:3px 12px; font-size:12px; font-weight:600; border-radius:6px; border:1.5px solid #e2e8f0; background:#f8fafc; color:#475569; cursor:pointer;">On Top</button>
1005
+ </div>
1006
+ <div style="display:flex; align-items:center; gap:8px; flex:1; min-width:200px;">
1007
+ <span style="font-size:12px; font-weight:600; color:#64748b; white-space:nowrap;">Bar Height: <span id="sb-height-val">8</span>px</span>
1008
+ <input type="range" id="sb-height-slider" min="2" max="40" value="8" style="flex:1; cursor:pointer;">
1009
+ </div>
1010
+ </div>
1011
+ <!-- Custom label inputs -->
1012
+ <div style="display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px; margin-bottom:20px; padding:16px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0;">
1013
+ <label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
1014
+ Not Started
1015
+ <input id="sb-lbl-notStarted" type="text" placeholder="Not Started" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
1016
+ </label>
1017
+ <label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
1018
+ Running
1019
+ <input id="sb-lbl-running" type="text" placeholder="Running" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
1020
+ </label>
1021
+ <label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
1022
+ Interrupted
1023
+ <input id="sb-lbl-interrupted" type="text" placeholder="Interrupted" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
1024
+ </label>
1025
+ <label style="display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.05em;">
1026
+ Completed
1027
+ <input id="sb-lbl-completed" type="text" placeholder="Completed" value="" style="padding:5px 8px; font-size:12px; border-radius:6px; border:1px solid #e2e8f0; outline:none; background:white;">
1028
+ </label>
1029
+ </div>
1030
+ <ui-progress id="sb-bar" percent="0" status-bar status-bar-align="left" stroke-width="8"></ui-progress>
1031
+ </div>
1032
+
1033
+ <!-- Usage snippet -->
1034
+ <h4 style="font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#94a3b8; margin:28px 0 14px;">Usage</h4>
1035
+ <div style="background:#0f172a; border-radius:10px; padding:18px 22px; font-family:'Courier New',monospace; font-size:12px; line-height:1.9; color:#e2e8f0; overflow-x:auto;">
1036
+ <span style="color:#64748b;">/* default labels (rendered inside, forces minimum 32px height) */</span><br>
1037
+ <span style="color:#7dd3fc;">&lt;ui-progress</span><span style="color:#86efac;"> percent</span><span style="color:#f8fafc;">="45"</span><span style="color:#86efac;"> status-bar</span><span style="color:#7dd3fc;">&gt;&lt;/ui-progress&gt;</span><br><br>
1038
+ <span style="color:#64748b;">/* status bar on top (allows custom/reduced height via stroke-width) */</span><br>
1039
+ <span style="color:#7dd3fc;">&lt;ui-progress</span><span style="color:#86efac;"> percent</span><span style="color:#f8fafc;">="60"</span><span style="color:#86efac;"> status-bar</span><span style="color:#86efac;"> status-bar-position</span><span style="color:#f8fafc;">="top"</span><span style="color:#86efac;"> stroke-width</span><span style="color:#f8fafc;">="4"</span><span style="color:#7dd3fc;">&gt;&lt;/ui-progress&gt;</span><br><br>
1040
+ <span style="color:#64748b;">/* custom all 4 labels */</span><br>
1041
+ <span style="color:#7dd3fc;">&lt;ui-progress</span><span style="color:#86efac;"> percent</span><span style="color:#f8fafc;">="55"</span><span style="color:#86efac;"> status-bar</span><br>
1042
+ &nbsp;&nbsp;<span style="color:#86efac;"> status-labels</span><span style="color:#f8fafc;">='{"notStarted":"Queued","running":"Uploading","interrupted":"Paused","completed":"Sent"}'</span><span style="color:#7dd3fc;">&gt;&lt;/ui-progress&gt;</span>
1043
+ </div>
1044
+ </div>
1045
+ `;
1046
+
1047
+ const bar = document.getElementById('sb-bar');
1048
+ const slider = document.getElementById('sb-slider');
1049
+ const valEl = document.getElementById('sb-val');
1050
+ const heightSlider = document.getElementById('sb-height-slider');
1051
+ const heightValEl = document.getElementById('sb-height-val');
1052
+ let interrupted = false;
1053
+
1054
+ function applyState(pct, isInterrupted) {
1055
+ valEl.textContent = pct;
1056
+ bar.setAttribute('percent', pct);
1057
+ if (isInterrupted) {
1058
+ bar.setAttribute('status', 'interrupted');
1059
+ bar.setAttribute('stroke-color', '#f59e0b');
1060
+ } else if (pct >= 100) {
1061
+ bar.setAttribute('status', 'completed');
1062
+ bar.setAttribute('stroke-color', '#22c55e');
1063
+ } else if (pct > 0) {
1064
+ bar.setAttribute('status', 'running');
1065
+ bar.setAttribute('stroke-color', '#3b82f6');
1066
+ } else {
1067
+ bar.removeAttribute('status');
1068
+ bar.setAttribute('stroke-color', '#94a3b8');
1069
+ }
1070
+ }
1071
+
1072
+ slider.addEventListener('input', e => {
1073
+ interrupted = false;
1074
+ applyState(+e.target.value, false);
1075
+ });
1076
+ document.getElementById('sb-btn-interrupt').addEventListener('click', () => {
1077
+ interrupted = true;
1078
+ applyState(+slider.value, true);
1079
+ });
1080
+ document.getElementById('sb-btn-reset').addEventListener('click', () => {
1081
+ interrupted = false;
1082
+ slider.value = 0;
1083
+ applyState(0, false);
1084
+
1085
+ // Reset height and position
1086
+ heightSlider.value = 8;
1087
+ heightValEl.textContent = 8;
1088
+ bar.setAttribute('stroke-width', 8);
1089
+ bar.removeAttribute('status-bar-position');
1090
+
1091
+ // Update position toggle buttons styles
1092
+ ['inside', 'top'].forEach(p => {
1093
+ const btn = document.getElementById(`sb-pos-${p}`);
1094
+ const active = p === 'inside';
1095
+ btn.style.borderColor = active ? '#3b82f6' : '#e2e8f0';
1096
+ btn.style.background = active ? '#eff6ff' : '#f8fafc';
1097
+ btn.style.color = active ? '#2563eb' : '#475569';
1098
+ });
1099
+ });
1100
+
1101
+ // Alignment toggle buttons
1102
+ ['left', 'center', 'right'].forEach(align => {
1103
+ document.getElementById(`sb-align-${align}`).addEventListener('click', () => {
1104
+ bar.setAttribute('status-bar-align', align);
1105
+ ['left', 'center', 'right'].forEach(a => {
1106
+ const btn = document.getElementById(`sb-align-${a}`);
1107
+ const active = a === align;
1108
+ btn.style.borderColor = active ? '#3b82f6' : '#e2e8f0';
1109
+ btn.style.background = active ? '#eff6ff' : '#f8fafc';
1110
+ btn.style.color = active ? '#2563eb' : '#475569';
1111
+ });
1112
+ });
1113
+ });
1114
+
1115
+ // Position toggle buttons
1116
+ ['inside', 'top'].forEach(pos => {
1117
+ document.getElementById(`sb-pos-${pos}`).addEventListener('click', () => {
1118
+ bar.setAttribute('status-bar-position', pos);
1119
+ ['inside', 'top'].forEach(p => {
1120
+ const btn = document.getElementById(`sb-pos-${p}`);
1121
+ const active = p === pos;
1122
+ btn.style.borderColor = active ? '#3b82f6' : '#e2e8f0';
1123
+ btn.style.background = active ? '#eff6ff' : '#f8fafc';
1124
+ btn.style.color = active ? '#2563eb' : '#475569';
1125
+ });
1126
+ });
1127
+ });
1128
+
1129
+ // Height slider
1130
+ heightSlider.addEventListener('input', e => {
1131
+ const val = e.target.value;
1132
+ heightValEl.textContent = val;
1133
+ bar.setAttribute('stroke-width', val);
1134
+ });
1135
+
1136
+ // Custom label inputs — update status-labels attribute live
1137
+ function syncLabels() {
1138
+ const labels = {};
1139
+ ['notStarted', 'running', 'interrupted', 'completed'].forEach(key => {
1140
+ const val = document.getElementById(`sb-lbl-${key}`)?.value.trim();
1141
+ if (val) labels[key] = val;
1142
+ });
1143
+ if (Object.keys(labels).length) {
1144
+ bar.setAttribute('status-labels', JSON.stringify(labels));
1145
+ } else {
1146
+ bar.removeAttribute('status-labels');
1147
+ }
1148
+ }
1149
+ ['notStarted', 'running', 'interrupted', 'completed'].forEach(key => {
1150
+ document.getElementById(`sb-lbl-${key}`)?.addEventListener('input', syncLabels);
1151
+ });
1152
+ };
1153
+
461
1154
  showProgressPlayground();
462
1155
  }