juxscript 1.1.13 → 1.1.15

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 (124) hide show
  1. package/index.d.ts +0 -2
  2. package/index.d.ts.map +1 -1
  3. package/index.js +0 -2
  4. package/lib/components/alert.d.ts +4 -0
  5. package/lib/components/alert.d.ts.map +1 -1
  6. package/lib/components/alert.js +19 -0
  7. package/lib/components/alert.ts +19 -0
  8. package/lib/components/badge.d.ts +3 -4
  9. package/lib/components/badge.d.ts.map +1 -1
  10. package/lib/components/badge.js +20 -0
  11. package/lib/components/badge.ts +20 -4
  12. package/lib/components/base/BaseComponent.d.ts +35 -6
  13. package/lib/components/base/BaseComponent.d.ts.map +1 -1
  14. package/lib/components/base/BaseComponent.js +20 -49
  15. package/lib/components/base/BaseComponent.ts +59 -48
  16. package/lib/components/base/FormInput.d.ts +4 -0
  17. package/lib/components/base/FormInput.d.ts.map +1 -1
  18. package/lib/components/base/FormInput.js +6 -0
  19. package/lib/components/base/FormInput.ts +7 -0
  20. package/lib/components/button.d.ts +1 -0
  21. package/lib/components/button.d.ts.map +1 -1
  22. package/lib/components/button.js +3 -0
  23. package/lib/components/button.ts +4 -0
  24. package/lib/components/card.d.ts +1 -0
  25. package/lib/components/card.d.ts.map +1 -1
  26. package/lib/components/card.js +3 -0
  27. package/lib/components/card.ts +4 -0
  28. package/lib/components/chart.d.ts +1 -0
  29. package/lib/components/chart.d.ts.map +1 -1
  30. package/lib/components/chart.js +3 -0
  31. package/lib/components/chart.ts +4 -0
  32. package/lib/components/code.d.ts +1 -0
  33. package/lib/components/code.d.ts.map +1 -1
  34. package/lib/components/code.js +3 -0
  35. package/lib/components/code.ts +4 -0
  36. package/lib/components/container.d.ts +1 -0
  37. package/lib/components/container.d.ts.map +1 -1
  38. package/lib/components/container.js +3 -0
  39. package/lib/components/container.ts +4 -0
  40. package/lib/components/dialog.d.ts +1 -0
  41. package/lib/components/dialog.d.ts.map +1 -1
  42. package/lib/components/dialog.js +3 -0
  43. package/lib/components/dialog.ts +4 -0
  44. package/lib/components/divider.d.ts +1 -0
  45. package/lib/components/divider.d.ts.map +1 -1
  46. package/lib/components/divider.js +3 -0
  47. package/lib/components/divider.ts +4 -0
  48. package/lib/components/dropdown.d.ts +1 -0
  49. package/lib/components/dropdown.d.ts.map +1 -1
  50. package/lib/components/dropdown.js +3 -0
  51. package/lib/components/dropdown.ts +4 -0
  52. package/lib/components/element.d.ts +1 -0
  53. package/lib/components/element.d.ts.map +1 -1
  54. package/lib/components/element.js +3 -0
  55. package/lib/components/element.ts +4 -0
  56. package/lib/components/grid.d.ts +1 -0
  57. package/lib/components/grid.d.ts.map +1 -1
  58. package/lib/components/grid.js +3 -0
  59. package/lib/components/grid.ts +4 -0
  60. package/lib/components/heading.d.ts +1 -0
  61. package/lib/components/heading.d.ts.map +1 -1
  62. package/lib/components/heading.js +3 -0
  63. package/lib/components/heading.ts +4 -0
  64. package/lib/components/hero.d.ts +3 -5
  65. package/lib/components/hero.d.ts.map +1 -1
  66. package/lib/components/hero.js +1 -1
  67. package/lib/components/hero.ts +4 -6
  68. package/lib/components/icon.d.ts +1 -0
  69. package/lib/components/icon.d.ts.map +1 -1
  70. package/lib/components/icon.js +3 -0
  71. package/lib/components/icon.ts +4 -0
  72. package/lib/components/list.d.ts +1 -0
  73. package/lib/components/list.d.ts.map +1 -1
  74. package/lib/components/list.js +3 -0
  75. package/lib/components/list.ts +4 -0
  76. package/lib/components/loading.d.ts +1 -0
  77. package/lib/components/loading.d.ts.map +1 -1
  78. package/lib/components/loading.js +3 -0
  79. package/lib/components/loading.ts +4 -0
  80. package/lib/components/menu.d.ts +1 -0
  81. package/lib/components/menu.d.ts.map +1 -1
  82. package/lib/components/menu.js +3 -0
  83. package/lib/components/menu.ts +4 -0
  84. package/lib/components/modal.d.ts +1 -0
  85. package/lib/components/modal.d.ts.map +1 -1
  86. package/lib/components/modal.js +3 -0
  87. package/lib/components/modal.ts +4 -0
  88. package/lib/components/nav.d.ts +1 -0
  89. package/lib/components/nav.d.ts.map +1 -1
  90. package/lib/components/nav.js +3 -0
  91. package/lib/components/nav.ts +4 -0
  92. package/lib/components/paragraph.d.ts +1 -0
  93. package/lib/components/paragraph.d.ts.map +1 -1
  94. package/lib/components/paragraph.js +3 -0
  95. package/lib/components/paragraph.ts +4 -0
  96. package/lib/components/progress.d.ts +1 -0
  97. package/lib/components/progress.d.ts.map +1 -1
  98. package/lib/components/progress.js +3 -0
  99. package/lib/components/progress.ts +4 -0
  100. package/lib/components/sidebar.d.ts +25 -14
  101. package/lib/components/sidebar.d.ts.map +1 -1
  102. package/lib/components/sidebar.js +186 -88
  103. package/lib/components/sidebar.ts +231 -104
  104. package/lib/components/table.d.ts +1 -0
  105. package/lib/components/table.d.ts.map +1 -1
  106. package/lib/components/table.js +3 -0
  107. package/lib/components/table.ts +4 -0
  108. package/lib/components/tabs.d.ts +1 -0
  109. package/lib/components/tabs.d.ts.map +1 -1
  110. package/lib/components/tabs.js +3 -0
  111. package/lib/components/tabs.ts +4 -0
  112. package/lib/components/theme-toggle.d.ts +1 -0
  113. package/lib/components/theme-toggle.d.ts.map +1 -1
  114. package/lib/components/theme-toggle.js +3 -0
  115. package/lib/components/theme-toggle.ts +4 -0
  116. package/lib/components/tooltip.d.ts +1 -0
  117. package/lib/components/tooltip.d.ts.map +1 -1
  118. package/lib/components/tooltip.js +3 -0
  119. package/lib/components/tooltip.ts +4 -0
  120. package/package.json +1 -1
  121. package/lib/components/guard.d.ts +0 -41
  122. package/lib/components/guard.d.ts.map +0 -1
  123. package/lib/components/guard.js +0 -56
  124. package/lib/components/guard.ts +0 -92
@@ -1,11 +1,20 @@
1
- import { BaseComponent } from './base/BaseComponent.js';
1
+ import { BaseComponent, BaseState } from './base/BaseComponent.js';
2
2
  import { renderIcon } from './icons.js';
3
- import { Menu, MenuOptions } from './menu.js';
4
-
3
+ import { req } from './req.js';
5
4
 
6
5
  // Event definitions
7
6
  const TRIGGER_EVENTS = [] as const;
8
- const CALLBACK_EVENTS = ['toggle'] as const;
7
+ const CALLBACK_EVENTS = ['toggle', 'itemClick'] as const;
8
+
9
+ export interface SidebarItem {
10
+ label: string;
11
+ href?: string;
12
+ click?: () => void;
13
+ icon?: string;
14
+ items?: SidebarItem[];
15
+ active?: boolean;
16
+ itemClass?: string;
17
+ }
9
18
 
10
19
  export interface SidebarOptions {
11
20
  position?: 'left' | 'right';
@@ -14,26 +23,27 @@ export interface SidebarOptions {
14
23
  showToggle?: boolean;
15
24
  expandOnHover?: boolean;
16
25
  collapsed?: boolean;
17
- menu?: MenuOptions;
26
+ items?: SidebarItem[];
27
+ header?: string;
28
+ footer?: string;
18
29
  style?: string;
19
30
  class?: string;
20
31
  }
21
32
 
22
- type SidebarState = {
33
+ type SidebarState = BaseState & {
23
34
  position: 'left' | 'right';
24
35
  width: string;
25
36
  collapsible: boolean;
26
37
  showToggle: boolean;
27
38
  expandOnHover: boolean;
28
39
  collapsed: boolean;
29
- menu: MenuOptions | null;
30
- style: string;
31
- class: string;
40
+ items: SidebarItem[];
41
+ header: string;
42
+ footer: string;
32
43
  };
33
44
 
34
45
  export class Sidebar extends BaseComponent<SidebarState> {
35
46
  private _sidebar: HTMLElement | null = null;
36
- private _menu: Menu | null = null;
37
47
 
38
48
  constructor(id: string, options: SidebarOptions = {}) {
39
49
  // Restore collapsed state from localStorage if available
@@ -48,14 +58,18 @@ export class Sidebar extends BaseComponent<SidebarState> {
48
58
  showToggle: options.showToggle ?? false,
49
59
  expandOnHover: options.expandOnHover ?? false,
50
60
  collapsed: initialCollapsed,
51
- menu: options.menu ?? null,
61
+ items: options.items ?? [],
62
+ header: options.header ?? '',
63
+ footer: options.footer ?? '',
52
64
  style: options.style ?? '',
53
65
  class: options.class ?? ''
54
66
  });
55
67
 
56
- // Listen for URL changes to update menu active states
68
+ this._setActiveStates();
69
+
70
+ // Listen for URL changes to update active states
57
71
  if (typeof window !== 'undefined') {
58
- window.addEventListener('popstate', () => this.refreshMenu());
72
+ window.addEventListener('popstate', () => this.refreshActiveStates());
59
73
  }
60
74
  }
61
75
 
@@ -68,20 +82,160 @@ export class Sidebar extends BaseComponent<SidebarState> {
68
82
  }
69
83
 
70
84
  /* ═════════════════════════════════════════════════════════════════
71
- * FLUENT API
85
+ * PRIVATE HELPERS
72
86
  * ═════════════════════════════════════════════════════════════════ */
73
87
 
74
- // Inherited from BaseComponent:
75
- // - style(), class()
76
- // - bind(), sync(), renderTo()
77
- // - addClass(), removeClass(), toggleClass()
78
- // - visible(), show(), hide()
79
- // - attr(), attrs(), removeAttr()
80
- // - disabled(), enable(), disable()
81
- // - loading(), focus(), blur(), remove()
88
+ private _setActiveStates(): void {
89
+ this.state.items = this.state.items.map(item => ({
90
+ ...item,
91
+ active: item.href ? req.isActiveNavItem(item.href) : false,
92
+ items: item.items?.map(subItem => ({
93
+ ...subItem,
94
+ active: subItem.href ? req.isActiveNavItem(subItem.href) : false
95
+ }))
96
+ }));
97
+ }
98
+
99
+ private _renderItem(item: SidebarItem): HTMLElement {
100
+ const itemEl = document.createElement('div');
101
+ itemEl.className = 'jux-sidebar-item';
102
+
103
+ if (item.itemClass) {
104
+ itemEl.className += ` ${item.itemClass}`;
105
+ }
106
+
107
+ if (item.active) {
108
+ itemEl.classList.add('jux-sidebar-item-active');
109
+ }
110
+
111
+ if (item.href) {
112
+ const link = document.createElement('a');
113
+ link.className = 'jux-sidebar-link';
114
+ link.href = item.href;
115
+
116
+ if (item.active) {
117
+ link.classList.add('jux-sidebar-link-active');
118
+ }
119
+
120
+ if (item.icon) {
121
+ const icon = document.createElement('span');
122
+ icon.className = 'jux-sidebar-icon';
123
+ icon.appendChild(renderIcon(item.icon));
124
+ link.appendChild(icon);
125
+ }
126
+
127
+ const label = document.createElement('span');
128
+ label.className = 'jux-sidebar-label';
129
+ label.textContent = item.label;
130
+ link.appendChild(label);
131
+
132
+ link.addEventListener('click', (e) => {
133
+ this._triggerCallback('itemClick', { item, event: e });
134
+ });
135
+
136
+ itemEl.appendChild(link);
137
+ } else {
138
+ const button = document.createElement('button');
139
+ button.className = 'jux-sidebar-button';
140
+ button.type = 'button';
141
+
142
+ if (item.icon) {
143
+ const icon = document.createElement('span');
144
+ icon.className = 'jux-sidebar-icon';
145
+ icon.appendChild(renderIcon(item.icon));
146
+ button.appendChild(icon);
147
+ }
148
+
149
+ const label = document.createElement('span');
150
+ label.className = 'jux-sidebar-label';
151
+ label.textContent = item.label;
152
+ button.appendChild(label);
153
+
154
+ button.addEventListener('click', (e) => {
155
+ if (item.click) {
156
+ item.click();
157
+ }
158
+ this._triggerCallback('itemClick', { item, event: e });
159
+ });
160
+
161
+ itemEl.appendChild(button);
162
+ }
163
+
164
+ // Handle sub-items
165
+ if (item.items && item.items.length > 0) {
166
+ itemEl.classList.add('jux-sidebar-item-has-submenu');
167
+
168
+ const submenu = document.createElement('div');
169
+ submenu.className = 'jux-sidebar-submenu';
170
+
171
+ item.items.forEach(subItem => {
172
+ submenu.appendChild(this._renderItem(subItem));
173
+ });
174
+
175
+ itemEl.appendChild(submenu);
176
+
177
+ // Toggle submenu expansion
178
+ const clickTarget = itemEl.querySelector('a, button');
179
+ if (clickTarget) {
180
+ clickTarget.addEventListener('click', (e) => {
181
+ if (!item.href) {
182
+ e.preventDefault();
183
+ }
184
+ itemEl.classList.toggle('jux-sidebar-item-expanded');
185
+ });
186
+ }
187
+ }
188
+
189
+ return itemEl;
190
+ }
191
+
192
+ /* ═════════════════════════════════════════════════════════════════
193
+ * REACTIVE UPDATE
194
+ * ═════════════════════════════════════════════════════════════════ */
195
+
196
+ update(prop: string, value: any): void {
197
+
198
+ if (!this._sidebar) return;
199
+
200
+ if (prop === 'collapsed') {
201
+ this._sidebar.classList.toggle('jux-sidebar-collapsed', value);
202
+
203
+ // Update toggle button state
204
+ const toggleBtn = this._sidebar.querySelector('.jux-sidebar-toggle');
205
+ if (toggleBtn) {
206
+ toggleBtn.classList.toggle('jux-sidebar-toggle-collapsed', value);
207
+ }
208
+
209
+ // Save to localStorage
210
+ const storageKey = `jux-sidebar-${this._id}-collapsed`;
211
+ localStorage.setItem(storageKey, String(value));
212
+ } else if (prop === 'items') {
213
+ this._setActiveStates();
214
+ const nav = this._sidebar.querySelector('.jux-sidebar-nav');
215
+ if (nav) {
216
+ nav.innerHTML = '';
217
+ this.state.items.forEach(item => {
218
+ nav.appendChild(this._renderItem(item));
219
+ });
220
+ }
221
+ } else if (prop === 'header') {
222
+ const header = this._sidebar.querySelector('.jux-sidebar-header');
223
+ if (header) header.textContent = value;
224
+ } else if (prop === 'footer') {
225
+ const footer = this._sidebar.querySelector('.jux-sidebar-footer');
226
+ if (footer) footer.textContent = value;
227
+ }
228
+ }
229
+
230
+ /* ═════════════════════════════════════════════════════════════════
231
+ * FLUENT API
232
+ * ═════════════════════════════════════════════════════════════════ */
82
233
 
83
234
  width(value: string): this {
84
235
  this.state.width = value;
236
+ if (this._sidebar) {
237
+ this._sidebar.style.width = value;
238
+ }
85
239
  return this;
86
240
  }
87
241
 
@@ -107,42 +261,38 @@ export class Sidebar extends BaseComponent<SidebarState> {
107
261
 
108
262
  collapsed(value: boolean): this {
109
263
  this.state.collapsed = value;
110
- this._updateCollapsedState();
111
264
  return this;
112
265
  }
113
266
 
114
- menu(value: MenuOptions): this {
115
- this.state.menu = value;
267
+ items(value: SidebarItem[]): this {
268
+ this.state.items = value;
116
269
  return this;
117
270
  }
118
271
 
119
- toggle(): void {
120
- this.state.collapsed = !this.state.collapsed;
121
- this._updateCollapsedState();
122
-
123
- // Save to localStorage
124
- const storageKey = `jux-sidebar-${this._id}-collapsed`;
125
- localStorage.setItem(storageKey, String(this.state.collapsed));
272
+ addItem(item: SidebarItem): this {
273
+ this.state.items = [...this.state.items, item];
274
+ return this;
275
+ }
126
276
 
127
- // 🎯 Fire the toggle callback event
128
- this._triggerCallback('toggle', this.state.collapsed);
277
+ header(value: string): this {
278
+ this.state.header = value;
279
+ return this;
129
280
  }
130
281
 
131
- /**
132
- * Refresh menu active states (called automatically on URL changes)
133
- */
134
- refreshMenu(): this {
135
- if (this._menu && this.state.menu) {
136
- // Re-evaluate and update menu items with current active states
137
- this._menu.items(this.state.menu.items || []);
138
- }
282
+ footer(value: string): this {
283
+ this.state.footer = value;
139
284
  return this;
140
285
  }
141
286
 
142
- private _updateCollapsedState(): void {
143
- if (this._sidebar) {
144
- this._sidebar.classList.toggle('jux-sidebar-collapsed', this.state.collapsed);
145
- }
287
+ toggle(): void {
288
+ this.state.collapsed = !this.state.collapsed;
289
+ this._triggerCallback('toggle', this.state.collapsed);
290
+ }
291
+
292
+ refreshActiveStates(): this {
293
+ this._setActiveStates();
294
+ this.state.items = [...this.state.items]; // Trigger update
295
+ return this;
146
296
  }
147
297
 
148
298
  /* ═════════════════════════════════════════════════════════════════
@@ -152,30 +302,52 @@ export class Sidebar extends BaseComponent<SidebarState> {
152
302
  render(targetId?: string): this {
153
303
  const container = this._setupContainer(targetId);
154
304
 
155
- const { position, collapsed, expandOnHover, menu, style, class: className } = this.state;
305
+ const { position, collapsed, expandOnHover, items, header, footer, width, style, class: className } = this.state;
156
306
 
157
- // Build sidebar element
158
307
  const sidebar = document.createElement('aside');
308
+ sidebar.className = `jux-sidebar jux-sidebar-${position}`;
159
309
  sidebar.id = this._id;
160
- if (className) sidebar.className = className;
161
- if (style) sidebar.setAttribute('style', style);
162
310
 
163
- // Apply initial collapsed state
164
311
  if (collapsed) {
165
312
  sidebar.classList.add('jux-sidebar-collapsed');
166
313
  }
167
314
 
168
- // Menu container (append first so toggle appears at bottom)
169
- const menuContainer = document.createElement('div');
170
- menuContainer.className = 'jux-sidebar-menu';
171
- menuContainer.id = `${this._id}-menu`;
172
- sidebar.appendChild(menuContainer);
315
+ if (className) sidebar.className += ` ${className}`;
316
+ if (style) sidebar.setAttribute('style', style);
317
+ if (width) sidebar.style.width = width;
318
+
319
+ // Header
320
+ if (header) {
321
+ const headerEl = document.createElement('div');
322
+ headerEl.className = 'jux-sidebar-header';
323
+ headerEl.textContent = header;
324
+ sidebar.appendChild(headerEl);
325
+ }
326
+
327
+ // Navigation
328
+ const nav = document.createElement('nav');
329
+ nav.className = 'jux-sidebar-nav';
330
+
331
+ items.forEach(item => {
332
+ nav.appendChild(this._renderItem(item));
333
+ });
334
+
335
+ sidebar.appendChild(nav);
336
+
337
+ // Footer
338
+ if (footer) {
339
+ const footerEl = document.createElement('div');
340
+ footerEl.className = 'jux-sidebar-footer';
341
+ footerEl.textContent = footer;
342
+ sidebar.appendChild(footerEl);
343
+ }
173
344
 
174
- // Toggle button (append last so it appears at bottom)
345
+ // Toggle button
175
346
  if (this.state.collapsible || this.state.showToggle) {
176
347
  const toggleBtn = document.createElement('button');
177
348
  toggleBtn.className = 'jux-sidebar-toggle';
178
349
  toggleBtn.type = 'button';
350
+ toggleBtn.setAttribute('aria-label', 'Toggle sidebar');
179
351
 
180
352
  const toggleIcon = document.createElement('span');
181
353
  toggleIcon.className = 'jux-sidebar-toggle-icon';
@@ -189,13 +361,12 @@ export class Sidebar extends BaseComponent<SidebarState> {
189
361
 
190
362
  toggleBtn.addEventListener('click', () => {
191
363
  this.toggle();
192
- toggleBtn.classList.toggle('jux-sidebar-toggle-collapsed', this.state.collapsed);
193
364
  });
194
365
 
195
366
  sidebar.appendChild(toggleBtn);
196
367
  }
197
368
 
198
- // Handle expand on hover
369
+ // Expand on hover
199
370
  if (expandOnHover) {
200
371
  sidebar.addEventListener('mouseenter', () => {
201
372
  if (this.state.collapsed) {
@@ -210,56 +381,12 @@ export class Sidebar extends BaseComponent<SidebarState> {
210
381
  });
211
382
  }
212
383
 
213
- // Wire events using inherited method
214
384
  this._wireStandardEvents(sidebar);
215
-
216
- // Wire sync bindings for 'collapsed' property
217
- this._syncBindings.forEach(({ property, stateObj, toState, toComponent }) => {
218
- if (property === 'collapsed') {
219
- const transform = toComponent || ((v: any) => v);
220
-
221
- stateObj.subscribe((val: any) => {
222
- const transformed = transform(val);
223
- const isCollapsed = Boolean(transformed);
224
- this.state.collapsed = isCollapsed;
225
- this._updateCollapsedState();
226
- });
227
- }
228
- else if (property === 'menu') {
229
- const transform = toComponent || ((v: any) => v);
230
-
231
- stateObj.subscribe((val: any) => {
232
- const transformed = transform(val);
233
- this.state.menu = transformed;
234
-
235
- // Update menu items if menu instance exists
236
- if (this._menu) {
237
- this._menu.items(transformed.items || []);
238
-
239
- // Re-render the menu
240
- const menuEl = menuContainer.querySelector(`#${this._id}-menu-instance`);
241
- if (menuEl) {
242
- menuEl.remove();
243
- }
244
- this._menu.render(`#${menuContainer.id}`);
245
- }
246
- });
247
- }
248
- });
385
+ this._wireAllSyncs();
249
386
 
250
387
  container.appendChild(sidebar);
251
388
  this._sidebar = sidebar;
252
389
 
253
- // Create and render menu (after sidebar is in DOM)
254
- if (menu) {
255
- this._menu = new Menu(`${this._id}-menu-instance`, {
256
- ...menu,
257
- orientation: 'vertical'
258
- });
259
- this._menu.render(`#${menuContainer.id}`);
260
- }
261
-
262
- // Trigger Iconify icon rendering
263
390
  requestAnimationFrame(() => {
264
391
  if ((window as any).Iconify) {
265
392
  (window as any).Iconify.scan();
@@ -107,6 +107,7 @@ export declare class Table extends BaseComponent<TableState> {
107
107
  deselectRows(indexes: number[]): this;
108
108
  getSelectedIndexes(): number[];
109
109
  getSelectedRows(): any[];
110
+ update(prop: string, value: any): void;
110
111
  render(targetId?: string): this;
111
112
  protected _setupContainer(targetId?: string): HTMLElement;
112
113
  private _buildWrapper;
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["table.ts"],"names":[],"mappings":"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"}
@@ -322,6 +322,9 @@ export class Table extends BaseComponent {
322
322
  * SECTION 5: RENDER LIFECYCLE
323
323
  * Main render method and BUILD phase helpers
324
324
  * ═════════════════════════════════════════════════════════════════ */
325
+ update(prop, value) {
326
+ // No reactive updates needed
327
+ }
325
328
  render(targetId) {
326
329
  const container = this._setupContainer(targetId);
327
330
  const wrapper = this._buildWrapper();
@@ -469,10 +469,14 @@ export class Table extends BaseComponent<TableState> {
469
469
  return Array.from(this.state.selectedIndexes).map(index => this.state.rows[index]);
470
470
  }
471
471
 
472
+
472
473
  /* ═════════════════════════════════════════════════════════════════
473
474
  * SECTION 5: RENDER LIFECYCLE
474
475
  * Main render method and BUILD phase helpers
475
476
  * ═════════════════════════════════════════════════════════════════ */
477
+ update(prop: string, value: any): void {
478
+ // No reactive updates needed
479
+ }
476
480
 
477
481
  render(targetId?: string): this {
478
482
  const container = this._setupContainer(targetId);
@@ -28,6 +28,7 @@ export declare class Tabs extends BaseComponent<TabsState> {
28
28
  activeTab(value: string): this;
29
29
  variant(value: 'default' | 'pills' | 'underline'): this;
30
30
  private _updateActiveTab;
31
+ update(prop: string, value: any): void;
31
32
  render(targetId?: string): this;
32
33
  private _switchTab;
33
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAMxD,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,IAAK,SAAQ,aAAa,CAAC,SAAS,CAAC;gBACpC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB;IAUjD,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAUhD,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI;IAKxB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAKtB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI;IAKvD,OAAO,CAAC,gBAAgB;IAoBxB,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAwI/B,OAAO,CAAC,UAAU;CAcnB;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,IAAI,CAEhE"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAMxD,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,IAAK,SAAQ,aAAa,CAAC,SAAS,CAAC;gBACpC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB;IAUjD,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAUhD,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI;IAKxB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAKtB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI;IAKvD,OAAO,CAAC,gBAAgB;IAgBxB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAQtC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAwI/B,OAAO,CAAC,UAAU;CAcnB;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,IAAI,CAEhE"}
@@ -54,6 +54,9 @@ export class Tabs extends BaseComponent {
54
54
  panel.style.display = isActive ? 'block' : 'none';
55
55
  });
56
56
  }
57
+ update(prop, value) {
58
+ // No reactive updates needed
59
+ }
57
60
  /* ═════════════════════════════════════════════════════════════════
58
61
  * RENDER
59
62
  * ═════════════════════════════════════════════════════════════════ */
@@ -89,6 +89,10 @@ export class Tabs extends BaseComponent<TabsState> {
89
89
  });
90
90
  }
91
91
 
92
+ update(prop: string, value: any): void {
93
+ // No reactive updates needed
94
+ }
95
+
92
96
  /* ═════════════════════════════════════════════════════════════════
93
97
  * RENDER
94
98
  * ═════════════════════════════════════════════════════════════════ */
@@ -38,6 +38,7 @@ export declare class ThemeToggle extends BaseComponent<ThemeToggleState> {
38
38
  private cycleTheme;
39
39
  private _updateDOM;
40
40
  render(targetId?: string): this;
41
+ update(prop: string, value: any): void;
41
42
  }
42
43
  export declare function themeToggle(id: string, options?: ThemeToggleOptions): ThemeToggle;
43
44
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["theme-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAOxD,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,WAAY,SAAQ,aAAa,CAAC,gBAAgB,CAAC;gBAChD,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;IAoBxD,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAQhD,OAAO,CAAC,MAAM,CAAC,WAAW;IAsB1B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI;IAK5B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI;IAKrD,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAK/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAe/B,QAAQ,IAAI,MAAM;IAIlB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAW5B,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IA0ClB,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAmFlC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAErF"}
1
+ {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["theme-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAOxD,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,WAAY,SAAQ,aAAa,CAAC,gBAAgB,CAAC;gBAChD,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;IAoBxD,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAQhD,OAAO,CAAC,MAAM,CAAC,WAAW;IAsB1B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI;IAK5B,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI;IAKrD,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAK/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAe/B,QAAQ,IAAI,MAAM;IAIlB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAW5B,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IA0ClB,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAoF/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAGzC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAErF"}
@@ -209,6 +209,9 @@ export class ThemeToggle extends BaseComponent {
209
209
  });
210
210
  return this;
211
211
  }
212
+ update(prop, value) {
213
+ // No reactive updates needed - uses manual _updateDOM()
214
+ }
212
215
  }
213
216
  export function themeToggle(id, options = {}) {
214
217
  return new ThemeToggle(id, options);
@@ -286,6 +286,10 @@ export class ThemeToggle extends BaseComponent<ThemeToggleState> {
286
286
 
287
287
  return this;
288
288
  }
289
+
290
+ update(prop: string, value: any): void {
291
+ // No reactive updates needed - uses manual _updateDOM()
292
+ }
289
293
  }
290
294
 
291
295
  export function themeToggle(id: string, options: ThemeToggleOptions = {}): ThemeToggle {
@@ -24,6 +24,7 @@ export declare class Tooltip extends BaseComponent<TooltipState> {
24
24
  private _show;
25
25
  private _hide;
26
26
  render(targetId?: string): this;
27
+ update(prop: string, value: any): void;
27
28
  }
28
29
  export declare function tooltip(id: string, options?: TooltipOptions): Tooltip;
29
30
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAMxD,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,OAAQ,SAAQ,aAAa,CAAC,YAAY,CAAC;IACpD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,OAAO,CAA4B;gBAE/B,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;IASpD,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAQhD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAK1D,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAY1C,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,KAAK;IAiCb,OAAO,CAAC,KAAK;IAMb,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAKlC;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAEzE"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAMxD,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,OAAQ,SAAQ,aAAa,CAAC,YAAY,CAAC;IACpD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,OAAO,CAA4B;gBAE/B,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;IASpD,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAQhD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAK1D,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAY1C,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,KAAK;IAiCb,OAAO,CAAC,KAAK;IAMb,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAM/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAGzC;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAEzE"}
@@ -103,6 +103,9 @@ export class Tooltip extends BaseComponent {
103
103
  console.warn('Tooltip: Use .attachTo(element) instead of .render()');
104
104
  return this;
105
105
  }
106
+ update(prop, value) {
107
+ // No reactive updates needed
108
+ }
106
109
  }
107
110
  export function tooltip(id, options = {}) {
108
111
  return new Tooltip(id, options);
@@ -137,6 +137,10 @@ export class Tooltip extends BaseComponent<TooltipState> {
137
137
  console.warn('Tooltip: Use .attachTo(element) instead of .render()');
138
138
  return this;
139
139
  }
140
+
141
+ update(prop: string, value: any): void {
142
+ // No reactive updates needed
143
+ }
140
144
  }
141
145
 
142
146
  export function tooltip(id: string, options: TooltipOptions = {}): Tooltip {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juxscript",
3
- "version": "1.1.13",
3
+ "version": "1.1.15",
4
4
  "type": "module",
5
5
  "description": "A JavaScript UX authorship platform",
6
6
  "main": "index.js",