@nuraly/lumenui 0.1.0 → 0.2.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 (312) hide show
  1. package/dist/nuralyui.bundle.js +23024 -17355
  2. package/dist/nuralyui.bundle.js.gz +0 -0
  3. package/dist/src/components/alert/alert.component.d.ts +8 -5
  4. package/dist/src/components/alert/alert.component.js +24 -20
  5. package/dist/src/components/alert/alert.style.d.ts +0 -7
  6. package/dist/src/components/alert/alert.style.js +48 -90
  7. package/dist/src/components/alert/bundle.js +82 -108
  8. package/dist/src/components/alert/bundle.js.gz +0 -0
  9. package/dist/src/components/badge/badge.component.d.ts +9 -8
  10. package/dist/src/components/badge/badge.component.js +17 -14
  11. package/dist/src/components/badge/badge.style.d.ts +0 -7
  12. package/dist/src/components/badge/badge.style.js +49 -107
  13. package/dist/src/components/badge/bundle.js +81 -119
  14. package/dist/src/components/badge/bundle.js.gz +0 -0
  15. package/dist/src/components/breadcrumb/breadcrumb.component.d.ts +8 -10
  16. package/dist/src/components/breadcrumb/breadcrumb.component.js +16 -15
  17. package/dist/src/components/breadcrumb/breadcrumb.style.d.ts +0 -7
  18. package/dist/src/components/breadcrumb/breadcrumb.style.js +42 -60
  19. package/dist/src/components/breadcrumb/bundle.js +96 -93
  20. package/dist/src/components/breadcrumb/bundle.js.gz +0 -0
  21. package/dist/src/components/button/bundle.js +221 -470
  22. package/dist/src/components/button/bundle.js.gz +0 -0
  23. package/dist/src/components/button/button.component.d.ts +2 -1
  24. package/dist/src/components/button/button.component.js +6 -6
  25. package/dist/src/components/button/button.style.d.ts +0 -7
  26. package/dist/src/components/button/button.style.js +167 -433
  27. package/dist/src/components/canvas/base-canvas.component.d.ts +2 -1
  28. package/dist/src/components/canvas/base-canvas.component.js +1 -0
  29. package/dist/src/components/canvas/bundle.js +16919 -9595
  30. package/dist/src/components/canvas/bundle.js.gz +0 -0
  31. package/dist/src/components/canvas/canvas.constants.d.ts +1 -1
  32. package/dist/src/components/canvas/canvas.constants.js +1 -1
  33. package/dist/src/components/canvas/chatbot-panel.style.js +31 -31
  34. package/dist/src/components/canvas/index.d.ts +2 -0
  35. package/dist/src/components/canvas/index.js +3 -0
  36. package/dist/src/components/canvas/whiteboard-canvas.component.d.ts +3 -1
  37. package/dist/src/components/canvas/whiteboard-canvas.component.js +19 -1
  38. package/dist/src/components/canvas/whiteboard-canvas.style.js +159 -138
  39. package/dist/src/components/canvas/whiteboard-node.component.d.ts +2 -1
  40. package/dist/src/components/canvas/whiteboard-node.component.js +2 -1
  41. package/dist/src/components/canvas/whiteboard-node.style.js +44 -44
  42. package/dist/src/components/canvas/workflow-canvas-only.d.ts +4 -0
  43. package/dist/src/components/canvas/workflow-canvas-only.js +5 -0
  44. package/dist/src/components/canvas/workflow-canvas.component.d.ts +3 -1
  45. package/dist/src/components/canvas/workflow-canvas.component.js +24 -2
  46. package/dist/src/components/canvas/workflow-canvas.style.js +776 -648
  47. package/dist/src/components/canvas/workflow-canvas.types.d.ts +113 -4
  48. package/dist/src/components/canvas/workflow-canvas.types.js +646 -3
  49. package/dist/src/components/canvas/workflow-node.component.d.ts +3 -2
  50. package/dist/src/components/canvas/workflow-node.component.js +5 -5
  51. package/dist/src/components/canvas/workflow-node.style.js +183 -181
  52. package/dist/src/components/card/bundle.js +43 -35
  53. package/dist/src/components/card/bundle.js.gz +0 -0
  54. package/dist/src/components/card/card.component.d.ts +6 -1
  55. package/dist/src/components/card/card.component.js +8 -2
  56. package/dist/src/components/card/card.style.js +26 -30
  57. package/dist/src/components/carousel/bundle.js +8 -8
  58. package/dist/src/components/carousel/bundle.js.gz +0 -0
  59. package/dist/src/components/carousel/carousel.component.d.ts +12 -0
  60. package/dist/src/components/carousel/carousel.component.js +16 -4
  61. package/dist/src/components/chatbot/bundle.js +422 -406
  62. package/dist/src/components/chatbot/bundle.js.gz +0 -0
  63. package/dist/src/components/chatbot/chatbot.component.d.ts +2 -1
  64. package/dist/src/components/chatbot/chatbot.component.js +1 -0
  65. package/dist/src/components/chatbot/chatbot.style.js +277 -277
  66. package/dist/src/components/checkbox/bundle.js +86 -245
  67. package/dist/src/components/checkbox/bundle.js.gz +0 -0
  68. package/dist/src/components/checkbox/checkbox.component.d.ts +5 -2
  69. package/dist/src/components/checkbox/checkbox.component.js +11 -13
  70. package/dist/src/components/checkbox/checkbox.style.js +56 -231
  71. package/dist/src/components/code-editor/bundle.js +151 -25
  72. package/dist/src/components/code-editor/bundle.js.gz +0 -0
  73. package/dist/src/components/code-editor/code-editor.component.d.ts +18 -56
  74. package/dist/src/components/code-editor/code-editor.component.js +141 -394
  75. package/dist/src/components/code-editor/code-editor.style.js +139 -15
  76. package/dist/src/components/collapse/bundle.js +97 -84
  77. package/dist/src/components/collapse/bundle.js.gz +0 -0
  78. package/dist/src/components/collapse/collapse.component.d.ts +7 -1
  79. package/dist/src/components/collapse/collapse.component.js +11 -2
  80. package/dist/src/components/collapse/collapse.style.js +60 -60
  81. package/dist/src/components/colorpicker/bundle.js +85 -48
  82. package/dist/src/components/colorpicker/bundle.js.gz +0 -0
  83. package/dist/src/components/colorpicker/color-holder.component.d.ts +2 -4
  84. package/dist/src/components/colorpicker/color-holder.component.js +5 -6
  85. package/dist/src/components/colorpicker/color-holder.style.js +11 -11
  86. package/dist/src/components/colorpicker/color-picker.component.d.ts +2 -1
  87. package/dist/src/components/colorpicker/color-picker.component.js +1 -0
  88. package/dist/src/components/colorpicker/color-picker.style.js +12 -12
  89. package/dist/src/components/colorpicker/default-color-sets.component.d.ts +2 -2
  90. package/dist/src/components/colorpicker/default-color-sets.component.js +4 -3
  91. package/dist/src/components/colorpicker/default-color-sets.style.js +5 -5
  92. package/dist/src/components/container/bundle.js +24 -14
  93. package/dist/src/components/container/bundle.js.gz +0 -0
  94. package/dist/src/components/container/container.component.d.ts +4 -1
  95. package/dist/src/components/container/container.component.js +7 -5
  96. package/dist/src/components/container/container.style.js +9 -9
  97. package/dist/src/components/datepicker/bundle.js +193 -177
  98. package/dist/src/components/datepicker/bundle.js.gz +0 -0
  99. package/dist/src/components/datepicker/datepicker.component.d.ts +2 -1
  100. package/dist/src/components/datepicker/datepicker.component.js +1 -0
  101. package/dist/src/components/datepicker/datepicker.style.js +65 -65
  102. package/dist/src/components/datepicker/datepicker.style.variables.js +91 -91
  103. package/dist/src/components/db-connection-select/bundle.js +7 -6
  104. package/dist/src/components/db-connection-select/bundle.js.gz +0 -0
  105. package/dist/src/components/db-connection-select/db-connection-select.component.d.ts +3 -0
  106. package/dist/src/components/db-connection-select/db-connection-select.component.js +4 -0
  107. package/dist/src/components/divider/bundle.js +61 -35
  108. package/dist/src/components/divider/bundle.js.gz +0 -0
  109. package/dist/src/components/divider/divider.component.d.ts +4 -6
  110. package/dist/src/components/divider/divider.component.js +10 -14
  111. package/dist/src/components/divider/divider.style.js +41 -31
  112. package/dist/src/components/document/bundle.js +50 -48
  113. package/dist/src/components/document/bundle.js.gz +0 -0
  114. package/dist/src/components/document/document.component.d.ts +12 -1
  115. package/dist/src/components/document/document.component.js +18 -6
  116. package/dist/src/components/document/document.style.js +21 -36
  117. package/dist/src/components/dropdown/bundle.js +117 -101
  118. package/dist/src/components/dropdown/bundle.js.gz +0 -0
  119. package/dist/src/components/dropdown/dropdown.component.d.ts +2 -1
  120. package/dist/src/components/dropdown/dropdown.component.js +1 -0
  121. package/dist/src/components/dropdown/dropdown.style.js +68 -68
  122. package/dist/src/components/file-upload/bundle.js +82 -76
  123. package/dist/src/components/file-upload/bundle.js.gz +0 -0
  124. package/dist/src/components/file-upload/file-upload.component.d.ts +2 -1
  125. package/dist/src/components/file-upload/file-upload.component.js +1 -0
  126. package/dist/src/components/file-upload/styles.js +59 -59
  127. package/dist/src/components/flex/bundle.js +18 -8
  128. package/dist/src/components/flex/bundle.js.gz +0 -0
  129. package/dist/src/components/flex/flex.component.d.ts +4 -1
  130. package/dist/src/components/flex/flex.component.js +7 -4
  131. package/dist/src/components/flex/flex.style.js +2 -2
  132. package/dist/src/components/form/bundle.js +22 -10
  133. package/dist/src/components/form/bundle.js.gz +0 -0
  134. package/dist/src/components/form/form.component.d.ts +4 -1
  135. package/dist/src/components/form/form.component.js +5 -1
  136. package/dist/src/components/form/form.style.js +2 -2
  137. package/dist/src/components/grid/bundle.js +26 -14
  138. package/dist/src/components/grid/bundle.js.gz +0 -0
  139. package/dist/src/components/grid/col.component.d.ts +4 -1
  140. package/dist/src/components/grid/col.component.js +4 -1
  141. package/dist/src/components/grid/col.style.js +2 -2
  142. package/dist/src/components/grid/row.component.d.ts +4 -1
  143. package/dist/src/components/grid/row.component.js +4 -1
  144. package/dist/src/components/grid/row.style.js +2 -2
  145. package/dist/src/components/icon/bundle.js +78 -252
  146. package/dist/src/components/icon/bundle.js.gz +0 -0
  147. package/dist/src/components/icon/icon-paths.d.ts +2 -0
  148. package/dist/src/components/icon/icon-paths.js +141 -0
  149. package/dist/src/components/icon/icon.component.d.ts +10 -12
  150. package/dist/src/components/icon/icon.component.js +42 -93
  151. package/dist/src/components/icon/icon.style.js +42 -130
  152. package/dist/src/components/icon/icon.variables.js +9 -9
  153. package/dist/src/components/iconpicker/bundle.js +859 -1511
  154. package/dist/src/components/iconpicker/bundle.js.gz +0 -0
  155. package/dist/src/components/iconpicker/icon-picker.component.d.ts +2 -1
  156. package/dist/src/components/iconpicker/icon-picker.component.js +1 -0
  157. package/dist/src/components/iconpicker/icon-picker.style.js +13 -13
  158. package/dist/src/components/image/bundle.js +43 -33
  159. package/dist/src/components/image/bundle.js.gz +0 -0
  160. package/dist/src/components/image/image.component.d.ts +10 -1
  161. package/dist/src/components/image/image.component.js +13 -3
  162. package/dist/src/components/image/image.style.js +19 -26
  163. package/dist/src/components/input/bundle.js +420 -644
  164. package/dist/src/components/input/bundle.js.gz +0 -0
  165. package/dist/src/components/input/input.component.d.ts +16 -3
  166. package/dist/src/components/input/input.component.js +43 -27
  167. package/dist/src/components/input/input.style.d.ts +1 -1
  168. package/dist/src/components/input/input.style.js +331 -634
  169. package/dist/src/components/kv-secret-select/bundle.js +2 -1
  170. package/dist/src/components/kv-secret-select/bundle.js.gz +0 -0
  171. package/dist/src/components/kv-secret-select/kv-secret-select.component.d.ts +3 -0
  172. package/dist/src/components/kv-secret-select/kv-secret-select.component.js +4 -0
  173. package/dist/src/components/label/bundle.js +37 -60
  174. package/dist/src/components/label/bundle.js.gz +0 -0
  175. package/dist/src/components/label/label.component.d.ts +8 -4
  176. package/dist/src/components/label/label.component.js +9 -14
  177. package/dist/src/components/label/label.style.js +17 -25
  178. package/dist/src/components/label/label.style.variables.js +18 -18
  179. package/dist/src/components/layout/bundle.js +86 -70
  180. package/dist/src/components/layout/bundle.js.gz +0 -0
  181. package/dist/src/components/layout/content.component.d.ts +2 -1
  182. package/dist/src/components/layout/content.component.js +2 -1
  183. package/dist/src/components/layout/content.style.js +3 -3
  184. package/dist/src/components/layout/footer.component.d.ts +2 -1
  185. package/dist/src/components/layout/footer.component.js +3 -2
  186. package/dist/src/components/layout/footer.style.js +7 -7
  187. package/dist/src/components/layout/header.component.d.ts +2 -1
  188. package/dist/src/components/layout/header.component.js +3 -2
  189. package/dist/src/components/layout/header.style.js +7 -7
  190. package/dist/src/components/layout/layout.component.d.ts +4 -7
  191. package/dist/src/components/layout/layout.component.js +9 -22
  192. package/dist/src/components/layout/layout.style.js +1 -1
  193. package/dist/src/components/layout/sider.component.d.ts +3 -1
  194. package/dist/src/components/layout/sider.component.js +3 -1
  195. package/dist/src/components/layout/sider.style.js +29 -29
  196. package/dist/src/components/menu/bundle.js +135 -125
  197. package/dist/src/components/menu/bundle.js.gz +0 -0
  198. package/dist/src/components/menu/menu.component.d.ts +2 -1
  199. package/dist/src/components/menu/menu.component.js +1 -0
  200. package/dist/src/components/menu/menu.style.js +87 -87
  201. package/dist/src/components/modal/bundle.js +105 -96
  202. package/dist/src/components/modal/bundle.js.gz +0 -0
  203. package/dist/src/components/modal/modal.component.d.ts +2 -1
  204. package/dist/src/components/modal/modal.component.js +1 -0
  205. package/dist/src/components/modal/modal.style.js +69 -71
  206. package/dist/src/components/panel/bundle.js +190 -391
  207. package/dist/src/components/panel/bundle.js.gz +0 -0
  208. package/dist/src/components/panel/panel.component.d.ts +2 -1
  209. package/dist/src/components/panel/panel.component.js +1 -0
  210. package/dist/src/components/panel/panel.style.js +65 -65
  211. package/dist/src/components/popconfirm/bundle.js +107 -93
  212. package/dist/src/components/popconfirm/bundle.js.gz +0 -0
  213. package/dist/src/components/popconfirm/popconfirm-manager.component.d.ts +2 -1
  214. package/dist/src/components/popconfirm/popconfirm-manager.component.js +1 -0
  215. package/dist/src/components/popconfirm/popconfirm-manager.style.js +16 -16
  216. package/dist/src/components/popconfirm/popconfirm.component.d.ts +2 -1
  217. package/dist/src/components/popconfirm/popconfirm.component.js +9 -5
  218. package/dist/src/components/popconfirm/popconfirm.style.js +43 -43
  219. package/dist/src/components/radio/bundle.js +56 -86
  220. package/dist/src/components/radio/bundle.js.gz +0 -0
  221. package/dist/src/components/radio/radio.component.d.ts +8 -2
  222. package/dist/src/components/radio/radio.component.js +17 -9
  223. package/dist/src/components/radio/radio.style.js +30 -77
  224. package/dist/src/components/radio-group/bundle.js +125 -89
  225. package/dist/src/components/radio-group/bundle.js.gz +0 -0
  226. package/dist/src/components/radio-group/radio-group.component.d.ts +5 -1
  227. package/dist/src/components/radio-group/radio-group.component.js +18 -10
  228. package/dist/src/components/radio-group/radio-group.style.js +44 -44
  229. package/dist/src/components/select/bundle.js +260 -367
  230. package/dist/src/components/select/bundle.js.gz +0 -0
  231. package/dist/src/components/select/select.component.d.ts +12 -17
  232. package/dist/src/components/select/select.component.js +35 -35
  233. package/dist/src/components/select/select.style.js +184 -324
  234. package/dist/src/components/skeleton/bundle.js +82 -162
  235. package/dist/src/components/skeleton/bundle.js.gz +0 -0
  236. package/dist/src/components/skeleton/skeleton.component.d.ts +10 -5
  237. package/dist/src/components/skeleton/skeleton.component.js +20 -7
  238. package/dist/src/components/skeleton/skeleton.style.js +34 -133
  239. package/dist/src/components/slider-input/bundle.js +89 -88
  240. package/dist/src/components/slider-input/bundle.js.gz +0 -0
  241. package/dist/src/components/slider-input/slider-input.component.d.ts +11 -0
  242. package/dist/src/components/slider-input/slider-input.component.js +20 -8
  243. package/dist/src/components/slider-input/slider-input.style.js +47 -47
  244. package/dist/src/components/slider-input/slider-input.style.variables.js +32 -32
  245. package/dist/src/components/table/bundle.js +149 -128
  246. package/dist/src/components/table/bundle.js.gz +0 -0
  247. package/dist/src/components/table/table.component.d.ts +2 -1
  248. package/dist/src/components/table/table.component.js +1 -0
  249. package/dist/src/components/table/table.style.js +79 -79
  250. package/dist/src/components/tabs/bundle.js +462 -663
  251. package/dist/src/components/tabs/bundle.js.gz +0 -0
  252. package/dist/src/components/tabs/tabs.component.d.ts +6 -1
  253. package/dist/src/components/tabs/tabs.component.js +8 -1
  254. package/dist/src/components/tabs/tabs.style.js +200 -201
  255. package/dist/src/components/tag/bundle.js +44 -36
  256. package/dist/src/components/tag/bundle.js.gz +0 -0
  257. package/dist/src/components/tag/tag.component.d.ts +7 -6
  258. package/dist/src/components/tag/tag.component.js +10 -19
  259. package/dist/src/components/tag/tag.style.js +20 -24
  260. package/dist/src/components/textarea/bundle.js +131 -94
  261. package/dist/src/components/textarea/bundle.js.gz +0 -0
  262. package/dist/src/components/textarea/textarea.component.d.ts +7 -1
  263. package/dist/src/components/textarea/textarea.component.js +10 -3
  264. package/dist/src/components/textarea/textarea.style.d.ts +1 -13
  265. package/dist/src/components/textarea/textarea.style.js +79 -91
  266. package/dist/src/components/timeline/bundle.js +71 -134
  267. package/dist/src/components/timeline/bundle.js.gz +0 -0
  268. package/dist/src/components/timeline/timeline.component.d.ts +9 -6
  269. package/dist/src/components/timeline/timeline.component.js +16 -13
  270. package/dist/src/components/timeline/timeline.style.d.ts +0 -7
  271. package/dist/src/components/timeline/timeline.style.js +41 -122
  272. package/dist/src/components/timepicker/bundle.js +196 -166
  273. package/dist/src/components/timepicker/bundle.js.gz +0 -0
  274. package/dist/src/components/timepicker/timepicker.component.d.ts +2 -1
  275. package/dist/src/components/timepicker/timepicker.component.js +1 -0
  276. package/dist/src/components/timepicker/timepicker.style.js +42 -42
  277. package/dist/src/components/timepicker/timepicker.style.variables.js +91 -91
  278. package/dist/src/components/toast/bundle.js +97 -81
  279. package/dist/src/components/toast/bundle.js.gz +0 -0
  280. package/dist/src/components/toast/toast.component.d.ts +2 -1
  281. package/dist/src/components/toast/toast.component.js +1 -0
  282. package/dist/src/components/toast/toast.style.js +62 -62
  283. package/dist/src/components/tooltips/bundle.js +10 -10
  284. package/dist/src/components/tooltips/bundle.js.gz +0 -0
  285. package/dist/src/components/tooltips/tooltips.component.d.ts +8 -0
  286. package/dist/src/components/tooltips/tooltips.component.js +9 -1
  287. package/dist/src/components/tooltips/tooltips.style.js +6 -6
  288. package/dist/src/components/video/bundle.js +47 -36
  289. package/dist/src/components/video/bundle.js.gz +0 -0
  290. package/dist/src/components/video/video.component.d.ts +12 -1
  291. package/dist/src/components/video/video.component.js +18 -6
  292. package/dist/src/components/video/video.style.js +18 -24
  293. package/package.json +25 -12
  294. package/packages/common/dist/VERSIONS.md +2 -2
  295. package/packages/common/dist/shared/base-mixin.d.ts +21 -19
  296. package/packages/common/dist/shared/base-mixin.d.ts.map +1 -1
  297. package/packages/common/dist/shared/base-mixin.js +102 -18
  298. package/packages/common/dist/shared/base-mixin.js.map +1 -1
  299. package/packages/common/dist/shared/index.d.ts +1 -0
  300. package/packages/common/dist/shared/index.d.ts.map +1 -1
  301. package/packages/common/dist/shared/index.js +2 -0
  302. package/packages/common/dist/shared/index.js.map +1 -1
  303. package/packages/common/dist/shared/style-injector.d.ts +11 -0
  304. package/packages/common/dist/shared/style-injector.d.ts.map +1 -0
  305. package/packages/common/dist/shared/style-injector.js +53 -0
  306. package/packages/common/dist/shared/style-injector.js.map +1 -0
  307. package/packages/common/dist/shared/theme-mixin.d.ts +2 -24
  308. package/packages/common/dist/shared/theme-mixin.d.ts.map +1 -1
  309. package/packages/common/dist/shared/theme-mixin.js +5 -38
  310. package/packages/common/dist/shared/theme-mixin.js.map +1 -1
  311. package/packages/themes/dist/default.css +0 -10
  312. package/packages/themes/dist/package.json +1 -1
@@ -1,8 +1,19 @@
1
1
  import { LitElement } from "lit";
2
2
  import { VideoPreload } from "./video.types.js";
3
- declare const NrVideoElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & typeof LitElement;
3
+ declare const NrVideoElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & (new (...args: any[]) => import("packages/common/src/shared/base-mixin.js").LightDomContent) & typeof LitElement;
4
+ /**
5
+ * Video player component with poster, autoplay, loop, and fullscreen preview support.
6
+ *
7
+ * @csspart container - The root wrapper div of the video player
8
+ * @csspart video - The native video element
9
+ * @csspart preview-button - The button that opens the fullscreen preview modal
10
+ * @csspart preview-modal - The fullscreen preview overlay
11
+ * @csspart preview-close - The close button inside the preview modal
12
+ * @csspart error-message - The error state container shown when the video fails to load
13
+ */
4
14
  export declare class NrVideoElement extends NrVideoElement_base {
5
15
  static styles: import("lit").CSSResult;
16
+ static useShadowDom: boolean;
6
17
  src: string;
7
18
  poster?: string;
8
19
  width: string;
@@ -10,6 +10,16 @@ import { classMap } from "lit/directives/class-map.js";
10
10
  import { styleMap } from "lit/directives/style-map.js";
11
11
  import { NuralyUIBaseMixin } from '@nuralyui/common/mixins';
12
12
  import styles from "./video.style.js";
13
+ /**
14
+ * Video player component with poster, autoplay, loop, and fullscreen preview support.
15
+ *
16
+ * @csspart container - The root wrapper div of the video player
17
+ * @csspart video - The native video element
18
+ * @csspart preview-button - The button that opens the fullscreen preview modal
19
+ * @csspart preview-modal - The fullscreen preview overlay
20
+ * @csspart preview-close - The close button inside the preview modal
21
+ * @csspart error-message - The error state container shown when the video fails to load
22
+ */
13
23
  let NrVideoElement = class NrVideoElement extends NuralyUIBaseMixin(LitElement) {
14
24
  constructor() {
15
25
  super(...arguments);
@@ -84,8 +94,8 @@ let NrVideoElement = class NrVideoElement extends NuralyUIBaseMixin(LitElement)
84
94
  };
85
95
  if (this.hasError) {
86
96
  return html `
87
- <div class=${classMap(containerClasses)}>
88
- <div class="error-message">
97
+ <div part="container" class=${classMap(containerClasses)}>
98
+ <div part="error-message" class="error-message">
89
99
  <img class="error-icon" src=${this.defaultFallback} alt="Video error" />
90
100
  <p>Unable to load video</p>
91
101
  </div>
@@ -93,8 +103,9 @@ let NrVideoElement = class NrVideoElement extends NuralyUIBaseMixin(LitElement)
93
103
  `;
94
104
  }
95
105
  return html `
96
- <div class=${classMap(containerClasses)}>
106
+ <div part="container" class=${classMap(containerClasses)}>
97
107
  <video
108
+ part="video"
98
109
  style=${styleMap(videoStyles)}
99
110
  ?autoplay=${this.autoplay}
100
111
  ?loop=${this.loop}
@@ -111,7 +122,7 @@ let NrVideoElement = class NrVideoElement extends NuralyUIBaseMixin(LitElement)
111
122
  Your browser does not support the video tag.
112
123
  </video>
113
124
  ${this.previewable ? html `
114
- <button class="preview-button" @click=${this.showPreviewModal}>
125
+ <button part="preview-button" class="preview-button" @click=${this.showPreviewModal}>
115
126
  <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
116
127
  <path d="M5.5 5.5A.5.5 0 0 1 6 6v3a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v3a.5.5 0 0 0 1 0V6z"/>
117
128
  <path d="M2 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2zM1 2a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2z"/>
@@ -120,8 +131,8 @@ let NrVideoElement = class NrVideoElement extends NuralyUIBaseMixin(LitElement)
120
131
  </button>
121
132
  ` : ''}
122
133
  ${this.showPreview ? html `
123
- <div class="preview-modal" @click=${this.closePreviewModal}>
124
- <button class="preview-close" @click=${this.closePreviewModal} aria-label="Close preview">×</button>
134
+ <div part="preview-modal" class="preview-modal" @click=${this.closePreviewModal}>
135
+ <button part="preview-close" class="preview-close" @click=${this.closePreviewModal} aria-label="Close preview">×</button>
125
136
  <video
126
137
  ?autoplay=${true}
127
138
  ?loop=${this.loop}
@@ -138,6 +149,7 @@ let NrVideoElement = class NrVideoElement extends NuralyUIBaseMixin(LitElement)
138
149
  }
139
150
  };
140
151
  NrVideoElement.styles = styles;
152
+ NrVideoElement.useShadowDom = true;
141
153
  __decorate([
142
154
  property({ type: String })
143
155
  ], NrVideoElement.prototype, "src", void 0);
@@ -1,4 +1,4 @@
1
- import { css } from "lit";
1
+ import { css } from 'lit';
2
2
  export default css `
3
3
  :host {
4
4
  display: inline-block;
@@ -13,14 +13,14 @@ export default css `
13
13
  position: relative;
14
14
  width: 100%;
15
15
  height: 100%;
16
- background-color: var(--nuraly-video-bg, #000);
16
+ background-color: #000;
17
17
  }
18
18
 
19
19
  video {
20
20
  display: block;
21
21
  width: 100%;
22
22
  height: 100%;
23
- border-radius: var(--nuraly-video-border-radius, 4px);
23
+ border-radius: 4px;
24
24
  }
25
25
 
26
26
  .video--error {
@@ -28,8 +28,8 @@ export default css `
28
28
  align-items: center;
29
29
  justify-content: center;
30
30
  min-height: 200px;
31
- background-color: var(--nuraly-video-error-bg, #f5f5f5);
32
- color: var(--nuraly-video-error-color, #999);
31
+ background-color: var(--nr-bg-hover, #f4f4f4);
32
+ color: var(--nr-text-secondary, #525252);
33
33
  }
34
34
 
35
35
  .error-message {
@@ -44,7 +44,6 @@ export default css `
44
44
  opacity: 0.5;
45
45
  }
46
46
 
47
- /* Preview/Fullscreen Modal */
48
47
  .preview-modal {
49
48
  position: fixed;
50
49
  top: 0;
@@ -54,15 +53,15 @@ export default css `
54
53
  display: flex;
55
54
  align-items: center;
56
55
  justify-content: center;
57
- background-color: var(--nuraly-video-preview-bg, rgba(0, 0, 0, 0.95));
58
- z-index: var(--nuraly-video-preview-zindex, 1000);
59
- animation: fadeIn 0.3s ease;
56
+ background-color: rgba(0, 0, 0, 0.95);
57
+ z-index: 1000;
58
+ animation: nr-video-fadeIn 0.3s ease;
60
59
  }
61
60
 
62
61
  .preview-modal video {
63
62
  max-width: 90%;
64
63
  max-height: 90%;
65
- border-radius: var(--nuraly-video-preview-border-radius, 4px);
64
+ border-radius: 4px;
66
65
  }
67
66
 
68
67
  .preview-close {
@@ -71,10 +70,10 @@ export default css `
71
70
  right: 20px;
72
71
  width: 40px;
73
72
  height: 40px;
74
- background: var(--nuraly-video-preview-close-bg, rgba(255, 255, 255, 0.2));
73
+ background: rgba(255, 255, 255, 0.2);
75
74
  border: none;
76
75
  border-radius: 50%;
77
- color: var(--nuraly-video-preview-close-color, white);
76
+ color: white;
78
77
  font-size: 24px;
79
78
  line-height: 1;
80
79
  cursor: pointer;
@@ -86,19 +85,19 @@ export default css `
86
85
  }
87
86
 
88
87
  .preview-close:hover {
89
- background: var(--nuraly-video-preview-close-hover-bg, rgba(255, 255, 255, 0.3));
88
+ background: rgba(255, 255, 255, 0.3);
90
89
  }
91
90
 
92
91
  .preview-button {
93
92
  position: absolute;
94
93
  top: 10px;
95
94
  right: 10px;
96
- background-color: var(--nuraly-video-fullscreen-btn-bg, rgba(0, 0, 0, 0.5));
95
+ background-color: rgba(0, 0, 0, 0.5);
97
96
  border: none;
98
97
  border-radius: 4px;
99
98
  padding: 8px 12px;
100
99
  cursor: pointer;
101
- color: var(--nuraly-video-fullscreen-btn-color, white);
100
+ color: white;
102
101
  font-size: 12px;
103
102
  display: flex;
104
103
  align-items: center;
@@ -108,17 +107,12 @@ export default css `
108
107
  }
109
108
 
110
109
  .preview-button:hover {
111
- background-color: var(--nuraly-video-fullscreen-btn-hover-bg, rgba(0, 0, 0, 0.7));
110
+ background-color: rgba(0, 0, 0, 0.7);
112
111
  }
113
112
 
114
- /* Animations */
115
- @keyframes fadeIn {
116
- from {
117
- opacity: 0;
118
- }
119
- to {
120
- opacity: 1;
121
- }
113
+ @keyframes nr-video-fadeIn {
114
+ from { opacity: 0; }
115
+ to { opacity: 1; }
122
116
  }
123
117
  `;
124
118
  //# sourceMappingURL=video.style.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuraly/lumenui",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "A comprehensive collection of enterprise-class web components built with Lit and TypeScript",
5
5
  "type": "module",
6
6
  "main": "dist/nuralyui.bundle.js",
@@ -134,7 +134,6 @@
134
134
  "author": "Laabidi Aymen",
135
135
  "license": "BSD-3-Clause",
136
136
  "dependencies": {
137
- "@nuralyui/common": "0.1.4",
138
137
  "@fortawesome/fontawesome-svg-core": "^6.4.2",
139
138
  "@fortawesome/free-regular-svg-icons": "^6.4.2",
140
139
  "@fortawesome/free-solid-svg-icons": "^6.4.2",
@@ -144,27 +143,41 @@
144
143
  "@lit/localize": "^0.12.2",
145
144
  "@lit/reactive-element": "^2.1.1",
146
145
  "@nanostores/persistent": "^1.2.0",
146
+ "@nuralyui/common": "0.1.4",
147
+ "codejar": "^4.3.0",
147
148
  "dayjs": "^2.0.0-alpha.4",
149
+ "highlight.js": "^11.11.1",
148
150
  "lit": "^3.0.0",
149
- "lucide": "^0.552.0",
150
151
  "nanostores": "^0.11.4",
152
+ "mermaid": "^11.0.0",
151
153
  "vanilla-colorful": "^0.7.2"
152
154
  },
153
155
  "peerDependencies": {
156
+ "@types/react": "^18.0.0 || ^19.0.0",
154
157
  "monaco-editor": "^0.55.0",
155
158
  "monacopilot": "^1.2.0",
156
- "mermaid": "^11.0.0",
157
- "socket.io-client": "^4.0.0",
158
159
  "react": "^18.0.0 || ^19.0.0",
159
- "@types/react": "^18.0.0 || ^19.0.0"
160
+ "socket.io-client": "^4.0.0"
160
161
  },
161
162
  "peerDependenciesMeta": {
162
- "monaco-editor": { "optional": true },
163
- "monacopilot": { "optional": true },
164
- "mermaid": { "optional": true },
165
- "socket.io-client": { "optional": true },
166
- "react": { "optional": true },
167
- "@types/react": { "optional": true }
163
+ "monaco-editor": {
164
+ "optional": true
165
+ },
166
+ "monacopilot": {
167
+ "optional": true
168
+ },
169
+ "mermaid": {
170
+ "optional": true
171
+ },
172
+ "socket.io-client": {
173
+ "optional": true
174
+ },
175
+ "react": {
176
+ "optional": true
177
+ },
178
+ "@types/react": {
179
+ "optional": true
180
+ }
168
181
  },
169
182
  "devDependencies": {
170
183
  "@11ty/eleventy": "^1.0.1",
@@ -1,4 +1,4 @@
1
1
  # @nuralyui/common
2
2
 
3
- Version: 0.1.4
4
- Build Date: 2026-03-18
3
+ Version: 0.1.5
4
+ Build Date: 2026-03-31
@@ -8,35 +8,37 @@ import { ThemeAware } from './theme-mixin.js';
8
8
  import { DependencyAware } from './dependency-mixin.js';
9
9
  import { EventHandlerCapable } from './event-handler-mixin.js';
10
10
  /**
11
- * Base interface combining theme awareness, dependency validation, and event handling
11
+ * Interface for Light DOM content projection (replacement for Shadow DOM <slot>)
12
12
  */
13
- export interface NuralyUIBaseElement extends ThemeAware, DependencyAware, EventHandlerCapable {
13
+ export interface LightDomContent {
14
+ /** Default-slot children (nodes without a `slot` attribute) */
15
+ readonly lightChildren: Node[];
16
+ /** Named-slot children (elements with `slot="name"`) */
17
+ lightChildrenNamed(name: string): Element[];
18
+ }
19
+ /**
20
+ * Base interface combining theme awareness, dependency validation, event handling, and Light DOM content
21
+ */
22
+ export interface NuralyUIBaseElement extends ThemeAware, DependencyAware, EventHandlerCapable, LightDomContent {
14
23
  }
15
24
  type Constructor<T = {}> = new (...args: any[]) => T;
16
25
  /**
17
- * Global base mixin that combines ThemeAwareMixin and DependencyValidationMixin
18
- * This mixin provides a single entry point for all common functionality needed
19
- * by Nuraly UI components, reducing boilerplate code in individual components.
26
+ * Global base mixin that combines Light DOM, style injection, ThemeAwareMixin,
27
+ * DependencyValidationMixin, and EventHandlerMixin.
20
28
  *
21
- * @param superClass - The base class to extend (typically LitElement)
22
- * @returns Enhanced class with both theme management and dependency validation capabilities
29
+ * Uses **Light DOM** rendering so external CSS can reach component internals.
30
+ * Component styles are injected once per tag into `document.adoptedStyleSheets`.
23
31
  *
24
- * @example
25
- * ```typescript
26
- * @customElement('my-component')
27
- * export class MyComponent extends NuralyUIBaseMixin(LitElement) {
28
- * requiredComponents = ['nr-icon'];
32
+ * Instead of `<slot>`, use:
33
+ * - `this.lightChildren` for default slot content
34
+ * - `this.lightChildrenNamed('name')` for named slot content
29
35
  *
30
- * render() {
31
- * return html`<div data-theme="${this.currentTheme}">Content</div>`;
32
- * }
33
- * }
34
- * ```
36
+ * @param superClass - The base class to extend (typically LitElement)
35
37
  */
36
- export declare const NuralyUIBaseMixin: <T extends Constructor<LitElement>>(superClass: T) => (new (...args: any[]) => DependencyAware) & (new (...args: any[]) => ThemeAware) & (new (...args: any[]) => EventHandlerCapable) & T;
38
+ export declare const NuralyUIBaseMixin: <T extends Constructor<LitElement>>(superClass: T) => (new (...args: any[]) => DependencyAware) & (new (...args: any[]) => ThemeAware) & (new (...args: any[]) => EventHandlerCapable) & Constructor<LightDomContent> & T;
37
39
  /**
38
40
  * Alternative shorter name for convenience
39
41
  */
40
- export declare const BaseMixin: <T extends Constructor<LitElement>>(superClass: T) => (new (...args: any[]) => DependencyAware) & (new (...args: any[]) => ThemeAware) & (new (...args: any[]) => EventHandlerCapable) & T;
42
+ export declare const BaseMixin: <T extends Constructor<LitElement>>(superClass: T) => (new (...args: any[]) => DependencyAware) & (new (...args: any[]) => ThemeAware) & (new (...args: any[]) => EventHandlerCapable) & Constructor<LightDomContent> & T;
41
43
  export {};
42
44
  //# sourceMappingURL=base-mixin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-mixin.d.ts","sourceRoot":"","sources":["../../src/shared/base-mixin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAA6B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAqB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,UAAU,EAAE,eAAe,EAAE,mBAAmB;CAAG;AAEhG,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,yIAIjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GATY,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,yIASxC,CAAC"}
1
+ {"version":3,"file":"base-mixin.d.ts","sourceRoot":"","sources":["../../src/shared/base-mixin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AACjD,OAAO,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAA6B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAqB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IAC/B,wDAAwD;IACxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe;CAAG;AAEjH,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAwFrD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,wKAEjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAPY,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,wKAOxC,CAAC"}
@@ -6,33 +6,117 @@
6
6
  import { ThemeAwareMixin } from './theme-mixin.js';
7
7
  import { DependencyValidationMixin } from './dependency-mixin.js';
8
8
  import { EventHandlerMixin } from './event-handler-mixin.js';
9
+ import { injectStyles } from './style-injector.js';
9
10
  /**
10
- * Global base mixin that combines ThemeAwareMixin and DependencyValidationMixin
11
- * This mixin provides a single entry point for all common functionality needed
12
- * by Nuraly UI components, reducing boilerplate code in individual components.
11
+ * Mixin that switches components to Light DOM rendering, injects styles into
12
+ * document.adoptedStyleSheets, and provides Light DOM content projection
13
+ * (replacement for Shadow DOM <slot>).
13
14
  *
14
- * @param superClass - The base class to extend (typically LitElement)
15
- * @returns Enhanced class with both theme management and dependency validation capabilities
15
+ * Components that need Shadow DOM (canvas, modal, dropdown, etc.) declare
16
+ * `static useShadowDom = true` the mixin skips the Light DOM override
17
+ * and leaves Lit's default Shadow DOM behavior intact.
18
+ */
19
+ const LightDomMixin = (superClass) => {
20
+ class LightDomClass extends superClass {
21
+ constructor() {
22
+ super(...arguments);
23
+ /**
24
+ * Original children saved before Lit's first render.
25
+ * Use `lightChildren` / `lightChildrenNamed(name)` in templates
26
+ * instead of `<slot>` / `<slot name="...">`.
27
+ */
28
+ this.__lightDomChildren = null;
29
+ }
30
+ createRenderRoot() {
31
+ if (this.constructor.useShadowDom) {
32
+ return super.createRenderRoot();
33
+ }
34
+ return this;
35
+ }
36
+ connectedCallback() {
37
+ const isShadow = this.constructor.useShadowDom;
38
+ // Save and remove original children BEFORE super triggers first render.
39
+ // Only needed for Light DOM — Shadow DOM uses <slot> natively.
40
+ if (!isShadow && this.__lightDomChildren === null) {
41
+ this.__lightDomChildren = [];
42
+ while (this.firstChild) {
43
+ this.__lightDomChildren.push(this.removeChild(this.firstChild));
44
+ }
45
+ }
46
+ super.connectedCallback();
47
+ // Inject component styles into document.adoptedStyleSheets once per tag.
48
+ // Only needed for Light DOM — Shadow DOM scopes styles automatically.
49
+ if (!isShadow) {
50
+ const ctor = this.constructor;
51
+ const tag = this.tagName.toLowerCase();
52
+ const componentStyles = ctor.styles;
53
+ if (componentStyles) {
54
+ const cssText = flattenStyles(componentStyles);
55
+ if (cssText) {
56
+ injectStyles(tag, cssText, this);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Get default-slot children (nodes without a `slot` attribute).
63
+ * Use in templates: `html\`<span>\${this.lightChildren}</span>\``
64
+ */
65
+ get lightChildren() {
66
+ if (!this.__lightDomChildren)
67
+ return [];
68
+ return this.__lightDomChildren.filter(n => !(n instanceof Element && n.hasAttribute('slot')));
69
+ }
70
+ /**
71
+ * Get named-slot children (elements with `slot="name"`).
72
+ * Use in templates: `html\`<span>\${this.lightChildrenNamed('icon')}</span>\``
73
+ */
74
+ lightChildrenNamed(name) {
75
+ if (!this.__lightDomChildren)
76
+ return [];
77
+ return this.__lightDomChildren.filter((n) => n instanceof Element && n.getAttribute('slot') === name);
78
+ }
79
+ }
80
+ /**
81
+ * Set to `true` in subclasses to keep Shadow DOM rendering.
82
+ * Shadow DOM components use `<slot>` and `::part()` as usual.
83
+ */
84
+ LightDomClass.useShadowDom = false;
85
+ return LightDomClass;
86
+ };
87
+ /**
88
+ * Global base mixin that combines Light DOM, style injection, ThemeAwareMixin,
89
+ * DependencyValidationMixin, and EventHandlerMixin.
16
90
  *
17
- * @example
18
- * ```typescript
19
- * @customElement('my-component')
20
- * export class MyComponent extends NuralyUIBaseMixin(LitElement) {
21
- * requiredComponents = ['nr-icon'];
91
+ * Uses **Light DOM** rendering so external CSS can reach component internals.
92
+ * Component styles are injected once per tag into `document.adoptedStyleSheets`.
22
93
  *
23
- * render() {
24
- * return html`<div data-theme="${this.currentTheme}">Content</div>`;
25
- * }
26
- * }
27
- * ```
94
+ * Instead of `<slot>`, use:
95
+ * - `this.lightChildren` for default slot content
96
+ * - `this.lightChildrenNamed('name')` for named slot content
97
+ *
98
+ * @param superClass - The base class to extend (typically LitElement)
28
99
  */
29
100
  export const NuralyUIBaseMixin = (superClass) => {
30
- // Apply all base mixins in the correct order:
31
- // EventHandlerMixin first, then DependencyValidationMixin, then ThemeAwareMixin
32
- return DependencyValidationMixin(ThemeAwareMixin(EventHandlerMixin(superClass)));
101
+ return DependencyValidationMixin(ThemeAwareMixin(EventHandlerMixin(LightDomMixin(superClass))));
33
102
  };
34
103
  /**
35
104
  * Alternative shorter name for convenience
36
105
  */
37
106
  export const BaseMixin = NuralyUIBaseMixin;
107
+ /**
108
+ * Flatten Lit CSSResult / CSSResult[] into a single CSS string.
109
+ */
110
+ function flattenStyles(styles) {
111
+ if (Array.isArray(styles)) {
112
+ return styles.map(s => flattenStyles(s)).filter(Boolean).join('\n');
113
+ }
114
+ if (styles && typeof styles.cssText === 'string') {
115
+ return styles.cssText;
116
+ }
117
+ if (typeof styles === 'string') {
118
+ return styles;
119
+ }
120
+ return '';
121
+ }
38
122
  //# sourceMappingURL=base-mixin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-mixin.js","sourceRoot":"","sources":["../../src/shared/base-mixin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAc,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAmB,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAuB,MAAM,0BAA0B,CAAC;AASlF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAoC,UAAa,EAAE,EAAE;IACpF,8CAA8C;IAC9C,gFAAgF;IAChF,OAAO,yBAAyB,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"base-mixin.js","sourceRoot":"","sources":["../../src/shared/base-mixin.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export { NuralyUIBaseMixin, BaseMixin, type NuralyUIBaseElement } from './base-m
7
7
  export { ThemeAwareMixin, type ThemeAware } from './theme-mixin.js';
8
8
  export { DependencyValidationMixin, type DependencyAware } from './dependency-mixin.js';
9
9
  export { EventHandlerMixin, type EventHandlerCapable } from './event-handler-mixin.js';
10
+ export { injectStyles, hasInjectedStyles } from './style-injector.js';
10
11
  export { throttle, debounce, rafThrottle } from './utils.js';
11
12
  export * from './controllers/index.js';
12
13
  export * from './validation.types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG7D,cAAc,wBAAwB,CAAC;AAGvC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG7D,cAAc,wBAAwB,CAAC;AAGvC,cAAc,uBAAuB,CAAC"}
@@ -8,6 +8,8 @@ export { NuralyUIBaseMixin, BaseMixin } from './base-mixin.js';
8
8
  export { ThemeAwareMixin } from './theme-mixin.js';
9
9
  export { DependencyValidationMixin } from './dependency-mixin.js';
10
10
  export { EventHandlerMixin } from './event-handler-mixin.js';
11
+ // Export style injection
12
+ export { injectStyles, hasInjectedStyles } from './style-injector.js';
11
13
  // Export utility functions
12
14
  export { throttle, debounce, rafThrottle } from './utils.js';
13
15
  // Export shared controllers
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yCAAyC;AACzC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAA4B,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAwB,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAA4B,MAAM,0BAA0B,CAAC;AAEvF,2BAA2B;AAC3B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,4BAA4B;AAC5B,cAAc,wBAAwB,CAAC;AAEvC,iCAAiC;AACjC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yCAAyC;AACzC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAA4B,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAwB,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAA4B,MAAM,0BAA0B,CAAC;AAEvF,yBAAyB;AACzB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,2BAA2B;AAC3B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,4BAA4B;AAC5B,cAAc,wBAAwB,CAAC;AAEvC,iCAAiC;AACjC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export declare function injectStyles(tag: string, cssText: string, element?: HTMLElement): void;
7
+ /**
8
+ * Check if styles have already been injected for a given tag.
9
+ */
10
+ export declare function hasInjectedStyles(tag: string): boolean;
11
+ //# sourceMappingURL=style-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-injector.d.ts","sourceRoot":"","sources":["../../src/shared/style-injector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,QAiC/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Light DOM style injector — injects component CSS into the document
8
+ * and any ancestor shadow roots, once per tag per root.
9
+ * Uses adoptedStyleSheets for efficient, non-duplicating style injection.
10
+ */
11
+ const injected = new Set();
12
+ const sheetCache = new Map();
13
+ export function injectStyles(tag, cssText, element) {
14
+ var _a;
15
+ // Ensure we have a cached stylesheet for this tag
16
+ if (!sheetCache.has(tag)) {
17
+ const sheet = new CSSStyleSheet();
18
+ sheet.replaceSync(cssText);
19
+ sheetCache.set(tag, sheet);
20
+ }
21
+ const sheet = sheetCache.get(tag);
22
+ // Always inject into document (light DOM)
23
+ const docKey = `doc:${tag}`;
24
+ if (!injected.has(docKey)) {
25
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
26
+ injected.add(docKey);
27
+ }
28
+ // Also inject into any ancestor shadow root (so it works inside shadow DOM)
29
+ if (element) {
30
+ let node = element;
31
+ while (node) {
32
+ const root = node.getRootNode();
33
+ if (root instanceof ShadowRoot) {
34
+ const shadowKey = `shadow:${(((_a = root.host) === null || _a === void 0 ? void 0 : _a.tagName) || '').toLowerCase()}:${tag}`;
35
+ if (!injected.has(shadowKey)) {
36
+ root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];
37
+ injected.add(shadowKey);
38
+ }
39
+ node = root.host;
40
+ }
41
+ else {
42
+ break;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ /**
48
+ * Check if styles have already been injected for a given tag.
49
+ */
50
+ export function hasInjectedStyles(tag) {
51
+ return injected.has(tag);
52
+ }
53
+ //# sourceMappingURL=style-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-injector.js","sourceRoot":"","sources":["../../src/shared/style-injector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;AACnC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,OAAe,EAAE,OAAqB;;IAC9E,kDAAkD;IAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IAEnC,0CAA0C;IAC1C,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,kBAAkB,GAAG,CAAC,GAAG,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACtE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,4EAA4E;IAC5E,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,IAAI,GAAgB,OAAO,CAAC;QAChC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC;gBAC9E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;oBAC9D,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
@@ -48,30 +48,8 @@ export declare function detectTheme(element: Element): 'light' | 'dark';
48
48
  */
49
49
  export declare function detectDesignSystem(element: Element): 'carbon' | 'default';
50
50
  /**
51
- * CSS template literal helper for theme-aware styles
52
- * Generates CSS with both data-theme selectors and system fallback
53
- *
54
- * @param lightThemeVars - CSS custom properties for light theme
55
- * @param darkThemeVars - CSS custom properties for dark theme
56
- * @returns CSS template literal
57
- *
58
- * @example
59
- * ```typescript
60
- * import { css } from 'lit';
61
- * import { createThemeStyles } from '../shared/theme-mixin.js';
62
- *
63
- * const styles = css`
64
- * ${createThemeStyles(
65
- * css`--color: black; --bg: white;`,
66
- * css`--color: white; --bg: black;`
67
- * )}
68
- *
69
- * .content {
70
- * color: var(--color);
71
- * background: var(--bg);
72
- * }
73
- * `;
74
- * ```
51
+ * @deprecated Use CSS @layer with minimal tokens instead of createThemeStyles.
52
+ * Light DOM components use document-level tokens.css for dark/light switching.
75
53
  */
76
54
  export declare function createThemeStyles(lightThemeVars: any, darkThemeVars: any): string;
77
55
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"theme-mixin.d.ts","sourceRoot":"","sources":["../../src/shared/theme-mixin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC3C;AAED,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAmGpD,WAAW,CAAC,UAAU,CAAC,GAAG,CACrD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAe9D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAUzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAmBxE"}
1
+ {"version":3,"file":"theme-mixin.d.ts","sourceRoot":"","sources":["../../src/shared/theme-mixin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC3C;AAED,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,KAmGpD,WAAW,CAAC,UAAU,CAAC,GAAG,CACrD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAe9D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAUzE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAQxE"}