@loworbitstudio/visor 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.4.0",
3
- "generated_at": "2026-07-09T19:24:03.742Z",
3
+ "generated_at": "2026-07-20T05:09:50.010Z",
4
4
  "components": {
5
5
  "accessibility-specimen": {
6
6
  "category": "specimen",
@@ -2170,6 +2170,7 @@
2170
2170
  "--color-picker-indicator-shadow",
2171
2171
  "--color-picker-indicator-shadow-color",
2172
2172
  "--focus-ring-width",
2173
+ "--font-mono",
2173
2174
  "--font-size-sm",
2174
2175
  "--font-size-xs",
2175
2176
  "--motion-duration-150",
@@ -3513,6 +3514,8 @@
3513
3514
  "--doc-frame-max-width",
3514
3515
  "--focus-ring-offset",
3515
3516
  "--focus-ring-width",
3517
+ "--font-display",
3518
+ "--font-family-heading",
3516
3519
  "--font-mono",
3517
3520
  "--font-size-2xs",
3518
3521
  "--font-size-lg",
@@ -4100,6 +4103,138 @@
4100
4103
  ],
4101
4104
  "example": "import { WarningCircle } from '@phosphor-icons/react';\n\n<ErrorPlacard\n icon={<WarningCircle weight=\"fill\" />}\n title=\"Could not load members\"\n body=\"The request timed out. Check your connection and try again.\"\n actions={\n <>\n <Button variant=\"ghost\" size=\"sm\">Dismiss</Button>\n <Button variant=\"outline\" size=\"sm\">Retry</Button>\n </>\n }\n/>\n"
4102
4105
  },
4106
+ "fidelity-mirror": {
4107
+ "category": "data-display",
4108
+ "description": "The design-left / built-right comparison surface — renders a pure-HTML design source beside its Visor-TSX render (or a native/Flutter device-framed screenshot set, or an external artifact) in recessed capture wells, with a verdict diff indicator, numbered delta callouts, a classed delta legend, and a drag-to-reveal overlay mode. Composes inside DocFrame's content and goes full-bleed on widescreen so each pane is ~50vw. This is the Fidelity Mirror DISPLAY; the screenshot-diff GATE (PL-2139) is a separate verification concern.",
4109
+ "when_to_use": [
4110
+ "A Fidelity Mirror doc surface that renders a design-vs-built comparison inside DocFrame, so the doc type is Borealis-native rather than hand-rolled per project",
4111
+ "Showing the pure HTML design (left) against the Visor-ified TSX render (right) with a diff verdict and enumerated, classed deltas",
4112
+ "Comparing a native (SwiftUI) or Flutter screen against its design inside a device bezel, or an external claude.ai artifact against its source",
4113
+ "A widescreen full-bleed compare where each pane spans ~50vw for pixel-level review on a fullscreen monitor"
4114
+ ],
4115
+ "when_not_to_use": [
4116
+ "The fidelity GATE — screenshot-diff verification that a build matches its design (that is PL-2139 / Gate 16, a verification concern, not a display one)",
4117
+ "The themed doc-page shell / sticky header / brand slot (use DocFrame — VI-609)",
4118
+ "The grouped, collapsible doc navigation (use DocNav — VI-608)",
4119
+ "A generic two-up media comparison with no design-fidelity semantics (use a plain grid or Carousel)"
4120
+ ],
4121
+ "variants": {},
4122
+ "props": [
4123
+ {
4124
+ "name": "title",
4125
+ "type": "string",
4126
+ "required": true,
4127
+ "description": "The compared surface's name — the header title (e.g. a component or screen name)."
4128
+ },
4129
+ {
4130
+ "name": "design",
4131
+ "type": "FidelitySource",
4132
+ "required": true,
4133
+ "description": "The DESIGN source (left pane) — the pure-HTML design. Renders `content` when present, else an `<img>` (image) or a live-route/external `<iframe>` from `src`. Carries an optional pane `label` + mono `meta`."
4134
+ },
4135
+ {
4136
+ "name": "built",
4137
+ "type": "FidelitySource",
4138
+ "required": true,
4139
+ "description": "The BUILT source (right pane) — the Visor-TSX render, or a device-framed screenshot for native/flutter. Same shape as `design`; the built pane also draws the numbered delta callouts."
4140
+ },
4141
+ {
4142
+ "name": "verdict",
4143
+ "type": "'match' | 'drift' | 'fail'",
4144
+ "required": true,
4145
+ "description": "The diff verdict — tints the status pill (the diff indicator). match → success, drift → warning, fail → destructive."
4146
+ },
4147
+ {
4148
+ "name": "platform",
4149
+ "type": "'web' | 'native' | 'flutter' | 'external'",
4150
+ "default": "'web'",
4151
+ "description": "Platform of the built surface. Drives the built-side renderer and the header chip — web → live-route iframe + \"Web · Live Route\"; native → SwiftUI screenshot in a device bezel + \"iOS · SwiftUI\"; flutter → device-framed image + \"Flutter\"; external → external artifact + \"External\"."
4152
+ },
4153
+ {
4154
+ "name": "mode",
4155
+ "type": "'split' | 'overlay'",
4156
+ "default": "'split'",
4157
+ "description": "Initial compare presentation — split (design-left / built-right in recessed wells) or overlay (drag-to-reveal slider seam). The header segmented toggle switches in place."
4158
+ },
4159
+ {
4160
+ "name": "score",
4161
+ "type": "string",
4162
+ "description": "Optional score/summary string on the status pill (e.g. \"99.4%\", \"3 deltas\")."
4163
+ },
4164
+ {
4165
+ "name": "deltas",
4166
+ "type": "FidelityDelta[]",
4167
+ "description": "Enumerated drifts — each renders a numbered callout on the built side (when it carries a `position`) and a classed legend row. Classes mirror the render-vs-design self-check taxonomy (radius | color | spacing | type | align). Omit → no callouts or legend (e.g. a MATCH case)."
4168
+ },
4169
+ {
4170
+ "name": "bleed",
4171
+ "type": "boolean",
4172
+ "default": "true",
4173
+ "description": "Widescreen full-bleed layout — the compare escapes DocFrame's centered column and spans the viewport so each pane is ~50vw with the center gutter equal to the outer padding. Under 768px the panes stack design-over-built."
4174
+ },
4175
+ {
4176
+ "name": "overlayPosition",
4177
+ "type": "number",
4178
+ "default": "55",
4179
+ "description": "Initial overlay reveal position (0–100), the percent of the design source shown from the left before the slider seam."
4180
+ },
4181
+ {
4182
+ "name": "onModeChange",
4183
+ "type": "(mode: 'split' | 'overlay') => void",
4184
+ "description": "Notified when the compare mode toggles via the header segmented control."
4185
+ }
4186
+ ],
4187
+ "dependencies": [
4188
+ "@phosphor-icons/react",
4189
+ "@loworbitstudio/visor-core"
4190
+ ],
4191
+ "tokens_used": [
4192
+ "--accent",
4193
+ "--border-focus",
4194
+ "--color-neutral-950",
4195
+ "--color-white",
4196
+ "--destructive",
4197
+ "--fm-built-hue",
4198
+ "--fm-design-hue",
4199
+ "--fm-pad",
4200
+ "--fm-radius",
4201
+ "--fm-split",
4202
+ "--fm-well",
4203
+ "--fm-well-radius",
4204
+ "--focus-ring-offset",
4205
+ "--focus-ring-width",
4206
+ "--font-mono",
4207
+ "--font-sans",
4208
+ "--font-size-2xs",
4209
+ "--font-size-sm",
4210
+ "--font-weight-bold",
4211
+ "--font-weight-medium",
4212
+ "--hairline",
4213
+ "--info",
4214
+ "--motion-duration-fast",
4215
+ "--motion-easing-standard",
4216
+ "--opacity-80",
4217
+ "--radius-full",
4218
+ "--radius-sm",
4219
+ "--shadow-lg",
4220
+ "--shadow-md",
4221
+ "--spacing-1",
4222
+ "--spacing-10",
4223
+ "--spacing-2",
4224
+ "--spacing-3",
4225
+ "--spacing-4",
4226
+ "--stroke-width-thin",
4227
+ "--success",
4228
+ "--surface-card",
4229
+ "--surface-page",
4230
+ "--surface-subtle",
4231
+ "--text-primary",
4232
+ "--text-secondary",
4233
+ "--text-tertiary",
4234
+ "--warning"
4235
+ ],
4236
+ "example": "import { FidelityMirror } from '@/components/ui/fidelity-mirror/fidelity-mirror'\n\nexport function DocNavMirror() {\n return (\n <FidelityMirror\n title=\"DocNav\"\n subtitle=\"Fidelity Mirror · VI-611\"\n platform=\"web\"\n verdict=\"drift\"\n score=\"3 deltas\"\n design={{ content: <DesignCapture />, meta: 'index.html' }}\n built={{ content: <BuiltCapture />, meta: 'route · /doc-nav' }}\n deltas={[\n { class: 'radius', description: <>Group cluster corners <b>22px → 12px</b>.</>, position: { top: '34px', left: '12px' } },\n { class: 'color', description: <>Resting pills read <b>--surface-subtle</b> — should be a recessed well.</>, position: { top: '52px', left: '96px' } },\n { class: 'type', description: <>Group labels are <b>title-case</b> — should be all-caps mono.</>, position: { top: '34px', right: '12px' } },\n ]}\n />\n )\n}\n"
4237
+ },
4103
4238
  "field": {
4104
4239
  "category": "form",
4105
4240
  "description": "A form field wrapper composing label, description, and error components.",
@@ -12260,6 +12395,7 @@
12260
12395
  "bento-grid",
12261
12396
  "card",
12262
12397
  "chart",
12398
+ "fidelity-mirror",
12263
12399
  "key-value-list",
12264
12400
  "marquee",
12265
12401
  "name-roster",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loworbitstudio/visor",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "description": "CLI for the Visor design system — add components, hooks, and utilities to your project.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,7 +46,7 @@
46
46
  "dependencies": {
47
47
  "@aws-sdk/client-s3": "^3.1021.0",
48
48
  "@babel/parser": "^7.26.0",
49
- "@loworbitstudio/visor-theme-engine": "^0.17.1",
49
+ "@loworbitstudio/visor-theme-engine": "^0.18.0",
50
50
  "commander": "^13.1.0",
51
51
  "diff": "^8.0.4",
52
52
  "picocolors": "^1.1.1",