snice 3.4.0 → 3.5.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/base/package.json +2 -2
- package/bin/templates/social/package.json +2 -2
- package/bin/templates/social/src/styles/global.css +56 -47
- package/dist/components/avatar/snice-avatar.d.ts +2 -2
- package/dist/components/avatar/snice-avatar.js +20 -21
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +8 -2
- package/dist/components/calendar/snice-calendar.js +160 -82
- package/dist/components/calendar/snice-calendar.js.map +1 -1
- package/dist/components/chart/snice-chart.js +50 -18
- package/dist/components/chart/snice-chart.js.map +1 -1
- package/dist/components/checkbox/snice-checkbox.d.ts +4 -1
- package/dist/components/checkbox/snice-checkbox.js +46 -17
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/code-block/highlighter.d.ts +5 -0
- package/dist/components/code-block/highlighter.js +137 -0
- package/dist/components/code-block/highlighter.js.map +1 -0
- package/dist/components/code-block/highlighters/highlight.d.ts +64 -0
- package/dist/components/code-block/highlighters/highlight.js +108 -0
- package/dist/components/code-block/highlighters/highlight.js.map +1 -0
- package/dist/components/code-block/highlighters/prism.d.ts +41 -0
- package/dist/components/code-block/highlighters/prism.js +73 -0
- package/dist/components/code-block/highlighters/prism.js.map +1 -0
- package/dist/components/code-block/snice-code-block.d.ts +19 -1
- package/dist/components/code-block/snice-code-block.js +128 -29
- package/dist/components/code-block/snice-code-block.js.map +1 -1
- package/dist/components/code-block/snice-code-block.types.d.ts +15 -1
- package/dist/components/color-picker/snice-color-picker.d.ts +1 -0
- package/dist/components/color-picker/snice-color-picker.js +17 -6
- package/dist/components/color-picker/snice-color-picker.js.map +1 -1
- package/dist/components/date-picker/snice-date-picker.d.ts +1 -0
- package/dist/components/date-picker/snice-date-picker.js +16 -5
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/doc/snice-doc.d.ts +27 -73
- package/dist/components/doc/snice-doc.js +385 -534
- package/dist/components/doc/snice-doc.js.map +1 -1
- package/dist/components/draw/snice-draw.d.ts +4 -0
- package/dist/components/draw/snice-draw.js +134 -14
- package/dist/components/draw/snice-draw.js.map +1 -1
- package/dist/components/draw/snice-draw.types.d.ts +5 -0
- package/dist/components/file-upload/snice-file-upload.js +1 -1
- package/dist/components/input/snice-input.d.ts +2 -0
- package/dist/components/input/snice-input.js +34 -9
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.d.ts +13 -1
- package/dist/components/kanban/snice-kanban.js +191 -36
- package/dist/components/kanban/snice-kanban.js.map +1 -1
- package/dist/components/kanban/snice-kanban.types.d.ts +11 -1
- package/dist/components/kpi/snice-kpi.js +5 -1
- package/dist/components/kpi/snice-kpi.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.js +1 -1
- package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
- package/dist/components/layout/snice-layout.js +1 -1
- package/dist/components/layout/snice-layout.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/radio/snice-radio.d.ts +1 -0
- package/dist/components/radio/snice-radio.js +17 -6
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +2 -0
- package/dist/components/select/snice-select.js +48 -19
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/slider/snice-slider.d.ts +2 -0
- package/dist/components/slider/snice-slider.js +34 -14
- package/dist/components/slider/snice-slider.js.map +1 -1
- package/dist/components/snice-cell-HZ2iIBIC.js +4 -0
- package/dist/components/snice-cell-HZ2iIBIC.js.map +1 -0
- 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.d.ts +1 -0
- package/dist/components/switch/snice-switch.js +16 -6
- 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-cell-boolean.js +1 -1
- package/dist/components/table/snice-cell-color.js +1 -1
- package/dist/components/table/snice-cell-color.js.map +1 -1
- package/dist/components/table/snice-cell-currency.js +1 -1
- package/dist/components/table/snice-cell-date.js +1 -1
- package/dist/components/table/snice-cell-duration.js +1 -1
- package/dist/components/table/snice-cell-email.js +1 -1
- package/dist/components/table/snice-cell-email.js.map +1 -1
- package/dist/components/table/snice-cell-filesize.js +1 -1
- package/dist/components/table/snice-cell-image.js +1 -1
- package/dist/components/table/snice-cell-image.js.map +1 -1
- package/dist/components/table/snice-cell-json.js +1 -1
- package/dist/components/table/snice-cell-json.js.map +1 -1
- package/dist/components/table/snice-cell-link.js +1 -1
- package/dist/components/table/snice-cell-link.js.map +1 -1
- package/dist/components/table/snice-cell-location.js +1 -1
- package/dist/components/table/snice-cell-location.js.map +1 -1
- package/dist/components/table/snice-cell-number.js +1 -1
- package/dist/components/table/snice-cell-percentage.js +1 -1
- package/dist/components/table/snice-cell-percentage.js.map +1 -1
- package/dist/components/table/snice-cell-phone.js +1 -1
- package/dist/components/table/snice-cell-phone.js.map +1 -1
- package/dist/components/table/snice-cell-progress.js +3 -3
- package/dist/components/table/snice-cell-progress.js.map +1 -1
- package/dist/components/table/snice-cell-rating.js +2 -2
- package/dist/components/table/snice-cell-rating.js.map +1 -1
- package/dist/components/table/snice-cell-sparkline.js +2 -2
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.js +1 -1
- package/dist/components/table/snice-cell-status.js.map +1 -1
- package/dist/components/table/snice-cell-tag.js +1 -1
- package/dist/components/table/snice-cell-tag.js.map +1 -1
- package/dist/components/table/snice-cell-text.js +1 -1
- package/dist/components/table/snice-cell.js +15 -10
- package/dist/components/table/snice-cell.js.map +1 -1
- package/dist/components/table/snice-header.js +1 -1
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-row.js +2 -2
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +1 -0
- package/dist/components/table/snice-table.js +24 -4
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/terminal/snice-terminal.d.ts +40 -0
- package/dist/components/terminal/snice-terminal.js +371 -0
- package/dist/components/terminal/snice-terminal.js.map +1 -0
- package/dist/components/terminal/snice-terminal.types.d.ts +20 -24
- package/dist/components/textarea/snice-textarea.d.ts +2 -0
- package/dist/components/textarea/snice-textarea.js +25 -6
- package/dist/components/textarea/snice-textarea.js.map +1 -1
- package/dist/components/theme/theme.css +16 -0
- package/dist/components/tree/snice-tree-item.d.ts +18 -4
- package/dist/components/tree/snice-tree-item.js +271 -88
- package/dist/components/tree/snice-tree-item.js.map +1 -1
- package/dist/components/tree/snice-tree-item.types.d.ts +3 -0
- package/dist/components/tree/snice-tree.d.ts +18 -2
- package/dist/components/tree/snice-tree.js +422 -56
- package/dist/components/tree/snice-tree.js.map +1 -1
- package/dist/components/tree/snice-tree.types.d.ts +1 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js +4 -2
- package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -1
- package/dist/index.cjs +42 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +42 -23
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +42 -23
- package/dist/index.iife.js.map +1 -1
- package/dist/render-tracker.d.ts +1 -0
- package/dist/symbols.cjs +13 -14
- package/dist/symbols.cjs.map +1 -1
- package/dist/symbols.esm.js +13 -14
- package/dist/symbols.esm.js.map +1 -1
- package/dist/template.d.ts +1 -0
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/api.md +37 -4
- package/docs/ai/components/doc.md +41 -106
- package/docs/ai/components/kanban.md +31 -9
- package/docs/ai/components/kpi.md +15 -0
- package/docs/components/doc.md +96 -212
- package/docs/components/kanban.md +119 -4
- package/docs/components/kpi.md +27 -0
- package/package.json +4 -1
- package/dist/components/actions/snice-actions.d.ts +0 -28
- package/dist/components/actions/snice-actions.js +0 -220
- package/dist/components/actions/snice-actions.js.map +0 -1
- package/dist/components/actions/snice-actions.types.d.ts +0 -27
- package/dist/components/doc/snice-doc.types.d.ts +0 -118
- package/dist/components/gantt/snice-gantt.d.ts +0 -29
- package/dist/components/gantt/snice-gantt.js +0 -268
- package/dist/components/gantt/snice-gantt.js.map +0 -1
- package/dist/components/gantt/snice-gantt.types.d.ts +0 -23
- package/dist/components/snice-cell-C0slgOpe.js +0 -4
- package/dist/components/snice-cell-C0slgOpe.js.map +0 -1
- package/dist/components/stat/snice-stat.d.ts +0 -14
- package/dist/components/stat/snice-stat.js +0 -140
- package/dist/components/stat/snice-stat.js.map +0 -1
- package/dist/components/stat/snice-stat.types.d.ts +0 -12
- package/docs/ai/components/actions.md +0 -81
- package/docs/ai/components/gantt.md +0 -95
- package/docs/ai/components/stat.md +0 -29
- package/docs/components/actions.md +0 -317
- package/docs/components/gantt.md +0 -347
- package/docs/components/stat.md +0 -45
package/dist/render-tracker.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Render tracking for testing/debugging
|
|
3
3
|
* Uses symbols and generators to "pull" render events from elements
|
|
4
|
+
* Use Symbol.for() to ensure symbols are shared across multiple Snice instances
|
|
4
5
|
*/
|
|
5
6
|
export declare const RENDER_TRACKER: unique symbol;
|
|
6
7
|
export declare const TRACK_RENDERS: unique symbol;
|
package/dist/symbols.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v3.
|
|
2
|
+
* snice v3.4.1
|
|
3
3
|
* Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* Released under the MIT License.
|
|
@@ -8,23 +8,22 @@
|
|
|
8
8
|
|
|
9
9
|
// Global namespace for Snice framework
|
|
10
10
|
// Ensures all registries and symbols are shared across different JS files/modules
|
|
11
|
-
// Initialize
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
return globalThis.snice;
|
|
11
|
+
// Initialize the global Snice namespace on globalThis
|
|
12
|
+
// This ensures all module instances share the same registry
|
|
13
|
+
if (!globalThis.snice) {
|
|
14
|
+
globalThis.snice = {
|
|
15
|
+
controllerRegistry: new Map(),
|
|
16
|
+
controllerIdCounter: 0,
|
|
17
|
+
symbols: new Map()
|
|
18
|
+
};
|
|
21
19
|
}
|
|
22
|
-
// Export
|
|
23
|
-
const snice =
|
|
20
|
+
// Export direct reference to globalThis.snice
|
|
21
|
+
const snice = globalThis.snice;
|
|
24
22
|
// Helper function to get or create a global symbol
|
|
23
|
+
// Uses Symbol.for() to ensure symbols are shared across multiple Snice instances
|
|
25
24
|
function getSymbol(name) {
|
|
26
25
|
if (!snice.symbols.has(name)) {
|
|
27
|
-
snice.symbols.set(name, Symbol(name));
|
|
26
|
+
snice.symbols.set(name, Symbol.for(`snice:${name}`));
|
|
28
27
|
}
|
|
29
28
|
return snice.symbols.get(name);
|
|
30
29
|
}
|
package/dist/symbols.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.cjs","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAKA;AACA
|
|
1
|
+
{"version":3,"file":"symbols.cjs","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/symbols.esm.js
CHANGED
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v3.
|
|
2
|
+
* snice v3.4.1
|
|
3
3
|
* Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* Released under the MIT License.
|
|
6
6
|
*/
|
|
7
7
|
// Global namespace for Snice framework
|
|
8
8
|
// Ensures all registries and symbols are shared across different JS files/modules
|
|
9
|
-
// Initialize
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
return globalThis.snice;
|
|
9
|
+
// Initialize the global Snice namespace on globalThis
|
|
10
|
+
// This ensures all module instances share the same registry
|
|
11
|
+
if (!globalThis.snice) {
|
|
12
|
+
globalThis.snice = {
|
|
13
|
+
controllerRegistry: new Map(),
|
|
14
|
+
controllerIdCounter: 0,
|
|
15
|
+
symbols: new Map()
|
|
16
|
+
};
|
|
19
17
|
}
|
|
20
|
-
// Export
|
|
21
|
-
const snice =
|
|
18
|
+
// Export direct reference to globalThis.snice
|
|
19
|
+
const snice = globalThis.snice;
|
|
22
20
|
// Helper function to get or create a global symbol
|
|
21
|
+
// Uses Symbol.for() to ensure symbols are shared across multiple Snice instances
|
|
23
22
|
function getSymbol(name) {
|
|
24
23
|
if (!snice.symbols.has(name)) {
|
|
25
|
-
snice.symbols.set(name, Symbol(name));
|
|
24
|
+
snice.symbols.set(name, Symbol.for(`snice:${name}`));
|
|
26
25
|
}
|
|
27
26
|
return snice.symbols.get(name);
|
|
28
27
|
}
|
package/dist/symbols.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.esm.js","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;AAAA;AACA;AAKA;AACA
|
|
1
|
+
{"version":3,"file":"symbols.esm.js","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/template.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export declare function sanitize(value: any): string;
|
|
|
66
66
|
/**
|
|
67
67
|
* Nothing - represents no value (different from null/undefined)
|
|
68
68
|
* Used to remove content from templates
|
|
69
|
+
* Use Symbol.for() to ensure symbols are shared across multiple Snice instances
|
|
69
70
|
*/
|
|
70
71
|
export declare const nothing: unique symbol;
|
|
71
72
|
/**
|
package/dist/transitions.cjs
CHANGED
package/dist/transitions.esm.js
CHANGED
package/docs/ai/api.md
CHANGED
|
@@ -80,11 +80,44 @@ html`
|
|
|
80
80
|
## Communication
|
|
81
81
|
|
|
82
82
|
```typescript
|
|
83
|
-
@request(channel: string)
|
|
84
|
-
//
|
|
83
|
+
@request(channel: string, options?: { timeout?, discoveryTimeout?, debounce?, throttle?, bubbles?, cancelable? })
|
|
84
|
+
// Request pattern using async generator syntax
|
|
85
|
+
// Method must be async generator that yields payload and receives response
|
|
86
|
+
// Returns Promise<T>
|
|
87
|
+
// Options:
|
|
88
|
+
// timeout (ms) - response timeout, default 120000 (2 min)
|
|
89
|
+
// discoveryTimeout (ms) - handler discovery timeout, default 50
|
|
90
|
+
// debounce (ms) - debounce requests
|
|
91
|
+
// throttle (ms) - throttle requests
|
|
92
|
+
// bubbles (bool) - event bubbling, default true
|
|
93
|
+
// cancelable (bool) - event cancelable, default false
|
|
94
|
+
// Example:
|
|
95
|
+
// @request('fetch-user')
|
|
96
|
+
// async *fetchUser(id: string): any {
|
|
97
|
+
// try {
|
|
98
|
+
// const user = await (yield { id }); // yield = request, await = response
|
|
99
|
+
// return user;
|
|
100
|
+
// } catch (error) {
|
|
101
|
+
// console.error('Failed:', error);
|
|
102
|
+
// throw error;
|
|
103
|
+
// }
|
|
104
|
+
// }
|
|
105
|
+
// // Usage: const user = await this.fetchUser('123');
|
|
85
106
|
|
|
86
|
-
@respond(channel: string)
|
|
87
|
-
//
|
|
107
|
+
@respond(channel: string, options?: { debounce?, throttle? })
|
|
108
|
+
// Respond to requests from @request decorators
|
|
109
|
+
// Method receives payload and returns response
|
|
110
|
+
// Works in both elements and controllers
|
|
111
|
+
// Only one responder per channel (first wins via stopImmediatePropagation)
|
|
112
|
+
// Options:
|
|
113
|
+
// debounce (ms) - debounce responses
|
|
114
|
+
// throttle (ms) - throttle responses
|
|
115
|
+
// Example:
|
|
116
|
+
// @respond('fetch-user')
|
|
117
|
+
// async handleFetchUser(payload: { id: string }) {
|
|
118
|
+
// const user = await fetch(`/api/users/${payload.id}`).then(r => r.json());
|
|
119
|
+
// return user;
|
|
120
|
+
// }
|
|
88
121
|
```
|
|
89
122
|
|
|
90
123
|
## Observers
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# snice-doc
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Simple WYSIWYG document editor with toolbar and sidebar.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
@@ -10,54 +10,34 @@ Notion-like document editor with block-based editing.
|
|
|
10
10
|
|
|
11
11
|
## Properties
|
|
12
12
|
|
|
13
|
-
- `
|
|
14
|
-
- `placeholder: string` - Placeholder text (default: `"Type '/' for commands..."`)
|
|
13
|
+
- `placeholder: string` - Placeholder text (default: `"Start typing..."`)
|
|
15
14
|
- `readonly: boolean` - Readonly mode (default: `false`)
|
|
16
15
|
|
|
17
16
|
## Methods
|
|
18
17
|
|
|
19
|
-
- `
|
|
20
|
-
- `
|
|
21
|
-
- `toJSON(): string` - Export as JSON
|
|
22
|
-
- `fromJSON(json: string): void` - Import from JSON
|
|
23
|
-
- `toMarkdown(): string` - Export as Markdown
|
|
24
|
-
- `toHTML(): string` - Export as HTML
|
|
25
|
-
- `focus(): void` - Focus editor
|
|
18
|
+
- `getHTML(): string` - Get HTML content
|
|
19
|
+
- `setHTML(html: string): void` - Set HTML content
|
|
26
20
|
- `clear(): void` - Clear all content
|
|
27
21
|
|
|
28
|
-
##
|
|
22
|
+
## Toolbar
|
|
29
23
|
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
24
|
+
- **B, I, U, S** - Bold, italic, underline, strikethrough
|
|
25
|
+
- **H1, H2, H3, P** - Heading formats and paragraph
|
|
26
|
+
- **•, 1.** - Bulleted and numbered lists
|
|
27
|
+
- **🔗** - Insert link
|
|
28
|
+
- **🖼** - Insert image
|
|
33
29
|
|
|
34
|
-
##
|
|
30
|
+
## Sidebar
|
|
35
31
|
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
- `heading-3` - H3 heading
|
|
40
|
-
- `bulleted-list` - Bulleted list item
|
|
41
|
-
- `numbered-list` - Numbered list item
|
|
42
|
-
- `todo` - To-do with checkbox
|
|
43
|
-
- `code` - Code block
|
|
44
|
-
- `quote` - Blockquote
|
|
45
|
-
- `divider` - Horizontal rule
|
|
32
|
+
- **Image** - Insert image via URL
|
|
33
|
+
- **Table** - Insert table (rows × cols)
|
|
34
|
+
- **Divider** - Insert horizontal rule
|
|
46
35
|
|
|
47
36
|
## Keyboard Shortcuts
|
|
48
37
|
|
|
49
|
-
-
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **Ctrl/Cmd+B** - Bold (planned)
|
|
53
|
-
- **Ctrl/Cmd+I** - Italic (planned)
|
|
54
|
-
- **Ctrl/Cmd+U** - Underline (planned)
|
|
55
|
-
|
|
56
|
-
## Block Menu
|
|
57
|
-
|
|
58
|
-
- **ArrowDown/Up** - Navigate
|
|
59
|
-
- **Enter** - Select
|
|
60
|
-
- **Escape** - Close
|
|
38
|
+
- **Ctrl/Cmd+B** - Bold
|
|
39
|
+
- **Ctrl/Cmd+I** - Italic
|
|
40
|
+
- **Ctrl/Cmd+U** - Underline
|
|
61
41
|
|
|
62
42
|
## CSS Variables
|
|
63
43
|
|
|
@@ -68,55 +48,12 @@ Notion-like document editor with block-based editing.
|
|
|
68
48
|
--snice-doc-placeholder-color
|
|
69
49
|
--snice-doc-primary-color
|
|
70
50
|
--snice-doc-link-color
|
|
71
|
-
--snice-doc-code-background
|
|
72
|
-
--snice-doc-code-border
|
|
73
51
|
--snice-doc-inline-code-background
|
|
74
|
-
--snice-doc-quote-border
|
|
75
|
-
--snice-doc-divider-color
|
|
76
|
-
--snice-doc-menu-background
|
|
77
|
-
--snice-doc-menu-border
|
|
78
|
-
--snice-doc-menu-hover
|
|
79
52
|
--snice-doc-toolbar-background
|
|
80
|
-
--snice-doc-toolbar-
|
|
81
|
-
--snice-doc-
|
|
82
|
-
--snice-doc-
|
|
53
|
+
--snice-doc-toolbar-border
|
|
54
|
+
--snice-doc-sidebar-background
|
|
55
|
+
--snice-doc-sidebar-border
|
|
83
56
|
--snice-doc-padding
|
|
84
|
-
--snice-doc-min-height
|
|
85
|
-
--snice-doc-max-width
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## Types
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
type BlockType =
|
|
92
|
-
| 'paragraph'
|
|
93
|
-
| 'heading-1'
|
|
94
|
-
| 'heading-2'
|
|
95
|
-
| 'heading-3'
|
|
96
|
-
| 'bulleted-list'
|
|
97
|
-
| 'numbered-list'
|
|
98
|
-
| 'todo'
|
|
99
|
-
| 'code'
|
|
100
|
-
| 'quote'
|
|
101
|
-
| 'divider';
|
|
102
|
-
|
|
103
|
-
interface DocBlock {
|
|
104
|
-
id: string;
|
|
105
|
-
type: BlockType;
|
|
106
|
-
content: string;
|
|
107
|
-
formats: TextRange[];
|
|
108
|
-
checked?: boolean;
|
|
109
|
-
indent?: number;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
interface TextRange {
|
|
113
|
-
start: number;
|
|
114
|
-
end: number;
|
|
115
|
-
format: InlineFormat;
|
|
116
|
-
value?: string;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
type InlineFormat = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'code' | 'link';
|
|
120
57
|
```
|
|
121
58
|
|
|
122
59
|
## Example
|
|
@@ -124,31 +61,29 @@ type InlineFormat = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'code' |
|
|
|
124
61
|
```javascript
|
|
125
62
|
const doc = document.querySelector('snice-doc');
|
|
126
63
|
|
|
127
|
-
doc.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
64
|
+
doc.setHTML(`
|
|
65
|
+
<h1>Title</h1>
|
|
66
|
+
<p>Content with <b>bold</b> and <i>italic</i>.</p>
|
|
67
|
+
<ul>
|
|
68
|
+
<li>Item 1</li>
|
|
69
|
+
<li>Item 2</li>
|
|
70
|
+
</ul>
|
|
71
|
+
`);
|
|
72
|
+
|
|
73
|
+
// Get content
|
|
74
|
+
const html = doc.getHTML();
|
|
75
|
+
|
|
76
|
+
// Save/load
|
|
77
|
+
localStorage.setItem('doc', doc.getHTML());
|
|
78
|
+
doc.setHTML(localStorage.getItem('doc'));
|
|
141
79
|
```
|
|
142
80
|
|
|
143
81
|
## Features
|
|
144
82
|
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
83
|
+
- WYSIWYG contentEditable editing
|
|
84
|
+
- Formatting toolbar
|
|
85
|
+
- Insert images, tables, dividers
|
|
86
|
+
- Collapsible sidebar
|
|
87
|
+
- Paste images from clipboard
|
|
150
88
|
- Keyboard shortcuts
|
|
151
|
-
-
|
|
152
|
-
- Code blocks
|
|
153
|
-
- Quotes
|
|
154
|
-
- Dividers
|
|
89
|
+
- Readonly mode
|
|
@@ -13,6 +13,14 @@ showCardCount: boolean = true;
|
|
|
13
13
|
## Interfaces
|
|
14
14
|
|
|
15
15
|
```typescript
|
|
16
|
+
interface KanbanLabel {
|
|
17
|
+
text: string;
|
|
18
|
+
color?: string;
|
|
19
|
+
background?: string;
|
|
20
|
+
icon?: string; // emoji or text
|
|
21
|
+
iconPosition?: 'left' | 'right';
|
|
22
|
+
}
|
|
23
|
+
|
|
16
24
|
interface KanbanColumn {
|
|
17
25
|
id: string | number;
|
|
18
26
|
title: string;
|
|
@@ -27,7 +35,7 @@ interface KanbanCard {
|
|
|
27
35
|
title: string;
|
|
28
36
|
description?: string;
|
|
29
37
|
assignee?: string;
|
|
30
|
-
labels?: string[];
|
|
38
|
+
labels?: (string | KanbanLabel)[];
|
|
31
39
|
color?: string;
|
|
32
40
|
data?: any;
|
|
33
41
|
}
|
|
@@ -40,9 +48,12 @@ addColumn(column: KanbanColumn): void
|
|
|
40
48
|
removeColumn(id: string | number): void
|
|
41
49
|
addCard(columnId: string | number, card: KanbanCard): void
|
|
42
50
|
removeCard(cardId: string | number): void
|
|
43
|
-
moveCard(cardId: string | number, targetColumnId: string | number): void
|
|
51
|
+
moveCard(cardId: string | number, targetColumnId: string | number, targetIndex?: number): void
|
|
44
52
|
getColumn(id: string | number): KanbanColumn | undefined
|
|
45
53
|
getCard(id: string | number): KanbanCard | undefined
|
|
54
|
+
filterByLabels(labels: string[]): void
|
|
55
|
+
search(query: string): void
|
|
56
|
+
clearFilters(): void
|
|
46
57
|
```
|
|
47
58
|
|
|
48
59
|
## Events
|
|
@@ -58,14 +69,16 @@ kanban.columns = [
|
|
|
58
69
|
id: 'todo',
|
|
59
70
|
title: 'To Do',
|
|
60
71
|
color: '#f44336',
|
|
61
|
-
limit: 5,
|
|
62
72
|
cards: [
|
|
63
73
|
{
|
|
64
74
|
id: 1,
|
|
65
75
|
title: 'Task',
|
|
66
76
|
description: 'Details',
|
|
67
77
|
assignee: 'Alice',
|
|
68
|
-
labels: [
|
|
78
|
+
labels: [
|
|
79
|
+
'bug',
|
|
80
|
+
{ text: 'urgent', color: '#dc2626', background: '#fee2e2', icon: '🔥', iconPosition: 'left' }
|
|
81
|
+
],
|
|
69
82
|
color: '#f44336'
|
|
70
83
|
}
|
|
71
84
|
]
|
|
@@ -73,11 +86,16 @@ kanban.columns = [
|
|
|
73
86
|
{ id: 'done', title: 'Done', cards: [] }
|
|
74
87
|
];
|
|
75
88
|
|
|
76
|
-
// Add/remove
|
|
89
|
+
// Add/remove/move
|
|
77
90
|
kanban.addCard('todo', { id: 2, title: 'New Task' });
|
|
78
91
|
kanban.moveCard(1, 'done');
|
|
79
92
|
kanban.removeCard(2);
|
|
80
93
|
|
|
94
|
+
// Filter/search
|
|
95
|
+
kanban.filterByLabels(['bug', 'high-priority']);
|
|
96
|
+
kanban.search('landing page');
|
|
97
|
+
kanban.clearFilters();
|
|
98
|
+
|
|
81
99
|
// Events
|
|
82
100
|
kanban.addEventListener('@snice/kanban-card-move', (e) => {
|
|
83
101
|
console.log(`Moved ${e.detail.card.title}`);
|
|
@@ -91,12 +109,16 @@ kanban.addEventListener('@snice/kanban-card-move', (e) => {
|
|
|
91
109
|
|
|
92
110
|
## Features
|
|
93
111
|
|
|
94
|
-
- Drag and drop cards between columns
|
|
95
|
-
-
|
|
96
|
-
-
|
|
112
|
+
- Drag and drop cards between columns and within same column
|
|
113
|
+
- Custom labels with colors, backgrounds, and icons
|
|
114
|
+
- Label icon positioning (left/right)
|
|
115
|
+
- Filter by labels
|
|
116
|
+
- Search by title/description
|
|
117
|
+
- Card assignees
|
|
97
118
|
- Color-coded cards and columns
|
|
98
119
|
- Card counts
|
|
99
120
|
- Click handling
|
|
100
|
-
- Programmatic card movement
|
|
121
|
+
- Programmatic card movement with positioning
|
|
101
122
|
- Column management
|
|
102
123
|
- Event dispatching
|
|
124
|
+
- View Transitions API animations
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Key performance indicator display with value, label, trend, sparkline, and sentiment.
|
|
4
4
|
|
|
5
|
+
> **Note**: `snice-stat` component has been merged into `snice-kpi`.
|
|
6
|
+
|
|
5
7
|
## Properties
|
|
6
8
|
|
|
7
9
|
```typescript
|
|
@@ -12,6 +14,14 @@ trendData?: number[] // Sparkline data array
|
|
|
12
14
|
sentiment?: KpiSentiment // 'up' | 'down' | 'neutral'
|
|
13
15
|
size: KpiSize = 'medium' // 'small' | 'medium' | 'large'
|
|
14
16
|
showSparkline: boolean = true // Show sparkline when data provided
|
|
17
|
+
colorValue: boolean = false // Apply sentiment color to value
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Slots
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
before // Content before label/value (e.g., icons)
|
|
24
|
+
after // Content after sparkline (e.g., actions)
|
|
15
25
|
```
|
|
16
26
|
|
|
17
27
|
## Usage
|
|
@@ -20,6 +30,11 @@ showSparkline: boolean = true // Show sparkline when data provided
|
|
|
20
30
|
<!-- Basic -->
|
|
21
31
|
<snice-kpi label="Revenue" value="$45,231"></snice-kpi>
|
|
22
32
|
|
|
33
|
+
<!-- With icon (before slot) -->
|
|
34
|
+
<snice-kpi label="Revenue" value="$45,231">
|
|
35
|
+
<div slot="before">🏆</div>
|
|
36
|
+
</snice-kpi>
|
|
37
|
+
|
|
23
38
|
<!-- With trend -->
|
|
24
39
|
<snice-kpi
|
|
25
40
|
label="Monthly Revenue"
|