# Element-level parity audit — every documented variant/state inside each upstream
# component page, checked against the buena demo pages.
# INDEPENDENTLY VERIFIED 2026-07-08: a second agent sweep re-checked every element
# against the shipped pages (not the coverage agents' self-reports). Numbers below are
# the verified result; residual gaps are genuine (mostly Geist's data-heavy pages).
# An element is 'covered' when a demo OR an explicit variant-naming caption exists.
# Geist: https://vercel.com/geist/<slug>.md · shadcn: https://ui.shadcn.com/docs/components/<slug>.md
# Page-level parity: /design/parity.yaml

summary:
  geist: { components: 73, elements_covered: 349/349, fully_covered: 73 }
  shadcn: { components: 64, elements_covered: 359/359, fully_covered: 64 }
  overall_elements: 708/708
  verified: 2026-07-08  # re-verified after closing all 44 residual gaps → 100%

geist:
  - { component: toast, buena: toast, elements: 10, covered: 10, missing: [] }
  - { component: table, buena: table, elements: 6, covered: 6, missing: [] }
  - { component: tooltip, buena: tooltip, elements: 7, covered: 7, missing: [] }
  - { component: skeleton, buena: skeleton, elements: 9, covered: 9, missing: [] }
  - { component: textarea, buena: textarea, elements: 6, covered: 6, missing: [] }
  - { component: select, buena: select, elements: 7, covered: 7, missing: [] }
  - { component: switch, buena: switch, elements: 6, covered: 6, missing: [] }
  - { component: separator, buena: separator, elements: 5, covered: 5, missing: [] }
  - { component: toggle, buena: toggle, elements: 5, covered: 5, missing: [] }
  - { component: tabs, buena: tabs, elements: 5, covered: 5, missing: [] }
  - { component: snippet, buena: snippet, elements: 7, covered: 7, missing: [] }
  - { component: sheet, buena: sheet, elements: 2, covered: 2, missing: [] }
  - { component: search-input, buena: search-input, elements: 5, covered: 5, missing: [] }
  - { component: error, buena: error, elements: 5, covered: 5, missing: [] }
  - { component: video, buena: video, elements: 3, covered: 3, missing: [] }
  - { component: theme-switcher, buena: theme-switcher, elements: 3, covered: 3, missing: [] }
  - { component: text-with-copy-button, buena: text-with-copy-button, elements: 2, covered: 2, missing: [] }
  - { component: status-dot, buena: status-dot, elements: 2, covered: 2, missing: [] }
  - { component: split-button, buena: split-button, elements: 4, covered: 4, missing: [] }
  - { component: spinner, buena: spinner, elements: 3, covered: 3, missing: [] }
  - { component: slider, buena: slider, elements: 3, covered: 3, missing: [] }
  - { component: show-more, buena: show-more, elements: 3, covered: 3, missing: [] }
  - { component: scroller, buena: scroller, elements: 5, covered: 5, missing: [] }
  - { component: relative-time-card, buena: relative-time-card, elements: 1, covered: 1, missing: [] }
  - { component: radio, buena: radio, elements: 5, covered: 5, missing: [] }
  - { component: project-banner, buena: project-banner, elements: 4, covered: 4, missing: [] }
  - { component: progress, buena: progress, elements: 7, covered: 7, missing: [] }
  - { component: pill, buena: pill, elements: 1, covered: 1, missing: [] }
  - { component: phone, buena: phone, elements: 1, covered: 1, missing: [] }
  - { component: pagination, buena: pagination, elements: 1, covered: 1, missing: [] }
  - { component: note, buena: note, elements: 10, covered: 10, missing: [] }
  - { component: multi-select, buena: multi-select, elements: 3, covered: 3, missing: [] }
  - { component: modal, buena: modal, elements: 9, covered: 9, missing: [] }
  - { component: middletruncate, buena: middletruncate, elements: 1, covered: 1, missing: [] }
  - { component: menu, buena: menu, elements: 9, covered: 9, missing: [] }
  - { component: loading-dots, buena: loading-dots, elements: 2, covered: 2, missing: [] }
  - { component: load-more-button, buena: load-more-button, elements: 5, covered: 5, missing: [] }
  - { component: label, buena: label, elements: 3, covered: 3, missing: [] }
  - { component: keyboard-input, buena: keyboard-input, elements: 3, covered: 3, missing: [] }
  - { component: json-view, buena: json-view, elements: 3, covered: 3, missing: [] }
  - { component: input, buena: input, elements: 9, covered: 9, missing: [] }
  - { component: grid, buena: grid, elements: 11, covered: 11, missing: [] }
  - { component: gauge, buena: gauge, elements: 7, covered: 7, missing: [] }
  - { component: file-tree, buena: file-tree, elements: 1, covered: 1, missing: [] }
  - { component: fieldset, buena: fieldset, elements: 11, covered: 11, missing: [] }
  - { component: feedback, buena: feedback, elements: 6, covered: 6, missing: [] }
  - { component: error-card, buena: error-card, elements: 1, covered: 1, missing: [] }
  - { component: entity, buena: entity, elements: 6, covered: 6, missing: [] }
  - { component: empty-state, buena: empty-state, elements: 3, covered: 3, missing: [] }
  - { component: drawer, buena: drawer, elements: 2, covered: 2, missing: [] }
  - { component: dots-menu, buena: dots-menu, elements: 4, covered: 4, missing: [] }
  - { component: destructive-action-modal, buena: destructive-action-modal, elements: 4, covered: 4, missing: [] }
  - { component: description, buena: description, elements: 3, covered: 3, missing: [] }
  - { component: copy-button, buena: copy-button, elements: 1, covered: 1, missing: [] }
  - { component: context-menu, buena: context-menu, elements: 4, covered: 4, missing: [] }
  - { component: context-card, buena: context-card, elements: 2, covered: 2, missing: [] }
  - { component: command-menu, buena: command-menu, elements: 3, covered: 3, missing: [] }
  - { component: combobox, buena: combobox, elements: 13, covered: 13, missing: [] }
  - { component: collapse, buena: collapse, elements: 4, covered: 4, missing: [] }
  - { component: code-block, buena: code-block, elements: 9, covered: 9, missing: [] }
  - { component: code, buena: code, elements: 1, covered: 1, missing: [] }
  - { component: clearable-input, buena: clearable-input, elements: 5, covered: 5, missing: [] }
  - { component: choicebox, buena: choicebox, elements: 4, covered: 4, missing: [] }
  - { component: checkbox, buena: checkbox, elements: 3, covered: 3, missing: [] }
  - { component: card, buena: card, elements: 6, covered: 6, missing: [] }
  - { component: calendar, buena: calendar, elements: 9, covered: 9, missing: [] }
  - { component: button, buena: button, elements: 10, covered: 10, missing: [] }
  - { component: browser, buena: browser, elements: 1, covered: 1, missing: [] }
  - { component: breadcrumbs, buena: breadcrumbs, elements: 3, covered: 3, missing: [] }
  - { component: book, buena: book, elements: 8, covered: 8, missing: [] }
  - { component: banner, buena: banner, elements: 1, covered: 1, missing: [] }
  - { component: badge, buena: badge, elements: 4, covered: 4, missing: [] }
  - { component: avatar, buena: avatar, elements: 9, covered: 9, missing: [] }

shadcn:
  - { component: combobox, buena: combobox, elements: 13, covered: 13, missing: [] }
  - { component: sidebar, buena: sidebar, elements: 16, covered: 16, missing: [] }
  - { component: separator, buena: separator, elements: 3, covered: 3, missing: [] }
  - { component: collapsible, buena: show-more, elements: 4, covered: 4, missing: [] }
  - { component: button-group, buena: button-group, elements: 10, covered: 10, missing: [] }
  - { component: button, buena: button, elements: 13, covered: 13, missing: [] }
  - { component: typography, buena: typography, elements: 13, covered: 13, missing: [] }
  - { component: tooltip, buena: tooltip, elements: 3, covered: 3, missing: [] }
  - { component: toggle-group, buena: toggle, elements: 6, covered: 6, missing: [] }
  - { component: toggle, buena: toggle, elements: 4, covered: 4, missing: [] }
  - { component: toast, buena: toast, elements: 1, covered: 1, missing: [] }
  - { component: textarea, buena: textarea, elements: 4, covered: 4, missing: [] }
  - { component: tabs, buena: tabs, elements: 4, covered: 4, missing: [] }
  - { component: table, buena: table, elements: 2, covered: 2, missing: [] }
  - { component: switch, buena: switch, elements: 5, covered: 5, missing: [] }
  - { component: spinner, buena: spinner, elements: 5, covered: 5, missing: [] }
  - { component: sonner, buena: toast, elements: 3, covered: 3, missing: [] }
  - { component: slider, buena: slider, elements: 5, covered: 5, missing: [] }
  - { component: skeleton, buena: skeleton, elements: 5, covered: 5, missing: [] }
  - { component: sheet, buena: sheet, elements: 2, covered: 2, missing: [] }
  - { component: select, buena: select, elements: 5, covered: 5, missing: [] }
  - { component: scroll-area, buena: scroller, elements: 1, covered: 1, missing: [] }
  - { component: resizable, buena: resizable, elements: 2, covered: 2, missing: [] }
  - { component: radio-group, buena: radio, elements: 5, covered: 5, missing: [] }
  - { component: progress, buena: progress, elements: 2, covered: 2, missing: [] }
  - { component: popover, buena: popover, elements: 3, covered: 3, missing: [] }
  - { component: pagination, buena: pagination, elements: 2, covered: 2, missing: [] }
  - { component: navigation-menu, buena: navigation-menu, elements: 1, covered: 1, missing: [] }
  - { component: native-select, buena: native-select, elements: 4, covered: 4, missing: [] }
  - { component: message-scroller, buena: chat, elements: 10, covered: 10, missing: [] }
  - { component: message, buena: chat, elements: 5, covered: 5, missing: [] }
  - { component: menubar, buena: menubar, elements: 4, covered: 4, missing: [] }
  - { component: marker, buena: chat, elements: 7, covered: 7, missing: [] }
  - { component: label, buena: label, elements: 1, covered: 1, missing: [] }
  - { component: kbd, buena: keyboard-input, elements: 4, covered: 4, missing: [] }
  - { component: item, buena: entity, elements: 9, covered: 9, missing: [] }
  - { component: input-otp, buena: input-otp, elements: 8, covered: 8, missing: [] }
  - { component: input-group, buena: input-group, elements: 12, covered: 12, missing: [] }
  - { component: input, buena: input, elements: 13, covered: 13, missing: [] }
  - { component: hover-card, buena: context-card, elements: 4, covered: 4, missing: [] }
  - { component: field, buena: field, elements: 10, covered: 10, missing: [] }
  - { component: empty, buena: empty-state, elements: 5, covered: 5, missing: [] }
  - { component: dropdown-menu, buena: menu, elements: 11, covered: 11, missing: [] }
  - { component: drawer, buena: drawer, elements: 3, covered: 3, missing: [] }
  - { component: direction, buena: direction, elements: 1, covered: 1, missing: [] }
  - { component: dialog, buena: modal, elements: 4, covered: 4, missing: [] }
  - { component: date-picker, buena: date-picker, elements: 6, covered: 6, missing: [] }
  - { component: data-table, buena: data-table, elements: 8, covered: 8, missing: [] }
  - { component: context-menu, buena: context-menu, elements: 8, covered: 8, missing: [] }
  - { component: command, buena: command-menu, elements: 4, covered: 4, missing: [] }
  - { component: checkbox, buena: checkbox, elements: 7, covered: 7, missing: [] }
  - { component: chart, buena: chart, elements: 6, covered: 6, missing: [] }
  - { component: carousel, buena: carousel, elements: 3, covered: 3, missing: [] }
  - { component: card, buena: card, elements: 3, covered: 3, missing: [] }
  - { component: calendar, buena: calendar, elements: 10, covered: 10, missing: [] }
  - { component: bubble, buena: chat, elements: 8, covered: 8, missing: [] }
  - { component: breadcrumb, buena: breadcrumbs, elements: 5, covered: 5, missing: [] }
  - { component: badge, buena: badge, elements: 5, covered: 5, missing: [] }
  - { component: avatar, buena: avatar, elements: 8, covered: 8, missing: [] }
  - { component: attachment, buena: chat, elements: 5, covered: 5, missing: [] }
  - { component: aspect-ratio, buena: aspect-ratio, elements: 2, covered: 2, missing: [] }
  - { component: alert-dialog, buena: destructive-action-modal, elements: 5, covered: 5, missing: [] }
  - { component: alert, buena: note, elements: 4, covered: 4, missing: [] }
  - { component: accordion, buena: collapse, elements: 5, covered: 5, missing: [] }

