snice 3.10.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/bin/templates/CLAUDE.md +7 -7
  2. package/dist/components/audio-recorder/snice-audio-recorder.js +6 -6
  3. package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -1
  4. package/dist/components/banner/snice-banner.js +3 -3
  5. package/dist/components/banner/snice-banner.js.map +1 -1
  6. package/dist/components/button/snice-button.js +1 -1
  7. package/dist/components/calendar/snice-calendar.js +2 -2
  8. package/dist/components/calendar/snice-calendar.js.map +1 -1
  9. package/dist/components/camera/snice-camera.d.ts +2 -0
  10. package/dist/components/camera/snice-camera.js +26 -7
  11. package/dist/components/camera/snice-camera.js.map +1 -1
  12. package/dist/components/carousel/snice-carousel.js +1 -1
  13. package/dist/components/carousel/snice-carousel.js.map +1 -1
  14. package/dist/components/checkbox/snice-checkbox.js +3 -3
  15. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  16. package/dist/components/color-picker/snice-color-picker.js +4 -4
  17. package/dist/components/color-picker/snice-color-picker.js.map +1 -1
  18. package/dist/components/command-palette/snice-command-palette.js +5 -5
  19. package/dist/components/command-palette/snice-command-palette.js.map +1 -1
  20. package/dist/components/date-picker/snice-date-picker.js +8 -8
  21. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  22. package/dist/components/draw/snice-draw.js +5 -5
  23. package/dist/components/draw/snice-draw.js.map +1 -1
  24. package/dist/components/drawer/snice-drawer.js +2 -2
  25. package/dist/components/drawer/snice-drawer.js.map +1 -1
  26. package/dist/components/empty-state/snice-empty-state.js +1 -1
  27. package/dist/components/empty-state/snice-empty-state.js.map +1 -1
  28. package/dist/components/file-gallery/snice-file-gallery.d.ts +1 -1
  29. package/dist/components/file-gallery/snice-file-gallery.js +20 -20
  30. package/dist/components/file-gallery/snice-file-gallery.js.map +1 -1
  31. package/dist/components/file-gallery/snice-file-gallery.types.d.ts +0 -1
  32. package/dist/components/file-upload/snice-file-upload.js +2 -2
  33. package/dist/components/file-upload/snice-file-upload.js.map +1 -1
  34. package/dist/components/input/snice-input.js +5 -5
  35. package/dist/components/input/snice-input.js.map +1 -1
  36. package/dist/components/kanban/snice-kanban.js +2 -2
  37. package/dist/components/kanban/snice-kanban.js.map +1 -1
  38. package/dist/components/location/snice-location.js +1 -1
  39. package/dist/components/location/snice-location.js.map +1 -1
  40. package/dist/components/login/snice-login.js +4 -4
  41. package/dist/components/login/snice-login.js.map +1 -1
  42. package/dist/components/menu/snice-menu-item.js +1 -1
  43. package/dist/components/menu/snice-menu-item.js.map +1 -1
  44. package/dist/components/menu/snice-menu.js +3 -3
  45. package/dist/components/menu/snice-menu.js.map +1 -1
  46. package/dist/components/modal/snice-modal.js +2 -2
  47. package/dist/components/modal/snice-modal.js.map +1 -1
  48. package/dist/components/music-player/snice-music-player.js +10 -10
  49. package/dist/components/music-player/snice-music-player.js.map +1 -1
  50. package/dist/components/pagination/snice-pagination.js +1 -1
  51. package/dist/components/pagination/snice-pagination.js.map +1 -1
  52. package/dist/components/qr-reader/snice-qr-reader.js +3 -3
  53. package/dist/components/qr-reader/snice-qr-reader.js.map +1 -1
  54. package/dist/components/radio/snice-radio.js +1 -1
  55. package/dist/components/radio/snice-radio.js.map +1 -1
  56. package/dist/components/select/snice-select.js +3 -3
  57. package/dist/components/select/snice-select.js.map +1 -1
  58. package/dist/components/slider/snice-slider.js +2 -2
  59. package/dist/components/slider/snice-slider.js.map +1 -1
  60. package/dist/components/split-pane/snice-split-pane.js +1 -1
  61. package/dist/components/split-pane/snice-split-pane.js.map +1 -1
  62. package/dist/components/switch/snice-switch.js +1 -1
  63. package/dist/components/switch/snice-switch.js.map +1 -1
  64. package/dist/components/table/snice-cell-actions.js +1 -1
  65. package/dist/components/table/snice-cell-actions.js.map +1 -1
  66. package/dist/components/table/snice-column.js +1 -1
  67. package/dist/components/table/snice-column.js.map +1 -1
  68. package/dist/components/table/snice-header.js +3 -3
  69. package/dist/components/table/snice-header.js.map +1 -1
  70. package/dist/components/table/snice-row.js +3 -3
  71. package/dist/components/table/snice-row.js.map +1 -1
  72. package/dist/components/table/snice-table.js +3 -3
  73. package/dist/components/table/snice-table.js.map +1 -1
  74. package/dist/components/tabs/snice-tab.js +2 -2
  75. package/dist/components/tabs/snice-tab.js.map +1 -1
  76. package/dist/components/tabs/snice-tabs.js +2 -2
  77. package/dist/components/tabs/snice-tabs.js.map +1 -1
  78. package/dist/components/terminal/snice-terminal.js +3 -3
  79. package/dist/components/terminal/snice-terminal.js.map +1 -1
  80. package/dist/components/textarea/snice-textarea.js +4 -4
  81. package/dist/components/textarea/snice-textarea.js.map +1 -1
  82. package/dist/components/theme/theme.css +3 -0
  83. package/dist/components/timer/snice-timer.js +4 -4
  84. package/dist/components/timer/snice-timer.js.map +1 -1
  85. package/dist/components/tree/snice-tree-item.js +1 -1
  86. package/dist/components/tree/snice-tree-item.js.map +1 -1
  87. package/dist/components/tree/snice-tree.js +5 -5
  88. package/dist/components/tree/snice-tree.js.map +1 -1
  89. package/dist/index.cjs +7 -3
  90. package/dist/index.cjs.map +1 -1
  91. package/dist/index.esm.js +7 -3
  92. package/dist/index.esm.js.map +1 -1
  93. package/dist/index.iife.js +7 -3
  94. package/dist/index.iife.js.map +1 -1
  95. package/dist/symbols.cjs +1 -1
  96. package/dist/symbols.esm.js +1 -1
  97. package/dist/transitions.cjs +1 -1
  98. package/dist/transitions.esm.js +1 -1
  99. package/docs/ai/components/audio-recorder.md +6 -6
  100. package/docs/ai/components/calendar.md +2 -2
  101. package/docs/ai/components/camera.md +13 -6
  102. package/docs/ai/components/carousel.md +1 -1
  103. package/docs/ai/components/color-picker.md +1 -1
  104. package/docs/ai/components/command-palette.md +6 -6
  105. package/docs/ai/components/draw.md +5 -5
  106. package/docs/ai/components/drawer.md +2 -2
  107. package/docs/ai/components/empty-state.md +1 -1
  108. package/docs/ai/components/file-gallery.md +7 -6
  109. package/docs/ai/components/file-upload.md +2 -2
  110. package/docs/ai/components/kanban.md +3 -3
  111. package/docs/ai/components/menu.md +3 -3
  112. package/docs/ai/components/modal.md +2 -2
  113. package/docs/ai/components/music-player.md +9 -9
  114. package/docs/ai/components/pagination.md +2 -2
  115. package/docs/ai/components/qr-reader.md +4 -4
  116. package/docs/ai/components/select.md +4 -4
  117. package/docs/ai/components/slider.md +1 -1
  118. package/docs/ai/components/split-pane.md +1 -1
  119. package/docs/ai/components/switch.md +2 -2
  120. package/docs/ai/components/tabs.md +4 -4
  121. package/docs/ai/components/terminal.md +1 -1
  122. package/docs/ai/components/timer.md +4 -4
  123. package/docs/ai/components/tree.md +7 -7
  124. package/docs/components/audio-recorder.md +7 -7
  125. package/docs/components/banner.md +4 -4
  126. package/docs/components/calendar.md +11 -11
  127. package/docs/components/camera.md +33 -10
  128. package/docs/components/carousel.md +1 -1
  129. package/docs/components/color-picker.md +1 -1
  130. package/docs/components/command-palette.md +6 -6
  131. package/docs/components/draw.md +6 -6
  132. package/docs/components/drawer.md +6 -6
  133. package/docs/components/empty-state.md +1 -1
  134. package/docs/components/file-gallery.md +24 -23
  135. package/docs/components/file-upload.md +7 -7
  136. package/docs/components/kanban.md +7 -7
  137. package/docs/components/menu.md +11 -11
  138. package/docs/components/modal.md +7 -7
  139. package/docs/components/music-player.md +16 -16
  140. package/docs/components/pagination.md +5 -5
  141. package/docs/components/qr-reader.md +12 -12
  142. package/docs/components/select.md +9 -9
  143. package/docs/components/slider.md +6 -6
  144. package/docs/components/split-pane.md +2 -2
  145. package/docs/components/switch.md +4 -4
  146. package/docs/components/tabs.md +10 -10
  147. package/docs/components/terminal.md +6 -6
  148. package/docs/components/textarea.md +7 -7
  149. package/docs/components/timer.md +8 -8
  150. package/docs/components/tree.md +9 -9
  151. package/package.json +1 -1
@@ -36,7 +36,7 @@ const modal = document.querySelector('snice-modal');
36
36
  modal.show();
37
37
 
38
38
  // Listen for events
39
- modal.addEventListener('@snice/modal-close', () => {
39
+ modal.addEventListener('modal-close', () => {
40
40
  console.log('Modal closed');
41
41
  });
42
42
  ```
@@ -71,7 +71,7 @@ modal.close();
71
71
 
72
72
  ## Events
73
73
 
74
- ### `@snice/modal-open`
74
+ ### `modal-open`
75
75
  Fired when the modal opens.
76
76
 
77
77
  **Event Detail:**
@@ -83,12 +83,12 @@ Fired when the modal opens.
83
83
 
84
84
  **Usage:**
85
85
  ```typescript
86
- modal.addEventListener('@snice/modal-open', (e) => {
86
+ modal.addEventListener('modal-open', (e) => {
87
87
  console.log('Modal opened:', e.detail.modal);
88
88
  });
89
89
  ```
90
90
 
91
- ### `@snice/modal-close`
91
+ ### `modal-close`
92
92
  Fired when the modal closes.
93
93
 
94
94
  **Event Detail:**
@@ -100,7 +100,7 @@ Fired when the modal closes.
100
100
 
101
101
  **Usage:**
102
102
  ```typescript
103
- modal.addEventListener('@snice/modal-close', (e) => {
103
+ modal.addEventListener('modal-close', (e) => {
104
104
  console.log('Modal closed:', e.detail.modal);
105
105
  });
106
106
  ```
@@ -343,12 +343,12 @@ import type { SniceModalElement } from 'snice/components/modal/snice-modal.types
343
343
 
344
344
  const modal = document.querySelector<SniceModalElement>('snice-modal');
345
345
 
346
- modal.addEventListener('@snice/modal-open', () => {
346
+ modal.addEventListener('modal-open', () => {
347
347
  console.log('Modal opened');
348
348
  // Pause video, etc.
349
349
  });
350
350
 
351
- modal.addEventListener('@snice/modal-close', () => {
351
+ modal.addEventListener('modal-close', () => {
352
352
  console.log('Modal closed');
353
353
  // Resume video, etc.
354
354
  });
@@ -24,7 +24,7 @@ A full-featured audio player with playlist support, shuffle, repeat modes, and v
24
24
  ];
25
25
 
26
26
  // Listen for events
27
- player.addEventListener('@snice/player-play', (e) => {
27
+ player.addEventListener('player-play', (e) => {
28
28
  console.log('Playing:', e.detail.track.title);
29
29
  });
30
30
  </script>
@@ -117,16 +117,16 @@ Get current track.
117
117
 
118
118
  ## Events
119
119
 
120
- - `@snice/player-play` - Playback started
121
- - `@snice/player-pause` - Playback paused
122
- - `@snice/player-stop` - Playback stopped
123
- - `@snice/player-track-change` - Track changed
124
- - `@snice/player-track-ended` - Track ended
125
- - `@snice/player-shuffle-change` - Shuffle changed
126
- - `@snice/player-repeat-change` - Repeat mode changed
127
- - `@snice/player-volume-change` - Volume changed
120
+ - `player-play` - Playback started
121
+ - `player-pause` - Playback paused
122
+ - `player-stop` - Playback stopped
123
+ - `player-track-change` - Track changed
124
+ - `player-track-ended` - Track ended
125
+ - `player-shuffle-change` - Shuffle changed
126
+ - `player-repeat-change` - Repeat mode changed
127
+ - `player-volume-change` - Volume changed
128
128
  - `@snice/player-time-update` - Playback time updated
129
- - `@snice/player-error` - Error occurred
129
+ - `player-error` - Error occurred
130
130
 
131
131
  ## Examples
132
132
 
@@ -228,19 +228,19 @@ player.seek(30); // Jump to 30 seconds
228
228
  ```javascript
229
229
  const player = document.querySelector('snice-music-player');
230
230
 
231
- player.addEventListener('@snice/player-play', (e) => {
231
+ player.addEventListener('player-play', (e) => {
232
232
  console.log('Playing:', e.detail.track);
233
233
  });
234
234
 
235
- player.addEventListener('@snice/player-pause', (e) => {
235
+ player.addEventListener('player-pause', (e) => {
236
236
  console.log('Paused:', e.detail.track);
237
237
  });
238
238
 
239
- player.addEventListener('@snice/player-track-change', (e) => {
239
+ player.addEventListener('player-track-change', (e) => {
240
240
  console.log('Track changed:', e.detail.track);
241
241
  });
242
242
 
243
- player.addEventListener('@snice/player-track-ended', (e) => {
243
+ player.addEventListener('player-track-ended', (e) => {
244
244
  console.log('Track ended:', e.detail.track);
245
245
  });
246
246
 
@@ -248,7 +248,7 @@ player.addEventListener('@snice/player-time-update', (e) => {
248
248
  console.log('Time:', e.detail.currentTime, '/', e.detail.duration);
249
249
  });
250
250
 
251
- player.addEventListener('@snice/player-error', (e) => {
251
+ player.addEventListener('player-error', (e) => {
252
252
  console.error('Error:', e.detail.error);
253
253
  });
254
254
  ```
@@ -280,7 +280,7 @@ await player.play();
280
280
  ```javascript
281
281
  // Tracks in playlist are clickable by default
282
282
  // Listen for track changes
283
- player.addEventListener('@snice/player-track-change', (e) => {
283
+ player.addEventListener('player-track-change', (e) => {
284
284
  console.log('User selected:', e.detail.track.title);
285
285
  });
286
286
  ```
@@ -20,7 +20,7 @@ The `<snice-pagination>` component provides a flexible pagination interface for
20
20
  import 'snice/components/pagination/snice-pagination';
21
21
 
22
22
  const pagination = document.querySelector('snice-pagination');
23
- pagination.addEventListener('@snice/pagination-change', (e) => {
23
+ pagination.addEventListener('pagination-change', (e) => {
24
24
  console.log('Page changed to:', e.detail.page);
25
25
  });
26
26
  ```
@@ -78,7 +78,7 @@ pagination.lastPage();
78
78
 
79
79
  ## Events
80
80
 
81
- ### `@snice/pagination-change`
81
+ ### `pagination-change`
82
82
  Fired when the page changes.
83
83
 
84
84
  **Event Detail:**
@@ -91,7 +91,7 @@ Fired when the page changes.
91
91
 
92
92
  **Usage:**
93
93
  ```typescript
94
- pagination.addEventListener('@snice/pagination-change', (e) => {
94
+ pagination.addEventListener('pagination-change', (e) => {
95
95
  const { page, previousPage } = e.detail;
96
96
  console.log(`Changed from page ${previousPage} to ${page}`);
97
97
  });
@@ -194,7 +194,7 @@ pagination.lastPage();
194
194
  ```typescript
195
195
  const pagination = document.querySelector('snice-pagination');
196
196
 
197
- pagination.addEventListener('@snice/pagination-change', (e) => {
197
+ pagination.addEventListener('pagination-change', (e) => {
198
198
  const { page } = e.detail;
199
199
 
200
200
  // Fetch data for the new page
@@ -258,7 +258,7 @@ async function fetchPageData(page: number) {
258
258
  }
259
259
 
260
260
  // Listen for page changes
261
- pagination.addEventListener('@snice/pagination-change', (e) => {
261
+ pagination.addEventListener('pagination-change', (e) => {
262
262
  renderPage(e.detail.page);
263
263
  });
264
264
 
@@ -19,7 +19,7 @@
19
19
  <script>
20
20
  const reader = document.querySelector('snice-qr-reader');
21
21
 
22
- reader.addEventListener('@snice/qr-scan', (event) => {
22
+ reader.addEventListener('qr-scan', (event) => {
23
23
  console.log('QR Code:', event.detail.data);
24
24
  });
25
25
  </script>
@@ -117,7 +117,7 @@ const result = await reader.snap(); // Returns QR data or null
117
117
 
118
118
  ## Events
119
119
 
120
- ### `@snice/qr-scan`
120
+ ### `qr-scan`
121
121
  Fired when a QR code is successfully detected.
122
122
 
123
123
  **Detail Properties:**
@@ -126,13 +126,13 @@ Fired when a QR code is successfully detected.
126
126
  - `reader` (SniceQRReader): Reference to the component
127
127
 
128
128
  ```javascript
129
- reader.addEventListener('@snice/qr-scan', (event) => {
129
+ reader.addEventListener('qr-scan', (event) => {
130
130
  console.log('Data:', event.detail.data);
131
131
  console.log('Time:', new Date(event.detail.timestamp));
132
132
  });
133
133
  ```
134
134
 
135
- ### `@snice/qr-error`
135
+ ### `qr-error`
136
136
  Fired when an error occurs during scanning.
137
137
 
138
138
  **Detail Properties:**
@@ -140,7 +140,7 @@ Fired when an error occurs during scanning.
140
140
  - `reader` (SniceQRReader): Reference to the component
141
141
 
142
142
  ```javascript
143
- reader.addEventListener('@snice/qr-error', (event) => {
143
+ reader.addEventListener('qr-error', (event) => {
144
144
  console.error('Error:', event.detail.error);
145
145
  });
146
146
  ```
@@ -157,7 +157,7 @@ reader.addEventListener('@snice/camera-ready', (event) => {
157
157
  });
158
158
  ```
159
159
 
160
- ### `@snice/camera-error`
160
+ ### `camera-error`
161
161
  Fired when camera initialization fails.
162
162
 
163
163
  **Detail Properties:**
@@ -165,7 +165,7 @@ Fired when camera initialization fails.
165
165
  - `reader` (SniceQRReader): Reference to the component
166
166
 
167
167
  ```javascript
168
- reader.addEventListener('@snice/camera-error', (event) => {
168
+ reader.addEventListener('camera-error', (event) => {
169
169
  console.error('Camera error:', event.detail.error);
170
170
  });
171
171
  ```
@@ -192,7 +192,7 @@ reader.addEventListener('@snice/camera-error', (event) => {
192
192
  reader.stop();
193
193
  }
194
194
 
195
- reader.addEventListener('@snice/qr-scan', (e) => {
195
+ reader.addEventListener('qr-scan', (e) => {
196
196
  result.textContent = `Scanned: ${e.detail.data}`;
197
197
  });
198
198
  </script>
@@ -206,7 +206,7 @@ reader.addEventListener('@snice/camera-error', (event) => {
206
206
  <script>
207
207
  const scanner = document.getElementById('scanner');
208
208
 
209
- scanner.addEventListener('@snice/qr-scan', (e) => {
209
+ scanner.addEventListener('qr-scan', (e) => {
210
210
  // Process the scan
211
211
  processQRCode(e.detail.data);
212
212
 
@@ -251,7 +251,7 @@ reader.addEventListener('@snice/camera-error', (event) => {
251
251
  <script>
252
252
  // Useful for self-scanning scenarios
253
253
  document.querySelector('snice-qr-reader')
254
- .addEventListener('@snice/qr-scan', (e) => {
254
+ .addEventListener('qr-scan', (e) => {
255
255
  validateTicket(e.detail.data);
256
256
  });
257
257
  </script>
@@ -267,12 +267,12 @@ reader.addEventListener('@snice/camera-error', (event) => {
267
267
  const reader = document.getElementById('reader');
268
268
  const status = document.getElementById('status');
269
269
 
270
- reader.addEventListener('@snice/qr-scan', (e) => {
270
+ reader.addEventListener('qr-scan', (e) => {
271
271
  status.textContent = `✓ Scanned: ${e.detail.data}`;
272
272
  status.style.color = 'green';
273
273
  });
274
274
 
275
- reader.addEventListener('@snice/qr-error', (e) => {
275
+ reader.addEventListener('qr-error', (e) => {
276
276
  status.textContent = `✗ Error: ${e.detail.error}`;
277
277
  status.style.color = 'red';
278
278
 
@@ -28,7 +28,7 @@ import 'snice/components/select/snice-select';
28
28
  import 'snice/components/select/snice-option';
29
29
 
30
30
  const select = document.querySelector('snice-select');
31
- select.addEventListener('@snice/select-change', (e) => {
31
+ select.addEventListener('select-change', (e) => {
32
32
  console.log('Selected:', e.detail.value);
33
33
  });
34
34
  ```
@@ -111,7 +111,7 @@ select.blur();
111
111
 
112
112
  #### Events
113
113
 
114
- ##### `@snice/select-change`
114
+ ##### `select-change`
115
115
  Fired when the selection changes.
116
116
 
117
117
  **Event Detail:**
@@ -125,13 +125,13 @@ Fired when the selection changes.
125
125
 
126
126
  **Usage:**
127
127
  ```typescript
128
- select.addEventListener('@snice/select-change', (e) => {
128
+ select.addEventListener('select-change', (e) => {
129
129
  const { value, option } = e.detail;
130
130
  console.log(`Selected ${option?.label} with value ${value}`);
131
131
  });
132
132
  ```
133
133
 
134
- ##### `@snice/select-open`
134
+ ##### `select-open`
135
135
  Fired when the dropdown opens.
136
136
 
137
137
  **Event Detail:**
@@ -141,7 +141,7 @@ Fired when the dropdown opens.
141
141
  }
142
142
  ```
143
143
 
144
- ##### `@snice/select-close`
144
+ ##### `select-close`
145
145
  Fired when the dropdown closes.
146
146
 
147
147
  **Event Detail:**
@@ -348,7 +348,7 @@ select.value = 'banana';
348
348
  ```typescript
349
349
  const select = document.querySelector('snice-select');
350
350
 
351
- select.addEventListener('@snice/select-change', (e) => {
351
+ select.addEventListener('select-change', (e) => {
352
352
  const { value, option } = e.detail;
353
353
 
354
354
  if (option) {
@@ -359,11 +359,11 @@ select.addEventListener('@snice/select-change', (e) => {
359
359
  updateDependentFields(value);
360
360
  });
361
361
 
362
- select.addEventListener('@snice/select-open', () => {
362
+ select.addEventListener('select-open', () => {
363
363
  console.log('Dropdown opened');
364
364
  });
365
365
 
366
- select.addEventListener('@snice/select-close', () => {
366
+ select.addEventListener('select-close', () => {
367
367
  console.log('Dropdown closed');
368
368
  });
369
369
  ```
@@ -501,7 +501,7 @@ Selected options will display as removable tags. Click the × on a tag to remove
501
501
  import 'snice/components/select/snice-option';
502
502
 
503
503
  // Handle select changes
504
- document.addEventListener('@snice/select-change', (e) => {
504
+ document.addEventListener('select-change', (e) => {
505
505
  console.log('Selection changed:', e.detail);
506
506
  });
507
507
  </script>
@@ -27,7 +27,7 @@ The `<snice-slider>` component provides an interactive range slider for selectin
27
27
  import 'snice/components/slider/snice-slider';
28
28
 
29
29
  const slider = document.querySelector('snice-slider');
30
- slider.addEventListener('@snice/slider-change', (e) => {
30
+ slider.addEventListener('slider-change', (e) => {
31
31
  console.log('Value:', e.detail.value);
32
32
  });
33
33
  ```
@@ -93,24 +93,24 @@ slider.setCustomValidity('Value must be between 10 and 90');
93
93
 
94
94
  ## Events
95
95
 
96
- ### `@snice/slider-input`
96
+ ### `slider-input`
97
97
  Fired continuously while dragging the slider.
98
98
 
99
99
  **Detail**: `{ value: number, slider: SniceSliderElement }`
100
100
 
101
101
  ```typescript
102
- slider.addEventListener('@snice/slider-input', (e) => {
102
+ slider.addEventListener('slider-input', (e) => {
103
103
  console.log('Current value:', e.detail.value);
104
104
  });
105
105
  ```
106
106
 
107
- ### `@snice/slider-change`
107
+ ### `slider-change`
108
108
  Fired when the slider value is committed (after drag ends or keyboard input).
109
109
 
110
110
  **Detail**: `{ value: number, slider: SniceSliderElement }`
111
111
 
112
112
  ```typescript
113
- slider.addEventListener('@snice/slider-change', (e) => {
113
+ slider.addEventListener('slider-change', (e) => {
114
114
  console.log('Final value:', e.detail.value);
115
115
  });
116
116
  ```
@@ -290,7 +290,7 @@ document.getElementById('settings-form').addEventListener('submit', (e) => {
290
290
  const slider = document.getElementById('volume-slider');
291
291
  const display = document.getElementById('volume-display');
292
292
 
293
- slider.addEventListener('@snice/slider-input', (e) => {
293
+ slider.addEventListener('slider-input', (e) => {
294
294
  display.textContent = `Volume: ${e.detail.value}`;
295
295
  });
296
296
  </script>
@@ -54,11 +54,11 @@ splitPane.reset();
54
54
 
55
55
  ## Events
56
56
 
57
- ### `@snice/resize`
57
+ ### `pane-resize`
58
58
  Dispatched when pane is resized.
59
59
 
60
60
  ```javascript
61
- splitPane.addEventListener('@snice/resize', (e) => {
61
+ splitPane.addEventListener('pane-resize', (e) => {
62
62
  console.log('Primary:', e.detail.primarySize);
63
63
  console.log('Secondary:', e.detail.secondarySize);
64
64
  });
@@ -20,7 +20,7 @@ The `<snice-switch>` component provides a toggle switch input for boolean select
20
20
  import 'snice/components/switch/snice-switch';
21
21
 
22
22
  const switchEl = document.querySelector('snice-switch');
23
- switchEl.addEventListener('@snice/switch-change', (e) => {
23
+ switchEl.addEventListener('switch-change', (e) => {
24
24
  console.log('Switch is now:', e.detail.checked);
25
25
  });
26
26
  ```
@@ -72,7 +72,7 @@ switchEl.click();
72
72
 
73
73
  ## Events
74
74
 
75
- ### `@snice/switch-change`
75
+ ### `switch-change`
76
76
  Fired when the switch state changes.
77
77
 
78
78
  **Event Detail:**
@@ -85,7 +85,7 @@ Fired when the switch state changes.
85
85
 
86
86
  **Usage:**
87
87
  ```typescript
88
- switchEl.addEventListener('@snice/switch-change', (e) => {
88
+ switchEl.addEventListener('switch-change', (e) => {
89
89
  const { checked } = e.detail;
90
90
  console.log(`Switch is ${checked ? 'on' : 'off'}`);
91
91
  });
@@ -199,7 +199,7 @@ switchEl.disabled = true;
199
199
  ```typescript
200
200
  const switchEl = document.querySelector('snice-switch');
201
201
 
202
- switchEl.addEventListener('@snice/switch-change', (e) => {
202
+ switchEl.addEventListener('switch-change', (e) => {
203
203
  const { checked, switch: sw } = e.detail;
204
204
 
205
205
  if (checked) {
@@ -34,7 +34,7 @@ import 'snice/components/tabs/snice-tab';
34
34
  import 'snice/components/tabs/snice-tab-panel';
35
35
 
36
36
  const tabs = document.querySelector('snice-tabs');
37
- tabs.addEventListener('@snice/tab-change', (e) => {
37
+ tabs.addEventListener('tab-change', (e) => {
38
38
  console.log('Tab changed to:', e.detail.index);
39
39
  });
40
40
  ```
@@ -86,7 +86,7 @@ const panel = tabs.getPanel(0);
86
86
 
87
87
  #### Events
88
88
 
89
- ##### `@snice/tab-change`
89
+ ##### `tab-change`
90
90
  Fired when the active tab changes.
91
91
 
92
92
  **Event Detail:**
@@ -101,7 +101,7 @@ Fired when the active tab changes.
101
101
 
102
102
  **Usage:**
103
103
  ```typescript
104
- tabs.addEventListener('@snice/tab-change', (e) => {
104
+ tabs.addEventListener('tab-change', (e) => {
105
105
  const { index, oldIndex, tab, panel } = e.detail;
106
106
  console.log(`Changed from tab ${oldIndex} to ${index}`);
107
107
  });
@@ -136,7 +136,7 @@ tab.blur();
136
136
 
137
137
  #### Events
138
138
 
139
- ##### `@snice/tab-select`
139
+ ##### `tab-select`
140
140
  Fired when the tab is clicked (bubbles to parent tabs container).
141
141
 
142
142
  **Event Detail:**
@@ -146,7 +146,7 @@ Fired when the tab is clicked (bubbles to parent tabs container).
146
146
  }
147
147
  ```
148
148
 
149
- ##### `@snice/close`
149
+ ##### `tab-close`
150
150
  Fired when the close button is clicked (only if `closable` is true).
151
151
 
152
152
  **Event Detail:**
@@ -216,7 +216,7 @@ Control where the tab navigation appears relative to the content.
216
216
 
217
217
  const tabs = document.querySelectorAll('snice-tab');
218
218
  tabs.forEach(tab => {
219
- tab.addEventListener('@snice/close', (e) => {
219
+ tab.addEventListener('tab-close', (e) => {
220
220
  console.log('Tab closed:', e.detail.tab);
221
221
  // Handle tab removal
222
222
  });
@@ -302,7 +302,7 @@ const panel = tabs.getPanel(0);
302
302
  ```typescript
303
303
  const tabs = document.querySelector('snice-tabs');
304
304
 
305
- tabs.addEventListener('@snice/tab-change', (e) => {
305
+ tabs.addEventListener('tab-change', (e) => {
306
306
  const { index, oldIndex, tab, panel } = e.detail;
307
307
 
308
308
  // Load content dynamically
@@ -349,7 +349,7 @@ async function loadPanelContent(index: number, panel: HTMLElement) {
349
349
  tabs.appendChild(panel);
350
350
 
351
351
  // Handle close
352
- tab.addEventListener('@snice/close', () => {
352
+ tab.addEventListener('tab-close', () => {
353
353
  const index = Array.from(tabs.querySelectorAll('snice-tab')).indexOf(tab);
354
354
  const panelToRemove = tabs.querySelectorAll('snice-tab-panel')[index];
355
355
 
@@ -461,13 +461,13 @@ async function loadPanelContent(index: number, panel: HTMLElement) {
461
461
  const tabs = document.querySelector('snice-tabs');
462
462
 
463
463
  // Handle tab changes
464
- tabs.addEventListener('@snice/tab-change', (e) => {
464
+ tabs.addEventListener('tab-change', (e) => {
465
465
  console.log('Active tab:', e.detail.index);
466
466
  });
467
467
 
468
468
  // Handle tab close
469
469
  document.querySelectorAll('snice-tab[closable]').forEach(tab => {
470
- tab.addEventListener('@snice/close', (e) => {
470
+ tab.addEventListener('tab-close', (e) => {
471
471
  if (confirm('Close this tab?')) {
472
472
  const index = Array.from(tabs.querySelectorAll('snice-tab')).indexOf(e.detail.tab);
473
473
  const panel = tabs.querySelectorAll('snice-tab-panel')[index];
@@ -115,12 +115,12 @@ terminal.clearHistory();
115
115
 
116
116
  ## Events
117
117
 
118
- ### `@snice/terminal-command`
118
+ ### `terminal-command`
119
119
 
120
120
  Emitted when a command is entered.
121
121
 
122
122
  ```javascript
123
- terminal.addEventListener('@snice/terminal-command', (e) => {
123
+ terminal.addEventListener('terminal-command', (e) => {
124
124
  console.log('Command:', e.detail.command);
125
125
  console.log('Args:', e.detail.args);
126
126
  });
@@ -130,22 +130,22 @@ terminal.addEventListener('@snice/terminal-command', (e) => {
130
130
  - `command: string` - The command name
131
131
  - `args: string[]` - Command arguments
132
132
 
133
- ### `@snice/terminal-clear`
133
+ ### `terminal-clear`
134
134
 
135
135
  Emitted when the terminal is cleared.
136
136
 
137
137
  ```javascript
138
- terminal.addEventListener('@snice/terminal-clear', () => {
138
+ terminal.addEventListener('terminal-clear', () => {
139
139
  console.log('Terminal was cleared');
140
140
  });
141
141
  ```
142
142
 
143
- ### `@snice/terminal-ready`
143
+ ### `terminal-ready`
144
144
 
145
145
  Emitted when the terminal is ready.
146
146
 
147
147
  ```javascript
148
- terminal.addEventListener('@snice/terminal-ready', () => {
148
+ terminal.addEventListener('terminal-ready', () => {
149
149
  console.log('Terminal is ready');
150
150
  });
151
151
  ```
@@ -24,7 +24,7 @@ The `<snice-textarea>` component provides a multi-line text input with validatio
24
24
  import 'snice/components/textarea/snice-textarea';
25
25
 
26
26
  const textarea = document.querySelector('snice-textarea');
27
- textarea.addEventListener('@snice/textarea-change', (e) => {
27
+ textarea.addEventListener('textarea-change', (e) => {
28
28
  console.log('Value:', e.detail.value);
29
29
  });
30
30
  ```
@@ -99,34 +99,34 @@ textarea.setCustomValidity('This field is required');
99
99
 
100
100
  ## Events
101
101
 
102
- ### `@snice/textarea-input`
102
+ ### `textarea-input`
103
103
  Fired when the textarea value changes during input.
104
104
 
105
105
  **Detail**: `{ value: string, textarea: SniceTextareaElement }`
106
106
 
107
107
  ```typescript
108
- textarea.addEventListener('@snice/textarea-input', (e) => {
108
+ textarea.addEventListener('textarea-input', (e) => {
109
109
  console.log('Input value:', e.detail.value);
110
110
  });
111
111
  ```
112
112
 
113
- ### `@snice/textarea-change`
113
+ ### `textarea-change`
114
114
  Fired when the textarea value is committed (blur or enter).
115
115
 
116
116
  **Detail**: `{ value: string, textarea: SniceTextareaElement }`
117
117
 
118
118
  ```typescript
119
- textarea.addEventListener('@snice/textarea-change', (e) => {
119
+ textarea.addEventListener('textarea-change', (e) => {
120
120
  console.log('Changed to:', e.detail.value);
121
121
  });
122
122
  ```
123
123
 
124
- ### `@snice/textarea-focus`
124
+ ### `textarea-focus`
125
125
  Fired when the textarea receives focus.
126
126
 
127
127
  **Detail**: `{ textarea: SniceTextareaElement }`
128
128
 
129
- ### `@snice/textarea-blur`
129
+ ### `textarea-blur`
130
130
  Fired when the textarea loses focus.
131
131
 
132
132
  **Detail**: `{ textarea: SniceTextareaElement }`
@@ -33,10 +33,10 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
33
33
 
34
34
  | Event | Detail | Description |
35
35
  |-------|--------|-------------|
36
- | `@snice/timer-start` | `{ timer, time }` | Timer started |
37
- | `@snice/timer-stop` | `{ timer, time }` | Timer stopped |
38
- | `@snice/timer-reset` | `{ timer, time }` | Timer reset |
39
- | `@snice/timer-complete` | `{ timer }` | Countdown completed (timer mode only) |
36
+ | `timer-start` | `{ timer, time }` | Timer started |
37
+ | `timer-stop` | `{ timer, time }` | Timer stopped |
38
+ | `timer-reset` | `{ timer, time }` | Timer reset |
39
+ | `timer-complete` | `{ timer }` | Countdown completed (timer mode only) |
40
40
 
41
41
  ## Examples
42
42
 
@@ -63,7 +63,7 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
63
63
  <script>
64
64
  const timer = document.getElementById('timer');
65
65
 
66
- timer.addEventListener('@snice/timer-complete', () => {
66
+ timer.addEventListener('timer-complete', () => {
67
67
  console.log('Time is up!');
68
68
  });
69
69
 
@@ -83,11 +83,11 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
83
83
  <script>
84
84
  const timer = document.getElementById('my-timer');
85
85
 
86
- timer.addEventListener('@snice/timer-start', (e) => {
86
+ timer.addEventListener('timer-start', (e) => {
87
87
  console.log('Timer started at', e.detail.time);
88
88
  });
89
89
 
90
- timer.addEventListener('@snice/timer-stop', (e) => {
90
+ timer.addEventListener('timer-stop', (e) => {
91
91
  console.log('Timer stopped at', e.detail.time);
92
92
  });
93
93
  </script>
@@ -101,7 +101,7 @@ The `<snice-timer>` component provides a stopwatch and countdown timer.
101
101
  <script>
102
102
  const workout = document.getElementById('workout');
103
103
 
104
- workout.addEventListener('@snice/timer-complete', () => {
104
+ workout.addEventListener('timer-complete', () => {
105
105
  alert('Rest time!');
106
106
  // Start rest period
107
107
  workout.initialTime = 15;