@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,24 @@
1
+ /**
2
+ * Render GFM markdown to sanitized HTML.
3
+ *
4
+ * Returns a `<div class="cx-prose">...</div>` wrapper.
5
+ * XSS-safe by construction — raw HTML in the source is escaped.
6
+ *
7
+ * Requires `init()` to have been called. If WASM is not yet loaded,
8
+ * waits for it automatically.
9
+ *
10
+ * @param input - GFM markdown string
11
+ * @returns Sanitized HTML string
12
+ */
13
+ export declare function renderMarkdown(input: string): Promise<string>;
14
+
15
+ /**
16
+ * Synchronous markdown rendering.
17
+ *
18
+ * Returns empty string if WASM is not loaded yet.
19
+ * Use after `await init()` has completed.
20
+ *
21
+ * @param input - GFM markdown string
22
+ * @returns Sanitized HTML string, or empty string if WASM not ready
23
+ */
24
+ export declare function renderMarkdownSync(input: string): string;
@@ -0,0 +1,66 @@
1
+ // Collet Markdown Utility — render GFM markdown to XSS-safe HTML via WASM.
2
+ //
3
+ // Static rendering: call renderMarkdown(input) to convert markdown to HTML.
4
+ // The WASM module handles parsing (pulldown-cmark) and XSS safety (compile-time
5
+ // event filtering — no runtime HTML sanitizer needed).
6
+
7
+ import { getWasmExports, isWasmReady } from './runtime.js';
8
+
9
+ let _wasmPromise = null;
10
+
11
+ /**
12
+ * Render GFM markdown to sanitized HTML.
13
+ *
14
+ * Returns a `<div class="cx-prose">...</div>` wrapper containing the
15
+ * rendered HTML. Raw HTML in the markdown source is escaped (not passed
16
+ * through), making the output XSS-safe by construction.
17
+ *
18
+ * Requires `init()` to have been called first (WASM must be loaded).
19
+ * If WASM is not yet loaded, waits for it automatically.
20
+ *
21
+ * @param {string} input - GFM markdown string
22
+ * @returns {Promise<string>} Sanitized HTML string
23
+ *
24
+ * @example
25
+ * import { renderMarkdown } from '@colletdev/core/markdown';
26
+ *
27
+ * const html = await renderMarkdown('**Hello** world');
28
+ * // → '<div class="cx-prose"><p><strong>Hello</strong> world</p>\n</div>'
29
+ */
30
+ export async function renderMarkdown(input) {
31
+ if (isWasmReady()) {
32
+ return getWasmExports().cx_render_markdown(input);
33
+ }
34
+
35
+ // WASM not loaded yet — wait for it.
36
+ // This covers the case where renderMarkdown is called before or
37
+ // concurrently with init().
38
+ if (!_wasmPromise) {
39
+ _wasmPromise = new Promise((resolve) => {
40
+ const check = () => {
41
+ if (isWasmReady()) {
42
+ resolve(getWasmExports());
43
+ } else {
44
+ setTimeout(check, 10);
45
+ }
46
+ };
47
+ check();
48
+ });
49
+ }
50
+ const wasm = await _wasmPromise;
51
+ return wasm.cx_render_markdown(input);
52
+ }
53
+
54
+ /**
55
+ * Synchronous markdown rendering. Returns empty string if WASM is not loaded.
56
+ *
57
+ * Use this when you need immediate rendering and are certain WASM is ready
58
+ * (e.g., after `await init()` has completed).
59
+ *
60
+ * @param {string} input - GFM markdown string
61
+ * @returns {string} Sanitized HTML string, or empty string if WASM not ready
62
+ */
63
+ export function renderMarkdownSync(input) {
64
+ if (!isWasmReady()) return '';
65
+ return getWasmExports().cx_render_markdown(input);
66
+ }
@@ -0,0 +1,35 @@
1
+ // TypeScript declarations for runtime.js base classes.
2
+
3
+ export function initWasm(initFn: () => Promise<any>): Promise<any>;
4
+ export function getWasmExports(): any;
5
+ export function isWasmReady(): boolean;
6
+ export function preWarmWasm(wasmFunctions: Array<(config: any) => any>): void;
7
+
8
+ export function loadSharedStyles(urls: string[]): Promise<CSSStyleSheet[]>;
9
+ export function loadMotionStyles(url: string): Promise<void>;
10
+ export function getSharedSheets(): CSSStyleSheet[];
11
+
12
+ export class CxElement extends HTMLElement {
13
+ protected _shadow: ShadowRoot;
14
+ protected _props: Record<string, any>;
15
+ _scheduleRender(): void;
16
+ _doRender(): void;
17
+ _injectHtml(result: { html: string; sprites: string; a11y?: { role?: string; aria?: Record<string, string> } }): void;
18
+ _emit(name: string, detail?: any): void;
19
+ _setProp(key: string, value: any): void;
20
+ _lockScroll(): void;
21
+ _unlockScroll(): void;
22
+ }
23
+
24
+ export class CxFormElement extends CxElement {
25
+ protected _internals: ElementInternals;
26
+ _setFormValue(value: string | FormData | null): void;
27
+ _setValidity(flags?: ValidityStateFlags, message?: string, anchor?: HTMLElement): void;
28
+ get form(): HTMLFormElement | null;
29
+ get name(): string | null;
30
+ get validity(): ValidityState;
31
+ get validationMessage(): string;
32
+ get willValidate(): boolean;
33
+ checkValidity(): boolean;
34
+ reportValidity(): boolean;
35
+ }