{"site":{"name":"Rahman Resources","shortName":"rmnr","description":"Dual-framework Next.js/React + SvelteKit/Svelte vertical-slice catalog with Convex, npm and Bun install paths. Copy-first. Production-grade.","tagline":"Rahman's dual-framework slice library for Next.js and SvelteKit.","url":"https://resource.rahmanef.com","repo":"https://github.com/rahmanef63/resource-site","author":"Rahman","authorUrl":"https://rahmanef.com","links":{"github":"https://github.com/rahmanef63/resource-site","rahmanefCom":"https://rahmanef.com","cescadesigns":"https://cescadesigns.com"}},"stack":[{"group":"Frameworks","name":"Next.js 16","url":"https://nextjs.org/docs","detail":"Default full-app renderer: App Router, React Server Components and Cache Components."},{"group":"Frameworks","name":"React 19","url":"https://react.dev","detail":"Default component runtime for the Next.js distribution."},{"group":"Frameworks","name":"SvelteKit 2","url":"https://svelte.dev/docs/kit","detail":"Native application framework for explicit SvelteKit scaffolds and slice distributions."},{"group":"Frameworks","name":"Svelte 5","url":"https://svelte.dev/docs/svelte/overview","detail":"Runes, snippets and modern event syntax; no legacy Svelte syntax in new distributions."},{"group":"Shared foundation","name":"TypeScript","url":"https://www.typescriptlang.org","detail":"Strict portable cores are shared across renderers wherever framework-neutral code is possible."},{"group":"Shared foundation","name":"Tailwind CSS 4","url":"https://tailwindcss.com","detail":"CSS-first tokens and utility styling for both Next.js and SvelteKit hosts."},{"group":"Shared foundation","name":"Convex","url":"https://docs.convex.dev","detail":"Backend/data layer. Slice Convex roots stay renderer-independent and install with either framework."},{"group":"Shared foundation","name":"convex-svelte","url":"https://docs.convex.dev/client/svelte/overview","detail":"Official Svelte client adapter for reactive queries, mutations/actions and SvelteKit integration."},{"group":"Shared foundation","name":"@convex-dev/auth","url":"https://labs.convex.dev/auth","detail":"React uses the official adapter; Svelte auth surfaces inject the framework-neutral AuthFlow instead of faking an undocumented adapter."},{"group":"UI libraries","name":"shadcn/ui","url":"https://ui.shadcn.com","detail":"React/Next host primitives. Renderer-specific dependencies are declared per slice."},{"group":"UI libraries","name":"Native Svelte components","url":"https://svelte.dev/docs","detail":"Svelte distributions are native .svelte surfaces over shared cores; they do not pull React shadcn by accident."},{"group":"UI libraries","name":"Lucide","url":"https://lucide.dev","detail":"React slices use lucide-react where needed; Svelte slices use @lucide/svelte or renderer-free glyphs."},{"group":"Package managers","name":"npm","url":"https://docs.npmjs.com","detail":"Supported for init, dependency installation, shadcn execution and slice installation."},{"group":"Package managers","name":"Bun","url":"https://bun.sh","detail":"First-class bun.lock detection plus bun install, bun add and bunx command generation."},{"group":"Delivery","name":"@sveltejs/adapter-node","url":"https://svelte.dev/docs/kit/adapter-node","detail":"SvelteKit production adapter used by the fresh Svelte scaffold for Node/Dokploy self-hosting."},{"group":"Delivery","name":"Dokploy","url":"https://dokploy.com","detail":"Self-hosted production deployment target used by the reference site."}],"features":[{"title":"Vertical-Slice Architecture","description":"Each feature owns its config, page, views, components, settings, agent, and Convex mirror. Add or remove a feature by adding or removing one folder."},{"title":"Copy-First Flow","description":"Never greenfield. Every artifact comes from a proven source project (internal kitab-core, rahmanef.com, cescadesigns, notion-clone). Edit imports, ship."},{"title":"shadcn-only UI","description":"All components are shadcn primitives or composed from them. ResponsiveDialog, DateField, FileUpload — no raw HTML buttons or dialogs."},{"title":"audit-bp Gated","description":"Best-practice auditor pulls latest Next 16 / React 19 / Convex docs via Context7 before scoring. Score ≥80 to ship."},{"title":"Dokploy in One Command","description":"si-coder skill creates the GitHub repo, pushes, configures Dokploy, sets DNS, and triggers deploy. Zero human involvement."},{"title":"Self-hosted Convex + @convex-dev/auth","description":"No Clerk. Self-hosted Convex backend in the same docker-compose. Postgres-backed for prod."},{"title":"Auto-generated Slice Docs","description":"Per-slice DEPS.md, CONTRACT.md, STATUS.md, USAGE.md generated from imports + defineFeature config."},{"title":"Cookbook + Recipes","description":"8 layout variants and 8 feature drop-ins (block editor, command palette, db views, comments, ...) ready to mount."}],"counts":{"total":72,"slice":72,"template":0,"layout":0,"infrastructure":28},"infrastructure":[{"id":"github.repository","provider":"github","fieldKey":"repository","label":"Repository","purpose":"Source-of-truth repository for this project.","secretClassification":"public","inherit":"project","automation":"assisted","docsUrl":"https://docs.github.com/en/repositories","actionUrl":"https://github.com/"},{"id":"github.account_token","provider":"github","fieldKey":"account_token","label":"Fine-grained personal access token","purpose":"Reusable GitHub identity for repository automation.","secretClassification":"secret","inherit":"workspace","automation":"assisted","docsUrl":"https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens","actionUrl":"https://github.com/settings/personal-access-tokens"},{"id":"vercel.project","provider":"vercel","fieldKey":"project","label":"Vercel project","purpose":"Frontend deployment target.","secretClassification":"public","inherit":"project","automation":"assisted","docsUrl":"https://vercel.com/docs/projects/overview","actionUrl":"https://vercel.com/dashboard"},{"id":"vercel.team_id","provider":"vercel","fieldKey":"team_id","label":"Team ID","purpose":"Disambiguates a Vercel project owned by a team.","secretClassification":"public","inherit":"workspace","automation":"assisted","docsUrl":"https://vercel.com/docs/accounts","actionUrl":"https://vercel.com/dashboard"},{"id":"vercel.access_token","provider":"vercel","fieldKey":"access_token","label":"Vercel access token","purpose":"Reusable server-side Vercel identity.","secretClassification":"secret","inherit":"workspace","automation":"assisted","docsUrl":"https://vercel.com/docs/rest-api/reference/welcome#authentication","actionUrl":"https://vercel.com/account/tokens"},{"id":"convex.team_id","provider":"convex","fieldKey":"team_id","label":"Convex team ID","purpose":"Stable team scope for Convex Management API operations.","secretClassification":"public","inherit":"workspace","automation":"assisted","docsUrl":"https://docs.convex.dev/management-api/overview","actionUrl":"https://dashboard.convex.dev/t/abdurrahman-fakhrul/settings/access-tokens"},{"id":"convex.team_access_token","provider":"convex","fieldKey":"team_access_token","label":"Convex team access token","purpose":"Reusable Management API authority for projects, deployments, and custom-domain orchestration.","secretClassification":"secret","inherit":"workspace","automation":"automatic","docsUrl":"https://docs.convex.dev/platform-apis/overview","actionUrl":"https://dashboard.convex.dev/t/abdurrahman-fakhrul/settings/access-tokens"},{"id":"convex.project","provider":"convex","fieldKey":"project","label":"Convex project","purpose":"Backend project identity inside the owning Convex team.","secretClassification":"public","inherit":"project","automation":"assisted","docsUrl":"https://docs.convex.dev/dashboard/deployments/deployment-settings","actionUrl":"https://dashboard.convex.dev/"},{"id":"convex.deployment","provider":"convex","fieldKey":"deployment","label":"Production deployment","purpose":"Specific Convex production deployment used by this project.","secretClassification":"public","inherit":"project","automation":"assisted","docsUrl":"https://docs.convex.dev/dashboard/deployments/deployment-settings","actionUrl":"https://dashboard.convex.dev/"},{"id":"convex.deploy_key","provider":"convex","fieldKey":"deploy_key","label":"Production deploy key","purpose":"Deployment-scoped authority used by CI/Vercel/CLI to push Convex code.","secretClassification":"secret","inherit":"project","automation":"automatic","docsUrl":"https://docs.convex.dev/production/hosting/vercel","actionUrl":"https://dashboard.convex.dev/"},{"id":"convex.custom_cloud_domain","provider":"convex","fieldKey":"custom_cloud_domain","label":"Convex function/API custom domain","purpose":"Custom hostname used for Convex function/API traffic and optionally as the canonical CONVEX_CLOUD_URL.","secretClassification":"public","inherit":"project","automation":"automatic","docsUrl":"https://docs.convex.dev/production/custom-domains","actionUrl":"https://dashboard.convex.dev/"},{"id":"convex.custom_site_domain","provider":"convex","fieldKey":"custom_site_domain","label":"Convex HTTP Actions custom domain","purpose":"Custom hostname for Convex HTTP Actions and optionally the canonical CONVEX_SITE_URL used by auth callbacks/issuers.","secretClassification":"public","inherit":"project","automation":"automatic","docsUrl":"https://docs.convex.dev/production/custom-domains","actionUrl":"https://dashboard.convex.dev/"},{"id":"cloudflare.api_token","provider":"cloudflare","fieldKey":"api_token","label":"Cloudflare API token","purpose":"Reusable Cloudflare identity for validating zones and assisting with project DNS record changes.","secretClassification":"secret","inherit":"workspace","automation":"assisted","docsUrl":"https://developers.cloudflare.com/fundamentals/api/get-started/create-token/","actionUrl":"https://dash.cloudflare.com/profile/api-tokens"},{"id":"cloudflare.dns_records","provider":"cloudflare","fieldKey":"dns_records","label":"DNS records","purpose":"Routes public/custom domains and proves ownership.","secretClassification":"public","inherit":"project","automation":"automatic","docsUrl":"https://developers.cloudflare.com/dns/manage-dns-records/","actionUrl":"https://dash.cloudflare.com/"},{"id":"hostinger.api_token","provider":"hostinger","fieldKey":"api_token","label":"Hostinger API token","purpose":"Reusable Hostinger API identity for validating account access and assisting with DNS changes in Hostinger-managed zones.","secretClassification":"secret","inherit":"workspace","automation":"assisted","docsUrl":"https://developers.hostinger.com/","actionUrl":"https://hpanel.hostinger.com/profile/api"},{"id":"hostinger.dns_records","provider":"hostinger","fieldKey":"dns_records","label":"DNS records","purpose":"Routes public/custom domains and proves ownership in Hostinger-managed zones.","secretClassification":"public","inherit":"project","automation":"automatic","docsUrl":"https://support.hostinger.com/en/articles/1583227-how-to-manage-dns-records","actionUrl":"https://hpanel.hostinger.com/"},{"id":"google_cloud.project_id","provider":"google_cloud","fieldKey":"project_id","label":"GCP project ID","purpose":"Google Cloud namespace used for OAuth/API configuration.","secretClassification":"public","inherit":"workspace","automation":"manual","docsUrl":"https://cloud.google.com/resource-manager/docs/creating-managing-projects","actionUrl":"https://console.cloud.google.com/cloud-resource-manager"},{"id":"google_cloud.oauth_client_id","provider":"google_cloud","fieldKey":"oauth_client_id","label":"OAuth client ID","purpose":"Public identifier for Google OAuth sign-in.","secretClassification":"public","inherit":"project","automation":"manual","docsUrl":"https://developers.google.com/identity/protocols/oauth2/web-server","actionUrl":"https://console.cloud.google.com/auth/clients"},{"id":"google_cloud.oauth_client_secret","provider":"google_cloud","fieldKey":"oauth_client_secret","label":"OAuth client secret","purpose":"Confidential credential for Google OAuth server-side exchange.","secretClassification":"secret","inherit":"project","automation":"manual","docsUrl":"https://developers.google.com/identity/protocols/oauth2/web-server","actionUrl":"https://console.cloud.google.com/auth/clients"},{"id":"google_cloud.redirect_uri","provider":"google_cloud","fieldKey":"redirect_uri","label":"Authorized redirect URI","purpose":"Allowlist for the server-side OAuth callback.","secretClassification":"public","inherit":"project","automation":"manual","docsUrl":"https://developers.google.com/identity/protocols/oauth2/web-server#creatingcred","actionUrl":"https://console.cloud.google.com/auth/clients"},{"id":"google_cloud.javascript_origin","provider":"google_cloud","fieldKey":"javascript_origin","label":"Authorized JavaScript origin","purpose":"Allowlist for browser origins participating in Google OAuth.","secretClassification":"public","inherit":"project","automation":"manual","docsUrl":"https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow#creatingcred","actionUrl":"https://console.cloud.google.com/auth/clients"},{"id":"doku.payment_client_id","provider":"doku","fieldKey":"payment_client_id","label":"DOKU payment Client ID","purpose":"Merchant identifier used by DOKU Checkout/Direct API requests.","secretClassification":"sensitive","inherit":"workspace","automation":"assisted","docsUrl":"https://developers.doku.com/get-started-with-doku-api/retrieve-payment-credential","actionUrl":"https://dashboard.doku.com/bo/developer/api-keys"},{"id":"doku.payment_secret_key","provider":"doku","fieldKey":"payment_secret_key","label":"DOKU payment Secret Key","purpose":"HMAC signing secret for DOKU payment API requests.","secretClassification":"secret","inherit":"workspace","automation":"assisted","docsUrl":"https://developers.doku.com/get-started-with-doku-api/retrieve-payment-credential","actionUrl":"https://dashboard.doku.com/bo/developer/api-keys"},{"id":"doku.payment_environment","provider":"doku","fieldKey":"payment_environment","label":"DOKU payment environment","purpose":"Chooses DOKU Sandbox or Production API base without changing payment logic.","secretClassification":"public","inherit":"project","automation":"manual","docsUrl":"https://developers.doku.com/accept-payments/doku-checkout/integration-guide","actionUrl":"https://dashboard.doku.com/"},{"id":"doku.payment_notification_url","provider":"doku","fieldKey":"payment_notification_url","label":"DOKU Payment Notification URL","purpose":"Receives authoritative server-to-server payment status notifications.","secretClassification":"public","inherit":"project","automation":"assisted","docsUrl":"https://developers.doku.com/accept-payments/doku-checkout/integration-guide","actionUrl":"https://dashboard.doku.com/"},{"id":"doku.mcp_endpoint","provider":"doku","fieldKey":"mcp_endpoint","label":"DOKU MCP endpoint","purpose":"Streamable HTTP endpoint used by an AI/MCP client to call DOKU payment tools.","secretClassification":"public","inherit":"project","automation":"automatic","docsUrl":"https://developers.doku.com/accept-payments/doku-mcp-server","actionUrl":"https://developers.doku.com/accept-payments/doku-mcp-server"},{"id":"doku.mcp_client_id","provider":"doku","fieldKey":"mcp_client_id","label":"DOKU MCP Client ID","purpose":"DOKU merchant/brand identifier supplied to the MCP server.","secretClassification":"sensitive","inherit":"workspace","automation":"assisted","docsUrl":"https://developers.doku.com/accept-payments/doku-mcp-server","actionUrl":"https://developers.doku.com/accept-payments/doku-mcp-server"},{"id":"doku.mcp_api_key","provider":"doku","fieldKey":"mcp_api_key","label":"DOKU MCP API Key","purpose":"Private API key authenticating DOKU MCP requests.","secretClassification":"secret","inherit":"workspace","automation":"assisted","docsUrl":"https://developers.doku.com/accept-payments/doku-mcp-server","actionUrl":"https://developers.doku.com/accept-payments/doku-mcp-server"}],"resources":[{"source":"slice","slug":"ai-core","title":"AI Core Kit","description":"Shared UI + helper substrate for the ai-* slice cluster (lifted from models-rahmanef-com). Ships the ResponsiveDialog/ConfirmDialog overlay primitive (+ useConfirm), SectionErrorBoundary, a light/dark useTheme hook, fmt/ago/dt formatters, and a provider-agnostic ConvexError renderer (errData/ErrorLine/FRIENDLY). React-only, no Convex, no shadcn — the lightweight no-shadcn dialog variant. Foundation the byok/workspaces/memory/combos/scheduled-agents/channels slices import via @/features/ai-core.","category":"ui","tags":["ui","dialog","theme","error-state","no-shadcn","ai"],"href":"/slices/ai-core","install":"npx rahman-resources add ai-core"},{"source":"slice","slug":"image-editor","title":"Image Editor — layered raster editor","description":"Framework-parity layered raster editor. React/Next remains default with react-konva; native Svelte 5/SvelteKit uses Konva directly over the same document/layer model, unified doc+paint history, command registry, project IO, masks, adjustments/styles, background removal and stage export semantics. Svelte includes move/transform, brush/eraser/mask painting, eyedropper, zoom/pan, text/shape/paint/adjustment layers, layers/properties panels, image/project IO, background removal, export and optional host-injected AI with no React/Next/react-konva/Lucide/shadcn/FilePicker/agent runtime.","category":"os","tags":["image-editor","photoshop","canvas","konva","layers","filters","background-removal","paint","ai","ui","svelte","framework-parity"],"href":"/slices/image-editor","previewPath":"/preview/slices/image-editor","install":"npx rahman-resources add image-editor"},{"source":"slice","slug":"reel-editor","title":"Reel — video timeline editor","description":"Framework-parity in-browser video editor. React/Next remains default with the existing resizable workspace; native Svelte 5/SvelteKit reuses the same immutable composition model, observable undo/redo history, Canvas-2D draw path shared by preview and WebM export, MediaCache/audio graph, keyframes/transitions, AI edit transforms, local draft/settings, filesystem seam and realtime MediaRecorder exporter. The Svelte renderer covers playback, layered timeline, track controls, clip inspector, local/sample/filesystem import, AI commands, keyboard shortcuts, autosave/settings and WebM export without React/Next/Lucide React/shadcn/Sonner/resizable-panels/agent runtime.","category":"os","tags":["video","video-editor","timeline","nle","keyframes","transitions","webm","canvas","ui","svelte","framework-parity"],"href":"/slices/reel-editor","previewPath":"/preview/slices/reel-editor","install":"npx rahman-resources add reel-editor"},{"source":"slice","slug":"media-viewer","title":"Preview — media quick-look","description":"A quick-look media viewer in the macOS Preview spirit. Images render on a zoomable (40–300%) checkerboard stage so transparency reads; audio gets a card player with a CSS-bar waveform + transport; video gets play/pause + scrubber + volume; PDFs embed full-bleed and text gets a simple surface. The toolbar carries a type-indicator chip, zoom, Download, Open-in-editor, and prev/next. Two framework-neutral integration seams in lib/host-core.ts make it portable: configureMediaSource maps fs paths to fetchable URLs (identity by default, so public URLs work with zero wiring) and configureMediaOpener routes the Open-in-editor handoff (image → design-studio, video/audio → reel-editor) to your shell — both inert until set. Launched bare it shows a fully offline sample gallery (inline SVG gradients, simulated A/V playback). Pairs with file-explorer (onOpenFile → MediaViewer payload) and the editors.","category":"os","tags":["media","preview","viewer","quick-look","image","video","audio","pdf","ui"],"href":"/slices/media-viewer","previewPath":"/preview/slices/media-viewer","install":"npx rahman-resources add media-viewer"},{"source":"slice","slug":"code-editor","title":"Code — overlay syntax editor","description":"Framework-parity lightweight code editor over one observable editor/filesystem core. React/Next remains default with appshell inspector + automatic tool registration; native Svelte 5/SvelteKit adds explorer, tabs, overlay syntax editing, create/save, status, payload-open handoff, and optional host tool registration over the exact same CodeFsAdapter, writable mock FS, buffers, dirty/save state, highlighter, and tool semantics. Writes stay best-effort — read-only hosts keep the local buffer and surface the failed remote save.","category":"os","tags":["code","editor","syntax-highlight","ide","tabs","file-tree","ui","svelte","framework-parity"],"href":"/slices/code-editor","previewPath":"/preview/slices/code-editor","install":"npx rahman-resources add code-editor"},{"source":"slice","slug":"system-monitor","title":"System Monitor — host telemetry dashboard","description":"Activity-Monitor-style host telemetry dashboard with React/Next as the default distribution and native Svelte 5/SvelteKit gauges, sparklines, and responsive process UI over one injected telemetry adapter + rolling history core. Polling stays at 1.5s with ~40 CPU/network points; zero-backend mock and host live adapter remain supported.","category":"os","tags":["monitoring","telemetry","dashboard","gauges","sparkline","processes","ui"],"href":"/slices/system-monitor","previewPath":"/preview/slices/system-monitor","install":"npx rahman-resources add system-monitor"},{"source":"slice","slug":"booking","title":"Booking — session request form + owner inbox","description":"One app that is BOTH a public 'book a session' request form AND the owner's triage inbox — it flips to show the inbox when the viewer can manage. Visitors submit name/email/topic (+ optional preferred time / note); the owner sees pending requests with Confirm / Decline. The backend is INJECTED via a small BookingAdapter (submit/list/setStatus/canManage): point configureBooking at your store, or keep the bundled in-memory mock so it renders fully interactive — form + inbox — with zero backend.","category":"os","tags":["booking","contact","form","inbox","lead","scheduling","ui"],"href":"/slices/booking","previewPath":"/preview/slices/booking","install":"npx rahman-resources add booking"},{"source":"slice","slug":"html-studio","title":"HTML Studio — sandboxed HTML/CSS/JS editor with live preview","description":"Sandboxed HTML/CSS/JS studio with one framework-neutral document store, mock/live HtmlStudioAdapter, device/view helpers, starter document, share helpers, and exact opaque-origin iframe sandbox contract. React/Next remains the default Lucide + shadcn renderer; Svelte 5/SvelteKit gets native Code/Split/Preview, responsive/tablet/phone preview, 250ms live srcdoc, Save/open/delete list, public/private visibility, copy-link and payload-slug flows over the same core.","category":"os","tags":["html","editor","sandbox","iframe","preview","playground","code","ui"],"href":"/slices/html-studio","previewPath":"/preview/slices/html-studio","install":"npx rahman-resources add html-studio"},{"source":"slice","slug":"resources-launcher-admin","title":"Resources Admin — curated icon-launcher CRUD","description":"Owner-gated curated launcher CRUD over one framework-neutral ResourcesAdapter/core. React/Next remains the default Lucide + shadcn surface; Svelte 5/SvelteKit gets native add/edit/remove/reorder UI over the same mock/live adapter, resource model, icon-name catalog, normalization, sorting, and permission state. Backend wiring stays injected through configureResources (list/upsert/remove/canManage).","category":"os","tags":["launcher","links","bookmarks","admin","crud","icons","ui"],"href":"/slices/resources-launcher-admin","previewPath":"/preview/slices/resources-launcher-admin","install":"npx rahman-resources add resources-launcher-admin"},{"source":"slice","slug":"profile","title":"Profile — CV + identity card","description":"One owner identity in two renderings over one framework-neutral configured-data seam. React/Next remains the default with printable Resume + AboutProfile/appshelly descriptors; Svelte 5/SvelteKit adds native resume/card surfaces over the exact same ResumeProfile/AboutProfile models, placeholder data, configure/read seams, initials, links, FAQ, and Print/PDF behavior.","category":"os","tags":["resume","cv","profile","portfolio","about","identity","bio","card","links","faq","print","ui"],"href":"/slices/profile","previewPath":"/preview/slices/profile","install":"npx rahman-resources add profile"},{"source":"slice","slug":"start-here","title":"Start Here — guided OS onboarding tour","description":"A guided 'Start Here' tour that lays the OS out as a path of stages, each stage opening real apps from the LIVE registry — drift-proof, it reads the injected app catalog instead of a hardcoded list, so adding an app surfaces it automatically (in a stage if listed, else a final 'Everything else' bucket). The catalog, the open(id) callback, and the stage journey are INJECTED via a small StartHereAdapter (apps / open / stages): point configureStartHere at your live app registry + window opener, or keep the bundled in-memory mock (a few generic apps + 3 stages) so the welcome tour renders fully alive with zero host.","category":"os","tags":["onboarding","tour","welcome","launcher","guide","os","ui"],"href":"/slices/start-here","previewPath":"/preview/slices/start-here","install":"npx rahman-resources add start-here"},{"source":"slice","slug":"os-terminal","title":"Terminal — shell emulator with live passthrough + PTY seam","description":"Framework-parity terminal shell: React/Next remains default and explicit SvelteKit gets native Svelte 5 exec + PTY UI over the same command dispatcher, mock filesystem, live TerminalOsApi, SSE PTY transport, and agentic tools. Mock mode needs zero backend; configureTerminal enables real fs/exec/sys and configurePty injects an interactive transport + VT renderer. Both host-wiring seams are observable after mount.","category":"os","tags":["terminal","shell","cli","emulator","exec","pty","svelte","framework-parity","ui"],"href":"/slices/os-terminal","previewPath":"/preview/slices/os-terminal","install":"npx rahman-resources add os-terminal"},{"source":"slice","slug":"assistant","title":"Assistant — agent workspace with streaming chat","description":"Framework-parity agent workspace with streaming chat, tool-calling, and a local library of agents, skills, and ordered automations. React/Next remains default; native Svelte 5/SvelteKit reuses the same observable localStorage store, preset data, persona/history builder, demo stream fallback, global tool registry, shared runAgentLoop function-calling core, static/live tool catalog, and automation semantics. No backend or model key is bundled: configureAgentStream injects the consumer model bridge. Svelte carries no React/Next/shadcn/use-agent-tools runtime.","category":"os","tags":["ai","assistant","chat","agents","streaming","automations","tool-calling","ui","svelte","framework-parity"],"href":"/slices/assistant","previewPath":"/preview/slices/assistant","install":"npx rahman-resources add assistant"},{"source":"slice","slug":"browser","title":"Browser — remote headless-browser chrome","description":"Framework-parity remote-browser chrome. React/Next remains default with Lucide/shadcn chrome, appshell descriptor, inspector seam, and automatic tool registration. Native Svelte 5/SvelteKit adds the same multitab strip, omnibar URL/search, bookmarks/history, remote-frame click/type/key/scroll forwarding, screenshot save, AI activity log, live/poll badge, and mode gate over one shared BrowserAdapter/session/screencast/storage/url/tool core. Unwired, the canvas demo renderer still works offline. Real configureBrowser/configureScreencast routes must be authenticated/authorized like SSH because remote pages can hold logged-in sessions.","category":"os","tags":["browser","headless","playwright","remote","omnibar","bookmarks","ui","svelte","framework-parity"],"href":"/slices/browser","previewPath":"/preview/slices/browser","install":"npx rahman-resources add browser"},{"source":"slice","slug":"app-store","title":"App Store — install, create + toggle apps","description":"Framework-parity App Store + Create App. React/Next remains the default storefront with Lucide/shadcn chrome, appshell-style dynamic descriptors, and automatic shared-agent tool registration. Explicit Svelte 5/SvelteKit adds native storefront, built-in app/feature toggles, custom-app authoring, sandboxed HTML runtime apps, and command-console runtime apps over the same observable localStorage app registry, disabled-set store, curated catalog, exec adapter, manifest helpers, and self-contained appStoreTools. New built-ins stay enabled by default because only disabled ids persist; command execution is host-injected and uses a safe demo echo until wired.","category":"os","tags":["app-store","registry","installer","dynamic-apps","launcher","ui","svelte","framework-parity"],"href":"/slices/app-store","previewPath":"/preview/slices/app-store","install":"npx rahman-resources add app-store"},{"source":"slice","slug":"file-explorer","title":"File Explorer — Tree + CRUD + Preview + Properties","description":"Framework-parity backend-neutral file explorer. React/Next remains default; native Svelte 5/SvelteKit covers location sidebar, back/forward + breadcrumbs, grid/list sorting, multi-select, create/rename/move/copy/cut/paste/trash/delete, drag/drop upload, image/audio/video/PDF/text preview, editable body + metadata properties, storage usage, and optional function-calling tools over the same FileExplorerAdapter. Bundled mock/live/structural-Convex adapters are shared; Svelte carries no React/Next/Lucide React/shadcn/FilePicker/agent runtime.","category":"os","tags":["files","file-manager","explorer","tree","breadcrumb","crud","sidebar","ui","svelte","framework-parity"],"href":"/slices/file-explorer","previewPath":"/preview/slices/file-explorer","install":"npx rahman-resources add file-explorer"},{"source":"slice","slug":"glass-desktop","title":"Lucent Desktop","description":"Interactive dark-glass desktop with two spaces and a catalog-driven widget canvas. The React/Next default keeps its specialized widget renderers; the native Svelte 5/SvelteKit distribution uses the same 47-widget catalog, default seed, grid packer, layout mutations, and LayoutStore persistence contract with a native data-driven renderer. Both frameworks support add/remove/resize/move, edit mode, space switching, reset, persistence, and a full widget gallery. Consumer branding and storage are injected through props; no project-specific URLs, roles, or credentials are embedded.","category":"os","tags":["shell","desktop","widgets","glass","os","layout","local-storage"],"href":"/slices/glass-desktop","previewPath":"/preview/slices/glass-desktop","install":"npx rr add glass-desktop"},{"source":"slice","slug":"appshell","title":"AppShell — Desktop + Mobile OS Shell","description":"Generic, brand-free OS-style shell framework. One <AppShell manifest> wrapper provider gives a project a macOS-style window manager (drag/snap/maximize, dock, menu bar, Spotlight) AND an iOS-style mobile surface (home pager, app library, control center, widgets), driven entirely by a manifest: brand, apps, features, surface regions, capabilities, persistence, keymap. Five shell features (search, inspector, notifications, control-center, widgets) are bundled as defineFeature() contributions inside the slice and mount via named <Slot>s. Responsiveness is a single ResponsiveProvider + 4 DRY primitives (AppFrame, MasterDetail, ResponsiveToolbar, TouchList). Imports nothing project-specific — the consumer injects data/auth/AI through manifest.capabilities. Lifted from os-vps (Topside).","category":"os","tags":["shell","window-manager","desktop","mobile","responsive","framework","ui"],"href":"/slices/appshell","previewPath":"/preview/slices/appshell","install":"npx rahman-resources add appshell"},{"source":"slice","slug":"convex-auth","title":"Convex Auth — Multi-Provider Sign-in","description":"Framework-parity Convex Auth: React/Next keeps the official @convex-dev/auth React adapter; Svelte 5/SvelteKit gets native AuthCard + SignInPage over the same labels, validation and framework-neutral AuthFlow. Because @convex-dev/auth exposes React/Next adapters but no Svelte adapter, Svelte production wiring injects AuthFlow explicitly rather than emulating undocumented session internals. Backend Password, Anonymous, Google OAuth and Resend magic-link stay unchanged.","category":"auth","tags":["auth","convex","password","magic-link","google","anonymous","no-clerk","pbkdf2","svelte","framework-parity"],"href":"/slices/convex-auth","previewPath":"/preview/slices/convex-auth","install":"npm i @convex-dev/auth @auth/core resend lucide-react"},{"source":"slice","slug":"payment","title":"Payment — Indonesia PSP (DOKU · Midtrans)","description":"Framework-parity Indonesia payment providers behind one slug and one provider-discriminated Convex data model. React/Next remains default; Svelte 5/SvelteKit adds native DOKU hosted/direct/status/instructions and Midtrans checkout/orders surfaces over shared contracts/tools. CLI 1.18 scopes provider runtime deps + backend actions: doku installs no provider npm SDK and only DOKU env/action; midtrans adds midtrans-client + Midtrans env/action; add-all receives the union. HMAC/signature verification, webhook idempotency, amount validation, and provider secrets stay server-side.","category":"integrations","tags":["payment","checkout","indonesia","doku","midtrans","snap","qris","virtual-account","ewallet","psp","svelte","framework-parity"],"href":"/slices/payment","previewPath":"/preview/slices/payment","install":""},{"source":"slice","slug":"resend-newsletter","title":"Resend — Transactional & Newsletter","description":"Truthful single-opt-in newsletter slice with adapter-backed React/Next and native Svelte 5 subscribe forms, a self-contained Convex subscriber/issue backend, public unsubscribe, host-authorized list/send adapters, and internal Resend campaign workers. The public preview stays unconfigured so it cannot mutate data or send email.","category":"integrations","tags":["email","newsletter","resend","broadcast","svelte"],"href":"/slices/resend-newsletter","previewPath":"/preview/slices/resend-newsletter","install":"npm i resend"},{"source":"slice","slug":"ai-workspace","title":"AI Workspace — chat · studio · agents","description":"Framework-parity AI workspace with chat, studio, and agents variants. React/Next remains default; native Svelte 5/SvelteKit mirrors all three over shared chat/generation/runner/tool cores. Variant installs are exact: only chat pulls convex/features/aiChat + ai + @ai-sdk/anthropic + ANTHROPIC_API_KEY; studio and agents remain frontend-only and provider-free.","category":"ai","tags":["ai","ai:chatbot","ai:studio","ai:agent","agent-mode","tool-calls","streaming","generation","async","traces","multimodal","svelte","framework-parity","variant-gated"],"href":"/slices/ai-workspace","previewPath":"/preview/slices/ai-workspace","install":"npx rr add ai-workspace <chat|studio|agents> [--framework sveltekit]"},{"source":"slice","slug":"ai-admin","title":"AI Admin — Contract","description":"Framework-neutral compile-time contract for a future AI administration surface. Ships provider/model/skill/tool/agent/budget/audit types plus tab, icon-name, and permission taxonomy; intentionally no renderer, persistence backend, or runtime framework dependency.","category":"ai","tags":["ai","admin","contract","types","taxonomy","headless"],"href":"/slices/ai-admin","install":"npx rr add ai-admin"},{"source":"slice","slug":"ai-router","title":"AI Router — OpenRouter Tier Proxy","description":"Authenticated tier-routed LLM access through one Convex action and OpenRouter. Ships a transport-injected ChatFab: React/Next remains default and SvelteKit gets native Svelte 5 UI over the same request/result core and the same aiUsage backend. Unconfigured hosts return an explicit notice instead of a fake reply.","category":"ai","tags":["ai","llm","openrouter","tier-routing","chat"],"href":"/slices/ai-router","previewPath":"/preview/slices/ai-router","install":"npx rr add ai-router"},{"source":"slice","slug":"vector-search","title":"Vector Search — Adapter Contract","description":"Framework-neutral semantic-search adapter contract. The host injects VectorSearchCtx for query/index/reindex and owns the actual vector backend, embeddings, credentials, persistence, authorization, and reindex policy; RR ships no renderer or Convex schema for this slice.","category":"data","tags":["search","vector","embeddings","adapter","headless","portable"],"href":"/slices/vector-search","install":"npx rahman-resources add vector-search"},{"source":"slice","slug":"cal-com-booking","title":"Cal.com Booking","description":"Cal.com inline booking UI with a real Convex webhook mirror. React/Next stays default via @calcom/embed-react; SvelteKit uses native Svelte 5 over the shared vanilla embed loader. The bundled backend mirrors webhook events into the real bookings table; list/cancel/reschedule remain host-injected tool adapters.","category":"data","tags":["data","scheduling","cal-com","bookings","webhook","svelte"],"href":"/slices/cal-com-booking","previewPath":"/preview/slices/cal-com-booking","install":"npm i @calcom/embed-react"},{"source":"slice","slug":"command-menu","title":"Command Menu","description":"Portable command palette + generic search modal. React/Next remains the default cmdk/shadcn UI while Svelte 5/SvelteKit adds native palette/search surfaces over the same framework-neutral group, hotkey, MRU history, filtering, selection, label, and search-state core.","category":"ui","tags":["ui","palette","cmd-k","navigation","keyboard","search","notion-like"],"href":"/slices/command-menu","previewPath":"/preview/slices/command-menu","install":"npm i cmdk"},{"source":"slice","slug":"motion-primitives","title":"Motion Primitives (8)","description":"Eight ready-to-style motion components: marquee, kinetic-heading, magnetic, cursor-spotlight, stat-counter, reading-progress, grain, lightbox. Framer-Motion-powered, tree-shakeable. Facade slice — pulls from template-base/frontend/slices/motion-primitives.","category":"ui","tags":["ui","motion","animation","marquee","framer-motion"],"href":"/slices/motion-primitives","previewPath":"/preview/slices/motion-primitives","install":"npm i framer-motion"},{"source":"slice","slug":"responsive-dialog","title":"Responsive Dialog (Sheet ↔ Modal)","description":"ResponsiveDialog — auto-switches between bottom Sheet (mobile) and centered Dialog (desktop) at the md breakpoint. Same API as shadcn Dialog. Kitab forbids raw <dialog>; use this everywhere. Facade slice — pulls from template-base/frontend/slices/responsive-dialog.","category":"ui","tags":["ui","dialog","modal","sheet","responsive","primitive"],"href":"/slices/responsive-dialog","previewPath":"/preview/slices/responsive-dialog","install":""},{"source":"slice","slug":"dashboard-shell","title":"Dashboard Shell — one responsive shell + mobile dock","description":"One responsive dashboard chrome over one nav SSOT. React/Next remains the default shadcn rail + topbar + mobile dock/tile-drawer distribution. Explicit Svelte 5/SvelteKit adds native DashboardShell, DashboardSidebar, MobileDock, and MobileMenuDrawer over the same framework-neutral active-path, dock-derivation, and active-title core; Svelte uses `$app/state`, `$derived`, keyed lists, snippets, and CSS breakpoints with no React/Lucide/Vaul/shadcn runtime dependency.","category":"ui","tags":["ui","layout","dashboard","sidebar","dock","responsive","shell"],"href":"/slices/dashboard-shell","previewPath":"/preview/slices/dashboard-shell","install":""},{"source":"slice","slug":"full-width-toggle","title":"Full Width Toggle","description":"Page-container width preference with contained, wide, and full modes. Persists per device in localStorage, synchronizes same-tab and cross-tab changes, and ships a toggle plus container wrapper. React/Next remains the default distribution; Svelte 5 / SvelteKit is available explicitly with --framework sveltekit.","category":"ui","tags":["ui","layout","preference","localstorage","dashboard"],"href":"/slices/full-width-toggle","previewPath":"/preview/slices/full-width-toggle","install":"npx rr add full-width-toggle"},{"source":"slice","slug":"three-column","title":"Three-Column Layout — Sidebar/Content/Inspector","description":"ThreeColumnLayoutAdvanced — collapsible left/right + resizable widths + responsive breakpoints + PanelSection compound (Header/Items/Footer) + per-panel footer slots. Models shadcn sidebar API for the panel interior. Pair with PanelGroup/PanelMenu/PanelSeparator primitives. Trigger ≠ header (V-wave separation rule).","category":"ui","tags":["ui","layout","three-column","sidebar","inspector","panel-section","responsive","resizable"],"href":"/slices/three-column","previewPath":"/preview/three-column-trio","install":""},{"source":"slice","slug":"broadcast-channel-sync","title":"BroadcastChannel — Cross-tab Sync","description":"Same-origin cross-tab + cross-iframe state sync via BroadcastChannel API. Tiny, no backend, no install.","category":"data","tags":["realtime","cross-tab","broadcast-channel","demo-pattern"],"href":"/slices/broadcast-channel-sync","previewPath":"/preview/slices/broadcast-channel-sync","install":"// no install — Web Platform API"},{"source":"slice","slug":"rbac-roles","title":"RBAC — Roles & Permissions","description":"RBAC engine ported from superspace. 6 system role presets (owner/admin/manager/staff/client/guest with levels), dot-namespaced permissions with `*` / `feature.*` wildcard matching, and pure check helpers (resolvePermissions / hasPermission / roleHasPermission). Props-driven UI primitives: <PermissionGate>, usePermissions, <RoleBadge>, <PermissionMatrix>. Convex template ships a tenant-scoped rbac_roles table + checkPermission / requirePermission helpers + idempotent seedSystemRoles, with a PLATFORM_ADMIN_EMAILS superadmin bypass. Pair with `user-management` for the members / invites / roles-admin UI. @convex-dev/auth aware — no Clerk.","category":"auth","tags":["rbac","auth","permissions","roles","authorization","no-clerk","convex"],"href":"/slices/rbac-roles","previewPath":"/preview/slices/rbac-roles","install":"npx rahman-resources add rbac-roles"},{"source":"slice","slug":"user-management","title":"User Management","description":"Framework-parity user administration for members, hierarchy-aware invites, custom roles, teams, and the cross-tenant access matrix. React/Next remains the default shadcn renderer; native Svelte 5/SvelteKit reuses the same framework-neutral types, RBAC checks, members query/sort core, agent tools, and Convex backend. Authorization stays server-side in the bundled permission-gated Convex functions.","category":"auth","tags":["user-management","members","rbac","auth","team","admin","convex","no-clerk","svelte","framework-parity"],"href":"/slices/user-management","previewPath":"/preview/slices/user-management","install":"npx rahman-resources add user-management"},{"source":"slice","slug":"admin-panel","title":"Admin Panel — Unified Product Admin","description":"17-section admin surface (events, funnels, attribution, users, A/B, flags, pricing, CMS, email, audit, ...) gated by RBAC. Auto-filters sidebar by tier (solo/influencer/organization) and user permissions. Single backend resolver (getMyAdminAccess) mirrors frontend gate so UI can never leak.","category":"infra","tags":["admin","owner","platform","rbac","instrumentation","panel"],"href":"/slices/admin-panel","previewPath":"/preview/slices/admin-panel","install":"npx rahman-resources add admin-panel"},{"source":"slice","slug":"event-tracking","title":"Analytics","description":"Framework-neutral analytics instrumentation contract. The host injects an EventTrackingCtx transport for event emit, guarded event queries, and funnel reads; the canonical slice ships no renderer or storage backend.","category":"data","tags":["events","analytics","instrumentation","portable","headless"],"href":"/slices/event-tracking","install":"npx rahman-resources add event-tracking"},{"source":"slice","slug":"icon-picker","title":"Icon Picker","description":"Framework-parity emoji + Lucide + Phosphor picker. React/Next remains default; native Svelte 5/SvelteKit keeps the same stored-value contract, curated catalogs, search, 10-color tint, recents, Twemoji/native preference, random/clear, keyboard grid navigation, and smart popover-to-dialog fallback over shared framework-neutral stores/handlers. React uses lucide-react + @phosphor-icons/react/shadcn; Svelte uses @lucide/svelte + phosphor-svelte and carries no React/Next/shadcn/agent runtime.","category":"ui","tags":["icon","emoji","lucide","phosphor","picker","twemoji","notion","responsive","svelte","framework-parity"],"href":"/slices/icon-picker","previewPath":"/preview/slices/icon-picker","install":"npx rahman-resources add icon-picker"},{"source":"slice","slug":"activity","title":"Activity — public productivity log","description":"Public-facing weekly activity log. Lists user-facing activities grouped by ISO week with schema.org-friendly markup, designed to maximise SEO so the question 'what is <person> working on this week?' lands here. Convex-backed (schema + queries + unauthenticated mutations); MCP-friendly so AI workflows (Claude / GPT / custom agents) can append entries directly. All user-facing copy + per-category labels + date/time locale are prop-driven (English defaults). Lifted 2026-05-27 from rahmanef.com; 225-LOC view split into view + 2 sub-components + 4 lib helpers for the 200-LOC cap; Indonesian strings + custom primitives stripped; cross-slice auth import dropped (consumer wraps mutations).","category":"data","tags":["activity","productivity","log","now-page","feed","mcp","seo","personal-brand"],"href":"/slices/activity","install":"npx rahman-resources add activity"},{"source":"slice","slug":"rate-limit","title":"Rate Limit","description":"Backend-only Convex per-key request counter with atomic consume, server-owned namespace policy, optional server-key gate, and bounded cron pruning. The copied runtime/config/tool source is framework-neutral TypeScript: React/Next remains the default contract while explicit Svelte/SvelteKit installs reuse the same source with no duplicate UI or framework runtime dependency.","category":"infra","tags":["infra","rate-limit","convex","backend","throttle"],"href":"/slices/rate-limit","install":"npx rahman-resources add rate-limit"},{"source":"slice","slug":"testimonials","title":"Testimonials","description":"Framework-neutral testimonials backend: bounded public list/get, server-authorized admin CRUD, and internal seed. React/Next remains the default distribution contract; explicit Svelte/SvelteKit installs reuse the same TypeScript + Convex source without invented UI.","category":"content","tags":["content","testimonials","convex","backend","marketing"],"href":"/slices/testimonials","previewPath":"/preview/slices/testimonials","install":"npx rahman-resources add testimonials"},{"source":"slice","slug":"services","title":"Services","description":"Framework-neutral service-offerings backend: bounded public list/get, server-authorized admin CRUD, and internal seed. React/Next remains the default distribution contract; explicit Svelte/SvelteKit installs reuse the same TypeScript + Convex source without invented UI.","category":"content","tags":["content","services","convex","backend","marketing","agency"],"href":"/slices/services","previewPath":"/preview/slices/services","install":"npx rahman-resources add services"},{"source":"slice","slug":"create-your-mcp","title":"Create Your MCP","description":"Framework-parity MCP/OAuth integration: React/Next remains the default admin UI and adapter, while explicit SvelteKit installs native Svelte 5 admin UI plus SvelteKit handler factories over the same OAuth 2.1 + PKCE, JSON-RPC, Convex token backend, scope enforcement, and static MCP_API_KEY fallback. Shared HTTP behavior uses Web Request/Response primitives; host adapters stay thin.","category":"ai","tags":["ai","mcp","oauth","pkce","chatgpt","claude","cursor","convex","integration","svelte","framework-parity"],"href":"/slices/create-your-mcp","previewPath":"/preview/slices/create-your-mcp","install":"npx rahman-resources add create-your-mcp"},{"source":"slice","slug":"contact-form-resend","title":"Contact Form + Resend","description":"Contact form posting to Resend email API. Server Action + Zod input validation. Convex mutation for storage + Resend send.","category":"integrations","tags":["form","email","resend","convex"],"href":"/slices/contact-form-resend","previewPath":"/preview/slices/contact-form-resend","install":"npx rahman-resources add contact-form-resend"},{"source":"slice","slug":"admin","title":"Admin — generic shell + composed console","description":"Framework-parity access-gated admin surfaces behind one slug. React/Next remains default; native Svelte 5/SvelteKit provides shell + console over the same access rules, 26-section catalog, mock contracts, ?section= deep-link semantics, registry stats core, and Convex backends. shell is the generic AdminPage + buildAdminStats surface over convex/features/admin. console is the composed 26-section AdminConsole with five owned sections and host-injected peer panels over convex/features/admin_console. Svelte injects provider panels as snippets and imports no React/Lucide/shadcn. Variant installs keep backend and env gating exact.","category":"infra","tags":["infra","admin","console","shell","dashboard","composition","rbac","access-gate","registry","svelte","framework-parity"],"href":"/slices/admin","previewPath":"/preview/slices/admin","install":"npx rahman-resources add admin"},{"source":"slice","slug":"platform-admin","title":"Platform Admin — Control Plane Contract","description":"Framework-neutral privileged control-plane tool contract. The host injects metrics, feature-flag, and tenant-tier operations through PlatformAdminCtx and owns auth, authorization, tenancy, persistence, and audit enforcement; the canonical slice ships no renderer or Convex schema.","category":"infra","tags":["infra","admin","control-plane","headless","portable"],"href":"/slices/platform-admin","install":"npx rahman-resources add platform-admin"},{"source":"slice","slug":"audit-log","title":"Audit Log — Workspace Events","description":"Backend-only audit event recorder with framework-neutral TypeScript. createAuditLogger injects tenant/actor identity and preserves action/entity/diff/metadata/IP/user-agent evidence through host bindings; read-only query/export tools remain server-gated. React/Next stays the default contract while explicit Svelte/SvelteKit installs reuse the same source with no duplicate UI or framework runtime dependency.","category":"infra","tags":["infra","audit","compliance","logging"],"href":"/slices/audit-log","previewPath":"/preview/slices/audit-log","install":"npx rahman-resources add audit-log"},{"source":"slice","slug":"comments","title":"Comments — Threaded","description":"Polymorphic-target threaded comments. Consumer picks `TargetRef = { kind, id, subId? }` (e.g. page+block, blog+slug, task+id). Reply nesting is real: `parentId` end-to-end + `buildThread(flat) → CommentNode[]` tree (oldest-first, orphan-safe). Renderless <CommentsThread> + <CommentsAnchor> wrappers; useComments(bindings, opts) returns items + `tree` + openCount + CRUD + forbiddenWords guard. Adapter pattern — see contract-negotiations §1.","category":"content","tags":["content","social","comments","threaded","annotations"],"href":"/slices/comments","previewPath":"/preview/slices/comments","install":"npx rahman-resources add comments"},{"source":"slice","slug":"seo","title":"SEO — AI Metadata Generator","description":"Service slice for SEO metadata generation — Anthropic-backed action with per-user 24h cost guard + portable persona prop. No public route. Backend exposes generate + generateAndApply mutations gated by requireAdmin; consumers inject brand voice via the personaContext arg (or buildSeoSystemPrompt factory).","category":"content","tags":["content","seo","ai","anthropic","metadata-generator"],"href":"/slices/seo","previewPath":"/preview/slices/seo","install":"npx rahman-resources add seo"},{"source":"slice","slug":"publisher-clean-html","title":"Publisher — clean HTML","description":"A framework-neutral clean-HTML engine with schema-typed escaping/sanitization, CSS deduplication, inline-style guards and deterministic CSP planning. React/Next remains the default preview distribution; Svelte/SvelteKit adds a native sandboxed preview while reusing all 16 canonical TypeScript core files through verified sharedFiles, so the renderer and security spine are not forked. Richtext/SVG sanitization remains injectable and fail-closed without a configured DOMPurify runtime. Stateless, env-free, no Convex.","category":"content","tags":["content","publisher","html","static-export","sanitization","csp","css-dedup","render"],"href":"/slices/publisher-clean-html","previewPath":"/preview/slices/publisher-clean-html","install":"npx rahman-resources add publisher-clean-html"},{"source":"slice","slug":"content-loops","title":"Content Loops","description":"A data-source-driven repeater harvested from the Instatic CMS base.loop engine, decoupled from its publisher / page-tree / entryStack machinery into a plain React slice. Register pluggable LoopEntitySource backends (each declares display fields + an async fetch returning { items, totalItems }); drop <ContentLoop source|sourceId filters orderBy variants={[A, B]} /> to render one component per item, round-robining items across variants so alternating / featured layouts need no per-item branching. Ships a namespaced source registry (ids must be 'ns.name', so consumer sources can't shadow each other), createMockLoopSource for env-free previews + tests, and none/infinite pagination via useLoopPagination (a shadcn Load more button accumulates pageSize chunks). LoopItem.fields is a generic resolved-value bag — variants read item.fields.title directly, no second lookup. UI-only: no Convex tables shipped; point a source's fetch at Convex/REST when you have a backend. First slice of the feature-harvest ULTRAPLAN (docs/feature-harvest) and a dependency of the planned site-templates-engine + visual-page-canvas.","category":"content","tags":["content","loop","repeater","list","data-source","pagination","variants"],"href":"/slices/content-loops","previewPath":"/preview/slices/content-loops","install":"npx rahman-resources add content-loops"},{"source":"slice","slug":"markdown","title":"Markdown — page container with CRUD tabs + diagrams","description":"Framework-parity Markdown page container with Read / Write / Review surfaces over one shared parser, inline tokenizer, comment model, tab model, snippet registry, list grouping and chart-spec parser. React keeps the existing shadcn/Lucide UI, lazy Mermaid/KaTeX and lazy Recharts canvas. Svelte 5/SvelteKit ships native controls and native SVG bar/line/area/pie charts, so it needs only svelte + katex + mermaid and never pulls React/Lucide/shadcn/Recharts. Both render headings, lists/todos, GitHub-style callouts, fenced code, Mermaid, chart fences, KaTeX, tables, images, toggles and inline marks. Same grammar as the notion blocksToMarkdown / markdownToBlocks bridge; no store or Convex required.","category":"content","tags":["content","markdown","reader","editor","review","comments","mermaid","chart","rich-text","docs","notion-sync"],"href":"/slices/markdown","previewPath":"/preview/slices/markdown","install":"npx rahman-resources add markdown"},{"source":"slice","slug":"notion-app","title":"Notion App — Block Editor","description":"Framework-parity Notion-style block editor. React/Next remains default with dnd-kit/shadcn and rich optional host capabilities; native Svelte 5/SvelteKit reuses the same page/block model, EditorDataAdapter CRUD seam, markdown bridge, block catalog/history semantics, and notion tool collection for title + block CRUD, slash/markdown transforms, todo/list/headings/quote/callout/code/equation/media/table/toggle/layout blocks, reorder, undo/redo, Markdown import/export and child pages without React/Next/dnd-kit/Lucide/shadcn/Sonner runtime.","category":"content","tags":["content","notion","editor","block-editor","rich-text","slash-menu","drag-drop","adapter-seam"],"href":"/slices/notion-app","install":"npx rahman-resources add notion-app"},{"source":"slice","slug":"sections","title":"Sections — composable marketing/landing sections","description":"Canonical landing composition with one framework-neutral reducer, LandingStore adapter, ordering helpers, editor field schema, types, seed factory, and safe config parser. React/Next remains the default distribution and is now self-contained (local CRUD/motion/section-head; no template-shared or Next Link dependency). Explicit Svelte 5/SvelteKit installs native LandingProvider, LandingView, LandingEditorView, LandingSectionShell, StatsSection, TestimonialsSection, FaqSection, PricingSection, NewsletterSection, and CustomSection over the same core. v0.5.0 also fixes the previously broken installer source path from frontend/slices/landing-sections to frontend/slices/sections.","category":"content","tags":["admin","landing","cms","sections","crud","renderer","svelte","framework-parity"],"href":"/slices/sections","install":"npx rahman-resources add sections"},{"source":"slice","slug":"motion-kit","title":"Motion Kit — scroll reveals, carousel, accordion, micro-interactions","description":"Framework-parity motion primitives over one shared observer/easing/CSS core. React/Next remains the default distribution with Embla React + Radix; Svelte 5/SvelteKit adds native Reveal, Stagger, CountUp, Marquee, Embla-core Carousel, and accessible Accordion without React/Lucide/Radix runtime leakage. Reveal/count/marquee/accordion motion is reduced-motion aware, the Svelte carousel explicitly destroys its Embla instance on unmount, and globals-motion.css stays the single style contract.","category":"ui","tags":["ui","motion","animation","scroll","reveal","carousel","accordion","marquee","countup","embla","svelte"],"href":"/slices/motion-kit","previewPath":"/preview/slices/motion-kit","install":"npx rahman-resources add motion-kit"},{"source":"slice","slug":"storefront-checkout","title":"Storefront Checkout — guest cart + checkout composition","description":"Guest-friendly persisted cart with one framework-neutral cart store. React/Next keeps CartProvider + shadcn/Lucide CartWidget/CheckoutSummary; Svelte/SvelteKit ships a native store, cart sheet, and checkout summary over the same quantity, localStorage, count/subtotal, IDR-format and agent-tool semantics. Client prices remain display-only: the host MUST re-price every line server-side before creating payment. Optional payment peer owns the actual payment step.","category":"content","tags":["ecommerce","cart","checkout","guest","storefront","payment","localStorage","sheet"],"href":"/slices/storefront-checkout","previewPath":"/preview/slices/storefront-checkout","install":"npx rahman-resources add storefront-checkout"},{"source":"slice","slug":"theme-presets","title":"Theme Presets — unified switcher with bundled tweakcn registry","description":"Runtime tweakcn color presets with React/Next kept as the default distribution and native Svelte 5/SvelteKit provider, switcher, site-default-save, display-mode, and theme-color adapters over one shared preset engine. Visitor choice resolves above site default above host default; registry-data.json stays bundled and lazy-loaded; grouping, swatches, CSS injection, persistence, preview/restore, and agent tools remain one framework-neutral source. React display mode uses next-themes; Svelte uses a browser-native light/dark/system adapter.","category":"ui","tags":["ui","theme","tweakcn","color","preset","switcher","popover","next-themes","svelte","sveltekit"],"href":"/slices/theme-presets","previewPath":"/preview/slices/theme-presets","install":"npx rahman-resources add theme-presets"},{"source":"slice","slug":"site-setup-wizard","title":"Site Setup Wizard — first-run site setup","description":"Post-claim onboarding wizard for clone-to-own templates. React/Next remains the default UI while Svelte 5/SvelteKit gets a native Identitas / Branding / Konten / Selesai flow over one framework-neutral step, field, preset, validation, save-payload and agent-tool core. Host callbacks still own save, seed, upload and theme-preview behavior; no backend is invented. Branding keeps grouped preset swatches, live preview, brand color/mode, optional logo/favicon upload and Analytics ID.","category":"ui","tags":["ui","onboarding","wizard","setup","first-run","branding","theme","clone-to-own","templates"],"href":"/slices/site-setup-wizard","previewPath":"/preview/slices/site-setup-wizard","install":"npx rahman-resources add site-setup-wizard"},{"source":"slice","slug":"file-upload","title":"File Upload — pluggable upload + URL resolver with storage-adapter contract","description":"Host-pluggable file upload + URL resolution with React/Next kept as the default distribution and an additive Svelte 5/SvelteKit implementation. Both preserve FileRef parsing, upload/remove behavior, file chips, upload controls, demo localStorage storage, and bounded file tools. React adapters keep useUrl(); Svelte adapters use resolveUrl() plus optional subscribeUrl() so framework hook semantics stay isolated.","category":"data","tags":["data","upload","files","storage","adapter","portable","notion-like"],"href":"/slices/file-upload","previewPath":"/preview/slices/file-upload","install":"npx rahman-resources add file-upload"},{"source":"slice","slug":"selection","title":"Selection — marquee multi-select + bulk actions","description":"Framework-agnostic multi-selection for any vertical list (Notion-style blocks, table rows, cards). Hold-and-drag on empty space draws a rubber-band rectangle — AutoCAD-style: drag RIGHT selects only fully-enclosed items (solid ring), drag LEFT selects anything the rectangle touches (dashed green ring). Click an item's edge to select (Shift = range, Cmd/Ctrl = toggle). Selecting activates items with a ring + data-block-selected attribute. Backspace/Delete bulk-deletes, Escape and click-outside clear, and a floating count toolbar offers Delete/Clear. SelectionProvider owns only the id set — the host owns the data via onBulkDelete(ids). Pairs with notion-shell (the notion-clone template wires it onto the editor); lifted from notion-page-clone's block-selection slice.","category":"ui","tags":["ui","selection","marquee","rubber-band","multi-select","bulk","notion","blocks","list"],"href":"/slices/selection","previewPath":"/preview/slices/selection","install":"npx rahman-resources add selection"},{"source":"slice","slug":"notion-ui","title":"Notion UI — page editor · database · sidebar primitives","description":"Framework-parity, props-driven Notion primitives over one shared domain model. React/Next remains default; native Svelte 5/SvelteKit now provides page, database and sidebar variants. Page keeps block CRUD, slash/markdown transforms and native drag reorder; database renders all 11 view kinds over the same filter/sort/formula/aggregate/CSV/JSON engines; sidebar reuses the same tree projection helpers with native drag/reparent. Host owns all data and authorization.","category":"ui","tags":["ui","notion","notion-like","database","table","board","list","gallery","calendar","feed","chart","dashboard","form","map","timeline","gantt","kanban","views","filter","sort","property","files","person","formula","timestamp","unique-id","csv","json","import","export","template","data","backup","primitive","optional","embeddable","svelte","framework-parity"],"href":"/slices/notion-ui","previewPath":"/preview/slices/notion-ui","install":"npx rahman-resources add notion-ui"},{"source":"slice","slug":"image-picker","title":"Image Picker — one-button image/wallpaper chooser (gallery · upload · link · Unsplash · reposition)","description":"Generic image/wallpaper picker — not coupled to Notion. The headline API is ONE button (ImagePickerButton) that opens a dialog with 4 tabs: Gallery (12 colours + 8 gradients + Notion textures), Upload (drag/click, ≤8MB), Link (paste any https image URL), Unsplash (bundled curated landscapes + live search). On pick, onChange fires with an ImageValue ({ type, value, positionY?, metadata? }). ImageBanner is the optional reposition-able band — render an ImageValue as a full-width cover / profile header / card hero with hover controls: Change (opens the dialog), Reposition (drag the vertical focal point), Remove. The slice imports NO other slice and NO backend — the upload backend and Unsplash search are INJECTED as props (onUpload + searchUnsplash), so it drops into any app: wire onUpload to the `files` slice and searchUnsplash to a server route via unsplashSearchVia('/api/unsplash') that holds UNSPLASH_ACCESS_KEY server-side (never NEXT_PUBLIC). Ships a curated Unsplash fallback + gallery so it works with zero config. parseImage normalizes legacy raw-string values; imageStyle builds the focal-point CSS. Wired into the notion-page-clone template as the page cover via NotionPage's coverSlot. React/Next remains the default renderer; native Svelte 5/SvelteKit ships the same picker/dialog/banner behavior over shared portable image semantics.","category":"ui","tags":["ui","image","picker","wallpaper","cover","upload","unsplash","gallery","reposition","files","primitive","portable","dialog"],"href":"/slices/image-picker","previewPath":"/preview/slices/image-picker","install":"npx rahman-resources add image-picker"},{"source":"slice","slug":"workspace-shell","title":"Workspace Shell — atomic (workspace × menuSet) NavContext","description":"Unified workspace + menu navigation primitive. NavContext = (workspaceId, menuSetId) atomic pair. 2-tier dropdown switcher (workspace radio + menuSet picker), ContextBadge header chip, full editor with tabs (menus / workspace tree / settings), tiered RBAC (admin menus.manage, user menus.fork). Replaces silo'd menu-store + workspace-store slices in superspace. Resolver chain: user nav-context cache > user assignment > workspace default > system. Source: superspace.","category":"ui","tags":["ui","navigation","workspace","menu","shell","convex","rbac"],"href":"/slices/workspace-shell","previewPath":"/preview/slices/workspace-shell","install":""},{"source":"slice","slug":"library","title":"Library — resource hub (prompts · visuals · snippets · links)","description":"Grab-bag resource hub. One polymorphic `libraryItems` table holds six kinds — prompt, image, video, link, download, snippet — with per-kind payload fields switched on `kind` (no joins). Attribution-first: every item carries optional source/license/tools so re-shares stay correct. Collections group items. Convex-backed (schema + queries + unauthenticated mutations); SEO override fields reused from the `seo` peer slice so the surface matches blog/projects rows. Public view = filterable card grid + per-item detail with copy-to-clipboard for prompts/snippets and an opt-in upvote control. React/Next remains default; native Svelte 5/SvelteKit renders the same model/default/tool semantics against the same Convex backend. Lifted 2026-05-28 from rahmanef.com; 432-LOC mutations + 330-LOC detail split for the 200-LOC cap; Indonesian copy + custom primitives stripped (prop-driven English defaults); cross-slice auth + comments-votes coupling dropped (consumer wraps mutations + supplies the upvote handler).","category":"data","tags":["library","resources","prompts","snippets","moodboard","downloads","attribution","seo","personal-brand"],"href":"/slices/library","previewPath":"/preview/slices/library","install":"npx rahman-resources add library"},{"source":"slice","slug":"data-table","title":"Data Table — TanStack","description":"Framework-parity DataTable: React/Next stays on TanStack React Table v8 + shadcn, while SvelteKit uses the official Svelte 5 TanStack Table v9 adapter with native semantic controls. Both expose sorting, column-bound filtering, pagination, row selection, column visibility, compact/comfortable density, and shared labels/summary semantics. Pure UI — consumers own data fetching and persistence.","category":"data","tags":["data","table","datagrid","tanstack","sorting","pagination","svelte","framework-parity"],"href":"/slices/data-table","previewPath":"/preview/slices/data-table","install":"npx rahman-resources add data-table"},{"source":"slice","slug":"pages-cms","title":"Pages CMS — block-composed multi-page editor","description":"Framework-parity multi-page CMS over one shared reducer/types/core. React keeps shadcn + Lucide admin surfaces but is now clean-install portable without Next-only imports or repo-only helpers. Svelte 5/SvelteKit adds native PagesView, PageEditorView, all 11 block editors, public renderers, provider and localStorage adapter with no React/Lucide/shadcn leakage. Draft block reordering stays local until Save so unsaved edits are preserved.","category":"content","tags":["content","cms","pages","blocks","editor","builder","basics"],"href":"/slices/pages-cms","previewPath":"/preview/slices/pages-cms","install":"npx rahman-resources add pages-cms"},{"source":"slice","slug":"feedback-states","title":"Feedback States — loading skeletons + empty/error states","description":"Two co-located placeholder surfaces behind one slug. loading: a configurable LoadingSkeleton over the shadcn Skeleton (kind presets text / card / list / table / form / page / block, overridable count + columns) plus a spinner LoadingState (inline / block / overlay) for in-flight work. empty: a configurable EmptyState over the shadcn Empty (404 / 500 / 403 / no-results / empty-list / first-use, overridable icon/title/copy/actions) plus an ErrorPage full-page wrapper for app/not-found.tsx and app/error.tsx. Install one surface with `npx rr add feedback-states loading|empty`, or both with `npx rr add feedback-states`. Replaces ad-hoc animate-pulse divs, hand-rolled Loader2 spans, and one-off error pages.","category":"ui","tags":["loading","skeleton","spinner","empty-state","404","500","403","error-page","fallback","placeholder","basics"],"href":"/slices/feedback-states","previewPath":"/preview/slices/feedback-states","install":"npx rahman-resources add feedback-states"},{"source":"slice","slug":"marketing-chrome","title":"Marketing Chrome — Header + Footer","description":"MarketingHeader (split | centered | minimal layouts, sticky option, mobile sheet menu) + MarketingFooter (columns | slim layouts, link columns, social icons, legal bar). Brand / nav / CTA / columns all props — no hardcoded content. Lucide stand-ins for brand glyphs; swap a brand icon set post-copy (README).","category":"ui","tags":["header","footer","navbar","marketing","navigation","chrome","basics"],"href":"/slices/marketing-chrome","previewPath":"/preview/slices/marketing-chrome","install":"npx rahman-resources add marketing-chrome"},{"source":"slice","slug":"settings","title":"Settings — account + appearance shells","description":"Two settings surfaces behind one slug, each adapter-driven so the slice owns no data. account: SettingsShell two-column surface (nav collapses to a Select on mobile) — Profile (avatar/name/email/bio), Preferences (theme/language/density), Notifications (switch rows), Danger zone (AlertDialog-confirmed delete) over an ASYNC SettingsAdapter { load, save(patch) } with optimistic save + rollback; createMemoryAdapter ships for demos. appearance: AppearancePanel (style/mode/accent/wallpaper/reduce-transparency/display) over a SYNC per-setting AppearanceAdapter, plus the generic SettingsSection / SettingsRow / Segmented / AccentSwatches primitives you compose custom panels from. Install one surface with `npx rr add settings account|appearance`, or both with `npx rr add settings`.","category":"ui","tags":["settings","preferences","account","appearance","theme","adapter","shell","primitives","ui","basics"],"href":"/slices/settings","previewPath":"/preview/slices/settings","install":"npx rahman-resources add settings"},{"source":"slice","slug":"notifications-center","title":"Notifications Center — bell + inbox","description":"Adapter-driven notification inbox with one shared newest-first snapshot/filter/action core. React/Next keeps the shadcn + Lucide bell/list/item UI; Svelte/SvelteKit ships native bell/list/item UI and a Svelte-readable adapter over the same NotificationsAdapter, relative-time, unread, mutation, and agent-tool semantics.","category":"ui","tags":["notifications","inbox","bell","unread","toast","basics"],"href":"/slices/notifications-center","previewPath":"/preview/slices/notifications-center","install":"npx rahman-resources add notifications-center"},{"source":"slice","slug":"design-studio","title":"Design Studio — photo / social design canvas","description":"Framework-parity layered photo/social editor. React/Next remains default; native Svelte 5/SvelteKit covers the same canvas workflow over shared framework-neutral model/document, observable undo/redo, scene, filter/mask, safe-area, serialization, sample-media, and host-adapter cores. Both renderers support image/text/shape/sticker/HTML layers, transforms, masks/custom CSS, presets, keyboard shortcuts, JSON/HTML import-export, and optional host persistence through configureMediaStudio.","category":"os","tags":["canvas","editor","layers","filters","export","design","ui","svelte","framework-parity"],"href":"/slices/design-studio","previewPath":"/preview/slices/design-studio","install":"npx rahman-resources add design-studio"},{"source":"slice","slug":"quicklinks","title":"Quicklinks — website shortcuts with favicons","description":"A website-shortcut grid: add/remove links with auto favicons (Google s2) and new-tab open. State lives behind an injectable QuicklinksStore — createLocalStore persists to localStorage (SSR-safe hydrate), createMemoryStore suits previews/tests, configureQuicklinks swaps in a host store. Pairs with appshell: the useQuickLinks capability + QuicklinkIcon surface the same links in the dock/Launchpad/mobile grid.","category":"os","tags":["shortcuts","bookmarks","favicons","launcher","ui"],"href":"/slices/quicklinks","previewPath":"/preview/slices/quicklinks","install":"npx rahman-resources add quicklinks"}],"slices":[{"slug":"ai-core","title":"AI Core Kit","category":"ui","kind":"ui","version":"0.2.0","description":"Shared UI + helper substrate for the ai-* slice cluster (lifted from models-rahmanef-com). Ships the ResponsiveDialog/ConfirmDialog overlay primitive (+ useConfirm), SectionErrorBoundary, a light/dark useTheme hook, fmt/ago/dt formatters, and a provider-agnostic ConvexError renderer (errData/ErrorLine/FRIENDLY). React-only, no Convex, no shadcn — the lightweight no-shadcn dialog variant. Foundation the byok/workspaces/memory/combos/scheduled-agents/channels slices import via @/features/ai-core.","slicePath":"frontend/slices/ai-core","convexPaths":[],"tags":["ui","dialog","theme","error-state","no-shadcn","ai"],"install":"npx rahman-resources add ai-core","installs":{"next":{"npm":"npx rahman-resources@latest add ai-core","bun":"bunx rahman-resources@latest add ai-core"},"svelte":{"npm":"npx rahman-resources@latest add ai-core --framework sveltekit","bun":"bunx rahman-resources@latest add ai-core --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/ai-core","npm":["lucide-react"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/ai-core-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/ai-core/lib/format.ts","frontend/slices/ai-core/lib/error-core.ts","frontend/slices/ai-core/lib/theme.ts"],"isDefault":false,"mode":"native"}]},{"slug":"image-editor","title":"Image Editor — layered raster editor","category":"os","kind":"ui","version":"2.2.0","description":"Framework-parity layered raster editor. React/Next remains default with react-konva; native Svelte 5/SvelteKit uses Konva directly over the same document/layer model, unified doc+paint history, command registry, project IO, masks, adjustments/styles, background removal and stage export semantics. Svelte includes move/transform, brush/eraser/mask painting, eyedropper, zoom/pan, text/shape/paint/adjustment layers, layers/properties panels, image/project IO, background removal, export and optional host-injected AI with no React/Next/react-konva/Lucide/shadcn/FilePicker/agent runtime.","slicePath":"frontend/slices/image-editor","convexPaths":[],"tags":["image-editor","photoshop","canvas","konva","layers","filters","background-removal","paint","ai","ui","svelte","framework-parity"],"install":"npx rahman-resources add image-editor","installs":{"next":{"npm":"npx rahman-resources@latest add image-editor","bun":"bunx rahman-resources@latest add image-editor"},"svelte":{"npm":"npx rahman-resources@latest add image-editor --framework sveltekit","bun":"bunx rahman-resources@latest add image-editor --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/image-editor","npm":["@imgly/background-removal@^1.7.0","konva@^10.3.0","lucide-react@^1.16.0","react-konva@^19.2.4"],"shadcn":["button","input","label","separator","select","scroll-area","switch","dropdown-menu","tooltip","resizable","popover","slider","tabs"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/image-editor-svelte","npm":["svelte@^5","konva@^10.3.0","@imgly/background-removal@^1.7.0"],"shadcn":[],"sharedFiles":["frontend/slices/image-editor/commands/adjust.commands.ts","frontend/slices/image-editor/commands/document.commands.ts","frontend/slices/image-editor/commands/export.commands.ts","frontend/slices/image-editor/commands/invoke.ts","frontend/slices/image-editor/commands/layer.commands.ts","frontend/slices/image-editor/commands/registry.ts","frontend/slices/image-editor/commands/schema.ts","frontend/slices/image-editor/commands/style.commands.ts","frontend/slices/image-editor/commands/tool.commands.ts","frontend/slices/image-editor/commands/transform.commands.ts","frontend/slices/image-editor/commands/types.ts","frontend/slices/image-editor/lib/assistant-core.ts","frontend/slices/image-editor/lib/bbox.ts","frontend/slices/image-editor/lib/bg-removal.ts","frontend/slices/image-editor/lib/editor-core.ts","frontend/slices/image-editor/lib/export.ts","frontend/slices/image-editor/lib/history-core.ts","frontend/slices/image-editor/lib/konva-helpers.ts","frontend/slices/image-editor/lib/konva-native.ts","frontend/slices/image-editor/lib/mask-core.ts","frontend/slices/image-editor/lib/model.ts","frontend/slices/image-editor/lib/project-core.ts","frontend/slices/image-editor/lib/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/image-editor"},{"slug":"reel-editor","title":"Reel — video timeline editor","category":"os","kind":"ui","version":"1.3.0","description":"Framework-parity in-browser video editor. React/Next remains default with the existing resizable workspace; native Svelte 5/SvelteKit reuses the same immutable composition model, observable undo/redo history, Canvas-2D draw path shared by preview and WebM export, MediaCache/audio graph, keyframes/transitions, AI edit transforms, local draft/settings, filesystem seam and realtime MediaRecorder exporter. The Svelte renderer covers playback, layered timeline, track controls, clip inspector, local/sample/filesystem import, AI commands, keyboard shortcuts, autosave/settings and WebM export without React/Next/Lucide React/shadcn/Sonner/resizable-panels/agent runtime.","slicePath":"frontend/slices/reel-editor","convexPaths":[],"tags":["video","video-editor","timeline","nle","keyframes","transitions","webm","canvas","ui","svelte","framework-parity"],"install":"npx rahman-resources add reel-editor","installs":{"next":{"npm":"npx rahman-resources@latest add reel-editor","bun":"bunx rahman-resources@latest add reel-editor"},"svelte":{"npm":"npx rahman-resources@latest add reel-editor --framework sveltekit","bun":"bunx rahman-resources@latest add reel-editor --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/reel-editor","npm":["lucide-react@^1.16.0","react-resizable-panels@^4.11.1","sonner@^2.0.7"],"shadcn":["button","input","slider","tooltip","dialog","dropdown-menu","resizable","sheet","sonner"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/reel-editor-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/reel-editor/config.ts","frontend/slices/reel-editor/lib/ai-core.ts","frontend/slices/reel-editor/lib/ai-edit.ts","frontend/slices/reel-editor/lib/composition.ts","frontend/slices/reel-editor/lib/draft.ts","frontend/slices/reel-editor/lib/draw-adjust.ts","frontend/slices/reel-editor/lib/draw-text.ts","frontend/slices/reel-editor/lib/draw.ts","frontend/slices/reel-editor/lib/history-core.ts","frontend/slices/reel-editor/lib/host-core.ts","frontend/slices/reel-editor/lib/import-core.ts","frontend/slices/reel-editor/lib/keyframes.ts","frontend/slices/reel-editor/lib/media-audio.ts","frontend/slices/reel-editor/lib/media-cache.ts","frontend/slices/reel-editor/lib/media-probe.ts","frontend/slices/reel-editor/lib/media-sync.ts","frontend/slices/reel-editor/lib/mock-timeline.ts","frontend/slices/reel-editor/lib/render.ts","frontend/slices/reel-editor/lib/settings.ts","frontend/slices/reel-editor/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/reel-editor"},{"slug":"media-viewer","title":"Preview — media quick-look","category":"os","kind":"ui","version":"1.3.0","description":"A quick-look media viewer in the macOS Preview spirit. Images render on a zoomable (40–300%) checkerboard stage so transparency reads; audio gets a card player with a CSS-bar waveform + transport; video gets play/pause + scrubber + volume; PDFs embed full-bleed and text gets a simple surface. The toolbar carries a type-indicator chip, zoom, Download, Open-in-editor, and prev/next. Two framework-neutral integration seams in lib/host-core.ts make it portable: configureMediaSource maps fs paths to fetchable URLs (identity by default, so public URLs work with zero wiring) and configureMediaOpener routes the Open-in-editor handoff (image → design-studio, video/audio → reel-editor) to your shell — both inert until set. Launched bare it shows a fully offline sample gallery (inline SVG gradients, simulated A/V playback). Pairs with file-explorer (onOpenFile → MediaViewer payload) and the editors.","slicePath":"frontend/slices/media-viewer","convexPaths":[],"tags":["media","preview","viewer","quick-look","image","video","audio","pdf","ui"],"install":"npx rahman-resources add media-viewer","installs":{"next":{"npm":"npx rahman-resources@latest add media-viewer","bun":"bunx rahman-resources@latest add media-viewer"},"svelte":{"npm":"npx rahman-resources@latest add media-viewer --framework sveltekit","bun":"bunx rahman-resources@latest add media-viewer --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/media-viewer","npm":["lucide-react"],"shadcn":["button","badge","separator","tooltip","slider"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/media-viewer-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/media-viewer/lib/host-core.ts","frontend/slices/media-viewer/lib/media.ts","frontend/slices/media-viewer/lib/remote.ts","frontend/slices/media-viewer/lib/samples.ts","frontend/slices/media-viewer/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/media-viewer"},{"slug":"code-editor","title":"Code — overlay syntax editor","category":"os","kind":"ui","version":"1.3.0","description":"Framework-parity lightweight code editor over one observable editor/filesystem core. React/Next remains default with appshell inspector + automatic tool registration; native Svelte 5/SvelteKit adds explorer, tabs, overlay syntax editing, create/save, status, payload-open handoff, and optional host tool registration over the exact same CodeFsAdapter, writable mock FS, buffers, dirty/save state, highlighter, and tool semantics. Writes stay best-effort — read-only hosts keep the local buffer and surface the failed remote save.","slicePath":"frontend/slices/code-editor","convexPaths":[],"tags":["code","editor","syntax-highlight","ide","tabs","file-tree","ui","svelte","framework-parity"],"install":"npx rahman-resources add code-editor","installs":{"next":{"npm":"npx rahman-resources@latest add code-editor","bun":"bunx rahman-resources@latest add code-editor"},"svelte":{"npm":"npx rahman-resources@latest add code-editor --framework sveltekit","bun":"bunx rahman-resources@latest add code-editor --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/code-editor","npm":["lucide-react@^0.400.0"],"shadcn":["button","badge","input","textarea","scroll-area","sheet","dialog"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/code-editor-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/code-editor/config.ts","frontend/slices/code-editor/lib/editor-core.ts","frontend/slices/code-editor/lib/fs-core.ts","frontend/slices/code-editor/lib/highlight.ts","frontend/slices/code-editor/lib/mock-fs.ts","frontend/slices/code-editor/lib/seed.ts","frontend/slices/code-editor/lib/tools.ts","frontend/slices/code-editor/lib/util.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/code-editor"},{"slug":"system-monitor","title":"System Monitor — host telemetry dashboard","category":"os","kind":"ui","version":"1.3.0","description":"Activity-Monitor-style host telemetry dashboard with React/Next as the default distribution and native Svelte 5/SvelteKit gauges, sparklines, and responsive process UI over one injected telemetry adapter + rolling history core. Polling stays at 1.5s with ~40 CPU/network points; zero-backend mock and host live adapter remain supported.","slicePath":"frontend/slices/system-monitor","convexPaths":[],"tags":["monitoring","telemetry","dashboard","gauges","sparkline","processes","ui"],"install":"npx rahman-resources add system-monitor","installs":{"next":{"npm":"npx rahman-resources@latest add system-monitor","bun":"bunx rahman-resources@latest add system-monitor"},"svelte":{"npm":"npx rahman-resources@latest add system-monitor --framework sveltekit","bun":"bunx rahman-resources@latest add system-monitor --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/system-monitor","npm":["lucide-react@^0.400.0"],"shadcn":["scroll-area"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/system-monitor-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/system-monitor/lib/core.ts","frontend/slices/system-monitor/lib/format.ts","frontend/slices/system-monitor/lib/palette.ts","frontend/slices/system-monitor/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/system-monitor"},{"slug":"booking","title":"Booking — session request form + owner inbox","category":"os","kind":"ui","version":"1.1.0","description":"One app that is BOTH a public 'book a session' request form AND the owner's triage inbox — it flips to show the inbox when the viewer can manage. Visitors submit name/email/topic (+ optional preferred time / note); the owner sees pending requests with Confirm / Decline. The backend is INJECTED via a small BookingAdapter (submit/list/setStatus/canManage): point configureBooking at your store, or keep the bundled in-memory mock so it renders fully interactive — form + inbox — with zero backend.","slicePath":"frontend/slices/booking","convexPaths":[],"tags":["booking","contact","form","inbox","lead","scheduling","ui"],"install":"npx rahman-resources add booking","installs":{"next":{"npm":"npx rahman-resources@latest add booking","bun":"bunx rahman-resources@latest add booking"},"svelte":{"npm":"npx rahman-resources@latest add booking --framework sveltekit","bun":"bunx rahman-resources@latest add booking --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/booking","npm":["lucide-react"],"shadcn":["button","input","textarea","scroll-area"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/booking-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/booking"},{"slug":"html-studio","title":"HTML Studio — sandboxed HTML/CSS/JS editor with live preview","category":"os","kind":"ui","version":"1.1.1","description":"Sandboxed HTML/CSS/JS studio with one framework-neutral document store, mock/live HtmlStudioAdapter, device/view helpers, starter document, share helpers, and exact opaque-origin iframe sandbox contract. React/Next remains the default Lucide + shadcn renderer; Svelte 5/SvelteKit gets native Code/Split/Preview, responsive/tablet/phone preview, 250ms live srcdoc, Save/open/delete list, public/private visibility, copy-link and payload-slug flows over the same core.","slicePath":"frontend/slices/html-studio","convexPaths":[],"tags":["html","editor","sandbox","iframe","preview","playground","code","ui"],"install":"npx rahman-resources add html-studio","installs":{"next":{"npm":"npx rahman-resources@latest add html-studio","bun":"bunx rahman-resources@latest add html-studio"},"svelte":{"npm":"npx rahman-resources@latest add html-studio --framework sveltekit","bun":"bunx rahman-resources@latest add html-studio --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/html-studio","npm":["lucide-react@^0.400.0"],"shadcn":["button","input","textarea","scroll-area"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/html-studio-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/html-studio/lib/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/html-studio"},{"slug":"resources-launcher-admin","title":"Resources Admin — curated icon-launcher CRUD","category":"os","kind":"ui","version":"1.1.1","description":"Owner-gated curated launcher CRUD over one framework-neutral ResourcesAdapter/core. React/Next remains the default Lucide + shadcn surface; Svelte 5/SvelteKit gets native add/edit/remove/reorder UI over the same mock/live adapter, resource model, icon-name catalog, normalization, sorting, and permission state. Backend wiring stays injected through configureResources (list/upsert/remove/canManage).","slicePath":"frontend/slices/resources-launcher-admin","convexPaths":[],"tags":["launcher","links","bookmarks","admin","crud","icons","ui"],"install":"npx rahman-resources add resources-launcher-admin","installs":{"next":{"npm":"npx rahman-resources@latest add resources-launcher-admin","bun":"bunx rahman-resources@latest add resources-launcher-admin"},"svelte":{"npm":"npx rahman-resources@latest add resources-launcher-admin --framework sveltekit","bun":"bunx rahman-resources@latest add resources-launcher-admin --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/resources-launcher-admin","npm":["lucide-react@^0.400.0"],"shadcn":["button","input","label","scroll-area","native-select"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/resources-launcher-admin-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/resources-launcher-admin/lib/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/resources-launcher-admin"},{"slug":"profile","title":"Profile — CV + identity card","category":"os","kind":"ui","version":"1.1.0","description":"One owner identity in two renderings over one framework-neutral configured-data seam. React/Next remains the default with printable Resume + AboutProfile/appshelly descriptors; Svelte 5/SvelteKit adds native resume/card surfaces over the exact same ResumeProfile/AboutProfile models, placeholder data, configure/read seams, initials, links, FAQ, and Print/PDF behavior.","slicePath":"frontend/slices/profile","convexPaths":[],"tags":["resume","cv","profile","portfolio","about","identity","bio","card","links","faq","print","ui"],"install":"npx rahman-resources add profile","installs":{"next":{"npm":"npx rahman-resources@latest add profile","bun":"bunx rahman-resources@latest add profile"},"svelte":{"npm":"npx rahman-resources@latest add profile --framework sveltekit","bun":"bunx rahman-resources@latest add profile --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/profile","npm":["lucide-react@^0.400.0"],"shadcn":["button","scroll-area","avatar"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/profile-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/profile/lib/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/profile"},{"slug":"start-here","title":"Start Here — guided OS onboarding tour","category":"os","kind":"ui","version":"1.0.0","description":"A guided 'Start Here' tour that lays the OS out as a path of stages, each stage opening real apps from the LIVE registry — drift-proof, it reads the injected app catalog instead of a hardcoded list, so adding an app surfaces it automatically (in a stage if listed, else a final 'Everything else' bucket). The catalog, the open(id) callback, and the stage journey are INJECTED via a small StartHereAdapter (apps / open / stages): point configureStartHere at your live app registry + window opener, or keep the bundled in-memory mock (a few generic apps + 3 stages) so the welcome tour renders fully alive with zero host.","slicePath":"frontend/slices/start-here","convexPaths":[],"tags":["onboarding","tour","welcome","launcher","guide","os","ui"],"install":"npx rahman-resources add start-here","installs":{"next":{"npm":"npx rahman-resources@latest add start-here","bun":"bunx rahman-resources@latest add start-here"},"svelte":{"npm":"npx rahman-resources@latest add start-here --framework sveltekit","bun":"bunx rahman-resources@latest add start-here --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/start-here","npm":["lucide-react"],"shadcn":["button","scroll-area"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/start-here-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/start-here"},{"slug":"os-terminal","title":"Terminal — shell emulator with live passthrough + PTY seam","category":"os","kind":"ui","version":"1.3.1","description":"Framework-parity terminal shell: React/Next remains default and explicit SvelteKit gets native Svelte 5 exec + PTY UI over the same command dispatcher, mock filesystem, live TerminalOsApi, SSE PTY transport, and agentic tools. Mock mode needs zero backend; configureTerminal enables real fs/exec/sys and configurePty injects an interactive transport + VT renderer. Both host-wiring seams are observable after mount.","slicePath":"frontend/slices/os-terminal","convexPaths":[],"tags":["terminal","shell","cli","emulator","exec","pty","svelte","framework-parity","ui"],"install":"npx rahman-resources add os-terminal","installs":{"next":{"npm":"npx rahman-resources@latest add os-terminal","bun":"bunx rahman-resources@latest add os-terminal"},"svelte":{"npm":"npx rahman-resources@latest add os-terminal --framework sveltekit","bun":"bunx rahman-resources@latest add os-terminal --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/os-terminal","npm":["lucide-react@^0.400.0"],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/os-terminal-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/os-terminal/config.ts","frontend/slices/os-terminal/lib/commands.ts","frontend/slices/os-terminal/lib/commands-fs.ts","frontend/slices/os-terminal/lib/fs-model.ts","frontend/slices/os-terminal/lib/host-core.ts","frontend/slices/os-terminal/lib/host-mock.ts","frontend/slices/os-terminal/lib/tools.ts","frontend/slices/os-terminal/lib/use-pty.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/os-terminal"},{"slug":"assistant","title":"Assistant — agent workspace with streaming chat","category":"os","kind":"ui","version":"1.2.0","description":"Framework-parity agent workspace with streaming chat, tool-calling, and a local library of agents, skills, and ordered automations. React/Next remains default; native Svelte 5/SvelteKit reuses the same observable localStorage store, preset data, persona/history builder, demo stream fallback, global tool registry, shared runAgentLoop function-calling core, static/live tool catalog, and automation semantics. No backend or model key is bundled: configureAgentStream injects the consumer model bridge. Svelte carries no React/Next/shadcn/use-agent-tools runtime.","slicePath":"frontend/slices/assistant","convexPaths":[],"tags":["ai","assistant","chat","agents","streaming","automations","tool-calling","ui","svelte","framework-parity"],"install":"npx rahman-resources add assistant","installs":{"next":{"npm":"npx rahman-resources@latest add assistant","bun":"bunx rahman-resources@latest add assistant"},"svelte":{"npm":"npx rahman-resources@latest add assistant --framework sveltekit","bun":"bunx rahman-resources@latest add assistant --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/assistant","npm":["lucide-react@^0.400.0"],"shadcn":["button","input","textarea","tabs","badge","scroll-area","dropdown-menu","dialog","select","switch"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/assistant-svelte","npm":["svelte@^5","@lucide/svelte@^1.46.0"],"shadcn":[],"sharedFiles":["frontend/slices/assistant/lib/agentic-host.ts","frontend/slices/assistant/lib/chat-core.ts","frontend/slices/assistant/lib/presets.ts","frontend/slices/assistant/lib/store-core.ts","frontend/slices/assistant/lib/stream-core.ts","frontend/slices/assistant/lib/tools.ts","frontend/slices/assistant/lib/types.ts","lib/shared/agentic/agent-loop.ts","lib/shared/agentic/global-host.ts","lib/shared/agentic/host.ts","lib/shared/agentic/prompt.ts","lib/shared/agentic/registry.ts","lib/shared/agentic/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/assistant"},{"slug":"browser","title":"Browser — remote headless-browser chrome","category":"os","kind":"ui","version":"1.3.0","description":"Framework-parity remote-browser chrome. React/Next remains default with Lucide/shadcn chrome, appshell descriptor, inspector seam, and automatic tool registration. Native Svelte 5/SvelteKit adds the same multitab strip, omnibar URL/search, bookmarks/history, remote-frame click/type/key/scroll forwarding, screenshot save, AI activity log, live/poll badge, and mode gate over one shared BrowserAdapter/session/screencast/storage/url/tool core. Unwired, the canvas demo renderer still works offline. Real configureBrowser/configureScreencast routes must be authenticated/authorized like SSH because remote pages can hold logged-in sessions.","slicePath":"frontend/slices/browser","convexPaths":[],"tags":["browser","headless","playwright","remote","omnibar","bookmarks","ui","svelte","framework-parity"],"install":"npx rahman-resources add browser","installs":{"next":{"npm":"npx rahman-resources@latest add browser","bun":"bunx rahman-resources@latest add browser"},"svelte":{"npm":"npx rahman-resources@latest add browser --framework sveltekit","bun":"bunx rahman-resources@latest add browser --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/browser","npm":["lucide-react@^0.400.0"],"shadcn":["button","input","badge","dropdown-menu","tooltip","scroll-area"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/browser-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/browser/config.ts","frontend/slices/browser/lib/demo-browser.ts","frontend/slices/browser/lib/host-core.ts","frontend/slices/browser/lib/screencast-core.ts","frontend/slices/browser/lib/session-core.ts","frontend/slices/browser/lib/storage-core.ts","frontend/slices/browser/lib/tools.ts","frontend/slices/browser/lib/url.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/browser"},{"slug":"app-store","title":"App Store — install, create + toggle apps","category":"os","kind":"ui","version":"1.3.0","description":"Framework-parity App Store + Create App. React/Next remains the default storefront with Lucide/shadcn chrome, appshell-style dynamic descriptors, and automatic shared-agent tool registration. Explicit Svelte 5/SvelteKit adds native storefront, built-in app/feature toggles, custom-app authoring, sandboxed HTML runtime apps, and command-console runtime apps over the same observable localStorage app registry, disabled-set store, curated catalog, exec adapter, manifest helpers, and self-contained appStoreTools. New built-ins stay enabled by default because only disabled ids persist; command execution is host-injected and uses a safe demo echo until wired.","slicePath":"frontend/slices/app-store","convexPaths":[],"tags":["app-store","registry","installer","dynamic-apps","launcher","ui","svelte","framework-parity"],"install":"npx rahman-resources add app-store","installs":{"next":{"npm":"npx rahman-resources@latest add app-store","bun":"bunx rahman-resources@latest add app-store"},"svelte":{"npm":"npx rahman-resources@latest add app-store --framework sveltekit","bun":"bunx rahman-resources@latest add app-store --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/app-store","npm":["lucide-react@^0.400.0"],"shadcn":["button","input","badge","separator","scroll-area","switch","tooltip"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/app-store-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/app-store/config.ts","frontend/slices/app-store/lib/apps-core.ts","frontend/slices/app-store/lib/create-core.ts","frontend/slices/app-store/lib/enabled-core.ts","frontend/slices/app-store/lib/exec-core.ts","frontend/slices/app-store/lib/glyph-core.ts","frontend/slices/app-store/lib/runtime-core.ts","frontend/slices/app-store/lib/store-catalog.ts","frontend/slices/app-store/lib/system-catalog-core.ts","frontend/slices/app-store/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/app-store"},{"slug":"file-explorer","title":"File Explorer — Tree + CRUD + Preview + Properties","category":"os","kind":"full","version":"1.7.0","description":"Framework-parity backend-neutral file explorer. React/Next remains default; native Svelte 5/SvelteKit covers location sidebar, back/forward + breadcrumbs, grid/list sorting, multi-select, create/rename/move/copy/cut/paste/trash/delete, drag/drop upload, image/audio/video/PDF/text preview, editable body + metadata properties, storage usage, and optional function-calling tools over the same FileExplorerAdapter. Bundled mock/live/structural-Convex adapters are shared; Svelte carries no React/Next/Lucide React/shadcn/FilePicker/agent runtime.","slicePath":"frontend/slices/file-explorer","convexPaths":[],"tags":["files","file-manager","explorer","tree","breadcrumb","crud","sidebar","ui","svelte","framework-parity"],"install":"npx rahman-resources add file-explorer","installs":{"next":{"npm":"npx rahman-resources@latest add file-explorer","bun":"bunx rahman-resources@latest add file-explorer"},"svelte":{"npm":"npx rahman-resources@latest add file-explorer --framework sveltekit","bun":"bunx rahman-resources@latest add file-explorer --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/file-explorer","npm":["lucide-react@^0.400.0"],"shadcn":["button","input","scroll-area","separator","dropdown-menu","sheet","dialog"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/file-explorer-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/file-explorer/adapter/convex.ts","frontend/slices/file-explorer/adapter/live.ts","frontend/slices/file-explorer/adapter/mock-blobs.ts","frontend/slices/file-explorer/adapter/mock-tree.ts","frontend/slices/file-explorer/adapter/mock.ts","frontend/slices/file-explorer/adapter/types.ts","frontend/slices/file-explorer/lib/file-kinds.ts","frontend/slices/file-explorer/lib/format.ts","frontend/slices/file-explorer/lib/history-core.ts","frontend/slices/file-explorer/lib/ops-core.ts","frontend/slices/file-explorer/lib/read-drop.ts","frontend/slices/file-explorer/lib/tools.ts","frontend/slices/file-explorer/lib/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/file-explorer"},{"slug":"glass-desktop","title":"Lucent Desktop","category":"os","kind":"ui","version":"0.2.0","description":"Interactive dark-glass desktop with two spaces and a catalog-driven widget canvas. The React/Next default keeps its specialized widget renderers; the native Svelte 5/SvelteKit distribution uses the same 47-widget catalog, default seed, grid packer, layout mutations, and LayoutStore persistence contract with a native data-driven renderer. Both frameworks support add/remove/resize/move, edit mode, space switching, reset, persistence, and a full widget gallery. Consumer branding and storage are injected through props; no project-specific URLs, roles, or credentials are embedded.","slicePath":"frontend/slices/glass-desktop","convexPaths":[],"tags":["shell","desktop","widgets","glass","os","layout","local-storage"],"install":"npx rr add glass-desktop","installs":{"next":{"npm":"npx rahman-resources@latest add glass-desktop","bun":"bunx rahman-resources@latest add glass-desktop"},"svelte":{"npm":"npx rahman-resources@latest add glass-desktop --framework sveltekit","bun":"bunx rahman-resources@latest add glass-desktop --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/glass-desktop","npm":["lucide-react@^0.400.0","sonner@^2.0.7","clsx@^2.1.1","tailwind-merge@^3.5.0"],"shadcn":["button","checkbox","dialog","dropdown-menu","input","scroll-area","slider","toggle"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/glass-desktop-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/glass-desktop/types.ts","frontend/slices/glass-desktop/config/constants.ts","frontend/slices/glass-desktop/config/default-layout.seed.ts","frontend/slices/glass-desktop/config/theme.css","frontend/slices/glass-desktop/lib/widget-catalog.ts","frontend/slices/glass-desktop/lib/widget-display.ts","frontend/slices/glass-desktop/lib/layout-core.ts","frontend/slices/glass-desktop/utils/grid.ts","frontend/slices/glass-desktop/utils/storage.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/glass-desktop"},{"slug":"appshell","title":"AppShell — Desktop + Mobile OS Shell","category":"os","kind":"full","version":"1.7.1","description":"Generic, brand-free OS-style shell framework. One <AppShell manifest> wrapper provider gives a project a macOS-style window manager (drag/snap/maximize, dock, menu bar, Spotlight) AND an iOS-style mobile surface (home pager, app library, control center, widgets), driven entirely by a manifest: brand, apps, features, surface regions, capabilities, persistence, keymap. Five shell features (search, inspector, notifications, control-center, widgets) are bundled as defineFeature() contributions inside the slice and mount via named <Slot>s. Responsiveness is a single ResponsiveProvider + 4 DRY primitives (AppFrame, MasterDetail, ResponsiveToolbar, TouchList). Imports nothing project-specific — the consumer injects data/auth/AI through manifest.capabilities. Lifted from os-vps (Topside).","slicePath":"frontend/slices/appshell","convexPaths":[],"tags":["shell","window-manager","desktop","mobile","responsive","framework","ui"],"install":"npx rahman-resources add appshell","installs":{"next":{"npm":"npx rahman-resources@latest add appshell","bun":"bunx rahman-resources@latest add appshell"},"svelte":{"npm":"npx rahman-resources@latest add appshell --framework sveltekit","bun":"bunx rahman-resources@latest add appshell --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/appshell","npm":["lucide-react","class-variance-authority","clsx","tailwind-merge","vaul"],"shadcn":["button","tooltip","scroll-area","sheet","drawer","dialog","alert-dialog","dropdown-menu"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/appshell-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/appshell/appshell.css","frontend/slices/appshell/appshell-focus.css","frontend/slices/appshell/appshell-materials.css","frontend/slices/appshell/appshell-spinner.css","frontend/slices/appshell/appshell-wallpapers.css","frontend/slices/appshell/lib/types-core.ts","frontend/slices/appshell/lib/window-exit-core.ts","frontend/slices/appshell/lib/store-state.ts","frontend/slices/appshell/lib/store-geometry.ts","frontend/slices/appshell/lib/store-panels.ts","frontend/slices/appshell/lib/store-persist.ts","frontend/slices/appshell/lib/store.ts","frontend/slices/appshell/lib/window-title.ts","frontend/slices/appshell/lib/commands-core.ts","frontend/slices/appshell/lib/badges-core.ts","frontend/slices/appshell/lib/toast-core.ts","frontend/slices/appshell/lib/activity-core.ts","frontend/slices/appshell/lib/clipboard-core.ts","frontend/slices/appshell/lib/share-core.ts","frontend/slices/appshell/lib/quick-look-core.ts","frontend/slices/appshell/lib/lock-core.ts","frontend/slices/appshell/lib/shortcuts-core.ts","frontend/slices/appshell/lib/focus-mode-core.ts","frontend/slices/appshell/lib/inspector-core.ts","frontend/slices/appshell/lib/recents-core.ts","frontend/slices/appshell/lib/spaces-core.ts","frontend/slices/appshell/lib/window-tabs-core.ts","frontend/slices/appshell/lib/layouts-core.ts","frontend/slices/appshell/lib/profiles-core.ts","frontend/slices/appshell/lib/tools.ts","frontend/slices/appshell/registry/shell-core.ts","frontend/slices/appshell/registry/chrome-kit.ts","frontend/slices/appshell/registry/chrome-kit-data.ts","lib/shared/agentic/define.ts","lib/shared/agentic/schema.ts","lib/shared/agentic/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/appshell"},{"slug":"convex-auth","title":"Convex Auth — Multi-Provider Sign-in","category":"auth","kind":"backend","version":"0.5.0","description":"Framework-parity Convex Auth: React/Next keeps the official @convex-dev/auth React adapter; Svelte 5/SvelteKit gets native AuthCard + SignInPage over the same labels, validation and framework-neutral AuthFlow. Because @convex-dev/auth exposes React/Next adapters but no Svelte adapter, Svelte production wiring injects AuthFlow explicitly rather than emulating undocumented session internals. Backend Password, Anonymous, Google OAuth and Resend magic-link stay unchanged.","slicePath":"frontend/slices/convex-auth","convexPaths":["convex/features/auth"],"tags":["auth","convex","password","magic-link","google","anonymous","no-clerk","pbkdf2","svelte","framework-parity"],"install":"npm i @convex-dev/auth @auth/core resend lucide-react","installs":{"next":{"npm":"npx rahman-resources@latest add convex-auth","bun":"bunx rahman-resources@latest add convex-auth"},"svelte":{"npm":"npx rahman-resources@latest add convex-auth --framework sveltekit","bun":"bunx rahman-resources@latest add convex-auth --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/convex-auth","npm":["@convex-dev/auth@^0.0.95","@auth/core@^0.37.4","resend@^4.0.0","lucide-react@^0.400.0"],"shadcn":["button","card","input","label","tabs","alert","input-otp"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/convex-auth-svelte","npm":["svelte@^5","@convex-dev/auth@^0.0.95","@auth/core@^0.37.4","resend@^4.0.0"],"shadcn":[],"sharedFiles":["frontend/slices/convex-auth/lib/index.ts","frontend/slices/convex-auth/lib/labels.ts","frontend/slices/convex-auth/lib/flow-core.ts","frontend/slices/convex-auth/types/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/convex-auth"},{"slug":"payment","title":"Payment — Indonesia PSP (DOKU · Midtrans)","category":"integrations","kind":"full","version":"0.5.0","description":"Framework-parity Indonesia payment providers behind one slug and one provider-discriminated Convex data model. React/Next remains default; Svelte 5/SvelteKit adds native DOKU hosted/direct/status/instructions and Midtrans checkout/orders surfaces over shared contracts/tools. CLI 1.18 scopes provider runtime deps + backend actions: doku installs no provider npm SDK and only DOKU env/action; midtrans adds midtrans-client + Midtrans env/action; add-all receives the union. HMAC/signature verification, webhook idempotency, amount validation, and provider secrets stay server-side.","slicePath":"frontend/slices/payment","convexPaths":["convex/features/payment"],"tags":["payment","checkout","indonesia","doku","midtrans","snap","qris","virtual-account","ewallet","psp","svelte","framework-parity"],"install":"","installs":{"next":{"npm":"npx rahman-resources@latest add payment","bun":"bunx rahman-resources@latest add payment"},"svelte":{"npm":"npx rahman-resources@latest add payment --framework sveltekit","bun":"bunx rahman-resources@latest add payment --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/payment","npm":["@convex-dev/auth@^0.0.95"],"shadcn":["badge","button","card","dialog","input","label","select","skeleton"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/payment-svelte","npm":["svelte@^5","@convex-dev/auth@^0.0.95"],"shadcn":[],"sharedFiles":["frontend/slices/payment/lib/contracts.ts","frontend/slices/payment/lib/doku-core.ts","frontend/slices/payment/lib/tools.ts","convex/_shared/crypto.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/payment"},{"slug":"resend-newsletter","title":"Resend — Transactional & Newsletter","category":"integrations","kind":"full","version":"0.3.1","description":"Truthful single-opt-in newsletter slice with adapter-backed React/Next and native Svelte 5 subscribe forms, a self-contained Convex subscriber/issue backend, public unsubscribe, host-authorized list/send adapters, and internal Resend campaign workers. The public preview stays unconfigured so it cannot mutate data or send email.","slicePath":"frontend/slices/resend-newsletter","convexPaths":["convex/features/newsletter"],"tags":["email","newsletter","resend","broadcast","svelte"],"install":"npm i resend","installs":{"next":{"npm":"npx rahman-resources@latest add resend-newsletter","bun":"bunx rahman-resources@latest add resend-newsletter"},"svelte":{"npm":"npx rahman-resources@latest add resend-newsletter --framework sveltekit","bun":"bunx rahman-resources@latest add resend-newsletter --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/resend-newsletter","npm":["resend@^6.12.4"],"shadcn":["button","card","input","label"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/resend-newsletter-svelte","npm":["svelte@^5","resend@^6.12.4"],"shadcn":[],"sharedFiles":["frontend/slices/resend-newsletter/lib/core.ts","frontend/slices/resend-newsletter/lib/host.ts","frontend/slices/resend-newsletter/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/resend-newsletter"},{"slug":"ai-workspace","title":"AI Workspace — chat · studio · agents","category":"ai","kind":"full","version":"0.4.0","description":"Framework-parity AI workspace with chat, studio, and agents variants. React/Next remains default; native Svelte 5/SvelteKit mirrors all three over shared chat/generation/runner/tool cores. Variant installs are exact: only chat pulls convex/features/aiChat + ai + @ai-sdk/anthropic + ANTHROPIC_API_KEY; studio and agents remain frontend-only and provider-free.","slicePath":"frontend/slices/ai-workspace","convexPaths":["convex/features/aiChat"],"tags":["ai","ai:chatbot","ai:studio","ai:agent","agent-mode","tool-calls","streaming","generation","async","traces","multimodal","svelte","framework-parity","variant-gated"],"install":"npx rr add ai-workspace <chat|studio|agents> [--framework sveltekit]","installs":{"next":{"npm":"npx rahman-resources@latest add ai-workspace","bun":"bunx rahman-resources@latest add ai-workspace"},"svelte":{"npm":"npx rahman-resources@latest add ai-workspace --framework sveltekit","bun":"bunx rahman-resources@latest add ai-workspace --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/ai-workspace","npm":["lucide-react@^0.400.0"],"shadcn":["avatar","badge","button","card","progress","scroll-area","select","separator","slider","switch","table","tabs","textarea","tooltip"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/ai-workspace-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/ai-workspace"},{"slug":"ai-admin","title":"AI Admin — Contract","category":"ai","kind":"backend","version":"0.4.0","description":"Framework-neutral compile-time contract for a future AI administration surface. Ships provider/model/skill/tool/agent/budget/audit types plus tab, icon-name, and permission taxonomy; intentionally no renderer, persistence backend, or runtime framework dependency.","slicePath":"frontend/slices/ai-admin","convexPaths":[],"tags":["ai","admin","contract","types","taxonomy","headless"],"install":"npx rr add ai-admin","installs":{"next":{"npm":"npx rahman-resources@latest add ai-admin","bun":"bunx rahman-resources@latest add ai-admin"},"svelte":{"npm":"npx rahman-resources@latest add ai-admin --framework sveltekit","bun":"bunx rahman-resources@latest add ai-admin --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/ai-admin","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/ai-admin","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}]},{"slug":"ai-router","title":"AI Router — OpenRouter Tier Proxy","category":"ai","kind":"full","version":"0.6.0","description":"Authenticated tier-routed LLM access through one Convex action and OpenRouter. Ships a transport-injected ChatFab: React/Next remains default and SvelteKit gets native Svelte 5 UI over the same request/result core and the same aiUsage backend. Unconfigured hosts return an explicit notice instead of a fake reply.","slicePath":"frontend/slices/ai-router","convexPaths":["convex/features/ai"],"tags":["ai","llm","openrouter","tier-routing","chat"],"install":"npx rr add ai-router","installs":{"next":{"npm":"npx rahman-resources@latest add ai-router","bun":"bunx rahman-resources@latest add ai-router"},"svelte":{"npm":"npx rahman-resources@latest add ai-router --framework sveltekit","bun":"bunx rahman-resources@latest add ai-router --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/ai-router","npm":["convex@^1.17","ai@^4.0.0","@openrouter/ai-sdk-provider@^0.0.5","lucide-react@^0.400.0"],"shadcn":["button","card","input"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/ai-router-svelte","npm":["svelte@^5","convex@^1.17","ai@^4.0.0","@openrouter/ai-sdk-provider@^0.0.5"],"shadcn":[],"sharedFiles":["frontend/slices/ai-router/config.ts","frontend/slices/ai-router/lib/core.ts","frontend/slices/ai-router/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/ai-router"},{"slug":"vector-search","title":"Vector Search — Adapter Contract","category":"data","kind":"backend","version":"0.3.0","description":"Framework-neutral semantic-search adapter contract. The host injects VectorSearchCtx for query/index/reindex and owns the actual vector backend, embeddings, credentials, persistence, authorization, and reindex policy; RR ships no renderer or Convex schema for this slice.","slicePath":"frontend/slices/vector-search","convexPaths":[],"tags":["search","vector","embeddings","adapter","headless","portable"],"install":"npx rahman-resources add vector-search","installs":{"next":{"npm":"npx rahman-resources@latest add vector-search","bun":"bunx rahman-resources@latest add vector-search"},"svelte":{"npm":"npx rahman-resources@latest add vector-search --framework sveltekit","bun":"bunx rahman-resources@latest add vector-search --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/vector-search","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/vector-search","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}]},{"slug":"cal-com-booking","title":"Cal.com Booking","category":"data","kind":"full","version":"0.3.0","description":"Cal.com inline booking UI with a real Convex webhook mirror. React/Next stays default via @calcom/embed-react; SvelteKit uses native Svelte 5 over the shared vanilla embed loader. The bundled backend mirrors webhook events into the real bookings table; list/cancel/reschedule remain host-injected tool adapters.","slicePath":"frontend/slices/cal-com-booking","convexPaths":["convex/features/bookings"],"tags":["data","scheduling","cal-com","bookings","webhook","svelte"],"install":"npm i @calcom/embed-react","installs":{"next":{"npm":"npx rahman-resources@latest add cal-com-booking","bun":"bunx rahman-resources@latest add cal-com-booking"},"svelte":{"npm":"npx rahman-resources@latest add cal-com-booking --framework sveltekit","bun":"bunx rahman-resources@latest add cal-com-booking --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/cal-com-booking","npm":["@calcom/embed-react@^1.5.3"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/cal-com-booking-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/cal-com-booking/lib/embed-core.ts","frontend/slices/cal-com-booking/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/cal-com-booking"},{"slug":"command-menu","title":"Command Menu","category":"ui","kind":"ui","version":"0.4.0","description":"Portable command palette + generic search modal. React/Next remains the default cmdk/shadcn UI while Svelte 5/SvelteKit adds native palette/search surfaces over the same framework-neutral group, hotkey, MRU history, filtering, selection, label, and search-state core.","slicePath":"frontend/slices/command-menu","convexPaths":[],"tags":["ui","palette","cmd-k","navigation","keyboard","search","notion-like"],"install":"npm i cmdk","installs":{"next":{"npm":"npx rahman-resources@latest add command-menu","bun":"bunx rahman-resources@latest add command-menu"},"svelte":{"npm":"npx rahman-resources@latest add command-menu --framework sveltekit","bun":"bunx rahman-resources@latest add command-menu --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/command-menu","npm":["cmdk@^1.0.0","lucide-react@^0.400.0"],"shadcn":["button","command","dialog"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/command-menu-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/command-menu/lib/core.ts","frontend/slices/command-menu/lib/cmdkHistory.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/command-menu"},{"slug":"motion-primitives","title":"Motion Primitives (8)","category":"ui","kind":"ui","version":"0.1.0","description":"Eight ready-to-style motion components: marquee, kinetic-heading, magnetic, cursor-spotlight, stat-counter, reading-progress, grain, lightbox. Framer-Motion-powered, tree-shakeable. Facade slice — pulls from template-base/frontend/slices/motion-primitives.","slicePath":"template-base/frontend/slices/motion-primitives","convexPaths":[],"tags":["ui","motion","animation","marquee","framer-motion"],"install":"npm i framer-motion","installs":{"next":{"npm":"npx rahman-resources@latest add motion-primitives","bun":"bunx rahman-resources@latest add motion-primitives"},"svelte":null},"frameworks":[{"id":"react-next","path":"frontend/slices/motion-primitives","npm":["framer-motion@^11.0.0"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"}],"previewPath":"/preview/slices/motion-primitives"},{"slug":"responsive-dialog","title":"Responsive Dialog (Sheet ↔ Modal)","category":"ui","kind":"ui","version":"0.1.0","description":"ResponsiveDialog — auto-switches between bottom Sheet (mobile) and centered Dialog (desktop) at the md breakpoint. Same API as shadcn Dialog. Kitab forbids raw <dialog>; use this everywhere. Facade slice — pulls from template-base/frontend/slices/responsive-dialog.","slicePath":"template-base/frontend/slices/responsive-dialog","convexPaths":[],"tags":["ui","dialog","modal","sheet","responsive","primitive"],"install":"","installs":{"next":{"npm":"npx rahman-resources@latest add responsive-dialog","bun":"bunx rahman-resources@latest add responsive-dialog"},"svelte":null},"frameworks":[{"id":"react-next","path":"frontend/slices/responsive-dialog","npm":[],"shadcn":["dialog","sheet"],"sharedFiles":[],"isDefault":true,"mode":"native"}],"previewPath":"/preview/slices/responsive-dialog"},{"slug":"dashboard-shell","title":"Dashboard Shell — one responsive shell + mobile dock","category":"ui","kind":"ui","version":"1.3.0","description":"One responsive dashboard chrome over one nav SSOT. React/Next remains the default shadcn rail + topbar + mobile dock/tile-drawer distribution. Explicit Svelte 5/SvelteKit adds native DashboardShell, DashboardSidebar, MobileDock, and MobileMenuDrawer over the same framework-neutral active-path, dock-derivation, and active-title core; Svelte uses `$app/state`, `$derived`, keyed lists, snippets, and CSS breakpoints with no React/Lucide/Vaul/shadcn runtime dependency.","slicePath":"frontend/slices/dashboard-shell","convexPaths":[],"tags":["ui","layout","dashboard","sidebar","dock","responsive","shell"],"install":"","installs":{"next":{"npm":"npx rahman-resources@latest add dashboard-shell","bun":"bunx rahman-resources@latest add dashboard-shell"},"svelte":{"npm":"npx rahman-resources@latest add dashboard-shell --framework sveltekit","bun":"bunx rahman-resources@latest add dashboard-shell --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/dashboard-shell","npm":["lucide-react@^0.400.0","vaul@^1.0.0"],"shadcn":["sidebar","drawer","button","separator","sheet","tooltip"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/dashboard-shell-svelte","npm":["svelte@^5","@sveltejs/kit@^2.12.0"],"shadcn":[],"sharedFiles":["frontend/slices/dashboard-shell/config.ts","frontend/slices/dashboard-shell/lib/core-types.ts","frontend/slices/dashboard-shell/lib/nav.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/dashboard-shell"},{"slug":"full-width-toggle","title":"Full Width Toggle","category":"ui","kind":"ui","version":"0.2.0","description":"Page-container width preference with contained, wide, and full modes. Persists per device in localStorage, synchronizes same-tab and cross-tab changes, and ships a toggle plus container wrapper. React/Next remains the default distribution; Svelte 5 / SvelteKit is available explicitly with --framework sveltekit.","slicePath":"frontend/slices/full-width-toggle","convexPaths":[],"tags":["ui","layout","preference","localstorage","dashboard"],"install":"npx rr add full-width-toggle","installs":{"next":{"npm":"npx rahman-resources@latest add full-width-toggle","bun":"bunx rahman-resources@latest add full-width-toggle"},"svelte":{"npm":"npx rahman-resources@latest add full-width-toggle --framework sveltekit","bun":"bunx rahman-resources@latest add full-width-toggle --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/full-width-toggle","npm":["lucide-react@^0.400.0"],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/full-width-toggle-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/full-width-toggle"},{"slug":"three-column","title":"Three-Column Layout — Sidebar/Content/Inspector","category":"ui","kind":"ui","version":"0.1.0","description":"ThreeColumnLayoutAdvanced — collapsible left/right + resizable widths + responsive breakpoints + PanelSection compound (Header/Items/Footer) + per-panel footer slots. Models shadcn sidebar API for the panel interior. Pair with PanelGroup/PanelMenu/PanelSeparator primitives. Trigger ≠ header (V-wave separation rule).","slicePath":"template-base/frontend/slices/three-column","convexPaths":[],"tags":["ui","layout","three-column","sidebar","inspector","panel-section","responsive","resizable"],"install":"","installs":{"next":{"npm":"npx rahman-resources@latest add three-column","bun":"bunx rahman-resources@latest add three-column"},"svelte":null},"frameworks":[{"id":"react-next","path":"frontend/slices/three-column","npm":[],"shadcn":["sheet","scroll-area","separator","tooltip"],"sharedFiles":[],"isDefault":true,"mode":"native"}],"previewPath":"/preview/three-column-trio"},{"slug":"broadcast-channel-sync","title":"BroadcastChannel — Cross-tab Sync","category":"data","kind":"ui","version":"0.3.0","description":"Same-origin cross-tab + cross-iframe state sync via BroadcastChannel API. Tiny, no backend, no install.","slicePath":"frontend/slices/broadcast-channel-sync","convexPaths":[],"tags":["realtime","cross-tab","broadcast-channel","demo-pattern"],"install":"// no install — Web Platform API","installs":{"next":{"npm":"npx rahman-resources@latest add broadcast-channel-sync","bun":"bunx rahman-resources@latest add broadcast-channel-sync"},"svelte":{"npm":"npx rahman-resources@latest add broadcast-channel-sync --framework sveltekit","bun":"bunx rahman-resources@latest add broadcast-channel-sync --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/broadcast-channel-sync","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/broadcast-channel-sync-svelte","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/broadcast-channel-sync"},{"slug":"rbac-roles","title":"RBAC — Roles & Permissions","category":"auth","kind":"full","version":"0.4.0","description":"RBAC engine ported from superspace. 6 system role presets (owner/admin/manager/staff/client/guest with levels), dot-namespaced permissions with `*` / `feature.*` wildcard matching, and pure check helpers (resolvePermissions / hasPermission / roleHasPermission). Props-driven UI primitives: <PermissionGate>, usePermissions, <RoleBadge>, <PermissionMatrix>. Convex template ships a tenant-scoped rbac_roles table + checkPermission / requirePermission helpers + idempotent seedSystemRoles, with a PLATFORM_ADMIN_EMAILS superadmin bypass. Pair with `user-management` for the members / invites / roles-admin UI. @convex-dev/auth aware — no Clerk.","slicePath":"frontend/slices/rbac-roles","convexPaths":["convex/features/rbac_roles"],"tags":["rbac","auth","permissions","roles","authorization","no-clerk","convex"],"install":"npx rahman-resources add rbac-roles","installs":{"next":{"npm":"npx rahman-resources@latest add rbac-roles","bun":"bunx rahman-resources@latest add rbac-roles"},"svelte":{"npm":"npx rahman-resources@latest add rbac-roles --framework sveltekit","bun":"bunx rahman-resources@latest add rbac-roles --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/rbac-roles","npm":[],"shadcn":["badge","checkbox","label"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/rbac-roles-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/rbac-roles/lib/permissions.ts","frontend/slices/rbac-roles/lib/roles.ts","frontend/slices/rbac-roles/lib/check.ts","frontend/slices/rbac-roles/lib/permission-catalog.ts","frontend/slices/rbac-roles/lib/api.ts","frontend/slices/rbac-roles/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/rbac-roles"},{"slug":"user-management","title":"User Management","category":"auth","kind":"full","version":"0.8.0","description":"Framework-parity user administration for members, hierarchy-aware invites, custom roles, teams, and the cross-tenant access matrix. React/Next remains the default shadcn renderer; native Svelte 5/SvelteKit reuses the same framework-neutral types, RBAC checks, members query/sort core, agent tools, and Convex backend. Authorization stays server-side in the bundled permission-gated Convex functions.","slicePath":"frontend/slices/user-management","convexPaths":["convex/features/user_management"],"tags":["user-management","members","rbac","auth","team","admin","convex","no-clerk","svelte","framework-parity"],"install":"npx rahman-resources add user-management","installs":{"next":{"npm":"npx rahman-resources@latest add user-management","bun":"bunx rahman-resources@latest add user-management"},"svelte":{"npm":"npx rahman-resources@latest add user-management --framework sveltekit","bun":"bunx rahman-resources@latest add user-management --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/user-management","npm":["lucide-react@^0.400.0"],"shadcn":["avatar","badge","button","checkbox","dialog","dropdown-menu","input","label","select","switch","table","tabs","textarea"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/user-management-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/user-management/types.ts","frontend/slices/user-management/access-types.ts","frontend/slices/user-management/lib/can.ts","frontend/slices/user-management/lib/members-core.ts","frontend/slices/user-management/lib/tools.ts","lib/shared/agentic/define.ts","lib/shared/agentic/schema.ts","lib/shared/agentic/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/user-management"},{"slug":"admin-panel","title":"Admin Panel — Unified Product Admin","category":"infra","kind":"full","version":"0.1.0","description":"17-section admin surface (events, funnels, attribution, users, A/B, flags, pricing, CMS, email, audit, ...) gated by RBAC. Auto-filters sidebar by tier (solo/influencer/organization) and user permissions. Single backend resolver (getMyAdminAccess) mirrors frontend gate so UI can never leak.","slicePath":"template-base/frontend/slices/admin-panel","convexPaths":["template-base/convex/features/admin-panel"],"tags":["admin","owner","platform","rbac","instrumentation","panel"],"install":"npx rahman-resources add admin-panel","installs":{"next":{"npm":"npx rahman-resources@latest add admin-panel","bun":"bunx rahman-resources@latest add admin-panel"},"svelte":null},"frameworks":[{"id":"react-next","path":"template-base/frontend/slices/admin-panel","npm":[],"shadcn":["card","badge","button"],"sharedFiles":[],"isDefault":true,"mode":"native"}],"previewPath":"/preview/slices/admin-panel"},{"slug":"event-tracking","title":"Analytics","category":"data","kind":"backend","version":"0.2.0","description":"Framework-neutral analytics instrumentation contract. The host injects an EventTrackingCtx transport for event emit, guarded event queries, and funnel reads; the canonical slice ships no renderer or storage backend.","slicePath":"frontend/slices/event-tracking","convexPaths":[],"tags":["events","analytics","instrumentation","portable","headless"],"install":"npx rahman-resources add event-tracking","installs":{"next":{"npm":"npx rahman-resources@latest add event-tracking","bun":"bunx rahman-resources@latest add event-tracking"},"svelte":{"npm":"npx rahman-resources@latest add event-tracking --framework sveltekit","bun":"bunx rahman-resources@latest add event-tracking --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/event-tracking","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/event-tracking","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}]},{"slug":"icon-picker","title":"Icon Picker","category":"ui","kind":"ui","version":"0.6.0","description":"Framework-parity emoji + Lucide + Phosphor picker. React/Next remains default; native Svelte 5/SvelteKit keeps the same stored-value contract, curated catalogs, search, 10-color tint, recents, Twemoji/native preference, random/clear, keyboard grid navigation, and smart popover-to-dialog fallback over shared framework-neutral stores/handlers. React uses lucide-react + @phosphor-icons/react/shadcn; Svelte uses @lucide/svelte + phosphor-svelte and carries no React/Next/shadcn/agent runtime.","slicePath":"frontend/slices/icon-picker","convexPaths":[],"tags":["icon","emoji","lucide","phosphor","picker","twemoji","notion","responsive","svelte","framework-parity"],"install":"npx rahman-resources add icon-picker","installs":{"next":{"npm":"npx rahman-resources@latest add icon-picker","bun":"bunx rahman-resources@latest add icon-picker"},"svelte":{"npm":"npx rahman-resources@latest add icon-picker --framework sveltekit","bun":"bunx rahman-resources@latest add icon-picker --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/icon-picker","npm":["lucide-react@^0.400.0","@phosphor-icons/react@^2.1.10"],"shadcn":["popover","dialog","button","input","scroll-area","tabs"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/icon-picker-svelte","npm":["svelte@^5","@lucide/svelte@^1.46.0","phosphor-svelte@^3.1.0"],"shadcn":[],"sharedFiles":["frontend/slices/icon-picker/lib/colors.ts","frontend/slices/icon-picker/lib/defaults.ts","frontend/slices/icon-picker/lib/emoji-catalog.ts","frontend/slices/icon-picker/lib/emoji-keywords.ts","frontend/slices/icon-picker/lib/icon-render-config.ts","frontend/slices/icon-picker/lib/lucide-catalog.ts","frontend/slices/icon-picker/lib/parse.ts","frontend/slices/icon-picker/lib/phosphor-catalog.ts","frontend/slices/icon-picker/lib/picker-handlers.ts","frontend/slices/icon-picker/lib/recents-core.ts","frontend/slices/icon-picker/lib/search-haystacks.ts","frontend/slices/icon-picker/lib/style-core.ts","frontend/slices/icon-picker/lib/tools.ts","frontend/slices/icon-picker/lib/twemoji.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/icon-picker"},{"slug":"activity","title":"Activity — public productivity log","category":"data","kind":"full","version":"0.4.0","description":"Public-facing weekly activity log. Lists user-facing activities grouped by ISO week with schema.org-friendly markup, designed to maximise SEO so the question 'what is <person> working on this week?' lands here. Convex-backed (schema + queries + unauthenticated mutations); MCP-friendly so AI workflows (Claude / GPT / custom agents) can append entries directly. All user-facing copy + per-category labels + date/time locale are prop-driven (English defaults). Lifted 2026-05-27 from rahmanef.com; 225-LOC view split into view + 2 sub-components + 4 lib helpers for the 200-LOC cap; Indonesian strings + custom primitives stripped; cross-slice auth import dropped (consumer wraps mutations).","slicePath":"frontend/slices/activity","convexPaths":["convex/features/activity"],"tags":["activity","productivity","log","now-page","feed","mcp","seo","personal-brand"],"install":"npx rahman-resources add activity","installs":{"next":{"npm":"npx rahman-resources@latest add activity","bun":"bunx rahman-resources@latest add activity"},"svelte":{"npm":"npx rahman-resources@latest add activity --framework sveltekit","bun":"bunx rahman-resources@latest add activity --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/activity","npm":["convex@^1.17","lucide-react@^0.400.0","next@^15","react@^18"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/activity-svelte","npm":["svelte@^5","convex@^1.17"],"shadcn":[],"sharedFiles":["frontend/slices/activity/config.ts","frontend/slices/activity/lib/types.ts","frontend/slices/activity/lib/format.ts","frontend/slices/activity/lib/grouping.ts","frontend/slices/activity/lib/defaults.ts","frontend/slices/activity/lib/stats.ts","frontend/slices/activity/lib/tools.ts"],"isDefault":false,"mode":"native"}]},{"slug":"rate-limit","title":"Rate Limit","category":"infra","kind":"backend","version":"0.4.0","description":"Backend-only Convex per-key request counter with atomic consume, server-owned namespace policy, optional server-key gate, and bounded cron pruning. The copied runtime/config/tool source is framework-neutral TypeScript: React/Next remains the default contract while explicit Svelte/SvelteKit installs reuse the same source with no duplicate UI or framework runtime dependency.","slicePath":"frontend/slices/rate-limit","convexPaths":["convex/features/rate_limit"],"tags":["infra","rate-limit","convex","backend","throttle"],"install":"npx rahman-resources add rate-limit","installs":{"next":{"npm":"npx rahman-resources@latest add rate-limit","bun":"bunx rahman-resources@latest add rate-limit"},"svelte":{"npm":"npx rahman-resources@latest add rate-limit --framework sveltekit","bun":"bunx rahman-resources@latest add rate-limit --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/rate-limit","npm":["convex@^1.16.0"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/rate-limit","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}]},{"slug":"testimonials","title":"Testimonials","category":"content","kind":"backend","version":"0.2.0","description":"Framework-neutral testimonials backend: bounded public list/get, server-authorized admin CRUD, and internal seed. React/Next remains the default distribution contract; explicit Svelte/SvelteKit installs reuse the same TypeScript + Convex source without invented UI.","slicePath":"frontend/slices/testimonials","convexPaths":["convex/features/testimonials"],"tags":["content","testimonials","convex","backend","marketing"],"install":"npx rahman-resources add testimonials","installs":{"next":{"npm":"npx rahman-resources@latest add testimonials","bun":"bunx rahman-resources@latest add testimonials"},"svelte":{"npm":"npx rahman-resources@latest add testimonials --framework sveltekit","bun":"bunx rahman-resources@latest add testimonials --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/testimonials","npm":["convex@^1.16.0"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/testimonials","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}],"previewPath":"/preview/slices/testimonials"},{"slug":"services","title":"Services","category":"content","kind":"backend","version":"0.2.0","description":"Framework-neutral service-offerings backend: bounded public list/get, server-authorized admin CRUD, and internal seed. React/Next remains the default distribution contract; explicit Svelte/SvelteKit installs reuse the same TypeScript + Convex source without invented UI.","slicePath":"frontend/slices/services","convexPaths":["convex/features/services"],"tags":["content","services","convex","backend","marketing","agency"],"install":"npx rahman-resources add services","installs":{"next":{"npm":"npx rahman-resources@latest add services","bun":"bunx rahman-resources@latest add services"},"svelte":{"npm":"npx rahman-resources@latest add services --framework sveltekit","bun":"bunx rahman-resources@latest add services --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/services","npm":["convex@^1.16.0"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/services","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}],"previewPath":"/preview/slices/services"},{"slug":"create-your-mcp","title":"Create Your MCP","category":"ai","kind":"full","version":"0.4.1","description":"Framework-parity MCP/OAuth integration: React/Next remains the default admin UI and adapter, while explicit SvelteKit installs native Svelte 5 admin UI plus SvelteKit handler factories over the same OAuth 2.1 + PKCE, JSON-RPC, Convex token backend, scope enforcement, and static MCP_API_KEY fallback. Shared HTTP behavior uses Web Request/Response primitives; host adapters stay thin.","slicePath":"frontend/slices/create-your-mcp","convexPaths":["convex/features/create_your_mcp"],"tags":["ai","mcp","oauth","pkce","chatgpt","claude","cursor","convex","integration","svelte","framework-parity"],"install":"npx rahman-resources add create-your-mcp","installs":{"next":{"npm":"npx rahman-resources@latest add create-your-mcp","bun":"bunx rahman-resources@latest add create-your-mcp"},"svelte":{"npm":"npx rahman-resources@latest add create-your-mcp --framework sveltekit","bun":"bunx rahman-resources@latest add create-your-mcp --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/create-your-mcp","npm":["convex@^1.16.0","class-variance-authority@^0.7.1"],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/create-your-mcp-svelte","npm":["svelte@^5","convex@^1.16.0"],"shadcn":[],"sharedFiles":["frontend/slices/create-your-mcp/server.ts","frontend/slices/create-your-mcp/views/mcp-admin-helpers.ts","frontend/slices/create-your-mcp/lib/auth.ts","frontend/slices/create-your-mcp/lib/backend.ts","frontend/slices/create-your-mcp/lib/context.ts","frontend/slices/create-your-mcp/lib/hash.ts","frontend/slices/create-your-mcp/lib/mcp-http.ts","frontend/slices/create-your-mcp/lib/oauth-http.ts","frontend/slices/create-your-mcp/lib/server.ts","frontend/slices/create-your-mcp/lib/tools/example.ts","frontend/slices/create-your-mcp/lib/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/create-your-mcp"},{"slug":"contact-form-resend","title":"Contact Form + Resend","category":"integrations","kind":"full","version":"0.1.0","description":"Contact form posting to Resend email API. Server Action + Zod input validation. Convex mutation for storage + Resend send.","slicePath":"template-base/frontend/slices/contact-form-resend","convexPaths":[],"tags":["form","email","resend","convex"],"install":"npx rahman-resources add contact-form-resend","installs":{"next":{"npm":"npx rahman-resources@latest add contact-form-resend","bun":"bunx rahman-resources@latest add contact-form-resend"},"svelte":null},"frameworks":[{"id":"react-next","path":"template-base/frontend/slices/contact-form-resend","npm":["resend@^4.0.0","framer-motion@^11.0.0"],"shadcn":["card","button","input","label","textarea"],"sharedFiles":[],"isDefault":true,"mode":"native"}],"previewPath":"/preview/slices/contact-form-resend"},{"slug":"admin","title":"Admin — generic shell + composed console","category":"infra","kind":"full","version":"0.4.0","description":"Framework-parity access-gated admin surfaces behind one slug. React/Next remains default; native Svelte 5/SvelteKit provides shell + console over the same access rules, 26-section catalog, mock contracts, ?section= deep-link semantics, registry stats core, and Convex backends. shell is the generic AdminPage + buildAdminStats surface over convex/features/admin. console is the composed 26-section AdminConsole with five owned sections and host-injected peer panels over convex/features/admin_console. Svelte injects provider panels as snippets and imports no React/Lucide/shadcn. Variant installs keep backend and env gating exact.","slicePath":"frontend/slices/admin","convexPaths":["convex/features/admin","convex/features/admin_console"],"tags":["infra","admin","console","shell","dashboard","composition","rbac","access-gate","registry","svelte","framework-parity"],"install":"npx rahman-resources add admin","installs":{"next":{"npm":"npx rahman-resources@latest add admin","bun":"bunx rahman-resources@latest add admin"},"svelte":{"npm":"npx rahman-resources@latest add admin --framework sveltekit","bun":"bunx rahman-resources@latest add admin --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/admin","npm":["lucide-react@^0.400.0"],"shadcn":["badge","button","card","input","progress","scroll-area","select","sheet","table","textarea"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/admin-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/admin/variants/console/lib/access.ts","frontend/slices/admin/variants/console/lib/mock.ts","frontend/slices/admin/variants/console/lib/section-core.ts","frontend/slices/admin/variants/console/lib/sections.ts","frontend/slices/admin/variants/shell/lib/registry-labels.ts","frontend/slices/admin/variants/shell/lib/registry-stats.ts","frontend/slices/admin/variants/shell/lib/registry-types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/admin"},{"slug":"platform-admin","title":"Platform Admin — Control Plane Contract","category":"infra","kind":"backend","version":"0.3.0","description":"Framework-neutral privileged control-plane tool contract. The host injects metrics, feature-flag, and tenant-tier operations through PlatformAdminCtx and owns auth, authorization, tenancy, persistence, and audit enforcement; the canonical slice ships no renderer or Convex schema.","slicePath":"frontend/slices/platform-admin","convexPaths":[],"tags":["infra","admin","control-plane","headless","portable"],"install":"npx rahman-resources add platform-admin","installs":{"next":{"npm":"npx rahman-resources@latest add platform-admin","bun":"bunx rahman-resources@latest add platform-admin"},"svelte":{"npm":"npx rahman-resources@latest add platform-admin --framework sveltekit","bun":"bunx rahman-resources@latest add platform-admin --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/platform-admin","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/platform-admin","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}]},{"slug":"audit-log","title":"Audit Log — Workspace Events","category":"infra","kind":"backend","version":"0.4.0","description":"Backend-only audit event recorder with framework-neutral TypeScript. createAuditLogger injects tenant/actor identity and preserves action/entity/diff/metadata/IP/user-agent evidence through host bindings; read-only query/export tools remain server-gated. React/Next stays the default contract while explicit Svelte/SvelteKit installs reuse the same source with no duplicate UI or framework runtime dependency.","slicePath":"frontend/slices/audit-log","convexPaths":["convex/features/audit-log"],"tags":["infra","audit","compliance","logging"],"install":"npx rahman-resources add audit-log","installs":{"next":{"npm":"npx rahman-resources@latest add audit-log","bun":"bunx rahman-resources@latest add audit-log"},"svelte":{"npm":"npx rahman-resources@latest add audit-log --framework sveltekit","bun":"bunx rahman-resources@latest add audit-log --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/audit-log","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/audit-log","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}],"previewPath":"/preview/slices/audit-log"},{"slug":"comments","title":"Comments — Threaded","category":"content","kind":"full","version":"0.4.0","description":"Polymorphic-target threaded comments. Consumer picks `TargetRef = { kind, id, subId? }` (e.g. page+block, blog+slug, task+id). Reply nesting is real: `parentId` end-to-end + `buildThread(flat) → CommentNode[]` tree (oldest-first, orphan-safe). Renderless <CommentsThread> + <CommentsAnchor> wrappers; useComments(bindings, opts) returns items + `tree` + openCount + CRUD + forbiddenWords guard. Adapter pattern — see contract-negotiations §1.","slicePath":"frontend/slices/comments","convexPaths":["convex/features/comments"],"tags":["content","social","comments","threaded","annotations"],"install":"npx rahman-resources add comments","installs":{"next":{"npm":"npx rahman-resources@latest add comments","bun":"bunx rahman-resources@latest add comments"},"svelte":{"npm":"npx rahman-resources@latest add comments --framework sveltekit","bun":"bunx rahman-resources@latest add comments --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/comments","npm":[],"shadcn":["button","textarea","avatar"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/comments-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/comments/types/index.ts","frontend/slices/comments/lib/buildThread.ts","frontend/slices/comments/lib/state.ts","frontend/slices/comments/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/comments"},{"slug":"seo","title":"SEO — AI Metadata Generator","category":"content","kind":"full","version":"0.3.0","description":"Service slice for SEO metadata generation — Anthropic-backed action with per-user 24h cost guard + portable persona prop. No public route. Backend exposes generate + generateAndApply mutations gated by requireAdmin; consumers inject brand voice via the personaContext arg (or buildSeoSystemPrompt factory).","slicePath":"frontend/slices/seo","convexPaths":["convex/features/seo"],"tags":["content","seo","ai","anthropic","metadata-generator"],"install":"npx rahman-resources add seo","installs":{"next":{"npm":"npx rahman-resources@latest add seo","bun":"bunx rahman-resources@latest add seo"},"svelte":{"npm":"npx rahman-resources@latest add seo --framework sveltekit","bun":"bunx rahman-resources@latest add seo --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/seo","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"shared"},{"id":"svelte-sveltekit","path":"frontend/slices/seo","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"shared"}],"previewPath":"/preview/slices/seo"},{"slug":"publisher-clean-html","title":"Publisher — clean HTML","category":"content","kind":"ui","version":"0.2.0","description":"A framework-neutral clean-HTML engine with schema-typed escaping/sanitization, CSS deduplication, inline-style guards and deterministic CSP planning. React/Next remains the default preview distribution; Svelte/SvelteKit adds a native sandboxed preview while reusing all 16 canonical TypeScript core files through verified sharedFiles, so the renderer and security spine are not forked. Richtext/SVG sanitization remains injectable and fail-closed without a configured DOMPurify runtime. Stateless, env-free, no Convex.","slicePath":"frontend/slices/publisher-clean-html","convexPaths":[],"tags":["content","publisher","html","static-export","sanitization","csp","css-dedup","render"],"install":"npx rahman-resources add publisher-clean-html","installs":{"next":{"npm":"npx rahman-resources@latest add publisher-clean-html","bun":"bunx rahman-resources@latest add publisher-clean-html"},"svelte":{"npm":"npx rahman-resources@latest add publisher-clean-html --framework sveltekit","bun":"bunx rahman-resources@latest add publisher-clean-html --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/publisher-clean-html","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/publisher-clean-html-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/publisher-clean-html/lib/class-injection.ts","frontend/slices/publisher-clean-html/lib/csp-plan.ts","frontend/slices/publisher-clean-html/lib/css-collector.ts","frontend/slices/publisher-clean-html/lib/escape-props.ts","frontend/slices/publisher-clean-html/lib/inline-style.ts","frontend/slices/publisher-clean-html/lib/module-registry.ts","frontend/slices/publisher-clean-html/lib/publish-page.ts","frontend/slices/publisher-clean-html/lib/render-node.ts","frontend/slices/publisher-clean-html/lib/reset-css.ts","frontend/slices/publisher-clean-html/lib/sanitize/css-value.ts","frontend/slices/publisher-clean-html/lib/sanitize/html.ts","frontend/slices/publisher-clean-html/lib/sanitize/index.ts","frontend/slices/publisher-clean-html/lib/sanitize/richtext.ts","frontend/slices/publisher-clean-html/lib/sanitize/runtime.ts","frontend/slices/publisher-clean-html/lib/sanitize/svg.ts","frontend/slices/publisher-clean-html/lib/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/publisher-clean-html"},{"slug":"content-loops","title":"Content Loops","category":"content","kind":"ui","version":"0.2.0","description":"A data-source-driven repeater harvested from the Instatic CMS base.loop engine, decoupled from its publisher / page-tree / entryStack machinery into a plain React slice. Register pluggable LoopEntitySource backends (each declares display fields + an async fetch returning { items, totalItems }); drop <ContentLoop source|sourceId filters orderBy variants={[A, B]} /> to render one component per item, round-robining items across variants so alternating / featured layouts need no per-item branching. Ships a namespaced source registry (ids must be 'ns.name', so consumer sources can't shadow each other), createMockLoopSource for env-free previews + tests, and none/infinite pagination via useLoopPagination (a shadcn Load more button accumulates pageSize chunks). LoopItem.fields is a generic resolved-value bag — variants read item.fields.title directly, no second lookup. UI-only: no Convex tables shipped; point a source's fetch at Convex/REST when you have a backend. First slice of the feature-harvest ULTRAPLAN (docs/feature-harvest) and a dependency of the planned site-templates-engine + visual-page-canvas.","slicePath":"frontend/slices/content-loops","convexPaths":[],"tags":["content","loop","repeater","list","data-source","pagination","variants"],"install":"npx rahman-resources add content-loops","installs":{"next":{"npm":"npx rahman-resources@latest add content-loops","bun":"bunx rahman-resources@latest add content-loops"},"svelte":{"npm":"npx rahman-resources@latest add content-loops --framework sveltekit","bun":"bunx rahman-resources@latest add content-loops --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/content-loops","npm":[],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/content-loops-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/content-loops/lib/types.ts","frontend/slices/content-loops/lib/registry.ts","frontend/slices/content-loops/lib/mock-source.ts","frontend/slices/content-loops/lib/pagination.ts","frontend/slices/content-loops/lib/variants.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/content-loops"},{"slug":"markdown","title":"Markdown — page container with CRUD tabs + diagrams","category":"content","kind":"ui","version":"0.4.0","description":"Framework-parity Markdown page container with Read / Write / Review surfaces over one shared parser, inline tokenizer, comment model, tab model, snippet registry, list grouping and chart-spec parser. React keeps the existing shadcn/Lucide UI, lazy Mermaid/KaTeX and lazy Recharts canvas. Svelte 5/SvelteKit ships native controls and native SVG bar/line/area/pie charts, so it needs only svelte + katex + mermaid and never pulls React/Lucide/shadcn/Recharts. Both render headings, lists/todos, GitHub-style callouts, fenced code, Mermaid, chart fences, KaTeX, tables, images, toggles and inline marks. Same grammar as the notion blocksToMarkdown / markdownToBlocks bridge; no store or Convex required.","slicePath":"frontend/slices/markdown","convexPaths":[],"tags":["content","markdown","reader","editor","review","comments","mermaid","chart","rich-text","docs","notion-sync"],"install":"npx rahman-resources add markdown","installs":{"next":{"npm":"npx rahman-resources@latest add markdown","bun":"bunx rahman-resources@latest add markdown"},"svelte":{"npm":"npx rahman-resources@latest add markdown --framework sveltekit","bun":"bunx rahman-resources@latest add markdown --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/markdown","npm":["katex@^0.16","mermaid@^11","recharts@^3","lucide-react@^0.400.0"],"shadcn":["button","tabs","textarea"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/markdown-svelte","npm":["svelte@^5","katex@^0.16","mermaid@^11"],"shadcn":[],"sharedFiles":["frontend/slices/markdown/config.ts","frontend/slices/markdown/components/chart-spec.ts","frontend/slices/markdown/lib/comments.ts","frontend/slices/markdown/lib/inline-core.ts","frontend/slices/markdown/lib/page-core.ts","frontend/slices/markdown/lib/parse.ts","frontend/slices/markdown/lib/render-core.ts","frontend/slices/markdown/lib/snippets.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/markdown"},{"slug":"notion-app","title":"Notion App — Block Editor","category":"content","kind":"full","version":"1.2.0","description":"Framework-parity Notion-style block editor. React/Next remains default with dnd-kit/shadcn and rich optional host capabilities; native Svelte 5/SvelteKit reuses the same page/block model, EditorDataAdapter CRUD seam, markdown bridge, block catalog/history semantics, and notion tool collection for title + block CRUD, slash/markdown transforms, todo/list/headings/quote/callout/code/equation/media/table/toggle/layout blocks, reorder, undo/redo, Markdown import/export and child pages without React/Next/dnd-kit/Lucide/shadcn/Sonner runtime.","slicePath":"frontend/slices/notion-app","convexPaths":["convex/features/notion"],"tags":["content","notion","editor","block-editor","rich-text","slash-menu","drag-drop","adapter-seam"],"install":"npx rahman-resources add notion-app","installs":{"next":{"npm":"npx rahman-resources@latest add notion-app","bun":"bunx rahman-resources@latest add notion-app"},"svelte":{"npm":"npx rahman-resources@latest add notion-app --framework sveltekit","bun":"bunx rahman-resources@latest add notion-app --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/notion-app","npm":["sonner@^2.0.7","@dnd-kit/core@^6.3.1","@dnd-kit/sortable@^10.0.0","@dnd-kit/utilities@^3.2.2","katex@^0.16.47","lucide-react@^1.16.0"],"shadcn":["button","dropdown-menu","popover","separator","checkbox","input","switch","skeleton"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/notion-app-svelte","npm":["svelte@^5","katex@^0.16.47"],"shadcn":[],"sharedFiles":["frontend/slices/notion-app/shared/types/index.ts","frontend/slices/notion-app/shared/types/block.ts","frontend/slices/notion-app/shared/types/blocks.ts","frontend/slices/notion-app/shared/types/property.ts","frontend/slices/notion-app/shared/types/database.ts","frontend/slices/notion-app/shared/lib/uid.ts","frontend/slices/notion-app/shared/lib/markdown/index.ts","frontend/slices/notion-app/shared/lib/markdown/fromMarkdown.ts","frontend/slices/notion-app/shared/lib/markdown/toMarkdown.ts","frontend/slices/notion-app/slices/editor/lib/dataAdapter.ts","frontend/slices/notion-app/slices/editor/lib/page-core.ts","frontend/slices/notion-app/slices/editor/lib/block-catalog.ts","frontend/slices/notion-app/slices/editor/lib/history-core.ts","frontend/slices/notion-app/slices/editor/lib/markdownTriggers.ts","frontend/slices/notion-app/slices/editor/lib/turnInto.ts","frontend/slices/notion-app/lib/tools.ts","lib/shared/agentic/define.ts","lib/shared/agentic/schema.ts","lib/shared/agentic/types.ts"],"isDefault":false,"mode":"native"}]},{"slug":"sections","title":"Sections — composable marketing/landing sections","category":"content","kind":"ui","version":"0.5.0","description":"Canonical landing composition with one framework-neutral reducer, LandingStore adapter, ordering helpers, editor field schema, types, seed factory, and safe config parser. React/Next remains the default distribution and is now self-contained (local CRUD/motion/section-head; no template-shared or Next Link dependency). Explicit Svelte 5/SvelteKit installs native LandingProvider, LandingView, LandingEditorView, LandingSectionShell, StatsSection, TestimonialsSection, FaqSection, PricingSection, NewsletterSection, and CustomSection over the same core. v0.5.0 also fixes the previously broken installer source path from frontend/slices/landing-sections to frontend/slices/sections.","slicePath":"frontend/slices/sections","convexPaths":[],"tags":["admin","landing","cms","sections","crud","renderer","svelte","framework-parity"],"install":"npx rahman-resources add sections","installs":{"next":{"npm":"npx rahman-resources@latest add sections","bun":"bunx rahman-resources@latest add sections"},"svelte":{"npm":"npx rahman-resources@latest add sections --framework sveltekit","bun":"bunx rahman-resources@latest add sections --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/sections","npm":["lucide-react@^0.400.0","embla-carousel-autoplay@^8.6.0"],"shadcn":["accordion","badge","button","card","carousel","dialog","input","switch","table","textarea"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/sections-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/sections/types.ts","frontend/slices/sections/reducer.ts","frontend/slices/sections/seed-factory.ts","frontend/slices/sections/lib/core.ts","frontend/slices/sections/lib/fields.ts","frontend/slices/sections/sections/config.ts"],"isDefault":false,"mode":"native"}]},{"slug":"motion-kit","title":"Motion Kit — scroll reveals, carousel, accordion, micro-interactions","category":"ui","kind":"ui","version":"0.2.0","description":"Framework-parity motion primitives over one shared observer/easing/CSS core. React/Next remains the default distribution with Embla React + Radix; Svelte 5/SvelteKit adds native Reveal, Stagger, CountUp, Marquee, Embla-core Carousel, and accessible Accordion without React/Lucide/Radix runtime leakage. Reveal/count/marquee/accordion motion is reduced-motion aware, the Svelte carousel explicitly destroys its Embla instance on unmount, and globals-motion.css stays the single style contract.","slicePath":"frontend/slices/motion-kit","convexPaths":[],"tags":["ui","motion","animation","scroll","reveal","carousel","accordion","marquee","countup","embla","svelte"],"install":"npx rahman-resources add motion-kit","installs":{"next":{"npm":"npx rahman-resources@latest add motion-kit","bun":"bunx rahman-resources@latest add motion-kit"},"svelte":{"npm":"npx rahman-resources@latest add motion-kit --framework sveltekit","bun":"bunx rahman-resources@latest add motion-kit --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/motion-kit","npm":["embla-carousel-react@^8.6.0","embla-carousel-autoplay@^8.6.0","radix-ui@^1.4.3","lucide-react@^0.400.0"],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/motion-kit-svelte","npm":["svelte@^5","embla-carousel@^8.6.0","embla-carousel-autoplay@^8.6.0"],"shadcn":[],"sharedFiles":["frontend/slices/motion-kit/globals-motion.css","frontend/slices/motion-kit/lib/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/motion-kit"},{"slug":"storefront-checkout","title":"Storefront Checkout — guest cart + checkout composition","category":"content","kind":"ui","version":"0.3.0","description":"Guest-friendly persisted cart with one framework-neutral cart store. React/Next keeps CartProvider + shadcn/Lucide CartWidget/CheckoutSummary; Svelte/SvelteKit ships a native store, cart sheet, and checkout summary over the same quantity, localStorage, count/subtotal, IDR-format and agent-tool semantics. Client prices remain display-only: the host MUST re-price every line server-side before creating payment. Optional payment peer owns the actual payment step.","slicePath":"frontend/slices/storefront-checkout","convexPaths":[],"tags":["ecommerce","cart","checkout","guest","storefront","payment","localStorage","sheet"],"install":"npx rahman-resources add storefront-checkout","installs":{"next":{"npm":"npx rahman-resources@latest add storefront-checkout","bun":"bunx rahman-resources@latest add storefront-checkout"},"svelte":{"npm":"npx rahman-resources@latest add storefront-checkout --framework sveltekit","bun":"bunx rahman-resources@latest add storefront-checkout --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/storefront-checkout","npm":["lucide-react@^0.400.0"],"shadcn":["badge","button","card","separator","sheet"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/storefront-checkout-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/storefront-checkout/lib/core.ts","frontend/slices/storefront-checkout/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/storefront-checkout"},{"slug":"theme-presets","title":"Theme Presets — unified switcher with bundled tweakcn registry","category":"ui","kind":"ui","version":"0.5.0","description":"Runtime tweakcn color presets with React/Next kept as the default distribution and native Svelte 5/SvelteKit provider, switcher, site-default-save, display-mode, and theme-color adapters over one shared preset engine. Visitor choice resolves above site default above host default; registry-data.json stays bundled and lazy-loaded; grouping, swatches, CSS injection, persistence, preview/restore, and agent tools remain one framework-neutral source. React display mode uses next-themes; Svelte uses a browser-native light/dark/system adapter.","slicePath":"frontend/slices/theme-presets","convexPaths":[],"tags":["ui","theme","tweakcn","color","preset","switcher","popover","next-themes","svelte","sveltekit"],"install":"npx rahman-resources add theme-presets","installs":{"next":{"npm":"npx rahman-resources@latest add theme-presets","bun":"bunx rahman-resources@latest add theme-presets"},"svelte":{"npm":"npx rahman-resources@latest add theme-presets --framework sveltekit","bun":"bunx rahman-resources@latest add theme-presets --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/theme-presets","npm":["next-themes@^0.4.6","lucide-react@^0.400.0"],"shadcn":["button","popover"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/theme-presets-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/theme-presets/lib/core.ts","frontend/slices/theme-presets/lib/tools.ts","frontend/slices/theme-presets/lib/tweakcn.ts","frontend/slices/theme-presets/lib/tweakcn/apply.ts","frontend/slices/theme-presets/lib/tweakcn/cssBuilder.ts","frontend/slices/theme-presets/lib/tweakcn/groups.ts","frontend/slices/theme-presets/lib/tweakcn/registry-data.json","frontend/slices/theme-presets/lib/tweakcn/registry.ts","frontend/slices/theme-presets/lib/tweakcn/tokens.ts","frontend/slices/theme-presets/lib/tweakcn/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/theme-presets"},{"slug":"site-setup-wizard","title":"Site Setup Wizard — first-run site setup","category":"ui","kind":"ui","version":"0.3.0","description":"Post-claim onboarding wizard for clone-to-own templates. React/Next remains the default UI while Svelte 5/SvelteKit gets a native Identitas / Branding / Konten / Selesai flow over one framework-neutral step, field, preset, validation, save-payload and agent-tool core. Host callbacks still own save, seed, upload and theme-preview behavior; no backend is invented. Branding keeps grouped preset swatches, live preview, brand color/mode, optional logo/favicon upload and Analytics ID.","slicePath":"frontend/slices/site-setup-wizard","convexPaths":[],"tags":["ui","onboarding","wizard","setup","first-run","branding","theme","clone-to-own","templates"],"install":"npx rahman-resources add site-setup-wizard","installs":{"next":{"npm":"npx rahman-resources@latest add site-setup-wizard","bun":"bunx rahman-resources@latest add site-setup-wizard"},"svelte":{"npm":"npx rahman-resources@latest add site-setup-wizard --framework sveltekit","bun":"bunx rahman-resources@latest add site-setup-wizard --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/site-setup-wizard","npm":["lucide-react@^0.400.0"],"shadcn":["button","card","input","label","progress","select"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/site-setup-wizard-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/site-setup-wizard/lib/core.ts","frontend/slices/site-setup-wizard/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/site-setup-wizard"},{"slug":"file-upload","title":"File Upload — pluggable upload + URL resolver with storage-adapter contract","category":"data","kind":"ui","version":"0.4.0","description":"Host-pluggable file upload + URL resolution with React/Next kept as the default distribution and an additive Svelte 5/SvelteKit implementation. Both preserve FileRef parsing, upload/remove behavior, file chips, upload controls, demo localStorage storage, and bounded file tools. React adapters keep useUrl(); Svelte adapters use resolveUrl() plus optional subscribeUrl() so framework hook semantics stay isolated.","slicePath":"frontend/slices/file-upload","convexPaths":[],"tags":["data","upload","files","storage","adapter","portable","notion-like"],"install":"npx rahman-resources add file-upload","installs":{"next":{"npm":"npx rahman-resources@latest add file-upload","bun":"bunx rahman-resources@latest add file-upload"},"svelte":{"npm":"npx rahman-resources@latest add file-upload --framework sveltekit","bun":"bunx rahman-resources@latest add file-upload --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/file-upload","npm":["lucide-react@^0.400.0"],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/file-upload-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/file-upload"},{"slug":"selection","title":"Selection — marquee multi-select + bulk actions","category":"ui","kind":"ui","version":"0.3.0","description":"Framework-agnostic multi-selection for any vertical list (Notion-style blocks, table rows, cards). Hold-and-drag on empty space draws a rubber-band rectangle — AutoCAD-style: drag RIGHT selects only fully-enclosed items (solid ring), drag LEFT selects anything the rectangle touches (dashed green ring). Click an item's edge to select (Shift = range, Cmd/Ctrl = toggle). Selecting activates items with a ring + data-block-selected attribute. Backspace/Delete bulk-deletes, Escape and click-outside clear, and a floating count toolbar offers Delete/Clear. SelectionProvider owns only the id set — the host owns the data via onBulkDelete(ids). Pairs with notion-shell (the notion-clone template wires it onto the editor); lifted from notion-page-clone's block-selection slice.","slicePath":"frontend/slices/selection","convexPaths":[],"tags":["ui","selection","marquee","rubber-band","multi-select","bulk","notion","blocks","list"],"install":"npx rahman-resources add selection","installs":{"next":{"npm":"npx rahman-resources@latest add selection","bun":"bunx rahman-resources@latest add selection"},"svelte":{"npm":"npx rahman-resources@latest add selection --framework sveltekit","bun":"bunx rahman-resources@latest add selection --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/selection","npm":[],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/selection-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/selection"},{"slug":"notion-ui","title":"Notion UI — page editor · database · sidebar primitives","category":"ui","kind":"ui","version":"0.25.0","description":"Framework-parity, props-driven Notion primitives over one shared domain model. React/Next remains default; native Svelte 5/SvelteKit now provides page, database and sidebar variants. Page keeps block CRUD, slash/markdown transforms and native drag reorder; database renders all 11 view kinds over the same filter/sort/formula/aggregate/CSV/JSON engines; sidebar reuses the same tree projection helpers with native drag/reparent. Host owns all data and authorization.","slicePath":"frontend/slices/notion-ui","convexPaths":[],"tags":["ui","notion","notion-like","database","table","board","list","gallery","calendar","feed","chart","dashboard","form","map","timeline","gantt","kanban","views","filter","sort","property","files","person","formula","timestamp","unique-id","csv","json","import","export","template","data","backup","primitive","optional","embeddable","svelte","framework-parity"],"install":"npx rahman-resources add notion-ui","installs":{"next":{"npm":"npx rahman-resources@latest add notion-ui","bun":"bunx rahman-resources@latest add notion-ui"},"svelte":{"npm":"npx rahman-resources@latest add notion-ui --framework sveltekit","bun":"bunx rahman-resources@latest add notion-ui --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/notion-ui","npm":["@dnd-kit/core@^6.3.1","@dnd-kit/sortable@^10.0.0","@dnd-kit/utilities@^3.2.2","katex@^0.16.47","highlight.js@^11.11.1","recharts@^3.8.0","lucide-react@^1.16.0"],"shadcn":["button","checkbox","dialog","dropdown-menu","input","popover","select","separator","sheet","switch","toggle-group","tooltip"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/notion-ui-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/notion-ui"},{"slug":"image-picker","title":"Image Picker — one-button image/wallpaper chooser (gallery · upload · link · Unsplash · reposition)","category":"ui","kind":"ui","version":"0.4.0","description":"Generic image/wallpaper picker — not coupled to Notion. The headline API is ONE button (ImagePickerButton) that opens a dialog with 4 tabs: Gallery (12 colours + 8 gradients + Notion textures), Upload (drag/click, ≤8MB), Link (paste any https image URL), Unsplash (bundled curated landscapes + live search). On pick, onChange fires with an ImageValue ({ type, value, positionY?, metadata? }). ImageBanner is the optional reposition-able band — render an ImageValue as a full-width cover / profile header / card hero with hover controls: Change (opens the dialog), Reposition (drag the vertical focal point), Remove. The slice imports NO other slice and NO backend — the upload backend and Unsplash search are INJECTED as props (onUpload + searchUnsplash), so it drops into any app: wire onUpload to the `files` slice and searchUnsplash to a server route via unsplashSearchVia('/api/unsplash') that holds UNSPLASH_ACCESS_KEY server-side (never NEXT_PUBLIC). Ships a curated Unsplash fallback + gallery so it works with zero config. parseImage normalizes legacy raw-string values; imageStyle builds the focal-point CSS. Wired into the notion-page-clone template as the page cover via NotionPage's coverSlot. React/Next remains the default renderer; native Svelte 5/SvelteKit ships the same picker/dialog/banner behavior over shared portable image semantics.","slicePath":"frontend/slices/image-picker","convexPaths":[],"tags":["ui","image","picker","wallpaper","cover","upload","unsplash","gallery","reposition","files","primitive","portable","dialog"],"install":"npx rahman-resources add image-picker","installs":{"next":{"npm":"npx rahman-resources@latest add image-picker","bun":"bunx rahman-resources@latest add image-picker"},"svelte":{"npm":"npx rahman-resources@latest add image-picker --framework sveltekit","bun":"bunx rahman-resources@latest add image-picker --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/image-picker","npm":["lucide-react@^0.400.0"],"shadcn":["dialog","button","input"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/image-picker-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/image-picker/types.ts","frontend/slices/image-picker/lib/core.ts","frontend/slices/image-picker/lib/galleryPresets.ts","frontend/slices/image-picker/lib/imageStyle.ts","frontend/slices/image-picker/lib/parseImage.ts","frontend/slices/image-picker/lib/tools.ts","frontend/slices/image-picker/lib/unsplashCurated.ts","frontend/slices/image-picker/lib/unsplashSearch.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/image-picker"},{"slug":"workspace-shell","title":"Workspace Shell — atomic (workspace × menuSet) NavContext","category":"ui","kind":"full","version":"1.0.0","description":"Unified workspace + menu navigation primitive. NavContext = (workspaceId, menuSetId) atomic pair. 2-tier dropdown switcher (workspace radio + menuSet picker), ContextBadge header chip, full editor with tabs (menus / workspace tree / settings), tiered RBAC (admin menus.manage, user menus.fork). Replaces silo'd menu-store + workspace-store slices in superspace. Resolver chain: user nav-context cache > user assignment > workspace default > system. Source: superspace.","slicePath":"template-base/frontend/slices/workspace-shell","convexPaths":["template-base/convex/features/workspaceShell"],"tags":["ui","navigation","workspace","menu","shell","convex","rbac"],"install":"","installs":{"next":{"npm":"npx rahman-resources@latest add workspace-shell","bun":"bunx rahman-resources@latest add workspace-shell"},"svelte":null},"frameworks":[{"id":"react-next","path":"frontend/slices/workspace-shell","npm":[],"shadcn":["dropdown-menu","popover","command","tabs","switch"],"sharedFiles":[],"isDefault":true,"mode":"native"}],"previewPath":"/preview/slices/workspace-shell"},{"slug":"library","title":"Library — resource hub (prompts · visuals · snippets · links)","category":"data","kind":"full","version":"0.3.0","description":"Grab-bag resource hub. One polymorphic `libraryItems` table holds six kinds — prompt, image, video, link, download, snippet — with per-kind payload fields switched on `kind` (no joins). Attribution-first: every item carries optional source/license/tools so re-shares stay correct. Collections group items. Convex-backed (schema + queries + unauthenticated mutations); SEO override fields reused from the `seo` peer slice so the surface matches blog/projects rows. Public view = filterable card grid + per-item detail with copy-to-clipboard for prompts/snippets and an opt-in upvote control. React/Next remains default; native Svelte 5/SvelteKit renders the same model/default/tool semantics against the same Convex backend. Lifted 2026-05-28 from rahmanef.com; 432-LOC mutations + 330-LOC detail split for the 200-LOC cap; Indonesian copy + custom primitives stripped (prop-driven English defaults); cross-slice auth + comments-votes coupling dropped (consumer wraps mutations + supplies the upvote handler).","slicePath":"frontend/slices/library","convexPaths":["convex/features/library"],"tags":["library","resources","prompts","snippets","moodboard","downloads","attribution","seo","personal-brand"],"install":"npx rahman-resources add library","installs":{"next":{"npm":"npx rahman-resources@latest add library","bun":"bunx rahman-resources@latest add library"},"svelte":{"npm":"npx rahman-resources@latest add library --framework sveltekit","bun":"bunx rahman-resources@latest add library --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/library","npm":["convex@^1.17","next@^15","react@^18"],"shadcn":[],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/library-svelte","npm":["svelte@^5","convex@^1.17"],"shadcn":[],"sharedFiles":["frontend/slices/library/lib/types.ts","frontend/slices/library/lib/defaults.ts","frontend/slices/library/lib/core.ts","frontend/slices/library/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/library"},{"slug":"data-table","title":"Data Table — TanStack","category":"data","kind":"ui","version":"0.3.0","description":"Framework-parity DataTable: React/Next stays on TanStack React Table v8 + shadcn, while SvelteKit uses the official Svelte 5 TanStack Table v9 adapter with native semantic controls. Both expose sorting, column-bound filtering, pagination, row selection, column visibility, compact/comfortable density, and shared labels/summary semantics. Pure UI — consumers own data fetching and persistence.","slicePath":"frontend/slices/data-table","convexPaths":[],"tags":["data","table","datagrid","tanstack","sorting","pagination","svelte","framework-parity"],"install":"npx rahman-resources add data-table","installs":{"next":{"npm":"npx rahman-resources@latest add data-table","bun":"bunx rahman-resources@latest add data-table"},"svelte":{"npm":"npx rahman-resources@latest add data-table --framework sveltekit","bun":"bunx rahman-resources@latest add data-table --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/data-table","npm":["@tanstack/react-table@^8.21.3","lucide-react@^0.400.0"],"shadcn":["table","button","input","checkbox","dropdown-menu"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/data-table-svelte","npm":["svelte@^5","@tanstack/svelte-table@^9.2.4"],"shadcn":[],"sharedFiles":["frontend/slices/data-table/lib/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/data-table"},{"slug":"pages-cms","title":"Pages CMS — block-composed multi-page editor","category":"content","kind":"ui","version":"0.2.0","description":"Framework-parity multi-page CMS over one shared reducer/types/core. React keeps shadcn + Lucide admin surfaces but is now clean-install portable without Next-only imports or repo-only helpers. Svelte 5/SvelteKit adds native PagesView, PageEditorView, all 11 block editors, public renderers, provider and localStorage adapter with no React/Lucide/shadcn leakage. Draft block reordering stays local until Save so unsaved edits are preserved.","slicePath":"frontend/slices/pages-cms","convexPaths":[],"tags":["content","cms","pages","blocks","editor","builder","basics"],"install":"npx rahman-resources add pages-cms","installs":{"next":{"npm":"npx rahman-resources@latest add pages-cms","bun":"bunx rahman-resources@latest add pages-cms"},"svelte":{"npm":"npx rahman-resources@latest add pages-cms --framework sveltekit","bun":"bunx rahman-resources@latest add pages-cms --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/pages-cms","npm":["lucide-react@^0.400.0"],"shadcn":["badge","button","table","input","textarea","label","select","switch","card","dialog"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/pages-cms-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/pages-cms/config.ts","frontend/slices/pages-cms/types.ts","frontend/slices/pages-cms/lib/core.ts","frontend/slices/pages-cms/lib/default-pages.ts","frontend/slices/pages-cms/lib/duplicate.ts","frontend/slices/pages-cms/lib/nav-builder.ts","frontend/slices/pages-cms/lib/reducer.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/pages-cms"},{"slug":"feedback-states","title":"Feedback States — loading skeletons + empty/error states","category":"ui","kind":"ui","version":"0.2.1","description":"Two co-located placeholder surfaces behind one slug. loading: a configurable LoadingSkeleton over the shadcn Skeleton (kind presets text / card / list / table / form / page / block, overridable count + columns) plus a spinner LoadingState (inline / block / overlay) for in-flight work. empty: a configurable EmptyState over the shadcn Empty (404 / 500 / 403 / no-results / empty-list / first-use, overridable icon/title/copy/actions) plus an ErrorPage full-page wrapper for app/not-found.tsx and app/error.tsx. Install one surface with `npx rr add feedback-states loading|empty`, or both with `npx rr add feedback-states`. Replaces ad-hoc animate-pulse divs, hand-rolled Loader2 spans, and one-off error pages.","slicePath":"frontend/slices/feedback-states","convexPaths":[],"tags":["loading","skeleton","spinner","empty-state","404","500","403","error-page","fallback","placeholder","basics"],"install":"npx rahman-resources add feedback-states","installs":{"next":{"npm":"npx rahman-resources@latest add feedback-states","bun":"bunx rahman-resources@latest add feedback-states"},"svelte":{"npm":"npx rahman-resources@latest add feedback-states --framework sveltekit","bun":"bunx rahman-resources@latest add feedback-states --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/feedback-states","npm":["lucide-react@^0.400.0"],"shadcn":["skeleton","spinner","empty","button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/feedback-states-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":[],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/feedback-states"},{"slug":"marketing-chrome","title":"Marketing Chrome — Header + Footer","category":"ui","kind":"ui","version":"0.3.0","description":"MarketingHeader (split | centered | minimal layouts, sticky option, mobile sheet menu) + MarketingFooter (columns | slim layouts, link columns, social icons, legal bar). Brand / nav / CTA / columns all props — no hardcoded content. Lucide stand-ins for brand glyphs; swap a brand icon set post-copy (README).","slicePath":"frontend/slices/marketing-chrome","convexPaths":[],"tags":["header","footer","navbar","marketing","navigation","chrome","basics"],"install":"npx rahman-resources add marketing-chrome","installs":{"next":{"npm":"npx rahman-resources@latest add marketing-chrome","bun":"bunx rahman-resources@latest add marketing-chrome"},"svelte":{"npm":"npx rahman-resources@latest add marketing-chrome --framework sveltekit","bun":"bunx rahman-resources@latest add marketing-chrome --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/marketing-chrome","npm":["lucide-react@^0.400.0"],"shadcn":["button","sheet","separator"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/marketing-chrome-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/marketing-chrome/lib/core.ts","frontend/slices/marketing-chrome/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/marketing-chrome"},{"slug":"settings","title":"Settings — account + appearance shells","category":"ui","kind":"ui","version":"1.2.0","description":"Two settings surfaces behind one slug, each adapter-driven so the slice owns no data. account: SettingsShell two-column surface (nav collapses to a Select on mobile) — Profile (avatar/name/email/bio), Preferences (theme/language/density), Notifications (switch rows), Danger zone (AlertDialog-confirmed delete) over an ASYNC SettingsAdapter { load, save(patch) } with optimistic save + rollback; createMemoryAdapter ships for demos. appearance: AppearancePanel (style/mode/accent/wallpaper/reduce-transparency/display) over a SYNC per-setting AppearanceAdapter, plus the generic SettingsSection / SettingsRow / Segmented / AccentSwatches primitives you compose custom panels from. Install one surface with `npx rr add settings account|appearance`, or both with `npx rr add settings`.","slicePath":"frontend/slices/settings","convexPaths":[],"tags":["settings","preferences","account","appearance","theme","adapter","shell","primitives","ui","basics"],"install":"npx rahman-resources add settings","installs":{"next":{"npm":"npx rahman-resources@latest add settings","bun":"bunx rahman-resources@latest add settings"},"svelte":{"npm":"npx rahman-resources@latest add settings --framework sveltekit","bun":"bunx rahman-resources@latest add settings --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/settings","npm":["lucide-react@^0.400.0"],"shadcn":["alert-dialog","avatar","button","card","input","label","select","separator","skeleton","switch","textarea","toggle-group"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/settings-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/settings/variants/account/lib/adapter.ts","frontend/slices/settings/variants/account/lib/core.ts","frontend/slices/settings/variants/account/lib/nav-core.ts","frontend/slices/settings/variants/account/lib/tools.ts","frontend/slices/settings/variants/appearance/lib/types.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/settings"},{"slug":"notifications-center","title":"Notifications Center — bell + inbox","category":"ui","kind":"ui","version":"0.3.0","description":"Adapter-driven notification inbox with one shared newest-first snapshot/filter/action core. React/Next keeps the shadcn + Lucide bell/list/item UI; Svelte/SvelteKit ships native bell/list/item UI and a Svelte-readable adapter over the same NotificationsAdapter, relative-time, unread, mutation, and agent-tool semantics.","slicePath":"frontend/slices/notifications-center","convexPaths":[],"tags":["notifications","inbox","bell","unread","toast","basics"],"install":"npx rahman-resources add notifications-center","installs":{"next":{"npm":"npx rahman-resources@latest add notifications-center","bun":"bunx rahman-resources@latest add notifications-center"},"svelte":{"npm":"npx rahman-resources@latest add notifications-center --framework sveltekit","bun":"bunx rahman-resources@latest add notifications-center --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/notifications-center","npm":["lucide-react@^0.400.0"],"shadcn":["button","popover","sheet","badge","scroll-area","separator","tabs","avatar"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/notifications-center-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/notifications-center/lib/types.ts","frontend/slices/notifications-center/lib/adapter.ts","frontend/slices/notifications-center/lib/relativeTime.ts","frontend/slices/notifications-center/lib/state.ts","frontend/slices/notifications-center/lib/tools.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/notifications-center"},{"slug":"design-studio","title":"Design Studio — photo / social design canvas","category":"os","kind":"ui","version":"1.1.0","description":"Framework-parity layered photo/social editor. React/Next remains default; native Svelte 5/SvelteKit covers the same canvas workflow over shared framework-neutral model/document, observable undo/redo, scene, filter/mask, safe-area, serialization, sample-media, and host-adapter cores. Both renderers support image/text/shape/sticker/HTML layers, transforms, masks/custom CSS, presets, keyboard shortcuts, JSON/HTML import-export, and optional host persistence through configureMediaStudio.","slicePath":"frontend/slices/design-studio","convexPaths":[],"tags":["canvas","editor","layers","filters","export","design","ui","svelte","framework-parity"],"install":"npx rahman-resources add design-studio","installs":{"next":{"npm":"npx rahman-resources@latest add design-studio","bun":"bunx rahman-resources@latest add design-studio"},"svelte":{"npm":"npx rahman-resources@latest add design-studio --framework sveltekit","bun":"bunx rahman-resources@latest add design-studio --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/design-studio","npm":["lucide-react@^0.400.0"],"shadcn":["button","dialog","badge","tooltip","scroll-area"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/design-studio-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/design-studio/config.ts","frontend/slices/design-studio/lib/filters.ts","frontend/slices/design-studio/lib/host-core.ts","frontend/slices/design-studio/lib/masks.ts","frontend/slices/design-studio/lib/model-core.ts","frontend/slices/design-studio/lib/samples.ts","frontend/slices/design-studio/lib/scene-core.ts","frontend/slices/design-studio/lib/serialize.ts","frontend/slices/design-studio/lib/studio-core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/design-studio"},{"slug":"quicklinks","title":"Quicklinks — website shortcuts with favicons","category":"os","kind":"ui","version":"1.1.0","description":"A website-shortcut grid: add/remove links with auto favicons (Google s2) and new-tab open. State lives behind an injectable QuicklinksStore — createLocalStore persists to localStorage (SSR-safe hydrate), createMemoryStore suits previews/tests, configureQuicklinks swaps in a host store. Pairs with appshell: the useQuickLinks capability + QuicklinkIcon surface the same links in the dock/Launchpad/mobile grid.","slicePath":"frontend/slices/quicklinks","convexPaths":[],"tags":["shortcuts","bookmarks","favicons","launcher","ui"],"install":"npx rahman-resources add quicklinks","installs":{"next":{"npm":"npx rahman-resources@latest add quicklinks","bun":"bunx rahman-resources@latest add quicklinks"},"svelte":{"npm":"npx rahman-resources@latest add quicklinks --framework sveltekit","bun":"bunx rahman-resources@latest add quicklinks --framework sveltekit"}},"frameworks":[{"id":"react-next","path":"frontend/slices/quicklinks","npm":["lucide-react"],"shadcn":["button"],"sharedFiles":[],"isDefault":true,"mode":"native"},{"id":"svelte-sveltekit","path":"frontend/slices/quicklinks-svelte","npm":["svelte@^5"],"shadcn":[],"sharedFiles":["frontend/slices/quicklinks/lib/core.ts"],"isDefault":false,"mode":"native"}],"previewPath":"/preview/slices/quicklinks"}],"layouts":[],"recipes":[],"rules":["best-practice profile: Next.js or Svelte 5; Convex optional — exact reviewed versions at /best-practice","root slices/<slug> vertical slices + thin dynamic route adapters + registry/data SSOT","active framework shadcn port + theme tokens","copy-first flow","workspace isolation per Convex query","RBAC + audit log on every mutation","commit convex/_generated before deploy","audit-bp score ≥80 before deploy"]}