diff --git a/.github/workflows/ci-examples.yml b/.github/workflows/ci-examples.yml
index 618efc2e33..ba18ee4508 100644
--- a/.github/workflows/ci-examples.yml
+++ b/.github/workflows/ci-examples.yml
@@ -57,7 +57,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- example: [react, vue, vanilla, cdn, angular, nuxt, laravel]
+ example: [react, vue, vanilla, cdn, angular, nuxt, laravel, solid]
steps:
- name: Restore workspace
uses: actions/cache/restore@v4
diff --git a/apps/docs/docs.json b/apps/docs/docs.json
index 1ecfc2ecda..d67934546d 100644
--- a/apps/docs/docs.json
+++ b/apps/docs/docs.json
@@ -60,6 +60,7 @@
"getting-started/frameworks/nuxt",
"getting-started/frameworks/angular",
"getting-started/frameworks/laravel",
+ "getting-started/frameworks/solid",
"getting-started/frameworks/vanilla-js"
]
},
diff --git a/apps/docs/getting-started/frameworks/solid.mdx b/apps/docs/getting-started/frameworks/solid.mdx
new file mode 100644
index 0000000000..415f59023a
--- /dev/null
+++ b/apps/docs/getting-started/frameworks/solid.mdx
@@ -0,0 +1,127 @@
+---
+title: Solid Integration
+sidebarTitle: Solid
+keywords: 'solid docx editor, solidjs docx editor, solid word component, superdoc solid, microsoft word solid, solidjs document editor'
+---
+
+SuperDoc works in Solid through the core `superdoc` package. Mount it into a DOM element, clean it up on unmount, and drive it with Solid's fine-grained reactivity.
+
+
+SuperDoc does not ship a first-party Solid wrapper. Use the core `superdoc` package directly, or build a community wrapper on top of it.
+
+
+## Install
+
+```bash
+npm install superdoc
+```
+
+## Quick start
+
+```tsx
+import { onCleanup, onMount } from 'solid-js';
+import { SuperDoc } from 'superdoc';
+import 'superdoc/style.css';
+
+export default function App() {
+ let superdoc: SuperDoc | undefined;
+ const editorId = 'superdoc-editor';
+
+ onMount(() => {
+ superdoc = new SuperDoc({
+ selector: `#${editorId}`,
+ });
+ });
+
+ onCleanup(() => {
+ superdoc?.destroy();
+ });
+
+ return
;
+}
+```
+
+## Core concepts
+
+### Document modes
+
+| Mode | Description |
+| ------------ | ------------------------- |
+| `editing` | Full editing capabilities |
+| `viewing` | Read-only presentation |
+| `suggesting` | Track changes mode |
+
+```tsx
+new SuperDoc({
+ selector: `#${editorId}`,
+ document: file(),
+ documentMode: 'editing',
+});
+```
+
+### User roles
+
+| Role | Can Edit | Can Suggest | Can View |
+| ----------- | -------- | ----------- | -------- |
+| `editor` | Yes | Yes | Yes |
+| `suggester` | No | Yes | Yes |
+| `viewer` | No | No | Yes |
+
+```tsx
+new SuperDoc({
+ selector: `#${editorId}`,
+ document: file(),
+ role: 'editor',
+});
+```
+
+## Handle file uploads
+
+```tsx
+import { createEffect, createSignal, onCleanup, Show } from 'solid-js';
+import { SuperDoc } from 'superdoc';
+import 'superdoc/style.css';
+
+function FileEditor() {
+ const [file, setFile] = createSignal(null);
+ const editorId = 'superdoc-editor';
+ let superdoc: SuperDoc | undefined;
+
+ createEffect(() => {
+ const selected = file();
+ if (!selected) return;
+
+ superdoc = new SuperDoc({
+ selector: `#${editorId}`,
+ document: selected,
+ user: { name: 'User', email: 'user@company.com' },
+ });
+
+ onCleanup(() => {
+ superdoc?.destroy();
+ });
+ });
+
+ return (
+
+
{
+ const selected = event.currentTarget.files?.[0];
+ if (selected) setFile(selected);
+ }}
+ />
+
+
+
+
+ );
+}
+```
+
+## Next steps
+
+- [React Integration](/getting-started/frameworks/react) - React setup
+- [API Reference](/editor/superdoc/configuration) - Configuration options
+- [Examples](https://github.com/superdoc-dev/superdoc/tree/main/examples/getting-started/solid) - Working examples
diff --git a/apps/docs/scripts/validate-code-imports.ts b/apps/docs/scripts/validate-code-imports.ts
index 8b8fedf71f..f5d0a9c93b 100644
--- a/apps/docs/scripts/validate-code-imports.ts
+++ b/apps/docs/scripts/validate-code-imports.ts
@@ -42,6 +42,7 @@ const EXACT_EXTERNAL_IMPORTS = new Set([
'react',
'react-dom',
'react-dom/client',
+ 'solid-js',
'vue',
'pdfjs-dist',
'pdfjs-dist/build/pdf.mjs',
diff --git a/examples/getting-started/README.md b/examples/getting-started/README.md
index c2a0ba0ba2..f80c9e25cb 100644
--- a/examples/getting-started/README.md
+++ b/examples/getting-started/README.md
@@ -7,6 +7,7 @@ Minimal examples for integrating SuperDoc into your project. Each example loads
| [react](./react) | React + TypeScript with Vite | [Guide](https://docs.superdoc.dev/getting-started/frameworks/react) |
| [vue](./vue) | Vue 3 + TypeScript with Vite | [Guide](https://docs.superdoc.dev/getting-started/frameworks/vue) |
| [nuxt](./nuxt) | Nuxt 4 + TypeScript with Vite | [Guide](https://docs.superdoc.dev/getting-started/frameworks/nuxt) |
+| [solid](./solid) | SolidJS + TypeScript with Vite | [Guide](https://docs.superdoc.dev/getting-started/frameworks/solid) |
| [vanilla](./vanilla) | Plain JavaScript with Vite | [Guide](https://docs.superdoc.dev/getting-started/quickstart) |
| [cdn](./cdn) | Zero build tools — just an HTML file | [Guide](https://docs.superdoc.dev/getting-started/quickstart) |
diff --git a/examples/getting-started/solid/.gitignore b/examples/getting-started/solid/.gitignore
new file mode 100644
index 0000000000..751513ce1b
--- /dev/null
+++ b/examples/getting-started/solid/.gitignore
@@ -0,0 +1,28 @@
+dist
+.wrangler
+.output
+.vercel
+.netlify
+.vinxi
+app.config.timestamp_*.js
+
+# Environment
+.env
+.env*.local
+
+# dependencies
+/node_modules
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+*.launch
+.settings/
+
+# Temp
+gitignore
+
+# System Files
+.DS_Store
+Thumbs.db
diff --git a/examples/getting-started/solid/README.md b/examples/getting-started/solid/README.md
new file mode 100644
index 0000000000..38b4997618
--- /dev/null
+++ b/examples/getting-started/solid/README.md
@@ -0,0 +1,51 @@
+# SuperDoc Solid + TypeScript Example
+
+A TypeScript example demonstrating `superdoc` integration with Solid.
+
+## Features Demonstrated
+
+- **File Upload** - Load `.docx` files with typed event handlers
+- **Mode Switching** - Toggle between editing, suggesting, and viewing modes
+- **Instance API** - Access SuperDoc instance methods with proper typing
+- **Export** - Download documents as DOCX
+- **User Info** - Pass typed user information to the editor
+- **Loading States** - Show loading UI while SuperDoc initializes
+- **Event Callbacks** - Typed callbacks for editor events
+
+## Run
+
+```bash
+# From repo root
+pnpm install
+pnpm -C examples/getting-started/solid dev
+```
+
+## Key Types Used
+
+```typescript
+import { SuperDoc } from 'superdoc';
+
+type SuperDocInstance = InstanceType;
+type SuperDocConfig = ConstructorParameters[0];
+type DocumentMode = NonNullable;
+
+// Ref for accessing instance
+let superdoc: SuperDocInstance | null = null;
+
+// Typed document mode signal
+const [mode, setMode] = createSignal('editing');
+
+// Access instance
+superdoc?.setDocumentMode(mode());
+await superdoc?.export({ triggerDownload: true });
+```
+
+## Project Structure
+
+```text
+src/
+├── App.tsx # Main component with SuperDoc integration
+├── App.css # Styles
+├── index.tsx # Entry point
+└── index.css # Global styles
+```
diff --git a/examples/getting-started/solid/index.html b/examples/getting-started/solid/index.html
new file mode 100644
index 0000000000..5b084814e6
--- /dev/null
+++ b/examples/getting-started/solid/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ SuperDoc Solid + TypeScript Example
+
+
+
+
+
+
+
diff --git a/examples/getting-started/solid/package.json b/examples/getting-started/solid/package.json
new file mode 100644
index 0000000000..d31585f602
--- /dev/null
+++ b/examples/getting-started/solid/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "superdoc-solid-example",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite"
+ },
+ "dependencies": {
+ "solid-js": "^1.9.5",
+ "superdoc": "latest"
+ },
+ "devDependencies": {
+ "typescript": "^5.7.0",
+ "vite": "^6.2.0",
+ "vite-plugin-solid": "^2.11.12"
+ }
+}
diff --git a/examples/getting-started/solid/src/App.css b/examples/getting-started/solid/src/App.css
new file mode 100644
index 0000000000..c9fb3dbd23
--- /dev/null
+++ b/examples/getting-started/solid/src/App.css
@@ -0,0 +1,218 @@
+/* Layout */
+.app {
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ background: #f5f5f5;
+}
+
+/* Header */
+.header {
+ padding: 1rem 1.5rem;
+ background: #1a1a2e;
+ color: white;
+ display: flex;
+ align-items: center;
+ gap: 1.5rem;
+ flex-wrap: wrap;
+}
+
+.header h1 {
+ font-size: 1.25rem;
+ font-weight: 600;
+ margin-right: auto;
+}
+
+/* Controls */
+.controls {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+/* Buttons */
+.btn {
+ padding: 0.5rem 1rem;
+ font-size: 0.875rem;
+ font-weight: 500;
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ border-radius: 6px;
+ background: transparent;
+ color: white;
+ cursor: pointer;
+ transition: all 0.15s;
+}
+
+.btn:hover {
+ background: rgba(255, 255, 255, 0.1);
+}
+
+.btn.primary {
+ background: #3b82f6;
+ border-color: #3b82f6;
+}
+
+.btn.primary:hover {
+ background: #2563eb;
+ border-color: #2563eb;
+}
+
+.btn.large {
+ padding: 0.75rem 1.5rem;
+ font-size: 1rem;
+}
+
+.btn:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+/* Mode Switcher */
+.mode-switcher {
+ display: flex;
+ background: rgba(255, 255, 255, 0.1);
+ border-radius: 6px;
+ padding: 2px;
+}
+
+.mode-btn {
+ padding: 0.4rem 0.75rem;
+ font-size: 0.8rem;
+ font-weight: 500;
+ border: none;
+ border-radius: 4px;
+ background: transparent;
+ color: rgba(255, 255, 255, 0.7);
+ cursor: pointer;
+ transition: all 0.15s;
+}
+
+.mode-btn:hover:not(:disabled) {
+ color: white;
+}
+
+.mode-btn.active {
+ background: white;
+ color: #1a1a2e;
+}
+
+.mode-btn:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+/* Actions */
+.actions {
+ display: flex;
+ gap: 0.5rem;
+}
+
+/* Status */
+.status {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-size: 0.8rem;
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.status-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: #fbbf24;
+}
+
+.status-dot.ready {
+ background: #22c55e;
+}
+
+.status-dot.loading {
+ animation: pulse 1s infinite;
+}
+
+@keyframes pulse {
+ 0%,
+ 100% {
+ opacity: 1;
+ }
+ 50% {
+ opacity: 0.5;
+ }
+}
+
+/* Editor Area */
+.editor-area {
+ flex: 1;
+ min-height: 0;
+ background: white;
+}
+
+/* Empty State */
+.empty-state {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #fafafa;
+}
+
+.empty-content {
+ text-align: center;
+ color: #666;
+}
+
+.empty-content h2 {
+ font-size: 1.5rem;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 0.5rem;
+}
+
+.empty-content p {
+ margin-bottom: 1.5rem;
+}
+
+/* Loading State */
+.loading-state {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 1rem;
+ color: #666;
+}
+
+.spinner {
+ width: 32px;
+ height: 32px;
+ border: 3px solid #e5e7eb;
+ border-top-color: #3b82f6;
+ border-radius: 50%;
+ animation: spin 0.8s linear infinite;
+}
+
+@keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+ .header {
+ padding: 1rem;
+ }
+
+ .header h1 {
+ width: 100%;
+ margin-bottom: 0.5rem;
+ }
+
+ .controls {
+ width: 100%;
+ justify-content: flex-start;
+ }
+}
diff --git a/examples/getting-started/solid/src/App.tsx b/examples/getting-started/solid/src/App.tsx
new file mode 100644
index 0000000000..0fa5ef832e
--- /dev/null
+++ b/examples/getting-started/solid/src/App.tsx
@@ -0,0 +1,173 @@
+import { createEffect, createSignal, createUniqueId, onCleanup, Show, untrack } from 'solid-js';
+import { SuperDoc } from 'superdoc';
+import 'superdoc/style.css';
+import './App.css';
+
+type SuperDocInstance = InstanceType;
+type SuperDocConfig = ConstructorParameters[0];
+type DocumentMode = NonNullable;
+
+/**
+ * SuperDoc Solid + TypeScript Example
+ *
+ * Demonstrates:
+ * - File upload with type safety
+ * - Document mode switching (editing/viewing/suggesting)
+ * - Export functionality via ref API
+ * - User information
+ * - Loading states
+ * - Event callbacks
+ */
+export default function App() {
+ // Document state
+ const [document, setDocument] = createSignal(null);
+ const [mode, setMode] = createSignal('editing');
+ const [isReady, setIsReady] = createSignal(false);
+ const [editorContainerRef, setEditorContainerRef] = createSignal(null);
+
+ // Ref for accessing SuperDoc instance methods
+ let fileInputRef: HTMLInputElement | undefined;
+ let superdoc: SuperDocInstance | null = null;
+
+ const containerId = `superdoc${createUniqueId()}`;
+ const toolbarId = `superdoc-toolbar${createUniqueId()}`;
+
+ // Current user (typed)
+ const currentUser = {
+ name: 'John Doe',
+ email: 'john@example.com',
+ };
+
+ function handleGetHTML() {
+ const html = superdoc?.getHTML();
+ if (!html) return;
+
+ console.log('Document HTML:', html);
+ alert(`Document has ${html.length} section(s). Check console for HTML.`);
+ }
+
+ function selectMode(nextMode: DocumentMode) {
+ setMode(nextMode);
+ superdoc?.setDocumentMode(nextMode);
+ }
+
+ function ModeButton(props: { targetMode: DocumentMode; label: string }) {
+ return (
+
+ );
+ }
+
+ createEffect(() => {
+ const doc = document();
+ if (!doc || !editorContainerRef()) return;
+
+ superdoc = new SuperDoc({
+ selector: `#${CSS.escape(containerId)}`,
+ toolbar: `#${CSS.escape(toolbarId)}`,
+ document: doc,
+ documentMode: untrack(() => mode()),
+ role: 'editor',
+ user: currentUser,
+ rulers: true,
+ onReady: (editor) => {
+ console.log('SuperDoc ready:', editor.superdoc);
+ setIsReady(true);
+ },
+ onEditorCreate: (event) => {
+ console.log('ProseMirror editor created:', event);
+ },
+ onEditorUpdate: () => {
+ console.log('Document updated');
+ },
+ onContentError: (event) => {
+ console.error('Content error:', event);
+ },
+ });
+
+ onCleanup(() => {
+ superdoc?.destroy();
+ superdoc = null;
+ });
+ });
+
+ return (
+
+
+
+
+
+
No Document Loaded
+
Click "Open Document" to load a .docx file
+
+
+
+ }
+ >
+
+
+
+
+
+
Loading document...
+
+
+
+
+
+ );
+}
diff --git a/examples/getting-started/solid/src/index.css b/examples/getting-started/solid/src/index.css
new file mode 100644
index 0000000000..558e2a6f6f
--- /dev/null
+++ b/examples/getting-started/solid/src/index.css
@@ -0,0 +1,20 @@
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+html,
+body,
+#root {
+ height: 100%;
+}
+
+body {
+ font-family:
+ -apple-system,
+ BlinkMacSystemFont,
+ 'Segoe UI',
+ Roboto,
+ sans-serif;
+}
diff --git a/examples/getting-started/solid/src/index.tsx b/examples/getting-started/solid/src/index.tsx
new file mode 100644
index 0000000000..fad27d4cb0
--- /dev/null
+++ b/examples/getting-started/solid/src/index.tsx
@@ -0,0 +1,14 @@
+/* @refresh reload */
+import { render } from 'solid-js/web';
+import './index.css';
+import App from './App';
+
+const root = document.getElementById('root');
+
+if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
+ throw new Error(
+ 'Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?',
+ );
+}
+
+render(() => , root!);
diff --git a/examples/getting-started/solid/tsconfig.json b/examples/getting-started/solid/tsconfig.json
new file mode 100644
index 0000000000..8b4ebee2ba
--- /dev/null
+++ b/examples/getting-started/solid/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ // General
+ "jsx": "preserve",
+ "jsxImportSource": "solid-js",
+ "target": "ESNext",
+
+ // Modules
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true,
+ "isolatedModules": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "noEmit": true,
+
+ // Type Checking & Safety
+ "strict": true,
+ "types": ["vite/client"]
+ }
+}
diff --git a/examples/getting-started/solid/vite.config.ts b/examples/getting-started/solid/vite.config.ts
new file mode 100644
index 0000000000..ea2923ba7b
--- /dev/null
+++ b/examples/getting-started/solid/vite.config.ts
@@ -0,0 +1,6 @@
+import { defineConfig } from 'vite';
+import solidPlugin from 'vite-plugin-solid';
+
+export default defineConfig({
+ plugins: [solidPlugin()],
+});
diff --git a/examples/manifest.json b/examples/manifest.json
index 71feef94cb..1cb6385292 100644
--- a/examples/manifest.json
+++ b/examples/manifest.json
@@ -119,6 +119,21 @@
"docs": "https://docs.superdoc.dev/getting-started/frameworks/laravel",
"ci": true
},
+ {
+ "id": "getting-started-solid",
+ "section": "getting-started",
+ "subsection": "frameworks",
+ "kind": "integration-example",
+ "status": "active",
+ "sourceKind": "local",
+ "title": "Solid starter",
+ "category": "Getting Started",
+ "surface": "Frameworks",
+ "sourceRepo": "superdoc-dev/superdoc",
+ "sourcePath": "examples/getting-started/solid",
+ "docs": "https://docs.superdoc.dev/getting-started/frameworks/solid",
+ "ci": true
+ },
{
"id": "editor-built-in-comments",
"section": "editor",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3ee3719971..dfaf8f8f84 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2277,6 +2277,25 @@ importers:
specifier: npm:rolldown-vite@7.3.1
version: rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
+ examples/getting-started/solid:
+ dependencies:
+ solid-js:
+ specifier: ^1.9.5
+ version: 1.9.13
+ superdoc:
+ specifier: workspace:*
+ version: link:../../../packages/superdoc
+ devDependencies:
+ typescript:
+ specifier: ^5.7.0
+ version: 5.9.3
+ vite:
+ specifier: npm:rolldown-vite@7.3.1
+ version: rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
+ vite-plugin-solid:
+ specifier: ^2.11.12
+ version: 2.11.12(@testing-library/jest-dom@6.9.1)(rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(solid-js@1.9.13)
+
examples/getting-started/vanilla:
dependencies:
superdoc:
@@ -4073,6 +4092,10 @@ packages:
resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-module-imports@7.18.6':
+ resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-module-imports@7.28.6':
resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
engines: {node: '>=6.9.0'}
@@ -12114,6 +12137,11 @@ packages:
'@babel/core': ^7.12.0
webpack: '>=5'
+ babel-plugin-jsx-dom-expressions@0.40.7:
+ resolution: {integrity: sha512-/O6JWUmjv03OI9lL2ry9bUjpD5S3PclM55RRJEyCdcFZ5W2SEA/59d+l2hNsk3gI6kiWRdRPdOtqZmsQzFN1pQ==}
+ peerDependencies:
+ '@babel/core': ^7.20.12
+
babel-plugin-macros@3.1.0:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
@@ -12138,6 +12166,15 @@ packages:
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ babel-preset-solid@1.9.12:
+ resolution: {integrity: sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ solid-js: ^1.9.12
+ peerDependenciesMeta:
+ solid-js:
+ optional: true
+
bail@2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
@@ -15318,6 +15355,9 @@ packages:
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
engines: {node: '>=18'}
+ html-entities@2.3.3:
+ resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+
html-entities@2.6.0:
resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
@@ -16010,6 +16050,10 @@ packages:
is-what@3.14.1:
resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+ is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
+ engines: {node: '>=12.13'}
+
is-what@5.5.0:
resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==}
engines: {node: '>=18'}
@@ -16858,6 +16902,7 @@ packages:
lucide-svelte@0.475.0:
resolution: {integrity: sha512-N5+hFTPHaZe9HhqJDxxxODfYuOmI6v+JIowzERcea/uxytN/JZlehVTcINBNp8wMo7l6ov1Jf5srrDbkI/WsJg==}
+ deprecated: Package deprecated. Please use @lucide/svelte instead.
peerDependencies:
svelte: ^3 || ^4 || ^5.0.0-next.42
@@ -17096,6 +17141,10 @@ packages:
resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
engines: {node: '>=18'}
+ merge-anything@5.1.7:
+ resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
+ engines: {node: '>=12.13'}
+
merge-deep@3.0.3:
resolution: {integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==}
engines: {node: '>=0.10.0'}
@@ -20499,6 +20548,12 @@ packages:
resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==}
engines: {node: '>=20.0.0'}
+ seroval-plugins@1.5.4:
+ resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ seroval: ^1.0
+
seroval@1.5.1:
resolution: {integrity: sha512-OwrZRZAfhHww0WEnKHDY8OM0U/Qs8OTfIDWhUD4BLpNJUfXK4cGmjiagGze086m+mhI+V2nD0gfbHEnJjb9STA==}
engines: {node: '>=10'}
@@ -20740,6 +20795,14 @@ packages:
resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+ solid-js@1.9.13:
+ resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==}
+
+ solid-refresh@0.6.3:
+ resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
+ peerDependencies:
+ solid-js: ^1.3
+
sonic-boom@3.8.1:
resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
@@ -22293,6 +22356,16 @@ packages:
peerDependencies:
vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ vite-plugin-solid@2.11.12:
+ resolution: {integrity: sha512-FgjPcx2OwX9h6f28jli7A4bG7PP3te8uyakE5iqsmpq3Jqi1TWLgSroC9N6cMfGRU2zXsl4Q6ISvTr2VL0QHpA==}
+ peerDependencies:
+ '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
+ solid-js: ^1.7.2
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@testing-library/jest-dom':
+ optional: true
+
vite-plugin-vue-devtools@7.7.9:
resolution: {integrity: sha512-08DvePf663SxqLFJeMVNW537zzVyakp9KIrI2K7lwgaTqA5R/ydN/N2K8dgZO34tg/Qmw0ch84fOKoBtCEdcGg==}
engines: {node: '>=v14.21.3'}
@@ -24537,6 +24610,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-module-imports@7.18.6':
+ dependencies:
+ '@babel/types': 7.29.0
+
'@babel/helper-module-imports@7.28.6':
dependencies:
'@babel/traverse': 7.29.0
@@ -34446,6 +34523,15 @@ snapshots:
schema-utils: 4.3.3
webpack: 5.105.4(esbuild@0.27.7)(webpack-cli@5.1.4)
+ babel-plugin-jsx-dom-expressions@0.40.7(@babel/core@7.29.0):
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/types': 7.29.0
+ html-entities: 2.3.3
+ parse5: 7.3.0
+
babel-plugin-macros@3.1.0:
dependencies:
'@babel/runtime': 7.29.2
@@ -34484,6 +34570,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ babel-preset-solid@1.9.12(@babel/core@7.29.0)(solid-js@1.9.13):
+ dependencies:
+ '@babel/core': 7.29.0
+ babel-plugin-jsx-dom-expressions: 0.40.7(@babel/core@7.29.0)
+ optionalDependencies:
+ solid-js: 1.9.13
+
bail@2.0.2: {}
balanced-match@1.0.2: {}
@@ -38550,6 +38643,8 @@ snapshots:
dependencies:
whatwg-encoding: 3.1.1
+ html-entities@2.3.3: {}
+
html-entities@2.6.0: {}
html-escaper@2.0.2: {}
@@ -39302,6 +39397,8 @@ snapshots:
is-what@3.14.1: {}
+ is-what@4.1.16: {}
+
is-what@5.5.0: {}
is-windows@1.0.2: {}
@@ -40689,6 +40786,10 @@ snapshots:
meow@13.2.0: {}
+ merge-anything@5.1.7:
+ dependencies:
+ is-what: 4.1.16
+
merge-deep@3.0.3:
dependencies:
arr-union: 3.1.0
@@ -45524,6 +45625,10 @@ snapshots:
serialize-javascript@7.0.5: {}
+ seroval-plugins@1.5.4(seroval@1.5.1):
+ dependencies:
+ seroval: 1.5.1
+
seroval@1.5.1: {}
serve-handler@6.1.7:
@@ -45943,6 +46048,21 @@ snapshots:
ip-address: 10.1.0
smart-buffer: 4.2.0
+ solid-js@1.9.13:
+ dependencies:
+ csstype: 3.2.3
+ seroval: 1.5.1
+ seroval-plugins: 1.5.4(seroval@1.5.1)
+
+ solid-refresh@0.6.3(solid-js@1.9.13):
+ dependencies:
+ '@babel/generator': 7.29.1
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/types': 7.29.0
+ solid-js: 1.9.13
+ transitivePeerDependencies:
+ - supports-color
+
sonic-boom@3.8.1:
dependencies:
atomic-sleep: 1.0.0
@@ -47993,6 +48113,21 @@ snapshots:
transitivePeerDependencies:
- rollup
+ vite-plugin-solid@2.11.12(@testing-library/jest-dom@6.9.1)(rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(solid-js@1.9.13):
+ dependencies:
+ '@babel/core': 7.29.0
+ '@types/babel__core': 7.20.5
+ babel-preset-solid: 1.9.12(@babel/core@7.29.0)(solid-js@1.9.13)
+ merge-anything: 5.1.7
+ solid-js: 1.9.13
+ solid-refresh: 0.6.3(solid-js@1.9.13)
+ vite: rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
+ vitefu: 1.1.3(rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
+ optionalDependencies:
+ '@testing-library/jest-dom': 6.9.1
+ transitivePeerDependencies:
+ - supports-color
+
vite-plugin-vue-devtools@7.7.9(rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(rollup@4.60.2)(vue@3.5.32(typescript@5.9.3)):
dependencies:
'@vue/devtools-core': 7.7.9(rolldown-vite@7.3.1(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(less@4.4.2)(sass@1.97.3)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))