@colletdev/core 0.1.3
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/README.md +77 -0
- package/custom-elements.json +6037 -0
- package/generated/.gitattributes +2 -0
- package/generated/index.d.ts +120 -0
- package/generated/index.js +521 -0
- package/generated/styles.js +2845 -0
- package/package.json +56 -0
- package/src/elements/accordion.d.ts +20 -0
- package/src/elements/accordion.js +92 -0
- package/src/elements/activity_group.d.ts +19 -0
- package/src/elements/activity_group.js +27 -0
- package/src/elements/alert.d.ts +24 -0
- package/src/elements/alert.js +40 -0
- package/src/elements/autocomplete.d.ts +30 -0
- package/src/elements/autocomplete.js +671 -0
- package/src/elements/avatar.d.ts +18 -0
- package/src/elements/avatar.js +28 -0
- package/src/elements/backdrop.d.ts +14 -0
- package/src/elements/backdrop.js +28 -0
- package/src/elements/badge.d.ts +21 -0
- package/src/elements/badge.js +42 -0
- package/src/elements/breadcrumb.d.ts +17 -0
- package/src/elements/breadcrumb.js +41 -0
- package/src/elements/button.d.ts +24 -0
- package/src/elements/button.js +36 -0
- package/src/elements/card.d.ts +21 -0
- package/src/elements/card.js +67 -0
- package/src/elements/carousel.d.ts +23 -0
- package/src/elements/carousel.js +895 -0
- package/src/elements/chat_input.d.ts +22 -0
- package/src/elements/chat_input.js +78 -0
- package/src/elements/checkbox.d.ts +21 -0
- package/src/elements/checkbox.js +114 -0
- package/src/elements/code_block.d.ts +21 -0
- package/src/elements/code_block.js +27 -0
- package/src/elements/collapsible.d.ts +20 -0
- package/src/elements/collapsible.js +93 -0
- package/src/elements/date_picker.d.ts +30 -0
- package/src/elements/date_picker.js +528 -0
- package/src/elements/dialog.d.ts +20 -0
- package/src/elements/dialog.js +314 -0
- package/src/elements/drawer.d.ts +20 -0
- package/src/elements/drawer.js +318 -0
- package/src/elements/fab.d.ts +22 -0
- package/src/elements/fab.js +36 -0
- package/src/elements/file_upload.d.ts +26 -0
- package/src/elements/file_upload.js +59 -0
- package/src/elements/listbox.d.ts +19 -0
- package/src/elements/listbox.js +250 -0
- package/src/elements/menu.d.ts +20 -0
- package/src/elements/menu.js +224 -0
- package/src/elements/message_bubble.d.ts +23 -0
- package/src/elements/message_bubble.js +29 -0
- package/src/elements/message_group.d.ts +18 -0
- package/src/elements/message_group.js +28 -0
- package/src/elements/message_part.d.ts +35 -0
- package/src/elements/message_part.js +153 -0
- package/src/elements/pagination.d.ts +22 -0
- package/src/elements/pagination.js +36 -0
- package/src/elements/popover.d.ts +26 -0
- package/src/elements/popover.js +191 -0
- package/src/elements/profile_menu.d.ts +20 -0
- package/src/elements/profile_menu.js +213 -0
- package/src/elements/progress.d.ts +18 -0
- package/src/elements/progress.js +31 -0
- package/src/elements/radio_group.d.ts +22 -0
- package/src/elements/radio_group.js +70 -0
- package/src/elements/scrollbar.d.ts +19 -0
- package/src/elements/scrollbar.js +299 -0
- package/src/elements/search_bar.d.ts +27 -0
- package/src/elements/search_bar.js +98 -0
- package/src/elements/select.d.ts +26 -0
- package/src/elements/select.js +485 -0
- package/src/elements/sidebar.d.ts +21 -0
- package/src/elements/sidebar.js +322 -0
- package/src/elements/skeleton.d.ts +17 -0
- package/src/elements/skeleton.js +31 -0
- package/src/elements/slider.d.ts +28 -0
- package/src/elements/slider.js +93 -0
- package/src/elements/speed_dial.d.ts +23 -0
- package/src/elements/speed_dial.js +370 -0
- package/src/elements/spinner.d.ts +15 -0
- package/src/elements/spinner.js +28 -0
- package/src/elements/split_button.d.ts +23 -0
- package/src/elements/split_button.js +281 -0
- package/src/elements/stepper.d.ts +20 -0
- package/src/elements/stepper.js +31 -0
- package/src/elements/switch.d.ts +22 -0
- package/src/elements/switch.js +129 -0
- package/src/elements/table.d.ts +29 -0
- package/src/elements/table.js +371 -0
- package/src/elements/tabs.d.ts +19 -0
- package/src/elements/tabs.js +139 -0
- package/src/elements/text.d.ts +26 -0
- package/src/elements/text.js +32 -0
- package/src/elements/text_input.d.ts +36 -0
- package/src/elements/text_input.js +121 -0
- package/src/elements/thinking.d.ts +17 -0
- package/src/elements/thinking.js +28 -0
- package/src/elements/toast.d.ts +23 -0
- package/src/elements/toast.js +209 -0
- package/src/elements/toggle_group.d.ts +22 -0
- package/src/elements/toggle_group.js +176 -0
- package/src/elements/tooltip.d.ts +18 -0
- package/src/elements/tooltip.js +64 -0
- package/src/markdown.d.ts +24 -0
- package/src/markdown.js +66 -0
- package/src/runtime.d.ts +35 -0
- package/src/runtime.js +790 -0
- package/src/server.d.ts +69 -0
- package/src/server.js +176 -0
- package/src/streaming-markdown.js +43 -0
- package/src/vite-plugin.d.ts +46 -0
- package/src/vite-plugin.js +221 -0
- package/wasm/package.json +16 -0
- package/wasm/wasm_api.d.ts +72 -0
- package/wasm/wasm_api.js +593 -0
- package/wasm/wasm_api_bg.wasm +0 -0
- package/wasm/wasm_api_bg.wasm.d.ts +10 -0
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@colletdev/core",
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Rust/WASM Custom Elements — 48 production-grade UI components",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "generated/index.js",
|
|
7
|
+
"module": "generated/index.js",
|
|
8
|
+
"types": "generated/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./generated/index.d.ts",
|
|
12
|
+
"import": "./generated/index.js",
|
|
13
|
+
"default": "./generated/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./runtime": {
|
|
16
|
+
"types": "./src/runtime.d.ts",
|
|
17
|
+
"import": "./src/runtime.js",
|
|
18
|
+
"default": "./src/runtime.js"
|
|
19
|
+
},
|
|
20
|
+
"./vite-plugin": {
|
|
21
|
+
"types": "./src/vite-plugin.d.ts",
|
|
22
|
+
"import": "./src/vite-plugin.js",
|
|
23
|
+
"default": "./src/vite-plugin.js"
|
|
24
|
+
},
|
|
25
|
+
"./server": {
|
|
26
|
+
"types": "./src/server.d.ts",
|
|
27
|
+
"import": "./src/server.js",
|
|
28
|
+
"default": "./src/server.js"
|
|
29
|
+
},
|
|
30
|
+
"./markdown": {
|
|
31
|
+
"types": "./src/markdown.d.ts",
|
|
32
|
+
"import": "./src/markdown.js",
|
|
33
|
+
"default": "./src/markdown.js"
|
|
34
|
+
},
|
|
35
|
+
"./elements/*": "./src/elements/*"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"src/",
|
|
39
|
+
"generated/",
|
|
40
|
+
"wasm/",
|
|
41
|
+
"custom-elements.json"
|
|
42
|
+
],
|
|
43
|
+
"customElements": "custom-elements.json",
|
|
44
|
+
"keywords": ["web-components", "custom-elements", "rust", "wasm", "ui", "design-system"],
|
|
45
|
+
"author": "Dan",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"sideEffects": false,
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@tailwindcss/cli": "4.2.1"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/Danrozen87/collet",
|
|
54
|
+
"directory": "packages/core"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
|
|
2
|
+
// Source: crates/wasm-api/src/accordion.rs
|
|
3
|
+
|
|
4
|
+
export interface CxAccordionAttributes {
|
|
5
|
+
id?: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
items?: string;
|
|
8
|
+
mode?: 'single' | 'multiple';
|
|
9
|
+
collapsible?: boolean;
|
|
10
|
+
headingLevel?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
11
|
+
defaultExpanded?: string;
|
|
12
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare global {
|
|
17
|
+
interface HTMLElementTagNameMap {
|
|
18
|
+
'cx-accordion': HTMLElement & CxAccordionAttributes;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Custom behavior for <cx-accordion> — toggle panels within shadow DOM.
|
|
2
|
+
// Mirrors static/_behaviors/accordion.js but operates inside the shadow root.
|
|
3
|
+
// Source: crates/wasm-api/src/accordion.rs
|
|
4
|
+
|
|
5
|
+
export function defineCxAccordion(wasmFn, baseClass) {
|
|
6
|
+
class CxAccordion extends baseClass {
|
|
7
|
+
static observedAttributes = ['id', 'label', 'items', 'mode', 'collapsible', 'heading-level', 'default-expanded', 'size', 'disabled'];
|
|
8
|
+
static _booleanAttrs = new Set(['collapsible', 'disabled']);
|
|
9
|
+
|
|
10
|
+
connectedCallback() {
|
|
11
|
+
if (!this._isInitialized) {
|
|
12
|
+
this._markInitialized();
|
|
13
|
+
const shadow = this._shadow;
|
|
14
|
+
|
|
15
|
+
shadow.addEventListener('click', (e) => {
|
|
16
|
+
const trigger = e.target.closest('[data-accordion-trigger]');
|
|
17
|
+
if (!trigger || trigger.disabled) return;
|
|
18
|
+
|
|
19
|
+
const acc = shadow.querySelector('[data-accordion]');
|
|
20
|
+
if (!acc) return;
|
|
21
|
+
|
|
22
|
+
const idx = parseInt(trigger.getAttribute('data-item-index'), 10);
|
|
23
|
+
if (isNaN(idx)) return;
|
|
24
|
+
|
|
25
|
+
const mode = acc.getAttribute('data-mode');
|
|
26
|
+
const isRadio = mode === 'single';
|
|
27
|
+
const inputs = acc.querySelectorAll(':scope > input');
|
|
28
|
+
const input = inputs[idx];
|
|
29
|
+
if (!input || input.disabled) return;
|
|
30
|
+
|
|
31
|
+
if (isRadio) {
|
|
32
|
+
if (input.checked && acc.hasAttribute('data-collapsible')) {
|
|
33
|
+
input.checked = false;
|
|
34
|
+
} else {
|
|
35
|
+
input.checked = true;
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
input.checked = !input.checked;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Sync aria-expanded on all triggers
|
|
42
|
+
const triggers = acc.querySelectorAll('[data-accordion-trigger]');
|
|
43
|
+
triggers.forEach((t, i) => {
|
|
44
|
+
t.setAttribute('aria-expanded', inputs[i] && inputs[i].checked ? 'true' : 'false');
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Sync host prop — single source of truth for WASM re-renders.
|
|
48
|
+
// Direct _props mutation avoids triggering a re-render that would
|
|
49
|
+
// destroy DOM state and kill the panel animation.
|
|
50
|
+
const expanded = [];
|
|
51
|
+
inputs.forEach((inp, i) => { if (inp.checked) expanded.push(String(i)); });
|
|
52
|
+
this._props.default_expanded = expanded.join(',');
|
|
53
|
+
|
|
54
|
+
this._emit('cx-change', { index: idx, expanded: input.checked });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Keyboard navigation: ArrowUp/Down, Home/End
|
|
58
|
+
shadow.addEventListener('keydown', (e) => {
|
|
59
|
+
const trigger = e.target.closest('[data-accordion-trigger]');
|
|
60
|
+
if (!trigger) return;
|
|
61
|
+
|
|
62
|
+
if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Home' || e.key === 'End') {
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
const all = Array.from(shadow.querySelectorAll('[data-accordion-trigger]:not([disabled])'));
|
|
65
|
+
const cur = all.indexOf(trigger);
|
|
66
|
+
if (cur === -1) return;
|
|
67
|
+
|
|
68
|
+
let ni = cur;
|
|
69
|
+
if (e.key === 'ArrowDown') ni = (cur + 1) % all.length;
|
|
70
|
+
else if (e.key === 'ArrowUp') ni = (cur - 1 + all.length) % all.length;
|
|
71
|
+
else if (e.key === 'Home') ni = 0;
|
|
72
|
+
else if (e.key === 'End') ni = all.length - 1;
|
|
73
|
+
all[ni].focus();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
} // end _isInitialized guard
|
|
77
|
+
super.connectedCallback();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
_doRender() {
|
|
81
|
+
try {
|
|
82
|
+
const result = wasmFn(this._props);
|
|
83
|
+
this._injectHtml(result);
|
|
84
|
+
} catch (e) {
|
|
85
|
+
console.error('[cx-accordion]', e);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
customElements.define('cx-accordion', CxAccordion);
|
|
91
|
+
return CxAccordion;
|
|
92
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
|
|
2
|
+
// Source: crates/wasm-api/src/activity_group.rs
|
|
3
|
+
|
|
4
|
+
export interface CxActivityGroupAttributes {
|
|
5
|
+
id?: string;
|
|
6
|
+
status?: string;
|
|
7
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
8
|
+
border?: string;
|
|
9
|
+
summary?: string;
|
|
10
|
+
action?: string;
|
|
11
|
+
expanded?: boolean;
|
|
12
|
+
parts?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare global {
|
|
16
|
+
interface HTMLElementTagNameMap {
|
|
17
|
+
'cx-activity-group': HTMLElement & CxActivityGroupAttributes;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
|
|
2
|
+
// Source: crates/wasm-api/src/activity_group.rs
|
|
3
|
+
|
|
4
|
+
export function defineCxActivityGroup(wasmFn, baseClass) {
|
|
5
|
+
class CxActivityGroup extends baseClass {
|
|
6
|
+
static observedAttributes = ['id', 'status', 'size', 'border', 'summary', 'action', 'expanded', 'parts'];
|
|
7
|
+
static _booleanAttrs = new Set(['expanded']);
|
|
8
|
+
static _hostDisplay = 'block';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
connectedCallback() {
|
|
12
|
+
super.connectedCallback();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
_doRender() {
|
|
16
|
+
try {
|
|
17
|
+
const result = wasmFn(this._props);
|
|
18
|
+
this._injectHtml(result);
|
|
19
|
+
} catch (e) {
|
|
20
|
+
console.error('[cx-activity-group]', e);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
customElements.define('cx-activity-group', CxActivityGroup);
|
|
26
|
+
return CxActivityGroup;
|
|
27
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
|
|
2
|
+
// Source: crates/wasm-api/src/alert.rs
|
|
3
|
+
|
|
4
|
+
export interface CxAlertAttributes {
|
|
5
|
+
id?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
variant?: 'subtle' | 'filled' | 'outline';
|
|
9
|
+
intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
|
|
10
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
11
|
+
showIcon?: boolean;
|
|
12
|
+
icon?: string;
|
|
13
|
+
dismissible?: boolean;
|
|
14
|
+
dismissLabel?: string;
|
|
15
|
+
compact?: boolean;
|
|
16
|
+
dynamic?: boolean;
|
|
17
|
+
actionsHtml?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare global {
|
|
21
|
+
interface HTMLElementTagNameMap {
|
|
22
|
+
'cx-alert': HTMLElement & CxAlertAttributes;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
|
|
2
|
+
// Source: crates/wasm-api/src/alert.rs
|
|
3
|
+
|
|
4
|
+
export function defineCxAlert(wasmFn, baseClass) {
|
|
5
|
+
class CxAlert extends baseClass {
|
|
6
|
+
static observedAttributes = ['id', 'title', 'description', 'variant', 'intent', 'size', 'show-icon', 'icon', 'dismissible', 'dismiss-label', 'compact', 'dynamic', 'actions-html'];
|
|
7
|
+
static _booleanAttrs = new Set(['show-icon', 'dismissible', 'compact', 'dynamic']);
|
|
8
|
+
static _focusable = false;
|
|
9
|
+
static _hostDisplay = 'block';
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
connectedCallback() {
|
|
13
|
+
if (!this._isInitialized) {
|
|
14
|
+
this._markInitialized();
|
|
15
|
+
// Delegate dismiss button click
|
|
16
|
+
// Badge/Alert use data-handler="...-dismiss", Toast uses data-toast-dismiss
|
|
17
|
+
this._shadow.addEventListener('click', (e) => {
|
|
18
|
+
const btn = e.target.closest('[data-handler*="dismiss"], [data-toast-dismiss]');
|
|
19
|
+
if (btn) {
|
|
20
|
+
this._emit('cx-dismiss', {});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
super.connectedCallback();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
_doRender() {
|
|
28
|
+
try {
|
|
29
|
+
this._props.slotted = true;
|
|
30
|
+
const result = wasmFn(this._props);
|
|
31
|
+
this._injectHtml(result);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
console.error('[cx-alert]', e);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
customElements.define('cx-alert', CxAlert);
|
|
39
|
+
return CxAlert;
|
|
40
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
|
|
2
|
+
// Source: crates/wasm-api/src/autocomplete.rs
|
|
3
|
+
|
|
4
|
+
export interface CxAutocompleteAttributes {
|
|
5
|
+
id?: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
variant?: 'outline' | 'filled' | 'ghost';
|
|
8
|
+
shape?: 'sharp' | 'rounded' | 'pill';
|
|
9
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
10
|
+
mode?: 'single' | 'multiple';
|
|
11
|
+
selected?: string;
|
|
12
|
+
query?: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
helperText?: string;
|
|
15
|
+
error?: string;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
required?: boolean;
|
|
18
|
+
readonly?: boolean;
|
|
19
|
+
name?: string;
|
|
20
|
+
allowCustom?: boolean;
|
|
21
|
+
clearable?: boolean;
|
|
22
|
+
items?: string;
|
|
23
|
+
groups?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare global {
|
|
27
|
+
interface HTMLElementTagNameMap {
|
|
28
|
+
'cx-autocomplete': HTMLElement & CxAutocompleteAttributes;
|
|
29
|
+
}
|
|
30
|
+
}
|