{
  "name": "zoblocks",
  "homepage": "https://zoblocks.design",
  "items": [
    {
      "name": "utils",
      "type": "zoblocks:lib",
      "title": "Utils",
      "description": "Class-name merge helper shared by every ZoBlocks component.",
      "categories": [],
      "url": "https://zoblocks.design/r/utils.json"
    },
    {
      "name": "recorder-core",
      "type": "zoblocks:lib",
      "title": "Recorder core",
      "description": "Signal path, peak buffer, capture machine and the thirteen fault detectors behind Recorder. Installed automatically with the recorder.",
      "categories": [],
      "url": "https://zoblocks.design/r/recorder-core.json"
    },
    {
      "name": "loader-core",
      "type": "zoblocks:lib",
      "title": "Loader core",
      "description": "Shared frame, timing gate, and stylesheet behind every ZoBlocks loader. Installed automatically with any loader.",
      "categories": [],
      "url": "https://zoblocks.design/r/loader-core.json"
    },
    {
      "name": "accordion-core",
      "type": "zoblocks:lib",
      "title": "Accordion core",
      "description": "Headless disclosure behaviour and stylesheet behind Accordion and Disclosure: the open-set policies, the ARIA wiring, the access model, and find-in-page support. Installed automatically with either.",
      "categories": [],
      "url": "https://zoblocks.design/r/accordion-core.json"
    },
    {
      "name": "clinical-status-core",
      "type": "zoblocks:lib",
      "title": "Clinical status core",
      "description": "The closed status vocabulary: nine scales, forty steps, each carrying a tone, a CSS glyph and a word in both a clinician and a patient register — plus the FHIR adapters that map Observation, AllergyIntolerance, Encounter, Task, Consent and DetectedIssue onto them. Installed automatically with ClinicalStatus.",
      "categories": [],
      "url": "https://zoblocks.design/r/clinical-status-core.json"
    },
    {
      "name": "result-value-core",
      "type": "zoblocks:lib",
      "title": "Result value core",
      "description": "The seven absence reasons, the interpretation precedence rule, the delta suppression rule, and the sentence composer that turns an observation into one spoken clinical statement. Includes the FHIR Observation adapter. Installed automatically with ResultValue.",
      "categories": [],
      "url": "https://zoblocks.design/r/result-value-core.json"
    },
    {
      "name": "allergy-core",
      "type": "zoblocks:lib",
      "title": "Allergy core",
      "description": "The distinction between criticality (risk of a future reaction) and reaction severity (how bad a past one was), six verification states, four kinds, and the rule that a no-known-allergies assertion without an asserter and a date is not an assertion. Includes the FHIR AllergyIntolerance adapter. Installed automatically with AllergyChip.",
      "categories": [],
      "url": "https://zoblocks.design/r/allergy-core.json"
    },
    {
      "name": "risk-core",
      "type": "zoblocks:lib",
      "title": "Risk core",
      "description": "Five bands including one for a patient the model could not score, driver attribution with its concentration, and a validity window that turns an old score into an expired one. Includes the FHIR RiskAssessment adapter. Installed automatically with RiskIndicator.",
      "categories": [],
      "url": "https://zoblocks.design/r/risk-core.json"
    },
    {
      "name": "provenance-core",
      "type": "zoblocks:lib",
      "title": "Provenance core",
      "description": "Six source classes with CSS glyphs rather than colours, observed-at kept separate from recorded-at, per-datum staleness policies, and the confirmation state of an AI-extracted value. Includes a ledger keyed by resource and version, and the FHIR Provenance adapter. Installed automatically with ProvenanceChip.",
      "categories": [],
      "url": "https://zoblocks.design/r/provenance-core.json"
    },
    {
      "name": "trend-core",
      "type": "zoblocks:lib",
      "title": "Trend core",
      "description": "Comparability segmentation across assay, method and unit changes, a minimum-points floor, the reliable-change threshold that renders noise as flat, and a required valence because half of clinical measures improve by falling. One SVG path per segment, no chart library. Installed automatically with TrendIndicator.",
      "categories": [],
      "url": "https://zoblocks.design/r/trend-core.json"
    },
    {
      "name": "datetime-core",
      "type": "zoblocks:lib",
      "title": "Date & time core",
      "description": "The temporal engine and the behaviour every date, time and session control shares. Plain serialisable value types that carry their own precision — a birth date has no time member and cannot become midnight UTC — integer calendar arithmetic, a keyboard-first segmented field, an accessible month grid, and the session algebra whose driver is explicit state rather than an inference. Reads IANA zone data through Intl rather than shipping an offset table, and never reads the wall clock. Installed automatically with DateField, Calendar, DatePicker, BirthDateField, TimeField, SessionTimeField and ClinicalDateTime.",
      "categories": [],
      "url": "https://zoblocks.design/r/datetime-core.json"
    },
    {
      "name": "clock-core",
      "type": "zoblocks:lib",
      "title": "Clock",
      "description": "One date format shared by the components that have to say \"until when\": an ISO timestamp read as the wall-clock time it was written in, rather than re-zoned through the reader's browser. Its own item rather than part of `utils`, because inside an application `@/lib/utils` is a name the application usually already owns.",
      "categories": [],
      "url": "https://zoblocks.design/r/clock-core.json"
    },
    {
      "name": "presence-core",
      "type": "zoblocks:lib",
      "title": "Presence core",
      "description": "Nine clinical presence states rather than a green dot, ring geometry that survives a colour deficiency, rota resolution that returns a gap instead of the nearest plausible name, chart co-presence conflict detection, and escalation routing that offers the covering clinician before it offers an override. Installed automatically with CareTeamPresence.",
      "categories": [],
      "url": "https://zoblocks.design/r/presence-core.json"
    },
    {
      "name": "chart-header-core",
      "type": "zoblocks:lib",
      "title": "Chart header core",
      "description": "The Sex Parameter for Clinical Use resolved against what is on screen rather than read as a demographic, a safety strip whose absences are named rather than omitted, encounter context that will sit in \"none selected\" rather than pick one for you, and EpisodeOfCare into a program and a week. Installed automatically with ChartHeader.",
      "categories": [],
      "url": "https://zoblocks.design/r/chart-header-core.json"
    },
    {
      "name": "workspace-core",
      "type": "zoblocks:lib",
      "title": "Workspace core",
      "description": "The multi-chart workspace rules: a per-chart accent derived from the chart id so it is the same hue in every session, automatic disambiguation when two open charts look alike, a graded close verdict that asks about an unsigned note and refuses a draft order, and the fifteen-minute rule for re-asserting identity on return. Installed automatically with RecentPatientStack.",
      "categories": [],
      "url": "https://zoblocks.design/r/workspace-core.json"
    },
    {
      "name": "palette-core",
      "type": "zoblocks:lib",
      "title": "Command palette core",
      "description": "Verb-first ranking with a sixty-line fuzzy matcher, treatment-relationship scoping that counts out-of-scope patients rather than naming them, an audit record for every patient search including the empty ones, and the second-Enter rule for a clinically significant action. Installed automatically with ChartCommandPalette.",
      "categories": [],
      "url": "https://zoblocks.design/r/palette-core.json"
    },
    {
      "name": "menu-core",
      "type": "zoblocks:lib",
      "title": "Context menu core",
      "description": "The resolver behind ChartContextMenu: the subject line a masked row may not exceed, four consequence tiers with the field each one makes mandatory, availability that distinguishes pending from refused from withheld, the withheld count, the bulk demotion, and the disclosure record produced on every path including the abandoned one. Installed automatically with ChartContextMenu.",
      "categories": [],
      "url": "https://zoblocks.design/r/menu-core.json"
    },
    {
      "name": "grid-core",
      "type": "zoblocks:lib",
      "title": "Data grid core",
      "description": "The engine behind DataGrid: a cell value type with no null member so an absence has to say which kind it is, coverage that admits a total of \"unknown\" because a FHIR server often will not say, comparison that keeps absent values at the bottom in both directions, two-dimensional cursor arithmetic for role=\"grid\", a measured row ceiling the grid refuses past rather than degrading, and a CSV writer that neutralises formula injection with no way to switch it off. Installed automatically with DataGrid.",
      "categories": [],
      "url": "https://zoblocks.design/r/grid-core.json"
    },
    {
      "name": "switch-core",
      "type": "zoblocks:lib",
      "title": "Switch core",
      "description": "The three-axis state model behind ZoBlocks's Switch: the commit phase machine, the state-label presets, and the absence vocabulary. Installed automatically with Switch.",
      "categories": [],
      "url": "https://zoblocks.design/r/switch-core.json"
    },
    {
      "name": "timeline-core",
      "type": "zoblocks:lib",
      "title": "Timeline core",
      "description": "The chronology engine behind Timeline and CareTimeline: precision-preserving time, the stable comparator, grouping, clustering with critical promotion, the coverage claim and its sentence. Installed automatically with either.",
      "categories": [],
      "url": "https://zoblocks.design/r/timeline-core.json"
    },
    {
      "name": "timeline-fhir",
      "type": "zoblocks:lib",
      "title": "Timeline FHIR adapters",
      "description": "Thirteen FHIR R4 resource types read into timeline events, plus an honest report of everything that could not be mapped. Pure functions — no fetching. Installed automatically with CareTimeline.",
      "categories": [],
      "url": "https://zoblocks.design/r/timeline-fhir.json"
    },
    {
      "name": "clinical-note-core",
      "type": "zoblocks:lib",
      "title": "Clinical note core",
      "description": "The ProseMirror binding behind Clinical Note: the editor view, the provenance decorations, the toolbar commands, and the document builders. The clinical engine itself is the npm package; this is the part that needs a DOM. Installed automatically with Clinical Note.",
      "categories": [],
      "url": "https://zoblocks.design/r/clinical-note-core.json"
    },
    {
      "name": "tokens",
      "type": "zoblocks:style",
      "title": "ZoBlocks tokens",
      "description": "Semantic clinical status tokens, three density modes, and light/dark themes. Required by every ZoBlocks component.",
      "categories": [],
      "url": "https://zoblocks.design/r/tokens.json"
    },
    {
      "name": "accordion",
      "type": "zoblocks:component",
      "title": "Accordion",
      "description": "Collapsible sections with a summary slot in the header, clinical severity on the leading edge, sections that cannot be closed, and four kinds of gate between a reader and content that is governed rather than merely hidden. Ant Design's Collapse API, with the accordion mode's accessibility defects fixed.",
      "categories": [
        "disclosure",
        "layout"
      ],
      "url": "https://zoblocks.design/r/accordion.json"
    },
    {
      "name": "allergy-chip",
      "type": "zoblocks:component",
      "title": "Allergy Chip",
      "description": "Substance first at full weight, criticality as the primary signal, the worst past reaction as secondary text, and verification as a hairline affix. AllergyList carries the other half: a no-known-allergies assertion and an unasked question look nothing alike, and an assertion missing its author degrades to the second.",
      "categories": [
        "clinical",
        "data-display"
      ],
      "url": "https://zoblocks.design/r/allergy-chip.json"
    },
    {
      "name": "breath-loader",
      "type": "zoblocks:component",
      "title": "Breath Loader",
      "description": "Symbol-free loader cycling at roughly fifteen a minute, the rate of calm breathing. Carries no clinical imagery, so it suits any specialty, and its core accepts a customer's logo mark.",
      "categories": [
        "loaders",
        "feedback"
      ],
      "url": "https://zoblocks.design/r/breath-loader.json"
    },
    {
      "name": "care-team-presence",
      "type": "zoblocks:component",
      "title": "Care Team Presence",
      "description": "Nine states rather than a green dot, each drawn as a ring shape before it is a colour. Resolves a rota to the person responsible at this moment and returns a gap when nobody is. Routes an escalation to the covering clinician before it offers an override, and warns about a documentation conflict before you type rather than at save.",
      "categories": [
        "clinical",
        "data-display"
      ],
      "url": "https://zoblocks.design/r/care-team-presence.json"
    },
    {
      "name": "care-timeline",
      "type": "zoblocks:component",
      "title": "Care Timeline",
      "description": "A timeline over clinical, administrative, communication and patient-reported events, with coverage as a required prop. Separates planned from happened, keeps an entry recorded in error visible and marked, and refuses to collapse anything a reader would act on.",
      "categories": [
        "clinical",
        "data-display"
      ],
      "url": "https://zoblocks.design/r/care-timeline.json"
    },
    {
      "name": "chart-accordion",
      "type": "zoblocks:component",
      "title": "Chart Accordion",
      "description": "Accordion with a clinical summary vocabulary: a status paired with its severity, a count, and a timestamp at the precision the record holds. Adds an expand-all control that never opens a section the reader may not have.",
      "categories": [
        "disclosure",
        "clinical"
      ],
      "url": "https://zoblocks.design/r/chart-accordion.json"
    },
    {
      "name": "chart-command-palette",
      "type": "zoblocks:component",
      "title": "Chart Command Palette",
      "description": "Actions rank above records, because a verb is usually what was meant. Patients outside your relationships are counted rather than named. Every patient search emits an audit event, including the ones that matched nobody, and a clinically significant action never runs on the first Enter.",
      "categories": [
        "clinical",
        "navigation"
      ],
      "url": "https://zoblocks.design/r/chart-command-palette.json"
    },
    {
      "name": "chart-context-menu",
      "type": "zoblocks:component",
      "title": "Chart Context Menu",
      "description": "Every menu opens with a header naming the record, so the first thing under the pointer is never a verb. Four consequence tiers decide the interaction, not the colour. A masked row makes a masked header, and a disclosure is audited on every path.",
      "categories": [
        "clinical",
        "navigation"
      ],
      "url": "https://zoblocks.design/r/chart-context-menu.json"
    },
    {
      "name": "chart-header",
      "type": "zoblocks:component",
      "title": "Chart Header",
      "description": "Sticky chrome over PatientBanner. Collapse moves content behind a disclosure rather than out of the accessibility tree. The encounter is an explicit control that will sit in “none selected” rather than pick one for you. The Sex Parameter for Clinical Use appears only where an order or a result is in view, with the context it applies to.",
      "categories": [
        "clinical",
        "navigation"
      ],
      "url": "https://zoblocks.design/r/chart-header.json"
    },
    {
      "name": "clinical-note",
      "type": "zoblocks:component",
      "title": "Clinical Note",
      "description": "LOINC-coded sections, per-range provenance across six origins, a composable sign gate with three severities, and deterministic FHIR, XHTML and plain-text output. The engine ships as an npm package with no DOM; this item is the Tailwind skin over it.",
      "categories": [
        "clinical",
        "documentation"
      ],
      "url": "https://zoblocks.design/r/clinical-note.json"
    },
    {
      "name": "clinical-status",
      "type": "zoblocks:component",
      "title": "Clinical Status",
      "description": "A chip, a dot, or a grid affix — three presentations of one datum, drawn from nine fixed scales with no free-text status. Each step pairs a tone with a CSS-drawn glyph and a word in both a clinician and a patient register, so the state survives greyscale, Windows high-contrast and monochrome print.",
      "categories": [
        "clinical",
        "primitives"
      ],
      "url": "https://zoblocks.design/r/clinical-status.json"
    },
    {
      "name": "copilot",
      "type": "zoblocks:component",
      "title": "Copilot",
      "description": "Model-agnostic clinical assistant with mode-level scope contracts, inline source attribution, a deterministic crisis interrupt, and FHIR audit output. The engine and the accessibility behaviour ship as npm packages; this item is the Tailwind skin over them.",
      "categories": [
        "patterns",
        "ai"
      ],
      "url": "https://zoblocks.design/r/copilot.json"
    },
    {
      "name": "data-grid",
      "type": "zoblocks:component",
      "title": "Data Grid",
      "description": "A ruled ledger with role=\"grid\": coverage above the data rather than under it, a total that may honestly be unknown, absence said in words rather than an em dash, numbered footnotes naming the model behind a derived column, and results that arrive without anything moving under your hand.",
      "categories": [
        "clinical",
        "data-display"
      ],
      "url": "https://zoblocks.design/r/data-grid.json"
    },
    {
      "name": "date-picker",
      "type": "zoblocks:component",
      "title": "Date Picker",
      "description": "Sixteen presentations of one value space, one keyboard model and one accessibility contract. `variant` picks the surface; the parts are separately testable components underneath.",
      "categories": [
        "clinical",
        "forms"
      ],
      "url": "https://zoblocks.design/r/date-picker.json"
    },
    {
      "name": "helix-loader",
      "type": "zoblocks:component",
      "title": "Helix Loader",
      "description": "Loader for genomics, pathology, and diagnostics surfaces. Depth comes from scale and opacity rather than a 3D transform, so the strands cross convincingly while staying cheap to composite.",
      "categories": [
        "loaders",
        "feedback"
      ],
      "url": "https://zoblocks.design/r/helix-loader.json"
    },
    {
      "name": "infusion-loader",
      "type": "zoblocks:component",
      "title": "Infusion Loader",
      "description": "Determinate and indeterminate progress in one component. Pass progress for a real 0–100 measurement with role=progressbar; omit it and the slug drifts as an honest unknown.",
      "categories": [
        "loaders",
        "feedback"
      ],
      "url": "https://zoblocks.design/r/infusion-loader.json"
    },
    {
      "name": "provenance-chip",
      "type": "zoblocks:component",
      "title": "Provenance Chip",
      "description": "A 20px affix beside a value, never competing with it. Six source classes with CSS glyphs rather than colours, staleness folded in against a per-datum policy, and — for an AI-extracted value — the model, the source span and whether anybody has confirmed it.",
      "categories": [
        "clinical",
        "ai"
      ],
      "url": "https://zoblocks.design/r/provenance-chip.json"
    },
    {
      "name": "pulse-loader",
      "type": "zoblocks:component",
      "title": "Pulse Loader",
      "description": "Page and region loader: an open heart that draws itself once, then beats at a resting 60bpm while a monitor sweep crosses the rhythm line. Renders as Rhythm Loader below 40px, where the heart's detail would collapse.",
      "categories": [
        "loaders",
        "feedback"
      ],
      "url": "https://zoblocks.design/r/pulse-loader.json"
    },
    {
      "name": "recent-patient-stack",
      "type": "zoblocks:component",
      "title": "Recent Patient Stack",
      "description": "Each open chart gets a hue derived from its id, so it is the same colour in every session. Two charts whose names look alike both grow an identifier. Per-chart badges carry the unfinished work, closing is graded rather than binary, and returning after fifteen minutes away re-asserts who the chart belongs to.",
      "categories": [
        "clinical",
        "navigation"
      ],
      "url": "https://zoblocks.design/r/recent-patient-stack.json"
    },
    {
      "name": "recorder",
      "type": "zoblocks:component",
      "title": "Recorder",
      "description": "Ambient documentation, dictation, voice messaging and transcript review. Five arts — pulse, bars, strip, duet, stream — over one engine, with an analyser-driven meter, a silence budget and thirteen device faults.",
      "categories": [
        "media",
        "clinical"
      ],
      "url": "https://zoblocks.design/r/recorder.json"
    },
    {
      "name": "result-value",
      "type": "zoblocks:component",
      "title": "Result Value",
      "description": "Value, unit and interpretation on one line, qualifiers on a second only when they exist. Seven distinct absence reasons instead of an em dash, a stated interpretation that always beats a derived one, a reference range that says so when there isn't one, and a correction that shows the superseded value rather than a badge.",
      "categories": [
        "clinical",
        "data-display"
      ],
      "url": "https://zoblocks.design/r/result-value.json"
    },
    {
      "name": "rhythm-loader",
      "type": "zoblocks:component",
      "title": "Rhythm Loader",
      "description": "Loader drawn as a single PQRST complex on a baseline, swept once per beat by a bright head with a fading tail. Nothing scales and nothing grows, and it stays legible down to 20px.",
      "categories": [
        "loaders",
        "feedback"
      ],
      "url": "https://zoblocks.design/r/rhythm-loader.json"
    },
    {
      "name": "risk-indicator",
      "type": "zoblocks:component",
      "title": "Risk Indicator",
      "description": "The band leads and the numeral is demoted. Staleness is on the face rather than in a tooltip, an expired score offers recompute or acknowledge and no third option, and the not-a-diagnosis framing is a required prop rather than a convention.",
      "categories": [
        "clinical",
        "ai"
      ],
      "url": "https://zoblocks.design/r/risk-indicator.json"
    },
    {
      "name": "safety-plan",
      "type": "zoblocks:component",
      "title": "Safety Plan",
      "description": "A patient-facing safety plan: warning signs, coping, distraction, people to ask, professionals and agencies, and means restriction. The crisis step cannot be collapsed, empty steps say they are unfinished rather than disappearing, and the wording is a patient catalog throughout.",
      "categories": [
        "disclosure",
        "clinical"
      ],
      "url": "https://zoblocks.design/r/safety-plan.json"
    },
    {
      "name": "switch",
      "type": "zoblocks:component",
      "title": "Switch",
      "description": "Switch with three independent axes: the value the record holds, the phase of the write, and whether you may change it. Models the request and the outcome separately, so it never renders a state it cannot substantiate.",
      "categories": [
        "forms",
        "primitives"
      ],
      "url": "https://zoblocks.design/r/switch.json"
    },
    {
      "name": "timeline",
      "type": "zoblocks:component",
      "title": "Timeline",
      "description": "An ordered list with a rail. The API matches Ant Design v6 exactly, including the v5 names it still accepts, and takes no dependency on it. Adds a required accessible name and drops the current-step behaviour a chronology has no use for.",
      "categories": [
        "data-display",
        "primitives"
      ],
      "url": "https://zoblocks.design/r/timeline.json"
    },
    {
      "name": "trend-indicator",
      "type": "zoblocks:component",
      "title": "Trend Indicator",
      "description": "Breaks the line wherever comparability breaks and says why in words. Renders no trend below three comparable points. Takes the valence as a required prop, so a falling PHQ-9 reads as improvement and a falling eGFR does not, and carries the reliable-change threshold so a two-point move renders as noise.",
      "categories": [
        "clinical",
        "data-display"
      ],
      "url": "https://zoblocks.design/r/trend-indicator.json"
    }
  ]
}
