snice 3.11.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/bin/templates/CLAUDE.md +7 -7
  2. package/bin/templates/base/package.json +1 -1
  3. package/bin/templates/pwa/package.json +1 -1
  4. package/dist/components/audio-recorder/snice-audio-recorder.js +6 -6
  5. package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -1
  6. package/dist/components/banner/snice-banner.js +3 -3
  7. package/dist/components/banner/snice-banner.js.map +1 -1
  8. package/dist/components/button/snice-button.js +1 -1
  9. package/dist/components/calendar/snice-calendar.js +2 -2
  10. package/dist/components/calendar/snice-calendar.js.map +1 -1
  11. package/dist/components/camera/snice-camera.js +4 -4
  12. package/dist/components/camera/snice-camera.js.map +1 -1
  13. package/dist/components/carousel/snice-carousel.js +1 -1
  14. package/dist/components/carousel/snice-carousel.js.map +1 -1
  15. package/dist/components/checkbox/snice-checkbox.js +3 -3
  16. package/dist/components/checkbox/snice-checkbox.js.map +1 -1
  17. package/dist/components/color-picker/snice-color-picker.js +4 -4
  18. package/dist/components/color-picker/snice-color-picker.js.map +1 -1
  19. package/dist/components/command-palette/snice-command-palette.js +5 -5
  20. package/dist/components/command-palette/snice-command-palette.js.map +1 -1
  21. package/dist/components/date-picker/snice-date-picker.js +8 -8
  22. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  23. package/dist/components/draw/snice-draw.js +5 -5
  24. package/dist/components/draw/snice-draw.js.map +1 -1
  25. package/dist/components/drawer/snice-drawer.js +2 -2
  26. package/dist/components/drawer/snice-drawer.js.map +1 -1
  27. package/dist/components/empty-state/snice-empty-state.js +1 -1
  28. package/dist/components/empty-state/snice-empty-state.js.map +1 -1
  29. package/dist/components/file-gallery/snice-file-gallery.js +8 -8
  30. package/dist/components/file-gallery/snice-file-gallery.js.map +1 -1
  31. package/dist/components/file-upload/snice-file-upload.js +2 -2
  32. package/dist/components/file-upload/snice-file-upload.js.map +1 -1
  33. package/dist/components/input/snice-input.js +5 -5
  34. package/dist/components/input/snice-input.js.map +1 -1
  35. package/dist/components/kanban/snice-kanban.js +2 -2
  36. package/dist/components/kanban/snice-kanban.js.map +1 -1
  37. package/dist/components/location/snice-location.js +1 -1
  38. package/dist/components/location/snice-location.js.map +1 -1
  39. package/dist/components/login/snice-login.js +4 -4
  40. package/dist/components/login/snice-login.js.map +1 -1
  41. package/dist/components/menu/snice-menu-item.js +1 -1
  42. package/dist/components/menu/snice-menu-item.js.map +1 -1
  43. package/dist/components/menu/snice-menu.js +3 -3
  44. package/dist/components/menu/snice-menu.js.map +1 -1
  45. package/dist/components/modal/snice-modal.js +2 -2
  46. package/dist/components/modal/snice-modal.js.map +1 -1
  47. package/dist/components/music-player/snice-music-player.js +10 -10
  48. package/dist/components/music-player/snice-music-player.js.map +1 -1
  49. package/dist/components/pagination/snice-pagination.js +1 -1
  50. package/dist/components/pagination/snice-pagination.js.map +1 -1
  51. package/dist/components/qr-reader/snice-qr-reader.js +3 -3
  52. package/dist/components/qr-reader/snice-qr-reader.js.map +1 -1
  53. package/dist/components/radio/snice-radio.js +1 -1
  54. package/dist/components/radio/snice-radio.js.map +1 -1
  55. package/dist/components/select/snice-select.js +3 -3
  56. package/dist/components/select/snice-select.js.map +1 -1
  57. package/dist/components/slider/snice-slider.js +2 -2
  58. package/dist/components/slider/snice-slider.js.map +1 -1
  59. package/dist/components/split-pane/snice-split-pane.js +1 -1
  60. package/dist/components/split-pane/snice-split-pane.js.map +1 -1
  61. package/dist/components/switch/snice-switch.js +1 -1
  62. package/dist/components/switch/snice-switch.js.map +1 -1
  63. package/dist/components/table/snice-cell-actions.js +1 -1
  64. package/dist/components/table/snice-cell-actions.js.map +1 -1
  65. package/dist/components/table/snice-column.js +1 -1
  66. package/dist/components/table/snice-column.js.map +1 -1
  67. package/dist/components/table/snice-header.js +3 -3
  68. package/dist/components/table/snice-header.js.map +1 -1
  69. package/dist/components/table/snice-row.js +3 -3
  70. package/dist/components/table/snice-row.js.map +1 -1
  71. package/dist/components/table/snice-table.js +3 -3
  72. package/dist/components/table/snice-table.js.map +1 -1
  73. package/dist/components/tabs/snice-tab.js +2 -2
  74. package/dist/components/tabs/snice-tab.js.map +1 -1
  75. package/dist/components/tabs/snice-tabs.js +2 -2
  76. package/dist/components/tabs/snice-tabs.js.map +1 -1
  77. package/dist/components/terminal/snice-terminal.js +3 -3
  78. package/dist/components/terminal/snice-terminal.js.map +1 -1
  79. package/dist/components/textarea/snice-textarea.js +4 -4
  80. package/dist/components/textarea/snice-textarea.js.map +1 -1
  81. package/dist/components/timer/snice-timer.js +4 -4
  82. package/dist/components/timer/snice-timer.js.map +1 -1
  83. package/dist/components/tree/snice-tree-item.js +1 -1
  84. package/dist/components/tree/snice-tree-item.js.map +1 -1
  85. package/dist/components/tree/snice-tree.js +5 -5
  86. package/dist/components/tree/snice-tree.js.map +1 -1
  87. package/dist/index.cjs +7 -3
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.esm.js +7 -3
  90. package/dist/index.esm.js.map +1 -1
  91. package/dist/index.iife.js +7 -3
  92. package/dist/index.iife.js.map +1 -1
  93. package/dist/symbols.cjs +1 -1
  94. package/dist/symbols.esm.js +1 -1
  95. package/dist/transitions.cjs +1 -1
  96. package/dist/transitions.esm.js +1 -1
  97. package/docs/ai/components/audio-recorder.md +6 -6
  98. package/docs/ai/components/calendar.md +2 -2
  99. package/docs/ai/components/camera.md +5 -5
  100. package/docs/ai/components/carousel.md +1 -1
  101. package/docs/ai/components/color-picker.md +1 -1
  102. package/docs/ai/components/command-palette.md +6 -6
  103. package/docs/ai/components/draw.md +5 -5
  104. package/docs/ai/components/drawer.md +2 -2
  105. package/docs/ai/components/empty-state.md +1 -1
  106. package/docs/ai/components/file-gallery.md +3 -3
  107. package/docs/ai/components/file-upload.md +2 -2
  108. package/docs/ai/components/kanban.md +3 -3
  109. package/docs/ai/components/menu.md +3 -3
  110. package/docs/ai/components/modal.md +2 -2
  111. package/docs/ai/components/music-player.md +9 -9
  112. package/docs/ai/components/pagination.md +2 -2
  113. package/docs/ai/components/qr-reader.md +4 -4
  114. package/docs/ai/components/select.md +4 -4
  115. package/docs/ai/components/slider.md +1 -1
  116. package/docs/ai/components/split-pane.md +1 -1
  117. package/docs/ai/components/switch.md +2 -2
  118. package/docs/ai/components/tabs.md +4 -4
  119. package/docs/ai/components/terminal.md +1 -1
  120. package/docs/ai/components/timer.md +4 -4
  121. package/docs/ai/components/tree.md +7 -7
  122. package/docs/components/audio-recorder.md +7 -7
  123. package/docs/components/banner.md +4 -4
  124. package/docs/components/calendar.md +11 -11
  125. package/docs/components/camera.md +9 -9
  126. package/docs/components/carousel.md +1 -1
  127. package/docs/components/color-picker.md +1 -1
  128. package/docs/components/command-palette.md +6 -6
  129. package/docs/components/draw.md +6 -6
  130. package/docs/components/drawer.md +6 -6
  131. package/docs/components/empty-state.md +1 -1
  132. package/docs/components/file-gallery.md +18 -18
  133. package/docs/components/file-upload.md +7 -7
  134. package/docs/components/kanban.md +7 -7
  135. package/docs/components/menu.md +11 -11
  136. package/docs/components/modal.md +7 -7
  137. package/docs/components/music-player.md +16 -16
  138. package/docs/components/pagination.md +5 -5
  139. package/docs/components/qr-reader.md +12 -12
  140. package/docs/components/select.md +9 -9
  141. package/docs/components/slider.md +6 -6
  142. package/docs/components/split-pane.md +2 -2
  143. package/docs/components/switch.md +4 -4
  144. package/docs/components/tabs.md +10 -10
  145. package/docs/components/terminal.md +6 -6
  146. package/docs/components/textarea.md +7 -7
  147. package/docs/components/timer.md +8 -8
  148. package/docs/components/tree.md +9 -9
  149. package/package.json +1 -1
@@ -119,39 +119,39 @@ camera.toggleFullscreen();
119
119
 
120
120
  ## Events
121
121
 
122
- ### `@snice/camera-start`
122
+ ### `camera-start`
123
123
  Camera started successfully.
124
124
 
125
125
  ```javascript
126
- camera.addEventListener('@snice/camera-start', (e) => {
126
+ camera.addEventListener('camera-start', (e) => {
127
127
  console.log('Camera on', e.detail.stream);
128
128
  });
129
129
  ```
130
130
 
131
- ### `@snice/camera-stop`
131
+ ### `camera-stop`
132
132
  Camera stopped.
133
133
 
134
134
  ```javascript
135
- camera.addEventListener('@snice/camera-stop', () => {
135
+ camera.addEventListener('camera-stop', () => {
136
136
  console.log('Camera off');
137
137
  });
138
138
  ```
139
139
 
140
- ### `@snice/camera-capture`
140
+ ### `camera-capture`
141
141
  Photo captured.
142
142
 
143
143
  ```javascript
144
- camera.addEventListener('@snice/camera-capture', (e) => {
144
+ camera.addEventListener('camera-capture', (e) => {
145
145
  const image = e.detail.image;
146
146
  console.log(image.dataURL);
147
147
  });
148
148
  ```
149
149
 
150
- ### `@snice/camera-error`
150
+ ### `camera-error`
151
151
  Camera error occurred.
152
152
 
153
153
  ```javascript
154
- camera.addEventListener('@snice/camera-error', (e) => {
154
+ camera.addEventListener('camera-error', (e) => {
155
155
  console.error(e.detail.error);
156
156
  });
157
157
  ```
@@ -286,7 +286,7 @@ await fetch('/upload', { method: 'POST', body: formData });
286
286
  ```javascript
287
287
  const gallery = [];
288
288
 
289
- camera.addEventListener('@snice/camera-capture', (e) => {
289
+ camera.addEventListener('camera-capture', (e) => {
290
290
  gallery.push(e.detail.image);
291
291
  displayGallery();
292
292
  });
@@ -36,7 +36,7 @@ Image/content carousel with autoplay, loop, and navigation controls.
36
36
 
37
37
  ## Events
38
38
 
39
- - `@snice/carousel-slide-change` - Slide changed (detail: { activeIndex, previousIndex, carousel })
39
+ - `carousel-slide-change` - Slide changed (detail: { activeIndex, previousIndex, carousel })
40
40
 
41
41
  ## Examples
42
42
 
@@ -40,7 +40,7 @@ Blur the color picker.
40
40
 
41
41
  ## Events
42
42
 
43
- ### `@snice/color-picker-change`
43
+ ### `color-picker-change`
44
44
  Fired when color changes.
45
45
 
46
46
  **Detail**: `{ value: string, colorPicker: SniceColorPickerElement }`
@@ -77,11 +77,11 @@ interface CommandItem {
77
77
 
78
78
  ## Events
79
79
 
80
- - `@snice/command-palette-open` - Fired when palette opens
81
- - `@snice/command-palette-close` - Fired when palette closes
82
- - `@snice/command-select` - Fired when command is selected (detail: { command, palette })
83
- - `@snice/command-execute` - Fired when command is executed (detail: { command, palette })
84
- - `@snice/command-search` - Fired when search changes (detail: { query, results, palette })
80
+ - `command-palette-open` - Fired when palette opens
81
+ - `command-palette-close` - Fired when palette closes
82
+ - `command-select` - Fired when command is selected (detail: { command, palette })
83
+ - `command-execute` - Fired when command is executed (detail: { command, palette })
84
+ - `command-search` - Fired when search changes (detail: { query, results, palette })
85
85
 
86
86
  ## Keyboard Shortcuts
87
87
 
@@ -141,7 +141,7 @@ palette.commands = [
141
141
  ### Event Handling
142
142
 
143
143
  ```javascript
144
- palette.addEventListener('@snice/command-execute', (e) => {
144
+ palette.addEventListener('command-execute', (e) => {
145
145
  console.log('Executed:', e.detail.command.label);
146
146
  analytics.track('command_executed', { command: e.detail.command.id });
147
147
  });
@@ -80,11 +80,11 @@ Set strokes (for loading saved drawings).
80
80
 
81
81
  ## Events
82
82
 
83
- - `@snice/draw-start` - Drawing started
84
- - `@snice/draw-end` - Drawing ended (stroke complete)
85
- - `@snice/draw-clear` - Canvas cleared
86
- - `@snice/draw-undo` - Undo performed
87
- - `@snice/draw-redo` - Redo performed
83
+ - `draw-start` - Drawing started
84
+ - `draw-end` - Drawing ended (stroke complete)
85
+ - `draw-clear` - Canvas cleared
86
+ - `draw-undo` - Undo performed
87
+ - `draw-redo` - Redo performed
88
88
 
89
89
  ## Examples
90
90
 
@@ -190,7 +190,7 @@ await draw.loadImage('background.jpg');
190
190
  ### Event Handling
191
191
 
192
192
  ```javascript
193
- draw.addEventListener('@snice/draw-end', (e) => {
193
+ draw.addEventListener('draw-end', (e) => {
194
194
  const stroke = e.detail.stroke;
195
195
  console.log(`Drew ${stroke.points.length} points`);
196
196
 
@@ -79,7 +79,7 @@ drawer.toggle();
79
79
 
80
80
  ## Events
81
81
 
82
- ### `@snice/drawer-open`
82
+ ### `drawer-open`
83
83
  Fired when the drawer opens.
84
84
 
85
85
  **Event Detail:**
@@ -91,12 +91,12 @@ Fired when the drawer opens.
91
91
 
92
92
  **Usage:**
93
93
  ```typescript
94
- drawer.addEventListener('@snice/drawer-open', (e) => {
94
+ drawer.addEventListener('drawer-open', (e) => {
95
95
  console.log('Drawer opened:', e.detail.drawer);
96
96
  });
97
97
  ```
98
98
 
99
- ### `@snice/drawer-close`
99
+ ### `drawer-close`
100
100
  Fired when the drawer closes.
101
101
 
102
102
  **Event Detail:**
@@ -108,7 +108,7 @@ Fired when the drawer closes.
108
108
 
109
109
  **Usage:**
110
110
  ```typescript
111
- drawer.addEventListener('@snice/drawer-close', (e) => {
111
+ drawer.addEventListener('drawer-close', (e) => {
112
112
  console.log('Drawer closed:', e.detail.drawer);
113
113
  });
114
114
  ```
@@ -397,12 +397,12 @@ import type { SniceDrawerElement } from 'snice/components/drawer/snice-drawer.ty
397
397
 
398
398
  const drawer = document.querySelector<SniceDrawerElement>('snice-drawer');
399
399
 
400
- drawer.addEventListener('@snice/drawer-open', () => {
400
+ drawer.addEventListener('drawer-open', () => {
401
401
  console.log('Drawer opened');
402
402
  // Pause video, load content, etc.
403
403
  });
404
404
 
405
- drawer.addEventListener('@snice/drawer-close', () => {
405
+ drawer.addEventListener('drawer-close', () => {
406
406
  console.log('Drawer closed');
407
407
  // Resume video, save state, etc.
408
408
  });
@@ -25,7 +25,7 @@ The `<snice-empty-state>` component provides a consistent way to display empty o
25
25
 
26
26
  ## Events
27
27
 
28
- ### `@snice/empty-state-action`
28
+ ### `empty-state-action`
29
29
  Fired when action button/link is clicked.
30
30
 
31
31
  ## Examples
@@ -293,68 +293,68 @@ gallery.removeFileBadge('file-id-123');
293
293
 
294
294
  ## Events
295
295
 
296
- ### `@snice/files-change`
296
+ ### `files-change`
297
297
  Fired when files are added or removed.
298
298
 
299
299
  **Detail**: `{ files: GalleryFile[] }`
300
300
 
301
301
  ```typescript
302
- gallery.addEventListener('@snice/files-change', (e) => {
302
+ gallery.addEventListener('files-change', (e) => {
303
303
  console.log('Files:', e.detail.files);
304
304
  });
305
305
  ```
306
306
 
307
- ### `@snice/upload-progress`
307
+ ### `upload-progress`
308
308
  Fired during upload progress.
309
309
 
310
310
  **Detail**: `{ file: GalleryFile, progress: number }`
311
311
 
312
312
  ```typescript
313
- gallery.addEventListener('@snice/upload-progress', (e) => {
313
+ gallery.addEventListener('upload-progress', (e) => {
314
314
  console.log(`${e.detail.file.file.name}: ${e.detail.progress}%`);
315
315
  });
316
316
  ```
317
317
 
318
- ### `@snice/upload-complete`
318
+ ### `upload-complete`
319
319
  Fired when an upload completes successfully.
320
320
 
321
321
  **Detail**: `{ file: GalleryFile, url?: string }`
322
322
 
323
323
  ```typescript
324
- gallery.addEventListener('@snice/upload-complete', (e) => {
324
+ gallery.addEventListener('upload-complete', (e) => {
325
325
  console.log('Upload complete:', e.detail.url);
326
326
  });
327
327
  ```
328
328
 
329
- ### `@snice/upload-error`
329
+ ### `upload-error`
330
330
  Fired when an upload fails.
331
331
 
332
332
  **Detail**: `{ file: GalleryFile, error: string }`
333
333
 
334
334
  ```typescript
335
- gallery.addEventListener('@snice/upload-error', (e) => {
335
+ gallery.addEventListener('upload-error', (e) => {
336
336
  console.error('Upload error:', e.detail.error);
337
337
  });
338
338
  ```
339
339
 
340
- ### `@snice/custom-action-click`
340
+ ### `custom-action-click`
341
341
  Fired when a custom action button is clicked.
342
342
 
343
343
  **Detail**: `{ actionId: string }`
344
344
 
345
345
  ```typescript
346
- gallery.addEventListener('@snice/custom-action-click', (e) => {
346
+ gallery.addEventListener('custom-action-click', (e) => {
347
347
  console.log('Custom action clicked:', e.detail.actionId);
348
348
  });
349
349
  ```
350
350
 
351
- ### `@snice/error`
351
+ ### `gallery-error`
352
352
  Fired when a validation or general error occurs.
353
353
 
354
354
  **Detail**: `{ message: string }`
355
355
 
356
356
  ```typescript
357
- gallery.addEventListener('@snice/error', (e) => {
357
+ gallery.addEventListener('gallery-error', (e) => {
358
358
  console.error('Error:', e.detail.message);
359
359
  });
360
360
  ```
@@ -514,19 +514,19 @@ async function uploadAll() {
514
514
  <script>
515
515
  const gallery = document.getElementById('gallery');
516
516
 
517
- gallery.addEventListener('@snice/files-change', (e) => {
517
+ gallery.addEventListener('files-change', (e) => {
518
518
  console.log('Files changed:', e.detail.files);
519
519
  });
520
520
 
521
- gallery.addEventListener('@snice/upload-progress', (e) => {
521
+ gallery.addEventListener('upload-progress', (e) => {
522
522
  console.log(`${e.detail.file.file.name}: ${e.detail.progress}%`);
523
523
  });
524
524
 
525
- gallery.addEventListener('@snice/upload-complete', (e) => {
525
+ gallery.addEventListener('upload-complete', (e) => {
526
526
  console.log('Upload complete:', e.detail.file.file.name);
527
527
  });
528
528
 
529
- gallery.addEventListener('@snice/upload-error', (e) => {
529
+ gallery.addEventListener('upload-error', (e) => {
530
530
  console.error('Upload failed:', e.detail.error);
531
531
  });
532
532
  </script>
@@ -586,7 +586,7 @@ const users = [
586
586
  { name: 'Bob Wilson', initials: 'BW', color: '#10b981', position: 'bottom-right' },
587
587
  ];
588
588
 
589
- gallery.addEventListener('@snice/files-change', (e) => {
589
+ gallery.addEventListener('files-change', (e) => {
590
590
  const newFiles = e.detail.files.filter(f => !f.badge);
591
591
 
592
592
  newFiles.forEach((file, index) => {
@@ -630,7 +630,7 @@ const cameraIcon = `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
630
630
  const cameraActionId = gallery.addCustomAction(cameraIcon, 'Camera');
631
631
 
632
632
  // Handle camera action
633
- gallery.addEventListener('@snice/custom-action-click', (e) => {
633
+ gallery.addEventListener('custom-action-click', (e) => {
634
634
  if (e.detail.actionId === cameraActionId) {
635
635
  // Open camera interface
636
636
  openCamera().then((imageBlob) => {
@@ -24,7 +24,7 @@ The `<snice-file-upload>` component provides a file upload interface with drag-a
24
24
  import 'snice/components/file-upload/snice-file-upload';
25
25
 
26
26
  const upload = document.querySelector('snice-file-upload');
27
- upload.addEventListener('@snice/file-upload-change', (e) => {
27
+ upload.addEventListener('file-upload-change', (e) => {
28
28
  console.log('Files:', e.detail.files);
29
29
  });
30
30
  ```
@@ -68,13 +68,13 @@ upload.removeFile(0); // Remove first file
68
68
 
69
69
  ## Events
70
70
 
71
- ### `@snice/file-upload-change`
71
+ ### `file-upload-change`
72
72
  Fired when files are added or removed.
73
73
 
74
74
  **Detail**: `{ files: File[], fileUpload: SniceFileUploadElement }`
75
75
 
76
76
  ```typescript
77
- upload.addEventListener('@snice/file-upload-change', (e) => {
77
+ upload.addEventListener('file-upload-change', (e) => {
78
78
  console.log('Selected files:', e.detail.files);
79
79
  e.detail.files.forEach(file => {
80
80
  console.log(`- ${file.name} (${file.size} bytes)`);
@@ -82,13 +82,13 @@ upload.addEventListener('@snice/file-upload-change', (e) => {
82
82
  });
83
83
  ```
84
84
 
85
- ### `@snice/file-upload-error`
85
+ ### `file-upload-error`
86
86
  Fired when file validation fails.
87
87
 
88
88
  **Detail**: `{ message: string, fileUpload: SniceFileUploadElement }`
89
89
 
90
90
  ```typescript
91
- upload.addEventListener('@snice/file-upload-error', (e) => {
91
+ upload.addEventListener('file-upload-error', (e) => {
92
92
  console.error('Upload error:', e.detail.message);
93
93
  });
94
94
  ```
@@ -197,7 +197,7 @@ upload.addEventListener('@snice/file-upload-error', (e) => {
197
197
 
198
198
  <script>
199
199
  const upload = document.querySelector('snice-file-upload');
200
- upload.addEventListener('@snice/file-upload-error', (e) => {
200
+ upload.addEventListener('file-upload-error', (e) => {
201
201
  alert(e.detail.message);
202
202
  });
203
203
  </script>
@@ -256,7 +256,7 @@ function removeFirst() {
256
256
  upload.removeFile(0);
257
257
  }
258
258
 
259
- upload.addEventListener('@snice/file-upload-change', (e) => {
259
+ upload.addEventListener('file-upload-change', (e) => {
260
260
  console.log(`${e.detail.files.length} file(s) selected`);
261
261
  });
262
262
  </script>
@@ -158,11 +158,11 @@ console.log(card.title);
158
158
 
159
159
  ## Events
160
160
 
161
- ### `@snice/kanban-card-move`
161
+ ### `kanban-card-move`
162
162
  Dispatched when card is moved between columns.
163
163
 
164
164
  ```javascript
165
- kanban.addEventListener('@snice/kanban-card-move', (e) => {
165
+ kanban.addEventListener('kanban-card-move', (e) => {
166
166
  console.log('Card:', e.detail.card);
167
167
  console.log('From:', e.detail.fromColumn);
168
168
  console.log('To:', e.detail.toColumn);
@@ -171,11 +171,11 @@ kanban.addEventListener('@snice/kanban-card-move', (e) => {
171
171
 
172
172
  **Detail:** `{ card: KanbanCard, fromColumn: string | number, toColumn: string | number, kanban: SniceKanbanElement }`
173
173
 
174
- ### `@snice/kanban-card-click`
174
+ ### `kanban-card-click`
175
175
  Dispatched when card is clicked.
176
176
 
177
177
  ```javascript
178
- kanban.addEventListener('@snice/kanban-card-click', (e) => {
178
+ kanban.addEventListener('kanban-card-click', (e) => {
179
179
  showCardDetails(e.detail.card);
180
180
  });
181
181
  ```
@@ -314,7 +314,7 @@ kanban.columns = [
314
314
  ### Event Handling
315
315
 
316
316
  ```javascript
317
- kanban.addEventListener('@snice/kanban-card-move', (e) => {
317
+ kanban.addEventListener('kanban-card-move', (e) => {
318
318
  // Update backend
319
319
  updateCardStatus(e.detail.card.id, e.detail.toColumn);
320
320
 
@@ -322,7 +322,7 @@ kanban.addEventListener('@snice/kanban-card-move', (e) => {
322
322
  showNotification(`Moved "${e.detail.card.title}" to ${e.detail.toColumn}`);
323
323
  });
324
324
 
325
- kanban.addEventListener('@snice/kanban-card-click', (e) => {
325
+ kanban.addEventListener('kanban-card-click', (e) => {
326
326
  // Show modal with card details
327
327
  showCardModal(e.detail.card);
328
328
  });
@@ -492,7 +492,7 @@ kanban.addCard('lead', {
492
492
  ### Persist to Backend
493
493
 
494
494
  ```javascript
495
- kanban.addEventListener('@snice/kanban-card-move', async (e) => {
495
+ kanban.addEventListener('kanban-card-move', async (e) => {
496
496
  try {
497
497
  await fetch('/api/cards/' + e.detail.card.id, {
498
498
  method: 'PATCH',
@@ -89,7 +89,7 @@ menu.toggleMenu();
89
89
 
90
90
  ### Container Events
91
91
 
92
- #### `@snice/menu-open`
92
+ #### `menu-open`
93
93
  Fired when the menu is opened.
94
94
 
95
95
  **Event Detail:**
@@ -101,12 +101,12 @@ Fired when the menu is opened.
101
101
 
102
102
  **Usage:**
103
103
  ```typescript
104
- menu.addEventListener('@snice/menu-open', (e) => {
104
+ menu.addEventListener('menu-open', (e) => {
105
105
  console.log('Menu opened');
106
106
  });
107
107
  ```
108
108
 
109
- #### `@snice/menu-close`
109
+ #### `menu-close`
110
110
  Fired when the menu is closed.
111
111
 
112
112
  **Event Detail:**
@@ -118,7 +118,7 @@ Fired when the menu is closed.
118
118
 
119
119
  ### Item Events
120
120
 
121
- #### `@snice/menu-item-select`
121
+ #### `menu-item-select`
122
122
  Fired when a menu item is selected.
123
123
 
124
124
  **Event Detail:**
@@ -131,7 +131,7 @@ Fired when a menu item is selected.
131
131
 
132
132
  **Usage:**
133
133
  ```typescript
134
- menu.addEventListener('@snice/menu-item-select', (e) => {
134
+ menu.addEventListener('menu-item-select', (e) => {
135
135
  console.log('Selected item:', e.detail.value);
136
136
  });
137
137
  ```
@@ -337,7 +337,7 @@ Keyboard shortcut hint displayed after the label.
337
337
 
338
338
  <script type="module">
339
339
  const menu = document.getElementById('multi-menu');
340
- menu.addEventListener('@snice/menu-item-select', (e) => {
340
+ menu.addEventListener('menu-item-select', (e) => {
341
341
  if (e.detail.value === 'done') {
342
342
  menu.closeMenu();
343
343
  }
@@ -417,7 +417,7 @@ Keyboard shortcut hint displayed after the label.
417
417
  menu.openMenu();
418
418
  });
419
419
 
420
- menu.addEventListener('@snice/menu-item-select', (e) => {
420
+ menu.addEventListener('menu-item-select', (e) => {
421
421
  console.log('Context action:', e.detail.value);
422
422
  });
423
423
  </script>
@@ -430,16 +430,16 @@ import type { SniceMenuElement } from 'snice/components/menu/snice-menu.types';
430
430
 
431
431
  const menu = document.querySelector<SniceMenuElement>('snice-menu');
432
432
 
433
- menu.addEventListener('@snice/menu-open', () => {
433
+ menu.addEventListener('menu-open', () => {
434
434
  console.log('Menu opened');
435
435
  // Load dynamic content, track analytics, etc.
436
436
  });
437
437
 
438
- menu.addEventListener('@snice/menu-close', () => {
438
+ menu.addEventListener('menu-close', () => {
439
439
  console.log('Menu closed');
440
440
  });
441
441
 
442
- menu.addEventListener('@snice/menu-item-select', (e) => {
442
+ menu.addEventListener('menu-item-select', (e) => {
443
443
  console.log('Selected:', e.detail.value);
444
444
 
445
445
  switch (e.detail.value) {
@@ -486,7 +486,7 @@ menu.addEventListener('@snice/menu-item-select', (e) => {
486
486
  menu.appendChild(item);
487
487
  });
488
488
 
489
- menu.addEventListener('@snice/menu-item-select', (e) => {
489
+ menu.addEventListener('menu-item-select', (e) => {
490
490
  openFile(e.detail.value);
491
491
  });
492
492
  </script>
@@ -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
  ```