{"_id":"@anchrd/signals-ui","_rev":"4-a794a2628413abf01e0275a7551ac0fd","name":"@anchrd/signals-ui","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@anchrd/signals-ui","version":"0.1.0","license":"UNLICENSED","_id":"@anchrd/signals-ui@0.1.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"a5080c7e9ad34fa29405bfce070b0ad2b16a5011","tarball":"https://registry.npmjs.org/@anchrd/signals-ui/-/signals-ui-0.1.0.tgz","fileCount":18,"integrity":"sha512-82iqzVMDx+c/ces532e4bM6Pc5R5bZ0JBDE/LlS7E3lPSkIqP6F+uCfmPC84Qyf6FCGYde2GXYzwjKCfijniqw==","signatures":[{"sig":"MEUCIQDjboern5QKZYE/NwJy1sBnfyHV6JvUKOy+U2JXRxyFCwIgQoUnzSb07mCuNAelKSeqNZqlqib8ESxMFNzePrX+sWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26234},"type":"module","gitHead":"2b62153d6828cb3ee99e89ba05a2eb300735f37f","private":false,"scripts":{"dev":"vite","test":"bun test $(find ./src -name '*.unit.tsx' -o -name '*.unit.ts')","build":"vite build","typecheck":"tsc --noEmit","lint:tokens":"node scripts/lint-tokens.mjs src"},"_npmUser":{"name":"anchrd","email":"jack.schmidt@outlook.de"},"_npmVersion":"11.6.0","directories":{},"_nodeVersion":"24.8.0","dependencies":{"vite":"^7.2.2","react":"^19.2.0","react-dom":"^19.2.0","tailwindcss":"^4.1.16","lucide-react":"^0.550.0","@tailwindcss/vite":"^4.1.16","@vitejs/plugin-react":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.2","@types/react":"^19.2.2","@types/react-dom":"^19.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signals-ui_0.1.0_1787598415806_0.1253017286645972","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anchrd/signals-ui","version":"0.2.0","license":"UNLICENSED","_id":"@anchrd/signals-ui@0.2.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"dfd4c0e49d8bdd283435a94009384fd4c9145132","tarball":"https://registry.npmjs.org/@anchrd/signals-ui/-/signals-ui-0.2.0.tgz","fileCount":19,"integrity":"sha512-nK6S9XJCUEgqtoz2VW1UqJRhcEGMe2RSpGvEYCqL+njZKz3DRqHE3RvHJ1nX8tylMy9MX9CHZ1hibajkXJYSrg==","signatures":[{"sig":"MEQCIFpfuFGN8adPnNTi6eaycS4QYXe6J0sb8newsjicgYomAiA9YFVAnCTvbTWioqvYwBsTbIDC/7vjetuxC9tmtVproA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28616},"type":"module","gitHead":"60db83bac6bae9f7e82a7a297c6af2047820499a","private":false,"scripts":{"dev":"vite","test":"bun test $(find ./src -name '*.unit.tsx' -o -name '*.unit.ts')","build":"vite build","typecheck":"tsc --noEmit","lint:tokens":"node scripts/lint-tokens.mjs src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8cb923cd-a319-4083-9e6b-d0bc18df18c8"}},"_npmVersion":"12.0.2","description":"The interface of anchrd signals: a sidebar listing every signal, and its source, condition and deliveries beside it.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"vite":"^7.2.2","react":"^19.2.0","react-dom":"^19.2.0","tailwindcss":"^4.1.16","lucide-react":"^0.550.0","@tailwindcss/vite":"^4.1.16","@vitejs/plugin-react":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.2","@types/react":"^19.2.2","@types/react-dom":"^19.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signals-ui_0.2.0_1787605206332_0.8042364225784038","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anchrd/signals-ui","version":"0.3.0","license":"UNLICENSED","_id":"@anchrd/signals-ui@0.3.0","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"dist":{"shasum":"dec96248d28f45cee427d37a603e5d55425229b5","tarball":"https://registry.npmjs.org/@anchrd/signals-ui/-/signals-ui-0.3.0.tgz","fileCount":39,"integrity":"sha512-V98MsV7RIowAes9h3gpuxlQGXAnROtc6JT6XjaZ8iG4m6A+gkvsvBgNQgBdEkLPXXbNhoIG3D9h8dqziVUI3aA==","signatures":[{"sig":"MEYCIQCTDQ3EGwjgsvDh92vNojjT3ruDm5cBKt9dch36cSz/bAIhAMjbm93D6+ZNjEYJ5opnjR+dQzD86dQSwYwNwxOCE85u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113799},"type":"module","gitHead":"d82707bbb00df7badf645bbf52b11f82b5f2e9d6","private":false,"scripts":{"dev":"vite","test":"bun test $(find ./src -name '*.unit.tsx' -o -name '*.unit.ts')","build":"vite build","typecheck":"tsc --noEmit","lint:tokens":"node scripts/lint-tokens.mjs src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8cb923cd-a319-4083-9e6b-d0bc18df18c8"}},"_npmVersion":"12.0.2","description":"The interface of anchrd signals: a sidebar listing every signal, and its source, condition and deliveries beside it.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","vite":"^7.2.2","react":"^19.2.0","react-dom":"^19.2.0","tailwindcss":"^4.1.16","lucide-react":"^0.550.0","@tailwindcss/vite":"^4.1.16","@vitejs/plugin-react":"^5.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.2","@types/react":"^19.2.2","@types/react-dom":"^19.2.2"},"_npmOperationalInternal":{"tmp":"tmp/signals-ui_0.3.0_1787930299645_0.7133000003012393","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@anchrd/signals-ui","version":"0.4.0","type":"module","private":false,"license":"UNLICENSED","scripts":{"build":"vite build","dev":"vite","lint:tokens":"node scripts/lint-tokens.mjs src","test":"bun test $(find ./src -name '*.unit.tsx' -o -name '*.unit.ts')","typecheck":"tsc --noEmit"},"dependencies":{"@tailwindcss/vite":"^4.1.16","@vitejs/plugin-react":"^5.1.0","lucide-react":"^0.550.0","react":"^19.2.0","react-dom":"^19.2.0","tailwindcss":"^4.1.16","vite":"^7.2.2","zod":"^4.4.3"},"devDependencies":{"@types/bun":"^1.3.2","@types/react":"^19.2.2","@types/react-dom":"^19.2.2"},"gitHead":"4ba3b4a1e79c3560e4e00c95606cb7cd68d2509a","_id":"@anchrd/signals-ui@0.4.0","description":"The interface of anchrd signals: a sidebar listing every signal, and its source, condition and deliveries beside it.","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-dYDt35TNW4SJFUNu8txt8FOHQggLIhfed2SZU3HYUlmtR4uY7vZ+rDSakwO3DOIfuZDIET73pcOyde49F4+C4w==","shasum":"a34fafd9b5b6b556d8bcf81a9b25145dd2eadb2f","tarball":"https://registry.npmjs.org/@anchrd/signals-ui/-/signals-ui-0.4.0.tgz","fileCount":43,"unpackedSize":150392,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGktDcLhfBthEdWu5gYx7m+rXpj4o3yzKsmRMs9y6YinAiAdopGoYTaC9MXrEkXWFQDSxVpsRUjxyWjgRgLCgGgHpA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8cb923cd-a319-4083-9e6b-d0bc18df18c8"}},"directories":{},"maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/signals-ui_0.4.0_1788052691091_0.06684504242091838"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-24T19:06:55.562Z","modified":"2026-08-30T01:18:11.400Z","0.1.0":"2026-08-24T19:06:55.982Z","0.2.0":"2026-08-24T21:00:06.477Z","0.3.0":"2026-08-28T15:18:19.805Z","0.4.0":"2026-08-30T01:18:11.258Z"},"license":"UNLICENSED","description":"The interface of anchrd signals: a sidebar listing every signal, and its source, condition and deliveries beside it.","maintainers":[{"name":"anchrd","email":"jack.schmidt@outlook.de"}],"readme":"# @anchrd/signals-ui\n\nThe interface of anchrd signals: a sidebar listing every signal, and its source, condition and\ndeliveries beside it.\n\nThis package ships **sources**, not a build. Whoever installs it builds it (see ADR-0002), and the\nsignals worker serves the result as its static assets.\n\n## Install\n\n```sh\nnpm install @anchrd/signals-ui\n```\n\n## Build\n\n```sh\nnpm run build --workspace @anchrd/signals-ui   # writes dist/\n```\n\nPoint the worker at the result:\n\n```jsonc\n\"assets\": {\n  \"directory\": \"../../packages/ui/dist\",\n  \"binding\": \"ASSETS\",\n  // ⚠️ Not optional. Cloudflare serves assets BEFORE the worker unless told otherwise, and the\n  // asset handler would answer `/api/v1/rules` with `index.html` — a client that asked for data\n  // gets a page, and the failure reads as a broken client at both ends.\n  \"run_worker_first\": true,\n  // A reload on `/signals/7` is a path no file matches. Without this it is a 404 rather than the\n  // interface, and only for people who reload — which is why it is easy to ship without noticing.\n  \"not_found_handling\": \"single-page-application\"\n}\n```\n\n⚠️ **Without the binding the worker answers exactly as before**: `POST /mcp` and nothing else. An\ninstallation that only wants the MCP door configures no assets, and that is a state, not a fault.\n\n## Theming\n\n`src/styles.css` holds the defaults, `src/theme/custom.css` is loaded after it and belongs to\nwhoever installs. Product code uses semantic tokens only — no hex values, no palette classes — and\n`npm run lint:tokens` fails on either. The check runs in CI, because one that nobody runs is not a\ncheck.\n\nThe default tokens are byte-identical to those of `@anchrd/intel-ui`, `@anchrd/gate-ui` and\n`@anchrd/agents-ui`: somebody who knows one of the four knows this one.\n\n## Texts\n\nEvery visible string goes through `useI18n()`; the catalogues are `src/i18n/de.json`, `en.json` and\n`es.json`. A missing key renders as the key itself rather than as an empty string, so an untranslated\ntext is visible instead of silently blank.\n\n⚠️ **A counted sentence carries a form per plural category**, chosen by `Intl.PluralRules` rather\nthan by comparing the number with one. `{count} Signale` reads wrong at one, and a comparison against\none is right for German and English and wrong for the next language somebody adds.\n\n## Licence\n\nUNLICENSED — for use within anchrd.\n","readmeFilename":"README.md"}