@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.
Files changed (119) hide show
  1. package/README.md +77 -0
  2. package/custom-elements.json +6037 -0
  3. package/generated/.gitattributes +2 -0
  4. package/generated/index.d.ts +120 -0
  5. package/generated/index.js +521 -0
  6. package/generated/styles.js +2845 -0
  7. package/package.json +56 -0
  8. package/src/elements/accordion.d.ts +20 -0
  9. package/src/elements/accordion.js +92 -0
  10. package/src/elements/activity_group.d.ts +19 -0
  11. package/src/elements/activity_group.js +27 -0
  12. package/src/elements/alert.d.ts +24 -0
  13. package/src/elements/alert.js +40 -0
  14. package/src/elements/autocomplete.d.ts +30 -0
  15. package/src/elements/autocomplete.js +671 -0
  16. package/src/elements/avatar.d.ts +18 -0
  17. package/src/elements/avatar.js +28 -0
  18. package/src/elements/backdrop.d.ts +14 -0
  19. package/src/elements/backdrop.js +28 -0
  20. package/src/elements/badge.d.ts +21 -0
  21. package/src/elements/badge.js +42 -0
  22. package/src/elements/breadcrumb.d.ts +17 -0
  23. package/src/elements/breadcrumb.js +41 -0
  24. package/src/elements/button.d.ts +24 -0
  25. package/src/elements/button.js +36 -0
  26. package/src/elements/card.d.ts +21 -0
  27. package/src/elements/card.js +67 -0
  28. package/src/elements/carousel.d.ts +23 -0
  29. package/src/elements/carousel.js +895 -0
  30. package/src/elements/chat_input.d.ts +22 -0
  31. package/src/elements/chat_input.js +78 -0
  32. package/src/elements/checkbox.d.ts +21 -0
  33. package/src/elements/checkbox.js +114 -0
  34. package/src/elements/code_block.d.ts +21 -0
  35. package/src/elements/code_block.js +27 -0
  36. package/src/elements/collapsible.d.ts +20 -0
  37. package/src/elements/collapsible.js +93 -0
  38. package/src/elements/date_picker.d.ts +30 -0
  39. package/src/elements/date_picker.js +528 -0
  40. package/src/elements/dialog.d.ts +20 -0
  41. package/src/elements/dialog.js +314 -0
  42. package/src/elements/drawer.d.ts +20 -0
  43. package/src/elements/drawer.js +318 -0
  44. package/src/elements/fab.d.ts +22 -0
  45. package/src/elements/fab.js +36 -0
  46. package/src/elements/file_upload.d.ts +26 -0
  47. package/src/elements/file_upload.js +59 -0
  48. package/src/elements/listbox.d.ts +19 -0
  49. package/src/elements/listbox.js +250 -0
  50. package/src/elements/menu.d.ts +20 -0
  51. package/src/elements/menu.js +224 -0
  52. package/src/elements/message_bubble.d.ts +23 -0
  53. package/src/elements/message_bubble.js +29 -0
  54. package/src/elements/message_group.d.ts +18 -0
  55. package/src/elements/message_group.js +28 -0
  56. package/src/elements/message_part.d.ts +35 -0
  57. package/src/elements/message_part.js +153 -0
  58. package/src/elements/pagination.d.ts +22 -0
  59. package/src/elements/pagination.js +36 -0
  60. package/src/elements/popover.d.ts +26 -0
  61. package/src/elements/popover.js +191 -0
  62. package/src/elements/profile_menu.d.ts +20 -0
  63. package/src/elements/profile_menu.js +213 -0
  64. package/src/elements/progress.d.ts +18 -0
  65. package/src/elements/progress.js +31 -0
  66. package/src/elements/radio_group.d.ts +22 -0
  67. package/src/elements/radio_group.js +70 -0
  68. package/src/elements/scrollbar.d.ts +19 -0
  69. package/src/elements/scrollbar.js +299 -0
  70. package/src/elements/search_bar.d.ts +27 -0
  71. package/src/elements/search_bar.js +98 -0
  72. package/src/elements/select.d.ts +26 -0
  73. package/src/elements/select.js +485 -0
  74. package/src/elements/sidebar.d.ts +21 -0
  75. package/src/elements/sidebar.js +322 -0
  76. package/src/elements/skeleton.d.ts +17 -0
  77. package/src/elements/skeleton.js +31 -0
  78. package/src/elements/slider.d.ts +28 -0
  79. package/src/elements/slider.js +93 -0
  80. package/src/elements/speed_dial.d.ts +23 -0
  81. package/src/elements/speed_dial.js +370 -0
  82. package/src/elements/spinner.d.ts +15 -0
  83. package/src/elements/spinner.js +28 -0
  84. package/src/elements/split_button.d.ts +23 -0
  85. package/src/elements/split_button.js +281 -0
  86. package/src/elements/stepper.d.ts +20 -0
  87. package/src/elements/stepper.js +31 -0
  88. package/src/elements/switch.d.ts +22 -0
  89. package/src/elements/switch.js +129 -0
  90. package/src/elements/table.d.ts +29 -0
  91. package/src/elements/table.js +371 -0
  92. package/src/elements/tabs.d.ts +19 -0
  93. package/src/elements/tabs.js +139 -0
  94. package/src/elements/text.d.ts +26 -0
  95. package/src/elements/text.js +32 -0
  96. package/src/elements/text_input.d.ts +36 -0
  97. package/src/elements/text_input.js +121 -0
  98. package/src/elements/thinking.d.ts +17 -0
  99. package/src/elements/thinking.js +28 -0
  100. package/src/elements/toast.d.ts +23 -0
  101. package/src/elements/toast.js +209 -0
  102. package/src/elements/toggle_group.d.ts +22 -0
  103. package/src/elements/toggle_group.js +176 -0
  104. package/src/elements/tooltip.d.ts +18 -0
  105. package/src/elements/tooltip.js +64 -0
  106. package/src/markdown.d.ts +24 -0
  107. package/src/markdown.js +66 -0
  108. package/src/runtime.d.ts +35 -0
  109. package/src/runtime.js +790 -0
  110. package/src/server.d.ts +69 -0
  111. package/src/server.js +176 -0
  112. package/src/streaming-markdown.js +43 -0
  113. package/src/vite-plugin.d.ts +46 -0
  114. package/src/vite-plugin.js +221 -0
  115. package/wasm/package.json +16 -0
  116. package/wasm/wasm_api.d.ts +72 -0
  117. package/wasm/wasm_api.js +593 -0
  118. package/wasm/wasm_api_bg.wasm +0 -0
  119. package/wasm/wasm_api_bg.wasm.d.ts +10 -0
@@ -0,0 +1,28 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/avatar.rs
3
+
4
+ export function defineCxAvatar(wasmFn, baseClass) {
5
+ class CxAvatar extends baseClass {
6
+ static observedAttributes = ['id', 'label', 'shape', 'size', 'image', 'initials', 'clickable'];
7
+ static _booleanAttrs = new Set(['clickable']);
8
+ static _focusable = false;
9
+ static _hostDisplay = 'inline-flex';
10
+
11
+
12
+ connectedCallback() {
13
+ super.connectedCallback();
14
+ }
15
+
16
+ _doRender() {
17
+ try {
18
+ const result = wasmFn(this._props);
19
+ this._injectHtml(result);
20
+ } catch (e) {
21
+ console.error('[cx-avatar]', e);
22
+ }
23
+ }
24
+ }
25
+
26
+ customElements.define('cx-avatar', CxAvatar);
27
+ return CxAvatar;
28
+ }
@@ -0,0 +1,14 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/backdrop.rs
3
+
4
+ export interface CxBackdropAttributes {
5
+ tint?: string;
6
+ blur?: string;
7
+ dismissible?: boolean;
8
+ }
9
+
10
+ declare global {
11
+ interface HTMLElementTagNameMap {
12
+ 'cx-backdrop': HTMLElement & CxBackdropAttributes;
13
+ }
14
+ }
@@ -0,0 +1,28 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/backdrop.rs
3
+
4
+ export function defineCxBackdrop(wasmFn, baseClass) {
5
+ class CxBackdrop extends baseClass {
6
+ static observedAttributes = ['tint', 'blur', 'dismissible'];
7
+ static _booleanAttrs = new Set(['dismissible']);
8
+ static _focusable = false;
9
+ static _hostDisplay = 'block';
10
+
11
+
12
+ connectedCallback() {
13
+ super.connectedCallback();
14
+ }
15
+
16
+ _doRender() {
17
+ try {
18
+ const result = wasmFn(this._props);
19
+ this._injectHtml(result);
20
+ } catch (e) {
21
+ console.error('[cx-backdrop]', e);
22
+ }
23
+ }
24
+ }
25
+
26
+ customElements.define('cx-backdrop', CxBackdrop);
27
+ return CxBackdrop;
28
+ }
@@ -0,0 +1,21 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/badge.rs
3
+
4
+ export interface CxBadgeAttributes {
5
+ id?: string;
6
+ label?: string;
7
+ variant?: 'filled' | 'outline' | 'ghost';
8
+ intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
9
+ shape?: 'rounded' | 'pill';
10
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ dot?: boolean;
12
+ dismissible?: boolean;
13
+ dismissLabel?: string;
14
+ dynamic?: boolean;
15
+ }
16
+
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'cx-badge': HTMLElement & CxBadgeAttributes;
20
+ }
21
+ }
@@ -0,0 +1,42 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/badge.rs
3
+
4
+ export function defineCxBadge(wasmFn, baseClass) {
5
+ class CxBadge extends baseClass {
6
+ static observedAttributes = ['id', 'label', 'variant', 'intent', 'shape', 'size', 'dot', 'dismissible', 'dismiss-label', 'dynamic'];
7
+ static _booleanAttrs = new Set(['dot', 'dismissible', 'dynamic']);
8
+ static _focusable = false;
9
+ static _hostDisplay = 'inline-flex';
10
+
11
+
12
+ connectedCallback() {
13
+ if (!this._isInitialized) {
14
+ this._markInitialized();
15
+ if (!this._props.id) {
16
+ this._props.id = `cx-badge-${Math.random().toString(36).slice(2, 8)}`;
17
+ }
18
+ // Delegate dismiss button click
19
+ // Badge/Alert use data-handler="...-dismiss", Toast uses data-toast-dismiss
20
+ this._shadow.addEventListener('click', (e) => {
21
+ const btn = e.target.closest('[data-handler*="dismiss"], [data-toast-dismiss]');
22
+ if (btn) {
23
+ this._emit('cx-dismiss', {});
24
+ }
25
+ });
26
+ }
27
+ super.connectedCallback();
28
+ }
29
+
30
+ _doRender() {
31
+ try {
32
+ const result = wasmFn(this._props);
33
+ this._injectHtml(result);
34
+ } catch (e) {
35
+ console.error('[cx-badge]', e);
36
+ }
37
+ }
38
+ }
39
+
40
+ customElements.define('cx-badge', CxBadge);
41
+ return CxBadge;
42
+ }
@@ -0,0 +1,17 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/breadcrumb.rs
3
+
4
+ export interface CxBreadcrumbAttributes {
5
+ id?: string;
6
+ items?: string;
7
+ separator?: string;
8
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
+ navLabel?: string;
10
+ disabled?: boolean;
11
+ }
12
+
13
+ declare global {
14
+ interface HTMLElementTagNameMap {
15
+ 'cx-breadcrumb': HTMLElement & CxBreadcrumbAttributes;
16
+ }
17
+ }
@@ -0,0 +1,41 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/breadcrumb.rs
3
+
4
+ export function defineCxBreadcrumb(wasmFn, baseClass) {
5
+ class CxBreadcrumb extends baseClass {
6
+ static observedAttributes = ['id', 'items', 'separator', 'size', 'nav-label', 'disabled'];
7
+ static _booleanAttrs = new Set(['disabled']);
8
+ static _focusable = false;
9
+ static _hostDisplay = 'inline-flex';
10
+
11
+
12
+ connectedCallback() {
13
+ if (!this._isInitialized) {
14
+ this._markInitialized();
15
+ // Delegate link clicks to cx-navigate Custom Event
16
+ this._shadow.addEventListener('click', (e) => {
17
+ const link = e.target.closest('a[href]');
18
+ if (!link) return;
19
+ e.preventDefault();
20
+ this._emit('cx-navigate', {
21
+ href: link.getAttribute('href'),
22
+ label: link.textContent?.trim() || '',
23
+ });
24
+ });
25
+ }
26
+ super.connectedCallback();
27
+ }
28
+
29
+ _doRender() {
30
+ try {
31
+ const result = wasmFn(this._props);
32
+ this._injectHtml(result);
33
+ } catch (e) {
34
+ console.error('[cx-breadcrumb]', e);
35
+ }
36
+ }
37
+ }
38
+
39
+ customElements.define('cx-breadcrumb', CxBreadcrumb);
40
+ return CxBreadcrumb;
41
+ }
@@ -0,0 +1,24 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/button.rs
3
+
4
+ export interface CxButtonAttributes {
5
+ label?: string;
6
+ variant?: 'filled' | 'ghost' | 'outline' | 'underline' | 'side-indicator';
7
+ intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
8
+ shape?: 'sharp' | 'rounded' | 'pill';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ disabled?: boolean;
11
+ iconLeading?: string;
12
+ iconTrailing?: string;
13
+ iconOnly?: string;
14
+ ariaLabel?: string;
15
+ kind?: 'button' | 'submit' | 'toggle' | 'link';
16
+ pressed?: boolean;
17
+ href?: string;
18
+ }
19
+
20
+ declare global {
21
+ interface HTMLElementTagNameMap {
22
+ 'cx-button': HTMLElement & CxButtonAttributes;
23
+ }
24
+ }
@@ -0,0 +1,36 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/button.rs
3
+
4
+ export function defineCxButton(wasmFn, baseClass) {
5
+ class CxButton extends baseClass {
6
+ static observedAttributes = ['label', 'variant', 'intent', 'shape', 'size', 'disabled', 'icon-leading', 'icon-trailing', 'icon-only', 'aria-label', 'kind', 'pressed', 'href'];
7
+ static _booleanAttrs = new Set(['disabled', 'pressed']);
8
+ static _hostDisplay = 'inline-flex';
9
+
10
+
11
+ connectedCallback() {
12
+ if (!this._isInitialized) {
13
+ this._markInitialized();
14
+ // Delegate click from inner element to Custom Event
15
+ this._shadow.addEventListener('click', (e) => {
16
+ if (!this.hasAttribute('disabled')) {
17
+ this._emit('cx-click', { originalEvent: e });
18
+ }
19
+ });
20
+ }
21
+ super.connectedCallback();
22
+ }
23
+
24
+ _doRender() {
25
+ try {
26
+ const result = wasmFn(this._props);
27
+ this._injectHtml(result);
28
+ } catch (e) {
29
+ console.error('[cx-button]', e);
30
+ }
31
+ }
32
+ }
33
+
34
+ customElements.define('cx-button', CxButton);
35
+ return CxButton;
36
+ }
@@ -0,0 +1,21 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/card.rs
3
+
4
+ export interface CxCardAttributes {
5
+ id?: string;
6
+ label?: string;
7
+ variant?: 'elevated' | 'outlined' | 'filled';
8
+ shape?: 'rounded' | 'sharp';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ header?: string;
11
+ body?: string;
12
+ footer?: string;
13
+ clickable?: boolean;
14
+ texture?: boolean;
15
+ }
16
+
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'cx-card': HTMLElement & CxCardAttributes;
20
+ }
21
+ }
@@ -0,0 +1,67 @@
1
+ // Custom behavior for <cx-card> — click delegation for clickable cards.
2
+ // Source: crates/wasm-api/src/card.rs
3
+
4
+ export function defineCxCard(wasmFn, baseClass) {
5
+ class CxCard extends baseClass {
6
+ static observedAttributes = ['id', 'label', 'variant', 'shape', 'size', 'clickable'];
7
+ static _booleanAttrs = new Set(['clickable']);
8
+ static _focusable = false;
9
+
10
+ connectedCallback() {
11
+ if (!this._isInitialized) {
12
+ this._markInitialized();
13
+ const shadow = this._shadow;
14
+
15
+ // Clickable cards: delegate click and Enter/Space keydown
16
+ shadow.addEventListener('click', (e) => {
17
+ if (this._props.clickable) {
18
+ this._emit('cx-click', { originalEvent: e });
19
+ }
20
+ });
21
+
22
+ shadow.addEventListener('keydown', (e) => {
23
+ if (this._props.clickable && (e.key === 'Enter' || e.key === ' ')) {
24
+ e.preventDefault();
25
+ this._emit('cx-click', {});
26
+ }
27
+ });
28
+
29
+ // Forward keyboard events from inner interactive elements
30
+ shadow.addEventListener('keydown', (e) => {
31
+ this._emit('cx-keydown', { key: e.key, code: e.code, shiftKey: e.shiftKey, ctrlKey: e.ctrlKey, altKey: e.altKey, metaKey: e.metaKey });
32
+ });
33
+ shadow.addEventListener('keyup', (e) => {
34
+ this._emit('cx-keyup', { key: e.key, code: e.code, shiftKey: e.shiftKey, ctrlKey: e.ctrlKey, altKey: e.altKey, metaKey: e.metaKey });
35
+ });
36
+ } // end _isInitialized guard
37
+ super.connectedCallback();
38
+ }
39
+
40
+ _doRender() {
41
+ try {
42
+ this._props.slotted = true;
43
+ const result = wasmFn(this._props);
44
+ this._injectHtml(result);
45
+
46
+ // Apply tint gradient from --cx-card-tint custom property.
47
+ // Consumers set this on the host via style prop:
48
+ // <cx-card style="--cx-card-tint: var(--color-primary)">
49
+ // The article gets a subtle directional gradient tinted with
50
+ // that color, plus a whisper-thin border.
51
+ const article = this._shadow.querySelector('article');
52
+ if (article) {
53
+ const tint = getComputedStyle(this).getPropertyValue('--cx-card-tint').trim();
54
+ if (tint) {
55
+ article.style.background = `linear-gradient(145deg, color-mix(in oklch, ${tint} 12%, var(--color-surface)) 0%, var(--color-surface) 100%)`;
56
+ article.style.borderColor = `color-mix(in oklch, var(--color-border) 30%, transparent)`;
57
+ }
58
+ }
59
+ } catch (e) {
60
+ console.error('[cx-card]', e);
61
+ }
62
+ }
63
+ }
64
+
65
+ customElements.define('cx-card', CxCard);
66
+ return CxCard;
67
+ }
@@ -0,0 +1,23 @@
1
+ // Auto-generated by scripts/generate-elements.mjs — DO NOT EDIT
2
+ // Source: crates/wasm-api/src/carousel.rs
3
+
4
+ export interface CxCarouselAttributes {
5
+ id?: string;
6
+ label?: string;
7
+ variant?: 'editorial' | 'card';
8
+ shape?: 'sharp' | 'rounded';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ slides?: string;
11
+ autoplay?: 'off' | 'on';
12
+ autoplayInterval?: number;
13
+ loopMode?: boolean;
14
+ motionBlur?: boolean;
15
+ customCursor?: boolean;
16
+ indicator?: string;
17
+ }
18
+
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ 'cx-carousel': HTMLElement & CxCarouselAttributes;
22
+ }
23
+ }