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.
- package/bin/templates/CLAUDE.md +7 -7
- package/dist/components/audio-recorder/snice-audio-recorder.js +6 -6
- package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -1
- package/dist/components/banner/snice-banner.js +3 -3
- package/dist/components/banner/snice-banner.js.map +1 -1
- package/dist/components/button/snice-button.js +1 -1
- package/dist/components/calendar/snice-calendar.js +2 -2
- package/dist/components/calendar/snice-calendar.js.map +1 -1
- package/dist/components/camera/snice-camera.d.ts +2 -0
- package/dist/components/camera/snice-camera.js +26 -7
- package/dist/components/camera/snice-camera.js.map +1 -1
- package/dist/components/carousel/snice-carousel.js +1 -1
- package/dist/components/carousel/snice-carousel.js.map +1 -1
- package/dist/components/checkbox/snice-checkbox.js +3 -3
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/color-picker/snice-color-picker.js +4 -4
- package/dist/components/color-picker/snice-color-picker.js.map +1 -1
- package/dist/components/command-palette/snice-command-palette.js +5 -5
- package/dist/components/command-palette/snice-command-palette.js.map +1 -1
- package/dist/components/date-picker/snice-date-picker.js +8 -8
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/draw/snice-draw.js +5 -5
- package/dist/components/draw/snice-draw.js.map +1 -1
- package/dist/components/drawer/snice-drawer.js +2 -2
- package/dist/components/drawer/snice-drawer.js.map +1 -1
- package/dist/components/empty-state/snice-empty-state.js +1 -1
- package/dist/components/empty-state/snice-empty-state.js.map +1 -1
- package/dist/components/file-gallery/snice-file-gallery.d.ts +1 -1
- package/dist/components/file-gallery/snice-file-gallery.js +20 -20
- package/dist/components/file-gallery/snice-file-gallery.js.map +1 -1
- package/dist/components/file-gallery/snice-file-gallery.types.d.ts +0 -1
- package/dist/components/file-upload/snice-file-upload.js +2 -2
- package/dist/components/file-upload/snice-file-upload.js.map +1 -1
- package/dist/components/input/snice-input.js +5 -5
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.js +2 -2
- package/dist/components/kanban/snice-kanban.js.map +1 -1
- package/dist/components/location/snice-location.js +1 -1
- package/dist/components/location/snice-location.js.map +1 -1
- package/dist/components/login/snice-login.js +4 -4
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/menu/snice-menu-item.js +1 -1
- package/dist/components/menu/snice-menu-item.js.map +1 -1
- package/dist/components/menu/snice-menu.js +3 -3
- package/dist/components/menu/snice-menu.js.map +1 -1
- package/dist/components/modal/snice-modal.js +2 -2
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/music-player/snice-music-player.js +10 -10
- package/dist/components/music-player/snice-music-player.js.map +1 -1
- package/dist/components/pagination/snice-pagination.js +1 -1
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/qr-reader/snice-qr-reader.js +3 -3
- package/dist/components/qr-reader/snice-qr-reader.js.map +1 -1
- package/dist/components/radio/snice-radio.js +1 -1
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-select.js +3 -3
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/slider/snice-slider.js +2 -2
- package/dist/components/slider/snice-slider.js.map +1 -1
- package/dist/components/split-pane/snice-split-pane.js +1 -1
- package/dist/components/split-pane/snice-split-pane.js.map +1 -1
- package/dist/components/switch/snice-switch.js +1 -1
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.js +1 -1
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-column.js +1 -1
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.js +3 -3
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-row.js +3 -3
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.js +3 -3
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/tabs/snice-tab.js +2 -2
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.js +2 -2
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- package/dist/components/terminal/snice-terminal.js +3 -3
- package/dist/components/terminal/snice-terminal.js.map +1 -1
- package/dist/components/textarea/snice-textarea.js +4 -4
- package/dist/components/textarea/snice-textarea.js.map +1 -1
- package/dist/components/theme/theme.css +3 -0
- package/dist/components/timer/snice-timer.js +4 -4
- package/dist/components/timer/snice-timer.js.map +1 -1
- package/dist/components/tree/snice-tree-item.js +1 -1
- package/dist/components/tree/snice-tree-item.js.map +1 -1
- package/dist/components/tree/snice-tree.js +5 -5
- package/dist/components/tree/snice-tree.js.map +1 -1
- package/dist/index.cjs +7 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +7 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +7 -3
- package/dist/index.iife.js.map +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/components/audio-recorder.md +6 -6
- package/docs/ai/components/calendar.md +2 -2
- package/docs/ai/components/camera.md +13 -6
- package/docs/ai/components/carousel.md +1 -1
- package/docs/ai/components/color-picker.md +1 -1
- package/docs/ai/components/command-palette.md +6 -6
- package/docs/ai/components/draw.md +5 -5
- package/docs/ai/components/drawer.md +2 -2
- package/docs/ai/components/empty-state.md +1 -1
- package/docs/ai/components/file-gallery.md +7 -6
- package/docs/ai/components/file-upload.md +2 -2
- package/docs/ai/components/kanban.md +3 -3
- package/docs/ai/components/menu.md +3 -3
- package/docs/ai/components/modal.md +2 -2
- package/docs/ai/components/music-player.md +9 -9
- package/docs/ai/components/pagination.md +2 -2
- package/docs/ai/components/qr-reader.md +4 -4
- package/docs/ai/components/select.md +4 -4
- package/docs/ai/components/slider.md +1 -1
- package/docs/ai/components/split-pane.md +1 -1
- package/docs/ai/components/switch.md +2 -2
- package/docs/ai/components/tabs.md +4 -4
- package/docs/ai/components/terminal.md +1 -1
- package/docs/ai/components/timer.md +4 -4
- package/docs/ai/components/tree.md +7 -7
- package/docs/components/audio-recorder.md +7 -7
- package/docs/components/banner.md +4 -4
- package/docs/components/calendar.md +11 -11
- package/docs/components/camera.md +33 -10
- package/docs/components/carousel.md +1 -1
- package/docs/components/color-picker.md +1 -1
- package/docs/components/command-palette.md +6 -6
- package/docs/components/draw.md +6 -6
- package/docs/components/drawer.md +6 -6
- package/docs/components/empty-state.md +1 -1
- package/docs/components/file-gallery.md +24 -23
- package/docs/components/file-upload.md +7 -7
- package/docs/components/kanban.md +7 -7
- package/docs/components/menu.md +11 -11
- package/docs/components/modal.md +7 -7
- package/docs/components/music-player.md +16 -16
- package/docs/components/pagination.md +5 -5
- package/docs/components/qr-reader.md +12 -12
- package/docs/components/select.md +9 -9
- package/docs/components/slider.md +6 -6
- package/docs/components/split-pane.md +2 -2
- package/docs/components/switch.md +4 -4
- package/docs/components/tabs.md +10 -10
- package/docs/components/terminal.md +6 -6
- package/docs/components/textarea.md +7 -7
- package/docs/components/timer.md +8 -8
- package/docs/components/tree.md +9 -9
- package/package.json +1 -1
package/dist/symbols.cjs
CHANGED
package/dist/symbols.esm.js
CHANGED
package/dist/transitions.cjs
CHANGED
package/dist/transitions.esm.js
CHANGED
|
@@ -43,12 +43,12 @@ interface AudioRecording {
|
|
|
43
43
|
|
|
44
44
|
## Events
|
|
45
45
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
46
|
+
- `recorder-start` - Recording started
|
|
47
|
+
- `recorder-stop` - Recording stopped
|
|
48
|
+
- `recorder-pause` - Paused
|
|
49
|
+
- `recorder-resume` - Resumed
|
|
50
|
+
- `recorder-cancel` - Cancelled
|
|
51
|
+
- `recorder-error` - Error
|
|
52
52
|
|
|
53
53
|
## Usage
|
|
54
54
|
|
|
@@ -47,8 +47,8 @@ getEventsForDate(date: Date | string): CalendarEvent[]
|
|
|
47
47
|
|
|
48
48
|
## Events
|
|
49
49
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
50
|
+
- `calendar-change` - Date selected (detail: { value, calendar })
|
|
51
|
+
- `calendar-event-click` - Event clicked (detail: { event, calendar })
|
|
52
52
|
|
|
53
53
|
## Usage
|
|
54
54
|
|
|
@@ -12,7 +12,8 @@ controlsPosition: ControlsPosition = 'auto';
|
|
|
12
12
|
showControls: boolean = true;
|
|
13
13
|
width: number = 1280;
|
|
14
14
|
height: number = 720;
|
|
15
|
-
aspectRatio: string = ''; // '16:9', '4:3', '1:1', '21:9'
|
|
15
|
+
aspectRatio: string = ''; // '16:9', '9:16', '4:3', '1:1', '21:9'
|
|
16
|
+
objectFit: 'contain'|'cover' = 'contain'; // contain: full video, cover: fills frame (may crop)
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
## ControlsPosition
|
|
@@ -53,10 +54,10 @@ interface CapturedImage {
|
|
|
53
54
|
|
|
54
55
|
## Events
|
|
55
56
|
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
57
|
+
- `camera-start` - Camera started (detail: { stream })
|
|
58
|
+
- `camera-stop` - Camera stopped
|
|
59
|
+
- `camera-capture` - Photo captured (detail: { image })
|
|
60
|
+
- `camera-error` - Error occurred (detail: { error })
|
|
60
61
|
|
|
61
62
|
## Slots
|
|
62
63
|
|
|
@@ -96,6 +97,12 @@ interface CapturedImage {
|
|
|
96
97
|
|
|
97
98
|
<!-- Square -->
|
|
98
99
|
<snice-camera aspect-ratio="1:1" width="1080" height="1080"></snice-camera>
|
|
100
|
+
|
|
101
|
+
<!-- Portrait mode with cover -->
|
|
102
|
+
<snice-camera aspect-ratio="9:16" object-fit="cover" width="720" height="1280"></snice-camera>
|
|
103
|
+
|
|
104
|
+
<!-- Cover mode (fills container, may crop) -->
|
|
105
|
+
<snice-camera object-fit="cover"></snice-camera>
|
|
99
106
|
```
|
|
100
107
|
|
|
101
108
|
```javascript
|
|
@@ -107,7 +114,7 @@ const image = await camera.capture();
|
|
|
107
114
|
await camera.switchCamera();
|
|
108
115
|
|
|
109
116
|
// Events
|
|
110
|
-
camera.addEventListener('
|
|
117
|
+
camera.addEventListener('camera-capture', (e) => {
|
|
111
118
|
const img = e.detail.image;
|
|
112
119
|
console.log(img.dataURL);
|
|
113
120
|
});
|
|
@@ -58,7 +58,7 @@ presets: string[] = [...];
|
|
|
58
58
|
<snice-color-picker id="picker"></snice-color-picker>
|
|
59
59
|
<script>
|
|
60
60
|
const picker = document.querySelector('#picker');
|
|
61
|
-
picker.addEventListener('
|
|
61
|
+
picker.addEventListener('color-picker-change', (e) => {
|
|
62
62
|
console.log('Color:', e.detail.value);
|
|
63
63
|
});
|
|
64
64
|
</script>
|
|
@@ -45,11 +45,11 @@ interface CommandItem {
|
|
|
45
45
|
|
|
46
46
|
## Events
|
|
47
47
|
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
48
|
+
- `command-palette-open` - Opened (detail: { palette })
|
|
49
|
+
- `command-palette-close` - Closed (detail: { palette })
|
|
50
|
+
- `command-select` - Command selected (detail: { command, palette })
|
|
51
|
+
- `command-execute` - Command executed (detail: { command, palette })
|
|
52
|
+
- `command-search` - Search changed (detail: { query, results, palette })
|
|
53
53
|
|
|
54
54
|
## Usage
|
|
55
55
|
|
|
@@ -97,7 +97,7 @@ interface CommandItem {
|
|
|
97
97
|
|
|
98
98
|
<!-- Events -->
|
|
99
99
|
<script>
|
|
100
|
-
palette.addEventListener('
|
|
100
|
+
palette.addEventListener('command-execute', (e) => {
|
|
101
101
|
console.log('Executed:', e.detail.command.label);
|
|
102
102
|
});
|
|
103
103
|
</script>
|
|
@@ -49,11 +49,11 @@ interface DrawStroke {
|
|
|
49
49
|
|
|
50
50
|
## Events
|
|
51
51
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
52
|
+
- `draw-start` - Drawing started
|
|
53
|
+
- `draw-end` - Stroke completed (detail: { stroke })
|
|
54
|
+
- `draw-clear` - Canvas cleared
|
|
55
|
+
- `draw-undo` - Undo performed
|
|
56
|
+
- `draw-redo` - Redo performed
|
|
57
57
|
|
|
58
58
|
## Usage
|
|
59
59
|
|
|
@@ -52,7 +52,7 @@ actionHref: string = '';
|
|
|
52
52
|
<!-- Events -->
|
|
53
53
|
<snice-empty-state id="empty" action-text="Click"></snice-empty-state>
|
|
54
54
|
<script>
|
|
55
|
-
document.querySelector('#empty').addEventListener('
|
|
55
|
+
document.querySelector('#empty').addEventListener('empty-state-action', () => {
|
|
56
56
|
console.log('Action clicked');
|
|
57
57
|
});
|
|
58
58
|
</script>
|
|
@@ -15,8 +15,8 @@ showProgress: boolean = true;
|
|
|
15
15
|
allowPause: boolean = true;
|
|
16
16
|
allowDelete: boolean = true;
|
|
17
17
|
autoUpload: boolean = true;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
showDropzone: boolean = true; // show drop zone for drag & drop
|
|
19
|
+
showAddButton: boolean = false; // show add button tile in gallery
|
|
20
20
|
files: GalleryFile[]; // read-only
|
|
21
21
|
```
|
|
22
22
|
|
|
@@ -155,8 +155,9 @@ controller.attach?.(document.body);
|
|
|
155
155
|
allow-pause="false"
|
|
156
156
|
></snice-file-gallery>
|
|
157
157
|
|
|
158
|
-
<!-- Add button mode -->
|
|
158
|
+
<!-- Add button mode (hide drop zone, show add tile) -->
|
|
159
159
|
<snice-file-gallery
|
|
160
|
+
show-dropzone="false"
|
|
160
161
|
show-add-button="true"
|
|
161
162
|
max-files="6"
|
|
162
163
|
></snice-file-gallery>
|
|
@@ -171,7 +172,7 @@ const icon = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">...</sv
|
|
|
171
172
|
const actionId = gallery.addCustomAction(icon, 'Camera');
|
|
172
173
|
|
|
173
174
|
// Handle custom action
|
|
174
|
-
gallery.addEventListener('
|
|
175
|
+
gallery.addEventListener('custom-action-click', (e) => {
|
|
175
176
|
if (e.detail.actionId === actionId) {
|
|
176
177
|
// Handle camera action
|
|
177
178
|
const file = capturePhoto(); // your implementation
|
|
@@ -180,10 +181,10 @@ gallery.addEventListener('@snice/custom-action-click', (e) => {
|
|
|
180
181
|
});
|
|
181
182
|
|
|
182
183
|
// Other events
|
|
183
|
-
gallery.addEventListener('
|
|
184
|
+
gallery.addEventListener('files-change', (e) => {
|
|
184
185
|
console.log('Files:', e.detail.files);
|
|
185
186
|
});
|
|
186
|
-
gallery.addEventListener('
|
|
187
|
+
gallery.addEventListener('upload-complete', (e) => {
|
|
187
188
|
console.log('Complete:', e.detail.url);
|
|
188
189
|
});
|
|
189
190
|
|
|
@@ -71,10 +71,10 @@ files: FileList | null;
|
|
|
71
71
|
<snice-file-upload id="upload"></snice-file-upload>
|
|
72
72
|
<script>
|
|
73
73
|
const upload = document.querySelector('#upload');
|
|
74
|
-
upload.addEventListener('
|
|
74
|
+
upload.addEventListener('file-upload-change', (e) => {
|
|
75
75
|
console.log('Files:', e.detail.files);
|
|
76
76
|
});
|
|
77
|
-
upload.addEventListener('
|
|
77
|
+
upload.addEventListener('file-upload-error', (e) => {
|
|
78
78
|
console.error('Error:', e.detail.message);
|
|
79
79
|
});
|
|
80
80
|
</script>
|
|
@@ -58,8 +58,8 @@ clearFilters(): void
|
|
|
58
58
|
|
|
59
59
|
## Events
|
|
60
60
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
61
|
+
- `kanban-card-move` - Card moved (detail: { card, fromColumn, toColumn, kanban })
|
|
62
|
+
- `kanban-card-click` - Card clicked (detail: { card, kanban })
|
|
63
63
|
|
|
64
64
|
## Usage
|
|
65
65
|
|
|
@@ -97,7 +97,7 @@ kanban.search('landing page');
|
|
|
97
97
|
kanban.clearFilters();
|
|
98
98
|
|
|
99
99
|
// Events
|
|
100
|
-
kanban.addEventListener('
|
|
100
|
+
kanban.addEventListener('kanban-card-move', (e) => {
|
|
101
101
|
console.log(`Moved ${e.detail.card.title}`);
|
|
102
102
|
});
|
|
103
103
|
```
|
|
@@ -25,8 +25,8 @@ distance: number = 4;
|
|
|
25
25
|
|
|
26
26
|
## Events
|
|
27
27
|
|
|
28
|
-
-
|
|
29
|
-
-
|
|
28
|
+
- `menu-open` - Fired when menu opens (detail: { menu: SniceMenuElement })
|
|
29
|
+
- `menu-close` - Fired when menu closes (detail: { menu: SniceMenuElement })
|
|
30
30
|
|
|
31
31
|
## Usage
|
|
32
32
|
|
|
@@ -95,7 +95,7 @@ selected: boolean = false;
|
|
|
95
95
|
|
|
96
96
|
### Events
|
|
97
97
|
|
|
98
|
-
-
|
|
98
|
+
- `menu-item-select` - Fired when item is clicked (detail: { item: SniceMenuItemElement, value: string })
|
|
99
99
|
|
|
100
100
|
## snice-menu-divider
|
|
101
101
|
|
|
@@ -56,16 +56,16 @@ interface Track {
|
|
|
56
56
|
|
|
57
57
|
## Events
|
|
58
58
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
59
|
+
- `player-play` - Playback started
|
|
60
|
+
- `player-pause` - Playback paused
|
|
61
|
+
- `player-stop` - Playback stopped
|
|
62
|
+
- `player-track-change` - Track changed
|
|
63
|
+
- `player-track-ended` - Track ended
|
|
64
|
+
- `player-shuffle-change` - Shuffle changed
|
|
65
|
+
- `player-repeat-change` - Repeat mode changed
|
|
66
|
+
- `player-volume-change` - Volume changed
|
|
67
67
|
- `@snice/player-time-update` - Time updated
|
|
68
|
-
-
|
|
68
|
+
- `player-error` - Error occurred
|
|
69
69
|
|
|
70
70
|
## Usage
|
|
71
71
|
|
|
@@ -29,7 +29,7 @@ lastPage() // Last page
|
|
|
29
29
|
## Events
|
|
30
30
|
|
|
31
31
|
```typescript
|
|
32
|
-
'
|
|
32
|
+
'pagination-change' // { page, previousPage }
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Usage
|
|
@@ -39,7 +39,7 @@ lastPage() // Last page
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
```typescript
|
|
42
|
-
pagination.addEventListener('
|
|
42
|
+
pagination.addEventListener('pagination-change', (e) => {
|
|
43
43
|
console.log(e.detail.page);
|
|
44
44
|
});
|
|
45
45
|
```
|
|
@@ -18,17 +18,17 @@ QR code scanner using device camera and ZXing WASM decoder.
|
|
|
18
18
|
- `snap()` - Take snapshot (manual-snap mode)
|
|
19
19
|
|
|
20
20
|
### Events
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- `qr-scan` - detail: `{data: string, timestamp: number, reader: SniceQRReader}`
|
|
22
|
+
- `qr-error` - detail: `{error: any, reader: SniceQRReader}`
|
|
23
23
|
- `@snice/camera-ready` - detail: `{reader: SniceQRReader}`
|
|
24
|
-
-
|
|
24
|
+
- `camera-error` - detail: `{error: any, reader: SniceQRReader}`
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
28
28
|
```html
|
|
29
29
|
<snice-qr-reader auto-start></snice-qr-reader>
|
|
30
30
|
<script>
|
|
31
|
-
reader.addEventListener('
|
|
31
|
+
reader.addEventListener('qr-scan', e => console.log(e.detail.data));
|
|
32
32
|
</script>
|
|
33
33
|
```
|
|
34
34
|
|
|
@@ -36,9 +36,9 @@ blur() // Blur and close
|
|
|
36
36
|
|
|
37
37
|
**Events:**
|
|
38
38
|
```typescript
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
39
|
+
'select-change' // { value, option, select }
|
|
40
|
+
'select-open' // { select }
|
|
41
|
+
'select-close' // { select }
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
### snice-option (Option Item)
|
|
@@ -66,7 +66,7 @@ optionData // { value, label, disabled, selected, icon }
|
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
```typescript
|
|
69
|
-
select.addEventListener('
|
|
69
|
+
select.addEventListener('select-change', (e) => {
|
|
70
70
|
console.log(e.detail.value);
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -67,7 +67,7 @@ vertical: boolean = false;
|
|
|
67
67
|
<snice-slider id="slider"></snice-slider>
|
|
68
68
|
<script>
|
|
69
69
|
const slider = document.querySelector('#slider');
|
|
70
|
-
slider.addEventListener('
|
|
70
|
+
slider.addEventListener('slider-change', (e) => {
|
|
71
71
|
console.log('Value:', e.detail.value);
|
|
72
72
|
});
|
|
73
73
|
</script>
|
|
@@ -29,7 +29,7 @@ click() // Programmatic click
|
|
|
29
29
|
## Events
|
|
30
30
|
|
|
31
31
|
```typescript
|
|
32
|
-
'
|
|
32
|
+
'switch-change' // { checked, switch }
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Usage
|
|
@@ -39,7 +39,7 @@ click() // Programmatic click
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
```typescript
|
|
42
|
-
switchEl.addEventListener('
|
|
42
|
+
switchEl.addEventListener('switch-change', (e) => {
|
|
43
43
|
console.log(e.detail.checked);
|
|
44
44
|
});
|
|
45
45
|
```
|
|
@@ -23,7 +23,7 @@ getPanel(index: number) // Get panel element
|
|
|
23
23
|
|
|
24
24
|
**Events:**
|
|
25
25
|
```typescript
|
|
26
|
-
'
|
|
26
|
+
'tab-change' // { index, oldIndex, tab, panel }
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
### snice-tab (Tab Button)
|
|
@@ -41,8 +41,8 @@ blur() // Remove focus
|
|
|
41
41
|
|
|
42
42
|
**Events:**
|
|
43
43
|
```typescript
|
|
44
|
-
'
|
|
45
|
-
'
|
|
44
|
+
'tab-select' // { tab }
|
|
45
|
+
'tab-close' // { tab }
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
### snice-tab-panel (Content Panel)
|
|
@@ -68,7 +68,7 @@ transitionDuration: number = 300; // Transition duration (ms)
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
```typescript
|
|
71
|
-
tabs.addEventListener('
|
|
71
|
+
tabs.addEventListener('tab-change', (e) => {
|
|
72
72
|
console.log(e.detail.index);
|
|
73
73
|
});
|
|
74
74
|
|
|
@@ -122,7 +122,7 @@ interface TerminalCommandResponse {
|
|
|
122
122
|
const terminal = document.querySelector('snice-terminal');
|
|
123
123
|
|
|
124
124
|
// Listen for commands (event pattern)
|
|
125
|
-
terminal.addEventListener('
|
|
125
|
+
terminal.addEventListener('terminal-command', (e) => {
|
|
126
126
|
console.log('Command:', e.detail.command, e.detail.args);
|
|
127
127
|
});
|
|
128
128
|
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
- `getTime()`: Get current time in seconds
|
|
18
18
|
|
|
19
19
|
## Events
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
20
|
+
- `timer-start`: { timer, time }
|
|
21
|
+
- `timer-stop`: { timer, time }
|
|
22
|
+
- `timer-reset`: { timer, time }
|
|
23
|
+
- `timer-complete`: { timer } - Countdown reached 0
|
|
24
24
|
|
|
25
25
|
## Implementation
|
|
26
26
|
- Uses requestAnimationFrame for smooth updates
|
|
@@ -58,11 +58,11 @@ interface TreeNode {
|
|
|
58
58
|
|
|
59
59
|
## Events
|
|
60
60
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
61
|
+
- `tree-node-expand` - Node expanded (detail: { nodeId, node, tree })
|
|
62
|
+
- `tree-node-collapse` - Node collapsed (detail: { nodeId, node, tree })
|
|
63
|
+
- `tree-node-select` - Node selected (detail: { nodeId, node, selectedNodes, tree })
|
|
64
|
+
- `tree-node-check` - Node checked/unchecked (detail: { nodeId, node, checked, checkedNodes, tree })
|
|
65
|
+
- `tree-node-lazy-load` - Lazy node expanded (detail: { nodeId, node, tree })
|
|
66
66
|
|
|
67
67
|
## Usage
|
|
68
68
|
|
|
@@ -114,7 +114,7 @@ interface TreeNode {
|
|
|
114
114
|
<snice-tree id="tree"></snice-tree>
|
|
115
115
|
<script>
|
|
116
116
|
const tree = document.getElementById('tree');
|
|
117
|
-
tree.addEventListener('
|
|
117
|
+
tree.addEventListener('tree-node-select', (e) => {
|
|
118
118
|
console.log('Selected:', e.detail.node.label);
|
|
119
119
|
console.log('All selected:', e.detail.selectedNodes.map(n => n.label));
|
|
120
120
|
});
|
|
@@ -134,7 +134,7 @@ interface TreeNode {
|
|
|
134
134
|
}
|
|
135
135
|
];
|
|
136
136
|
|
|
137
|
-
lazyTree.addEventListener('
|
|
137
|
+
lazyTree.addEventListener('tree-node-lazy-load', async (e) => {
|
|
138
138
|
const node = e.detail.node;
|
|
139
139
|
const data = await fetch(`/api/nodes/${node.id}`).then(r => r.json());
|
|
140
140
|
|
|
@@ -11,7 +11,7 @@ Record audio with visualization, pause/resume, and playback.
|
|
|
11
11
|
const recorder = document.getElementById('recorder');
|
|
12
12
|
|
|
13
13
|
// Listen for stop event
|
|
14
|
-
recorder.addEventListener('
|
|
14
|
+
recorder.addEventListener('recorder-stop', async () => {
|
|
15
15
|
// Recording complete
|
|
16
16
|
});
|
|
17
17
|
</script>
|
|
@@ -67,12 +67,12 @@ Download recorded audio.
|
|
|
67
67
|
|
|
68
68
|
## Events
|
|
69
69
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
70
|
+
- `recorder-start` - Recording started
|
|
71
|
+
- `recorder-stop` - Recording stopped
|
|
72
|
+
- `recorder-pause` - Recording paused
|
|
73
|
+
- `recorder-resume` - Recording resumed
|
|
74
|
+
- `recorder-cancel` - Recording cancelled
|
|
75
|
+
- `recorder-error` - Error occurred
|
|
76
76
|
|
|
77
77
|
## Examples
|
|
78
78
|
|
|
@@ -37,13 +37,13 @@ Toggle banner visibility.
|
|
|
37
37
|
|
|
38
38
|
## Events
|
|
39
39
|
|
|
40
|
-
###
|
|
40
|
+
### `banner-open`
|
|
41
41
|
Fired when banner opens.
|
|
42
42
|
|
|
43
|
-
###
|
|
43
|
+
### `banner-close`
|
|
44
44
|
Fired when banner closes.
|
|
45
45
|
|
|
46
|
-
###
|
|
46
|
+
### `banner-action`
|
|
47
47
|
Fired when action button is clicked.
|
|
48
48
|
|
|
49
49
|
## Examples
|
|
@@ -67,7 +67,7 @@ Fired when action button is clicked.
|
|
|
67
67
|
></snice-banner>
|
|
68
68
|
|
|
69
69
|
<script>
|
|
70
|
-
document.querySelector('snice-banner').addEventListener('
|
|
70
|
+
document.querySelector('snice-banner').addEventListener('banner-action', () => {
|
|
71
71
|
console.log('Update clicked');
|
|
72
72
|
});
|
|
73
73
|
</script>
|