{"_id":"@aibulat/svelte-admin-kit","_rev":"5-682b747476f804b2934b9a065ad16906","name":"@aibulat/svelte-admin-kit","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.0":{"name":"@aibulat/svelte-admin-kit","version":"0.2.0","keywords":["svelte","svelte5","components","ui","admin","runes","monaco","tiptap","design-system"],"author":{"name":"Aibulat"},"license":"MIT","_id":"@aibulat/svelte-admin-kit@0.2.0","maintainers":[{"name":"aibulat","email":"ngmAibulat@gmail.com"}],"homepage":"https://github.com/ngmaibulat/packages/tree/main/packages/svelte-admin-kit#readme","bugs":{"url":"https://github.com/ngmaibulat/packages/issues"},"dist":{"shasum":"6ea3912be8930bd18797b74a9038c0b3270666a9","tarball":"https://registry.npmjs.org/@aibulat/svelte-admin-kit/-/svelte-admin-kit-0.2.0.tgz","fileCount":106,"integrity":"sha512-XvG3vNwWRKcdlkG/1giOesT54aEotcRdr9VZDQD+2+jtKuTcp2cRsD/U+3X5TJkjoTaz5BeIK1lumM9WDqFmfA==","signatures":[{"sig":"MEUCIAcqoh08uatMJlpj63g8OkGRrJwC+HGJKu38wUyS/PFBAiEAyKx6Uu0a5UQYi2pvXOWvlvEMQBVJ7nuFUaXhP3Bov00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238116},"type":"module","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./data":{"types":"./dist/data/index.d.ts","svelte":"./dist/data/index.js","default":"./dist/data/index.js"},"./icon":{"types":"./dist/icon/index.d.ts","svelte":"./dist/icon/index.js","default":"./dist/icon/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","svelte":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./layout":{"types":"./dist/layout/index.d.ts","svelte":"./dist/layout/index.js","default":"./dist/layout/index.js"},"./overlay":{"types":"./dist/overlay/index.d.ts","svelte":"./dist/overlay/index.js","default":"./dist/overlay/index.js"},"./controls":{"types":"./dist/controls/index.d.ts","svelte":"./dist/controls/index.js","default":"./dist/controls/index.js"},"./feedback":{"types":"./dist/feedback/index.d.ts","svelte":"./dist/feedback/index.js","default":"./dist/feedback/index.js"},"./richtext":{"types":"./dist/richtext/index.d.ts","default":"./dist/richtext/index.js"},"./package.json":"./package.json","./richtext-editor":{"types":"./dist/richtext/editor-index.d.ts","svelte":"./dist/richtext/editor-index.js","default":"./dist/richtext/editor-index.js"},"./richtext/labels":{"types":"./dist/richtext/labels.d.ts","default":"./dist/richtext/labels.js"},"./styles/theme.css":"./dist/styles/theme.css","./richtext/content.css":"./dist/richtext/content.css","./editor/format-markdown-tables":{"types":"./dist/editor/formatMarkdownTables.d.ts","default":"./dist/editor/formatMarkdownTables.js"}},"gitHead":"9a0c918dc08a69f49694dade26148aa991269495","scripts":{"dev":"svelte-package --watch","lint":"prettier --check . && eslint .","test":"vitest run","build":"svelte-package && publint","prepack":"pnpm run build","typecheck":"svelte-check --tsconfig ./tsconfig.json","test:watch":"vitest"},"_npmUser":{"name":"aibulat","email":"ngmAibulat@gmail.com"},"repository":{"url":"git+https://github.com/ngmaibulat/packages.git","type":"git","directory":"packages/svelte-admin-kit"},"_npmVersion":"11.19.0","description":"Reusable Svelte 5 admin-UI primitives — controls, layout, feedback, data display, overlays, icon registry, Monaco and tiptap editors.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.7.0","dependencies":{"@tiptap/pm":"3.27.3","@tiptap/core":"3.27.3","@tiptap/extensions":"3.27.3","@tiptap/suggestion":"3.27.3","@tiptap/starter-kit":"3.27.3","@tiptap/extension-list":"3.27.3","@tiptap/extension-emoji":"3.27.3","@tiptap/extension-image":"3.27.3","@tiptap/extension-table":"3.27.3","@tiptap/extension-details":"3.27.3","@tiptap/extension-mention":"3.27.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.16","eslint":"^10.4.1","svelte":"^5.56.1","vitest":"^4.1.9","globals":"^17.6.0","publint":"^0.3.23","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"^6.0.3","svelte-check":"^4.6.0","monaco-editor":"^0.55.1","@sveltejs/package":"^2.5.8","typescript-eslint":"^8.60.1","eslint-plugin-svelte":"^3.19.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^4.1.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"peerDependencies":{"svelte":"^5.0.0","monaco-editor":"^0.55.0"},"peerDependenciesMeta":{"monaco-editor":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/svelte-admin-kit_0.2.0_1786783699399_0.41260454460753615","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aibulat/svelte-admin-kit","version":"0.2.2","keywords":["svelte","svelte5","components","ui","admin","runes","monaco","tiptap","design-system"],"author":{"name":"Aibulat"},"license":"MIT","_id":"@aibulat/svelte-admin-kit@0.2.2","maintainers":[{"name":"aibulat","email":"ngmAibulat@gmail.com"}],"homepage":"https://github.com/ngmaibulat/packages/tree/main/packages/svelte-admin-kit#readme","bugs":{"url":"https://github.com/ngmaibulat/packages/issues"},"dist":{"shasum":"debf23adcb7e1b0ca97adccaf2910e4ff85bf617","tarball":"https://registry.npmjs.org/@aibulat/svelte-admin-kit/-/svelte-admin-kit-0.2.2.tgz","fileCount":106,"integrity":"sha512-FrzJpoDMGkI9KpcRmZdyo5KbTwOV39qK6ljNpQqMJf51NtwrNAL6hSRd6kCcOJoPEfBXiXpEEXBGfxx4bYMntQ==","signatures":[{"sig":"MEUCIEToBGmlAYL2ZXV+lWHNbTDyr7N5zbejSTSFCpFmNv4OAiEAmq6+eEbYrdkOwdk1vSBf9m7DrbntFbyff/hBfc6kftA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aibulat%2fsvelte-admin-kit@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":238116},"type":"module","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./data":{"types":"./dist/data/index.d.ts","svelte":"./dist/data/index.js","default":"./dist/data/index.js"},"./icon":{"types":"./dist/icon/index.d.ts","svelte":"./dist/icon/index.js","default":"./dist/icon/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","svelte":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./layout":{"types":"./dist/layout/index.d.ts","svelte":"./dist/layout/index.js","default":"./dist/layout/index.js"},"./overlay":{"types":"./dist/overlay/index.d.ts","svelte":"./dist/overlay/index.js","default":"./dist/overlay/index.js"},"./controls":{"types":"./dist/controls/index.d.ts","svelte":"./dist/controls/index.js","default":"./dist/controls/index.js"},"./feedback":{"types":"./dist/feedback/index.d.ts","svelte":"./dist/feedback/index.js","default":"./dist/feedback/index.js"},"./richtext":{"types":"./dist/richtext/index.d.ts","default":"./dist/richtext/index.js"},"./package.json":"./package.json","./richtext-editor":{"types":"./dist/richtext/editor-index.d.ts","svelte":"./dist/richtext/editor-index.js","default":"./dist/richtext/editor-index.js"},"./richtext/labels":{"types":"./dist/richtext/labels.d.ts","default":"./dist/richtext/labels.js"},"./styles/theme.css":"./dist/styles/theme.css","./richtext/content.css":"./dist/richtext/content.css","./editor/format-markdown-tables":{"types":"./dist/editor/formatMarkdownTables.d.ts","default":"./dist/editor/formatMarkdownTables.js"}},"gitHead":"8ca280f051dc28f6d515473d0980bdc75f5eb2e0","scripts":{"dev":"svelte-package --watch","lint":"prettier --check . && eslint .","test":"vitest run","build":"svelte-package && publint","prepack":"pnpm run build","typecheck":"svelte-check --tsconfig ./tsconfig.json","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e530383-5289-4cdf-a4da-0c4e12673ba1"}},"repository":{"url":"git+https://github.com/ngmaibulat/packages.git","type":"git","directory":"packages/svelte-admin-kit"},"_npmVersion":"12.0.2","description":"Reusable Svelte 5 admin-UI primitives — controls, layout, feedback, data display, overlays, icon registry, Monaco and tiptap editors.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.7.0","dependencies":{"@tiptap/pm":"3.27.3","@tiptap/core":"3.27.3","@tiptap/extensions":"3.27.3","@tiptap/suggestion":"3.27.3","@tiptap/starter-kit":"3.27.3","@tiptap/extension-list":"3.27.3","@tiptap/extension-emoji":"3.27.3","@tiptap/extension-image":"3.27.3","@tiptap/extension-table":"3.27.3","@tiptap/extension-details":"3.27.3","@tiptap/extension-mention":"3.27.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.16","eslint":"^10.4.1","svelte":"^5.56.1","vitest":"^4.1.9","globals":"^17.6.0","publint":"^0.3.23","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"^6.0.3","svelte-check":"^4.6.0","monaco-editor":"^0.55.1","@sveltejs/package":"^2.5.8","typescript-eslint":"^8.60.1","eslint-plugin-svelte":"^3.19.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^4.1.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"peerDependencies":{"svelte":"^5.0.0","monaco-editor":"^0.55.0"},"peerDependenciesMeta":{"monaco-editor":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/svelte-admin-kit_0.2.2_1786793617687_0.9302620423767503","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aibulat/svelte-admin-kit","version":"0.2.3","keywords":["svelte","svelte5","components","ui","admin","runes","monaco","tiptap","design-system"],"author":{"name":"Aibulat"},"license":"MIT","_id":"@aibulat/svelte-admin-kit@0.2.3","maintainers":[{"name":"aibulat","email":"ngmAibulat@gmail.com"}],"homepage":"https://github.com/ngmaibulat/packages/tree/main/packages/svelte-admin-kit#readme","bugs":{"url":"https://github.com/ngmaibulat/packages/issues"},"dist":{"shasum":"79c07123e8165682101f47605bd46ee50b571294","tarball":"https://registry.npmjs.org/@aibulat/svelte-admin-kit/-/svelte-admin-kit-0.2.3.tgz","fileCount":106,"integrity":"sha512-yXdrJ9n/lFnTNuI4QO1zEx5TAIehoxSQux8coq2M6bAizweQfhf+oCB0RKr3Zdt6xBqiKlAWm/7MrM7BJGpfHg==","signatures":[{"sig":"MEYCIQCma0Up3UhTXkPGaOLmL0zEmYzxkjuGvNGVnGzfA3K0jQIhAKt2pDwo3Ja4nNo2HWYRHrhw0us+06x9kONzlqXHri1Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aibulat%2fsvelte-admin-kit@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":238116},"type":"module","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./data":{"types":"./dist/data/index.d.ts","svelte":"./dist/data/index.js","default":"./dist/data/index.js"},"./icon":{"types":"./dist/icon/index.d.ts","svelte":"./dist/icon/index.js","default":"./dist/icon/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","svelte":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./layout":{"types":"./dist/layout/index.d.ts","svelte":"./dist/layout/index.js","default":"./dist/layout/index.js"},"./overlay":{"types":"./dist/overlay/index.d.ts","svelte":"./dist/overlay/index.js","default":"./dist/overlay/index.js"},"./controls":{"types":"./dist/controls/index.d.ts","svelte":"./dist/controls/index.js","default":"./dist/controls/index.js"},"./feedback":{"types":"./dist/feedback/index.d.ts","svelte":"./dist/feedback/index.js","default":"./dist/feedback/index.js"},"./richtext":{"types":"./dist/richtext/index.d.ts","default":"./dist/richtext/index.js"},"./package.json":"./package.json","./richtext-editor":{"types":"./dist/richtext/editor-index.d.ts","svelte":"./dist/richtext/editor-index.js","default":"./dist/richtext/editor-index.js"},"./richtext/labels":{"types":"./dist/richtext/labels.d.ts","default":"./dist/richtext/labels.js"},"./styles/theme.css":"./dist/styles/theme.css","./richtext/content.css":"./dist/richtext/content.css","./editor/format-markdown-tables":{"types":"./dist/editor/formatMarkdownTables.d.ts","default":"./dist/editor/formatMarkdownTables.js"}},"gitHead":"11201239f623ac08c9d4f54e8cbf6f2b010d314a","scripts":{"dev":"svelte-package --watch","lint":"prettier --check . && eslint .","test":"vitest run","build":"svelte-package && publint","prepack":"pnpm run build","typecheck":"svelte-check --tsconfig ./tsconfig.json","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e530383-5289-4cdf-a4da-0c4e12673ba1"}},"repository":{"url":"git+https://github.com/ngmaibulat/packages.git","type":"git","directory":"packages/svelte-admin-kit"},"_npmVersion":"12.0.2","description":"Reusable Svelte 5 admin-UI primitives — controls, layout, feedback, data display, overlays, icon registry, Monaco and tiptap editors.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.7.0","dependencies":{"@tiptap/pm":"3.27.3","@tiptap/core":"3.27.3","@tiptap/extensions":"3.27.3","@tiptap/suggestion":"3.27.3","@tiptap/starter-kit":"3.27.3","@tiptap/extension-list":"3.27.3","@tiptap/extension-emoji":"3.27.3","@tiptap/extension-image":"3.27.3","@tiptap/extension-table":"3.27.3","@tiptap/extension-details":"3.27.3","@tiptap/extension-mention":"3.27.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.16","eslint":"^10.4.1","svelte":"^5.56.1","vitest":"^4.1.9","globals":"^17.6.0","publint":"^0.3.23","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"^6.0.3","svelte-check":"^4.6.0","monaco-editor":"^0.55.1","@sveltejs/package":"^2.5.8","typescript-eslint":"^8.60.1","eslint-plugin-svelte":"^3.19.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^4.1.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"peerDependencies":{"svelte":"^5.0.0","monaco-editor":"^0.55.0"},"peerDependenciesMeta":{"monaco-editor":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/svelte-admin-kit_0.2.3_1786794287075_0.4712627437861041","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aibulat/svelte-admin-kit","version":"0.3.0","keywords":["svelte","svelte5","components","ui","admin","runes","monaco","tiptap","design-system"],"author":{"name":"Aibulat"},"license":"MIT","_id":"@aibulat/svelte-admin-kit@0.3.0","maintainers":[{"name":"aibulat","email":"ngmAibulat@gmail.com"}],"homepage":"https://github.com/ngmaibulat/packages/tree/main/packages/svelte-admin-kit#readme","bugs":{"url":"https://github.com/ngmaibulat/packages/issues"},"dist":{"shasum":"a174e7330072f6db5c05f942cda774067908a65c","tarball":"https://registry.npmjs.org/@aibulat/svelte-admin-kit/-/svelte-admin-kit-0.3.0.tgz","fileCount":116,"integrity":"sha512-bq8W0B3ppI5QEQwA/xbvJR6brH4GkScJ/Md4fM7njb5fib661giByRmc+U7DqnGb+GqVCyxRq+v+jonaRhsX+Q==","signatures":[{"sig":"MEUCIQCrP3azla/pbVMHe/mffuYAQto6zRwVfEAlCPBatTV3MQIgDEeXZ1OP8cV/m0wqJ3oovJu5/z0Dg9F+o/CrdllAxpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aibulat%2fsvelte-admin-kit@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":287200},"type":"module","engines":{"node":">=22.12"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./data":{"types":"./dist/data/index.d.ts","svelte":"./dist/data/index.js","default":"./dist/data/index.js"},"./icon":{"types":"./dist/icon/index.d.ts","svelte":"./dist/icon/index.js","default":"./dist/icon/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","svelte":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./layout":{"types":"./dist/layout/index.d.ts","svelte":"./dist/layout/index.js","default":"./dist/layout/index.js"},"./overlay":{"types":"./dist/overlay/index.d.ts","svelte":"./dist/overlay/index.js","default":"./dist/overlay/index.js"},"./controls":{"types":"./dist/controls/index.d.ts","svelte":"./dist/controls/index.js","default":"./dist/controls/index.js"},"./feedback":{"types":"./dist/feedback/index.d.ts","svelte":"./dist/feedback/index.js","default":"./dist/feedback/index.js"},"./richtext":{"types":"./dist/richtext/index.d.ts","default":"./dist/richtext/index.js"},"./package.json":"./package.json","./richtext-editor":{"types":"./dist/richtext/editor-index.d.ts","svelte":"./dist/richtext/editor-index.js","default":"./dist/richtext/editor-index.js"},"./richtext/labels":{"types":"./dist/richtext/labels.d.ts","default":"./dist/richtext/labels.js"},"./styles/theme.css":"./dist/styles/theme.css","./richtext/content.css":"./dist/richtext/content.css","./editor/format-markdown-tables":{"types":"./dist/editor/formatMarkdownTables.d.ts","default":"./dist/editor/formatMarkdownTables.js"}},"gitHead":"cff04e6be548f7a117bc596c4a88ae4ee144c5c1","scripts":{"dev":"svelte-package --watch","lint":"prettier --check . && eslint .","test":"vitest run","build":"svelte-package && publint","prepack":"pnpm run build","typecheck":"svelte-check --tsconfig ./tsconfig.json","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e530383-5289-4cdf-a4da-0c4e12673ba1"}},"repository":{"url":"git+https://github.com/ngmaibulat/packages.git","type":"git","directory":"packages/svelte-admin-kit"},"_npmVersion":"12.0.2","description":"Reusable Svelte 5 admin-UI primitives — controls, layout, feedback, data display, overlays, icon registry, Monaco and tiptap editors.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.7.0","dependencies":{"@tiptap/pm":"3.27.3","@tiptap/core":"3.27.3","@tiptap/extensions":"3.27.3","@tiptap/suggestion":"3.27.3","@tiptap/starter-kit":"3.27.3","@tiptap/extension-list":"3.27.3","@tiptap/extension-emoji":"3.27.3","@tiptap/extension-image":"3.27.3","@tiptap/extension-table":"3.27.3","@tiptap/extension-details":"3.27.3","@tiptap/extension-mention":"3.27.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.16","eslint":"^10.4.1","svelte":"^5.56.1","vitest":"^4.1.9","globals":"^17.6.0","publint":"^0.3.23","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"^6.0.3","svelte-check":"^4.6.0","monaco-editor":"^0.55.1","@sveltejs/package":"^2.5.8","typescript-eslint":"^8.60.1","eslint-plugin-svelte":"^3.19.0","eslint-config-prettier":"^10.1.8","prettier-plugin-svelte":"^4.1.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"peerDependencies":{"svelte":"^5.0.0","monaco-editor":"^0.55.0"},"peerDependenciesMeta":{"monaco-editor":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/svelte-admin-kit_0.3.0_1786863344893_0.6693035560688647","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aibulat/svelte-admin-kit","version":"0.3.1","description":"Reusable Svelte 5 admin-UI primitives — controls, layout, feedback, data display, overlays, icon registry, Monaco and tiptap editors.","license":"MIT","author":{"name":"Aibulat"},"type":"module","sideEffects":["**/*.css"],"publishConfig":{"access":"public"},"exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./icon":{"types":"./dist/icon/index.d.ts","svelte":"./dist/icon/index.js","default":"./dist/icon/index.js"},"./editor":{"types":"./dist/editor/index.d.ts","svelte":"./dist/editor/index.js","default":"./dist/editor/index.js"},"./editor/format-markdown-tables":{"types":"./dist/editor/formatMarkdownTables.d.ts","default":"./dist/editor/formatMarkdownTables.js"},"./controls":{"types":"./dist/controls/index.d.ts","svelte":"./dist/controls/index.js","default":"./dist/controls/index.js"},"./layout":{"types":"./dist/layout/index.d.ts","svelte":"./dist/layout/index.js","default":"./dist/layout/index.js"},"./feedback":{"types":"./dist/feedback/index.d.ts","svelte":"./dist/feedback/index.js","default":"./dist/feedback/index.js"},"./data":{"types":"./dist/data/index.d.ts","svelte":"./dist/data/index.js","default":"./dist/data/index.js"},"./overlay":{"types":"./dist/overlay/index.d.ts","svelte":"./dist/overlay/index.js","default":"./dist/overlay/index.js"},"./richtext":{"types":"./dist/richtext/index.d.ts","default":"./dist/richtext/index.js"},"./richtext/labels":{"types":"./dist/richtext/labels.d.ts","default":"./dist/richtext/labels.js"},"./richtext-editor":{"types":"./dist/richtext/editor-index.d.ts","svelte":"./dist/richtext/editor-index.js","default":"./dist/richtext/editor-index.js"},"./richtext/content.css":"./dist/richtext/content.css","./styles/theme.css":"./dist/styles/theme.css","./package.json":"./package.json"},"scripts":{"build":"svelte-package && publint","dev":"svelte-package --watch","typecheck":"svelte-check --tsconfig ./tsconfig.json","lint":"prettier --check . && eslint .","test":"vitest run","test:watch":"vitest","prepack":"pnpm run build"},"peerDependencies":{"monaco-editor":"^0.55.0","svelte":"^5.0.0"},"peerDependenciesMeta":{"monaco-editor":{"optional":true}},"dependencies":{"@tiptap/core":"3.27.3","@tiptap/extension-details":"3.27.3","@tiptap/extension-emoji":"3.27.3","@tiptap/extension-image":"3.27.3","@tiptap/extension-list":"3.27.3","@tiptap/extension-mention":"3.27.3","@tiptap/extension-table":"3.27.3","@tiptap/extensions":"3.27.3","@tiptap/pm":"3.27.3","@tiptap/starter-kit":"3.27.3","@tiptap/suggestion":"3.27.3"},"devDependencies":{"@eslint/js":"^10.0.1","@sveltejs/package":"^2.5.8","@sveltejs/vite-plugin-svelte":"^7.1.2","eslint":"^10.4.1","eslint-config-prettier":"^10.1.8","eslint-plugin-svelte":"^3.19.0","globals":"^17.6.0","monaco-editor":"^0.55.1","prettier":"^3.8.3","prettier-plugin-svelte":"^4.1.0","publint":"^0.3.23","svelte":"^5.56.1","svelte-check":"^4.6.0","typescript":"^6.0.3","typescript-eslint":"^8.60.1","vite":"^8.0.16","vitest":"^4.1.9"},"keywords":["svelte","svelte5","components","ui","admin","runes","monaco","tiptap","design-system"],"repository":{"type":"git","url":"git+https://github.com/ngmaibulat/packages.git","directory":"packages/svelte-admin-kit"},"bugs":{"url":"https://github.com/ngmaibulat/packages/issues"},"homepage":"https://github.com/ngmaibulat/packages/tree/main/packages/svelte-admin-kit#readme","engines":{"node":">=22.12"},"gitHead":"eeb44761f2fc50e00e97ce76d2ac2ed6eac4ef4a","_id":"@aibulat/svelte-admin-kit@0.3.1","_nodeVersion":"26.7.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-ZKa/3r3N0jf+2hMUDOCcX1sZX6NxZl+RaxPuK55Da/15Q12aboB1skraFEojTXnOCNgxxh+Gtt7aGQMUWut/5A==","shasum":"2b6b73944df775dd3a49e910ad7c773f4a9eddad","tarball":"https://registry.npmjs.org/@aibulat/svelte-admin-kit/-/svelte-admin-kit-0.3.1.tgz","fileCount":116,"unpackedSize":288805,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aibulat%2fsvelte-admin-kit@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEH5224HRCZxGtESvkMCbrwfxysBEBVE2mh+Vt+getAQAiA8NCkvg7cJD9DY/U6H/zOKLmhZgd4oikQjpUjnDZAJTA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e530383-5289-4cdf-a4da-0c4e12673ba1"}},"directories":{},"maintainers":[{"name":"aibulat","email":"ngmAibulat@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/svelte-admin-kit_0.3.1_1786867396086_0.688455205305148"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-15T08:48:19.243Z","modified":"2026-08-16T08:03:16.489Z","0.2.0":"2026-08-15T08:48:19.555Z","0.2.2":"2026-08-15T11:33:37.836Z","0.2.3":"2026-08-15T11:44:47.233Z","0.3.0":"2026-08-16T06:55:45.042Z","0.3.1":"2026-08-16T08:03:16.211Z"},"bugs":{"url":"https://github.com/ngmaibulat/packages/issues"},"author":{"name":"Aibulat"},"license":"MIT","homepage":"https://github.com/ngmaibulat/packages/tree/main/packages/svelte-admin-kit#readme","keywords":["svelte","svelte5","components","ui","admin","runes","monaco","tiptap","design-system"],"repository":{"type":"git","url":"git+https://github.com/ngmaibulat/packages.git","directory":"packages/svelte-admin-kit"},"description":"Reusable Svelte 5 admin-UI primitives — controls, layout, feedback, data display, overlays, icon registry, Monaco and tiptap editors.","maintainers":[{"name":"aibulat","email":"ngmAibulat@gmail.com"}],"readme":"# @aibulat/svelte-admin-kit\n\nReusable Svelte 5 admin-UI primitives, extracted from the SIEM Tracker app. It covers the\ncontrols, the page-level structure around them, and the overlays — see \"Roadmap\" for what is\ndeliberately still outside.\n\n## What's in the box\n\n- **`./controls`** — the form and action primitives: `Button`, `ButtonGroup`, `Field`,\n  `TextInput`, `Textarea`, `Select`, `Checkbox`, `CheckboxGroup`, `FileDropzone`,\n  `ReorderControls`, `ColumnListEditor`, `TabNav`, `Card`, plus the helpers `formatBytes`,\n  `fileMatchesAccept` and `toColumnDrafts`. Every string these render is a prop — the package\n  carries no translator (see \"No i18n\" below). `CheckboxGroup` stacks its boxes one per row and\n  offers no column count: a horizontal row of checkboxes is what it exists to prevent.\n  `ChipList` is multi-value entry as removable chips, which exists because a\n  comma-separated text box gives no feedback about what was parsed and no per-value validation.\n- **`./layout`** — `PageHeader` (the `<h1>` + subtitle + actions block a screen opens with) and\n  `Stepper`, a static progress rail for a multi-step form.\n- **`./feedback`** — `Alert`, `EmptyState` and `PasswordPolicy`. `Alert` has four tones (`info`, `success`,\n  `warning`, `error`) and two sizes. **`live` defaults to `false`**: an `alert`/`status` role\n  on a message that is already on screen at load makes a screen reader announce every standing\n  caveat before the user has done anything, which is worse than silence. Set it only where the\n  message appears _in response_ to an action.\n- **`./data`** — `DataTable` (+ `Th`, `Td`, `Tr`, `RecordCard`) and `Badge`. `DataTable` owns\n  three things and no more: the horizontal-scroll wrapper, the header row declared by\n  `columns`, and the \"no rows\" row — whose `colspan` comes from `columns.length` rather than a\n  number someone typed. Body rows stay with the caller via the `row` snippet, because that is\n  where tables actually differ. Pass `key` whenever rows can be reordered, filtered or removed.\n  Pass `loading` so the table does not assert \"there is nothing here\" before it has been told,\n  and `card` (rendering a `RecordCard`) to get the responsive table→cards swap described under\n  \"Breakpoints\".\n- **`./overlay`** — `Dialog`, `DialogBody`, `DialogFooter`, `ConfirmDialog`, `Drawer`, over the native\n  `<dialog>` element (which already gives focus trapping, page inertness, Escape-to-close and\n  top-layer stacking). The body and footer are separate components rather than snippets so a\n  dialog that submits can wrap both in one `<form>`; `DialogBody` also takes `as=\"form\"` to be\n  that form itself.\n- **`./icon`** — `Icon`, a lightweight inline-SVG icon component driven by a caller-supplied\n  icon registry (`Record<string, string>` of raw inner-`<svg>` path markup), plus\n  `defaultIcons`, a small generic set of UI-chrome icons (menu, close, search, arrows, info,\n  trash, cornerDownLeft).\n- **`./editor`** — `MarkdownEditor` and `MjmlSourceEditor`, Monaco-based editor components,\n  plus the shared bootstrap (`ensureMonacoConfigured`, `setMentionCandidates`, `monaco`) and\n  `formatMarkdownTables`/`buildMarkdownTable`, a dependency-free GFM table pretty-printer used\n  as the markdown editor's default document-formatting provider.\n- **`./richtext-editor`** — `RichTextEditor`, a tiptap-based rich-text editor (tables,\n  callouts, resizable images, `@`-mentions, emoji, slash menu), with its labels\n  overridable via `./richtext/labels`.\n- **`./richtext`** — the framework-agnostic half of the same kit: `buildRichtextExtensions`\n  and the `RICHTEXT_NODE_TYPES`/`RICHTEXT_MARK_TYPES` allowlists, so a **server** can render\n  and sanitise the editor's documents against the exact same schema the client wrote them\n  with. Imports no Svelte and is safe to evaluate in Node.\n\nMonaco (`./editor`) and tiptap (`./richtext-editor`) must never load together — that is what\nthe separate subpaths are for.\n\n### Required global stylesheet\n\nIf you render stored rich-text content anywhere, import\n`@aibulat/svelte-admin-kit/richtext/content.css` **once at your app root**. Read-only content\nappears on pages that never load the editor bundle, so its styles cannot ship with the editor.\n\n## No i18n\n\nNothing in this package translates anything. Components take their labels as props and report\nactions through callbacks, so a consuming app supplies strings from whatever i18n system it\nalready has. Where that plumbing gets repetitive, wrap the component once in your own app:\n\n```svelte\n<!-- src/lib/components/ui/UploadField.svelte -->\n<FileDropzone {...props} browseLabel={t('browse')} clearLabel={t('clear')} />\n```\n\n## Peer dependencies\n\nYou must install `svelte` (`^5.0.0`) and `monaco-editor` (`^0.55.0`) yourself — both are\npeer dependencies, not bundled, so a single copy of each is shared with the rest of your app.\n\n## Important: this package assumes a Vite-based build\n\n`MarkdownEditor`/`MjmlSourceEditor`'s Monaco bootstrap wires up its web worker via Vite's\n`?worker` import suffix (`monaco-editor/esm/vs/editor/editor.worker?worker`) — the standard\nway to give Monaco a worker without a bundler-specific plugin under Vite. If you're not on\nVite (Webpack, Rollup, esbuild directly), you'll need to configure Monaco's worker loading\nyourself before importing anything from `./editor` — see Monaco's own\n[webpack](https://github.com/microsoft/monaco-editor/tree/main/samples/browser-esm-webpack)\nintegration docs for the general shape of what's needed.\n\n## SSR note\n\n`monacoSetup.ts` imports `monaco-editor` at module scope, which breaks server-side rendering\nif the module is ever evaluated on the server. **Only ever reach `./editor`'s exports via a\ndynamic `import()` inside `onMount` (or an equivalent client-only lifecycle hook), never at\nmodule scope in a server-rendered route/page.** For example:\n\n```svelte\n<script lang=\"ts\">\n\timport { onMount } from 'svelte';\n\timport type { Component } from 'svelte';\n\n\tlet MarkdownEditor = $state<Component<any> | null>(null);\n\tonMount(async () => {\n\t\tMarkdownEditor = (await import('@aibulat/svelte-admin-kit/editor')).MarkdownEditor;\n\t});\n</script>\n\n{#if MarkdownEditor}\n\t<MarkdownEditor value={body} onChange={(v) => (body = v)} />\n{:else}\n\t<textarea bind:value={body}></textarea>\n{/if}\n```\n\n## Theming\n\nComponents ship sensible default styling with **zero required CSS import** — every\n`--sak-*` token has a literal fallback baked into the rule that uses it, so the kit looks\nfinished before you configure anything.\nTo customize, either pass `size`/`strokeWidth`/`color` props directly, or import\n`@aibulat/svelte-admin-kit/styles/theme.css` once at your app root and override its\n`--sak-*`-prefixed custom properties:\n\n```css\n:root {\n\t--sak-icon-size: 1.25rem;\n\t--sak-icon-stroke-width: 1.5;\n}\n```\n\nThe tidiest way to adopt the kit into an app that already has design tokens is to map them\nrather than restate them:\n\n```css\n:root {\n\t--sak-primary-bg: var(--btn-primary-bg);\n\t--sak-surface: var(--surface);\n\t--sak-focus-ring: var(--focus-ring);\n}\n```\n\nBecause each mapping is a `var()` reference, a dark theme that redefines `--surface` on the\nsame element updates every `--sak-*` that reads it — you do not need a second block.\n\nThe `--sak-` prefix is deliberate — it avoids colliding with any unprefixed custom properties\n(`--border`, `--surface`, etc.) your own app may already define.\n\n**If you map rather than import, map everything.** An unmapped token silently falls back to the\nkit's own literal, and those literals are a light slate palette — so a gap is invisible in light\nmode and wrong in dark, which is the worst way for it to fail. The kit's own\n`src/tests/themeTokens.test.ts` asserts that `theme.css` lists exactly the tokens the components\nread, in both directions; a consuming app that maps tokens instead of importing that file wants\nthe same assertion over its own stylesheet.\n\n### The auth layer\n\n`Stepper` and `PasswordPolicy` take `variant=\"auth\"`, which switches them onto the\n`--sak-auth-*` family instead of the ordinary app tokens. It exists for the common arrangement\nwhere a sign-in or first-run console has a single dark treatment that does **not** flip with the\ntheme — the panel stays dark in light mode and only the card on top of it changes. That is one\nsurface with its own palette, so it gets its own tokens rather than being expressed as overrides\nof the app ones, which would have to be undone again on every ordinary screen.\n\nSeven tokens dress the panel (`--sak-auth-{line,chip-bg,dim,dot,on,accent,glow}`) and three\ndress the card that sits on it and does flip (`--sak-auth-card-{line,muted,text}`). An app\nwithout such a console never sets `variant=\"auth\"` and never pays for them; `variant` defaults\nto `app`.\n\n### Breakpoints\n\nThere are two, and they are literals at every call site rather than custom properties — a\ncustom property cannot be read inside a `@media` condition, so `@media (max-width: var(--bp))`\nparses and then matches nothing, forever, which is worse than a number.\n\n- **40rem** — the phone breakpoint. `DataTable` swaps its rows for the `card` snippet's\n  `RecordCard`s, and `ColumnListEditor` stacks.\n- **48rem** — `Stepper` rotates to vertical.\n\n`DataTable` renders **both** layouts into the DOM at all times and lets CSS choose. A\n`matchMedia` listener picking one to mount shows the wrong layout for a frame after every\nresize and orientation change, because it fires after the browser has already painted.\n\n### Rich-text toolbar tones\n\nThe editor's toolbar is the one place the kit uses colour to tell controls apart rather than to\nsignal state: each button carries a fixed hue naming the kind of thing it makes, so a row of\ntwenty icons stays scannable. Seven tones — `--sak-rt-tone-{mark,heading,list,code,block,insert,history}`\n— plus a `-dark` twin of each, which the toolbar swaps in as a set when the editor is in dark mode\n(its surface is far darker than a normal card, and the light hues go muddy on it).\n\nThere is no separate \"pressed\" colour to theme: a toggled button tints its own background from\nwhichever tone is in force, so re-pointing the tone is all a consumer has to do.\n\n## Local development (this monorepo)\n\nThis package needs to be built (`svelte-package`) before anything can resolve it, since its\n`exports` map points at compiled `dist/` output rather than at `src/`:\n\n```bash\npnpm --filter @aibulat/svelte-admin-kit build\n```\n\nRun this once after `pnpm install`. While developing against it from another project, run the\nwatcher instead:\n\n```bash\npnpm --filter @aibulat/svelte-admin-kit dev   # svelte-package --watch\n```\n\nWithout it, edits under `packages/svelte-admin-kit/src` silently have no effect on a consuming\napp, because the `exports` map resolves into `dist/` and nothing rebuilds it.\n\nThe other scripts are the repo-standard ones:\n\n```bash\npnpm --filter @aibulat/svelte-admin-kit typecheck   # svelte-check\npnpm --filter @aibulat/svelte-admin-kit test        # vitest run\npnpm --filter @aibulat/svelte-admin-kit lint        # prettier --check . && eslint .\n```\n\n## Roadmap\n\nNot yet included, planned for later:\n\n- **Nav** (desktop + mobile header navigation) — needs a generic `NavGroup`/`NavLink`\n  prop-driven API in place of the app's hardcoded route/permission structure.\n- **DB topology diagrams** (`@xyflow/svelte`-based) — flagged as a near-rewrite, not a\n  straightforward lift, since the current implementation hardcodes MariaDB-specific\n  semantics throughout.\n\n### Deliberately out of scope\n\nNot \"not yet\" — these were considered and declined, so that the question does not get\nreopened by default:\n\n- **A data grid.** `DataTable` is markup plus a header; it is not on a path toward sorting,\n  virtualisation or column resizing. An app that needs those wants a grid library, and\n  wrapping one here would make this package's dependency graph hostage to that vendor.\n- **Charts.** A chart kit is a multi-week design problem (scales, axes, legends, responsive\n  viewBox, a11y) whose output would compete with existing libraries. The reusable part of a\n  hand-rolled chart is its scale helpers, which belong to the app.\n- **CRUD screens.** The list/create/edit/delete screen looks like the biggest duplication in\n  any admin app, and it is — but it is duplication of _data fetching and translation_, both of\n  which this package is forbidden to contain. That abstraction belongs on the app side.\n","readmeFilename":"README.md"}