nodality 1.0.123 → 1.0.124

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 (190) hide show
  1. package/dist/animator.cjs.js +1 -1
  2. package/dist/animator.esm.js +1 -1
  3. package/dist/audionew.cjs.js +1 -1
  4. package/dist/audionew.esm.js +1 -1
  5. package/dist/base.cjs.js +1 -1
  6. package/dist/base.esm.js +1 -1
  7. package/dist/beta-desktop-bar.cjs.js +1 -1
  8. package/dist/beta-desktop-bar.esm.js +1 -1
  9. package/dist/beta-mobile-bar.cjs.js +1 -1
  10. package/dist/beta-mobile-bar.esm.js +1 -1
  11. package/dist/bundle.umd.js +1 -1
  12. package/dist/button.cjs.js +1 -1
  13. package/dist/button.esm.js +1 -1
  14. package/dist/center.cjs.js +1 -1
  15. package/dist/center.esm.js +1 -1
  16. package/dist/checkbox.cjs.js +1 -1
  17. package/dist/checkbox.esm.js +1 -1
  18. package/dist/code.cjs.js +1 -1
  19. package/dist/code.esm.js +1 -1
  20. package/dist/container.cjs.js +1 -1
  21. package/dist/container.esm.js +1 -1
  22. package/dist/data-list.cjs.js +1 -1
  23. package/dist/data-list.esm.js +1 -1
  24. package/dist/designer.cjs.js +1 -1
  25. package/dist/designer.esm.js +1 -1
  26. package/dist/dropdown.cjs.js +1 -1
  27. package/dist/dropdown.esm.js +1 -1
  28. package/dist/element-mapper.cjs.js +1 -1
  29. package/dist/element-mapper.esm.js +1 -1
  30. package/dist/finalresult.esm.js +1 -1
  31. package/dist/flex-card.cjs.js +1 -1
  32. package/dist/flex-card.esm.js +1 -1
  33. package/dist/flex-grid.cjs.js +1 -1
  34. package/dist/flex-grid.esm.js +1 -1
  35. package/dist/flex-row.cjs.js +1 -1
  36. package/dist/flex-row.esm.js +1 -1
  37. package/dist/floating-input.cjs.js +1 -1
  38. package/dist/floating-input.esm.js +1 -1
  39. package/dist/free.cjs.js +1 -1
  40. package/dist/free.esm.js +1 -1
  41. package/dist/horizontal-scroller.cjs.js +1 -1
  42. package/dist/horizontal-scroller.esm.js +1 -1
  43. package/dist/image-picker.cjs.js +1 -1
  44. package/dist/image-picker.esm.js +1 -1
  45. package/dist/image.cjs.js +1 -1
  46. package/dist/image.esm.js +1 -1
  47. package/dist/index.cjs.js +1 -1
  48. package/dist/index.esm.js +1 -1
  49. package/dist/link-getter.cjs.js +1 -1
  50. package/dist/link-getter.esm.js +1 -1
  51. package/dist/link.cjs.js +1 -1
  52. package/dist/link.esm.js +1 -1
  53. package/dist/meta-adder.cjs.js +1 -1
  54. package/dist/meta-adder.esm.js +1 -1
  55. package/dist/modal-2025.cjs.js +1 -1
  56. package/dist/modal-2025.esm.js +1 -1
  57. package/dist/multiswitcher.cjs.js +1 -1
  58. package/dist/multiswitcher.esm.js +1 -1
  59. package/dist/new-nav-bar.cjs.js +1 -1
  60. package/dist/new-nav-bar.esm.js +1 -1
  61. package/dist/picker.cjs.js +1 -1
  62. package/dist/picker.esm.js +1 -1
  63. package/dist/progress.cjs.js +1 -1
  64. package/dist/progress.esm.js +1 -1
  65. package/dist/radio.cjs.js +1 -1
  66. package/dist/radio.esm.js +1 -1
  67. package/dist/range.cjs.js +1 -1
  68. package/dist/range.esm.js +1 -1
  69. package/dist/side-bar.cjs.js +1 -1
  70. package/dist/side-bar.esm.js +1 -1
  71. package/dist/side-nav-bar.cjs.js +1 -1
  72. package/dist/side-nav-bar.esm.js +1 -1
  73. package/dist/simple-bar.cjs.js +1 -1
  74. package/dist/simple-bar.esm.js +1 -1
  75. package/dist/slider-2025.cjs.js +1 -1
  76. package/dist/slider-2025.esm.js +1 -1
  77. package/dist/spacer.cjs.js +1 -1
  78. package/dist/spacer.esm.js +1 -1
  79. package/dist/stack.cjs.js +1 -1
  80. package/dist/stack.esm.js +1 -1
  81. package/dist/table.cjs.js +1 -1
  82. package/dist/table.esm.js +1 -1
  83. package/dist/text-field.cjs.js +1 -1
  84. package/dist/text-field.esm.js +1 -1
  85. package/dist/text.cjs.js +1 -1
  86. package/dist/text.esm.js +1 -1
  87. package/dist/theme.cjs.js +1 -0
  88. package/dist/theme.esm.js +1 -0
  89. package/dist/transform-anim.cjs.js +1 -1
  90. package/dist/transform-anim.esm.js +1 -1
  91. package/dist/ulist.cjs.js +1 -1
  92. package/dist/ulist.esm.js +1 -1
  93. package/dist/video.cjs.js +1 -1
  94. package/dist/video.esm.js +1 -1
  95. package/dist/wrap.cjs.js +1 -1
  96. package/dist/wrap.esm.js +1 -1
  97. package/dist/zoom-card.cjs.js +1 -1
  98. package/dist/zoom-card.esm.js +1 -1
  99. package/layout/animator.js +71 -3
  100. package/layout/audio.js +1 -1
  101. package/layout/audionew.js +1 -1
  102. package/layout/base-2.js +1 -1
  103. package/layout/base.js +1 -1
  104. package/layout/beta-desktop-bar.js +1 -1
  105. package/layout/beta-mobile-bar.js +1 -1
  106. package/layout/box.js +1 -1
  107. package/layout/button.js +1 -1
  108. package/layout/cards.js +1 -1
  109. package/layout/center.js +1 -1
  110. package/layout/checkbox.js +1 -1
  111. package/layout/circle.js +1 -1
  112. package/layout/clean-row.js +1 -1
  113. package/layout/code.js +1 -1
  114. package/layout/container.js +1 -1
  115. package/layout/custom.js +1 -1
  116. package/layout/div-image.js +1 -1
  117. package/layout/dropdown-2025.js +1 -1
  118. package/layout/dropdown.js +1 -1
  119. package/layout/empty-element.js +1 -1
  120. package/layout/external-stylesheet.js +1 -1
  121. package/layout/flex-card.js +1 -1
  122. package/layout/flex-grid.js +1 -1
  123. package/layout/flex-row.js +1 -1
  124. package/layout/footer.js +1 -1
  125. package/layout/form-components/custom.js +1 -1
  126. package/layout/form-components/data-list.js +1 -1
  127. package/layout/form-components/floating-input.js +1 -1
  128. package/layout/form-components/form-all.js +1 -1
  129. package/layout/form-components/form.js +1 -1
  130. package/layout/form-components/image-picker.js +1 -1
  131. package/layout/form-components/picker.js +1 -1
  132. package/layout/form-components/radio.js +1 -1
  133. package/layout/form-components/radiogroup.js +1 -1
  134. package/layout/form-components/range.js +1 -1
  135. package/layout/free.js +1 -1
  136. package/layout/grid-new.js +1 -1
  137. package/layout/grid-switcher.js +1 -1
  138. package/layout/grid.js +1 -1
  139. package/layout/group.js +1 -1
  140. package/layout/header.js +1 -1
  141. package/layout/horizontal-scroller.js +1 -1
  142. package/layout/image-old.js +1 -1
  143. package/layout/image.js +1 -1
  144. package/layout/index.js +5 -1
  145. package/layout/label.js +1 -1
  146. package/layout/link.js +1 -1
  147. package/layout/list-OLD.js +1 -1
  148. package/layout/list.js +1 -1
  149. package/layout/meta-adder.js +1 -1
  150. package/layout/modal-2025.js +1 -1
  151. package/layout/modernwrap.js +1 -1
  152. package/layout/multiswitcher.js +1 -1
  153. package/layout/multiswitcherBeta.js +1 -1
  154. package/layout/nav-bar.js +1 -1
  155. package/layout/nav-factor/custom-div.js +1 -1
  156. package/layout/navBar-OLD.js +1 -1
  157. package/layout/new-flat-adder.js +1 -1
  158. package/layout/new-nav-bar.js +1 -1
  159. package/layout/offset-container.js +1 -1
  160. package/layout/polygon.js +1 -1
  161. package/layout/progress.js +1 -1
  162. package/layout/row.js +1 -1
  163. package/layout/saved-new-nav-bar.js +1 -1
  164. package/layout/scroll-video.js +1 -1
  165. package/layout/side-bar.js +1 -1
  166. package/layout/side-nav-bar.js +1 -1
  167. package/layout/simple-bar.js +1 -1
  168. package/layout/slider-2025.js +1 -1
  169. package/layout/spacer.js +1 -1
  170. package/layout/stack.js +1 -1
  171. package/layout/styler.js +1 -1
  172. package/layout/switcher.js +1 -1
  173. package/layout/table.js +1 -1
  174. package/layout/text-field.js +1 -1
  175. package/layout/text.js +1 -1
  176. package/layout/ulist.js +1 -1
  177. package/layout/video.js +1 -1
  178. package/layout/without-new.js +1 -1
  179. package/layout/wrap.js +1 -1
  180. package/layout/zoom-card.js +1 -1
  181. package/lib/card-getter.js +1 -1
  182. package/lib/designer.js +1 -1
  183. package/lib/element-mapper.js +1 -1
  184. package/lib/keyframe-animation.js +1 -1
  185. package/lib/link-getter.js +1 -1
  186. package/lib/scroll-video.js +1 -1
  187. package/lib/stacker.js +1 -1
  188. package/lib/theme.js +92 -0
  189. package/lib/transform-anim.js +5 -4
  190. package/package.json +1 -1
package/layout/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -62,6 +62,7 @@ import { KeyframeAnim } from "../lib/keyframe-animation.js";
62
62
  import { TransformAnim } from "../lib/transform-anim.js";
63
63
  import { Stacker } from "../lib/stacker.js";
64
64
  import { ScrollVideo } from "../lib/scroll-video.js";
65
+ import { Theme } from "../lib/theme.js";
65
66
 
66
67
  // SHAPES / MISC
67
68
  import { AreaSwitcher } from "../layout/grid-switcher.js";
@@ -117,6 +118,7 @@ if (typeof window !== 'undefined') {
117
118
  window.TransformAnim = TransformAnim;
118
119
  window.Stacker = Stacker;
119
120
  window.ScrollVideo = ScrollVideo;
121
+ window.Theme = Theme;
120
122
  window.AreaSwitcher = AreaSwitcher;
121
123
  window.Video = Video;
122
124
  window.UList = UList;
@@ -171,6 +173,7 @@ if (typeof global !== 'undefined') {
171
173
  global.TransformAnim = TransformAnim;
172
174
  global.Stacker = Stacker;
173
175
  global.ScrollVideo = ScrollVideo;
176
+ global.Theme = Theme;
174
177
  global.AreaSwitcher = AreaSwitcher;
175
178
  global.Video = Video;
176
179
  global.UList = UList;
@@ -225,6 +228,7 @@ export {
225
228
  TransformAnim,
226
229
  Stacker,
227
230
  ScrollVideo,
231
+ Theme,
228
232
  AreaSwitcher,
229
233
  Video,
230
234
  UList,
package/layout/label.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/link.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/list.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/nav-bar.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/polygon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/row.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/spacer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/stack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/styler.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/table.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/text.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/ulist.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/video.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/wrap.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/designer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/stacker.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/theme.js ADDED
@@ -0,0 +1,92 @@
1
+ /*!
2
+ * nodality v1.0.124
3
+ * (c) 2026 Filip Vabrousek
4
+ * License: MIT
5
+ */
6
+
7
+ // Nodality Theme — central dark/light mode + event bus.
8
+ // No CSS. Components declare per-mode inline styles via .set({ theme: {...} }).
9
+
10
+ const STORAGE_KEY = "nodality.theme.mode";
11
+ const EVENT_NAME = "nodality:theme";
12
+
13
+ function detectInitialMode() {
14
+ try {
15
+ const saved = localStorage.getItem(STORAGE_KEY);
16
+ if (saved === "light" || saved === "dark") return saved;
17
+ } catch (e) {}
18
+ if (typeof window !== "undefined" && window.matchMedia) {
19
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) return "dark";
20
+ }
21
+ return "light";
22
+ }
23
+
24
+ const Theme = {
25
+ mode: detectInitialMode(),
26
+ tokens: { light: {}, dark: {} },
27
+
28
+ // Built-in defaults applied to every component that did NOT declare its own
29
+ // .theme({...}) map. Only fills in properties the component hasn't already
30
+ // set inline, so user styles always win.
31
+ //
32
+ // NOTE: only `color` is set by default. Background is intentionally omitted
33
+ // because applying it to every nested container produces stacked dark
34
+ // rectangles and breaks transparent layouts. Set the page background
35
+ // yourself (e.g., on body) or call Theme.setDefaults({...}) to opt in.
36
+ defaults: {
37
+ light: { color: "#111111" },
38
+ dark: { color: "#eeeeee" }
39
+ },
40
+
41
+ setDefaults(map) {
42
+ if (map && typeof map === "object") {
43
+ if (map.light) this.defaults.light = Object.assign({}, this.defaults.light, map.light);
44
+ if (map.dark) this.defaults.dark = Object.assign({}, this.defaults.dark, map.dark);
45
+ this._broadcast();
46
+ }
47
+ return this;
48
+ },
49
+
50
+ setTokens(tokens) {
51
+ if (tokens && typeof tokens === "object") {
52
+ if (tokens.light) Object.assign(this.tokens.light, tokens.light);
53
+ if (tokens.dark) Object.assign(this.tokens.dark, tokens.dark);
54
+ }
55
+ return this;
56
+ },
57
+
58
+ get current() {
59
+ return this.tokens[this.mode] || {};
60
+ },
61
+
62
+ set(mode) {
63
+ if (mode !== "light" && mode !== "dark") return this;
64
+ if (mode === this.mode) return this;
65
+ this.mode = mode;
66
+ try { localStorage.setItem(STORAGE_KEY, mode); } catch (e) {}
67
+ this._broadcast();
68
+ return this;
69
+ },
70
+
71
+ toggle() {
72
+ return this.set(this.mode === "dark" ? "light" : "dark");
73
+ },
74
+
75
+ subscribe(fn) {
76
+ if (typeof document === "undefined") return () => {};
77
+ const handler = (e) => fn(e.detail.mode, e.detail.tokens);
78
+ document.addEventListener(EVENT_NAME, handler);
79
+ // Fire once with current state so late subscribers sync immediately.
80
+ try { fn(this.mode, this.current); } catch (e) {}
81
+ return () => document.removeEventListener(EVENT_NAME, handler);
82
+ },
83
+
84
+ _broadcast() {
85
+ if (typeof document === "undefined") return;
86
+ document.dispatchEvent(new CustomEvent(EVENT_NAME, {
87
+ detail: { mode: this.mode, tokens: this.current }
88
+ }));
89
+ }
90
+ };
91
+
92
+ export { Theme };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.123
2
+ * nodality v1.0.124
3
3
  * (c) 2026 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -65,9 +65,10 @@ toCode(){
65
65
  wrapDiv.style.height = "900px"; // same as paddingTop
66
66
 
67
67
 
68
- if (!this.data.sticky) {
69
-
70
- wrapDiv.style.position = "fixed";
68
+ if (this.data.position) {
69
+ wrapDiv.style.position = this.data.position;
70
+ } else if (!this.data.sticky) {
71
+ wrapDiv.style.position = "fixed";
71
72
  }
72
73
 
73
74
  wrapDiv.style.marginTop = "0px";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodality",
3
- "version": "1.0.123",
3
+ "version": "1.0.124",
4
4
  "description": "A lightweight library for declarative UI elements.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",