nodality 1.0.32 → 1.0.34

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 (202) hide show
  1. package/dist/animator.cjs.js.LICENSE.txt +1 -1
  2. package/dist/animator.esm.js.LICENSE.txt +1 -1
  3. package/dist/appleanim.cjs.js.LICENSE.txt +1 -1
  4. package/dist/appleanim.esm.js.LICENSE.txt +1 -1
  5. package/dist/audionew.cjs.js.LICENSE.txt +1 -1
  6. package/dist/audionew.esm.js.LICENSE.txt +1 -1
  7. package/dist/base.cjs.js.LICENSE.txt +1 -1
  8. package/dist/base.esm.js.LICENSE.txt +1 -1
  9. package/dist/betaDesktopBar.esm.js +1 -1
  10. package/dist/betaDesktopBar.esm.js.LICENSE.txt +1 -1
  11. package/dist/betaMobileBar.esm.js.LICENSE.txt +1 -1
  12. package/dist/bundle.umd.js +1 -1
  13. package/dist/bundle.umd.js.LICENSE.txt +1 -1
  14. package/dist/button.cjs.js.LICENSE.txt +1 -1
  15. package/dist/button.esm.js.LICENSE.txt +1 -1
  16. package/dist/cardGetter.cjs.js.LICENSE.txt +1 -1
  17. package/dist/cardGetter.esm.js.LICENSE.txt +1 -1
  18. package/dist/center.cjs.js.LICENSE.txt +1 -1
  19. package/dist/center.esm.js.LICENSE.txt +1 -1
  20. package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
  21. package/dist/checkbox.esm.js.LICENSE.txt +1 -1
  22. package/dist/code.cjs.js.LICENSE.txt +1 -1
  23. package/dist/code.esm.js.LICENSE.txt +1 -1
  24. package/dist/container.cjs.js.LICENSE.txt +1 -1
  25. package/dist/container.esm.js.LICENSE.txt +1 -1
  26. package/dist/datalist.cjs.js.LICENSE.txt +1 -1
  27. package/dist/datalist.esm.js.LICENSE.txt +1 -1
  28. package/dist/designer.cjs.js +1 -1
  29. package/dist/designer.cjs.js.LICENSE.txt +1 -1
  30. package/dist/designer.esm.js +1 -1
  31. package/dist/designer.esm.js.LICENSE.txt +1 -1
  32. package/dist/dropdown.cjs.js.LICENSE.txt +1 -1
  33. package/dist/dropdown.esm.js.LICENSE.txt +1 -1
  34. package/dist/elementMapper.cjs.js.LICENSE.txt +1 -1
  35. package/dist/elementMapper.esm.js.LICENSE.txt +1 -1
  36. package/dist/finalresult.esm.js +1 -1
  37. package/dist/finalresult.esm.js.LICENSE.txt +1 -1
  38. package/dist/flexCard.cjs.js.LICENSE.txt +1 -1
  39. package/dist/flexCard.esm.js.LICENSE.txt +1 -1
  40. package/dist/flexGrid.cjs.js.LICENSE.txt +1 -1
  41. package/dist/flexGrid.esm.js.LICENSE.txt +1 -1
  42. package/dist/flexRow.cjs.js.LICENSE.txt +1 -1
  43. package/dist/flexRow.esm.js.LICENSE.txt +1 -1
  44. package/dist/floatingInput.cjs.js.LICENSE.txt +1 -1
  45. package/dist/floatingInput.esm.js.LICENSE.txt +1 -1
  46. package/dist/free.cjs.js.LICENSE.txt +1 -1
  47. package/dist/free.esm.js.LICENSE.txt +1 -1
  48. package/dist/horizontalScroller.esm.js.LICENSE.txt +1 -1
  49. package/dist/image.cjs.js.LICENSE.txt +1 -1
  50. package/dist/image.esm.js.LICENSE.txt +1 -1
  51. package/dist/imagePicker.cjs.js.LICENSE.txt +1 -1
  52. package/dist/imagePicker.esm.js.LICENSE.txt +1 -1
  53. package/dist/index.cjs.js +1 -1
  54. package/dist/index.cjs.js.LICENSE.txt +1 -1
  55. package/dist/index.esm.js +1 -1
  56. package/dist/index.esm.js.LICENSE.txt +1 -1
  57. package/dist/link.cjs.js.LICENSE.txt +1 -1
  58. package/dist/link.esm.js.LICENSE.txt +1 -1
  59. package/dist/linkGetter.cjs.js.LICENSE.txt +1 -1
  60. package/dist/linkGetter.esm.js.LICENSE.txt +1 -1
  61. package/dist/metaAdder.cjs.js.LICENSE.txt +1 -1
  62. package/dist/metaAdder.esm.js.LICENSE.txt +1 -1
  63. package/dist/modal2025.cjs.js.LICENSE.txt +1 -1
  64. package/dist/modal2025.esm.js.LICENSE.txt +1 -1
  65. package/dist/multiswitchers.esm.js.LICENSE.txt +1 -1
  66. package/dist/newNavBar.cjs.js.LICENSE.txt +1 -1
  67. package/dist/newNavBar.esm.js.LICENSE.txt +1 -1
  68. package/dist/picker.cjs.js.LICENSE.txt +1 -1
  69. package/dist/picker.esm.js.LICENSE.txt +1 -1
  70. package/dist/progress.cjs.js.LICENSE.txt +1 -1
  71. package/dist/progress.esm.js.LICENSE.txt +1 -1
  72. package/dist/radio.cjs.js.LICENSE.txt +1 -1
  73. package/dist/radio.esm.js.LICENSE.txt +1 -1
  74. package/dist/range.cjs.js.LICENSE.txt +1 -1
  75. package/dist/range.esm.js.LICENSE.txt +1 -1
  76. package/dist/scrollvideo.cjs.js.LICENSE.txt +1 -1
  77. package/dist/scrollvideo.esm.js.LICENSE.txt +1 -1
  78. package/dist/sideBar.cjs.js.LICENSE.txt +1 -1
  79. package/dist/sideBar.esm.js.LICENSE.txt +1 -1
  80. package/dist/sideNavBar.cjs.js.LICENSE.txt +1 -1
  81. package/dist/sideNavBar.esm.js.LICENSE.txt +1 -1
  82. package/dist/simpleBar.cjs.js.LICENSE.txt +1 -1
  83. package/dist/simpleBar.esm.js.LICENSE.txt +1 -1
  84. package/dist/slider2025.cjs.js +1 -1
  85. package/dist/slider2025.cjs.js.LICENSE.txt +1 -1
  86. package/dist/slider2025.esm.js +1 -1
  87. package/dist/slider2025.esm.js.LICENSE.txt +1 -1
  88. package/dist/spacer.cjs.js.LICENSE.txt +1 -1
  89. package/dist/stack.cjs.js.LICENSE.txt +1 -1
  90. package/dist/stack.esm.js.LICENSE.txt +1 -1
  91. package/dist/stacker.cjs.js.LICENSE.txt +1 -1
  92. package/dist/stacker.esm.js.LICENSE.txt +1 -1
  93. package/dist/table.cjs.js.LICENSE.txt +1 -1
  94. package/dist/table.esm.js.LICENSE.txt +1 -1
  95. package/dist/text.cjs.js.LICENSE.txt +1 -1
  96. package/dist/text.esm.js.LICENSE.txt +1 -1
  97. package/dist/textField.cjs.js.LICENSE.txt +1 -1
  98. package/dist/textField.esm.js.LICENSE.txt +1 -1
  99. package/dist/transformanim.cjs.js.LICENSE.txt +1 -1
  100. package/dist/transformanim.esm.js.LICENSE.txt +1 -1
  101. package/dist/ulist.cjs.js.LICENSE.txt +1 -1
  102. package/dist/ulist.esm.js.LICENSE.txt +1 -1
  103. package/dist/video.esm.js.LICENSE.txt +1 -1
  104. package/dist/wrap.cjs.js.LICENSE.txt +1 -1
  105. package/dist/wrap.esm.js.LICENSE.txt +1 -1
  106. package/dist/zoomCard.cjs.js.LICENSE.txt +1 -1
  107. package/dist/zoomCard.esm.js.LICENSE.txt +1 -1
  108. package/layout/DEPRECATED-PARAGRAPH.js +1 -1
  109. package/layout/animator.js +1 -1
  110. package/layout/audio.js +1 -1
  111. package/layout/audionew.js +1 -1
  112. package/layout/base-2.js +1 -1
  113. package/layout/base.js +1 -1
  114. package/layout/betaDesktopBar.js +1 -1
  115. package/layout/betaMobileBar.js +1 -1
  116. package/layout/box.js +1 -1
  117. package/layout/button.js +1 -1
  118. package/layout/cards.js +1 -1
  119. package/layout/center.js +1 -1
  120. package/layout/checkbox.js +1 -1
  121. package/layout/circle.js +1 -1
  122. package/layout/cleanRow.js +1 -1
  123. package/layout/code.js +1 -1
  124. package/layout/container.js +1 -1
  125. package/layout/custom.js +1 -1
  126. package/layout/divImage.js +1 -1
  127. package/layout/dropdown.js +1 -1
  128. package/layout/dropdown2025.js +1 -1
  129. package/layout/emptyElement.js +1 -1
  130. package/layout/externalStylesheet.js +1 -1
  131. package/layout/flexCard.js +1 -1
  132. package/layout/flexGrid.js +1 -1
  133. package/layout/flexrow.js +1 -1
  134. package/layout/footer.js +1 -1
  135. package/layout/formComponents/custom.js +1 -1
  136. package/layout/formComponents/dataList.js +1 -1
  137. package/layout/formComponents/floatingInput.js +1 -1
  138. package/layout/formComponents/form-all.js +1 -1
  139. package/layout/formComponents/form.js +1 -1
  140. package/layout/formComponents/imagePicker.js +1 -1
  141. package/layout/formComponents/picker.js +1 -1
  142. package/layout/formComponents/radio.js +1 -1
  143. package/layout/formComponents/radiogroup.js +1 -1
  144. package/layout/formComponents/range.js +1 -1
  145. package/layout/free.js +1 -1
  146. package/layout/grid-new.js +1 -1
  147. package/layout/grid.js +1 -1
  148. package/layout/gridSwitcher.js +1 -1
  149. package/layout/group.js +1 -1
  150. package/layout/header.js +1 -1
  151. package/layout/horizontalScroller.js +1 -1
  152. package/layout/image-old.js +1 -1
  153. package/layout/image.js +1 -1
  154. package/layout/index.js +1 -1
  155. package/layout/label.js +1 -1
  156. package/layout/link.js +1 -1
  157. package/layout/list-OLD.js +1 -1
  158. package/layout/list.js +1 -1
  159. package/layout/metaAdder.js +1 -1
  160. package/layout/modal2025.js +1 -1
  161. package/layout/modernwrap.js +1 -1
  162. package/layout/multiswitcher.js +1 -1
  163. package/layout/multiswitcherBeta.js +1 -1
  164. package/layout/navBar-OLD.js +1 -1
  165. package/layout/navBar.js +1 -1
  166. package/layout/navFactor/customDiv.js +1 -1
  167. package/layout/newFlatAdder.js +1 -1
  168. package/layout/newNavBar copy 2.js +1 -1
  169. package/layout/newNavBar copy.js +1 -1
  170. package/layout/newNavBar.js +1 -1
  171. package/layout/offsetContainer.js +1 -1
  172. package/layout/polygon.js +1 -1
  173. package/layout/progress.js +1 -1
  174. package/layout/row.js +1 -1
  175. package/layout/savedNewNavBar.js +1 -1
  176. package/layout/scrollvideo.js +1 -1
  177. package/layout/sideBar.js +1 -1
  178. package/layout/sideNavBar.js +1 -1
  179. package/layout/simpleBar.js +1 -1
  180. package/layout/slider2025.js +80 -108
  181. package/layout/spacer.js +1 -1
  182. package/layout/stack.js +1 -1
  183. package/layout/styler.js +1 -1
  184. package/layout/switcher.js +1 -1
  185. package/layout/table.js +1 -1
  186. package/layout/text.js +1 -1
  187. package/layout/textField.js +1 -1
  188. package/layout/ulist.js +1 -1
  189. package/layout/video.js +1 -1
  190. package/layout/withoutNew.js +1 -1
  191. package/layout/wrap.js +1 -1
  192. package/layout/zoomCard.js +1 -1
  193. package/lib/AppleAnim.js +1 -1
  194. package/lib/KeyframeAnimation.js +1 -1
  195. package/lib/Stacker.js +1 -1
  196. package/lib/TransformAnim.js +1 -1
  197. package/lib/cardGetter.js +1 -1
  198. package/lib/designer.js +2 -2
  199. package/lib/elementMapper.js +1 -1
  200. package/lib/linkGetter.js +1 -1
  201. package/lib/scrollvideo.js +1 -1
  202. package/package.json +1 -1
@@ -1,41 +1,42 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import {Animator} from "./animator.js";
8
- import {Button} from "./button.js";
7
+ import { Animator } from "./animator.js";
8
+ import { Button } from "./button.js";
9
9
 
10
10
  class Slider {
11
- constructor(elements, buttons) {
12
- this.container = document.createElement("div"); // root element
11
+ constructor(elements, buttons, options = {}) {
12
+ this.container = document.createElement("div");
13
13
  this.container.style.width = "100%";
14
14
  this.container.style.margin = "20px auto";
15
15
  this.container.style.textAlign = "center";
16
16
 
17
17
  this.elements = elements;
18
18
  this.currentSlideIndex = 0;
19
-
20
19
  this.buttons = buttons;
21
20
 
21
+ // 🎨 Tint options
22
+ this.tintColor = options.tintColor || "green";
23
+ this.inactiveColor = options.inactiveColor || "gray";
24
+
25
+ // 🔵 Default buttons adopt tintColor
22
26
  if (!this.buttons) {
23
27
  let buttons = {
24
28
  leftButton: new Button("L").set({
25
- frame: { width: 50, height: 50 },
26
- // url: "../assets/arrow-left.png",
27
- svg: this.createArrowSVG("left", 28),
28
- color: "#1abc9c",
29
- // image: new Image().set({ url: "../assets/arrow-left.png", width: "50px", height: "50px" }),
29
+ frame: { width: 50, height: 50 },
30
+ svg: this.createArrowSVG("left", 28, this.tintColor),
31
+ color: this.tintColor, // adopt tintColor
30
32
  radius: "100%",
31
33
  arrayMargin: { sides: ["all"], value: "1rem" },
32
34
  }),
33
35
 
34
36
  rightButton: new Button("R").set({
35
37
  frame: { width: 50, height: 50 },
36
- svg: this.createArrowSVG("right", 28),
37
- // url: "../assets/arrow-right.png",
38
- color: "#1abc9c",
38
+ svg: this.createArrowSVG("right", 28, this.tintColor),
39
+ color: this.tintColor, // adopt tintColor
39
40
  radius: "100%",
40
41
  arrayMargin: { sides: ["all"], value: "1rem" },
41
42
  }),
@@ -47,30 +48,28 @@ class Slider {
47
48
  this.init();
48
49
  }
49
50
 
50
- createArrowSVG(direction = 'left', size = 28) {
51
- const svgNS = "http://www.w3.org/2000/svg";
52
- const svg = document.createElementNS(svgNS, "svg");
53
- svg.setAttribute("viewBox", "0 0 24 24");
54
- svg.setAttribute("width", String(size));
55
- svg.setAttribute("height", String(size));
56
- svg.setAttribute("aria-hidden", "true");
57
- svg.style.display = "block"; // avoid inline-gap issues
58
- svg.style.pointerEvents = "none"; // prevent internal svg catching pointer
59
-
60
- const path = document.createElementNS(svgNS, "path");
61
- path.setAttribute("fill", "currentColor");
62
-
63
- if (direction === "left") {
64
- // chevron-left path
65
- path.setAttribute("d", "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z");
66
- } else {
67
- // chevron-right path
68
- path.setAttribute("d", "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z");
69
- }
51
+ createArrowSVG(direction = "left", size = 28, color = "currentColor") {
52
+ const svgNS = "http://www.w3.org/2000/svg";
53
+ const svg = document.createElementNS(svgNS, "svg");
54
+ svg.setAttribute("viewBox", "0 0 24 24");
55
+ svg.setAttribute("width", String(size));
56
+ svg.setAttribute("height", String(size));
57
+ svg.setAttribute("aria-hidden", "true");
58
+ svg.style.display = "block";
59
+ svg.style.pointerEvents = "none";
60
+
61
+ const path = document.createElementNS(svgNS, "path");
62
+ path.setAttribute("fill", color);
63
+
64
+ if (direction === "left") {
65
+ path.setAttribute("d", "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z");
66
+ } else {
67
+ path.setAttribute("d", "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z");
68
+ }
70
69
 
71
- svg.appendChild(path);
72
- return svg;
73
- }
70
+ svg.appendChild(path);
71
+ return svg;
72
+ }
74
73
 
75
74
  toCode() {
76
75
  let code = `new Slider([${this.elements.map((el) => el.toCode())}], null)`;
@@ -106,12 +105,12 @@ class Slider {
106
105
  slide.style.flexShrink = "0";
107
106
  slide.style.width = "100%";
108
107
  slide.style.height = "400px";
109
- slide.style.background = index % 2 === 0 ? "rgb(250, 246, 212)" : "white";
108
+ slide.style.background =
109
+ index % 2 === 0 ? "rgb(250, 246, 212)" : "white";
110
110
  slide.style.transformOrigin = "center center";
111
111
  slide.style.transform = "scale(1)";
112
112
  slide.style.scrollSnapAlign = "center";
113
113
 
114
- // render element once and clone from that instance for the thumbnail
115
114
  const rendered = text.render();
116
115
  slide.appendChild(rendered);
117
116
  slidesWrapper.appendChild(slide);
@@ -124,6 +123,9 @@ class Slider {
124
123
  this.arrowPrev.style.top = "50%";
125
124
  this.arrowPrev.style.transform = "translateY(-50%)";
126
125
  this.arrowPrev.style.zIndex = "1";
126
+ this.arrowPrev.style.display = "flex";
127
+ this.arrowPrev.style.alignItems = "center";
128
+ this.arrowPrev.style.justifyContent = "center";
127
129
 
128
130
  this.arrowNext = this.buttons.rightButton.render();
129
131
  this.arrowNext.style.position = "absolute";
@@ -131,13 +133,15 @@ class Slider {
131
133
  this.arrowNext.style.top = "50%";
132
134
  this.arrowNext.style.transform = "translateY(-50%)";
133
135
  this.arrowNext.style.zIndex = "1";
136
+ this.arrowNext.style.display = "flex";
137
+ this.arrowNext.style.alignItems = "center";
138
+ this.arrowNext.style.justifyContent = "center";
134
139
 
135
140
  // Navigation dots
136
141
  const nav = document.createElement("div");
137
142
  nav.style.position = "absolute";
138
143
  nav.style.bottom = "10%";
139
144
  nav.style.left = "50%";
140
- //nav.style.width = "200px";
141
145
  nav.style.transform = "translateX(-50%)";
142
146
  nav.style.textAlign = "center";
143
147
 
@@ -147,68 +151,63 @@ class Slider {
147
151
  navLink.style.height = "15px";
148
152
  navLink.style.width = "15px";
149
153
  navLink.style.borderRadius = "50%";
150
- navLink.style.backgroundColor = "black";
154
+ navLink.style.backgroundColor = this.inactiveColor;
151
155
  navLink.style.margin = "0 10px";
152
156
  navLink.style.cursor = "pointer";
153
157
  navLink.dataset.index = index;
154
158
  nav.appendChild(navLink);
155
159
  });
156
160
 
157
- // ✅ Thumbnails section (fixed and robust)
161
+ // ✅ Thumbnails section
158
162
  const thumbsContainer = document.createElement("div");
159
163
  thumbsContainer.style.display = "flex";
160
164
  thumbsContainer.style.justifyContent = "flex-start";
161
165
  thumbsContainer.style.marginTop = "10px";
162
166
  thumbsContainer.style.gap = "10px";
163
167
  thumbsContainer.style.flexWrap = "nowrap";
164
- thumbsContainer.style.overflowX = "auto"; // optional: allow scrolling if many thumbs
168
+ thumbsContainer.style.overflowX = "auto";
165
169
 
166
- // create thumbnails from existing slide DOM (clone once)
167
170
  const slides = slidesWrapper.querySelectorAll(".slide");
168
171
  slides.forEach((slide, index) => {
169
172
  const thumb = document.createElement("div");
170
- thumb.className = "slider-thumb"; // specific class so we only select top-level thumbs
173
+ thumb.className = "slider-thumb";
171
174
  thumb.dataset.index = index.toString();
172
175
  thumb.style.width = "60px";
173
176
  thumb.style.height = "40px";
174
- thumb.style.border = "2px solid gray";
177
+ thumb.style.border = `2px solid ${this.inactiveColor}`;
175
178
  thumb.style.borderRadius = "5px";
176
179
  thumb.style.overflow = "hidden";
177
180
  thumb.style.cursor = "pointer";
178
181
  thumb.style.flexShrink = "0";
179
182
  thumb.style.position = "relative";
180
183
 
181
- // use the slide's rendered content and clone it (no extra text.render() calls)
182
184
  const sourceContent = slide.firstElementChild || slide.cloneNode(true);
183
185
  const preview = sourceContent.cloneNode(true);
184
-
185
- // scale down the preview and make sure it sits in the thumb
186
186
  preview.style.transform = "scale(0.2)";
187
187
  preview.style.transformOrigin = "top left";
188
- // make width/height big enough so scale produces visible result
189
188
  preview.style.width = "300px";
190
189
  preview.style.height = "auto";
191
- preview.style.pointerEvents = "none"; // prevent interactive elements inside preview catching clicks
190
+ preview.style.pointerEvents = "none";
192
191
 
193
192
  thumb.appendChild(preview);
194
-
195
193
  thumbsContainer.appendChild(thumb);
196
194
  });
197
195
 
198
- // Append elements to the slider
196
+ // Append elements
199
197
  this.slider.appendChild(this.arrowPrev);
200
198
  this.slider.appendChild(this.arrowNext);
201
199
  this.slider.appendChild(slidesWrapper);
202
200
  this.slider.appendChild(nav);
203
201
 
204
- // Append everything to root container (single root element)
205
202
  this.container.appendChild(this.slider);
206
203
  this.container.appendChild(thumbsContainer);
207
204
 
208
- // Store references (select only top-level thumbs)
205
+ // Store references
209
206
  this.slidesWrapper = slidesWrapper;
210
207
  this.navLinks = Array.from(nav.querySelectorAll("a"));
211
- this.thumbs = Array.from(thumbsContainer.querySelectorAll(".slider-thumb"));
208
+ this.thumbs = Array.from(
209
+ thumbsContainer.querySelectorAll(".slider-thumb")
210
+ );
212
211
  }
213
212
 
214
213
  init() {
@@ -218,7 +217,11 @@ class Slider {
218
217
 
219
218
  attachEventListeners() {
220
219
  this.arrowPrev.addEventListener("click", () => {
221
- this.moveToSlide(this.currentSlideIndex - 1 < 0 ? this.elements.length - 1 : this.currentSlideIndex - 1);
220
+ this.moveToSlide(
221
+ this.currentSlideIndex - 1 < 0
222
+ ? this.elements.length - 1
223
+ : this.currentSlideIndex - 1
224
+ );
222
225
  });
223
226
 
224
227
  this.arrowNext.addEventListener("click", () => {
@@ -233,7 +236,6 @@ class Slider {
233
236
  });
234
237
  });
235
238
 
236
- // thumbnails click (use data-index to be robust)
237
239
  this.thumbs.forEach((thumb) => {
238
240
  thumb.addEventListener("click", () => {
239
241
  const idx = parseInt(thumb.dataset.index, 10);
@@ -241,10 +243,13 @@ class Slider {
241
243
  });
242
244
  });
243
245
 
244
- // Keydown event for left and right arrow keys
245
246
  document.addEventListener("keydown", (e) => {
246
247
  if (e.key === "ArrowLeft") {
247
- this.moveToSlide(this.currentSlideIndex - 1 < 0 ? this.elements.length - 1 : this.currentSlideIndex - 1);
248
+ this.moveToSlide(
249
+ this.currentSlideIndex - 1 < 0
250
+ ? this.elements.length - 1
251
+ : this.currentSlideIndex - 1
252
+ );
248
253
  } else if (e.key === "ArrowRight") {
249
254
  this.moveToSlide((this.currentSlideIndex + 1) % this.elements.length);
250
255
  }
@@ -257,21 +262,29 @@ class Slider {
257
262
  }
258
263
 
259
264
  updateActiveSlide() {
260
- // highlight nav dots using dataset (robust even if nodes reorder)
265
+ // nav dots
261
266
  this.navLinks.forEach((navLink) => {
262
267
  const idx = parseInt(navLink.dataset.index, 10);
263
- navLink.style.backgroundColor = idx === this.currentSlideIndex ? "green" : "gray";
268
+ navLink.style.backgroundColor =
269
+ idx === this.currentSlideIndex
270
+ ? this.tintColor
271
+ : this.inactiveColor;
264
272
  });
265
273
 
266
- // highlight thumbs using dataset (robust)
274
+ // thumbs
267
275
  this.thumbs.forEach((thumb) => {
268
276
  const idx = parseInt(thumb.dataset.index, 10);
269
- thumb.style.borderColor = idx === this.currentSlideIndex ? "green" : "gray";
277
+ thumb.style.borderColor =
278
+ idx === this.currentSlideIndex
279
+ ? this.tintColor
280
+ : this.inactiveColor;
270
281
  });
271
282
 
272
- // scroll main slides wrapper
283
+ // scroll slides
273
284
  const slideElem = this.slidesWrapper.querySelector(".slide");
274
- const slideWidth = slideElem ? slideElem.offsetWidth : this.slidesWrapper.clientWidth;
285
+ const slideWidth = slideElem
286
+ ? slideElem.offsetWidth
287
+ : this.slidesWrapper.clientWidth;
275
288
  this.slidesWrapper.scrollTo({
276
289
  left: this.currentSlideIndex * slideWidth,
277
290
  behavior: "smooth",
@@ -282,50 +295,9 @@ class Slider {
282
295
  if (div) {
283
296
  document.querySelector(div).appendChild(this.container);
284
297
  } else {
285
- return this.container; // return single root element
298
+ return this.container;
286
299
  }
287
300
  }
288
301
  }
289
302
 
290
303
  export { Slider };
291
-
292
-
293
-
294
- /*
295
-
296
- new Slider(texts, /*{
297
-
298
- leftButton: new Button("").set({
299
- url: "true",
300
- img: new Image().set({
301
- url: "../assets/arrow-left.png",
302
- width: "50px",
303
- height: "50px"
304
- }),
305
- color: "#1abc9c",
306
- radius: "100%",
307
- mar: {
308
- "a":40
309
- }
310
- }),
311
-
312
- rightButton: new Button("").set({
313
- url: "true",
314
- img: new Image().set({
315
- url: "../assets/arrow-right.png",
316
- width: "50px",
317
- height: "50px"
318
- }),
319
- color: "#1abc9c",
320
- frame: {
321
- width: 50,
322
- height: 50
323
- },
324
- radius: "100%",
325
- mar: {
326
- "a":40
327
- }
328
- })
329
-
330
- }, null)
331
- */
package/layout/spacer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/stack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/styler.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/table.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/text.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/ulist.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/video.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/layout/wrap.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/AppleAnim.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/Stacker.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/cardGetter.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/designer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -970,7 +970,7 @@ new Text("One").set({size: "S1", color: "#1abc9c", font: "Arial"}),
970
970
  new Text("Four").set({size: "S1", color: "#1abc9c", font: "Arial"}),
971
971
  ];
972
972
 
973
- new Slider(texts, null)
973
+ new Slider(texts, null, { tintColor: "#e74c3c", inactiveColor: "#ccc" })
974
974
 
975
975
  `);
976
976
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/lib/linkGetter.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * nodality v1.0.32
2
+ * nodality v1.0.34
3
3
  * (c) 2025 Filip Vabrousek
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodality",
3
- "version": "1.0.32",
3
+ "version": "1.0.34",
4
4
  "description": "A lightweight library for declarative UI elements.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",