{"$schema":"https://ui.shadcn.com/schema/registry.json","name":"shadcn-ui-blocks","homepage":"https://www.shadcn-ui-blocks.com","items":[{"name":"application-pro-accessibility-a11y-checklist-panel","type":"registry:block","title":"A11y Checklist Panel","files":[{"path":"components/blocks/application-pro/accessibility/a11y-checklist-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/a11y-checklist-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"WCAG 2.1 audit checklist with pass, fail, and manual badges per criterion, an overall score, and per-row links to the W3C understanding docs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-accessibility-a11y-issue-trends","type":"registry:block","title":"A11y Issue Trends","files":[{"path":"components/blocks/application-pro/accessibility/a11y-issue-trends.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/a11y-issue-trends.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Stacked bar chart card tracking open accessibility issues by severity across six release audits with a headline count and remediation note.","dependencies":["recharts"]},{"name":"application-pro-accessibility-a11y-preferences-panel","type":"registry:block","title":"A11y Preferences Panel","files":[{"path":"components/blocks/application-pro/accessibility/a11y-preferences-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/a11y-preferences-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Accessibility settings panel with a text size selector, live sample line, and grouped vision, motion, and screen reader switches with helper text.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-accessibility-assistive-tech-matrix","type":"registry:block","title":"Assistive Tech Matrix","files":[{"path":"components/blocks/application-pro/accessibility/assistive-tech-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/assistive-tech-matrix.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Screen reader support matrix crossing core app flows with four assistive tech pairings, labeled status cells, and an open findings list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-accessibility-contrast-checker-card","type":"registry:block","title":"Contrast Checker Card","files":[{"path":"components/blocks/application-pro/accessibility/contrast-checker-card.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/contrast-checker-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Theme token contrast audit card showing computed ratios and AA and AAA pass badges for normal and large text across four Acme token pairings.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-accessibility-focus-order-inspector","type":"registry:block","title":"Focus Order Inspector","files":[{"path":"components/blocks/application-pro/accessibility/focus-order-inspector.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/focus-order-inspector.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Split audit view pairing a dialog blueprint with numbered focus markers beside a stop list showing selectors, roles, and flagged order issues.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-accessibility-heading-outline-tree","type":"registry:block","title":"Heading Outline Tree","files":[{"path":"components/blocks/application-pro/accessibility/heading-outline-tree.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/heading-outline-tree.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Indented document heading tree with landmark chips, level tags, and issue badges for skipped levels, empty headings, and a duplicate H1.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-accessibility-keyboard-nav-guide","type":"registry:block","title":"Keyboard Nav Guide","files":[{"path":"components/blocks/application-pro/accessibility/keyboard-nav-guide.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/keyboard-nav-guide.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Keyboard shortcut reference table covering global browser keys and Acme app shortcuts rendered with Kbd components, action descriptions, and context labels."},{"name":"application-pro-accessibility-live-region-log","type":"registry:block","title":"Live Region Log","files":[{"path":"components/blocks/application-pro/accessibility/live-region-log.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/live-region-log.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"ARIA live region event log with timestamps, politeness badges, source selectors, and flags for duplicate, chatty, and empty announcements.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-accessibility-media-captions-audit","type":"registry:block","title":"Media Captions Audit","files":[{"path":"components/blocks/application-pro/accessibility/media-captions-audit.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/media-captions-audit.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Media library audit pairing coverage tiles and progress bars with a per asset table of caption, transcript, and audio description chips.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-accessibility-screen-reader-labels-table","type":"registry:block","title":"Screen Reader Labels Table","files":[{"path":"components/blocks/application-pro/accessibility/screen-reader-labels-table.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/screen-reader-labels-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Accessible name audit table listing Acme workspace UI elements with their computed label, ARIA role, labeled or missing status, and an exact fix hint.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-accessibility-touch-target-audit","type":"registry:block","title":"Touch Target Audit","files":[{"path":"components/blocks/application-pro/accessibility/touch-target-audit.tsx","type":"registry:component","target":"components/blocks/application-pro/accessibility/touch-target-audit.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Interactive control audit showing hit areas at true scale in 44px frames with measured sizes, AA and AAA badges, and fix hints.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-activity-calendar","type":"registry:block","title":"Activity Calendar","files":[{"path":"components/blocks/application-pro/activity/activity-calendar.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/activity-calendar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Month grid calendar with per-day activity dots scaled by event count and a selected-day event list beside it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-activity-heatmap","type":"registry:block","title":"Activity Heatmap","files":[{"path":"components/blocks/application-pro/activity/activity-heatmap.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/activity-heatmap.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Weekday by hour heatmap of workspace events with intensity cells, a Less to More legend, and peak and quiet window callouts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-approvals-queue","type":"registry:block","title":"Approvals Queue","files":[{"path":"components/blocks/application-pro/activity/approvals-queue.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/approvals-queue.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pending requests with context and age, approve or deny, expiry told to the asker.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-audit-export-card","type":"registry:block","title":"Audit Export Card","files":[{"path":"components/blocks/application-pro/activity/audit-export-card.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/audit-export-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Compliance export form with date range, event count, format selector, and an append-only log disclosure note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-audit-trail-timeline","type":"registry:block","title":"Audit Trail Timeline","files":[{"path":"components/blocks/application-pro/activity/audit-trail-timeline.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/audit-trail-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The compliance log grouped by day, mono actions, second precision, source IPs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-changelog-feed","type":"registry:block","title":"Changelog Feed","files":[{"path":"components/blocks/application-pro/activity/changelog-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/changelog-feed.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"In-app changelog grouped by month with dated entries, type badges for Feature, Fix, Improvement, and Performance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-comment-mentions-list","type":"registry:block","title":"Comment Mentions List","files":[{"path":"components/blocks/application-pro/activity/comment-mentions-list.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/comment-mentions-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Comment mentions inbox showing each document and section, the quoted comment with your name highlighted, and a jump to reply action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-comment-thread-panel","type":"registry:block","title":"Comment Thread Panel","files":[{"path":"components/blocks/application-pro/activity/comment-thread-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/comment-thread-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A thread with one nested reply, a resolved marker with reopen, and the composer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-deploy-activity-feed","type":"registry:block","title":"Deploy Activity Feed","files":[{"path":"components/blocks/application-pro/activity/deploy-activity-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/deploy-activity-feed.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Engineering deploy timeline showing who shipped what service to which environment with status, commit SHA, and one rollback event.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-edit-history-diff","type":"registry:block","title":"Edit History Diff","files":[{"path":"components/blocks/application-pro/activity/edit-history-diff.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/edit-history-diff.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Document version history with a selectable edit list on the left and an inline before and after diff panel on the right using theme token opacity."},{"name":"application-pro-activity-filtered-activity-log","type":"registry:block","title":"Filtered Activity Log","files":[{"path":"components/blocks/application-pro/activity/filtered-activity-log.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/filtered-activity-log.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Activity log in a filtered state with type chips, an applied person filter, a clear all action, and the matching events with counts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-inactivity-watch-card","type":"registry:block","title":"Inactivity Watch Card","files":[{"path":"components/blocks/application-pro/activity/inactivity-watch-card.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/inactivity-watch-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Watchlist of projects gone quiet showing owner avatar, last event summary, a days idle count, and a nudge action per row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-live-presence-bar","type":"registry:block","title":"Live Presence Bar","files":[{"path":"components/blocks/application-pro/activity/live-presence-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/live-presence-bar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Realtime presence strip with stacked avatars, status dots for editing and viewing states, and a plus-overflow count."},{"name":"application-pro-activity-member-activity-panel","type":"registry:block","title":"Member Activity Panel","files":[{"path":"components/blocks/application-pro/activity/member-activity-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/member-activity-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Single member drill down with an avatar header, three weekly stat columns, and a recent actions list with typed icons and timestamps.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-mention-feed","type":"registry:block","title":"Mention Feed","files":[{"path":"components/blocks/application-pro/activity/mention-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/mention-feed.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Mentions inbox showing author, document context, highlighted snippet, timestamp, and a reply affordance per item.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-pinned-updates-card","type":"registry:block","title":"Pinned Updates Card","files":[{"path":"components/blocks/application-pro/activity/pinned-updates-card.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/pinned-updates-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Announcements widget showing three pinned workspace updates with author, tag badge, body text, and an unpin action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-reaction-activity-feed","type":"registry:block","title":"Reaction Activity Feed","files":[{"path":"components/blocks/application-pro/activity/reaction-activity-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/reaction-activity-feed.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Social activity feed showing who reacted to or commented on your work, with emoji badges and inline comment quotes."},{"name":"application-pro-activity-status-change-log","type":"registry:block","title":"Status Change Log","files":[{"path":"components/blocks/application-pro/activity/status-change-log.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/status-change-log.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Vertical timeline of status transitions for one entity with actor names, timestamps, and time-in-state durations.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-team-activity-feed","type":"registry:block","title":"Team Activity Feed","files":[{"path":"components/blocks/application-pro/activity/team-activity-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/team-activity-feed.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Workspace events on a timeline rail with avatars and one expanded comment.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-team-pulse-card","type":"registry:block","title":"Team Pulse Card","files":[{"path":"components/blocks/application-pro/activity/team-pulse-card.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/team-pulse-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Weekly team activity summary with commit, comment, and task stats, inline sparklines, and a most-active member row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-activity-version-history-list","type":"registry:block","title":"Version History List","files":[{"path":"components/blocks/application-pro/activity/version-history-list.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/version-history-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Named saves with autosaves collapsed, restore always creates, never rewinds.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-activity-who-did-what-table","type":"registry:block","title":"Who Did What Table","files":[{"path":"components/blocks/application-pro/activity/who-did-what-table.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/who-did-what-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Workspace activity table with actor avatars, plain-English action verbs, target resources, and result badges.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-audit-search-panel","type":"registry:block","title":"Audit Search Panel","files":[{"path":"components/blocks/application-pro/admin-moderation/audit-search-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/audit-search-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Compliance audit log with actor, action type, and date range filters, monospace action chips, IP column, and CSV export.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-automation-rules-panel","type":"registry:block","title":"Automation Rules Panel","files":[{"path":"components/blocks/application-pro/admin-moderation/automation-rules-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/automation-rules-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Automated rule cards in a two column grid with enabled switches, monospace When and Then chips, and match, precision, and overturned stats.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-admin-moderation-ban-appeal-panel","type":"registry:block","title":"Ban Appeal Panel","files":[{"path":"components/blocks/application-pro/admin-moderation/ban-appeal-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/ban-appeal-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Ban appeal review with the original enforcement reason, appellant statement, prior enforcement history, and uphold or reverse actions each requiring a written note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-admin-moderation-content-flags-table","type":"registry:block","title":"Content Flags Table","files":[{"path":"components/blocks/application-pro/admin-moderation/content-flags-table.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/content-flags-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Moderation flags overview table with content snippets, flag reasons, sortable flag counts, status badges, and per-row review actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-escalation-path-panel","type":"registry:block","title":"Escalation Path Panel","files":[{"path":"components/blocks/application-pro/admin-moderation/escalation-path-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/escalation-path-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Vertical escalation stepper with numbered tiers on a rail showing response SLAs, on call avatars, routed category badges, and auto escalation rules.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-admin-moderation-feature-toggle-admin","type":"registry:block","title":"Feature Toggle Admin","files":[{"path":"components/blocks/application-pro/admin-moderation/feature-toggle-admin.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/feature-toggle-admin.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Feature flag rows with environment badges, rollout percentage bars, kill-switch toggles, and a callout that kill switches take effect within 10 seconds globally.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-admin-moderation-ip-blocklist-manager","type":"registry:block","title":"IP Blocklist Manager","files":[{"path":"components/blocks/application-pro/admin-moderation/ip-blocklist-manager.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/ip-blocklist-manager.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Split blocklist manager pairing an add rule form with scope and duration choices beside ruled entries showing CIDR chips, hit counts, and expiry.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-moderation-queue","type":"registry:block","title":"Moderation Queue","files":[{"path":"components/blocks/application-pro/admin-moderation/moderation-queue.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/moderation-queue.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Reported items as prioritized cards with content snippet, reason, reporter count, age, and Approve, Remove, and Escalate actions per item.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-moderator-performance-board","type":"registry:block","title":"Moderator Performance Board","files":[{"path":"components/blocks/application-pro/admin-moderation/moderator-performance-board.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/moderator-performance-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Moderator table with focus queues, decision counts, seven day sparklines, median handle time, agreement meters, and overturned counts.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-admin-moderation-queue-health-panel","type":"registry:block","title":"Queue Health Panel","files":[{"path":"components/blocks/application-pro/admin-moderation/queue-health-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/queue-health-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Four stat tiles above a ruled queue list with open counts, oldest item age, SLA status badges, load bars, and assigned moderator avatars.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-report-review-card","type":"registry:block","title":"Report Review Card","files":[{"path":"components/blocks/application-pro/admin-moderation/report-review-card.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/report-review-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Single report case with reported content, reporter identity, author flag history, and a decision panel that names the consequence of every action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-role-permissions-matrix","type":"registry:block","title":"Role Permissions Matrix","files":[{"path":"components/blocks/application-pro/admin-moderation/role-permissions-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/role-permissions-matrix.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A permissions matrix with category grouped rows and four role columns showing member counts and check or minus access marks per cell.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-admin-moderation-user-admin-table","type":"registry:block","title":"User Admin Table","files":[{"path":"components/blocks/application-pro/admin-moderation/user-admin-table.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/user-admin-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Admin member roster with status badges, signup date, last seen, flag counts, and per-row impersonate and suspend actions logged to the audit trail.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-action-approval-card","type":"registry:block","title":"Action Approval Card","files":[{"path":"components/blocks/application-pro/ai-assistant/action-approval-card.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/action-approval-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Approval gate for a proposed assistant bulk change showing sample before and after field values with approve and reject buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-agent-run-trace","type":"registry:block","title":"Agent Run Trace","files":[{"path":"components/blocks/application-pro/ai-assistant/agent-run-trace.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/agent-run-trace.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Vertical timeline of agent tool steps with status icons, tool badges, mono query detail lines, durations, and a raw log link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-ai-usage-card","type":"registry:block","title":"Ai Usage Card","files":[{"path":"components/blocks/application-pro/ai-assistant/ai-usage-card.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/ai-usage-card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"AI token usage panel with a monthly progress bar, a per feature breakdown, and the overage policy stated in the same view.","dependencies":["radix-ui"]},{"name":"application-pro-ai-assistant-assistant-chat-panel","type":"registry:block","title":"Assistant Chat Panel","files":[{"path":"components/blocks/application-pro/ai-assistant/assistant-chat-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/assistant-chat-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Conversation thread with alternating user and assistant bubbles, inline source chips, and regenerate and copy affordances.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-assistant-empty-state","type":"registry:block","title":"Assistant Empty State","files":[{"path":"components/blocks/application-pro/ai-assistant/assistant-empty-state.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/assistant-empty-state.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pre-conversation assistant panel with 4 example prompt chips and plain lists of what the assistant can see and cannot do yet.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-citations-panel","type":"registry:block","title":"Citations Panel","files":[{"path":"components/blocks/application-pro/ai-assistant/citations-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/citations-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Sources side panel listing 4 cited documents with title, matched snippet, relevance chip, and an honest footer note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-ai-assistant-context-sources-panel","type":"registry:block","title":"Context Sources Panel","files":[{"path":"components/blocks/application-pro/ai-assistant/context-sources-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/context-sources-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Data access panel listing assistant readable sources with icon, item count, last sync time, and a switch, plus one excluded source.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-conversation-history-list","type":"registry:block","title":"Conversation History List","files":[{"path":"components/blocks/application-pro/ai-assistant/conversation-history-list.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/conversation-history-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Chat history sidebar listing past assistant threads grouped by recency with title, snippet, timestamp, and a delete affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-feedback-thumbs-row","type":"registry:block","title":"Feedback Thumbs Row","files":[{"path":"components/blocks/application-pro/ai-assistant/feedback-thumbs-row.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/feedback-thumbs-row.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"AI response feedback row with thumbs up and down, a copy and regenerate action, and a reason picker revealed on negative feedback.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-inline-suggestion-card","type":"registry:block","title":"Inline Suggestion Card","files":[{"path":"components/blocks/application-pro/ai-assistant/inline-suggestion-card.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/inline-suggestion-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Text editor surface showing an AI ghost-text completion with Tab to accept and Esc to dismiss keyboard hints and an authorship notice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-model-picker-card","type":"registry:block","title":"Model Picker Card","files":[{"path":"components/blocks/application-pro/ai-assistant/model-picker-card.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/model-picker-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Model selection card with three rows showing tier, cost per 1k tokens, a one-line tradeoff, and the balanced model pre-selected.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-prompt-composer","type":"registry:block","title":"Prompt Composer","files":[{"path":"components/blocks/application-pro/ai-assistant/prompt-composer.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/prompt-composer.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"AI input surface with a model chip, attach and slash command buttons, a token counter, and a keyboard hinted send button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-prompt-library-grid","type":"registry:block","title":"Prompt Library Grid","files":[{"path":"components/blocks/application-pro/ai-assistant/prompt-library-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/prompt-library-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Saved prompt cards in a filterable grid showing title, description, category badge, and use count with a create prompt affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-ai-assistant-thread-summary-card","type":"registry:block","title":"Thread Summary Card","files":[{"path":"components/blocks/application-pro/ai-assistant/thread-summary-card.tsx","type":"registry:component","target":"components/blocks/application-pro/ai-assistant/thread-summary-card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"AI generated thread summary with an overview paragraph, checked decision list, owner assigned action items, and regenerate and copy controls.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-bottom-panel-shell","type":"registry:block","title":"Bottom Panel Shell","files":[{"path":"components/blocks/application-pro/app-shells/bottom-panel-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/bottom-panel-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"IDE style shell with a slim run bar, an open canvas, a docked console panel with log tabs, and a pinned status bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-breadcrumb-header-shell","type":"registry:block","title":"Breadcrumb Header Shell","files":[{"path":"components/blocks/application-pro/app-shells/breadcrumb-header-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/breadcrumb-header-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Full-page shell for deep detail views with a breadcrumb trail, page title, meta row, and action buttons above two content panels.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-centered-content-shell","type":"registry:block","title":"Centered Content Shell","files":[{"path":"components/blocks/application-pro/app-shells/centered-content-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/centered-content-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim top bar and a max-w-3xl reading column on a muted background for docs, articles, or single settings detail pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-collapsible-sidebar-shell","type":"registry:block","title":"Collapsible Sidebar Shell","files":[{"path":"components/blocks/application-pro/app-shells/collapsible-sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/collapsible-sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Icon-only nav rail with an expand affordance, badge count on Projects, and an inline tooltip hint on one item.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-command-bar-shell","type":"registry:block","title":"Command Bar Shell","files":[{"path":"components/blocks/application-pro/app-shells/command-bar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/command-bar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Shell with a centered command bar in the top header, a keyboard shortcut hint, and a recent commands list below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-dashboard-home-shell","type":"registry:block","title":"Dashboard Home Shell","files":[{"path":"components/blocks/application-pro/app-shells/dashboard-home-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/dashboard-home-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The assembled overview, greeting header, KPI strip, recent list, one open chart slot.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-document-tabs-shell","type":"registry:block","title":"Document Tabs Shell","files":[{"path":"components/blocks/application-pro/app-shells/document-tabs-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/document-tabs-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Editor workspace shell with a strip of open document tabs, close buttons, an unsaved dot, and the active document content below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-dual-sidebar-shell","type":"registry:block","title":"Dual Sidebar Shell","files":[{"path":"components/blocks/application-pro/app-shells/dual-sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/dual-sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"App shell with a primary icon nav rail and a grouped contextual sub-nav panel for deep two-level navigation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-env-banner-shell","type":"registry:block","title":"Environment Banner Shell","files":[{"path":"components/blocks/application-pro/app-shells/env-banner-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/env-banner-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"App shell with a pinned staging environment banner, a switch action, a topbar, and a deployments page with an environment facts panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-focus-mode-shell","type":"registry:block","title":"Focus Mode Shell","files":[{"path":"components/blocks/application-pro/app-shells/focus-mode-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/focus-mode-shell.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Minimal top bar with back link, document title, save state badge, and a centered max-w content column with no sidebar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-full-bleed-shell","type":"registry:block","title":"Full Bleed Shell","files":[{"path":"components/blocks/application-pro/app-shells/full-bleed-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/full-bleed-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Edge-to-edge canvas shell with a floating toolbar for maps, boards, and diagram editors that need every pixel of viewport space.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-icon-sidebar-shell","type":"registry:block","title":"Icon Sidebar Shell","files":[{"path":"components/blocks/application-pro/app-shells/icon-sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/icon-sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The icon only rail with aria labels, maximum width left for dense tool content.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-inbox-shell","type":"registry:block","title":"Inbox Shell","files":[{"path":"components/blocks/application-pro/app-shells/inbox-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/inbox-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three pane mail shell with a labeled folder sidebar, an unread message list, and a reading pane with triage actions and a reply footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-nested-nav-sidebar-shell","type":"registry:block","title":"Nested Nav Sidebar Shell","files":[{"path":"components/blocks/application-pro/app-shells/nested-nav-sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/nested-nav-sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Sidebar with Projects expanded to three indented children, one active.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-right-rail-shell","type":"registry:block","title":"Right Rail Shell","files":[{"path":"components/blocks/application-pro/app-shells/right-rail-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/right-rail-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three-column shell with an icon nav rail, main content area, and a right context rail showing a live activity list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-settings-shell","type":"registry:block","title":"Settings Shell","files":[{"path":"components/blocks/application-pro/app-shells/settings-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/settings-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three column settings scaffold, icon rail, secondary nav with Danger zone, content column.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-sidebar-shell","type":"registry:block","title":"Sidebar Shell","files":[{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"The navigation rail with active state, command hint, and labeled drop zones for your pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-split-content-shell","type":"registry:block","title":"Split Content Shell","files":[{"path":"components/blocks/application-pro/app-shells/split-content-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/split-content-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Full-page shell with a slim top bar and a 50/50 editor and preview pane split for authoring and live-preview workflows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-sticky-toolbar-shell","type":"registry:block","title":"Sticky Toolbar Shell","files":[{"path":"components/blocks/application-pro/app-shells/sticky-toolbar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sticky-toolbar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"App shell with a sticky bulk-actions and filter toolbar that stays pinned above a scrollable data table.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-tabbed-page-shell","type":"registry:block","title":"Tabbed Page Shell","files":[{"path":"components/blocks/application-pro/app-shells/tabbed-page-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/tabbed-page-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"A full-page shell with a sidebar, a named resource header, and a horizontal tab row delivering sub-view content below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-topbar-shell","type":"registry:block","title":"Topbar Shell","files":[{"path":"components/blocks/application-pro/app-shells/topbar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/topbar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Horizontal nav with the Acme lockup, five links, a command hint, and the page below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-two-pane-shell","type":"registry:block","title":"Two Pane Shell","files":[{"path":"components/blocks/application-pro/app-shells/two-pane-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/two-pane-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Master-detail layout with a six-row project list pane and a wide detail pane showing the selected item header.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-app-shells-wizard-shell","type":"registry:block","title":"Wizard Shell","files":[{"path":"components/blocks/application-pro/app-shells/wizard-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/wizard-shell.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Multi-step flow shell with a slim header step indicator, centered content column, and sticky back and continue footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-accept-invite-page","type":"registry:block","title":"Accept Invite Page","files":[{"path":"components/blocks/application-pro/auth-pages/accept-invite-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/accept-invite-page.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The invite named, inviter, role, what it grants, and the days left to accept.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-account-recovery-page","type":"registry:block","title":"Account Recovery Page","files":[{"path":"components/blocks/application-pro/auth-pages/account-recovery-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/account-recovery-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Account recovery card with an email lookup form and three recovery options listed by speed, plus a plain explanation of why identity review takes up to 3 days.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-backup-codes-page","type":"registry:block","title":"Backup Codes Page","files":[{"path":"components/blocks/application-pro/auth-pages/backup-codes-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/backup-codes-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Recovery code save step with an eight code grid, download and copy actions, a saved confirmation checkbox, and a one time use warning.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-deactivated-account-page","type":"registry:block","title":"Deactivated Account Page","files":[{"path":"components/blocks/application-pro/auth-pages/deactivated-account-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/deactivated-account-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Account deactivation state page naming who deactivated the account and when, listing what reactivation restores, and linking directly to the named admin for recovery.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-device-approval-page","type":"registry:block","title":"Device Approval Page","files":[{"path":"components/blocks/application-pro/auth-pages/device-approval-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/device-approval-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"New device verification gate showing device, location, time, and account with approve and deny actions and an honest account-lock security note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-email-changed-confirm","type":"registry:block","title":"Email Changed Confirm","files":[{"path":"components/blocks/application-pro/auth-pages/email-changed-confirm.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/email-changed-confirm.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Email change confirmation page showing the new and old address with timestamp and device, a lock account alarm for unauthorized changes, and a dual address notice.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-forgot-password-page","type":"registry:block","title":"Forgot Password Page","files":[{"path":"components/blocks/application-pro/auth-pages/forgot-password-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/forgot-password-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Password reset form that openly explains its anti enumeration response and states reset link timing facts.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-join-workspace-page","type":"registry:block","title":"Join Workspace Page","files":[{"path":"components/blocks/application-pro/auth-pages/join-workspace-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/join-workspace-page.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Workspace entry page for invited and domain-matched users with a member preview, join or request buttons, and a note that joining is visible to admins immediately.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-locked-account-page","type":"registry:block","title":"Locked Account Page","files":[{"path":"components/blocks/application-pro/auth-pages/locked-account-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/locked-account-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Account lockout page stating the 15-minute duration, a password reset shortcut, and the reassurance that lockouts are never permanent.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-magic-link-page","type":"registry:block","title":"Magic Link Page","files":[{"path":"components/blocks/application-pro/auth-pages/magic-link-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/magic-link-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Passwordless sign in showing both the request and sent states with expiry and resend throttle facts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-oauth-callback-page","type":"registry:block","title":"Oauth Callback Page","files":[{"path":"components/blocks/application-pro/auth-pages/oauth-callback-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/oauth-callback-page.tsx"},{"path":"components/ui/spinner.tsx","type":"registry:ui","target":"components/ui/spinner.tsx"}],"description":"OAuth connecting state card with a Spinner, three step rows showing progress for a GitHub org link, and fallback links if the page hangs.","dependencies":["lucide-react"]},{"name":"application-pro-auth-pages-oauth-consent-page","type":"registry:block","title":"Oauth Consent Page","files":[{"path":"components/blocks/application-pro/auth-pages/oauth-consent-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/oauth-consent-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Third party app authorization card listing granted scopes and explicit exclusions, the acting account, and authorize or cancel actions with a revoke note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-passkey-setup-page","type":"registry:block","title":"Passkey Setup Page","files":[{"path":"components/blocks/application-pro/auth-pages/passkey-setup-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/passkey-setup-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered auth card prompting passkey enrollment with three benefit rows, a device save target panel, and a skip fallback that keeps the existing password active.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-reset-password-page","type":"registry:block","title":"Reset Password Page","files":[{"path":"components/blocks/application-pro/auth-pages/reset-password-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/reset-password-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"New password form reached from a reset link with a requirements checklist, a session sign out panel, and the note that nothing changes until save.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-session-expired-page","type":"registry:block","title":"Session Expired Page","files":[{"path":"components/blocks/application-pro/auth-pages/session-expired-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/session-expired-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Calm session timeout screen that promises local draft restore and prefills the email for one click return.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-sign-in-page","type":"registry:block","title":"Sign In Page","files":[{"path":"components/blocks/application-pro/auth-pages/sign-in-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/sign-in-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"SSO first sign in with the password fallback and honest reset link timing.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-sign-up-page","type":"registry:block","title":"Sign Up Page","files":[{"path":"components/blocks/application-pro/auth-pages/sign-up-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/sign-up-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Workspace signup with SSO buttons first, slug preview, and plain 14 day read only trial terms.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-sso-error-page","type":"registry:block","title":"Sso Error Page","files":[{"path":"components/blocks/application-pro/auth-pages/sso-error-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/sso-error-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"SSO failure page with the specific error reason, a named admin contact, numbered steps to resolve, and retry plus password fallback actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-sso-login-page","type":"registry:block","title":"Sso Login Page","files":[{"path":"components/blocks/application-pro/auth-pages/sso-login-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/sso-login-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"SSO-enforced sign in card with org domain shown, a single Continue with SSO button, and a named admin fallback for lockouts.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-two-factor-page","type":"registry:block","title":"Two Factor Page","files":[{"path":"components/blocks/application-pro/auth-pages/two-factor-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/two-factor-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input-otp.tsx","type":"registry:ui","target":"components/ui/input-otp.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"TOTP verification with six OTP slots, device trust checkbox, backup code link, and human recovery promise.","dependencies":["class-variance-authority","input-otp","lucide-react","radix-ui"]},{"name":"application-pro-auth-pages-verify-email-page","type":"registry:block","title":"Verify Email Page","files":[{"path":"components/blocks/application-pro/auth-pages/verify-email-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/verify-email-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Check-your-inbox state showing the sent address, a throttled resend button, a change-email link, and the 24-hour expiry note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-welcome-back-login","type":"registry:block","title":"Welcome Back Login","files":[{"path":"components/blocks/application-pro/auth-pages/welcome-back-login.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/welcome-back-login.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Returning user login showing the known account avatar and email with a single password field, passkey option, and a use a different account escape hatch.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-auth-pages-workspace-picker-page","type":"registry:block","title":"Workspace Picker Page","files":[{"path":"components/blocks/application-pro/auth-pages/workspace-picker-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/workspace-picker-page.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Post sign in workspace chooser listing memberships with marks, member counts, and role badges, plus a create workspace action and sign out link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-billing-contacts-card","type":"registry:block","title":"Billing Contacts Card","files":[{"path":"components/blocks/application-pro/billing/billing-contacts-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/billing-contacts-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Who gets invoices, the add contact field, and the PO number printed on every one.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-billing-cycle-switch","type":"registry:block","title":"Billing Cycle Switch","files":[{"path":"components/blocks/application-pro/billing/billing-cycle-switch.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/billing-cycle-switch.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Monthly and annual cycle options side by side with per seat pricing, the yearly saving, and ruled rows stating when the switch takes effect.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-cancel-flow-blueprint","type":"registry:block","title":"Cancel Flow Blueprint","files":[{"path":"components/blocks/application-pro/billing/cancel-flow-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/cancel-flow-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Cancel subscription dialog showing what you keep until the period ends, what changes after, a downgrade suggestion, and an optional reason select.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-coupon-redemption-card","type":"registry:block","title":"Coupon Redemption Card","files":[{"path":"components/blocks/application-pro/billing/coupon-redemption-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/coupon-redemption-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Active promotion with mono code, discount terms, per invoice saving, the next discounted total, and a labeled field to apply another code.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-credits-balance-card","type":"registry:block","title":"Credits Balance Card","files":[{"path":"components/blocks/application-pro/billing/credits-balance-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/credits-balance-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Prepaid credits wallet showing current balance, a ruled grants and spends ledger, and the application policy.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-current-plan-usage","type":"registry:block","title":"Current Plan Usage","files":[{"path":"components/blocks/application-pro/billing/current-plan-usage.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/current-plan-usage.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Team plan header with renewal date and three usage meters each stating the overage policy beneath the bar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-dunning-banner","type":"registry:block","title":"Dunning Banner","files":[{"path":"components/blocks/application-pro/billing/dunning-banner.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/dunning-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Payment-failed notice with the card charged, retry schedule, exact access-pause date, and an update payment method action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-invoice-detail-page","type":"registry:block","title":"Invoice Detail Page","files":[{"path":"components/blocks/application-pro/billing/invoice-detail-page.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/invoice-detail-page.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Single printable invoice with mono number, from/to addresses, tabular line items, subtotal/tax/total, a Paid badge, and download/print actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-invoice-history-table","type":"registry:block","title":"Invoice History Table","files":[{"path":"components/blocks/application-pro/billing/invoice-history-table.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/invoice-history-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Compact invoice archive with the estimated next invoice previewed at the top.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-pause-subscription-panel","type":"registry:block","title":"Pause Subscription Panel","files":[{"path":"components/blocks/application-pro/billing/pause-subscription-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/pause-subscription-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three pause lengths with exact resume dates, a checklist of what happens while paused, and a pause action beside the cancel alternative.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-payment-history-table","type":"registry:block","title":"Payment History Table","files":[{"path":"components/blocks/application-pro/billing/payment-history-table.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/payment-history-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Transactions ledger with date, description, card brand chip with last four digits, tabular amount, status badge, and a per row receipt link.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-payment-method-panel","type":"registry:block","title":"Payment Method Panel","files":[{"path":"components/blocks/application-pro/billing/payment-method-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/payment-method-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The saved card, billing email, the optional backup slot, and the token footer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-plan-change-history","type":"registry:block","title":"Plan Change History","files":[{"path":"components/blocks/application-pro/billing/plan-change-history.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/plan-change-history.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Dated log of upgrades, seat additions, promotions, and cycle switches, each with a type badge and the teammate who made the change.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-plan-comparison-table","type":"registry:block","title":"Plan Comparison Table","files":[{"path":"components/blocks/application-pro/billing/plan-comparison-table.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/plan-comparison-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three-plan feature matrix with Check and Minus cells, per-plan prices, current plan marker, and a quiet most-popular note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-proration-preview-card","type":"registry:block","title":"Proration Preview Card","files":[{"path":"components/blocks/application-pro/billing/proration-preview-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/proration-preview-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"Upgrade proration preview with credit and charge line items, due-today total, and next renewal amount.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-receipt-card","type":"registry:block","title":"Receipt Card","files":[{"path":"components/blocks/application-pro/billing/receipt-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/receipt-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Single payment receipt with amount, date, card, transaction ID, a download PDF action, and a link to the formal tax invoice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-refund-status-card","type":"registry:block","title":"Refund Status Card","files":[{"path":"components/blocks/application-pro/billing/refund-status-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/refund-status-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Refund in progress with amount, dates, returning card, and a four stage pipeline showing current processing state.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-seat-management-panel","type":"registry:block","title":"Seat Management Panel","files":[{"path":"components/blocks/application-pro/billing/seat-management-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/seat-management-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Idle seats listed with last active and the keep or free choice priced per month.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-spending-limit-card","type":"registry:block","title":"Spending Limit Card","files":[{"path":"components/blocks/application-pro/billing/spending-limit-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/spending-limit-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Monthly cap widget showing current spend on a Progress bar with alert threshold markers and an explicit policy for what pauses at the limit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-tax-and-invoice-settings","type":"registry:block","title":"Tax and Invoice Settings","files":[{"path":"components/blocks/application-pro/billing/tax-and-invoice-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/tax-and-invoice-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"VAT and Tax ID panel with VIES validation note, billing address fields, reverse charge callout, and invoice appearance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-upgrade-comparison-card","type":"registry:block","title":"Upgrade Comparison Card","files":[{"path":"components/blocks/application-pro/billing/upgrade-comparison-card.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/upgrade-comparison-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The seat limit upsell with the delta priced for your seats and the honest alternative.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-billing-usage-alerts-panel","type":"registry:block","title":"Usage Alerts Panel","files":[{"path":"components/blocks/application-pro/billing/usage-alerts-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/usage-alerts-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Alert rules as a ruled list with metric thresholds, recipient emails, and toggles, plus an add alert action and a hard cap caveat.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-billing-usage-breakdown-bill","type":"registry:block","title":"Usage Breakdown Bill","files":[{"path":"components/blocks/application-pro/billing/usage-breakdown-bill.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/usage-breakdown-bill.tsx"}],"description":"The period charges line by line with a dated projection and its method stated."},{"name":"application-pro-calendar-scheduling-availability-grid","type":"registry:block","title":"Availability Grid","files":[{"path":"components/blocks/application-pro/calendar-scheduling/availability-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/availability-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Single-day slot picker with taken slots disabled, the selected slot highlighted, timezone line, and a buffer note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-booking-confirmation-card","type":"registry:block","title":"Booking Confirmation Card","files":[{"path":"components/blocks/application-pro/calendar-scheduling/booking-confirmation-card.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/booking-confirmation-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Post-booking summary card with meeting title, attendee avatars, dual-timezone times, add-to-calendar buttons, and a cancellation policy note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-calendar-sync-status","type":"registry:block","title":"Calendar Sync Status","files":[{"path":"components/blocks/application-pro/calendar-scheduling/calendar-sync-status.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/calendar-sync-status.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Connected calendars panel with per account sync freshness, slot blocking modes, an inline reconnect row for expired auth, and a privacy note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-event-list-day","type":"registry:block","title":"Event List Day","files":[{"path":"components/blocks/application-pro/calendar-scheduling/event-list-day.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/event-list-day.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Day schedule list with an all-day item pinned at top, ruled timed event rows, and an explicit free-time gap row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-meeting-poll-panel","type":"registry:block","title":"Meeting Poll Panel","files":[{"path":"components/blocks/application-pro/calendar-scheduling/meeting-poll-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/meeting-poll-panel.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Group scheduling poll with three proposed times, voter avatar stacks, vote share bars, a highlighted leading option, and finalize actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-mini-calendar-card","type":"registry:block","title":"Mini Calendar Card","files":[{"path":"components/blocks/application-pro/calendar-scheduling/mini-calendar-card.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/mini-calendar-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Compact sidebar month picker with today highlighted, event dots on three dates, and prev and next navigation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-month-calendar","type":"registry:block","title":"Month Calendar","files":[{"path":"components/blocks/application-pro/calendar-scheduling/month-calendar.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/month-calendar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Month grid for June 2026 with event chips, overflow badges, today highlighted, and muted out-of-month days.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-recurring-event-form","type":"registry:block","title":"Recurring Event Form","files":[{"path":"components/blocks/application-pro/calendar-scheduling/recurring-event-form.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/recurring-event-form.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Recurrence rule builder with interval input, weekday toggle chips, end condition selector, and a plain-English rule summary.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-scheduling-link-card","type":"registry:block","title":"Scheduling Link Card","files":[{"path":"components/blocks/application-pro/calendar-scheduling/scheduling-link-card.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/scheduling-link-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Booking link share card with a copy chip, three meeting types with buffers, availability hours, and a double-booking note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-team-availability-heatmap","type":"registry:block","title":"Team Availability Heatmap","files":[{"path":"components/blocks/application-pro/calendar-scheduling/team-availability-heatmap.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/team-availability-heatmap.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Week by hour heat grid of team overlap with day columns, a ring highlighted best slot, density legend, and a propose time callout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-timezone-compare-row","type":"registry:block","title":"Timezone Compare Row","files":[{"path":"components/blocks/application-pro/calendar-scheduling/timezone-compare-row.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/timezone-compare-row.tsx"}],"description":"Proposed meeting time shown side by side across four attendee timezones with local time, offset, and working hours status for each.","dependencies":["lucide-react"]},{"name":"application-pro-calendar-scheduling-week-agenda","type":"registry:block","title":"Week Agenda","files":[{"path":"components/blocks/application-pro/calendar-scheduling/week-agenda.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/week-agenda.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Week view with a vertical time column, five day columns, CSS-positioned event blocks, and a current-time line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-calendar-scheduling-working-hours-editor","type":"registry:block","title":"Working Hours Editor","files":[{"path":"components/blocks/application-pro/calendar-scheduling/working-hours-editor.tsx","type":"registry:component","target":"components/blocks/application-pro/calendar-scheduling/working-hours-editor.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Weekly availability settings with per day switches, bookable time range chips, a timezone note, weekly total badge, and save actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-charts-area-with-range-chart","type":"registry:block","title":"Area With Range Chart","files":[{"path":"components/blocks/application-pro/charts/area-with-range-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/area-with-range-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"An area chart showing actuals with a muted 80% confidence band and a dashed projection tail for future months.","dependencies":["recharts"]},{"name":"application-pro-charts-bubble-chart","type":"registry:block","title":"Bubble Chart","files":[{"path":"components/blocks/application-pro/charts/bubble-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/bubble-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"ScatterChart plotting accounts by usage score, monthly revenue, and seat count encoded as bubble size.","dependencies":["recharts"]},{"name":"application-pro-charts-cohort-retention-heatmap","type":"registry:block","title":"Cohort Retention Heatmap","files":[{"path":"components/blocks/application-pro/charts/cohort-retention-heatmap.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/cohort-retention-heatmap.tsx"}],"description":"A CSS grid heatmap of weekly cohort retention shaded by foreground opacity tokens with no chart library."},{"name":"application-pro-charts-conversion-funnel-bars","type":"registry:block","title":"Conversion Funnel Bars","files":[{"path":"components/blocks/application-pro/charts/conversion-funnel-bars.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/conversion-funnel-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"The funnel as horizontal bars with each rate against the prior stage, labeled.","dependencies":["recharts"]},{"name":"application-pro-charts-diverging-survey-bars","type":"registry:block","title":"Diverging Survey Bars","files":[{"path":"components/blocks/application-pro/charts/diverging-survey-bars.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/diverging-survey-bars.tsx"}],"description":"Likert survey responses as diverging stacked bars around a center axis with a four segment legend and agree share per question."},{"name":"application-pro-charts-dumbbell-latency-chart","type":"registry:block","title":"Dumbbell Latency Chart","files":[{"path":"components/blocks/application-pro/charts/dumbbell-latency-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/dumbbell-latency-chart.tsx"}],"description":"Dumbbell rows comparing p95 latency per endpoint before and after a release, with connector bars, paired dots, and an axis row."},{"name":"application-pro-charts-gauge-progress-chart","type":"registry:block","title":"Gauge Progress Chart","files":[{"path":"components/blocks/application-pro/charts/gauge-progress-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/gauge-progress-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A radial gauge showing a single SLA percentage with the value centred and the target threshold named in the footnote.","dependencies":["recharts"]},{"name":"application-pro-charts-grouped-bar-chart","type":"registry:block","title":"Grouped Bar Chart","files":[{"path":"components/blocks/application-pro/charts/grouped-bar-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/grouped-bar-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Feature usage grouped bar chart comparing this billing period against the previous across six categories with a shared legend.","dependencies":["recharts"]},{"name":"application-pro-charts-heatmap-calendar-chart","type":"registry:block","title":"Heatmap Calendar Chart","files":[{"path":"components/blocks/application-pro/charts/heatmap-calendar-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/heatmap-calendar-chart.tsx"}],"description":"CSS grid calendar heatmap shading daily activity by foreground opacity across a six month window."},{"name":"application-pro-charts-horizontal-bar-ranking","type":"registry:block","title":"Horizontal Bar Ranking","files":[{"path":"components/blocks/application-pro/charts/horizontal-bar-ranking.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/horizontal-bar-ranking.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Horizontal bar chart ranking the top 6 pages by view count with inline value labels and a footnote naming the 3x lead of the top page.","dependencies":["recharts"]},{"name":"application-pro-charts-latency-percentile-chart","type":"registry:block","title":"Latency Percentile Chart","files":[{"path":"components/blocks/application-pro/charts/latency-percentile-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/latency-percentile-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"API request latency as p50, p95, and p99 lines over 24 hourly points with ms axis formatting.","dependencies":["recharts"]},{"name":"application-pro-charts-mrr-stacked-bars","type":"registry:block","title":"Mrr Stacked Bars","files":[{"path":"components/blocks/application-pro/charts/mrr-stacked-bars.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/mrr-stacked-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"MRR movement as stacked bars with new and expansion above zero and contraction and churn below, last 6 months.","dependencies":["recharts"]},{"name":"application-pro-charts-multi-line-trend","type":"registry:block","title":"Multi Line Trend","files":[{"path":"components/blocks/application-pro/charts/multi-line-trend.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/multi-line-trend.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Three-series line chart tracking monthly active seats across Starter, Growth, and Enterprise plans with a legend and a footnote naming the September crossover.","dependencies":["recharts"]},{"name":"application-pro-charts-pareto-error-chart","type":"registry:block","title":"Pareto Error Chart","files":[{"path":"components/blocks/application-pro/charts/pareto-error-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/pareto-error-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A Pareto chart pairing error category bars sorted by volume with a cumulative share line on a second percentage axis.","dependencies":["recharts"]},{"name":"application-pro-charts-plan-mix-donut","type":"registry:block","title":"Plan Mix Donut","files":[{"path":"components/blocks/application-pro/charts/plan-mix-donut.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/plan-mix-donut.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Donut chart of active workspaces by plan tier with a center total label and a four plan legend.","dependencies":["recharts"]},{"name":"application-pro-charts-radar-chart","type":"registry:block","title":"Radar Chart","files":[{"path":"components/blocks/application-pro/charts/radar-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/radar-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"RadarChart comparing two plans across five feature dimensions with filled polygons and a shared legend.","dependencies":["recharts"]},{"name":"application-pro-charts-radial-usage-rings","type":"registry:block","title":"Radial Usage Rings","files":[{"path":"components/blocks/application-pro/charts/radial-usage-rings.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/radial-usage-rings.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Concentric radial rings showing percent of quota used per storage resource beside a breakdown list with exact allocations.","dependencies":["recharts"]},{"name":"application-pro-charts-revenue-area-chart","type":"registry:block","title":"Revenue Area Chart","files":[{"path":"components/blocks/application-pro/charts/revenue-area-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/revenue-area-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Stacked area chart showing new business and expansion MRR added each month across an 8 month window.","dependencies":["recharts"]},{"name":"application-pro-charts-scatter-plot-chart","type":"registry:block","title":"Scatter Plot Chart","files":[{"path":"components/blocks/application-pro/charts/scatter-plot-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/scatter-plot-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Accounts scatter chart plotting monthly API usage against revenue with reference-line quadrants to surface expansion targets.","dependencies":["recharts"]},{"name":"application-pro-charts-signups-bar-chart","type":"registry:block","title":"Signups Bar Chart","files":[{"path":"components/blocks/application-pro/charts/signups-bar-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/signups-bar-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Weekly new account signups as a single series bar chart over 10 weeks with a labeled launch spike.","dependencies":["recharts"]},{"name":"application-pro-charts-sparkbar-row","type":"registry:block","title":"Sparkbar Row","files":[{"path":"components/blocks/application-pro/charts/sparkbar-row.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/sparkbar-row.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Four compact metric tiles each with a label, headline value, and a mini 8-week bar chart for a glanceable ops comparison strip.","dependencies":["recharts"]},{"name":"application-pro-charts-stacked-category-bars","type":"registry:block","title":"Stacked Category Bars","files":[{"path":"components/blocks/application-pro/charts/stacked-category-bars.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/stacked-category-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A stacked bar chart of support tickets by category over six weeks with a footnote naming the fastest growing series.","dependencies":["recharts"]},{"name":"application-pro-charts-stepped-area-chart","type":"registry:block","title":"Stepped Area Chart","files":[{"path":"components/blocks/application-pro/charts/stepped-area-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/stepped-area-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Active seats area chart using stepAfter type so each provisioning event reads as an instantaneous jump, not gradual growth.","dependencies":["recharts"]},{"name":"application-pro-charts-usage-line-chart","type":"registry:block","title":"Usage Line Chart","files":[{"path":"components/blocks/application-pro/charts/usage-line-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/usage-line-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"API requests per day as two lines separating production and sandbox volume across a 14 day window.","dependencies":["recharts"]},{"name":"application-pro-charts-waterfall-chart","type":"registry:block","title":"Waterfall Chart","files":[{"path":"components/blocks/application-pro/charts/waterfall-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/waterfall-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"MRR movement chart with floating bars for new business, expansion, and churn across a billing period.","dependencies":["recharts"]},{"name":"application-pro-charts-weekly-active-users-chart","type":"registry:block","title":"Weekly Active Users Chart","files":[{"path":"components/blocks/application-pro/charts/weekly-active-users-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/weekly-active-users-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Distinct active users per ISO week as a filled area over 12 weeks with a dashed quarter target reference line.","dependencies":["recharts"]},{"name":"application-pro-chat-messaging-active-call-panel","type":"registry:block","title":"Active Call Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/active-call-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/active-call-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Live huddle surface with elapsed timer, presenting banner, participant tiles showing mute and speaking states, and a call control bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-channel-list-sidebar","type":"registry:block","title":"Channel List Sidebar","files":[{"path":"components/blocks/application-pro/chat-messaging/channel-list-sidebar.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/channel-list-sidebar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Workspace nav rail with channel and DM sections, unread badges, a muted channel indicator, and per section add affordances.","dependencies":["lucide-react"]},{"name":"application-pro-chat-messaging-channel-settings-panel","type":"registry:block","title":"Channel Settings Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/channel-settings-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/channel-settings-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Channel settings panel with name and topic fields, public/private radio with consequence notes, a members list, notification level selector, and an archive action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-conversation-list","type":"registry:block","title":"Conversation List","files":[{"path":"components/blocks/application-pro/chat-messaging/conversation-list.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/conversation-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Inbox rail with six conversation rows showing avatar, preview, timestamp, and unread count badges on two threads.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-chat-messaging-dm-thread-panel","type":"registry:block","title":"Dm Thread Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/dm-thread-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/dm-thread-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Complete 1:1 panel combining a presence header, a grouped message thread with read receipt, and a full composer bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-emoji-reactions-blueprint","type":"registry:block","title":"Emoji Reactions Blueprint","files":[{"path":"components/blocks/application-pro/chat-messaging/emoji-reactions-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/emoji-reactions-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Static open-state emoji picker inline above a message with a recents row, category grid, search input, and existing reaction chips.","dependencies":["lucide-react"]},{"name":"application-pro-chat-messaging-message-composer","type":"registry:block","title":"Message Composer","files":[{"path":"components/blocks/application-pro/chat-messaging/message-composer.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/message-composer.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Chat send bar with attach, emoji, and slash affordances, a typing indicator row, and a Send button with an Enter keyboard hint.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-message-thread","type":"registry:block","title":"Message Thread","files":[{"path":"components/blocks/application-pro/chat-messaging/message-thread.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/message-thread.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Chat thread with grouped sender bubbles, a Today day divider, a reaction chip, and a read receipt on the last outgoing message.","dependencies":["lucide-react"]},{"name":"application-pro-chat-messaging-pinned-messages-panel","type":"registry:block","title":"Pinned Messages Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/pinned-messages-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/pinned-messages-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Channel pinned messages list showing author, snippet, pinned time and pinner, a jump-to link, and an unpin button per entry.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-poll-message-card","type":"registry:block","title":"Poll Message Card","files":[{"path":"components/blocks/application-pro/chat-messaging/poll-message-card.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/poll-message-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Inline thread poll with vote share bars per option, a check on your vote, voter avatar cluster, total count, and close time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-scheduled-messages-panel","type":"registry:block","title":"Scheduled Messages Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/scheduled-messages-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/scheduled-messages-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Queued outgoing messages list with destination, draft snippet, exact send time, and per row send now, edit, and delete actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-search-messages-results","type":"registry:block","title":"Search Messages Results","files":[{"path":"components/blocks/application-pro/chat-messaging/search-messages-results.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/search-messages-results.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Chat search results grouped by channel and DM with author, inline highlighted match term, timestamp, and a jump-to-message affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-shared-files-panel","type":"registry:block","title":"Shared Files Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/shared-files-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/shared-files-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Conversation files tab with type filter chips and rows showing a file icon, name, size, uploader, share date, and a download action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-chat-messaging-thread-reply-panel","type":"registry:block","title":"Thread Reply Panel","files":[{"path":"components/blocks/application-pro/chat-messaging/thread-reply-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/chat-messaging/thread-reply-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Side panel showing a parent channel message, a reply count divider, four threaded replies, and a scoped reply composer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-annotation-toolbar-blueprint","type":"registry:block","title":"Annotation Toolbar Blueprint","files":[{"path":"components/blocks/application-pro/comments-annotations/annotation-toolbar-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/annotation-toolbar-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open-state blueprint of a text-selection toolbar with comment, highlight, suggest-edit, and link affordances plus a five-color swatch row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-canvas-pin-comments","type":"registry:block","title":"Canvas Pin Comments","files":[{"path":"components/blocks/application-pro/comments-annotations/canvas-pin-comments.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/canvas-pin-comments.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Design canvas mockup with four numbered comment pins and a side rail listing each pin thread with author, note, and resolve actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-code-review-thread","type":"registry:block","title":"Code Review Thread","files":[{"path":"components/blocks/application-pro/comments-annotations/code-review-thread.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/code-review-thread.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Code diff panel with line numbers, added and removed rows, and a line anchored review thread with replies, composer, and resolve action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-comment-composer","type":"registry:block","title":"Comment Composer","files":[{"path":"components/blocks/application-pro/comments-annotations/comment-composer.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/comment-composer.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Standalone comment composer with a formatting toolbar, file attach, at mention hint, and a Cmd Enter keyboard shortcut hint.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-comment-notification-inbox","type":"registry:block","title":"Comment Notification Inbox","files":[{"path":"components/blocks/application-pro/comments-annotations/comment-notification-inbox.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/comment-notification-inbox.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Cross document notification feed with mention, reply, and resolve items, unread dots, type filter chips, and a mark all read action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-comment-sidebar","type":"registry:block","title":"Comment Sidebar","files":[{"path":"components/blocks/application-pro/comments-annotations/comment-sidebar.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/comment-sidebar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Document comment sidebar with four threads anchored to quoted text, reply counts, resolve affordances, and one collapsed resolved thread.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-inline-annotation-thread","type":"registry:block","title":"Inline Annotation Thread","files":[{"path":"components/blocks/application-pro/comments-annotations/inline-annotation-thread.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/inline-annotation-thread.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"Highlighted text excerpt with an attached margin thread showing two comments, a reply composer, emoji reactions, and resolve and delete controls.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-mention-picker-blueprint","type":"registry:block","title":"Mention Picker Blueprint","files":[{"path":"components/blocks/application-pro/comments-annotations/mention-picker-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/mention-picker-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Static open state of an at mention picker showing six workspace members with one row highlighted and keyboard navigation hints."},{"name":"application-pro-comments-annotations-reaction-bar","type":"registry:block","title":"Reaction Bar","files":[{"path":"components/blocks/application-pro/comments-annotations/reaction-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/reaction-bar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Emoji reaction chips with counts showing active and inactive states, an add reaction affordance, and a static hover panel listing who reacted."},{"name":"application-pro-comments-annotations-resolved-comments-list","type":"registry:block","title":"Resolved Comments List","files":[{"path":"components/blocks/application-pro/comments-annotations/resolved-comments-list.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/resolved-comments-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Audit list of closed comment threads with quoted references, resolution attribution, reply counts, a reopen affordance, and an all vs resolved filter.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-suggestion-review-row","type":"registry:block","title":"Suggestion Review Row","files":[{"path":"components/blocks/application-pro/comments-annotations/suggestion-review-row.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/suggestion-review-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pending edit review rows showing the struck original beside the proposed replacement with author attribution and accept and reject actions per suggestion.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-comments-annotations-video-timestamp-comments","type":"registry:block","title":"Video Timestamp Comments","files":[{"path":"components/blocks/application-pro/comments-annotations/video-timestamp-comments.tsx","type":"registry:component","target":"components/blocks/application-pro/comments-annotations/video-timestamp-comments.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Video review timeline with avatar markers at comment timestamps and a list of time anchored notes with reply and mark done controls.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-audit-log-table","type":"registry:block","title":"Audit Log Table","files":[{"path":"components/blocks/application-pro/data-tables/audit-log-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/audit-log-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Append only security log with mono timestamps, actor avatars, code chip action keys, targets, and source IPs.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-comparison-table","type":"registry:block","title":"Comparison Table","files":[{"path":"components/blocks/application-pro/data-tables/comparison-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/comparison-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Plan comparison table with features as rows, plans as columns, differing cells highlighted, and a per-column upgrade CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-csv-preview-table","type":"registry:block","title":"Csv Preview Table","files":[{"path":"components/blocks/application-pro/data-tables/csv-preview-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/csv-preview-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"CSV import preview with column to field mapping Selects, an unmapped column flag, and a row issue count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-dense-data-table","type":"registry:block","title":"Dense Data Table","files":[{"path":"components/blocks/application-pro/data-tables/dense-data-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/dense-data-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"The compact variant fitting eight webhook rows where a standard table fits five.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-editable-cells-table","type":"registry:block","title":"Editable Cells Table","files":[{"path":"components/blocks/application-pro/data-tables/editable-cells-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/editable-cells-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Quarterly budget grid with one cell in active edit mode, tab navigation hint, and per-row save and cancel actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-empty-state-table","type":"registry:block","title":"Empty State Table","files":[{"path":"components/blocks/application-pro/data-tables/empty-state-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/empty-state-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/empty.tsx","type":"registry:ui","target":"components/ui/empty.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Projects table filtered to zero rows keeping active filter chips and the header visible above a centered empty state with recovery actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-feature-flags-table","type":"registry:block","title":"Feature Flags Table","files":[{"path":"components/blocks/application-pro/data-tables/feature-flags-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/feature-flags-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Flags with mono keys, environment badges, rollout percentages, a Switch per row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-grouped-rows-table","type":"registry:block","title":"Grouped Rows Table","files":[{"path":"components/blocks/application-pro/data-tables/grouped-rows-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/grouped-rows-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Issues table with shaded status subheader rows showing group name and count above each set of member rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-heatmap-cells-table","type":"registry:block","title":"Heatmap Cells Table","files":[{"path":"components/blocks/application-pro/data-tables/heatmap-cells-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/heatmap-cells-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Feature usage matrix with weekday columns, value shaded cells, per row totals, and an intensity legend beneath the table.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-inline-edit-table","type":"registry:block","title":"Inline Edit Table","files":[{"path":"components/blocks/application-pro/data-tables/inline-edit-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/inline-edit-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Projects table with one row in edit mode showing Input and Select cells with save and cancel affordances.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-invoices-table","type":"registry:block","title":"Invoices Table","files":[{"path":"components/blocks/application-pro/data-tables/invoices-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/invoices-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Billing history with mono invoice ids, status badges, and right aligned amounts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-multi-select-toolbar-table","type":"registry:block","title":"Multi Select Toolbar Table","files":[{"path":"components/blocks/application-pro/data-tables/multi-select-toolbar-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/multi-select-toolbar-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Contacts table with per row checkboxes, a select all header, and a contextual bulk action toolbar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-nested-detail-table","type":"registry:block","title":"Nested Detail Table","files":[{"path":"components/blocks/application-pro/data-tables/nested-detail-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/nested-detail-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Projects table where one row expands inline to a key value metadata panel and a recent activity list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-paginated-table","type":"registry:block","title":"Paginated Table","files":[{"path":"components/blocks/application-pro/data-tables/paginated-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/paginated-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Customers table with a working pagination footer showing numbered page buttons, previous and next controls, and a live range summary line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-pinned-columns-table","type":"registry:block","title":"Pinned Columns Table","files":[{"path":"components/blocks/application-pro/data-tables/pinned-columns-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/pinned-columns-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Wide pipeline table with the name column visually pinned via sticky positioning while remaining columns scroll horizontally.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-row-actions-menu-blueprint","type":"registry:block","title":"Row Actions Menu Blueprint","files":[{"path":"components/blocks/application-pro/data-tables/row-actions-menu-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/row-actions-menu-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Static blueprint of a documents table with one per-row overflow menu rendered open inline showing Edit, Duplicate, Move, and Delete actions without any Radix portal.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-selectable-bulk-table","type":"registry:block","title":"Selectable Bulk Table","files":[{"path":"components/blocks/application-pro/data-tables/selectable-bulk-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/selectable-bulk-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Row checkboxes with a select all header and a bulk bar with Remove and Export.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-sortable-header-table","type":"registry:block","title":"Sortable Header Table","files":[{"path":"components/blocks/application-pro/data-tables/sortable-header-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/sortable-header-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Projects table with sort affordance icons on every column header, one column actively sorted descending, and a shift-click secondary sort hint in the footnote.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-sparkline-metrics-table","type":"registry:block","title":"Sparkline Metrics Table","files":[{"path":"components/blocks/application-pro/data-tables/sparkline-metrics-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/sparkline-metrics-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Key metrics table pairing each row with its current value, week over week change, and an inline SVG trend sparkline.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-status-summary-table","type":"registry:block","title":"Status Summary Table","files":[{"path":"components/blocks/application-pro/data-tables/status-summary-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/status-summary-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Support queue with an Open, Blocked, and Done count strip above the ticket rows and a status badge per row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-sticky-footer-totals-table","type":"registry:block","title":"Sticky Footer Totals Table","files":[{"path":"components/blocks/application-pro/data-tables/sticky-footer-totals-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/sticky-footer-totals-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Invoice lines table with right-aligned tabular numbers, status badges, and a sticky footer row showing the line item count and running total for billing pages.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-table-with-expandable-rows","type":"registry:block","title":"Table With Expandable Rows","files":[{"path":"components/blocks/application-pro/data-tables/table-with-expandable-rows.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/table-with-expandable-rows.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Orders with one row expanded to its line items in a muted inset, statically.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-table-with-filters","type":"registry:block","title":"Table With Filters","files":[{"path":"components/blocks/application-pro/data-tables/table-with-filters.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/table-with-filters.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Projects with filter chips narrowing rows live, the count updating per click.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-timeline-table","type":"registry:block","title":"Timeline Table","files":[{"path":"components/blocks/application-pro/data-tables/timeline-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/timeline-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Project schedule table with an inline proportional bar per row showing each project span within a defined date window.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-data-tables-tree-table","type":"registry:block","title":"Tree Table","files":[{"path":"components/blocks/application-pro/data-tables/tree-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/tree-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Hierarchical cost center table with expand chevrons, indented child rows, and rolled-up budget totals per parent.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-data-tables-users-table","type":"registry:block","title":"Users Table","files":[{"path":"components/blocks/application-pro/data-tables/users-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/users-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Members with role badges, last active times, and the seat math beside the invite button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-developer-tools-api-console","type":"registry:block","title":"Api Console","files":[{"path":"components/blocks/application-pro/developer-tools/api-console.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/api-console.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"REST request builder with a method and path row, query params and headers tabs, a Send affordance, and a JSON response panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-developer-tools-build-status-list","type":"registry:block","title":"Build Status List","files":[{"path":"components/blocks/application-pro/developer-tools/build-status-list.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/build-status-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"CI pipeline list with branch, commit message, status Badges, duration, a running progress bar, and a view-logs affordance on failed builds.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-developer-tools-cron-jobs-monitor","type":"registry:block","title":"Cron Jobs Monitor","files":[{"path":"components/blocks/application-pro/developer-tools/cron-jobs-monitor.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/cron-jobs-monitor.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Rows with a job name, cron expression, cadence, a dot strip of recent runs, last and next run times, and a status badge.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-developer-tools-dependency-audit","type":"registry:block","title":"Dependency Audit","files":[{"path":"components/blocks/application-pro/developer-tools/dependency-audit.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/dependency-audit.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Severity count tiles above a vulnerability table with package names, advisory ids, installed and patched versions, and an update action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-developer-tools-deploy-panel","type":"registry:block","title":"Deploy Panel","files":[{"path":"components/blocks/application-pro/developer-tools/deploy-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/deploy-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Deployment surface showing the current build steps progress, actor, commit sha, and a recent deploy history list with rollback.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-developer-tools-env-vars-manager","type":"registry:block","title":"Env Vars Manager","files":[{"path":"components/blocks/application-pro/developer-tools/env-vars-manager.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/env-vars-manager.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Secrets configuration table with mono keys, sha256 hash chips, a disabled reveal button, target Badges, and a write-only honesty note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-developer-tools-error-inbox","type":"registry:block","title":"Error Inbox","files":[{"path":"components/blocks/application-pro/developer-tools/error-inbox.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/error-inbox.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A master list of grouped exceptions with event counts and sparkline bars beside a detail pane showing the selected issue and its stack trace.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-developer-tools-feature-flags-panel","type":"registry:block","title":"Feature Flags Panel","files":[{"path":"components/blocks/application-pro/developer-tools/feature-flags-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/feature-flags-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"An environment chip row above flag rows with a mono key, rollout meter, kind badge, last editor avatar, and an enable switch.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-developer-tools-log-viewer","type":"registry:block","title":"Log Viewer","files":[{"path":"components/blocks/application-pro/developer-tools/log-viewer.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/log-viewer.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Live log stream with level Badges, mono timestamps, per-service labeling, level filter chips, and a tail affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-developer-tools-secrets-rotation-card","type":"registry:block","title":"Secrets Rotation Card","files":[{"path":"components/blocks/application-pro/developer-tools/secrets-rotation-card.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/secrets-rotation-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Secret rotation panel listing active secrets with age nudges, masked prefixes, and a rotate button that keeps the old secret valid for 24 hours.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-developer-tools-terminal-panel","type":"registry:block","title":"Terminal Panel","files":[{"path":"components/blocks/application-pro/developer-tools/terminal-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/terminal-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Embedded terminal blueprint with a named session tab row, realistic command output, and a blinking prompt cursor.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-developer-tools-webhook-logs-table","type":"registry:block","title":"Webhook Logs Table","files":[{"path":"components/blocks/application-pro/developer-tools/webhook-logs-table.tsx","type":"registry:component","target":"components/blocks/application-pro/developer-tools/webhook-logs-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Webhook delivery log with event name, endpoint, HTTP status badge, duration, attempt ratio, and inline response body for failed rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-api-key-created-dialog","type":"registry:block","title":"Api Key Created Dialog","files":[{"path":"components/blocks/application-pro/dialogs/api-key-created-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/api-key-created-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"One-time API key reveal dialog with a monospaced copy field, a one-time-only warning, scoped permissions, and a checkbox-gated Done button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-bulk-edit-dialog","type":"registry:block","title":"Bulk Edit Dialog","files":[{"path":"components/blocks/application-pro/dialogs/bulk-edit-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/bulk-edit-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Bulk-edit dialog for 14 selected items with a status Select, a change-preview callout, optional fields, and a 30-second undo-window note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-cancel-subscription-dialog","type":"registry:block","title":"Cancel Subscription Dialog","files":[{"path":"components/blocks/application-pro/dialogs/cancel-subscription-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/cancel-subscription-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A cancel subscription dialog with a reason radio list, a pause offer panel, a period end access note, and a keep plan primary action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-confirm-delete-dialog","type":"registry:block","title":"Confirm Delete Dialog","files":[{"path":"components/blocks/application-pro/dialogs/confirm-delete-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/confirm-delete-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"What deleting Apollo destroys and what survives, gated by typing the name.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-connect-account-dialog","type":"registry:block","title":"Connect Account Dialog","files":[{"path":"components/blocks/application-pro/dialogs/connect-account-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/connect-account-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Integration connect dialog listing exact OAuth scopes, a minimal-scope trust note, and both an OAuth button and an API key path.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-export-data-dialog","type":"registry:block","title":"Export Data Dialog","files":[{"path":"components/blocks/application-pro/dialogs/export-data-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/export-data-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"}],"description":"Format and scope choices with real counts, delivered in minutes, not 30 days.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-feedback-dialog","type":"registry:block","title":"Feedback Dialog","files":[{"path":"components/blocks/application-pro/dialogs/feedback-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/feedback-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Feedback dialog with a Bug, Idea, or Other type toggle, a message textarea, an optional screenshot attachment, and honest per-type routing copy.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-import-result-dialog","type":"registry:block","title":"Import Result Dialog","files":[{"path":"components/blocks/application-pro/dialogs/import-result-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/import-result-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Post-import report dialog showing created, skipped, and failed row counts with named skip reasons and a download link for the skipped rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-invite-members-dialog","type":"registry:block","title":"Invite Members Dialog","files":[{"path":"components/blocks/application-pro/dialogs/invite-members-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/invite-members-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Emails, role, and the seat consequence stated before send, not after.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-keyboard-help-dialog","type":"registry:block","title":"Keyboard Help Dialog","files":[{"path":"components/blocks/application-pro/dialogs/keyboard-help-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/keyboard-help-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Keyboard shortcuts reference dialog with two columns of grouped Kbd combos, a search bar, and a roadmap note that remapping is not yet available.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-keyboard-shortcuts-dialog","type":"registry:block","title":"Keyboard Shortcuts Dialog","files":[{"path":"components/blocks/application-pro/dialogs/keyboard-shortcuts-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/keyboard-shortcuts-dialog.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Two columns of Kbd combos with the honest note that remapping is not here yet."},{"name":"application-pro-dialogs-merge-duplicates-dialog","type":"registry:block","title":"Merge Duplicates Dialog","files":[{"path":"components/blocks/application-pro/dialogs/merge-duplicates-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/merge-duplicates-dialog.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A merge dialog pairing two contact records with per field radio picks for the winning value, a retention note, and keep or merge actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-move-to-project-dialog","type":"registry:block","title":"Move To Project Dialog","files":[{"path":"components/blocks/application-pro/dialogs/move-to-project-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/move-to-project-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Bulk-move dialog for 8 selected items with a searchable project list, a what-moves callout, and a 30-minute undo window note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-remove-member-dialog","type":"registry:block","title":"Remove Member Dialog","files":[{"path":"components/blocks/application-pro/dialogs/remove-member-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/remove-member-dialog.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A remove member dialog with the member card, a counted list of what they still own, a reassign select, and a confirm and reassign action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-restore-version-dialog","type":"registry:block","title":"Restore Version Dialog","files":[{"path":"components/blocks/application-pro/dialogs/restore-version-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/restore-version-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A version history dialog with the current revision pinned above a radio list of prior versions showing authors, timestamps, and change summaries.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-role-change-dialog","type":"registry:block","title":"Role Change Dialog","files":[{"path":"components/blocks/application-pro/dialogs/role-change-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/role-change-dialog.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Role change confirmation for Maya Chen from Member to Admin with three access gain bullets and an effective immediately note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-schedule-action-dialog","type":"registry:block","title":"Schedule Action Dialog","files":[{"path":"components/blocks/application-pro/dialogs/schedule-action-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/schedule-action-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Publish now or schedule for later dialog with a date and time pair, inline timezone, and an offline-safe run note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-session-expiring-dialog","type":"registry:block","title":"Session Expiring Dialog","files":[{"path":"components/blocks/application-pro/dialogs/session-expiring-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/session-expiring-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Session expiry warning dialog giving two minutes notice, a stay-signed-in action, and a guarantee that open drafts are saved regardless of choice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-share-link-dialog","type":"registry:block","title":"Share Link Dialog","files":[{"path":"components/blocks/application-pro/dialogs/share-link-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/share-link-dialog.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"The link as a copyable chip, access level, expiry, and who already has it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-sign-out-sessions-dialog","type":"registry:block","title":"Sign Out Sessions Dialog","files":[{"path":"components/blocks/application-pro/dialogs/sign-out-sessions-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/sign-out-sessions-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A sign out sessions dialog with the current device pinned, a checkbox list of other active sessions, an unfamiliar flag, and a sign out action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-transfer-ownership-dialog","type":"registry:block","title":"Transfer Ownership Dialog","files":[{"path":"components/blocks/application-pro/dialogs/transfer-ownership-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/transfer-ownership-dialog.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Transfer-ownership dialog with a member Select, two named consequence rows, a type-to-confirm input, and the irreversible-without-them note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-two-factor-setup-dialog","type":"registry:block","title":"Two Factor Setup Dialog","files":[{"path":"components/blocks/application-pro/dialogs/two-factor-setup-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/two-factor-setup-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two factor setup dialog with a QR mockup beside a copyable manual key, a six cell code entry, and a one time recovery codes note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-unsaved-changes-dialog","type":"registry:block","title":"Unsaved Changes Dialog","files":[{"path":"components/blocks/application-pro/dialogs/unsaved-changes-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/unsaved-changes-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Leave confirmation dialog listing three specific unsaved field changes with Discard, Keep editing, and Save and leave actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-dialogs-upgrade-plan-dialog","type":"registry:block","title":"Upgrade Plan Dialog","files":[{"path":"components/blocks/application-pro/dialogs/upgrade-plan-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/upgrade-plan-dialog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A plan limit dialog with per resource usage meters, a bordered next tier card listing features and price, and a prorated billing note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-dialogs-verify-domain-dialog","type":"registry:block","title":"Verify Domain Dialog","files":[{"path":"components/blocks/application-pro/dialogs/verify-domain-dialog.tsx","type":"registry:component","target":"components/blocks/application-pro/dialogs/verify-domain-dialog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A verify domain dialog with two copyable DNS record rows showing type and host, a found or pending status each, and a check again action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-cleared-inbox-state","type":"registry:block","title":"Cleared Inbox State","files":[{"path":"components/blocks/application-pro/empty-states/cleared-inbox-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/cleared-inbox-state.tsx"}],"description":"Inbox zero panel showing 14 handled today, 0 open, and 2 snoozed with a calm no-action-needed message.","dependencies":["lucide-react"]},{"name":"application-pro-empty-states-coming-soon-state","type":"registry:block","title":"Coming Soon State","files":[{"path":"components/blocks/application-pro/empty-states/coming-soon-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/coming-soon-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Feature placeholder naming the section, two capability bullets, a notify-me email form, and an honest no-date timeframe.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-deleted-resource-state","type":"registry:block","title":"Deleted Resource State","files":[{"path":"components/blocks/application-pro/empty-states/deleted-resource-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/deleted-resource-state.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A not found panel for a deleted document with a struck through breadcrumb trail, a deletion record, a restore note, and two recovery actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-empty-chart-state","type":"registry:block","title":"Empty Chart State","files":[{"path":"components/blocks/application-pro/empty-states/empty-chart-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/empty-chart-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Analytics panel keeping the full chart frame and axis ticks, with a zero range message offering wider ranges and their real event counts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-empty-table-state","type":"registry:block","title":"Empty Table State","files":[{"path":"components/blocks/application-pro/empty-states/empty-table-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/empty-table-state.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Members table with the real header row visible and an empty body explaining which filters hid all 14 rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-empty-uploads-dropzone","type":"registry:block","title":"Empty Uploads Dropzone","files":[{"path":"components/blocks/application-pro/empty-states/empty-uploads-dropzone.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/empty-uploads-dropzone.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An empty file library with a dashed dropzone, browse and import from URL actions, a facts row for formats and storage, and a privacy note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-error-boundary-card","type":"registry:block","title":"Error Boundary Card","files":[{"path":"components/blocks/application-pro/empty-states/error-boundary-card.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/error-boundary-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"In-place panel fallback showing a mono error reference, a section-scoped retry button, and confirmation that the rest of the page is unaffected.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-error-page-404","type":"registry:block","title":"Error Page 404","files":[{"path":"components/blocks/application-pro/empty-states/error-page-404.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/error-page-404.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered 404 page showing the failed path in mono, three reasons a workspace link goes stale, and search or dashboard as recovery actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-error-page-500","type":"registry:block","title":"Error Page 500","files":[{"path":"components/blocks/application-pro/empty-states/error-page-500.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/error-page-500.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The 500 with a mono incident id, the team already paged, retry and status links.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-first-run-checklist-empty","type":"registry:block","title":"First Run Checklist Empty","files":[{"path":"components/blocks/application-pro/empty-states/first-run-checklist-empty.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/first-run-checklist-empty.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Empty dashboard state with a 4-step setup checklist, progress bar, and honest note that panels appear as steps are completed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-import-in-progress-state","type":"registry:block","title":"Import In Progress State","files":[{"path":"components/blocks/application-pro/empty-states/import-in-progress-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/import-in-progress-state.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A panel for a running data import with a three step pipeline, a live progress bar, meta rows for timing, and notify or cancel actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-maintenance-page","type":"registry:block","title":"Maintenance Page","files":[{"path":"components/blocks/application-pro/empty-states/maintenance-page.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/maintenance-page.tsx"}],"description":"Full-page planned maintenance screen with a stated window, estimated time remaining, a do-nothing instruction, and a status-page link.","dependencies":["lucide-react"]},{"name":"application-pro-empty-states-no-access-yet-state","type":"registry:block","title":"No Access Yet State","files":[{"path":"components/blocks/application-pro/empty-states/no-access-yet-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/no-access-yet-state.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pending-access gate naming the reviewer with avatar and ETA, plus a list of surfaces the user can reach in the meantime.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-no-data-yet-state","type":"registry:block","title":"No Data Yet State","files":[{"path":"components/blocks/application-pro/empty-states/no-data-yet-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/no-data-yet-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Empty panel with a geometric illustration, an events headline, an explanation of when data appears, and a primary API call action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-no-integrations-state","type":"registry:block","title":"No Integrations State","files":[{"path":"components/blocks/application-pro/empty-states/no-integrations-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/no-integrations-state.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Empty integrations surface with unlock bullets, a browse CTA, and Slack, GitHub, and Jira quick-connect chips.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-no-search-results-state","type":"registry:block","title":"No Search Results State","files":[{"path":"components/blocks/application-pro/empty-states/no-search-results-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/no-search-results-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The query kept, three scopes to widen, and what search covers stated.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-offline-state","type":"registry:block","title":"Offline State","files":[{"path":"components/blocks/application-pro/empty-states/offline-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/offline-state.tsx"}],"description":"Offline state panel listing what still works locally and what is paused until reconnection, with a guarantee that queued drafts are never lost.","dependencies":["lucide-react"]},{"name":"application-pro-empty-states-onboarding-empty-dashboard","type":"registry:block","title":"Onboarding Empty Dashboard","files":[{"path":"components/blocks/application-pro/empty-states/onboarding-empty-dashboard.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/onboarding-empty-dashboard.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The dashboard before data, zeroed KPIs and the five minute fill promise.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-empty-states-permission-denied-state","type":"registry:block","title":"Permission Denied State","files":[{"path":"components/blocks/application-pro/empty-states/permission-denied-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/permission-denied-state.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The 403 that names the role, the owners who grant it, and the request flow.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-rate-limited-state","type":"registry:block","title":"Rate Limited State","files":[{"path":"components/blocks/application-pro/empty-states/rate-limited-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/rate-limited-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Rate limit panel showing the 60 requests per minute cap, the reset time, and upgrade or support paths to increase the limit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-search-no-matches","type":"registry:block","title":"Search No Matches","files":[{"path":"components/blocks/application-pro/empty-states/search-no-matches.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/search-no-matches.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Zero-result state echoing 3 active filter chips, the count 0 of 124, and per-filter recovery suggestions with item counts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-session-expired-state","type":"registry:block","title":"Session Expired State","files":[{"path":"components/blocks/application-pro/empty-states/session-expired-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/session-expired-state.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Session expired screen showing the account for one click resume, a saved draft note, meta rows naming the policy, and sign in actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-storage-full-state","type":"registry:block","title":"Storage Full State","files":[{"path":"components/blocks/application-pro/empty-states/storage-full-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/storage-full-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A storage quota panel with a segmented usage bar at capacity, a category breakdown, paused versus working lists, and free space or upgrade actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-trial-expired-state","type":"registry:block","title":"Trial Expired State","files":[{"path":"components/blocks/application-pro/empty-states/trial-expired-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/trial-expired-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Trial expired gate stating the end date, side by side lists of what stays read only versus what is paused, the plan price, and export.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-empty-states-welcome-back-state","type":"registry:block","title":"Welcome Back State","files":[{"path":"components/blocks/application-pro/empty-states/welcome-back-state.tsx","type":"registry:component","target":"components/blocks/application-pro/empty-states/welcome-back-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Returning-user digest showing three dated workspace changes, a resume link, and an explicit note that nothing was deleted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-file-browser-table","type":"registry:block","title":"File Browser Table","files":[{"path":"components/blocks/application-pro/file-manager/file-browser-table.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/file-browser-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Folder contents table with file-type icons, owner avatars, tabular sizes, modified times, and per-row actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-file-detail-panel","type":"registry:block","title":"File Detail Panel","files":[{"path":"components/blocks/application-pro/file-manager/file-detail-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/file-detail-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"File inspector with a preview, ruled metadata rows, a shareable link chip, version count, and action buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-file-grid-gallery","type":"registry:block","title":"File Grid Gallery","files":[{"path":"components/blocks/application-pro/file-manager/file-grid-gallery.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/file-grid-gallery.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Media grid of eight thumbnail tiles with type badges, filename captions, one selected tile, and a view toggle.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-file-search-results","type":"registry:block","title":"File Search Results","files":[{"path":"components/blocks/application-pro/file-manager/file-search-results.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/file-search-results.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A file search panel with a query field, removable filter chips, a result count, and rows with highlighted matches, paths, size, and dates.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-file-version-history","type":"registry:block","title":"File Version History","files":[{"path":"components/blocks/application-pro/file-manager/file-version-history.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/file-version-history.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A version history card with the current revision highlighted and earlier versions as ruled rows showing editor, note, size, restore, and download.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-folder-tree-nav","type":"registry:block","title":"Folder Tree Nav","files":[{"path":"components/blocks/application-pro/file-manager/folder-tree-nav.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/folder-tree-nav.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Recursive folder tree sidebar with expand chevrons, item counts, one active node, and Trash and Shared rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-recent-files-list","type":"registry:block","title":"Recent Files List","files":[{"path":"components/blocks/application-pro/file-manager/recent-files-list.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/recent-files-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Recent files list grouped by Today and This week showing file type icon, name, folder path, last editor, and relative time.","dependencies":["lucide-react"]},{"name":"application-pro-file-manager-share-permissions-panel","type":"registry:block","title":"Share Permissions Panel","files":[{"path":"components/blocks/application-pro/file-manager/share-permissions-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/share-permissions-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A file share panel with an invite by email row, a people with access list showing roles, general link access, and footer actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-shared-with-me-table","type":"registry:block","title":"Shared With Me Table","files":[{"path":"components/blocks/application-pro/file-manager/shared-with-me-table.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/shared-with-me-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Shared files table showing owner avatar, shared date, and access level badge per file with an open affordance on each row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-storage-cleanup-panel","type":"registry:block","title":"Storage Cleanup Panel","files":[{"path":"components/blocks/application-pro/file-manager/storage-cleanup-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/storage-cleanup-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A storage cleanup panel with a reclaimable space summary, checkbox large files and duplicates sections, an old trash row, and a selection bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-storage-usage-card","type":"registry:block","title":"Storage Usage Card","files":[{"path":"components/blocks/application-pro/file-manager/storage-usage-card.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/storage-usage-card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Storage quota card showing 142 of 250 GB used with a type breakdown bar and a recoverable trash hint.","dependencies":["lucide-react","radix-ui"]},{"name":"application-pro-file-manager-trash-bin-table","type":"registry:block","title":"Trash Bin Table","files":[{"path":"components/blocks/application-pro/file-manager/trash-bin-table.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/trash-bin-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Trash table listing deleted files with deleter, deletion time, days until permanent removal, and per-row restore and delete-forever actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-file-manager-upload-dropzone-card","type":"registry:block","title":"Upload Dropzone Card","files":[{"path":"components/blocks/application-pro/file-manager/upload-dropzone-card.tsx","type":"registry:component","target":"components/blocks/application-pro/file-manager/upload-dropzone-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Dashed dropzone with accepted types and a transfer list showing uploading, done, and failed states with errors.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-advanced-filter-builder","type":"registry:block","title":"Advanced Filter Builder","files":[{"path":"components/blocks/application-pro/filters-and-search/advanced-filter-builder.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/advanced-filter-builder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Three condition rows with AND OR logic and the live match count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-applied-filters-summary","type":"registry:block","title":"Applied Filters Summary","files":[{"path":"components/blocks/application-pro/filters-and-search/applied-filters-summary.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/applied-filters-summary.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Active filter summary bar that renders the current filter state as a plain sentence with removable tokens and a result count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-column-filter-blueprint","type":"registry:block","title":"Column Filter Blueprint","files":[{"path":"components/blocks/application-pro/filters-and-search/column-filter-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/column-filter-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Static open state of a column header filter popover with a search box, checkbox value list with counts, and apply and clear controls.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-date-range-panel","type":"registry:block","title":"Date Range Panel","files":[{"path":"components/blocks/application-pro/filters-and-search/date-range-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/date-range-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Presets beside a two month grid with a highlighted range and the timezone line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-filters-and-search-faceted-filter-bar","type":"registry:block","title":"Faceted Filter Bar","files":[{"path":"components/blocks/application-pro/filters-and-search/faceted-filter-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/faceted-filter-bar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three facet chips with removable tokens and the live count per change.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-filter-chips-row","type":"registry:block","title":"Filter Chips Row","files":[{"path":"components/blocks/application-pro/filters-and-search/filter-chips-row.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/filter-chips-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Removable filter chips above results with a live match count and a clear all control.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-find-in-view-bar","type":"registry:block","title":"Find In View Bar","files":[{"path":"components/blocks/application-pro/filters-and-search/find-in-view-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/find-in-view-bar.tsx"}],"description":"In panel find bar over a log view with a query input, live match count, previous and next navigation, and case and whole word toggles.","dependencies":["lucide-react"]},{"name":"application-pro-filters-and-search-group-by-selector","type":"registry:block","title":"Group By Selector","files":[{"path":"components/blocks/application-pro/filters-and-search/group-by-selector.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/group-by-selector.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Grouping control with dimension chips for Status, Assignee, and Priority that previews the resulting group headers with per-group counts and mini progress bars.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-filters-and-search-grouped-results-blueprint","type":"registry:block","title":"Grouped Results Blueprint","files":[{"path":"components/blocks/application-pro/filters-and-search/grouped-results-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/grouped-results-blueprint.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Global search panel in its open state with a query input, results grouped into Projects, People, and Documents, and a keyboard hint footer.","dependencies":["lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-include-exclude-tags","type":"registry:block","title":"Include Exclude Tags","files":[{"path":"components/blocks/application-pro/filters-and-search/include-exclude-tags.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/include-exclude-tags.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Tri state tag filter where each tag cycles from neutral to required to excluded, a summary line, and a demo alert list that responds.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-multi-facet-panel","type":"registry:block","title":"Multi Facet Panel","files":[{"path":"components/blocks/application-pro/filters-and-search/multi-facet-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/multi-facet-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"Faceted filter sidebar with collapsible groups for Status, Owner, Label, and Date, with checkbox value lists and hit counts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-multi-sort-builder","type":"registry:block","title":"Multi Sort Builder","files":[{"path":"components/blocks/application-pro/filters-and-search/multi-sort-builder.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/multi-sort-builder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ordered sort rules with a field chip, a direction toggle, and remove controls, an add sort button, and a demo issue list that reorders live.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-query-language-bar","type":"registry:block","title":"Query Language Bar","files":[{"path":"components/blocks/application-pro/filters-and-search/query-language-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/query-language-bar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Power-search bar with a structured query input, token-highlighted echo of parsed filters, a syntax reference panel, and a live result count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-quick-filter-toggles","type":"registry:block","title":"Quick Filter Toggles","files":[{"path":"components/blocks/application-pro/filters-and-search/quick-filter-toggles.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/quick-filter-toggles.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A rail of switch based quick filters above a task queue, a live result count with reset, the filtered list, and an inline empty row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-range-filter-histogram","type":"registry:block","title":"Range Filter Histogram","files":[{"path":"components/blocks/application-pro/filters-and-search/range-filter-histogram.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/range-filter-histogram.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"A numeric range facet with a distribution histogram, a dual thumb slider, min and max readouts, quick range presets, and a live match count.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-filters-and-search-recent-and-saved-blueprint","type":"registry:block","title":"Recent And Saved Blueprint","files":[{"path":"components/blocks/application-pro/filters-and-search/recent-and-saved-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/recent-and-saved-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open state of a search dropdown with recent queries, named saved searches, and a keyboard hint footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-results-density-toggle","type":"registry:block","title":"Results Density Toggle","files":[{"path":"components/blocks/application-pro/filters-and-search/results-density-toggle.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/results-density-toggle.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/toggle-group.tsx","type":"registry:ui","target":"components/ui/toggle-group.tsx"},{"path":"components/ui/toggle.tsx","type":"registry:ui","target":"components/ui/toggle.tsx"}],"description":"View-controls toolbar with independent density and layout toggles wired to a demo list that visibly responds with changed padding and grid or list arrangement.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-saved-filter-pills","type":"registry:block","title":"Saved Filter Pills","files":[{"path":"components/blocks/application-pro/filters-and-search/saved-filter-pills.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/saved-filter-pills.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Named saved-search pills row with active state inversion, per-pill result counts, a star save affordance, and a pencil edit control.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-saved-views-tabs","type":"registry:block","title":"Saved Views Tabs","files":[{"path":"components/blocks/application-pro/filters-and-search/saved-views-tabs.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/saved-views-tabs.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Named queries as tabs, the active view spelling out its query in plain text.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-scope-selector-bar","type":"registry:block","title":"Scope Selector Bar","files":[{"path":"components/blocks/application-pro/filters-and-search/scope-selector-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/scope-selector-bar.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Search scope chip switcher showing result counts per scope alongside a query input that updates its placeholder to match the active scope.","dependencies":["lucide-react"]},{"name":"application-pro-filters-and-search-search-results-highlights","type":"registry:block","title":"Search Results Highlights","files":[{"path":"components/blocks/application-pro/filters-and-search/search-results-highlights.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/search-results-highlights.tsx"}],"description":"A search results list with matched query terms highlighted in every title and snippet, entity type tabs with counts, and per result meta lines.","dependencies":["lucide-react"]},{"name":"application-pro-filters-and-search-search-with-recent","type":"registry:block","title":"Search With Recent","files":[{"path":"components/blocks/application-pro/filters-and-search/search-with-recent.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/search-with-recent.tsx"}],"description":"Search input with its suggestion panel open showing recent searches, suggested filter shortcuts, and a prefix tip.","dependencies":["lucide-react"]},{"name":"application-pro-filters-and-search-sort-density-toolbar","type":"registry:block","title":"Sort Density Toolbar","files":[{"path":"components/blocks/application-pro/filters-and-search/sort-density-toolbar.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/sort-density-toolbar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"},{"path":"components/ui/toggle-group.tsx","type":"registry:ui","target":"components/ui/toggle-group.tsx"},{"path":"components/ui/toggle.tsx","type":"registry:ui","target":"components/ui/toggle.tsx"}],"description":"Working sort and density controls wired to a demo table that responds.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-sort-menu-blueprint","type":"registry:block","title":"Sort Menu Blueprint","files":[{"path":"components/blocks/application-pro/filters-and-search/sort-menu-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/sort-menu-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open-state sort popover with four sort options, an active checkmark, and a Desc/Asc direction toggle rendered inline without a Radix portal.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-filters-and-search-zero-results-panel","type":"registry:block","title":"Zero Results Panel","files":[{"path":"components/blocks/application-pro/filters-and-search/zero-results-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/filters-and-search/zero-results-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A zero results search state with the failed query, a spelling suggestion, the active filters that may hide matches, and tips for broadening.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-address-form-card","type":"registry:block","title":"Address Form Card","files":[{"path":"components/blocks/application-pro/forms/address-form-card.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/address-form-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Address form with country Select first, locale aware field order and labels, and an autofill correction tip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-api-token-create-form","type":"registry:block","title":"API Token Create Form","files":[{"path":"components/blocks/application-pro/forms/api-token-create-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/api-token-create-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"API token form with scope checkboxes, an admin warning line, expiry select, and a shows once footer notice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-bulk-import-csv-card","type":"registry:block","title":"Bulk Import CSV Card","files":[{"path":"components/blocks/application-pro/forms/bulk-import-csv-card.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/bulk-import-csv-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Drop zone, column mapping with one flagged field, and the dry run promise.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-conditional-fields-form","type":"registry:block","title":"Conditional Fields Form","files":[{"path":"components/blocks/application-pro/forms/conditional-fields-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/conditional-fields-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Alert rule form where a channel Select reveals dependent fields, with the email branch shown expanded.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-create-project-form","type":"registry:block","title":"Create Project Form","files":[{"path":"components/blocks/application-pro/forms/create-project-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/create-project-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Name with slug preview, the immutable region warning, framework tiles, visibility.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-cron-schedule-form","type":"registry:block","title":"Cron Schedule Form","files":[{"path":"components/blocks/application-pro/forms/cron-schedule-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/cron-schedule-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Recurring schedule builder with a frequency select, day-of-week toggle chips, time and timezone selects, and a summary listing the next three runs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-danger-zone-form","type":"registry:block","title":"Danger Zone Form","files":[{"path":"components/blocks/application-pro/forms/danger-zone-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/danger-zone-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Destructive delete form with an itemized consequence list, two acknowledgment checkboxes, and a type-to-confirm input that gates the delete button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-date-range-form","type":"registry:block","title":"Date Range Form","files":[{"path":"components/blocks/application-pro/forms/date-range-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/date-range-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Date range input with preset chips, from and to fields, a resolved range summary, and a workspace timezone note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-forms-feedback-form-card","type":"registry:block","title":"Feedback Form Card","files":[{"path":"components/blocks/application-pro/forms/feedback-form-card.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/feedback-form-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Compact feedback card with Bug, Idea, and Praise kind chips and honest routing copy in the footer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-forms-file-field-form","type":"registry:block","title":"File Field Form","files":[{"path":"components/blocks/application-pro/forms/file-field-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/file-field-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Form with a dropzone stating accepted types and size limit, an uploaded file chip with remove, and an honest note about decoupled upload timing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-inline-edit-form","type":"registry:block","title":"Inline Edit Form","files":[{"path":"components/blocks/application-pro/forms/inline-edit-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/inline-edit-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Profile card where each row shows its saved value with an Edit action that swaps a single row into an input with Save and Cancel.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-forms-inline-validation-fields","type":"registry:block","title":"Inline Validation Fields","files":[{"path":"components/blocks/application-pro/forms/inline-validation-fields.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/inline-validation-fields.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Form showing all three live validation states side by side: a valid field with a checkmark, a checking field with a spinner, and an error field with a corrective message.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-multi-step-form-panel","type":"registry:block","title":"Multi Step Form Panel","files":[{"path":"components/blocks/application-pro/forms/multi-step-form-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/multi-step-form-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Three step form shown mid flight at the Configuration step with autosave reassurance in the footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-notification-matrix-form","type":"registry:block","title":"Notification Matrix Form","files":[{"path":"components/blocks/application-pro/forms/notification-matrix-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/notification-matrix-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Notification matrix with event rows crossed against email, push, and Slack checkbox columns, a locked security row, and an email frequency select.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-password-strength-form","type":"registry:block","title":"Password Strength Form","files":[{"path":"components/blocks/application-pro/forms/password-strength-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/password-strength-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Change password card with current and new fields, a live requirement checklist, a four segment strength meter, a confirm field, and a footer action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-payment-details-form","type":"registry:block","title":"Payment Details Form","files":[{"path":"components/blocks/application-pro/forms/payment-details-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/payment-details-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Card payment form with number, expiry, CVC, postal code, a save card toggle, and a processor security note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-repeatable-rows-form","type":"registry:block","title":"Repeatable Rows Form","files":[{"path":"components/blocks/application-pro/forms/repeatable-rows-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/repeatable-rows-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Dynamic line-item form with editable description, quantity, and unit price columns, a remove button per row, an add row affordance, and a live running total.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-review-and-submit-card","type":"registry:block","title":"Review and Submit Card","files":[{"path":"components/blocks/application-pro/forms/review-and-submit-card.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/review-and-submit-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Multi-section form summary with inline edit links per section, a terms acceptance checkbox, and a submit button that stays disabled until the user confirms.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-searchable-select-blueprint","type":"registry:block","title":"Searchable Select Blueprint","files":[{"path":"components/blocks/application-pro/forms/searchable-select-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/searchable-select-blueprint.tsx"}],"description":"Static open combobox blueprint with a search input, grouped options, one highlighted and one checked, and a create new row.","dependencies":["lucide-react"]},{"name":"application-pro-forms-settings-form-two-col","type":"registry:block","title":"Settings Form Two Col","files":[{"path":"components/blocks/application-pro/forms/settings-form-two-col.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/settings-form-two-col.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Two column settings form with label and helper text on the left and the field on the right, with a save bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-stepper-wizard-review","type":"registry:block","title":"Stepper Wizard Review","files":[{"path":"components/blocks/application-pro/forms/stepper-wizard-review.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/stepper-wizard-review.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Final review step of a multi-step wizard with a checked stepper, per-step value summaries with Edit links, and a confirm button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-tag-input-form","type":"registry:block","title":"Tag Input Form","files":[{"path":"components/blocks/application-pro/forms/tag-input-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/tag-input-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Form with a tag input showing existing chips, an inline suggestion list on partial match, a create new tag option, and a per-project tag limit note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-threshold-slider-form","type":"registry:block","title":"Threshold Slider Form","files":[{"path":"components/blocks/application-pro/forms/threshold-slider-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/threshold-slider-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Alert threshold form with paired warning and critical sliders, live readouts, a zone bar that redraws as thumbs move, and a duration select.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-validation-states-form","type":"registry:block","title":"Validation States Form","files":[{"path":"components/blocks/application-pro/forms/validation-states-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/validation-states-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Blueprint showing valid, invalid, and warning field states side by side with actionable error copy guidance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-forms-view-only-form","type":"registry:block","title":"View Only Form","files":[{"path":"components/blocks/application-pro/forms/view-only-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/view-only-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Read only form state with a permission banner, every field disabled at its saved value, and a footer explaining why save is off.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-forms-weekly-hours-form","type":"registry:block","title":"Weekly Hours Form","files":[{"path":"components/blocks/application-pro/forms/weekly-hours-form.tsx","type":"registry:component","target":"components/blocks/application-pro/forms/weekly-hours-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Weekly availability editor with one row per day, an on/off switch, from and to time selects for open days, and an apply-to-weekdays shortcut.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-article-reader","type":"registry:block","title":"Article Reader","files":[{"path":"components/blocks/application-pro/help-support/article-reader.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/article-reader.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Help article layout with a breadcrumb, sectioned body, a sticky table-of-contents rail, and a was-this-helpful feedback row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-canned-responses-blueprint","type":"registry:block","title":"Canned Responses Blueprint","files":[{"path":"components/blocks/application-pro/help-support/canned-responses-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/canned-responses-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Static open-state blueprint of a saved replies picker beside a reply composer, with a searchable snippet list and one highlighted row ready to insert.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-community-qa-thread","type":"registry:block","title":"Community Q&A Thread","files":[{"path":"components/blocks/application-pro/help-support/community-qa-thread.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/community-qa-thread.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A voted community question card with author meta and tags above an answers list, an accepted staff answer pinned first, and a reply footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-contact-support-panel","type":"registry:block","title":"Contact Support Panel","files":[{"path":"components/blocks/application-pro/help-support/contact-support-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/contact-support-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Support contact page with three channel cards and an email form that states the honest no priority queue policy.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-csat-survey-panel","type":"registry:block","title":"CSAT Survey Panel","files":[{"path":"components/blocks/application-pro/help-support/csat-survey-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/csat-survey-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Post resolution survey card with solved ticket context, a 1 to 5 rating scale, a what stood out checklist, comment field, and submit row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-diagnostics-report-panel","type":"registry:block","title":"Diagnostics Report Panel","files":[{"path":"components/blocks/application-pro/help-support/diagnostics-report-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/diagnostics-report-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A diagnostics report with a rerun action, automatic checks in pass, warn, and fail states, an environment rail, and copy or attach actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-faq-accordion-panel","type":"registry:block","title":"Faq Accordion Panel","files":[{"path":"components/blocks/application-pro/help-support/faq-accordion-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/faq-accordion-panel.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"In-app FAQ card with six common questions in an accordion, first item open, and a link to open a support ticket.","dependencies":["lucide-react","radix-ui"]},{"name":"application-pro-help-support-guided-troubleshooter","type":"registry:block","title":"Guided Troubleshooter","files":[{"path":"components/blocks/application-pro/help-support/guided-troubleshooter.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/guided-troubleshooter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A troubleshooting wizard with a progress bar, an answered steps summary, the current question as selectable option rows, and step actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-help-center-home","type":"registry:block","title":"Help Center Home","files":[{"path":"components/blocks/application-pro/help-support/help-center-home.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/help-center-home.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Help center landing with a search bar, six icon category tiles with article counts, and a popular articles list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-help-search-results","type":"registry:block","title":"Help Search Results","files":[{"path":"components/blocks/application-pro/help-support/help-search-results.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/help-search-results.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A help center search field and facet rail beside a results list of breadcrumbs, excerpts, and meta badges, with a support fallback strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-product-glossary","type":"registry:block","title":"Product Glossary","files":[{"path":"components/blocks/application-pro/help-support/product-glossary.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/product-glossary.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A glossary filter field, an A to Z index strip, and letter sections listing terms with definitions, area tags, and cross links.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-sla-response-matrix","type":"registry:block","title":"SLA Response Matrix","files":[{"path":"components/blocks/application-pro/help-support/sla-response-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/sla-response-matrix.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A support SLA panel with a plan header, a severity by plan matrix of first response targets with your plan highlighted, and coverage notes.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-help-support-submit-request-form","type":"registry:block","title":"Submit Request Form","files":[{"path":"components/blocks/application-pro/help-support/submit-request-form.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/submit-request-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A support ticket form with subject, area, severity, description, and attachments beside a rail of suggested articles and response time targets.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-ticket-detail","type":"registry:block","title":"Ticket Detail","files":[{"path":"components/blocks/application-pro/help-support/ticket-detail.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/ticket-detail.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Support ticket view with a header, customer and agent conversation thread, internal notes, and a reply composer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-ticket-list","type":"registry:block","title":"Ticket List","files":[{"path":"components/blocks/application-pro/help-support/ticket-list.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/ticket-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Agent support queue showing ticket subject, requester avatar, status and priority badges, last update time, and assigned agent with a filter strip.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-help-support-ticket-status-tracker","type":"registry:block","title":"Ticket Status Tracker","files":[{"path":"components/blocks/application-pro/help-support/ticket-status-tracker.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/ticket-status-tracker.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Customer ticket page with a five stage progress timeline, latest agent update card, reply button, and a details rail with next update time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-help-support-video-tutorials-library","type":"registry:block","title":"Video Tutorials Library","files":[{"path":"components/blocks/application-pro/help-support/video-tutorials-library.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/video-tutorials-library.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A tutorials header with topic chips, a continue watching card with progress and an up next list, and a browse grid of video cards.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-attachment-gallery","type":"registry:block","title":"Attachment Gallery","files":[{"path":"components/blocks/application-pro/inbox-email/attachment-gallery.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/attachment-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A mailbox files view with type filter chips, month grouped cards showing a file icon, sender, and size, plus a storage usage footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-bulk-actions-toolbar","type":"registry:block","title":"Bulk Actions Toolbar","files":[{"path":"components/blocks/application-pro/inbox-email/bulk-actions-toolbar.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/bulk-actions-toolbar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"Email list with a contextual toolbar showing Archive, Mark read, Label, Snooze, and Delete when messages are selected.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-compose-blueprint","type":"registry:block","title":"Compose Blueprint","files":[{"path":"components/blocks/application-pro/inbox-email/compose-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/compose-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Static blueprint of a bottom-right docked compose window with To, Cc, and Subject fields, a body area, formatting affordances, and a Send button with a keyboard shortcut hint.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-email-filters-rules","type":"registry:block","title":"Email Filters Rules","files":[{"path":"components/blocks/application-pro/inbox-email/email-filters-rules.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/email-filters-rules.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Email rules manager with ruled rows describing each rule in plain English, action badges, a toggle switch, and an add-rule affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-email-list","type":"registry:block","title":"Email List","files":[{"path":"components/blocks/application-pro/inbox-email/email-list.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/email-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Inbox message list with sender avatars, subjects, snippets, unread indicators, star toggles, and attachment markers per row.","dependencies":["lucide-react"]},{"name":"application-pro-inbox-email-email-reader","type":"registry:block","title":"Email Reader","files":[{"path":"components/blocks/application-pro/inbox-email/email-reader.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/email-reader.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Full message reading pane with sender row, body paragraphs, attachment chip, collapsed quoted reply, and reply or forward actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-inbox-sidebar","type":"registry:block","title":"Inbox Sidebar","files":[{"path":"components/blocks/application-pro/inbox-email/inbox-sidebar.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/inbox-sidebar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Mail navigation sidebar with a Compose button, standard folders with unread counts, and a labeled section of color-coded labels with message counts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-label-manager","type":"registry:block","title":"Label Manager","files":[{"path":"components/blocks/application-pro/inbox-email/label-manager.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/label-manager.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Label settings panel with a ruled table of color-swatched labels, message counts, rename and delete actions, an inline create row, and a drag-to-nest note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-quick-reply-blueprint","type":"registry:block","title":"Quick Reply Blueprint","files":[{"path":"components/blocks/application-pro/inbox-email/quick-reply-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/quick-reply-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open-state blueprint of a compact inline reply composer with canned-reply chips and an edit-before-sending note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-scheduled-send-queue","type":"registry:block","title":"Scheduled Send Queue","files":[{"path":"components/blocks/application-pro/inbox-email/scheduled-send-queue.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/scheduled-send-queue.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An outbox pane grouping queued messages by send window, each row showing recipient, subject, snippet, send time, and edit and send actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-search-results","type":"registry:block","title":"Search Results","files":[{"path":"components/blocks/application-pro/inbox-email/search-results.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/search-results.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A mail search pane with a token filled search bar, folder scope chips, ruled result rows highlighting the matched term, and a result count footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-shared-inbox-triage","type":"registry:block","title":"Shared Inbox Triage","files":[{"path":"components/blocks/application-pro/inbox-email/shared-inbox-triage.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/shared-inbox-triage.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A shared support mailbox with queue tabs, conversation rows showing customer, subject, and status, and an assignee chip or Assign action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-inbox-email-signature-editor","type":"registry:block","title":"Signature Editor","files":[{"path":"components/blocks/application-pro/inbox-email/signature-editor.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/signature-editor.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A left rail of saved signatures and default pickers beside a main pane with a formatting toolbar, source editor, and rendered message preview.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-snooze-email-blueprint","type":"registry:block","title":"Snooze Email Blueprint","files":[{"path":"components/blocks/application-pro/inbox-email/snooze-email-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/snooze-email-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open snooze popover beside a message row with four preset return times and a pick-a-date option.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-inbox-email-spam-quarantine","type":"registry:block","title":"Spam Quarantine","files":[{"path":"components/blocks/application-pro/inbox-email/spam-quarantine.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/spam-quarantine.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A quarantine pane listing held messages with a monogram, sender, subject, a detection reason badge, an auto delete countdown, and per row actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-inbox-email-thread-collapsed","type":"registry:block","title":"Thread Collapsed","files":[{"path":"components/blocks/application-pro/inbox-email/thread-collapsed.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/thread-collapsed.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Email thread view with earlier messages collapsed to one-line summaries and the latest message fully expanded with body, attachment chip, and a reply prompt.","dependencies":["lucide-react"]},{"name":"application-pro-inbox-email-unsubscribe-manager","type":"registry:block","title":"Unsubscribe Manager","files":[{"path":"components/blocks/application-pro/inbox-email/unsubscribe-manager.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/unsubscribe-manager.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ruled rows of low engagement senders, each with a monogram, address, weekly volume, last opened stat, and unsubscribe or keep actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-inbox-email-vacation-responder","type":"registry:block","title":"Vacation Responder","files":[{"path":"components/blocks/application-pro/inbox-email/vacation-responder.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/vacation-responder.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"An out of office settings panel with a master switch, date range fields, subject and message inputs, audience checkboxes, and a save footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-api-explorer-panel","type":"registry:block","title":"Api Explorer Panel","files":[{"path":"components/blocks/application-pro/integrations/api-explorer-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/api-explorer-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"In-app REST console with an endpoint row, editable query parameter rows, a Send button, and a response area showing a JSON snippet with a status badge and timing.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-integrations-api-keys-panel","type":"registry:block","title":"API Keys Panel","files":[{"path":"components/blocks/application-pro/integrations/api-keys-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/api-keys-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A one time reveal banner for a freshly created key, then rows of active keys with environment, masked prefix, scopes, and revoke actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-api-usage-card","type":"registry:block","title":"Api Usage Card","files":[{"path":"components/blocks/application-pro/integrations/api-usage-card.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/api-usage-card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Usage against allowance, top endpoints, and the observed rate limit peak.","dependencies":["lucide-react","radix-ui"]},{"name":"application-pro-integrations-api-version-panel","type":"registry:block","title":"API Version Panel","files":[{"path":"components/blocks/application-pro/integrations/api-version-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/api-version-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A version summary card with an upgrade action above a list of date named API versions with status badges, change highlights, and sunset warnings.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-connected-accounts-list","type":"registry:block","title":"Connected Accounts List","files":[{"path":"components/blocks/application-pro/integrations/connected-accounts-list.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/connected-accounts-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"OAuth accounts with scopes and the guard rail on the only sign in method.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-integrations-field-mapping-panel","type":"registry:block","title":"Field Mapping Panel","files":[{"path":"components/blocks/application-pro/integrations/field-mapping-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/field-mapping-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Source CRM fields on the left mapped to destination fields on the right, with transform badges, one unmapped row flagged, and a save footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-github-repo-picker","type":"registry:block","title":"Github Repo Picker","files":[{"path":"components/blocks/application-pro/integrations/github-repo-picker.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/github-repo-picker.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"GitHub repo selection panel with a searchable repository list, per-repo checkboxes, private badges, a minimal-scope note, and a save action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-incoming-webhook-setup","type":"registry:block","title":"Incoming Webhook Setup","files":[{"path":"components/blocks/application-pro/integrations/incoming-webhook-setup.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/incoming-webhook-setup.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Incoming webhook setup panel with a generated endpoint URL, masked signing secret, accepted event types, and a JSON payload sample.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-integration-detail-panel","type":"registry:block","title":"Integration Detail Panel","files":[{"path":"components/blocks/application-pro/integrations/integration-detail-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/integration-detail-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"GitHub integration page with connected account, permissions list, configure rows, and disconnect consequence.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-integration-health-card","type":"registry:block","title":"Integration Health Card","files":[{"path":"components/blocks/application-pro/integrations/integration-health-card.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/integration-health-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Per-integration health panel showing connected status, last sync time, sync frequency, error count, and a five-run sync history.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-integration-logs-table","type":"registry:block","title":"Integration Logs Table","files":[{"path":"components/blocks/application-pro/integrations/integration-logs-table.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/integration-logs-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Integration event log with timestamp, direction, event name, HTTP status badge, duration, and an expanded error detail row for failed events.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-integration-marketplace","type":"registry:block","title":"Integration Marketplace","files":[{"path":"components/blocks/application-pro/integrations/integration-marketplace.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/integration-marketplace.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Browseable integration directory with category chips, a search field, and six cards showing brand name, one-line description, Install or Installed state, and a verified trust line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-integration-setup-wizard","type":"registry:block","title":"Integration Setup Wizard","files":[{"path":"components/blocks/application-pro/integrations/integration-setup-wizard.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/integration-setup-wizard.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A guided setup wizard with a vertical step rail beside a pane of sync direction cards, a conflict rule note, and Back and Continue actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-integrations-gallery","type":"registry:block","title":"Integrations Gallery","files":[{"path":"components/blocks/application-pro/integrations/integrations-gallery.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/integrations-gallery.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Six integration tiles with category chips, Connected badges on active connections, and a support footer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-integrations-ip-allowlist-panel","type":"registry:block","title":"IP Allowlist Panel","files":[{"path":"components/blocks/application-pro/integrations/ip-allowlist-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/ip-allowlist-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"An allowlist panel with an enforcement badge, a current address warning, an add form, and rows of CIDR ranges with owners and last match times.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-oauth-consent-blueprint","type":"registry:block","title":"Oauth Consent Blueprint","files":[{"path":"components/blocks/application-pro/integrations/oauth-consent-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/oauth-consent-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"OAuth grant screen listing exact permissions granted and a cannot list, connecting as a named account, with Authorize and Cancel actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-oauth-scopes-review","type":"registry:block","title":"Oauth Scopes Review","files":[{"path":"components/blocks/application-pro/integrations/oauth-scopes-review.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/oauth-scopes-review.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"OAuth permissions audit panel listing each app scope with a plain-English description, risk level, and a per-scope revoke affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-rate-limit-card","type":"registry:block","title":"Rate Limit Card","files":[{"path":"components/blocks/application-pro/integrations/rate-limit-card.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/rate-limit-card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"API rate limit card showing current rpm usage against the plan cap with a progress bar, rolling window details, and the queue-not-drop policy.","dependencies":["radix-ui"]},{"name":"application-pro-integrations-sdk-quickstart-panel","type":"registry:block","title":"SDK Quickstart Panel","files":[{"path":"components/blocks/application-pro/integrations/sdk-quickstart-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/sdk-quickstart-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A quickstart panel with a language tab strip, three numbered steps for install, auth, and a first request with copyable code, and reference links.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-slack-connect-panel","type":"registry:block","title":"Slack Connect Panel","files":[{"path":"components/blocks/application-pro/integrations/slack-connect-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/slack-connect-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Slack integration config panel showing the connected workspace, a channel selector, per-event notification toggles, a test-message affordance, and a disconnect section.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-integrations-sync-status-panel","type":"registry:block","title":"Sync Status Panel","files":[{"path":"components/blocks/application-pro/integrations/sync-status-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/sync-status-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Integration sync health panel with per object type record counts, last success times, one error row with the exact message and retry countdown.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-webhook-settings-panel","type":"registry:block","title":"Webhook Settings Panel","files":[{"path":"components/blocks/application-pro/integrations/webhook-settings-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/webhook-settings-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Endpoints with delivery status, the failing one shown as ops, not shame.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-integrations-webhook-test-console","type":"registry:block","title":"Webhook Test Console","files":[{"path":"components/blocks/application-pro/integrations/webhook-test-console.tsx","type":"registry:component","target":"components/blocks/application-pro/integrations/webhook-test-console.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Webhook debugging surface with an event-type selector, a JSON sample payload, a send-test action, and a recent-deliveries strip with inline failure responses.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-kanban-boards-board-automation-panel","type":"registry:block","title":"Board Automation Panel","files":[{"path":"components/blocks/application-pro/kanban-boards/board-automation-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/board-automation-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A board automation surface pairing a rules list with enable switches and run counts beside a When, If, Then rule editor and save actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-board-column-card","type":"registry:block","title":"Board Column Card","files":[{"path":"components/blocks/application-pro/kanban-boards/board-column-card.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/board-column-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Isolated kanban column with header count, add affordance, and cards showing label, assignee, due date, and subtask progress.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-board-filters-bar","type":"registry:block","title":"Board Filters Bar","files":[{"path":"components/blocks/application-pro/kanban-boards/board-filters-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/board-filters-bar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Board toolbar with assignee avatar toggles, label chips, a group-by control, search, and a visible filtered card count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-board-header-toolbar","type":"registry:block","title":"Board Header Toolbar","files":[{"path":"components/blocks/application-pro/kanban-boards/board-header-toolbar.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/board-header-toolbar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Board name, Board and Table and Timeline view switcher, member avatar filters, an active filter badge, group-by selector, and a share button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-card-aging-board","type":"registry:block","title":"Card Aging Board","files":[{"path":"components/blocks/application-pro/kanban-boards/card-aging-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/card-aging-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A kanban board where each card carries a days in column chip tiered fresh, aging, or stale, with stale cards flagged and a threshold legend.","dependencies":["lucide-react"]},{"name":"application-pro-kanban-boards-card-checklist-panel","type":"registry:block","title":"Card Checklist Panel","files":[{"path":"components/blocks/application-pro/kanban-boards/card-checklist-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/card-checklist-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Subtask checklist inside an open kanban card with a progress bar, five items, two pre-checked, and an add-item affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-card-detail-blueprint","type":"registry:block","title":"Card Detail Blueprint","files":[{"path":"components/blocks/application-pro/kanban-boards/card-detail-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/card-detail-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Static open-card panel over a scrim showing status, assignee, description, a checklist with progress, and comment count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-collapsed-columns-board","type":"registry:block","title":"Collapsed Columns Board","files":[{"path":"components/blocks/application-pro/kanban-boards/collapsed-columns-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/collapsed-columns-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A kanban board where quiet stages collapse into slim vertical rails showing name and count, while active stages stay expanded with cards.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-drag-state-board","type":"registry:block","title":"Drag State Board","files":[{"path":"components/blocks/application-pro/kanban-boards/drag-state-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/drag-state-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A kanban board frozen mid drag with a dashed pickup ghost, a tilted lifted card over an insertion indicator, and a move status line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-kanban-boards-kanban-board","type":"registry:block","title":"Kanban Board","files":[{"path":"components/blocks/application-pro/kanban-boards/kanban-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/kanban-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Full four-column product board with issue cards showing label badges, assignee avatars, and muted Done column.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-kanban-boards-swimlane-board","type":"registry:block","title":"Swimlane Board","files":[{"path":"components/blocks/application-pro/kanban-boards/swimlane-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/swimlane-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Kanban grid with two assignee lanes crossing three workflow columns and dashed empty-cell placeholders.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-kanban-boards-wip-limit-board","type":"registry:block","title":"WIP Limit Board","files":[{"path":"components/blocks/application-pro/kanban-boards/wip-limit-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/wip-limit-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A kanban board with per column work in progress limits, count against limit chips, an over limit column flagged, and story point totals per stage."},{"name":"application-pro-localization-format-settings","type":"registry:block","title":"Format Settings","files":[{"path":"components/blocks/application-pro/localization/format-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/format-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Format settings panel with date, time, week start, number, and currency Selects each showing a live preview value and an auto-detect from locale toggle.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-localization-glossary-manager","type":"registry:block","title":"Glossary Manager","files":[{"path":"components/blocks/application-pro/localization/glossary-manager.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/glossary-manager.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A master detail glossary pairing a term list with the selected term's definition, usage rules, banned variants, and approved translations per locale.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-localization-language-switcher-blueprint","type":"registry:block","title":"Language Switcher Blueprint","files":[{"path":"components/blocks/application-pro/localization/language-switcher-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/language-switcher-blueprint.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Static open language picker panel with 10 locales in their native scripts, the current selection checked, and partial coverage notes on two languages.","dependencies":["lucide-react"]},{"name":"application-pro-localization-locale-coverage-matrix","type":"registry:block","title":"Locale Coverage Matrix","files":[{"path":"components/blocks/application-pro/localization/locale-coverage-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/locale-coverage-matrix.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Coverage grid crossing string namespaces with target locales, percent cells with banded square indicators, a totals row, and a legend.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-localization-locale-fallback-chain","type":"registry:block","title":"Locale Fallback Chain","files":[{"path":"components/blocks/application-pro/localization/locale-fallback-chain.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/locale-fallback-chain.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A locale fallback chain with an ordered resolution list, coverage bars, and role badges, plus a trace showing a key served by the next locale.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-localization-locale-preview-card","type":"registry:block","title":"Locale Preview Card","files":[{"path":"components/blocks/application-pro/localization/locale-preview-card.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/locale-preview-card.tsx"}],"description":"Side-by-side locale comparison card showing how dates, numbers, currency, and a sample sentence render in English versus the selected target locale."},{"name":"application-pro-localization-pseudo-locale-tester","type":"registry:block","title":"Pseudo Locale Tester","files":[{"path":"components/blocks/application-pro/localization/pseudo-locale-tester.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/pseudo-locale-tester.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A pseudo locale tester with a strategy switch and ruled rows pairing each English string with its accented render, growth percentage, and fit badge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-localization-rtl-preview-panel","type":"registry:block","title":"RTL Preview Panel","files":[{"path":"components/blocks/application-pro/localization/rtl-preview-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/rtl-preview-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A right to left preview mocking a settings screen in English beside Arabic, plus a bidi checklist marking each check pass or issue.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-localization-string-editor-panel","type":"registry:block","title":"String Editor Panel","files":[{"path":"components/blocks/application-pro/localization/string-editor-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/string-editor-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Single string translation editor with source text, placeholder chip, machine suggestion row, target textarea with counters, and queue navigation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-localization-translation-progress-card","type":"registry:block","title":"Translation Progress Card","files":[{"path":"components/blocks/application-pro/localization/translation-progress-card.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/translation-progress-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Translation progress panel listing each language with a percent complete bar, exact string counts, and a Live, Preview, or Draft status badge.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-localization-translation-table","type":"registry:block","title":"Translation Table","files":[{"path":"components/blocks/application-pro/localization/translation-table.tsx","type":"registry:component","target":"components/blocks/application-pro/localization/translation-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Translation string table with mono keys, source English, French target, and Translated, Fuzzy, and Missing status badges with a per-row edit action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-address-card","type":"registry:block","title":"Address Card","files":[{"path":"components/blocks/application-pro/maps-location/address-card.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/address-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Saved address card with a static map thumbnail, edit and copy actions, coordinate line, and a default-address toggle with an invoice caveat.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-distance-radius-card","type":"registry:block","title":"Distance Radius Card","files":[{"path":"components/blocks/application-pro/maps-location/distance-radius-card.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/distance-radius-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static map blueprint with a dashed SVG radius circle, a stepped radius control, and a count of locations within the selected distance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-geofence-zones","type":"registry:block","title":"Geofence Zones","files":[{"path":"components/blocks/application-pro/maps-location/geofence-zones.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/geofence-zones.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Static map blueprint with polygon and radius zones above ruled rows pairing each zone with its trigger rule, event count, and toggle.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-maps-location-ip-lookup-panel","type":"registry:block","title":"IP Lookup Panel","files":[{"path":"components/blocks/application-pro/maps-location/ip-lookup-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/ip-lookup-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A query field and lookup action above a result card that pairs resolved detail rows with a static map blueprint and a reputation footer strip.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-maps-location-location-history","type":"registry:block","title":"Location History","files":[{"path":"components/blocks/application-pro/maps-location/location-history.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/location-history.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A visit timeline listing each place with arrival window, time spent, and travel between stops, beside a breadcrumb map and a totals strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-location-picker","type":"registry:block","title":"Location Picker","files":[{"path":"components/blocks/application-pro/maps-location/location-picker.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/location-picker.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Address search input with an open suggestion list and a static map preview blueprint showing the resolved pin and coordinates.","dependencies":["lucide-react","radix-ui"]},{"name":"application-pro-maps-location-location-sharing-settings","type":"registry:block","title":"Location Sharing Settings","files":[{"path":"components/blocks/application-pro/maps-location/location-sharing-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/location-sharing-settings.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A master sharing switch, a precision choice between precise and approximate, a list of people who can see you, and a history retention row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-map-with-pins-blueprint","type":"registry:block","title":"Map With Pins Blueprint","files":[{"path":"components/blocks/application-pro/maps-location/map-with-pins-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/map-with-pins-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static office locations map with an SVG grid surface, five absolutely-positioned pins, zoom controls, and a side list of pinned locations.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-region-selector","type":"registry:block","title":"Region Selector","files":[{"path":"components/blocks/application-pro/maps-location/region-selector.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/region-selector.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Data-residency region picker with latency indicators, compliance notes per region, and a footer stating region is set once at workspace creation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-route-planner","type":"registry:block","title":"Route Planner","files":[{"path":"components/blocks/application-pro/maps-location/route-planner.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/route-planner.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ordered stop timeline with per leg distances and ETAs beside a static map tracing the route with numbered markers and a vehicle dot.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-territory-list","type":"registry:block","title":"Territory List","files":[{"path":"components/blocks/application-pro/maps-location/territory-list.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/territory-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Sales territory table with static map thumbs, assigned rep avatars, account counts, and an assign affordance for unassigned rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-maps-location-timezone-overlap","type":"registry:block","title":"Timezone Overlap","files":[{"path":"components/blocks/application-pro/maps-location/timezone-overlap.tsx","type":"registry:component","target":"components/blocks/application-pro/maps-location/timezone-overlap.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A teammate list showing avatar, city, and local time beside a 24 hour UTC strip of working hour cells, with a legend and best window footer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-media-gallery-album-list","type":"registry:block","title":"Album List","files":[{"path":"components/blocks/application-pro/media-gallery/album-list.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/album-list.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Collection organizer listing albums with a cover thumbnail, item count, last updated date, and a create album affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-asset-detail-panel","type":"registry:block","title":"Asset Detail Panel","files":[{"path":"components/blocks/application-pro/media-gallery/asset-detail-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/asset-detail-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Asset inspector with a preview, ruled metadata rows for dimensions and usage, a copy URL chip, and replace, download, and delete actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-asset-version-history","type":"registry:block","title":"Asset Version History","files":[{"path":"components/blocks/application-pro/media-gallery/asset-version-history.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/asset-version-history.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A file version history with a header, then ruled rows per version showing a thumbnail, change note, uploader, timestamp, size, and restore action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-bulk-media-actions","type":"registry:block","title":"Bulk Media Actions","files":[{"path":"components/blocks/application-pro/media-gallery/bulk-media-actions.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/bulk-media-actions.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Media bulk-ops toolbar showing selection count with Move, Tag, Download, and Delete actions and a clear-selection affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-folder-breadcrumb-bar","type":"registry:block","title":"Folder Breadcrumb Bar","files":[{"path":"components/blocks/application-pro/media-gallery/folder-breadcrumb-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/folder-breadcrumb-bar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Media folder toolbar with a clickable path, grid and list view toggle, sort picker, and New Folder and Upload actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-image-crop-blueprint","type":"registry:block","title":"Image Crop Blueprint","files":[{"path":"components/blocks/application-pro/media-gallery/image-crop-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/image-crop-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Static crop tool blueprint with a Placeholder canvas, rule of thirds grid, corner handles, aspect ratio chips, and apply and cancel actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-media-gallery-lightbox-blueprint","type":"registry:block","title":"Lightbox Blueprint","files":[{"path":"components/blocks/application-pro/media-gallery/lightbox-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/lightbox-blueprint.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open state lightbox with a centered image, prev and next controls, a caption strip, and a five thumbnail filmstrip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-media-library-grid","type":"registry:block","title":"Media Library Grid","files":[{"path":"components/blocks/application-pro/media-gallery/media-library-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/media-library-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Asset browser grid with filename, type badge, and size captions, plus a toolbar with search, filter, view toggle, and upload.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-media-list-view","type":"registry:block","title":"Media List View","files":[{"path":"components/blocks/application-pro/media-gallery/media-list-view.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/media-list-view.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A dense asset table with select checkboxes, a thumbnail and filename column, type badge, size, modified date, uploader avatar, and per row actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-storage-usage-panel","type":"registry:block","title":"Storage Usage Panel","files":[{"path":"components/blocks/application-pro/media-gallery/storage-usage-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/storage-usage-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A storage quota panel with a used versus quota headline, a segmented usage bar by type, per type breakdown rows, and a trash reclaim row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-upload-queue-panel","type":"registry:block","title":"Upload Queue Panel","files":[{"path":"components/blocks/application-pro/media-gallery/upload-queue-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/upload-queue-panel.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Batch upload tracker with per file progress bars, a cancel button, a completed row, and a failed row showing the size limit error.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-media-gallery-video-trim-blueprint","type":"registry:block","title":"Video Trim Blueprint","files":[{"path":"components/blocks/application-pro/media-gallery/video-trim-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/media-gallery/video-trim-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A static video trim tool with a preview frame and timecode, a transport row, a filmstrip timeline with trim handles and playhead, and readout chips.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-app-switcher-grid","type":"registry:block","title":"App Switcher Grid","files":[{"path":"components/blocks/application-pro/navigation/app-switcher-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/app-switcher-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open product suite switcher panel with six app tiles, a current badge, and a manage apps footer row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-breadcrumb-dropdown-blueprint","type":"registry:block","title":"Breadcrumb Dropdown Blueprint","files":[{"path":"components/blocks/application-pro/navigation/breadcrumb-dropdown-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/breadcrumb-dropdown-blueprint.tsx"}],"description":"Breadcrumb bar with the middle segment expanded into a sibling-project switcher panel showing the current item checked.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-breadcrumbs-with-actions","type":"registry:block","title":"Breadcrumbs With Actions","files":[{"path":"components/blocks/application-pro/navigation/breadcrumbs-with-actions.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/breadcrumbs-with-actions.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The detail page header, breadcrumb trail, title, and right aligned actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-command-palette-open","type":"registry:block","title":"Command Palette Open","files":[{"path":"components/blocks/application-pro/navigation/command-palette-open.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/command-palette-open.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Static open command palette with grouped Pages, Actions with Kbd shortcuts, and People results with avatars.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-context-menu-blueprint","type":"registry:block","title":"Context Menu Blueprint","files":[{"path":"components/blocks/application-pro/navigation/context-menu-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/context-menu-blueprint.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Static open-state context menu over a document row with grouped actions, keyboard hints, a submenu arrow on Move to, and Delete in muted weight.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-global-search-results","type":"registry:block","title":"Global Search Results","files":[{"path":"components/blocks/application-pro/navigation/global-search-results.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/global-search-results.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Full in-app search results page with grouped Projects, People, and Files sections, counts, and a filter rail.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-help-menu-blueprint","type":"registry:block","title":"Help Menu Blueprint","files":[{"path":"components/blocks/application-pro/navigation/help-menu-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/help-menu-blueprint.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Static open-state help menu with a docs search field, five action rows including keyboard shortcuts and a changelog unread dot, and a status footer.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-jump-to-blueprint","type":"registry:block","title":"Jump To Blueprint","files":[{"path":"components/blocks/application-pro/navigation/jump-to-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/jump-to-blueprint.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Static open-state jump-to bar with a typed query, matching destinations grouped and one highlighted, and keyboard navigation hints in the footer.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-mega-menu-blueprint","type":"registry:block","title":"Mega Menu Blueprint","files":[{"path":"components/blocks/application-pro/navigation/mega-menu-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/mega-menu-blueprint.tsx"}],"description":"Static open mega-menu with three grouped link columns and a featured announcement panel, rendered without a Radix portal.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-page-outline-rail","type":"registry:block","title":"Page Outline Rail","files":[{"path":"components/blocks/application-pro/navigation/page-outline-rail.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/page-outline-rail.tsx"}],"description":"A sticky on this page outline rail listing document anchors along a guide line with the active section marked, beside doc content with a code sample.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-pagination-bar","type":"registry:block","title":"Pagination Bar","files":[{"path":"components/blocks/application-pro/navigation/pagination-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/pagination-bar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"}],"description":"Table footer pagination in two densities: a numbered bar with a row range and rows per page control, plus a compact prev and next variant.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-pinned-items-rail","type":"registry:block","title":"Pinned Items Rail","files":[{"path":"components/blocks/application-pro/navigation/pinned-items-rail.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/pinned-items-rail.tsx"}],"description":"Icon-only sidebar rail with a pinned shortcuts section above the main nav, inline tooltip labels, and an add-pin affordance.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-recent-history-menu-blueprint","type":"registry:block","title":"Recent History Menu Blueprint","files":[{"path":"components/blocks/application-pro/navigation/recent-history-menu-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/recent-history-menu-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open recents menu grouped into Today and Yesterday with item type chips, visit times, and a clear history action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-record-pager-header","type":"registry:block","title":"Record Pager Header","files":[{"path":"components/blocks/application-pro/navigation/record-pager-header.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/record-pager-header.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"A record detail header with a back link, a prev and next position counter with keyboard hints, and a title row with a status badge and actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-secondary-settings-nav","type":"registry:block","title":"Secondary Settings Nav","files":[{"path":"components/blocks/application-pro/navigation/secondary-settings-nav.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/secondary-settings-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The settings nav column with grouped links and the Danger zone last and muted.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-navigation-section-switcher","type":"registry:block","title":"Section Switcher","files":[{"path":"components/blocks/application-pro/navigation/section-switcher.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/section-switcher.tsx"}],"description":"Pill-style segmented toggle for switching in-page views with a per-segment item count, shown in mailbox and calendar range examples."},{"name":"application-pro-navigation-sidebar-footer-menu-open","type":"registry:block","title":"Sidebar Footer Menu Open","files":[{"path":"components/blocks/application-pro/navigation/sidebar-footer-menu-open.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/sidebar-footer-menu-open.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Static open user menu at the sidebar foot with profile, settings, theme toggle, command shortcut, and sign out.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-sidebar-nav-tree","type":"registry:block","title":"Sidebar Nav Tree","files":[{"path":"components/blocks/application-pro/navigation/sidebar-nav-tree.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/sidebar-nav-tree.tsx"}],"description":"An expanded workspace sidebar with flat items, a Projects group opened to indented children along a guide line, and two collapsed groups with counts.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-sidebar-search-results","type":"registry:block","title":"Sidebar Search Results","files":[{"path":"components/blocks/application-pro/navigation/sidebar-search-results.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/sidebar-search-results.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Sidebar in its active filter state with the query filled, matching nav items highlighted and non-matches hidden, and a clear button to restore the full list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-tab-bar-mobile","type":"registry:block","title":"Tab Bar Mobile","files":[{"path":"components/blocks/application-pro/navigation/tab-bar-mobile.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/tab-bar-mobile.tsx"}],"description":"Mobile bottom tab bar with five thumb-sized tabs, one active indicator, and a notification badge rendered in a phone frame context strip.","dependencies":["lucide-react"]},{"name":"application-pro-navigation-tab-navigation-panel","type":"registry:block","title":"Tab Navigation Panel","files":[{"path":"components/blocks/application-pro/navigation/tab-navigation-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/tab-navigation-panel.tsx"}],"description":"Underline tab row for within-page navigation with counts on two tabs and an active panel content area."},{"name":"application-pro-navigation-topbar-with-command-hint","type":"registry:block","title":"Topbar With Command Hint","files":[{"path":"components/blocks/application-pro/navigation/topbar-with-command-hint.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/topbar-with-command-hint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"Persistent app topbar with breadcrumb trail, centered search with Kbd hint, notifications, and avatar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-navigation-workspace-switcher-open","type":"registry:block","title":"Workspace Switcher Open","files":[{"path":"components/blocks/application-pro/navigation/workspace-switcher-open.tsx","type":"registry:component","target":"components/blocks/application-pro/navigation/workspace-switcher-open.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Static open workspace switcher showing three workspaces with plan badges, member counts, and a create row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-activity-digest-email-preview","type":"registry:block","title":"Activity Digest Email Preview","files":[{"path":"components/blocks/application-pro/notifications/activity-digest-email-preview.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/activity-digest-email-preview.tsx"}],"description":"In-app framed preview of the daily activity digest email with grouped Mentions, Assignments, and Comments sections and a preference footer.","dependencies":["lucide-react"]},{"name":"application-pro-notifications-alert-banner-stack","type":"registry:block","title":"Alert Banner Stack","files":[{"path":"components/blocks/application-pro/notifications/alert-banner-stack.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/alert-banner-stack.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three calm ops banners, maintenance, expiring card, and the resolved incident.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-banner-with-actions","type":"registry:block","title":"Banner With Actions","files":[{"path":"components/blocks/application-pro/notifications/banner-with-actions.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/banner-with-actions.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Persistent workspace notice card with a titled message, consequence body, two action buttons, and a dismiss control.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-digest-settings-card","type":"registry:block","title":"Digest Settings Card","files":[{"path":"components/blocks/application-pro/notifications/digest-settings-card.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/digest-settings-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Activity digest frequency picker with an include list and the note that digests pause while you are active.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-notifications-escalation-policy-card","type":"registry:block","title":"Escalation Policy Card","files":[{"path":"components/blocks/application-pro/notifications/escalation-policy-card.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/escalation-policy-card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An escalation policy panel with a named header, a numbered timeline of timed steps naming recipients and channels, and footer behavior notes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-in-app-message-card","type":"registry:block","title":"In App Message Card","files":[{"path":"components/blocks/application-pro/notifications/in-app-message-card.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/in-app-message-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Feature announcement card with a badge, title, body, illustration slot, primary CTA, and a permanent dismiss action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-inbox-list-pane","type":"registry:block","title":"Inbox List Pane","files":[{"path":"components/blocks/application-pro/notifications/inbox-list-pane.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/inbox-list-pane.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The full inbox grouped under Today and Earlier, read rows muted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-mute-thread-row","type":"registry:block","title":"Mute Thread Row","files":[{"path":"components/blocks/application-pro/notifications/mute-thread-row.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/mute-thread-row.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Muted threads manager listing silenced threads with their context, muted date, expiry or forever status, and a per row unmute action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-notification-center-open","type":"registry:block","title":"Notification Center Open","files":[{"path":"components/blocks/application-pro/notifications/notification-center-open.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/notification-center-open.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"The bell panel open, tabs, four notifications, one unread, mark all read.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-notification-empty-state","type":"registry:block","title":"Notification Empty State","files":[{"path":"components/blocks/application-pro/notifications/notification-empty-state.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/notification-empty-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Notifications inbox zero view with a today tally of cleared, snoozed, and archived counts plus a settings link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-notification-grouping-list","type":"registry:block","title":"Notification Grouping List","files":[{"path":"components/blocks/application-pro/notifications/notification-grouping-list.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/notification-grouping-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Inbox panel collapsing notifications by source with inline thread expansion and unread count badges.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-notification-rules-list","type":"registry:block","title":"Notification Rules List","files":[{"path":"components/blocks/application-pro/notifications/notification-rules-list.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/notification-rules-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"An ordered rules list where each row names a rule, shows its conditions as chips, points to delivery channels, and carries an enable switch.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-notification-settings-inline","type":"registry:block","title":"Notification Settings Inline","files":[{"path":"components/blocks/application-pro/notifications/notification-settings-inline.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/notification-settings-inline.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Five notification type rows with email, push, and in-app channel switches grouped into Account and Workspace sections.","dependencies":["radix-ui"]},{"name":"application-pro-notifications-priority-inbox-list","type":"registry:block","title":"Priority Inbox List","files":[{"path":"components/blocks/application-pro/notifications/priority-inbox-list.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/priority-inbox-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Priority sorted notification inbox with a Needs You section for mentions and assignments and a FYI section for everything else.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-push-preview-settings","type":"registry:block","title":"Push Preview Settings","files":[{"path":"components/blocks/application-pro/notifications/push-preview-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/push-preview-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Push appearance settings beside a live lock screen mockup, three preview visibility options, sound and grouping switches, and a test push action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-quiet-hours-schedule","type":"registry:block","title":"Quiet Hours Schedule","files":[{"path":"components/blocks/application-pro/notifications/quiet-hours-schedule.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/quiet-hours-schedule.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A do not disturb panel with a master quiet hours switch, seven per day toggle rows, and a card of alerts that always break through.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-realtime-toast-blueprint","type":"registry:block","title":"Realtime Toast Blueprint","files":[{"path":"components/blocks/application-pro/notifications/realtime-toast-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/realtime-toast-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static blueprint of a live comment toast with avatar, quoted body, view action, and an auto-dismiss timer track.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-snooze-options-blueprint","type":"registry:block","title":"Snooze Options Blueprint","files":[{"path":"components/blocks/application-pro/notifications/snooze-options-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/snooze-options-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static blueprint of an open snooze menu with four preset options and resolved wall-clock times per option.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-subscription-preferences","type":"registry:block","title":"Subscription Preferences","files":[{"path":"components/blocks/application-pro/notifications/subscription-preferences.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/subscription-preferences.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Followed items panel listing subscribed projects, people, and labels as ruled rows with per-row unfollow actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-toast-stack","type":"registry:block","title":"Toast Stack","files":[{"path":"components/blocks/application-pro/notifications/toast-stack.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/toast-stack.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three transient toasts: a success, an undoable deletion with a timer track, and a loading export state.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-unread-digest-card","type":"registry:block","title":"Unread Digest Card","files":[{"path":"components/blocks/application-pro/notifications/unread-digest-card.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/unread-digest-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"While you were away, grouped counts since yesterday, paused when you are active.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-notifications-whats-new-panel","type":"registry:block","title":"Whats New Panel","files":[{"path":"components/blocks/application-pro/notifications/whats-new-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/notifications/whats-new-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"The changelog panel, three dated releases badged, no marketing allowed in it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-checklist-widget","type":"registry:block","title":"Checklist Widget","files":[{"path":"components/blocks/application-pro/onboarding/checklist-widget.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/checklist-widget.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Corner card onboarding widget with a progress ring, five setup tasks, two complete, the next step highlighted, and an honest dismiss note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-choose-plan-step","type":"registry:block","title":"Choose Plan Step","files":[{"path":"components/blocks/application-pro/onboarding/choose-plan-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/choose-plan-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three plan cards with real limits stated, Free preselected, and a no sales call promise for Team.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-connect-source-card","type":"registry:block","title":"Connect Source Card","files":[{"path":"components/blocks/application-pro/onboarding/connect-source-card.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/connect-source-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Four source tiles including a no engineering CSV option and a read only credentials promise in the footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-connect-tools-step","type":"registry:block","title":"Connect Tools Step","files":[{"path":"components/blocks/application-pro/onboarding/connect-tools-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/connect-tools-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Onboarding integrations step with Slack, GitHub, Calendar, and Drive tiles showing one pre-connected state.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-data-source-status","type":"registry:block","title":"Data Source Status","files":[{"path":"components/blocks/application-pro/onboarding/data-source-status.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/data-source-status.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Onboarding panel showing three data source connection rows with connected, connecting, and failed states including an actionable error and continue-anyway link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-feature-spotlight-blueprint","type":"registry:block","title":"Feature Spotlight Blueprint","files":[{"path":"components/blocks/application-pro/onboarding/feature-spotlight-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/feature-spotlight-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static open-state coach-mark that highlights a new bulk-actions toolbar with a callout card, New badge, and a Got it dismiss button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-finish-setup-card","type":"registry:block","title":"Finish Setup Card","files":[{"path":"components/blocks/application-pro/onboarding/finish-setup-card.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/finish-setup-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Setup complete card with a personalized header, a three item onboarding recap, and a single suggested next action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-first-project-empty-state","type":"registry:block","title":"First Project Empty State","files":[{"path":"components/blocks/application-pro/onboarding/first-project-empty-state.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/first-project-empty-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Day one empty dashboard with two create paths, a three step next preview, and a sample project offer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-goal-selection-step","type":"registry:block","title":"Goal Selection Step","files":[{"path":"components/blocks/application-pro/onboarding/goal-selection-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/goal-selection-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Onboarding step with four goal tiles that order the sidebar, one pre-selected, and a note that every feature stays available regardless of the choice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-import-data-step","type":"registry:block","title":"Import Data Step","files":[{"path":"components/blocks/application-pro/onboarding/import-data-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/import-data-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Onboarding import step with CSV dropzone, tool and API source tiles, a dry-run preview promise, and a skip link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-install-cli-step","type":"registry:block","title":"Install CLI Step","files":[{"path":"components/blocks/application-pro/onboarding/install-cli-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/install-cli-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A developer install step with per platform commands behind tabs, numbered login and test commands, and a live row waiting for the first event.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-invite-preview-card","type":"registry:block","title":"Invite Preview Card","files":[{"path":"components/blocks/application-pro/onboarding/invite-preview-card.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/invite-preview-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Shows the rendered invite email teammates will receive above an editable personal message field, with recipient chips and a send button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-onboarding-invite-team-panel","type":"registry:block","title":"Invite Team Panel","files":[{"path":"components/blocks/application-pro/onboarding/invite-team-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/invite-team-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Three email and role rows with the retention stat that explains why the invite ask happens at onboarding.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-notification-defaults-step","type":"registry:block","title":"Notification Defaults Step","files":[{"path":"components/blocks/application-pro/onboarding/notification-defaults-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/notification-defaults-step.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A notification setup step with four channel toggle rows, a recommended badge, an email digest chooser, and a note that defaults apply per user.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-onboarding-product-tour-tooltip","type":"registry:block","title":"Product Tour Tooltip","files":[{"path":"components/blocks/application-pro/onboarding/product-tour-tooltip.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/product-tour-tooltip.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Inline product-tour step blueprint with a highlighted target, coach-mark card, step 2 of 5 badge, and progress dots.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-role-selection-step","type":"registry:block","title":"Role Selection Step","files":[{"path":"components/blocks/application-pro/onboarding/role-selection-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/role-selection-step.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Onboarding role picker with three tiles showing what each role changes in the default layout, one selected.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-sample-data-banner","type":"registry:block","title":"Sample Data Banner","files":[{"path":"components/blocks/application-pro/onboarding/sample-data-banner.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/sample-data-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Banner notifying users they are viewing sample data, with connect and clear actions and demo KPI cards below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-setup-progress-stepper","type":"registry:block","title":"Setup Progress Stepper","files":[{"path":"components/blocks/application-pro/onboarding/setup-progress-stepper.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/setup-progress-stepper.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Four step horizontal stepper with dot states and an open invite panel under the current step.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-onboarding-team-onboarding-tracker","type":"registry:block","title":"Team Onboarding Tracker","files":[{"path":"components/blocks/application-pro/onboarding/team-onboarding-tracker.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/team-onboarding-tracker.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An admin tracker with invited, finished, and stalled counts above per person rows showing avatar, setup progress, next step, and a nudge action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-onboarding-template-gallery-step","type":"registry:block","title":"Template Gallery Step","files":[{"path":"components/blocks/application-pro/onboarding/template-gallery-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/template-gallery-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Onboarding step with six template cards showing what each pre-wires, a start-blank tile, and a search bar for fast workspace setup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-welcome-checklist","type":"registry:block","title":"Welcome Checklist","files":[{"path":"components/blocks/application-pro/onboarding/welcome-checklist.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/welcome-checklist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Setup checklist with 5 tasks, time estimates, a progress bar, and a one time dismiss promise.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-welcome-modal-blueprint","type":"registry:block","title":"Welcome Modal Blueprint","files":[{"path":"components/blocks/application-pro/onboarding/welcome-modal-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/welcome-modal-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static first-login welcome dialog over a scrim: greeting by name, three things to try, and start or tour actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-onboarding-workspace-profile-step","type":"registry:block","title":"Workspace Profile Step","files":[{"path":"components/blocks/application-pro/onboarding/workspace-profile-step.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/workspace-profile-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A workspace setup step with name, URL slug, logo upload, and data region on the left beside a live app chrome preview on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-prebuilt-pages-admin-page","type":"registry:block","title":"Admin Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/admin-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/admin-page.tsx"},{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/admin-moderation/moderation-queue.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/moderation-queue.tsx"},{"path":"components/blocks/application-pro/admin-moderation/user-admin-table.tsx","type":"registry:component","target":"components/blocks/application-pro/admin-moderation/user-admin-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Staff admin console composing a sidebar shell, content moderation queue, and user admin table.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-admin-moderation-moderation-queue","@shadcn-ui-blocks/application-pro-admin-moderation-user-admin-table","@shadcn-ui-blocks/application-pro-app-shells-sidebar-shell"]},{"name":"application-pro-prebuilt-pages-analytics-page","type":"registry:block","title":"Analytics Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/analytics-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/analytics-page.tsx"},{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx"},{"path":"components/blocks/application-pro/charts/revenue-area-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/revenue-area-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"},{"path":"components/blocks/application-pro/charts/usage-line-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/usage-line-chart.tsx"},{"path":"components/blocks/application-pro/data-tables/users-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/users-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Analytics dashboard composing a sidebar shell, KPI row, revenue area chart, usage line chart, and users table.","dependencies":["class-variance-authority","lucide-react","radix-ui","recharts"],"registryDependencies":["@shadcn-ui-blocks/application-pro-app-shells-sidebar-shell","@shadcn-ui-blocks/application-pro-charts-revenue-area-chart","@shadcn-ui-blocks/application-pro-charts-usage-line-chart","@shadcn-ui-blocks/application-pro-data-tables-users-table","@shadcn-ui-blocks/application-pro-stat-cards-kpi-cards-row"]},{"name":"application-pro-prebuilt-pages-auth-flow-page","type":"registry:block","title":"Auth Flow Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/auth-flow-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/auth-flow-page.tsx"},{"path":"components/blocks/application-pro/auth-pages/sign-in-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/sign-in-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/blocks/application-pro/auth-pages/two-factor-page.tsx","type":"registry:component","target":"components/blocks/application-pro/auth-pages/two-factor-page.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input-otp.tsx","type":"registry:ui","target":"components/ui/input-otp.tsx"}],"description":"Auth sequence showcase composing the sign-in page and two-factor page stacked for end-to-end flow review.","dependencies":["class-variance-authority","input-otp","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-auth-pages-sign-in-page","@shadcn-ui-blocks/application-pro-auth-pages-two-factor-page"]},{"name":"application-pro-prebuilt-pages-billing-page","type":"registry:block","title":"Billing Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/billing-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/billing-page.tsx"},{"path":"components/blocks/application-pro/app-shells/settings-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/settings-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/application-pro/billing/current-plan-usage.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/current-plan-usage.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/blocks/application-pro/billing/invoice-history-table.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/invoice-history-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"},{"path":"components/blocks/application-pro/billing/payment-method-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/billing/payment-method-panel.tsx"}],"description":"Billing page composing the settings shell, current plan usage, invoice history, and payment method panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-app-shells-settings-shell","@shadcn-ui-blocks/application-pro-billing-current-plan-usage","@shadcn-ui-blocks/application-pro-billing-invoice-history-table","@shadcn-ui-blocks/application-pro-billing-payment-method-panel"]},{"name":"application-pro-prebuilt-pages-dashboard-page","type":"registry:block","title":"Dashboard Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/dashboard-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/dashboard-page.tsx"},{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx"},{"path":"components/blocks/application-pro/charts/revenue-area-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/revenue-area-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"},{"path":"components/blocks/application-pro/activity/team-activity-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/team-activity-feed.tsx"}],"description":"Overview dashboard composing the sidebar shell, KPI cards row, revenue area chart, and team activity feed.","dependencies":["class-variance-authority","lucide-react","radix-ui","recharts"],"registryDependencies":["@shadcn-ui-blocks/application-pro-activity-team-activity-feed","@shadcn-ui-blocks/application-pro-app-shells-sidebar-shell","@shadcn-ui-blocks/application-pro-charts-revenue-area-chart","@shadcn-ui-blocks/application-pro-stat-cards-kpi-cards-row"]},{"name":"application-pro-prebuilt-pages-help-center-page","type":"registry:block","title":"Help Center Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/help-center-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/help-center-page.tsx"},{"path":"components/blocks/application-pro/app-shells/topbar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/topbar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/help-support/help-center-home.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/help-center-home.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/blocks/application-pro/help-support/faq-accordion-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/help-support/faq-accordion-panel.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Self-service help page composing a topbar shell, category search home, and FAQ accordion panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-app-shells-topbar-shell","@shadcn-ui-blocks/application-pro-help-support-faq-accordion-panel","@shadcn-ui-blocks/application-pro-help-support-help-center-home"]},{"name":"application-pro-prebuilt-pages-inbox-page","type":"registry:block","title":"Inbox Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/inbox-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/inbox-page.tsx"},{"path":"components/blocks/application-pro/inbox-email/inbox-sidebar.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/inbox-sidebar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/application-pro/inbox-email/email-list.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/email-list.tsx"},{"path":"components/blocks/application-pro/inbox-email/email-reader.tsx","type":"registry:component","target":"components/blocks/application-pro/inbox-email/email-reader.tsx"}],"description":"Three-pane email inbox composing a folder sidebar, thread list, and message reader with reply controls.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-inbox-email-email-list","@shadcn-ui-blocks/application-pro-inbox-email-email-reader","@shadcn-ui-blocks/application-pro-inbox-email-inbox-sidebar"]},{"name":"application-pro-prebuilt-pages-members-page","type":"registry:block","title":"Members Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/members-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/members-page.tsx"},{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/data-tables/users-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/users-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"},{"path":"components/blocks/application-pro/settings-pages/member-roles-table.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/member-roles-table.tsx"}],"description":"Workspace members admin page composing the sidebar shell, users table, and member roles table.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-app-shells-sidebar-shell","@shadcn-ui-blocks/application-pro-data-tables-users-table","@shadcn-ui-blocks/application-pro-settings-pages-member-roles-table"]},{"name":"application-pro-prebuilt-pages-onboarding-page","type":"registry:block","title":"Onboarding Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/onboarding-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/onboarding-page.tsx"},{"path":"components/blocks/application-pro/onboarding/setup-progress-stepper.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/setup-progress-stepper.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/blocks/application-pro/onboarding/welcome-checklist.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/welcome-checklist.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/blocks/application-pro/onboarding/connect-source-card.tsx","type":"registry:component","target":"components/blocks/application-pro/onboarding/connect-source-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Shellless new user activation flow composing a progress stepper, welcome checklist, and connect source card.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-onboarding-connect-source-card","@shadcn-ui-blocks/application-pro-onboarding-setup-progress-stepper","@shadcn-ui-blocks/application-pro-onboarding-welcome-checklist"]},{"name":"application-pro-prebuilt-pages-project-detail-page","type":"registry:block","title":"Project Detail Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/project-detail-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/project-detail-page.tsx"},{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx"},{"path":"components/blocks/application-pro/kanban-boards/kanban-board.tsx","type":"registry:component","target":"components/blocks/application-pro/kanban-boards/kanban-board.tsx"},{"path":"components/blocks/application-pro/activity/team-activity-feed.tsx","type":"registry:component","target":"components/blocks/application-pro/activity/team-activity-feed.tsx"}],"description":"Full project detail view composing a sidebar shell, KPI cards row, kanban board, and team activity feed.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-activity-team-activity-feed","@shadcn-ui-blocks/application-pro-app-shells-sidebar-shell","@shadcn-ui-blocks/application-pro-kanban-boards-kanban-board","@shadcn-ui-blocks/application-pro-stat-cards-kpi-cards-row"]},{"name":"application-pro-prebuilt-pages-reports-page","type":"registry:block","title":"Reports Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/reports-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/reports-page.tsx"},{"path":"components/blocks/application-pro/app-shells/sidebar-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/sidebar-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx"},{"path":"components/blocks/application-pro/charts/conversion-funnel-bars.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/conversion-funnel-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"},{"path":"components/blocks/application-pro/charts/usage-line-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/charts/usage-line-chart.tsx"},{"path":"components/blocks/application-pro/data-tables/invoices-table.tsx","type":"registry:component","target":"components/blocks/application-pro/data-tables/invoices-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Analytics page composing the sidebar shell, KPI cards, conversion funnel bars, usage line chart, and invoices table.","dependencies":["class-variance-authority","lucide-react","radix-ui","recharts"],"registryDependencies":["@shadcn-ui-blocks/application-pro-app-shells-sidebar-shell","@shadcn-ui-blocks/application-pro-charts-conversion-funnel-bars","@shadcn-ui-blocks/application-pro-charts-usage-line-chart","@shadcn-ui-blocks/application-pro-data-tables-invoices-table","@shadcn-ui-blocks/application-pro-stat-cards-kpi-cards-row"]},{"name":"application-pro-prebuilt-pages-settings-page","type":"registry:block","title":"Settings Page","files":[{"path":"components/blocks/application-pro/prebuilt-pages/settings-page.tsx","type":"registry:component","target":"components/blocks/application-pro/prebuilt-pages/settings-page.tsx"},{"path":"components/blocks/application-pro/app-shells/settings-shell.tsx","type":"registry:component","target":"components/blocks/application-pro/app-shells/settings-shell.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/application-pro/settings-pages/profile-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/profile-settings.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/blocks/application-pro/settings-pages/security-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/security-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/blocks/application-pro/settings-pages/api-keys-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/api-keys-panel.tsx"},{"path":"components/blocks/application-pro/settings-pages/danger-zone-card.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/danger-zone-card.tsx"}],"description":"Full settings page composing the settings shell, profile, security, API keys, and danger zone sections.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/application-pro-app-shells-settings-shell","@shadcn-ui-blocks/application-pro-settings-pages-api-keys-panel","@shadcn-ui-blocks/application-pro-settings-pages-danger-zone-card","@shadcn-ui-blocks/application-pro-settings-pages-profile-settings","@shadcn-ui-blocks/application-pro-settings-pages-security-settings"]},{"name":"application-pro-pricing-plans-addon-selector","type":"registry:block","title":"Addon Selector","files":[{"path":"components/blocks/application-pro/pricing-plans/addon-selector.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/addon-selector.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Ruled add-on rows for extra seats, priority support, and advanced security each with a toggle and a live running monthly total.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-pricing-plans-billing-period-toggle","type":"registry:block","title":"Billing Period Toggle","files":[{"path":"components/blocks/application-pro/pricing-plans/billing-period-toggle.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/billing-period-toggle.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Billing period switcher with monthly and yearly cards showing effective monthly price, a savings badge on yearly, and the selected state highlighted.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-pricing-plans-feature-gate-card","type":"registry:block","title":"Feature Gate Card","files":[{"path":"components/blocks/application-pro/pricing-plans/feature-gate-card.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/feature-gate-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Locked feature placeholder card naming the required plan, describing the feature, listing plan highlights, and offering an upgrade CTA or an ask your admin note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-plan-comparison-table","type":"registry:block","title":"Plan Comparison Table","files":[{"path":"components/blocks/application-pro/pricing-plans/plan-comparison-table.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/plan-comparison-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A dense feature matrix comparing Free, Team, and Business plans by category, with checks, values, a current plan badge, and per column actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-plan-downgrade-warning","type":"registry:block","title":"Plan Downgrade Warning","files":[{"path":"components/blocks/application-pro/pricing-plans/plan-downgrade-warning.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/plan-downgrade-warning.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Downgrade confirmation panel listing features lost, named members made read-only, what is kept, and confirm or keep plan actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-plan-limits-overview","type":"registry:block","title":"Plan Limits Overview","files":[{"path":"components/blocks/application-pro/pricing-plans/plan-limits-overview.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/plan-limits-overview.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Current plan usage meters for members, workspaces, events, and storage against Team limits, a near limit flag, and an upgrade prompt.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-pricing-plans-plan-picker-cards","type":"registry:block","title":"Plan Picker Cards","files":[{"path":"components/blocks/application-pro/pricing-plans/plan-picker-cards.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/plan-picker-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"In-app upgrade surface with Free, Team, and Business plan cards, a monthly/yearly billing toggle, feature lists, and current plan indicator.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-seat-management-panel","type":"registry:block","title":"Seat Management Panel","files":[{"path":"components/blocks/application-pro/pricing-plans/seat-management-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/seat-management-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Purchased seats with an occupancy meter, a breakdown of active members and pending invites, a seat stepper, and a live next invoice preview.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-trial-banner-card","type":"registry:block","title":"Trial Banner Card","files":[{"path":"components/blocks/application-pro/pricing-plans/trial-banner-card.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/trial-banner-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Trial status card showing days remaining, what happens at expiry, an add payment method CTA, and an explicit no silent charge pledge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-upgrade-proration-summary","type":"registry:block","title":"Upgrade Proration Summary","files":[{"path":"components/blocks/application-pro/pricing-plans/upgrade-proration-summary.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/upgrade-proration-summary.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An upgrade confirmation showing the plan change, prorated line items with credit, the amount due today, next renewal, and confirm actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-pricing-plans-usage-tier-selector","type":"registry:block","title":"Usage Tier Selector","files":[{"path":"components/blocks/application-pro/pricing-plans/usage-tier-selector.tsx","type":"registry:component","target":"components/blocks/application-pro/pricing-plans/usage-tier-selector.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Stepped chip selector for event volume tiers from 10k to 2 million per month with a live price summary and proration note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-account-overview-card","type":"registry:block","title":"Account Overview Card","files":[{"path":"components/blocks/application-pro/profile-account/account-overview-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/account-overview-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Account home card showing plan, role, key dates, connected identity, and settings quick links.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-account-switcher-blueprint","type":"registry:block","title":"Account Switcher Blueprint","files":[{"path":"components/blocks/application-pro/profile-account/account-switcher-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/account-switcher-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Static open-state blueprint of an account switcher panel listing three accounts with the current one checked and an add-account row.","dependencies":["lucide-react"]},{"name":"application-pro-profile-account-activity-summary-card","type":"registry:block","title":"Activity Summary Card","files":[{"path":"components/blocks/application-pro/profile-account/activity-summary-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/activity-summary-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Activity card with an inline SVG contribution heatmap, monthly event count, and three recent items.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-away-status-card","type":"registry:block","title":"Away Status Card","files":[{"path":"components/blocks/application-pro/profile-account/away-status-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/away-status-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Status setter card with four presence options, a custom message field, a clear-after duration picker, and a note on when Do Not Disturb actually silences alerts.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-change-password-card","type":"registry:block","title":"Change Password Card","files":[{"path":"components/blocks/application-pro/profile-account/change-password-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/change-password-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A three field password form beside a live requirements checklist, a segmented strength meter, the last changed date, and a passkey suggestion.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-connected-identities-card","type":"registry:block","title":"Connected Identities Card","files":[{"path":"components/blocks/application-pro/profile-account/connected-identities-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/connected-identities-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Sign-in identities panel listing Google, GitHub, and SSO rows with connected dates, a primary badge, and a disconnect guard.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-danger-zone-card","type":"registry:block","title":"Danger Zone Card","files":[{"path":"components/blocks/application-pro/profile-account/danger-zone-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/danger-zone-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ruled destructive rows for transfer, deactivate, and delete, each with its consequence, a sole owner guard, and an export reminder above.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-data-download-card","type":"registry:block","title":"Data Download Card","files":[{"path":"components/blocks/application-pro/profile-account/data-download-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/data-download-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Personal data export card listing exactly what is included, the zip plus JSON delivery format, a minutes-not-days timing promise, and a not-collected reassurance section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-edit-profile-form","type":"registry:block","title":"Edit Profile Form","files":[{"path":"components/blocks/application-pro/profile-account/edit-profile-form.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/edit-profile-form.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Settings form with avatar change, name and headline inputs, bio with char count, and a save bar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-email-addresses-card","type":"registry:block","title":"Email Addresses Card","files":[{"path":"components/blocks/application-pro/profile-account/email-addresses-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/email-addresses-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Ruled rows for each account email with primary and verification badges, resend and remove actions, and an inline add address form below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-login-history-table","type":"registry:block","title":"Login History Table","files":[{"path":"components/blocks/application-pro/profile-account/login-history-table.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/login-history-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A sign-in audit table with timestamp, method, device, location, IP, and a result badge, plus a failed-attempt callout and a CSV export action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-notification-badge-row","type":"registry:block","title":"Notification Badge Row","files":[{"path":"components/blocks/application-pro/profile-account/notification-badge-row.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/notification-badge-row.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Profile notification summary strip with linked cards for Mentions, Assigned, and Reviews showing unread counts derived from a single array and a digest timing note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-preferences-summary","type":"registry:block","title":"Preferences Summary","files":[{"path":"components/blocks/application-pro/profile-account/preferences-summary.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/preferences-summary.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Read-only ruled summary of six personal settings including theme, language, timezone, and notification level with inline edit links.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-profile-completion-card","type":"registry:block","title":"Profile Completion Card","files":[{"path":"components/blocks/application-pro/profile-account/profile-completion-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/profile-completion-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Profile setup progress card with a 70% bar, three remaining steps with quick-action buttons, and completed steps struck through.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-profile-header","type":"registry:block","title":"Profile Header","files":[{"path":"components/blocks/application-pro/profile-account/profile-header.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/profile-header.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Profile header band with avatar, name, role, bio, fact chips, and Message and Edit profile actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-public-profile-card","type":"registry:block","title":"Public Profile Card","files":[{"path":"components/blocks/application-pro/profile-account/public-profile-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/public-profile-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Compact profile card with avatar, name, headline, a three stat strip, and a Follow button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-profile-account-sessions-list-card","type":"registry:block","title":"Sessions List Card","files":[{"path":"components/blocks/application-pro/profile-account/sessions-list-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/sessions-list-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Active sessions card listing every signed-in device with browser, location, last active time, per-row revoke, and a sign-out-everywhere action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-profile-account-two-factor-status-card","type":"registry:block","title":"Two Factor Status Card","files":[{"path":"components/blocks/application-pro/profile-account/two-factor-status-card.tsx","type":"registry:component","target":"components/blocks/application-pro/profile-account/two-factor-status-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two-factor authentication status panel showing the active method, backup codes remaining, and an enrollment prompt with the security case for new accounts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-cohort-retention-grid","type":"registry:block","title":"Cohort Retention Grid","files":[{"path":"components/blocks/application-pro/reports/cohort-retention-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/cohort-retention-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A retention heatmap with weekly signup cohorts as rows, weeks since signup as columns, shaded cells, a shade legend, and a methodology note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-dashboard-grid-layout","type":"registry:block","title":"Dashboard Grid Layout","files":[{"path":"components/blocks/application-pro/reports/dashboard-grid-layout.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/dashboard-grid-layout.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Editable dashboard canvas with a KPI tile, bar chart frame, plan revenue list, stat tile, and an add widget affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-export-options-card","type":"registry:block","title":"Export Options Card","files":[{"path":"components/blocks/application-pro/reports/export-options-card.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/export-options-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Export settings card with format radio rows, a current view versus all rows scope choice, a headers toggle, and a button that labels the exact row count and format.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-metric-detail-drilldown","type":"registry:block","title":"Metric Detail Drilldown","files":[{"path":"components/blocks/application-pro/reports/metric-detail-drilldown.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/metric-detail-drilldown.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Drill-in view for a KPI click showing a headline metric, period context, and a segment breakdown table with share bars.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-report-annotations-panel","type":"registry:block","title":"Report Annotations Panel","files":[{"path":"components/blocks/application-pro/reports/report-annotations-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/report-annotations-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An annotated trend chart with numbered markers pinned to dates beside a side rail listing each annotation with author, date, note, and an add control.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-report-builder","type":"registry:block","title":"Report Builder","files":[{"path":"components/blocks/application-pro/reports/report-builder.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/report-builder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Self-serve report panel with metric and dimension selects, a date-range chip, visualization toggle, and a live stub preview area.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-report-comparison-view","type":"registry:block","title":"Report Comparison View","files":[{"path":"components/blocks/application-pro/reports/report-comparison-view.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/report-comparison-view.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A period over period comparison with two period chips, a swap control, a metrics summary line, and a table of current, previous, and change values.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-report-filters-bar","type":"registry:block","title":"Report Filters Bar","files":[{"path":"components/blocks/application-pro/reports/report-filters-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/report-filters-bar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Report filter strip with a removable date-range chip, three dimension selects, a compare to previous period toggle, and an apply button showing the live matching row count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-report-run-history","type":"registry:block","title":"Report Run History","files":[{"path":"components/blocks/application-pro/reports/report-run-history.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/report-run-history.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A run history log with a summary strip above a table of runs showing status badges, start times, durations, row counts, and trigger sources.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-report-summary-header","type":"registry:block","title":"Report Summary Header","files":[{"path":"components/blocks/application-pro/reports/report-summary-header.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/report-summary-header.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Saved report header showing the title, removable filter chips echoing active date range and dimensions, last-refreshed time, and export and share actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-saved-reports-list","type":"registry:block","title":"Saved Reports List","files":[{"path":"components/blocks/application-pro/reports/saved-reports-list.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/saved-reports-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Table of saved reports with creator, last run time, a schedule chip when scheduled, and per-row run, share, and options actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-scheduled-report-form","type":"registry:block","title":"Scheduled Report Form","files":[{"path":"components/blocks/application-pro/reports/scheduled-report-form.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/scheduled-report-form.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Form to schedule a report delivery with frequency, run time, a tag-style recipient list, format radios, and a no-reply address notice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-reports-scheduled-reports-table","type":"registry:block","title":"Scheduled Reports Table","files":[{"path":"components/blocks/application-pro/reports/scheduled-reports-table.tsx","type":"registry:component","target":"components/blocks/application-pro/reports/scheduled-reports-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Table of workspace delivery schedules with recurrence, recipient avatar stacks, format badges, last sent times, and run or edit actions per row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-api-keys-panel","type":"registry:block","title":"Api Keys Panel","files":[{"path":"components/blocks/application-pro/settings-pages/api-keys-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/api-keys-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"API keys list with prefix-masked values, environment badges, created and last used dates, and a Revoke action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-appearance-settings","type":"registry:block","title":"Appearance Settings","files":[{"path":"components/blocks/application-pro/settings-pages/appearance-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/appearance-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Theme tile selector, accent color swatches, interface density toggle, and a reduce-motion Switch for personal look-and-feel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-audit-log-settings","type":"registry:block","title":"Audit Log Settings","files":[{"path":"components/blocks/application-pro/settings-pages/audit-log-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/audit-log-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Audit log configuration with a retention period select, an admins-only access note, a CSV export with recent export history, and an immutability callout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-billing-alerts-settings","type":"registry:block","title":"Billing Alerts Settings","files":[{"path":"components/blocks/application-pro/settings-pages/billing-alerts-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/billing-alerts-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Spend alert switches at 80 and 100 percent of plan, a hard-cap option with stated consequence, and a recipient email field.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-branding-settings","type":"registry:block","title":"Branding Settings","files":[{"path":"components/blocks/application-pro/settings-pages/branding-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/branding-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Workspace branding panel with logo upload, accent color swatches, a subdomain field, and an honest note on where branding actually appears.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-connected-apps-settings","type":"registry:block","title":"Connected Apps Settings","files":[{"path":"components/blocks/application-pro/settings-pages/connected-apps-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/connected-apps-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Ruled list of OAuth apps with scope badges, connected date, authorizing member, and an instant Revoke action per row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-danger-zone-card","type":"registry:block","title":"Danger Zone Card","files":[{"path":"components/blocks/application-pro/settings-pages/danger-zone-card.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/danger-zone-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three escalating workspace actions stating exactly what each destroys and what survives, with outline buttons.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-data-retention-settings","type":"registry:block","title":"Data Retention Settings","files":[{"path":"components/blocks/application-pro/settings-pages/data-retention-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/data-retention-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Per-data-type retention period Selects with export and deletion consequence panels, a legal hold note, and a save bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-email-domain-settings","type":"registry:block","title":"Email Domain Settings","files":[{"path":"components/blocks/application-pro/settings-pages/email-domain-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/email-domain-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Sending domain panel with a monospace DNS record grid, per-record verified badges, a from-address field, and a deliverability fallback note for unverified domains.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-guest-access-settings","type":"registry:block","title":"Guest Access Settings","files":[{"path":"components/blocks/application-pro/settings-pages/guest-access-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/guest-access-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A guest access panel with an allow guests switch, a permitted email domain list, default permission options, and an active guest count row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-import-export-settings","type":"registry:block","title":"Import Export Settings","files":[{"path":"components/blocks/application-pro/settings-pages/import-export-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/import-export-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Data portability panel with an export card listing every included data type and an import dropzone with a dry-run promise before any write.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-ip-allowlist-settings","type":"registry:block","title":"IP Allowlist Settings","files":[{"path":"components/blocks/application-pro/settings-pages/ip-allowlist-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/ip-allowlist-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"An IP allowlist panel with an enforcement switch, a list of CIDR ranges with owners and last match times, and an add range form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-language-region-settings","type":"registry:block","title":"Language Region Settings","files":[{"path":"components/blocks/application-pro/settings-pages/language-region-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/language-region-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Language and timezone selects with a live date and number format preview row and a first-day-of-week toggle.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-member-roles-table","type":"registry:block","title":"Member Roles Table","files":[{"path":"components/blocks/application-pro/settings-pages/member-roles-table.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/member-roles-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Six permissions across three roles, with the honest custom roles roadmap note.","dependencies":["lucide-react"]},{"name":"application-pro-settings-pages-notification-preferences","type":"registry:block","title":"Notification Preferences","files":[{"path":"components/blocks/application-pro/settings-pages/notification-preferences.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/notification-preferences.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"The email and in app switch matrix with the billing row locked on, honestly.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-plan-usage-settings","type":"registry:block","title":"Plan and Usage Settings","files":[{"path":"components/blocks/application-pro/settings-pages/plan-usage-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/plan-usage-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A plan and usage panel with a current plan row, metered usage bars with per limit notes, a near limit badge, and a policy note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-profile-settings","type":"registry:block","title":"Profile Settings","files":[{"path":"components/blocks/application-pro/settings-pages/profile-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/profile-settings.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Profile panel with avatar upload, name and email inputs, a read-only timezone row, and a save bar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-scim-provisioning-settings","type":"registry:block","title":"SCIM Provisioning Settings","files":[{"path":"components/blocks/application-pro/settings-pages/scim-provisioning-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/scim-provisioning-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"}],"description":"A SCIM provisioning panel with sync stats, the base URL and masked bearer token, an attribute mapping grid, and deprovisioning options.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-security-settings","type":"registry:block","title":"Security Settings","files":[{"path":"components/blocks/application-pro/settings-pages/security-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/security-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Security panel with password row, two factor status, and a ruled active sessions list with per device revoke.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-session-timeout-settings","type":"registry:block","title":"Session Timeout Settings","files":[{"path":"components/blocks/application-pro/settings-pages/session-timeout-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/session-timeout-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Session control panel with an idle timeout selector, a remember this device toggle, and a sign out all sessions action with its consequences listed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-sso-and-domain-settings","type":"registry:block","title":"Sso And Domain Settings","files":[{"path":"components/blocks/application-pro/settings-pages/sso-and-domain-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/sso-and-domain-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Verified domain, IdP metadata, and the enforce switch with its full consequence.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-team-settings","type":"registry:block","title":"Team Settings","files":[{"path":"components/blocks/application-pro/settings-pages/team-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/team-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Team identity panel with name and identifier fields, a default member role Select, who-can-invite radio rows, and a discoverable toggle with its privacy consequence spelled out.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-two-factor-settings","type":"registry:block","title":"Two Factor Settings","files":[{"path":"components/blocks/application-pro/settings-pages/two-factor-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/two-factor-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"2FA settings panel with authenticator app, SMS fallback, and backup codes rows plus a workspace-wide require 2FA toggle.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-settings-pages-webhooks-settings","type":"registry:block","title":"Webhooks Settings","files":[{"path":"components/blocks/application-pro/settings-pages/webhooks-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/webhooks-settings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Webhook endpoint list with mono URLs, event Badges, per-row delivery status, a masked signing secret with reveal and roll actions, and retry policy prose.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-settings-pages-workspace-general-settings","type":"registry:block","title":"Workspace General Settings","files":[{"path":"components/blocks/application-pro/settings-pages/workspace-general-settings.tsx","type":"registry:component","target":"components/blocks/application-pro/settings-pages/workspace-general-settings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Workspace identity panel with name, slug, URL preview, rename warning, logo upload, and default role select.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-stat-cards-big-number-tiles","type":"registry:block","title":"Big Number Tiles","files":[{"path":"components/blocks/application-pro/stat-cards/big-number-tiles.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/big-number-tiles.tsx"}],"description":"Four oversized tiles for wallboards, deploys, incidents, latency, queue depth."},{"name":"application-pro-stat-cards-bullet-chart-cards","type":"registry:block","title":"Bullet Chart Cards","files":[{"path":"components/blocks/application-pro/stat-cards/bullet-chart-cards.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/bullet-chart-cards.tsx"}],"description":"Three stat cards, each with a label, value, delta, and a bullet chart bar showing actual against qualitative bands and a target tick.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-comparison-stat-cards","type":"registry:block","title":"Comparison Stat Cards","files":[{"path":"components/blocks/application-pro/stat-cards/comparison-stat-cards.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/comparison-stat-cards.tsx"}],"description":"Three cards comparing This month and Last month side by side with a computed delta footer per metric.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-delta-list-card","type":"registry:block","title":"Delta List Card","files":[{"path":"components/blocks/application-pro/stat-cards/delta-list-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/delta-list-card.tsx"}],"description":"Compact card listing five metrics as ruled rows each with a tabular value and an up or down delta chip for a multi-metric movers panel.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-donut-stat-card","type":"registry:block","title":"Donut Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/donut-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/donut-stat-card.tsx"}],"description":"Stat card with an inline SVG donut showing a 2 to 3 part breakdown beside the headline number and a ruled legend, no chart library."},{"name":"application-pro-stat-cards-forecast-stat-card","type":"registry:block","title":"Forecast Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/forecast-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/forecast-stat-card.tsx"}],"description":"A forecast card with the month to date value, a cumulative line turning dashed past today, and a footer of close, target, and range.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-funnel-stat-card","type":"registry:block","title":"Funnel Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/funnel-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/funnel-stat-card.tsx"}],"description":"Acquisition funnel card with four shrinking horizontal bars, step conversion percentages, and an end-to-end rate headline."},{"name":"application-pro-stat-cards-goal-progress-cards","type":"registry:block","title":"Goal Progress Cards","files":[{"path":"components/blocks/application-pro/stat-cards/goal-progress-cards.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/goal-progress-cards.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Three Q2 goal cards each with a progress bar, current vs target value, and a projected pace line.","dependencies":["radix-ui"]},{"name":"application-pro-stat-cards-heatmap-stat-card","type":"registry:block","title":"Heatmap Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/heatmap-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/heatmap-stat-card.tsx"}],"description":"Activity heatmap card with a CSS grid of cells shaded by foreground opacity across hours and days, no chart lib."},{"name":"application-pro-stat-cards-kpi-cards-row","type":"registry:block","title":"Kpi Cards Row","files":[{"path":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/kpi-cards-row.tsx"}],"description":"Four headline metrics with deltas and the context line that stops misreadings.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-live-counter-card","type":"registry:block","title":"Live Counter Card","files":[{"path":"components/blocks/application-pro/stat-cards/live-counter-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/live-counter-card.tsx"}],"description":"An active user counter with a pulsing dot, a static sparkline, and an honest refresh cadence footnote."},{"name":"application-pro-stat-cards-metric-with-target-card","type":"registry:block","title":"Metric With Target Card","files":[{"path":"components/blocks/application-pro/stat-cards/metric-with-target-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/metric-with-target-card.tsx"}],"description":"A single metric versus its target on a horizontal progress track with the gap and pace stated plainly."},{"name":"application-pro-stat-cards-multi-metric-card","type":"registry:block","title":"Multi Metric Card","files":[{"path":"components/blocks/application-pro/stat-cards/multi-metric-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/multi-metric-card.tsx"}],"description":"One card holding three related metrics in a row with vertical dividers, each showing a value, label, and small delta.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-north-star-metric-card","type":"registry:block","title":"North Star Metric Card","files":[{"path":"components/blocks/application-pro/stat-cards/north-star-metric-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/north-star-metric-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"One hero metric with a sparkline and a versioned definition against drift.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-stat-cards-percentile-stat-card","type":"registry:block","title":"Percentile Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/percentile-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/percentile-stat-card.tsx"}],"description":"A latency card with the p95 headline, a distribution track marking each percentile, and a ruled row per percentile with a magnitude bar and value.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-progress-ring-card","type":"registry:block","title":"Progress Ring Card","files":[{"path":"components/blocks/application-pro/stat-cards/progress-ring-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/progress-ring-card.tsx"}],"description":"Stat card with a centered inline SVG progress ring showing a single percentage, a used of total sub-line, and a plan limit footer row."},{"name":"application-pro-stat-cards-segmented-stat-card","type":"registry:block","title":"Segmented Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/segmented-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/segmented-stat-card.tsx"}],"description":"A headline total with a stacked horizontal bar and legend showing the breakdown by source or category."},{"name":"application-pro-stat-cards-sparkline-grid-card","type":"registry:block","title":"Sparkline Grid Card","files":[{"path":"components/blocks/application-pro/stat-cards/sparkline-grid-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/sparkline-grid-card.tsx"}],"description":"A card with a 2x2 grid of compact metrics each paired with an inline SVG sparkline, no chart library."},{"name":"application-pro-stat-cards-stat-with-breakdown-list","type":"registry:block","title":"Stat With Breakdown List","files":[{"path":"components/blocks/application-pro/stat-cards/stat-with-breakdown-list.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/stat-with-breakdown-list.tsx"}],"description":"One wide card with a headline user count and a ruled breakdown list by plan with counts and share percentages.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-stats-with-sparklines","type":"registry:block","title":"Stats With Sparklines","files":[{"path":"components/blocks/application-pro/stat-cards/stats-with-sparklines.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/stats-with-sparklines.tsx"}],"description":"Four stat cards with decorative inline SVG sparklines showing value, delta, and trailing 7 week trend.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-status-tiles-row","type":"registry:block","title":"Status Tiles Row","files":[{"path":"components/blocks/application-pro/stat-cards/status-tiles-row.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/status-tiles-row.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Ops summary strip of four Badge-styled status tiles showing service counts for Operational, Degraded, Partial outage, and Maintenance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-stat-cards-streak-card","type":"registry:block","title":"Streak Card","files":[{"path":"components/blocks/application-pro/stat-cards/streak-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/streak-card.tsx"}],"description":"A consistency card showing a current streak count, an inline SVG week-row of filled and empty day cells, and supporting stats."},{"name":"application-pro-stat-cards-team-leaderboard-stats","type":"registry:block","title":"Team Leaderboard Stats","files":[{"path":"components/blocks/application-pro/stat-cards/team-leaderboard-stats.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/team-leaderboard-stats.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Five teammates ranked by tickets closed, equal styling, a quality caveat footer."},{"name":"application-pro-stat-cards-threshold-alert-card","type":"registry:block","title":"Threshold Alert Card","files":[{"path":"components/blocks/application-pro/stat-cards/threshold-alert-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/threshold-alert-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A stat card in breach state showing a live metric against its configured threshold with a calm next-action line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-stat-cards-trend-comparison-tiles","type":"registry:block","title":"Trend Comparison Tiles","files":[{"path":"components/blocks/application-pro/stat-cards/trend-comparison-tiles.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/trend-comparison-tiles.tsx"}],"description":"Two side by side tiles comparing the same metric across two segments with values, deltas, and a summary read.","dependencies":["lucide-react"]},{"name":"application-pro-stat-cards-waterfall-stat-card","type":"registry:block","title":"Waterfall Stat Card","files":[{"path":"components/blocks/application-pro/stat-cards/waterfall-stat-card.tsx","type":"registry:component","target":"components/blocks/application-pro/stat-cards/waterfall-stat-card.tsx"}],"description":"An MRR movement card with a headline total, offset horizontal bars for each gain and loss, a color legend, and an axis note.","dependencies":["lucide-react"]},{"name":"application-pro-status-health-component-status-list","type":"registry:block","title":"Component Status List","files":[{"path":"components/blocks/application-pro/status-health/component-status-list.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/component-status-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Editable internal status list with a per-row Select for Operational, Degraded, Partial outage, or Down and a publish to status page action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-dependency-map-blueprint","type":"registry:block","title":"Dependency Map Blueprint","files":[{"path":"components/blocks/application-pro/status-health/dependency-map-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/dependency-map-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Static architecture health map with service nodes on an SVG grid, connecting lines, and a degraded dependency highlighted.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-status-health-error-budget-burndown","type":"registry:block","title":"Error Budget Burndown","files":[{"path":"components/blocks/application-pro/status-health/error-budget-burndown.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/error-budget-burndown.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"An SLO panel with a header badge, a four stat budget and burn rate row, and a line chart tracking remaining budget against ideal burn.","dependencies":["class-variance-authority","radix-ui","recharts"]},{"name":"application-pro-status-health-incident-banner","type":"registry:block","title":"Incident Banner","files":[{"path":"components/blocks/application-pro/status-health/incident-banner.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/incident-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Slim dismissible incident alert bar with the incident start time, a status page link, and a subscribe affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-incident-timeline","type":"registry:block","title":"Incident Timeline","files":[{"path":"components/blocks/application-pro/status-health/incident-timeline.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/incident-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Incident detail card with a resolved header, a four-phase chronological update rail, and a postmortem link at the foot.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-incident-update-composer","type":"registry:block","title":"Incident Update Composer","files":[{"path":"components/blocks/application-pro/status-health/incident-update-composer.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/incident-update-composer.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"An incident update form with a header, a status phase radio group, a message field, component checkboxes, notification switches, and post actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-maintenance-window-card","type":"registry:block","title":"Maintenance Window Card","files":[{"path":"components/blocks/application-pro/status-health/maintenance-window-card.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/maintenance-window-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Scheduled maintenance notice showing the UTC window, timezone conversions, affected services, and a remind-me email affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-past-incidents-list","type":"registry:block","title":"Past Incidents List","files":[{"path":"components/blocks/application-pro/status-health/past-incidents-list.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/past-incidents-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Resolved incidents grouped by month with duration, impact summary, and a postmortem link per row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-regional-status-matrix","type":"registry:block","title":"Regional Status Matrix","files":[{"path":"components/blocks/application-pro/status-health/regional-status-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/regional-status-matrix.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A table matrix with services as rows and four regions as columns, each cell showing a status dot and latency, with a legend below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-status-health-service-health-table","type":"registry:block","title":"Service Health Table","files":[{"path":"components/blocks/application-pro/status-health/service-health-table.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/service-health-table.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Internal ops table listing services with status badges, p95 latency, error rate, last incident time, and the on-call engineer avatar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-sla-summary-card","type":"registry:block","title":"Sla Summary Card","files":[{"path":"components/blocks/application-pro/status-health/sla-summary-card.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/sla-summary-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"SLA card showing the uptime target, actual this period, error budget bar, and the last published breach record.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-status-page","type":"registry:block","title":"Status Page","files":[{"path":"components/blocks/application-pro/status-health/status-page.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/status-page.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Public status page with an overall operational banner, per-service uptime badges, 90-day tick strips, and a subscribe affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-synthetic-checks-panel","type":"registry:block","title":"Synthetic Checks Panel","files":[{"path":"components/blocks/application-pro/status-health/synthetic-checks-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/synthetic-checks-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A panel listing probe rows, each with a status dot, check name and target, type badge, region, interval, median latency, and a run result strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-status-health-uptime-grid","type":"registry:block","title":"Uptime Grid","files":[{"path":"components/blocks/application-pro/status-health/uptime-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/status-health/uptime-grid.tsx"}],"description":"30-day per-service reliability grid with each cell shaded by status using foreground opacity tokens and a per-row uptime figure."},{"name":"application-pro-tasks-todos-assigned-to-me-list","type":"registry:block","title":"Assigned To Me List","files":[{"path":"components/blocks/application-pro/tasks-todos/assigned-to-me-list.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/assigned-to-me-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"Personal task queue grouped by Overdue, Today, and This week, each row showing a project badge, checkbox, and due date.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-assignee-workload","type":"registry:block","title":"Assignee Workload","files":[{"path":"components/blocks/application-pro/tasks-todos/assignee-workload.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/assignee-workload.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A team workload panel with one row per teammate showing avatar, open task count, a capacity bar, scheduled hours, and a load badge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-blocked-tasks-panel","type":"registry:block","title":"Blocked Tasks Panel","files":[{"path":"components/blocks/application-pro/tasks-todos/blocked-tasks-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/blocked-tasks-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A blocked tasks panel where each row shows a waiting task with priority and due date, then an indented blocker line and a ready action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-checklist-card","type":"registry:block","title":"Checklist Card","files":[{"path":"components/blocks/application-pro/tasks-todos/checklist-card.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/checklist-card.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Compact checklist card with six items, a Progress bar at 3 of 6, and a note that checklists do not block task completion.","dependencies":["lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-completed-log","type":"registry:block","title":"Completed Log","files":[{"path":"components/blocks/application-pro/tasks-todos/completed-log.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/completed-log.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A completed tasks log grouped by day, each row with a check icon, title, project badge, completer avatar, and time, beside a weekly bar strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-my-day-panel","type":"registry:block","title":"My Day Panel","files":[{"path":"components/blocks/application-pro/tasks-todos/my-day-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/my-day-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Personal daily plan card grouped into Morning, Afternoon, and No time sections with time chips and a free gap callout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-priority-matrix","type":"registry:block","title":"Priority Matrix","files":[{"path":"components/blocks/application-pro/tasks-todos/priority-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/priority-matrix.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Eisenhower-style 2x2 grid with task chips in each urgency and importance quadrant, per-quadrant counts, and a note that Do Now should be the emptiest column.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-tasks-todos-recurring-task-row","type":"registry:block","title":"Recurring Task Row","files":[{"path":"components/blocks/application-pro/tasks-todos/recurring-task-row.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/recurring-task-row.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Recurring task list showing each rule summary badge, the next three occurrence dates, and a note that past occurrences are never retroactively changed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-subtask-tree","type":"registry:block","title":"Subtask Tree","files":[{"path":"components/blocks/application-pro/tasks-todos/subtask-tree.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/subtask-tree.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Nested subtask view with two levels of indented checkboxes, expand chevrons on parent nodes, and a progress bar that rolls up only leaf-node completion.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-task-board-compact","type":"registry:block","title":"Task Board Compact","files":[{"path":"components/blocks/application-pro/tasks-todos/task-board-compact.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/task-board-compact.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Dense three column task board with one line cards showing a checkbox dot, truncated title, and assignee avatar for sidebar or split pane use."},{"name":"application-pro-tasks-todos-task-comments-panel","type":"registry:block","title":"Task Comments Panel","files":[{"path":"components/blocks/application-pro/tasks-todos/task-comments-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/task-comments-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Task discussion thread with avatar bubbles, timestamps, emoji reactions, an inline status-change event, and a composer with mention and task-link hints.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-tasks-todos-task-detail-blueprint","type":"registry:block","title":"Task Detail Blueprint","files":[{"path":"components/blocks/application-pro/tasks-todos/task-detail-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/task-detail-blueprint.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Static blueprint of an open task detail panel with meta rows, a subtask checklist with Progress, an activity strip, and a comment composer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-task-filters-bar","type":"registry:block","title":"Task Filters Bar","files":[{"path":"components/blocks/application-pro/tasks-todos/task-filters-bar.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/task-filters-bar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Interactive filter toolbar with assignee, status, priority, and due chips, active-filter tokens, a saved-view dropdown, and a live task count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-task-list","type":"registry:block","title":"Task List","files":[{"path":"components/blocks/application-pro/tasks-todos/task-list.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/task-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"Ruled task list with label badges, assignee avatars, due dates, a done count header, and muted overdue signaling.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-tasks-todos-task-quick-add","type":"registry:block","title":"Task Quick Add","files":[{"path":"components/blocks/application-pro/tasks-todos/task-quick-add.tsx","type":"registry:component","target":"components/blocks/application-pro/tasks-todos/task-quick-add.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Quick add composer with a highlighted capture line, a parsed chip row for due date, project, priority, and assignee, and a keyboard hint footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-domain-verification-card","type":"registry:block","title":"Domain Verification Card","files":[{"path":"components/blocks/application-pro/teams-orgs/domain-verification-card.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/domain-verification-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A verified domains card showing each domain's auto join behavior and member count, with a pending domain that expands into a DNS record panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-guest-access-panel","type":"registry:block","title":"Guest Access Panel","files":[{"path":"components/blocks/application-pro/teams-orgs/guest-access-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/guest-access-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A guest access panel listing external collaborators with avatar and email, the projects they can reach, an expiry date, and convert or remove actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-invite-members-form","type":"registry:block","title":"Invite Members Form","files":[{"path":"components/blocks/application-pro/teams-orgs/invite-members-form.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/invite-members-form.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Bulk invite form with a tag email input, role select, optional message, and seat consequence note before sending.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-member-offboarding-panel","type":"registry:block","title":"Member Offboarding Panel","files":[{"path":"components/blocks/application-pro/teams-orgs/member-offboarding-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/member-offboarding-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A member offboarding card with the departing member, a transfer ownership selector, a checklist of owned items to reassign, and a deactivate action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-membership-activity-log","type":"registry:block","title":"Membership Activity Log","files":[{"path":"components/blocks/application-pro/teams-orgs/membership-activity-log.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/membership-activity-log.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A day grouped membership timeline of joins, role changes, invites, and removals, each with an event icon, actor avatar, detail line, and timestamp.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-org-chart","type":"registry:block","title":"Org Chart","files":[{"path":"components/blocks/application-pro/teams-orgs/org-chart.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/org-chart.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"An org chart showing two levels of the Engineering hierarchy with avatar cards and border connectors, no chart library required."},{"name":"application-pro-teams-orgs-pending-invites-list","type":"registry:block","title":"Pending Invites List","files":[{"path":"components/blocks/application-pro/teams-orgs/pending-invites-list.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/pending-invites-list.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Table of outstanding invites with email, role, sent date, sender avatar, days until expiry, and per row resend and revoke actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-permissions-matrix","type":"registry:block","title":"Permissions Matrix","files":[{"path":"components/blocks/application-pro/teams-orgs/permissions-matrix.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/permissions-matrix.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Role permissions table with Check and Minus cells across Viewer, Member, Admin, and Owner columns and the current role highlighted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-role-assignment-panel","type":"registry:block","title":"Role Assignment Panel","files":[{"path":"components/blocks/application-pro/teams-orgs/role-assignment-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/role-assignment-panel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A panel for editing a workspace member role with a role selector listing permission descriptions, a scope list, and an effective immediately callout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-seat-allocation-card","type":"registry:block","title":"Seat Allocation Card","files":[{"path":"components/blocks/application-pro/teams-orgs/seat-allocation-card.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/seat-allocation-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Seat usage panel showing total, used, and free seats with a per-team breakdown and an honest end-of-cycle removal note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-team-detail-card","type":"registry:block","title":"Team Detail Card","files":[{"path":"components/blocks/application-pro/teams-orgs/team-detail-card.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/team-detail-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A team profile card with purpose statement, lead avatar, member avatar stack with overflow count, quick links, and a join request action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-team-directory","type":"registry:block","title":"Team Directory","files":[{"path":"components/blocks/application-pro/teams-orgs/team-directory.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/team-directory.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A searchable grid of member cards with avatar, role, team badge, and online status dot for finding people across the workspace.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-teams-orgs-team-switcher-blueprint","type":"registry:block","title":"Team Switcher Blueprint","files":[{"path":"components/blocks/application-pro/teams-orgs/team-switcher-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/teams-orgs/team-switcher-blueprint.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A static open state blueprint of a team switcher panel listing four teams with role and member count, rendered as plain markup for stable preview screenshots.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-timeline-roadmap-dependency-list","type":"registry:block","title":"Dependency List","files":[{"path":"components/blocks/application-pro/timeline-roadmap/dependency-list.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/dependency-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Roadmap item dependency panel with blocked-by and blocking sections, each row showing status and an inline blocking note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-timeline-roadmap-gantt-rows","type":"registry:block","title":"Gantt Rows","files":[{"path":"components/blocks/application-pro/timeline-roadmap/gantt-rows.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/gantt-rows.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"CSS-grid Gantt chart with a task-name column, week-column timeline, positioned duration bars with in-progress fills, and a today line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-timeline-roadmap-milestone-tracker","type":"registry:block","title":"Milestone Tracker","files":[{"path":"components/blocks/application-pro/timeline-roadmap/milestone-tracker.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/milestone-tracker.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Vertical stepper of four milestones with done, in-progress, and upcoming status, owner avatars, target dates, and progress bars.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-timeline-roadmap-now-next-later","type":"registry:block","title":"Now Next Later","files":[{"path":"components/blocks/application-pro/timeline-roadmap/now-next-later.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/now-next-later.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Compact roadmap list with three sections each showing initiative rows with a confidence chip and an honest status note per item.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-timeline-roadmap-quarter-planner","type":"registry:block","title":"Quarter Planner","files":[{"path":"components/blocks/application-pro/timeline-roadmap/quarter-planner.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/quarter-planner.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Q3 roadmap grid with CSS span bars, capacity hints, and status badges for 8 initiatives across 5 teams.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-timeline-roadmap-release-timeline","type":"registry:block","title":"Release Timeline","files":[{"path":"components/blocks/application-pro/timeline-roadmap/release-timeline.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/release-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Horizontal release rail showing shipped, current, and upcoming version markers each with a date and a one-line scope note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-timeline-roadmap-roadmap-board","type":"registry:block","title":"Roadmap Board","files":[{"path":"components/blocks/application-pro/timeline-roadmap/roadmap-board.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/roadmap-board.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Product roadmap board with Now, Next, and Later columns showing initiative cards with team badges, quarter chips, and progress bars.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-timeline-roadmap-sprint-timeline","type":"registry:block","title":"Sprint Timeline","files":[{"path":"components/blocks/application-pro/timeline-roadmap/sprint-timeline.tsx","type":"registry:component","target":"components/blocks/application-pro/timeline-roadmap/sprint-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Sprint at-a-glance panel with a capacity versus committed summary, a ten-day CSS-grid task board, and a today line across all rows.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-pro-workflow-automation-automation-builder","type":"registry:block","title":"Automation Builder","files":[{"path":"components/blocks/application-pro/workflow-automation/automation-builder.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/automation-builder.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Vertical trigger, filter, and action step editor with dashed connectors, a Draft badge, and Save automation for a single linear flow.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-automation-error-card","type":"registry:block","title":"Automation Error Card","files":[{"path":"components/blocks/application-pro/workflow-automation/automation-error-card.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/automation-error-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Failed automation card with the error in plain words, a retry meter showing attempts used and remaining, and a payload replay affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-automation-templates-grid","type":"registry:block","title":"Automation Templates Grid","files":[{"path":"components/blocks/application-pro/workflow-automation/automation-templates-grid.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/automation-templates-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Template gallery with six categorised automation cards, use counts, a search field, and a start-from-scratch tile.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-condition-branch-card","type":"registry:block","title":"Condition Branch Card","files":[{"path":"components/blocks/application-pro/workflow-automation/condition-branch-card.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/condition-branch-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Branch decision panel with an If row of field, operator, and value chips, Then and Else path summaries, and an add condition affordance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-run-detail-panel","type":"registry:block","title":"Run Detail Panel","files":[{"path":"components/blocks/application-pro/workflow-automation/run-detail-panel.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/run-detail-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Automation run debugger showing the run header, a per step status list, and the input and output of the failed step expanded.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-run-history-table","type":"registry:block","title":"Run History Table","files":[{"path":"components/blocks/application-pro/workflow-automation/run-history-table.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/run-history-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Automation execution log with timestamp, automation name, status badge, duration, items affected, and inline error text on failed rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-trigger-action-row","type":"registry:block","title":"Trigger Action Row","files":[{"path":"components/blocks/application-pro/workflow-automation/trigger-action-row.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/trigger-action-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Automations index with ruled rows summarising each automation as trigger to action text, a live Switch, last run time, and run count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-pro-workflow-automation-workflow-canvas-blueprint","type":"registry:block","title":"Workflow Canvas Blueprint","files":[{"path":"components/blocks/application-pro/workflow-automation/workflow-canvas-blueprint.tsx","type":"registry:component","target":"components/blocks/application-pro/workflow-automation/workflow-canvas-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Static node-graph canvas with four positioned cards connected by dashed SVG lines, parallel branches, a merge node, and a zoom toolbar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-ai-prompt-welcome-page","type":"registry:block","title":"Welcome Page","files":[{"path":"components/blocks/application/ai-prompt/welcome-page.tsx","type":"registry:component","target":"components/blocks/application/ai-prompt/welcome-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A welcome screen with a centered prompt field, suggested actions, and a short intro. Greets users and invites the first message in an AI assistant.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-application-stats-simple-cards","type":"registry:block","title":"Simple Cards","files":[{"path":"components/blocks/application/application-stats/simple-cards.tsx","type":"registry:component","target":"components/blocks/application/application-stats/simple-cards.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Clean metric cards that display a label and a single number set side by side. Use across a dashboard header to surface key totals at a glance.","dependencies":["lucide-react"]},{"name":"application-application-stats-with-badges","type":"registry:block","title":"With Badges","files":[{"path":"components/blocks/application/application-stats/with-badges.tsx","type":"registry:component","target":"components/blocks/application/application-stats/with-badges.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Stat cards pairing each number with a small badge that shows change or trend. Use to flag growth or decline next to revenue and signup totals.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-application-stats-with-colored-icons","type":"registry:block","title":"With Colored Icons","files":[{"path":"components/blocks/application/application-stats/with-colored-icons.tsx","type":"registry:component","target":"components/blocks/application/application-stats/with-colored-icons.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Metric cards that pair each figure with a tinted icon set in a colored circle. Use to make categories easy to scan on a busy analytics dashboard.","dependencies":["lucide-react"]},{"name":"application-application-stats-with-description","type":"registry:block","title":"With Description","files":[{"path":"components/blocks/application/application-stats/with-description.tsx","type":"registry:component","target":"components/blocks/application/application-stats/with-description.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Stat cards that place a short line of context under each number. Use when a raw figure needs explanation, like a comparison to the prior month.","dependencies":["lucide-react"]},{"name":"application-application-stats-with-icons","type":"registry:block","title":"With Icons","files":[{"path":"components/blocks/application/application-stats/with-icons.tsx","type":"registry:component","target":"components/blocks/application/application-stats/with-icons.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Metric cards with a small icon beside every value for quick recognition. Use on overview screens where users skim totals by category very fast.","dependencies":["lucide-react"]},{"name":"application-application-stats-with-progress","type":"registry:block","title":"With Progress","files":[{"path":"components/blocks/application/application-stats/with-progress.tsx","type":"registry:component","target":"components/blocks/application/application-stats/with-progress.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Stat cards that pair a number with a progress bar moving toward a target. Use to show goal completion for revenue, storage, or active user counts.","dependencies":["radix-ui"]},{"name":"application-form-layouts-complex-form","type":"registry:block","title":"Complex Form","files":[{"path":"components/blocks/application/form-layouts/complex-form.tsx","type":"registry:component","target":"components/blocks/application/form-layouts/complex-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A dense form with grouped sections, multiple field types, and a sticky action bar. Use it for detailed settings, account creation, or admin record editing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-form-layouts-stacked","type":"registry:block","title":"Stacked","files":[{"path":"components/blocks/application/form-layouts/stacked.tsx","type":"registry:component","target":"components/blocks/application/form-layouts/stacked.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A single column form with labels stacked above each input and a clear submit action. Ideal for short flows like sign in, contact, or quick profile edits.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-form-layouts-two-column","type":"registry:block","title":"Two Column","files":[{"path":"components/blocks/application/form-layouts/two-column.tsx","type":"registry:component","target":"components/blocks/application/form-layouts/two-column.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A form split into two columns of fields with a shared header and footer actions. Use it for longer profiles or billing details that fit a wider screen.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-login-split-with-image","type":"registry:block","title":"Split With Image","files":[{"path":"components/blocks/application/login/split-with-image.tsx","type":"registry:component","target":"components/blocks/application/login/split-with-image.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A two panel login screen pairing a sign in form with a side image. Use it to add brand personality to authentication on web apps and dashboards.","dependencies":["class-variance-authority","radix-ui"]},{"name":"application-page-headings-simple-centered","type":"registry:block","title":"Simple Centered","files":[{"path":"components/blocks/application/page-headings/simple-centered.tsx","type":"registry:component","target":"components/blocks/application/page-headings/simple-centered.tsx"}],"description":"A centered page title with optional description text, balanced on the screen. Use it on focused app views like settings or a single record detail."},{"name":"application-page-headings-with-actions","type":"registry:block","title":"With Actions","files":[{"path":"components/blocks/application/page-headings/with-actions.tsx","type":"registry:component","target":"components/blocks/application/page-headings/with-actions.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A page title paired with buttons on the right for primary and secondary actions. Use it atop list or detail views where users create or edit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-page-headings-with-search-filters","type":"registry:block","title":"With Search Filters","files":[{"path":"components/blocks/application/page-headings/with-search-filters.tsx","type":"registry:component","target":"components/blocks/application/page-headings/with-search-filters.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A page title with a search field and filter controls sitting below it. Use it on data heavy screens so users narrow long tables and lists fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-page-headings-with-stats","type":"registry:block","title":"With Stats","files":[{"path":"components/blocks/application/page-headings/with-stats.tsx","type":"registry:component","target":"components/blocks/application/page-headings/with-stats.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A page title sitting above a row of key metrics like totals and trends. Use it on dashboards to frame the view and surface numbers at a glance.","dependencies":["lucide-react"]},{"name":"application-page-headings-with-steps","type":"registry:block","title":"With Steps","files":[{"path":"components/blocks/application/page-headings/with-steps.tsx","type":"registry:component","target":"components/blocks/application/page-headings/with-steps.tsx"}],"description":"A page title with a numbered step indicator that shows progress. Use it across multi screen flows like onboarding, checkout, or a setup wizard.","dependencies":["lucide-react"]},{"name":"application-page-headings-with-tabs","type":"registry:block","title":"With Tabs","files":[{"path":"components/blocks/application/page-headings/with-tabs.tsx","type":"registry:component","target":"components/blocks/application/page-headings/with-tabs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A page title with a row of tabs beneath it for switching sections. Use it on profile or settings screens that split content across many views.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-reset-password-email-otp-reset","type":"registry:block","title":"Email OTP Reset","files":[{"path":"components/blocks/application/reset-password/email-otp-reset.tsx","type":"registry:component","target":"components/blocks/application/reset-password/email-otp-reset.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/field.tsx","type":"registry:ui","target":"components/ui/field.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"A reset password form that emails a one time code, then prompts users to enter the OTP digits before setting a new password. Use for secure email recovery.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-reset-password-security-question-reset","type":"registry:block","title":"Security Question Reset","files":[{"path":"components/blocks/application/reset-password/security-question-reset.tsx","type":"registry:component","target":"components/blocks/application/reset-password/security-question-reset.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/field.tsx","type":"registry:ui","target":"components/ui/field.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A reset password form that verifies identity with a saved security question and answer before allowing a new password. Use as a passwordless recovery path.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-reset-password-simple-reset","type":"registry:block","title":"Simple Reset","files":[{"path":"components/blocks/application/reset-password/simple-reset.tsx","type":"registry:component","target":"components/blocks/application/reset-password/simple-reset.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/field.tsx","type":"registry:ui","target":"components/ui/field.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"A clean reset password form with new password and confirm fields plus a submit button. Use on the final step after a user clicks a recovery link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-reset-password-token-reset","type":"registry:block","title":"Token Reset","files":[{"path":"components/blocks/application/reset-password/token-reset.tsx","type":"registry:component","target":"components/blocks/application/reset-password/token-reset.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/field.tsx","type":"registry:ui","target":"components/ui/field.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"A reset password form that reads a token from the recovery link, confirms it, then collects a new password. Use to complete a tokened email reset flow.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-billing","type":"registry:block","title":"Billing","files":[{"path":"components/blocks/application/user-profiles/billing.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/billing.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A profile billing view with current plan, payment method, invoice history, and an upgrade prompt. Use it where members manage subscriptions and receipts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-compact-list","type":"registry:block","title":"Compact List","files":[{"path":"components/blocks/application/user-profiles/compact-list.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/compact-list.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A dense list of user profiles with avatar, name, role, and quick actions per row. Fits admin tables and directories where space stays tight.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-developer","type":"registry:block","title":"Developer","files":[{"path":"components/blocks/application/user-profiles/developer.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/developer.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"A developer profile with API keys, access tokens, connected apps, and usage notes. Use it on settings pages where engineers manage their integrations.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-onboarding","type":"registry:block","title":"Onboarding","files":[{"path":"components/blocks/application/user-profiles/onboarding.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/onboarding.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A guided profile setup with steps for avatar, name, and preferences. Use it right after signup to help new users finish their account quickly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-permissions","type":"registry:block","title":"Permissions","files":[{"path":"components/blocks/application/user-profiles/permissions.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/permissions.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A profile permissions panel listing roles and toggles for what a member can view or edit. Use it where admins grant access across an application.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-security-logs","type":"registry:block","title":"Security Logs","files":[{"path":"components/blocks/application/user-profiles/security-logs.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/security-logs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A profile security view showing recent sign ins, devices, locations, and times. Use it so members can spot odd activity and protect their account.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-simple","type":"registry:block","title":"Simple","files":[{"path":"components/blocks/application/user-profiles/simple.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/simple.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A clean profile card with avatar, name, bio, and a few key details. Use it for a focused account summary on dashboards or member directory pages.","dependencies":["lucide-react","radix-ui"]},{"name":"application-user-profiles-tabbed","type":"registry:block","title":"Tabbed","files":[{"path":"components/blocks/application/user-profiles/tabbed.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/tabbed.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A profile layout split into tabs for account, security, and notifications. Use it to organize many settings without crowding a single long page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-team-grid","type":"registry:block","title":"Team Grid","files":[{"path":"components/blocks/application/user-profiles/team-grid.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/team-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"A grid of teammate profiles with photos, titles, and contact buttons. Use it on an about page or internal directory to introduce the whole team.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"application-user-profiles-with-stats","type":"registry:block","title":"With Stats","files":[{"path":"components/blocks/application/user-profiles/with-stats.tsx","type":"registry:component","target":"components/blocks/application/user-profiles/with-stats.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A profile header paired with metrics like followers, posts, and reputation. Use it on social or community pages to show a member at a glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-accordions-border-fade-accordion","type":"registry:block","title":"Border Fade Accordion","files":[{"path":"components/blocks/components/accordions/border-fade-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/border-fade-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion where each item border softly fades on open. Adds a quiet visual cue for active panels in FAQs and settings without loud styling.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-card-accordion","type":"registry:block","title":"Card Accordion","files":[{"path":"components/blocks/components/accordions/card-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/card-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion built from separated cards, each panel raised on its own surface. Good for FAQs or feature details that need clear visual separation.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-dash-line-accordion","type":"registry:block","title":"Dash Line Accordion","files":[{"path":"components/blocks/components/accordions/dash-line-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/dash-line-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion divided by dashed lines between items. The light dashed rhythm keeps long FAQ lists readable while staying subtle and unobtrusive.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-dotted-border-accordion","type":"registry:block","title":"Dotted Border Accordion","files":[{"path":"components/blocks/components/accordions/dotted-border-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/dotted-border-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion framed by a dotted border around each panel. The playful dotted outline suits informal FAQs, help docs, and friendly onboarding tips.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-double-border-accordion","type":"registry:block","title":"Double Border Accordion","files":[{"path":"components/blocks/components/accordions/double-border-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/double-border-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion with a double line framing every item. The layered borders add clear structure for FAQs and specs where rows need firm definition.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-fade-in-content-accordion","type":"registry:block","title":"Fade In Content Accordion","files":[{"path":"components/blocks/components/accordions/fade-in-content-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/fade-in-content-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion whose answer text gently fades in as a panel opens. The soft entrance keeps reader focus on the revealed content in FAQs and guides.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-floating-label-accordion","type":"registry:block","title":"Floating Label Accordion","files":[{"path":"components/blocks/components/accordions/floating-label-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/floating-label-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion where the question label lifts up as the panel opens. The floating title keeps context visible while reading through long FAQ answers.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-glow-border-accordion","type":"registry:block","title":"Glow Border Accordion","files":[{"path":"components/blocks/components/accordions/glow-border-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/glow-border-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion with a glowing border on the open item. The lit edge draws the eye to the active panel, fitting dark themes and modern product FAQs.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-highlight-active-accordion","type":"registry:block","title":"Highlight Active Accordion","files":[{"path":"components/blocks/components/accordions/highlight-active-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/highlight-active-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion that tints the background of the open item. The highlighted row keeps your place in long FAQ lists and dense product documentation.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-minimal-line-accordion","type":"registry:block","title":"Minimal Line Accordion","files":[{"path":"components/blocks/components/accordions/minimal-line-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/minimal-line-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion with thin divider lines and no boxes at all. The stripped back style fits clean FAQs, sidebars, and content heavy marketing pages.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-nested-border-accordion","type":"registry:block","title":"Nested Border Accordion","files":[{"path":"components/blocks/components/accordions/nested-border-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/nested-border-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion supporting nested items inside bordered panels. Use it for layered FAQs, docs, and settings where topics branch into subtopics.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-numbered-accordion","type":"registry:block","title":"Numbered Accordion","files":[{"path":"components/blocks/components/accordions/numbered-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/numbered-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion with a number beside every question. The counted order suits step guides, ranked FAQs, and any sequence readers follow in turn.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-shadow-reveal-accordion","type":"registry:block","title":"Shadow Reveal Accordion","files":[{"path":"components/blocks/components/accordions/shadow-reveal-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/shadow-reveal-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion that lifts each item with a soft shadow on open. The raised panel clearly signals the active answer in FAQs and feature breakdowns.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-stepped-accordion","type":"registry:block","title":"Stepped Accordion","files":[{"path":"components/blocks/components/accordions/stepped-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/stepped-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion styled as numbered steps with connecting markers. Ideal for setup flows, tutorials, and any process that readers complete in order.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-thick-side-border-accordion","type":"registry:block","title":"Thick Side Border Accordion","files":[{"path":"components/blocks/components/accordions/thick-side-border-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/thick-side-border-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion with a bold colored bar down the side of each item. The thick accent marks active rows in FAQs and grabs reader attention quickly.","dependencies":["lucide-react","radix-ui"]},{"name":"components-accordions-underline-accordion","type":"registry:block","title":"Underline Accordion","files":[{"path":"components/blocks/components/accordions/underline-accordion.tsx","type":"registry:component","target":"components/blocks/components/accordions/underline-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion where each question sits above a single underline. The clean text first look fits editorial FAQs and quiet, tidy help sections.","dependencies":["lucide-react","radix-ui"]},{"name":"components-alerts-accent-border-alerts","type":"registry:block","title":"Accent Border Alerts","files":[{"path":"components/blocks/components/alerts/accent-border-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/accent-border-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with a colored bar on the left edge that signals tone at a glance. Use for status messages where the color cue matters more than the icon.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-all-sides-accent-alerts","type":"registry:block","title":"All Sides Accent Alerts","files":[{"path":"components/blocks/components/alerts/all-sides-accent-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/all-sides-accent-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts framed by a colored border on every side for strong emphasis. Use when a notice must stand out clearly against a busy page or dashboard.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-basic-alerts","type":"registry:block","title":"Basic Alerts","files":[{"path":"components/blocks/components/alerts/basic-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/basic-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Plain alerts with an icon, title, and message in a soft container. Use for everyday notices like saved changes, confirmations, and short tips.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-bottom-accent-alerts","type":"registry:block","title":"Bottom Accent Alerts","files":[{"path":"components/blocks/components/alerts/bottom-accent-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/bottom-accent-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with a colored underline along the bottom edge for a subtle cue. Use for inline messages in forms or cards that need only light emphasis.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-compact-alerts","type":"registry:block","title":"Compact Alerts","files":[{"path":"components/blocks/components/alerts/compact-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/compact-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Slim alerts with tight padding and a single line of text inside. Use in dense layouts, tables, or sidebars where vertical space stays limited.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-dashed-border-alerts","type":"registry:block","title":"Dashed Border Alerts","files":[{"path":"components/blocks/components/alerts/dashed-border-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/dashed-border-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts outlined with a dashed border for a lighter, sketch like feel. Use for draft notices, placeholders, or optional tips in a quiet tone.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-dismissible-alerts","type":"registry:block","title":"Dismissible Alerts","files":[{"path":"components/blocks/components/alerts/dismissible-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/dismissible-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Alerts with a close button so users can clear a notice once read. Use for cookie banners, promotions, and warnings that should not stay forever.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-alerts-dotted-border-alerts","type":"registry:block","title":"Dotted Border Alerts","files":[{"path":"components/blocks/components/alerts/dotted-border-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/dotted-border-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts wrapped in a dotted border for a soft, playful outline. Use for casual reminders, tips, or low priority notes in friendly interfaces.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-double-border-alerts","type":"registry:block","title":"Double Border Alerts","files":[{"path":"components/blocks/components/alerts/double-border-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/double-border-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with a layered double border for a refined, framed look. Use to highlight important notices that deserve extra visual weight on a page.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-elevated-alerts","type":"registry:block","title":"Elevated Alerts","files":[{"path":"components/blocks/components/alerts/elevated-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/elevated-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts raised with a soft shadow so they lift off the surface. Use for floating notifications or messages that should feel above the content.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-frosted-glass-alerts","type":"registry:block","title":"Frosted Glass Alerts","files":[{"path":"components/blocks/components/alerts/frosted-glass-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/frosted-glass-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with a blurred, translucent backdrop that reveals content behind. Use over images or hero sections where a glassy notice fits the design.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-glow-border-alerts","type":"registry:block","title":"Glow Border Alerts","files":[{"path":"components/blocks/components/alerts/glow-border-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/glow-border-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts ringed by a soft glowing border that draws the eye gently. Use for promotions or new feature notices that need a warm, inviting accent.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-icon-only-alerts","type":"registry:block","title":"Icon Only Alerts","files":[{"path":"components/blocks/components/alerts/icon-only-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/icon-only-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Compact alerts that pair a status icon with a short message and no title. Use for quick inline feedback where space is tight and tone is clear.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-inset-alerts","type":"registry:block","title":"Inset Alerts","files":[{"path":"components/blocks/components/alerts/inset-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/inset-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with an inset shadow that sinks slightly into the surface. Use for grouped notices inside cards or panels that feel part of the layout.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-monospace-alerts","type":"registry:block","title":"Monospace Alerts","files":[{"path":"components/blocks/components/alerts/monospace-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/monospace-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts set in a monospace typeface for a technical, code style tone. Use for build output, terminal messages, or warnings aimed at developers.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-outlined-alerts","type":"registry:block","title":"Outlined Alerts","files":[{"path":"components/blocks/components/alerts/outlined-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/outlined-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts defined only by a clean border with no fill behind the text. Use on colored or busy backgrounds where a solid panel would feel heavy.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-paper-alerts","type":"registry:block","title":"Paper Alerts","files":[{"path":"components/blocks/components/alerts/paper-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/paper-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts styled like a paper card with subtle texture and soft edges. Use for printed style notices, receipts, or warm document driven layouts.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-pulse-border-alerts","type":"registry:block","title":"Pulse Border Alerts","files":[{"path":"components/blocks/components/alerts/pulse-border-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/pulse-border-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with a border that gently pulses to catch attention over time. Use for live updates, countdowns, or urgent notices that should not be missed.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-right-accent-alerts","type":"registry:block","title":"Right Accent Alerts","files":[{"path":"components/blocks/components/alerts/right-accent-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/right-accent-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts with a colored bar on the right edge for a mirrored accent. Use in right aligned layouts or when the left side already holds an icon.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-alerts-top-accent-alerts","type":"registry:block","title":"Top Accent Alerts","files":[{"path":"components/blocks/components/alerts/top-accent-alerts.tsx","type":"registry:component","target":"components/blocks/components/alerts/top-accent-alerts.tsx"},{"path":"components/ui/alert.tsx","type":"registry:ui","target":"components/ui/alert.tsx"}],"description":"Alerts topped with a colored bar across the upper edge for a header cue. Use for grouped notices where the accent reads like a small banner.","dependencies":["class-variance-authority","lucide-react"]},{"name":"components-badges-3d-badge","type":"registry:block","title":"3D Badge","files":[{"path":"components/blocks/components/badges/3d-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/3d-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge with layered shadows and depth that lifts off the surface. Use it to spotlight a featured tag or premium label that needs to stand out.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-bounce-badge","type":"registry:block","title":"Bounce Badge","files":[{"path":"components/blocks/components/badges/bounce-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/bounce-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge with a springy bounce animation that draws the eye on entry. Use it to flag new arrivals or fresh updates that should grab attention.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-dot-indicator-badge","type":"registry:block","title":"Dot Indicator Badge","files":[{"path":"components/blocks/components/badges/dot-indicator-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/dot-indicator-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge paired with a small colored dot that shows status at a glance. Use it to show online, busy, or away states next to a name or avatar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-elevated-badge","type":"registry:block","title":"Elevated Badge","files":[{"path":"components/blocks/components/badges/elevated-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/elevated-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge raised above the surface with a soft drop shadow. Use it to mark a priority label or count that should read as floating above content.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-extra-large-badge","type":"registry:block","title":"Extra Large Badge","files":[{"path":"components/blocks/components/badges/extra-large-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/extra-large-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"An oversized badge with generous padding and bold text for high visibility. Use it on hero areas or banners where a tag must read from a distance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-gradient-border-badge","type":"registry:block","title":"Gradient Border Badge","files":[{"path":"components/blocks/components/badges/gradient-border-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/gradient-border-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge wrapped in a colorful gradient outline around plain fill. Use it to mark beta, pro, or featured labels that need a vivid accent edge.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-hover-scale-badge","type":"registry:block","title":"Hover Scale Badge","files":[{"path":"components/blocks/components/badges/hover-scale-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/hover-scale-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge that grows slightly when the pointer rests on it. Use it for interactive tags or filters where a touch of feedback invites a quick click.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-icon-badge","type":"registry:block","title":"Icon Badge","files":[{"path":"components/blocks/components/badges/icon-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/icon-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge that pairs a small icon with a label for instant meaning. Use it to tag categories, statuses, or actions where text alone reads slowly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-badges-large-badge","type":"registry:block","title":"Large Badge","files":[{"path":"components/blocks/components/badges/large-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/large-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A roomy badge with extra padding and larger text for clear reading. Use it to highlight a plan tier, count, or status across busy interfaces.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-pulse-badge","type":"registry:block","title":"Pulse Badge","files":[{"path":"components/blocks/components/badges/pulse-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/pulse-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge with a soft pulsing ring that radiates outward on a loop. Use it to signal live activity, unread items, or a recording session in progress.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-ribbon-badge","type":"registry:block","title":"Ribbon Badge","files":[{"path":"components/blocks/components/badges/ribbon-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/ribbon-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge styled as a corner ribbon that drapes over a card edge. Use it to flag sale, new, or sold out states across product and gallery tiles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-badges-square-badge","type":"registry:block","title":"Square Badge","files":[{"path":"components/blocks/components/badges/square-badge.tsx","type":"registry:component","target":"components/blocks/components/badges/square-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A badge with sharp square corners and a compact footprint. Use it for crisp version tags, counts, or labels that suit a structured grid layout.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-breadcrumbs-background-breadcrumb","type":"registry:block","title":"Background Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/background-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/background-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb trail wrapped in a soft tinted background bar. Anchors the top of a page and keeps navigation links readable above busy content.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-bordered-breadcrumb","type":"registry:block","title":"Bordered Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/bordered-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/bordered-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb sitting inside a thin outlined container. Frames the navigation path cleanly on a dashboard header or any content section toolbar.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-card-breadcrumb","type":"registry:block","title":"Card Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/card-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/card-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb housed in a rounded card with a subtle shadow. Lifts the navigation path off the page for detail views and account settings screens.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-compact-breadcrumb","type":"registry:block","title":"Compact Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/compact-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/compact-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A tight breadcrumb with reduced spacing between its links. Fits crowded toolbars and mobile headers where horizontal room is in short supply.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-dot-breadcrumb","type":"registry:block","title":"Dot Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/dot-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/dot-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb that separates each link with a small round dot. Offers a quiet, minimal path indicator for clean app layouts and page headers.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-icon-breadcrumb","type":"registry:block","title":"Icon Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/icon-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/icon-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb pairing each link with a leading icon. Helps users scan the path at a glance across sections like home, docs, billing, and settings.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-numbered-breadcrumb","type":"registry:block","title":"Numbered Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/numbered-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/numbered-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb that numbers each step in the path. Clarifies order for sequential flows such as checkout, onboarding, or a multi step setup wizard.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-pill-breadcrumb","type":"registry:block","title":"Pill Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/pill-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/pill-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb where each link sits inside a rounded pill shape. Adds a friendly, tappable feel to navigation on dashboards and profile pages.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-progress-breadcrumb","type":"registry:block","title":"Progress Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/progress-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/progress-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb with a fill that tracks how far a user has moved. Shows completion across multi step forms, checkout, and guided account onboarding.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-slash-breadcrumb","type":"registry:block","title":"Slash Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/slash-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/slash-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb that divides its links with a forward slash. Mirrors a file path style for code tools, documentation, and folder browsing screens.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-sticky-breadcrumb","type":"registry:block","title":"Sticky Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/sticky-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/sticky-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb that pins to the top of the view as the page scrolls. Keeps the current location visible on long articles and deep settings pages.","dependencies":["lucide-react","radix-ui"]},{"name":"components-breadcrumbs-timeline-breadcrumb","type":"registry:block","title":"Timeline Breadcrumb","files":[{"path":"components/blocks/components/breadcrumbs/timeline-breadcrumb.tsx","type":"registry:component","target":"components/blocks/components/breadcrumbs/timeline-breadcrumb.tsx"},{"path":"components/ui/breadcrumb.tsx","type":"registry:ui","target":"components/ui/breadcrumb.tsx"}],"description":"A breadcrumb laid out as a connected timeline of steps. Maps a journey through stages, ideal for order tracking and live project status views.","dependencies":["lucide-react","radix-ui"]},{"name":"components-buttons-border-animation-buttons","type":"registry:block","title":"Border Animation Buttons","files":[{"path":"components/blocks/components/buttons/border-animation-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/border-animation-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with borders that animate and trace around the edge on hover. Draw attention to a primary action without changing the button fill at rest.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-cut-corners-buttons","type":"registry:block","title":"Cut Corners Buttons","files":[{"path":"components/blocks/components/buttons/cut-corners-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/cut-corners-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with angled, clipped corners for a sharp geometric look. Fits gaming, tech, or editorial interfaces that want an edgy call to action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-extra-large-buttons","type":"registry:block","title":"Extra Large Buttons","files":[{"path":"components/blocks/components/buttons/extra-large-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/extra-large-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Oversized buttons with generous padding and large type. Use them as the main hero call to action where one tap should be impossible to miss.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-extra-small-buttons","type":"registry:block","title":"Extra Small Buttons","files":[{"path":"components/blocks/components/buttons/extra-small-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/extra-small-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Compact, low height buttons with tight padding and small type. Ideal for dense toolbars, table rows, and inline controls where space is limited.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-grow-buttons","type":"registry:block","title":"Grow Buttons","files":[{"path":"components/blocks/components/buttons/grow-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/grow-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons that scale up smoothly on hover to feel responsive. Add a touch of motion feedback to cards, pricing tiers, and primary form actions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-interactive-buttons","type":"registry:block","title":"Interactive Buttons","files":[{"path":"components/blocks/components/buttons/interactive-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/interactive-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons that react to hover and click with motion and state changes. Make signups, downloads, and key actions feel alive and worth clicking.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-buttons-liquid-buttons","type":"registry:block","title":"Liquid Buttons","files":[{"path":"components/blocks/components/buttons/liquid-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/liquid-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with a flowing liquid fill that sweeps across the surface on hover. A playful accent for landing pages and creative product sites today.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-morphing-buttons","type":"registry:block","title":"Morphing Buttons","files":[{"path":"components/blocks/components/buttons/morphing-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/morphing-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons that morph their shape, size, or label between states. Use for loading, success, and submit flows that confirm progress to the user.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-pixel-buttons","type":"registry:block","title":"Pixel Buttons","files":[{"path":"components/blocks/components/buttons/pixel-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/pixel-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with a blocky pixel art finish and retro styling. Perfect for games, indie projects, and brands that lean on a nostalgic visual theme.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-pulse-buttons","type":"registry:block","title":"Pulse Buttons","files":[{"path":"components/blocks/components/buttons/pulse-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/pulse-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with a soft pulsing glow that draws the eye over time. Highlight a single primary action like start trial or buy now on a busy page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-rotate-buttons","type":"registry:block","title":"Rotate Buttons","files":[{"path":"components/blocks/components/buttons/rotate-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/rotate-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons that rotate an icon or the whole label on hover. Add subtle motion to refresh, settings, and other action icons across your app today.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-shadow-buttons","type":"registry:block","title":"Shadow Buttons","files":[{"path":"components/blocks/components/buttons/shadow-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/shadow-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with layered shadows that lift or shift on hover. Give actions a tactile, raised feel across cards, forms, and toolbars in any layout.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-skew-buttons","type":"registry:block","title":"Skew Buttons","files":[{"path":"components/blocks/components/buttons/skew-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/skew-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with a skewed, slanted shape for a sense of dynamic energy. Suits sports, fitness, and bold marketing pages that want forward momentum.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-slide-buttons","type":"registry:block","title":"Slide Buttons","files":[{"path":"components/blocks/components/buttons/slide-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/slide-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons with a color or label that slides in on hover. Reveal a second state to guide users toward the next step in a clear and simple flow.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-social-buttons","type":"registry:block","title":"Social Buttons","files":[{"path":"components/blocks/components/buttons/social-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/social-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Buttons branded for Google, GitHub, Apple, and more providers. Drop them into sign in and sign up screens for fast one click authentication.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-squeeze-buttons","type":"registry:block","title":"Squeeze Buttons","files":[{"path":"components/blocks/components/buttons/squeeze-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/squeeze-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons that squeeze inward on press for satisfying tactile feedback. Use on mobile flows and forms where every tap should feel confirmed fast.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-buttons-underline-buttons","type":"registry:block","title":"Underline Buttons","files":[{"path":"components/blocks/components/buttons/underline-buttons.tsx","type":"registry:component","target":"components/blocks/components/buttons/underline-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Buttons styled with an animated underline that grows in on hover. A clean, minimal accent for text links and quiet secondary actions in any UI.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-border-accent-card","type":"registry:block","title":"Border Accent Card","files":[{"path":"components/blocks/components/cards/border-accent-card.tsx","type":"registry:component","target":"components/blocks/components/cards/border-accent-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card with a colored accent line along one edge that draws the eye. Use it to group related text and labels while signaling category or status.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-border-animation-card","type":"registry:block","title":"Border Animation Card","files":[{"path":"components/blocks/components/cards/border-animation-card.tsx","type":"registry:component","target":"components/blocks/components/cards/border-animation-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card whose border traces a moving outline around the edges. Use it to spotlight a featured plan, offer, or item that needs attention on the page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-border-gradient-animation-card","type":"registry:block","title":"Border Gradient Animation Card","files":[{"path":"components/blocks/components/cards/border-gradient-animation-card.tsx","type":"registry:component","target":"components/blocks/components/cards/border-gradient-animation-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card framed by a shifting gradient border that flows around the edges. Use it to highlight a premium tier or hero item in a grid of options.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-border-highlight-card","type":"registry:block","title":"Border Highlight Card","files":[{"path":"components/blocks/components/cards/border-highlight-card.tsx","type":"registry:component","target":"components/blocks/components/cards/border-highlight-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that brightens its border when focused or hovered. Use it to mark the recommended choice in a pricing grid or a selected option in a form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-corner-ribbon-card","type":"registry:block","title":"Corner Ribbon Card","files":[{"path":"components/blocks/components/cards/corner-ribbon-card.tsx","type":"registry:component","target":"components/blocks/components/cards/corner-ribbon-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card with a diagonal ribbon pinned to one corner for a short label. Use it to flag New, Sale, or Featured items in a product or listing grid.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-cutout-border-card","type":"registry:block","title":"Cutout Border Card","files":[{"path":"components/blocks/components/cards/cutout-border-card.tsx","type":"registry:component","target":"components/blocks/components/cards/cutout-border-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card with a notched border that carves out shape along its edge. Use it for tickets, coupons, or passes where a distinct outline reads as a stub.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-dashed-border-card","type":"registry:block","title":"Dashed Border Card","files":[{"path":"components/blocks/components/cards/dashed-border-card.tsx","type":"registry:component","target":"components/blocks/components/cards/dashed-border-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card outlined with a dashed border for a light, sketch feel. Use it for empty states, upload zones, or placeholders that invite the user to add content.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-double-border-card","type":"registry:block","title":"Double Border Card","files":[{"path":"components/blocks/components/cards/double-border-card.tsx","type":"registry:component","target":"components/blocks/components/cards/double-border-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card wrapped in two stacked outlines for a framed, formal look. Use it for certificates, awards, or quotes that deserve emphasis on the page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-expandable-card","type":"registry:block","title":"Expandable Card","files":[{"path":"components/blocks/components/cards/expandable-card.tsx","type":"registry:component","target":"components/blocks/components/cards/expandable-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that grows to reveal more text or controls when opened. Use it for FAQs, settings, or summaries that hide detail until the reader wants it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-cards-gradient-border-card","type":"registry:block","title":"Gradient Border Card","files":[{"path":"components/blocks/components/cards/gradient-border-card.tsx","type":"registry:component","target":"components/blocks/components/cards/gradient-border-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card edged with a static gradient outline that adds color without noise. Use it to set apart a key offer or profile in an otherwise plain grid.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-hover-effect-card","type":"registry:block","title":"Hover Effect Card","files":[{"path":"components/blocks/components/cards/hover-effect-card.tsx","type":"registry:component","target":"components/blocks/components/cards/hover-effect-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that lifts, scales, or shades when the pointer moves over it. Use it for clickable tiles in a gallery, menu, or dashboard to signal they react.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-hover-reveal-card","type":"registry:block","title":"Hover Reveal Card","files":[{"path":"components/blocks/components/cards/hover-reveal-card.tsx","type":"registry:component","target":"components/blocks/components/cards/hover-reveal-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that hides extra text or actions until hover uncovers them. Use it for portfolio tiles or features where the cover stays clean until needed.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-icon-card","type":"registry:block","title":"Icon Card","files":[{"path":"components/blocks/components/cards/icon-card.tsx","type":"registry:component","target":"components/blocks/components/cards/icon-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card led by a single icon above a short title and blurb. Use it for feature grids, service lists, or steps where a glyph anchors each point made.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-cards-magnetic-card","type":"registry:block","title":"Magnetic Card","files":[{"path":"components/blocks/components/cards/magnetic-card.tsx","type":"registry:component","target":"components/blocks/components/cards/magnetic-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that drifts toward the cursor as it nears, with a subtle pull. Use it for playful landing pages or feature tiles that reward a hovering pointer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-neon-border-card","type":"registry:block","title":"Neon Border Card","files":[{"path":"components/blocks/components/cards/neon-border-card.tsx","type":"registry:component","target":"components/blocks/components/cards/neon-border-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card ringed by a glowing neon outline that pops on dark backgrounds. Use it for gaming, music, or tech pages where a bright frame fits the mood.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-perspective-hover-card","type":"registry:block","title":"Perspective Hover Card","files":[{"path":"components/blocks/components/cards/perspective-hover-card.tsx","type":"registry:component","target":"components/blocks/components/cards/perspective-hover-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that rotates in 3D space as the pointer crosses it for depth. Use it for hero items or showcases where motion makes a tile feel tactile.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-progress-card","type":"registry:block","title":"Progress Card","files":[{"path":"components/blocks/components/cards/progress-card.tsx","type":"registry:component","target":"components/blocks/components/cards/progress-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A card pairing a progress bar with a label and value reading. Use it to show task completion, goals, or usage limits inside a dashboard or account view.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-pulse-border-card","type":"registry:block","title":"Pulse Border Card","files":[{"path":"components/blocks/components/cards/pulse-border-card.tsx","type":"registry:component","target":"components/blocks/components/cards/pulse-border-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card with a border that pulses softly to draw a glance over. Use it for live alerts, fresh items, or a call to action that should feel active now.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-shimmer-effect-card","type":"registry:block","title":"Shimmer Effect Card","files":[{"path":"components/blocks/components/cards/shimmer-effect-card.tsx","type":"registry:component","target":"components/blocks/components/cards/shimmer-effect-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card with a light sweep that glides across its surface. Use it as a loading skeleton or to add gentle motion to a featured tile in a busy grid.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-stacked-card","type":"registry:block","title":"Stacked Card","files":[{"path":"components/blocks/components/cards/stacked-card.tsx","type":"registry:component","target":"components/blocks/components/cards/stacked-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card layered over offset copies to suggest a deck behind it. Use it for collections, albums, or grouped items where many sit under one cover here.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-status-card","type":"registry:block","title":"Status Card","files":[{"path":"components/blocks/components/cards/status-card.tsx","type":"registry:component","target":"components/blocks/components/cards/status-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A card showing a state badge, label, and short note together. Use it on dashboards to surface health, order, or system status at a quick glance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-cards-tilt-effect-card","type":"registry:block","title":"Tilt Effect Card","files":[{"path":"components/blocks/components/cards/tilt-effect-card.tsx","type":"registry:component","target":"components/blocks/components/cards/tilt-effect-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A card that tilts under the cursor to follow its position closely. Use it for interactive feature tiles or showcases where slight motion adds polish.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-collapsible-card-collapsible","type":"registry:block","title":"Card Collapsible","files":[{"path":"components/blocks/components/collapsible/card-collapsible.tsx","type":"registry:component","target":"components/blocks/components/collapsible/card-collapsible.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A card that expands to reveal extra detail when clicked, keeping the summary visible. Use it on dashboards to tuck away long notes inside a tidy tile.","dependencies":["lucide-react","radix-ui"]},{"name":"components-collapsible-grouped-collapsible","type":"registry:block","title":"Grouped Collapsible","files":[{"path":"components/blocks/components/collapsible/grouped-collapsible.tsx","type":"registry:component","target":"components/blocks/components/collapsible/grouped-collapsible.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"Several collapsible panels stacked together so readers open one section at a time. Good for settings pages where related options sit in separate groups.","dependencies":["lucide-react","radix-ui"]},{"name":"components-collapsible-icon-collapsible","type":"registry:block","title":"Icon Collapsible","files":[{"path":"components/blocks/components/collapsible/icon-collapsible.tsx","type":"registry:component","target":"components/blocks/components/collapsible/icon-collapsible.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A collapsible row with a chevron icon that rotates as the panel opens and closes. Use it in menus where a clear visual cue tells readers it expands.","dependencies":["lucide-react","radix-ui"]},{"name":"components-collapsible-shadowed-collapsible","type":"registry:block","title":"Shadowed Collapsible","files":[{"path":"components/blocks/components/collapsible/shadowed-collapsible.tsx","type":"registry:component","target":"components/blocks/components/collapsible/shadowed-collapsible.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A collapsible panel with a soft shadow that lifts it off the page. Use it to highlight an expandable block of content inside a busy layout or feed.","dependencies":["lucide-react","radix-ui"]},{"name":"components-collapsible-side-bordered-collapsible","type":"registry:block","title":"Side Bordered Collapsible","files":[{"path":"components/blocks/components/collapsible/side-bordered-collapsible.tsx","type":"registry:component","target":"components/blocks/components/collapsible/side-bordered-collapsible.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A collapsible panel with a colored bar down one side to mark its state. Use it for alerts or notes whose details readers can show or hide on demand.","dependencies":["lucide-react","radix-ui"]},{"name":"components-collapsible-stepped-collapsible","type":"registry:block","title":"Stepped Collapsible","files":[{"path":"components/blocks/components/collapsible/stepped-collapsible.tsx","type":"registry:component","target":"components/blocks/components/collapsible/stepped-collapsible.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"Numbered collapsible steps that reveal instructions one at a time. Use it for onboarding or setup guides where readers work through tasks in order.","dependencies":["lucide-react","radix-ui"]},{"name":"components-pagination-bordered-pagination","type":"registry:block","title":"Bordered Pagination","files":[{"path":"components/blocks/components/pagination/bordered-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/bordered-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A pagination row where each page number sits inside its own outlined button. The clear borders separate pages cleanly across data tables and search results.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-card-pagination","type":"registry:block","title":"Card Pagination","files":[{"path":"components/blocks/components/pagination/card-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/card-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pagination wrapped in a raised card surface with page numbers and prev next controls. Groups navigation neatly below a list or grid of cards.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-compact-pagination","type":"registry:block","title":"Compact Pagination","files":[{"path":"components/blocks/components/pagination/compact-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/compact-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A tight pagination row that fits page numbers, prev, and next into a small footprint. Good for sidebars, panels, and dense admin tables with limited space.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-dot-indicator-pagination","type":"registry:block","title":"Dot Indicator Pagination","files":[{"path":"components/blocks/components/pagination/dot-indicator-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/dot-indicator-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pagination shown as a row of dots, with the active page filled. Ideal for image carousels, onboarding steps, and short sequences where numbers feel heavy.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-floating-pagination","type":"registry:block","title":"Floating Pagination","files":[{"path":"components/blocks/components/pagination/floating-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/floating-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A pagination bar that hovers above the content with soft elevation. Stays visible while readers scroll through long articles, feeds, or paginated galleries.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-icon-only-pagination","type":"registry:block","title":"Icon Only Pagination","files":[{"path":"components/blocks/components/pagination/icon-only-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/icon-only-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pagination built from chevron icons for previous and next, with no page numbers. Keeps mobile toolbars and image viewers clean when only direction matters.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-mini-pagination","type":"registry:block","title":"Mini Pagination","files":[{"path":"components/blocks/components/pagination/mini-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/mini-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A very small pagination control showing the current page and arrows to step through results. Fits inline next to filters, counts, or table footers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-responsive-pagination","type":"registry:block","title":"Responsive Pagination","files":[{"path":"components/blocks/components/pagination/responsive-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/responsive-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pagination that shows full page numbers on desktop and collapses to arrows on mobile. Keeps navigation usable across phones, tablets, and wide screens.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-rounded-pagination","type":"registry:block","title":"Rounded Pagination","files":[{"path":"components/blocks/components/pagination/rounded-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/rounded-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A pagination row with fully rounded pill buttons for each page. The soft circular shape suits friendly product pages, blogs, and modern marketing layouts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-shadow-pagination","type":"registry:block","title":"Shadow Pagination","files":[{"path":"components/blocks/components/pagination/shadow-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/shadow-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pagination with subtle drop shadows on each button for depth. The lifted look helps the controls stand out over busy backgrounds and image grids.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-pagination-split-pagination","type":"registry:block","title":"Split Pagination","files":[{"path":"components/blocks/components/pagination/split-pagination.tsx","type":"registry:component","target":"components/blocks/components/pagination/split-pagination.tsx"},{"path":"components/ui/pagination.tsx","type":"registry:ui","target":"components/ui/pagination.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pagination with prev and next pushed to opposite edges and page numbers centered. Spreads controls across wide footers and full width content areas.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-tabs-card-tabs","type":"registry:block","title":"Card Tabs","files":[{"path":"components/blocks/components/tabs/card-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/card-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs styled as raised cards, where the active panel lifts above the rest. Great for settings pages or dashboards that group related content into sections.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-tabs-gradient-tabs","type":"registry:block","title":"Gradient Tabs","files":[{"path":"components/blocks/components/tabs/gradient-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/gradient-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs with a soft color gradient on the active trigger for a vivid accent. Use them on landing pages or feature views where the switcher should draw the eye.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-tabs-icon-tabs","type":"registry:block","title":"Icon Tabs","files":[{"path":"components/blocks/components/tabs/icon-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/icon-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs that pair a small icon with each label so options read at a glance. Good for navigation menus and toolbars where space is tight and clarity matters.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"components-tabs-minimal-tabs","type":"registry:block","title":"Minimal Tabs","files":[{"path":"components/blocks/components/tabs/minimal-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/minimal-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Clean tabs with a thin underline marking the active item and no extra borders. Fits content heavy pages where the switcher should stay quiet and unobtrusive.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-tabs-outline-tabs","type":"registry:block","title":"Outline Tabs","files":[{"path":"components/blocks/components/tabs/outline-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/outline-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs wrapped in a light border that frames each trigger and the active panel. Suits forms or profile screens that need clear structure between grouped fields.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-tabs-pill-tabs","type":"registry:block","title":"Pill Tabs","files":[{"path":"components/blocks/components/tabs/pill-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/pill-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs shaped as rounded pills with a filled background on the active one. Ideal for filter bars and segmented controls that toggle between a few short views.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-tabs-shadow-tabs","type":"registry:block","title":"Shadow Tabs","files":[{"path":"components/blocks/components/tabs/shadow-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/shadow-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs where the selected trigger gains a subtle drop shadow for depth and focus. Works well on cards and panels that need a tactile, layered feel to the switch.","dependencies":["class-variance-authority","radix-ui"]},{"name":"components-tabs-vertical-tabs","type":"registry:block","title":"Vertical Tabs","files":[{"path":"components/blocks/components/tabs/vertical-tabs.tsx","type":"registry:component","target":"components/blocks/components/tabs/vertical-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs stacked in a sidebar column with panels rendered to the right. Built for settings, account, and documentation pages with many sections to navigate.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-accessibility-sections-accessibility-feedback-card","type":"registry:block","title":"Accessibility Feedback Card","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/accessibility-feedback-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/accessibility-feedback-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A dated changelog of real fixes credited by first name, with a two day reply promise and a report button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-accessibility-sections-accessibility-statement","type":"registry:block","title":"Accessibility Statement","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/accessibility-statement.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/accessibility-statement.tsx"}],"description":"Dated statement pairing what works with three named gaps, quarter targets, and the next review date.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-accessibility-sections-accessible-packaging-card","type":"registry:block","title":"Accessible Packaging Card","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/accessible-packaging-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/accessible-packaging-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Box opens without tools, large print and braille care cards on request, for four named products in stock."},{"name":"ecommerce-pro-accessibility-sections-accessible-returns-flow","type":"registry:block","title":"Accessible Returns Flow","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/accessible-returns-flow.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/accessible-returns-flow.tsx"}],"description":"Four numbered return steps covering keyboard start, label free drop off, courier pickup, and readable refund emails, over a paused window strip."},{"name":"ecommerce-pro-accessibility-sections-assisted-ordering-options","type":"registry:block","title":"Assisted Ordering Options","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/assisted-ordering-options.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/assisted-ordering-options.tsx"}],"description":"Three bordered channel cards for phone, email, and relay ordering with hours and reply promises, above a parity strip naming the team.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-accessibility-sections-captioned-product-videos","type":"registry:block","title":"Captioned Product Videos","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/captioned-product-videos.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/captioned-product-videos.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Video player mockup with caption bar and timestamped transcript rows beside four checked standards for captions, transcripts, and audio description.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-accessibility-sections-checkout-without-time-limits","type":"registry:block","title":"Checkout Without Time Limits","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/checkout-without-time-limits.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/checkout-without-time-limits.tsx"}],"description":"Three checked promises that nothing expires mid checkout beside a static session panel showing saved rows after an overnight pause.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-accessibility-sections-display-preferences-panel","type":"registry:block","title":"Display Preferences Panel","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/display-preferences-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/display-preferences-panel.tsx"}],"description":"Static display settings card with text size, motion, contrast, and link underline rows beside three checked promises about persistence.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-accessibility-sections-in-store-accessibility","type":"registry:block","title":"In Store Accessibility","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/in-store-accessibility.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/in-store-accessibility.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Divided list of three stores with checked access features beside an assisted visit booking card, over a corrections strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-accessibility-sections-independent-audit-results","type":"registry:block","title":"Independent Audit Results","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/independent-audit-results.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/independent-audit-results.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Audit method card with firm, testers, scope, and totals beside four WCAG principle rows of found and fixed counts, over a retest strip.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-accessibility-sections-keyboard-and-screen-reader-guide","type":"registry:block","title":"Keyboard And Screen Reader Guide","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/keyboard-and-screen-reader-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/keyboard-and-screen-reader-guide.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Real keyboard paths for search, cart, and checkout, rough edges named, and a direct developer inbox.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-accessibility-sections-written-product-descriptions","type":"registry:block","title":"Written Product Descriptions","files":[{"path":"components/blocks/ecommerce-pro/accessibility-sections/written-product-descriptions.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/accessibility-sections/written-product-descriptions.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four written description standards in a divided list beside an annotated product panel printing its alt text and spec rows in full."},{"name":"ecommerce-pro-account-sections-account-overview-dashboard","type":"registry:block","title":"Account Overview Dashboard","files":[{"path":"components/blocks/ecommerce-pro/account-sections/account-overview-dashboard.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/account-overview-dashboard.tsx"}],"description":"Next delivery, guarantee clocks, credit balance, and subscription as four linked cards, none a feed.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-account-sections-account-overview-tiles","type":"registry:block","title":"Account Overview Tiles","files":[{"path":"components/blocks/ecommerce-pro/account-sections/account-overview-tiles.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/account-overview-tiles.tsx"}],"description":"The account dashboard where every tile reports a live fact instead of a label.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-account-sections-account-security-card","type":"registry:block","title":"Account Security Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/account-security-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/account-security-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Passkey first, password demoted, sessions visible with sign out everywhere.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-data-privacy-controls","type":"registry:block","title":"Data Privacy Controls","files":[{"path":"components/blocks/ecommerce-pro/account-sections/data-privacy-controls.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/data-privacy-controls.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"View, download, and delete as buttons, generated on the spot, no support form.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-download-your-data-card","type":"registry:block","title":"Download Your Data Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/download-your-data-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/download-your-data-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"One button, the export by email in minutes, with contents and absences listed honestly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-email-history-log","type":"registry:block","title":"Email History Log","files":[{"path":"components/blocks/ecommerce-pro/account-sections/email-history-log.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/email-history-log.tsx"}],"description":"Every email sent to this account as a dated list, each row naming the reason it was sent."},{"name":"ecommerce-pro-account-sections-fit-profile-card","type":"registry:block","title":"Fit Profile Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/fit-profile-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/fit-profile-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Confirmed sizes per category with fit notes in a panel, beside plain rules on what the profile changes and never touches.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-account-sections-guarantee-registrations-list","type":"registry:block","title":"Guarantee Registrations List","files":[{"path":"components/blocks/ecommerce-pro/account-sections/guarantee-registrations-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/guarantee-registrations-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Every owned product with its guarantee clock, expired ones kept for the bench.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-account-sections-household-accounts-card","type":"registry:block","title":"Household Accounts Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/household-accounts-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/household-accounts-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two adults, one address, separate logins and wishlists, shared history by consent, one membership."},{"name":"ecommerce-pro-account-sections-invoices-documents-panel","type":"registry:block","title":"Invoices and Documents Panel","files":[{"path":"components/blocks/ecommerce-pro/account-sections/invoices-documents-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/invoices-documents-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Invoices, a credit note, and a yearly statement as download rows, with editable billing details that print on every future invoice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-loyalty-points-card","type":"registry:block","title":"Loyalty Points Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/loyalty-points-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/loyalty-points-card.tsx"}],"description":"Store credit in dollars with a plain ledger, money not points, never expires."},{"name":"ecommerce-pro-account-sections-notification-preferences","type":"registry:block","title":"Notification Preferences","files":[{"path":"components/blocks/ecommerce-pro/account-sections/notification-preferences.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/notification-preferences.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Every email type on a working switch with honest cadence, locked rows explained.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-account-sections-notification-preferences-panel","type":"registry:block","title":"Notification Preferences Panel","files":[{"path":"components/blocks/ecommerce-pro/account-sections/notification-preferences-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/notification-preferences-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"Topic and channel checkboxes with marketing off by default and order updates locked on with the reason.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-order-again-grid","type":"registry:block","title":"Order Again Grid","files":[{"path":"components/blocks/ecommerce-pro/account-sections/order-again-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/order-again-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Consumables sorted by what runs out, the bag listed with anti rebuy advice.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-account-sections-order-history-list","type":"registry:block","title":"Order History List","files":[{"path":"components/blocks/ecommerce-pro/account-sections/order-history-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/order-history-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Past orders with state matched actions, track, buy again, and the return kept visible.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-account-sections-payment-methods-list","type":"registry:block","title":"Payment Methods List","files":[{"path":"components/blocks/ecommerce-pro/account-sections/payment-methods-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/payment-methods-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Saved cards with expiry warnings and the storage honesty line up front.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-product-reviews-panel","type":"registry:block","title":"Product Reviews Panel","files":[{"path":"components/blocks/ecommerce-pro/account-sections/product-reviews-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/product-reviews-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Delivered items waiting on a review beside published ones with stars, edit and delete in your hands, no coupons for praise.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-referral-dashboard-card","type":"registry:block","title":"Referral Dashboard Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/referral-dashboard-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/referral-dashboard-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Both get $15 in dollars, not points, with a ledger including the honest zero.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-account-sections-returns-refunds-tracker","type":"registry:block","title":"Returns and Refunds Tracker","files":[{"path":"components/blocks/ecommerce-pro/account-sections/returns-refunds-tracker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/returns-refunds-tracker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Open returns as cards with a four stage progress line, refund amount and destination named, and the carrier scan clock explained.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-account-sections-saved-addresses-cards","type":"registry:block","title":"Saved Addresses Cards","files":[{"path":"components/blocks/ecommerce-pro/account-sections/saved-addresses-cards.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/saved-addresses-cards.tsx"}],"description":"Labeled address cards with courier notes that travel with every order.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-account-sections-saved-payment-methods-panel","type":"registry:block","title":"Saved Payment Methods Panel","files":[{"path":"components/blocks/ecommerce-pro/account-sections/saved-payment-methods-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/saved-payment-methods-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Saved cards as token rows with the processor architecture explained and the no silent save footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-store-credit-wallet","type":"registry:block","title":"Store Credit Wallet","files":[{"path":"components/blocks/ecommerce-pro/account-sections/store-credit-wallet.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/store-credit-wallet.tsx"}],"description":"Balance, dated ledger, and the three rules that make credit behave like cash the store owes you."},{"name":"ecommerce-pro-account-sections-subscription-management","type":"registry:block","title":"Subscription Management","files":[{"path":"components/blocks/ecommerce-pro/account-sections/subscription-management.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/subscription-management.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Skip, pause, swap at equal weight, cancel visible, no exit interview.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-wishlist-grid","type":"registry:block","title":"Wishlist Grid","files":[{"path":"components/blocks/ecommerce-pro/account-sections/wishlist-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/wishlist-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Saved items with price drop and restock notes, a wishlist that watches for you.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-account-sections-your-impact-card","type":"registry:block","title":"Your Impact Card","files":[{"path":"components/blocks/ecommerce-pro/account-sections/your-impact-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/account-sections/your-impact-card.tsx"}],"description":"The personal ledger of seven years with us: bags, repairs, a trade in, and zero replacements bought."},{"name":"ecommerce-pro-archive-sections-archive-wall-page","type":"registry:block","title":"Archive Wall Page","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/archive-wall-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/archive-wall-page.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The physical archive wall at the workshop: 64 pieces, Friday visits, and nothing on it for sale."},{"name":"ecommerce-pro-archive-sections-bring-back-ballot","type":"registry:block","title":"Bring Back Ballot","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/bring-back-ballot.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/bring-back-ballot.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An interactive reissue ballot with three retired candidates, honest retirement notes, live vote bars, and a single vote button per row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-archive-sections-catalog-scans-gallery","type":"registry:block","title":"Catalog Scans Gallery","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/catalog-scans-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/catalog-scans-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four dated pieces of printed matter across eleven years, the price rise letter kept public among them."},{"name":"ecommerce-pro-archive-sections-colorway-index","type":"registry:block","title":"Colorway Index","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/colorway-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/colorway-index.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"An archive table of every colorway ever sold with years, units made, live or retired badges, and the honest note behind each retirement.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-archive-sections-discontinued-graveyard","type":"registry:block","title":"Discontinued Graveyard","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/discontinued-graveyard.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/discontinued-graveyard.tsx"}],"description":"Three retired products with the honest reason each died and the parts pledge that outlives them."},{"name":"ecommerce-pro-archive-sections-first-bag-story","type":"registry:block","title":"First Bag Story","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/first-bag-story.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/first-bag-story.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A 2015 origin letter: eight bags sewn at a kitchen table with 90 percent of that pattern unchanged today."},{"name":"ecommerce-pro-archive-sections-pattern-changelog","type":"registry:block","title":"Pattern Changelog","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/pattern-changelog.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/pattern-changelog.tsx"}],"description":"A ruled revision timeline of the flagship pattern with version chips, beside a bordered panel listing everything unchanged since the first batch."},{"name":"ecommerce-pro-archive-sections-prototype-museum","type":"registry:block","title":"Prototype Museum","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/prototype-museum.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/prototype-museum.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four failed prototypes kept on purpose, each photographed with the failure and the lesson it left."},{"name":"ecommerce-pro-archive-sections-serial-lookup-card","type":"registry:block","title":"Serial Lookup Card","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/serial-lookup-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/serial-lookup-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Type a bag serial and its full history appears: made date, repairs, resale, and guarantee status.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-archive-sections-still-in-service","type":"registry:block","title":"Still in Service","files":[{"path":"components/blocks/ecommerce-pro/archive-sections/still-in-service.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/archive-sections/still-in-service.tsx"}],"description":"Three registry cards for the oldest bags in daily use, each led by a big years count with serial, service rows, and an owner line."},{"name":"ecommerce-pro-banners-and-alerts-announcement-with-details","type":"registry:block","title":"Announcement With Details","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/announcement-with-details.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/announcement-with-details.tsx"}],"description":"A headline band with a static open details row for announcements that one line cannot contain honestly.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-back-in-stock-banner","type":"registry:block","title":"Back In Stock Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/back-in-stock-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/back-in-stock-banner.tsx"}],"description":"The June batch landed, 140 units live, and an honest pace estimate so buyers know the real window.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-cookie-consent-bar","type":"registry:block","title":"Cookie Consent Bar","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/cookie-consent-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/cookie-consent-bar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two cookies named, zero tracking confirmed, with Accept and Decline at equal visual weight.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-banners-and-alerts-counterfeit-warning-banner","type":"registry:block","title":"Counterfeit Warning Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/counterfeit-warning-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/counterfeit-warning-banner.tsx"}],"description":"A card splitting the three places we actually sell against the channels that are never us, plus the serial check link.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-free-shipping-threshold-bar","type":"registry:block","title":"Free Shipping Threshold Bar","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/free-shipping-threshold-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/free-shipping-threshold-bar.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"The $6 flat rate and $75 free line stated as the entire rule, with a slim progress track showing the cart at $62.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-banners-and-alerts-holiday-cutoff-banner","type":"registry:block","title":"Holiday Cutoff Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/holiday-cutoff-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/holiday-cutoff-banner.tsx"}],"description":"December 24 delivery cutoffs as plain calendar dates for two service levels, no countdown timers.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-price-error-apology-banner","type":"registry:block","title":"Price Error Apology Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/price-error-apology-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/price-error-apology-banner.tsx"}],"description":"A June 8 mispricing owned in the headline, a three row timestamped account, and all 23 wrong price orders shipping as placed.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-price-rise-preannounce-banner","type":"registry:block","title":"Price Rise Preannounce Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/price-rise-preannounce-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/price-rise-preannounce-banner.tsx"}],"description":"Four canvas products repricing July 1 announced three weeks early as a courtesy window, not a sales push.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-product-recall-notice","type":"registry:block","title":"Product Recall Notice","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/product-recall-notice.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/product-recall-notice.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A recall card naming the valve fault, affected batch codes as mono pills, the unaffected batches, and return label actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-banners-and-alerts-service-status-banner","type":"registry:block","title":"Service Status Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/service-status-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/service-status-banner.tsx"}],"description":"Repair bench paused until June 15 with the mechanical reason published and the full scope of what holds.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-banners-and-alerts-shipping-delay-banner","type":"registry:block","title":"Shipping Delay Banner","files":[{"path":"components/blocks/ecommerce-pro/banners-and-alerts/shipping-delay-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/banners-and-alerts/shipping-delay-banner.tsx"}],"description":"A carrier disruption dated and scoped, standard delayed two days this week with express confirmed unaffected.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-brand-story-sections-brand-timeline","type":"registry:block","title":"Brand Timeline","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/brand-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/brand-timeline.tsx"}],"description":"The company history as dated rows, the near collapse year kept in."},{"name":"ecommerce-pro-brand-story-sections-decade-timeline","type":"registry:block","title":"Decade Timeline","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/decade-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/decade-timeline.tsx"}],"description":"Eleven years in ruled rows, bad years kept in, because a timeline of only wins is marketing."},{"name":"ecommerce-pro-brand-story-sections-design-principles-list","type":"registry:block","title":"Design Principles List","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/design-principles-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/design-principles-list.tsx"}],"description":"Four product rules, each proven by the decision it most recently forced."},{"name":"ecommerce-pro-brand-story-sections-factory-partners-list","type":"registry:block","title":"Factory Partners List","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/factory-partners-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/factory-partners-list.tsx"}],"description":"Who makes what, where, with maker counts, median tenure, and audit dates."},{"name":"ecommerce-pro-brand-story-sections-first-product-story","type":"registry:block","title":"First Product Story","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/first-product-story.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/first-product-story.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The catalog's first product beside every dated revision it survived, each row naming the failure that forced it."},{"name":"ecommerce-pro-brand-story-sections-founder-letter","type":"registry:block","title":"Founder Letter","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/founder-letter.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/founder-letter.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"The origin story as signed prose with one number per claim and a dated signature.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-brand-story-sections-made-in-numbers","type":"registry:block","title":"Made In Numbers","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/made-in-numbers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/made-in-numbers.tsx"}],"description":"The brand as six stat tiles, including the numbers a conventional brand would hide."},{"name":"ecommerce-pro-brand-story-sections-makers-roster","type":"registry:block","title":"Makers Roster","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/makers-roster.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/makers-roster.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Six named makers with avatars, bench, city, and tenure, each owning one checkable fact about the work they do.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-brand-story-sections-materials-provenance-rows","type":"registry:block","title":"Materials Provenance Rows","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/materials-provenance-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/materials-provenance-rows.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four inputs with suppliers named to the city, tenure, and one audit grade fact each."},{"name":"ecommerce-pro-brand-story-sections-numbers-we-track-card","type":"registry:block","title":"Numbers We Track Card","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/numbers-we-track-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/numbers-we-track-card.tsx"}],"description":"Four KPIs published with the reason each earns its place, including the one the store refuses to optimize."},{"name":"ecommerce-pro-brand-story-sections-open-questions-card","type":"registry:block","title":"Open Questions Card","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/open-questions-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/open-questions-card.tsx"}],"description":"Three unresolved decisions posted publicly with where the thinking sits."},{"name":"ecommerce-pro-brand-story-sections-price-breakdown-rows","type":"registry:block","title":"Price Breakdown Rows","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/price-breakdown-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/price-breakdown-rows.tsx"}],"description":"One product's retail price split into cost rows with proportion bars, a note per line, and the margin admitted."},{"name":"ecommerce-pro-brand-story-sections-refusals-grid","type":"registry:block","title":"Refusals Grid","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/refusals-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/refusals-grid.tsx"}],"description":"Six standing refusals of common store tactics in a card grid, each dated and priced with what holding the line costs."},{"name":"ecommerce-pro-brand-story-sections-supply-chain-list","type":"registry:block","title":"Supply Chain List","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/supply-chain-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/supply-chain-list.tsx"}],"description":"Every supplier named with place and tenure, plus the one we left and why."},{"name":"ecommerce-pro-brand-story-sections-why-we-exist-prose","type":"registry:block","title":"Why We Exist Prose","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/why-we-exist-prose.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/why-we-exist-prose.tsx"}],"description":"The manifesto with its thesis at display weight and one number per argument."},{"name":"ecommerce-pro-brand-story-sections-workshop-photo-essay","type":"registry:block","title":"Workshop Photo Essay","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/workshop-photo-essay.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/workshop-photo-essay.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Six workshop frames in a 3x2 grid, each captioned like a photo essay, no people, just the room."},{"name":"ecommerce-pro-brand-story-sections-workshop-tour-gallery","type":"registry:block","title":"Workshop Tour Gallery","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/workshop-tour-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/workshop-tour-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Five captioned frames from the making floor where the captions are the tour."},{"name":"ecommerce-pro-brand-story-sections-year-in-review-letter","type":"registry:block","title":"Year In Review Letter","files":[{"path":"components/blocks/ecommerce-pro/brand-story-sections/year-in-review-letter.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/brand-story-sections/year-in-review-letter.tsx"}],"description":"The founder's annual letter with the bad paragraph priced and signed."},{"name":"ecommerce-pro-buying-advice-sections-ask-before-you-buy","type":"registry:block","title":"Ask Before You Buy","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/ask-before-you-buy.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/ask-before-you-buy.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Accordion of five honest questions asked before checkout, first item opened, each answer printed even where it costs the sale.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-buying-advice-sections-break-in-expectations","type":"registry:block","title":"Break In Expectations","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/break-in-expectations.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/break-in-expectations.tsx"}],"description":"Four ruled stage columns walk week one through year five of canvas break in, closed by a straight note on the return window."},{"name":"ecommerce-pro-buying-advice-sections-buy-once-math-card","type":"registry:block","title":"Buy Once Math Card","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/buy-once-math-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/buy-once-math-card.tsx"}],"description":"Two mono ledgers show the decade math at $21.50 a year versus $36, caveats printed beside the sums."},{"name":"ecommerce-pro-buying-advice-sections-do-you-need-it-checklist","type":"registry:block","title":"Do You Need It Checklist","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/do-you-need-it-checklist.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/do-you-need-it-checklist.tsx"}],"description":"Three numbered honest questions before the buy, boredom named, the bench ready to talk you out of it."},{"name":"ecommerce-pro-buying-advice-sections-honest-alternatives-guide","type":"registry:block","title":"Honest Alternatives Guide","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/honest-alternatives-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/honest-alternatives-guide.tsx"}],"description":"Four jobs the store loses at, each card naming the winner and the reason, closed by what is left."},{"name":"ecommerce-pro-buying-advice-sections-repair-or-replace-path","type":"registry:block","title":"Repair Or Replace Path","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/repair-or-replace-path.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/repair-or-replace-path.tsx"}],"description":"Three numbered failure questions each branch into yes and no outcomes, closed by the bench's photo triage counts from last year."},{"name":"ecommerce-pro-buying-advice-sections-second-bag-advice-card","type":"registry:block","title":"Second Bag Advice Card","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/second-bag-advice-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/second-bag-advice-card.tsx"}],"description":"Three verdict rules backed by support log counts, 184 of 312 second bag inquiries routed to a repair."},{"name":"ecommerce-pro-buying-advice-sections-what-the-bench-carries","type":"registry:block","title":"What The Bench Carries","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/what-the-bench-carries.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/what-the-bench-carries.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three repair bench staff cards with avatar headers, the size each carries, the reason, and a ruled wear report footer.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-buying-advice-sections-when-not-to-buy-from-us","type":"registry:block","title":"When Not To Buy From Us","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/when-not-to-buy-from-us.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/when-not-to-buy-from-us.tsx"}],"description":"Four ruled rows naming who wins instead, each a genuine disqualifier with the better option printed."},{"name":"ecommerce-pro-buying-advice-sections-when-to-buy-timeline","type":"registry:block","title":"When To Buy Timeline","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/when-to-buy-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/when-to-buy-timeline.tsx"}],"description":"Vertical timeline of four honest purchase windows, each with a bordered price pill and straight advice, closed by a printed footnote."},{"name":"ecommerce-pro-buying-advice-sections-which-size-to-buy","type":"registry:block","title":"Which Size To Buy","files":[{"path":"components/blocks/ecommerce-pro/buying-advice-sections/which-size-to-buy.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/buying-advice-sections/which-size-to-buy.tsx"}],"description":"Two size columns compare specs, weight, and honest use cases, closed by an exchange ledger verdict favoring the smaller pack."},{"name":"ecommerce-pro-category-sections-alphabetical-index","type":"registry:block","title":"Alphabetical Index","files":[{"path":"components/blocks/ecommerce-pro/category-sections/alphabetical-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/alphabetical-index.tsx"}],"description":"The whole catalog as a lettered text directory for visits that know the name."},{"name":"ecommerce-pro-category-sections-archive-and-seconds-band","type":"registry:block","title":"Archive And Seconds Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/archive-and-seconds-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/archive-and-seconds-band.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two outlet tiles, seconds with named flaws and resale archive graded, each with an honest count.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-category-sections-bestsellers-by-category","type":"registry:block","title":"Bestsellers By Category","files":[{"path":"components/blocks/ecommerce-pro/category-sections/bestsellers-by-category.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/bestsellers-by-category.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four aisle cards each led by the single item bought first most often, with units shipped, a price, and one honest line."},{"name":"ecommerce-pro-category-sections-capacity-ladder-band","type":"registry:block","title":"Capacity Ladder Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/capacity-ladder-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/capacity-ladder-band.tsx"}],"description":"Packs sorted by liters on proportional bars, four ruled rungs with counts and one line on what each size swallows."},{"name":"ecommerce-pro-category-sections-category-comparison-table","type":"registry:block","title":"Category Comparison Table","files":[{"path":"components/blocks/ecommerce-pro/category-sections/category-comparison-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/category-comparison-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Three bag families compared in one table across price, fabric, weight, and laptop room, since shape is the real decision."},{"name":"ecommerce-pro-category-sections-category-stats-tiles","type":"registry:block","title":"Category Stats Tiles","files":[{"path":"components/blocks/ecommerce-pro/category-sections/category-stats-tiles.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/category-stats-tiles.tsx"}],"description":"Aisles as stat tiles with counts, price ranges, and one verifiable fact each."},{"name":"ecommerce-pro-category-sections-category-tiles-grid","type":"registry:block","title":"Category Tiles Grid","files":[{"path":"components/blocks/ecommerce-pro/category-sections/category-tiles-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/category-tiles-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Six aisles as image tiles with caption bars carrying counts and price floors.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-category-sections-category-with-buying-guide-band","type":"registry:block","title":"Category With Buying Guide Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/category-with-buying-guide-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/category-with-buying-guide-band.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A category grid with an inline buying guide that names which bag to buy first, by job, by name."},{"name":"ecommerce-pro-category-sections-circle-category-row","type":"registry:block","title":"Circle Category Row","files":[{"path":"components/blocks/ecommerce-pro/category-sections/circle-category-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/circle-category-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Aisles as round image chips in one scannable strip, the mobile commerce pattern."},{"name":"ecommerce-pro-category-sections-collection-list-rows","type":"registry:block","title":"Collection List Rows","files":[{"path":"components/blocks/ecommerce-pro/category-sections/collection-list-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/collection-list-rows.tsx"}],"description":"Capsules as ruled editorial rows with one written sentence and a piece count each.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-category-sections-gifting-tiles-row","type":"registry:block","title":"Gifting Tiles Row","files":[{"path":"components/blocks/ecommerce-pro/category-sections/gifting-tiles-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/gifting-tiles-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three recipient cuts with counts, and the gift card named as the no guess option."},{"name":"ecommerce-pro-category-sections-material-tiles-row","type":"registry:block","title":"Material Tiles Row","files":[{"path":"components/blocks/ecommerce-pro/category-sections/material-tiles-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/material-tiles-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Browse by material, each tile with its source and product count."},{"name":"ecommerce-pro-category-sections-new-vs-classics-band","type":"registry:block","title":"New Vs Classics Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/new-vs-classics-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/new-vs-classics-band.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The drop against the permanent range, two kinds of buying explained.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-category-sections-occasion-tiles","type":"registry:block","title":"Occasion Tiles","files":[{"path":"components/blocks/ecommerce-pro/category-sections/occasion-tiles.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/occasion-tiles.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The catalog cut by life situation, categories are for warehouses."},{"name":"ecommerce-pro-category-sections-seasonal-category-band","type":"registry:block","title":"Seasonal Category Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/seasonal-category-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/seasonal-category-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One card, one season, a wide image beside the edit with a credible curator named.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-category-sections-seasonal-rotation-band","type":"registry:block","title":"Seasonal Rotation Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/seasonal-rotation-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/seasonal-rotation-band.tsx"}],"description":"The two drop calendar with March batches, September heavy canvas, and the permanent range constant below."},{"name":"ecommerce-pro-category-sections-shop-all-band","type":"registry:block","title":"Shop All Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/shop-all-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/shop-all-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The whole catalog on one ruled band with counts and price ranges.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-category-sections-shop-by-price-band","type":"registry:block","title":"Shop By Price Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/shop-by-price-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/shop-by-price-band.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three wide tiles cutting the range by budget with real item counts and one line of what lives in each band."},{"name":"ecommerce-pro-category-sections-shop-by-price-bands","type":"registry:block","title":"Shop By Price Bands","files":[{"path":"components/blocks/ecommerce-pro/category-sections/shop-by-price-bands.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/shop-by-price-bands.tsx"}],"description":"Budget as navigation, three bands with counts and the same guarantee at every price."},{"name":"ecommerce-pro-category-sections-tabbed-category-preview","type":"registry:block","title":"Tabbed Category Preview","files":[{"path":"components/blocks/ecommerce-pro/category-sections/tabbed-category-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/tabbed-category-preview.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"One tab per aisle, each panel previewing three products with prices, an honest aisle line, and a shop all link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-category-sections-three-tile-feature","type":"registry:block","title":"Three Tile Feature","files":[{"path":"components/blocks/ecommerce-pro/category-sections/three-tile-feature.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/three-tile-feature.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One tall lead category beside two stacked tiles, traffic steered by area."},{"name":"ecommerce-pro-category-sections-use-case-category-band","type":"registry:block","title":"Use Case Category Band","files":[{"path":"components/blocks/ecommerce-pro/category-sections/use-case-category-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/use-case-category-band.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three job tiles with counts and one honest line each plus the admission that most bags do two jobs fine."},{"name":"ecommerce-pro-category-sections-with-banner-tile","type":"registry:block","title":"With Banner Tile","files":[{"path":"components/blocks/ecommerce-pro/category-sections/with-banner-tile.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/with-banner-tile.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four category tiles plus one solid banner tile carrying the month's single message.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-address-validation-helper","type":"registry:block","title":"Address Validation Helper","files":[{"path":"components/blocks/ecommerce-pro/checkouts/address-validation-helper.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/address-validation-helper.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Your spelling beside the database's, differences bolded, keep mine respected.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-billing-address-toggle","type":"registry:block","title":"Billing Address Toggle","files":[{"path":"components/blocks/ecommerce-pro/checkouts/billing-address-toggle.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/billing-address-toggle.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A working switch keeps billing matched to shipping or reveals the full billing form, with the decline warning that explains why banks care.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-business-purchase-checkout","type":"registry:block","title":"Business Purchase Checkout","files":[{"path":"components/blocks/ecommerce-pro/checkouts/business-purchase-checkout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/business-purchase-checkout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Company, VAT, and invoice fields with the EU reverse charge mechanics and VIES fallback stated honestly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-delivery-date-picker","type":"registry:block","title":"Delivery Date Picker","files":[{"path":"components/blocks/ecommerce-pro/checkouts/delivery-date-picker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/delivery-date-picker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pick the arrival day from real options, same price any day, holidays shown honestly.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-delivery-notes-step","type":"registry:block","title":"Delivery Notes Step","files":[{"path":"components/blocks/ecommerce-pro/checkouts/delivery-notes-step.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/delivery-notes-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Driver note field with safe place chips and the honest limit that notes land about 90% of the time.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-duties-and-taxes-step","type":"registry:block","title":"Duties And Taxes Step","files":[{"path":"components/blocks/ecommerce-pro/checkouts/duties-and-taxes-step.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/duties-and-taxes-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"International checkout choosing prepaid import charges or courier collection at the door, both totals shown and the handling fee stated honestly.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-express-checkout-wall","type":"registry:block","title":"Express Checkout Wall","files":[{"path":"components/blocks/ecommerce-pro/checkouts/express-checkout-wall.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/express-checkout-wall.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Wallet buttons stacked full width first with the measured 40 second reason stated, card form collapsed below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-express-pay-buttons","type":"registry:block","title":"Express Pay Buttons","files":[{"path":"components/blocks/ecommerce-pro/checkouts/express-pay-buttons.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/express-pay-buttons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The wallet stack above an equal card path, same price either way stated plainly.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-gift-receipt-toggle-step","type":"registry:block","title":"Gift Receipt Toggle Step","files":[{"path":"components/blocks/ecommerce-pro/checkouts/gift-receipt-toggle-step.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/gift-receipt-toggle-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A working switch flips the order to gift mode and re-renders both slip states as a live checklist.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-guest-or-account-choice","type":"registry:block","title":"Guest Or Account Choice","files":[{"path":"components/blocks/ecommerce-pro/checkouts/guest-or-account-choice.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/guest-or-account-choice.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"The fork without a thumb on the scale, guest first, account earning its column with perks.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-installment-plan-choice","type":"registry:block","title":"Installment Plan Choice","files":[{"path":"components/blocks/ecommerce-pro/checkouts/installment-plan-choice.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/installment-plan-choice.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Pay in full, four payments, or twelve months as selectable rows, the written schedule re-renders live and the costlier option admits it.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-invoice-details-form","type":"registry:block","title":"Invoice Details Form","files":[{"path":"components/blocks/ecommerce-pro/checkouts/invoice-details-form.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/invoice-details-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Company, VAT with reverse charge, PO, and cost center, asked once for the PDF.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-multi-step-checkout","type":"registry:block","title":"Multi Step Checkout","files":[{"path":"components/blocks/ecommerce-pro/checkouts/multi-step-checkout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/multi-step-checkout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"The three stage flow mid journey with editable recaps and a stepper without color dependence.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-one-page-checkout","type":"registry:block","title":"One Page Checkout","files":[{"path":"components/blocks/ecommerce-pro/checkouts/one-page-checkout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/one-page-checkout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Contact, shipping, and payment in one visible column, nine fields, no account required.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-order-confirmation-page","type":"registry:block","title":"Order Confirmation Page","files":[{"path":"components/blocks/ecommerce-pro/checkouts/order-confirmation-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/order-confirmation-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The thank you with the window, a live cancel countdown, and the account ask after.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-order-for-someone-else-step","type":"registry:block","title":"Order For Someone Else Step","files":[{"path":"components/blocks/ecommerce-pro/checkouts/order-for-someone-else-step.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/order-for-someone-else-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Their address and phone, your payment, every email routed per line and the gift flag consequences listed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-order-review-step","type":"registry:block","title":"Order Review Step","files":[{"path":"components/blocks/ecommerce-pro/checkouts/order-review-step.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/order-review-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three editable ruled sections plus a pay button that promises to charge exactly the number printed on it.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-order-summary-sidebar","type":"registry:block","title":"Order Summary Sidebar","files":[{"path":"components/blocks/ecommerce-pro/checkouts/order-summary-sidebar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/order-summary-sidebar.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The checkout companion panel with quantity badges and totals that explain themselves."},{"name":"ecommerce-pro-checkouts-payment-failed-recovery","type":"registry:block","title":"Payment Failed Recovery","files":[{"path":"components/blocks/ecommerce-pro/checkouts/payment-failed-recovery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/payment-failed-recovery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The decline without shame, three ways forward and the cart held.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-payment-form-section","type":"registry:block","title":"Payment Form Section","files":[{"path":"components/blocks/ecommerce-pro/checkouts/payment-form-section.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/payment-form-section.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Card fields beside a panel answering where the numbers actually go.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-pickup-point-selector","type":"registry:block","title":"Pickup Point Selector","files":[{"path":"components/blocks/ecommerce-pro/checkouts/pickup-point-selector.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/pickup-point-selector.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Home, locker, or shop with real prices, the courier saving passed on.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-promo-code-step","type":"registry:block","title":"Promo Code Step","files":[{"path":"components/blocks/ecommerce-pro/checkouts/promo-code-step.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/promo-code-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A working code field that applies live, adds the discount line, reprices the pay button, and states plainly what codes exclude.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-quote-to-checkout","type":"registry:block","title":"Quote To Checkout","files":[{"path":"components/blocks/ecommerce-pro/checkouts/quote-to-checkout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/quote-to-checkout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Trade quote as a review screen with locked prices honored, Net 30 or card, a PO field and one button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-returning-customer-checkout","type":"registry:block","title":"Returning Customer Checkout","files":[{"path":"components/blocks/ecommerce-pro/checkouts/returning-customer-checkout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/returning-customer-checkout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Prefilled address, delivery, and card from the last order as review rows with one pay button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-checkouts-review-and-place-order","type":"registry:block","title":"Review And Place Order","files":[{"path":"components/blocks/ecommerce-pro/checkouts/review-and-place-order.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/review-and-place-order.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Four editable recap cards above a button that says what it does and what it costs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-checkouts-shipping-options-list","type":"registry:block","title":"Shipping Options List","files":[{"path":"components/blocks/ecommerce-pro/checkouts/shipping-options-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/checkouts/shipping-options-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three speeds as selectable rows with real date windows, including the no rush option.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-comparison-tables-accessory-fit-matrix","type":"registry:block","title":"Accessory Fit Matrix","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/accessory-fit-matrix.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/accessory-fit-matrix.tsx"}],"description":"Compatibility matrix of five accessories against three bags with fits, fits with a named caveat, and no states plus a legend.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-comparison-tables-bag-size-side-by-side","type":"registry:block","title":"Bag Size Side By Side","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/bag-size-side-by-side.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/bag-size-side-by-side.tsx"}],"description":"Four bags drawn to one scale with SVG silhouettes and spec rows, the size answer photos never give."},{"name":"ecommerce-pro-comparison-tables-canvas-weight-comparison","type":"registry:block","title":"Canvas Weight Comparison","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/canvas-weight-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/canvas-weight-comparison.tsx"}],"description":"Three canvas weights judged row by row, the check moves, and the verdict row refuses to name a winner.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-comparison-tables-cost-per-year-table","type":"registry:block","title":"Cost Per Year Table","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/cost-per-year-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/cost-per-year-table.tsx"}],"description":"Cumulative ten year spend on a cheap bag replaced against one bag repaired, ending in per year math and a caveat."},{"name":"ecommerce-pro-comparison-tables-good-better-best-cards","type":"registry:block","title":"Good Better Best Cards","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/good-better-best-cards.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/good-better-best-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three material tiers with what the extra money buys stated per step.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-comparison-tables-leather-vs-vegan-table","type":"registry:block","title":"Leather Vs Vegan Table","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/leather-vs-vegan-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/leather-vs-vegan-table.tsx"}],"description":"Bridle leather against waxed cotton across six rows where each column wins real rows and one is a draw.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-comparison-tables-material-comparison-table","type":"registry:block","title":"Material Comparison Table","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/material-comparison-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/material-comparison-table.tsx"}],"description":"Three materials judged row by row with the check moving and the verdict refusing to crown any one winner.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-comparison-tables-model-comparison-table","type":"registry:block","title":"Model Comparison Table","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/model-comparison-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/model-comparison-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The product family side by side with four number rows and a best for verdict.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-comparison-tables-new-vs-refurb-vs-seconds-table","type":"registry:block","title":"New Vs Refurb Vs Seconds Table","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/new-vs-refurb-vs-seconds-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/new-vs-refurb-vs-seconds-table.tsx"}],"description":"One bag at three honest price points, new, refurbished, and second, with the guarantee row identical."},{"name":"ecommerce-pro-comparison-tables-old-vs-new-generation","type":"registry:block","title":"Old Vs New Generation","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/old-vs-new-generation.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/old-vs-new-generation.tsx"}],"description":"The v2 against the v1 including what did not change, upgrade advice, no mostly."},{"name":"ecommerce-pro-comparison-tables-size-variant-comparison","type":"registry:block","title":"Size Variant Comparison","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/size-variant-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/size-variant-comparison.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three sizes with relatively scaled images and packed lists instead of liters."},{"name":"ecommerce-pro-comparison-tables-spec-side-by-side","type":"registry:block","title":"Spec Side By Side","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/spec-side-by-side.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/spec-side-by-side.tsx"}],"description":"Two products dueled with differences emphasized and sameness admitted."},{"name":"ecommerce-pro-comparison-tables-upkeep-comparison-cards","type":"registry:block","title":"Upkeep Comparison Cards","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/upkeep-comparison-cards.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/upkeep-comparison-cards.tsx"}],"description":"Three materials compared by minutes of care per year, the ritual itself with cadences, and what skipping it costs."},{"name":"ecommerce-pro-comparison-tables-us-vs-them-table","type":"registry:block","title":"Us Vs Them Table","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/us-vs-them-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/us-vs-them-table.tsx"}],"description":"Our pack against the big label equivalent in grouped rows, losses printed first, wins second, and one honest draw."},{"name":"ecommerce-pro-comparison-tables-which-one-guide","type":"registry:block","title":"Which One Guide","files":[{"path":"components/blocks/ecommerce-pro/comparison-tables/which-one-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/comparison-tables/which-one-guide.tsx"}],"description":"The decision written like advice, four situations routed to products with reasons."},{"name":"ecommerce-pro-contact-sections-contact-form-split","type":"registry:block","title":"Contact Form Split","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/contact-form-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/contact-form-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"The form beside who reads it, per topic reply times, and no ticket numbers.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-contact-sections-contact-routes-page","type":"registry:block","title":"Contact Routes Page","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/contact-routes-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/contact-routes-page.tsx"}],"description":"Four named inboxes with reply medians and the no phone line explained honestly.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-contact-sections-damaged-item-flow","type":"registry:block","title":"Damaged Item Flow","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/damaged-item-flow.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/damaged-item-flow.tsx"}],"description":"The photo is the claim, cheap items are replaced and kept, the 0.4% rate published."},{"name":"ecommerce-pro-contact-sections-how-to-complain-card","type":"registry:block","title":"How To Complain Card","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/how-to-complain-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/how-to-complain-card.tsx"}],"description":"The complaints route in three plain steps, plus the quarterly ledger of every complaint received and what each one changed."},{"name":"ecommerce-pro-contact-sections-live-chat-honesty-card","type":"registry:block","title":"Live Chat Honesty Card","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/live-chat-honesty-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/live-chat-honesty-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Why there is no chat bubble, in two paragraphs, with the one condition that could change the answer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-contact-sections-missing-parcel-flow","type":"registry:block","title":"Missing Parcel Flow","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/missing-parcel-flow.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/missing-parcel-flow.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Marked delivered, not there, in three steps with base rates and reship or refund.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-contact-sections-response-times-band","type":"registry:block","title":"Response Times Band","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/response-times-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/response-times-band.tsx"}],"description":"Support numbers published like specs, median reply, resolution rate, slowest day named."},{"name":"ecommerce-pro-contact-sections-send-it-to-the-bench-card","type":"registry:block","title":"Send It To The Bench Card","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/send-it-to-the-bench-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/send-it-to-the-bench-card.tsx"}],"description":"Repairs by post with no forms: a packing checklist beside a shipping label mockup where the note in the box is the ticket."},{"name":"ecommerce-pro-contact-sections-skip-the-queue-faq","type":"registry:block","title":"Skip The Queue FAQ","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/skip-the-queue-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/skip-the-queue-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The five questions that filled half of June's inbox as an accordion with ask counts, beside the case for writing anyway.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-contact-sections-visit-the-workshop-card","type":"registry:block","title":"Visit The Workshop Card","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/visit-the-workshop-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/visit-the-workshop-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Friday hours, one address, and the warning that it is a working workshop.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-contact-sections-who-has-the-inbox-card","type":"registry:block","title":"Who Has The Inbox Card","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/who-has-the-inbox-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/who-has-the-inbox-card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"The weekly support rota as a three person card, this week highlighted, with the handover ritual that keeps threads intact.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-contact-sections-write-to-the-founder-card","type":"registry:block","title":"Write To The Founder Card","files":[{"path":"components/blocks/ecommerce-pro/contact-sections/write-to-the-founder-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/write-to-the-founder-card.tsx"}],"description":"The elena@ inbox as a real channel: when it is read, what to send, and what the bench does with it.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-custom-orders-sections-canvas-run-splits","type":"registry:block","title":"Canvas Run Splits","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/canvas-run-splits.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/canvas-run-splits.tsx"}],"description":"The 80 meter mill minimum drawn as a two segment bar, your bags against the shelf run, over three past runs listed."},{"name":"ecommerce-pro-custom-orders-sections-custom-build-log","type":"registry:block","title":"Custom Build Log","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/custom-build-log.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/custom-build-log.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four finished custom builds with placeholder thumbs, the ask, an owner line, and a work, weeks, and paid meta row each."},{"name":"ecommerce-pro-custom-orders-sections-custom-or-shelf","type":"registry:block","title":"Custom Or Shelf","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/custom-or-shelf.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/custom-or-shelf.tsx"}],"description":"Three qualifying question cards with a shelf answer and a custom answer each, closed by the half of intake ends at the shelf bar."},{"name":"ecommerce-pro-custom-orders-sections-custom-order-intake","type":"registry:block","title":"Custom Order Intake","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/custom-order-intake.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/custom-order-intake.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Intake gate with three yes types, three decline types, and a published one in three acceptance rate.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-custom-orders-sections-custom-orders-faq","type":"registry:block","title":"Custom Orders Faq","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/custom-orders-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/custom-orders-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five intake inbox questions with the schedule and multiplier in them, first item opened.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-custom-orders-sections-custom-pricing-table","type":"registry:block","title":"Custom Pricing Table","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/custom-pricing-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/custom-pricing-table.tsx"}],"description":"Four custom work types priced in public, fleet runs at standard price, one off argued against."},{"name":"ecommerce-pro-custom-orders-sections-custom-queue-status","type":"registry:block","title":"Custom Queue Status","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/custom-queue-status.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/custom-queue-status.tsx"}],"description":"The custom bench queue published live, the current build named, scarcity stated as a schedule."},{"name":"ecommerce-pro-custom-orders-sections-made-to-measure-explainer","type":"registry:block","title":"Made To Measure Explainer","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/made-to-measure-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/made-to-measure-explainer.tsx"}],"description":"Four steps with real durations, the 1.6x multiplier itemized, and no return caveat before any form."},{"name":"ecommerce-pro-custom-orders-sections-monogram-gallery","type":"registry:block","title":"Monogram Gallery","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/monogram-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/monogram-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three initials styles priced by longevity, closed by the three character rule and its reason."},{"name":"ecommerce-pro-custom-orders-sections-pattern-remake-file","type":"registry:block","title":"Pattern Remake File","files":[{"path":"components/blocks/ecommerce-pro/custom-orders-sections/pattern-remake-file.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/custom-orders-sections/pattern-remake-file.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Split section pairing remake pricing at 1.1x with a static pattern record card of measurements, materials, and builds to date.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-back-in-stock-capture","type":"registry:block","title":"Back In Stock Capture","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/back-in-stock-capture.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/back-in-stock-capture.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Watch any sold out item, one email when it lands, then the address is deleted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-cart-reminder-opt-in","type":"registry:block","title":"Cart Reminder Opt In","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/cart-reminder-opt-in.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/cart-reminder-opt-in.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered consent card spelling out the single cart reminder as a four step timeline, from saved cart to deletion, above the email form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-drop-alerts-capture","type":"registry:block","title":"Drop Alerts Capture","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/drop-alerts-capture.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/drop-alerts-capture.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The release list sold on access, 48 hours early, four to six emails a year.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-drop-list-signup","type":"registry:block","title":"Drop List Signup","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/drop-list-signup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/drop-list-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The 48 hour head start explained as sequence not exclusivity, beside the last drop counted in four stats.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-first-order-offer-capture","type":"registry:block","title":"First Order Offer Capture","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/first-order-offer-capture.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/first-order-offer-capture.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The welcome discount as a page, not a popup, with terms in the open.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-newsletter-signup-band","type":"registry:block","title":"Newsletter Signup Band","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/newsletter-signup-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/newsletter-signup-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The monthly letter pitched with cadence, open rate, and unsubscribe speed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-newsletter-with-archive","type":"registry:block","title":"Newsletter With Archive","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/newsletter-with-archive.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/newsletter-with-archive.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The last three issues readable before sign up with both subscriber and unsubscribe counts published live.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-one-email-a-season-signup","type":"registry:block","title":"One Email A Season Signup","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/one-email-a-season-signup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/one-email-a-season-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The four email contract published above the field, with the open rate that earns it.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-preferences-first-signup","type":"registry:block","title":"Preferences First Signup","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/preferences-first-signup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/preferences-first-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Three topic checkboxes before the email field so consent is specific from the first send.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-price-drop-watch","type":"registry:block","title":"Price Drop Watch","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/price-drop-watch.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/price-drop-watch.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split price watch capture with a labeled email form beside a product card listing every price the item has ever held.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-sample-email-preview","type":"registry:block","title":"Sample Email Preview","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/sample-email-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/sample-email-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A card band pairing the signup form with last month's issue rendered as a static email, header rows, body, and footer included.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-sms-alerts-card","type":"registry:block","title":"Sms Alerts Card","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/sms-alerts-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/sms-alerts-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Three texts we send, the never list sworn, median 4 texts a year.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-email-capture-sections-unsubscribe-promise-card","type":"registry:block","title":"Unsubscribe Promise Card","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/unsubscribe-promise-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/unsubscribe-promise-card.tsx"}],"description":"Five email commitments naming the industry practices they refuse."},{"name":"ecommerce-pro-email-capture-sections-zero-tracking-signup","type":"registry:block","title":"Zero Tracking Signup","files":[{"path":"components/blocks/ecommerce-pro/email-capture-sections/zero-tracking-signup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/zero-tracking-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A capture section printing the entire stored record beside the list of tracking data never collected, with the labeled form beneath.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-account-signed-out-state","type":"registry:block","title":"Account Signed Out State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/account-signed-out-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/account-signed-out-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"The signed out account page selling sign in by what it unlocks.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-empty-states-category-sold-out-state","type":"registry:block","title":"Category Sold Out State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/category-sold-out-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/category-sold-out-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The whole category gone, the restock batch dated, and the alert signup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-compare-list-empty","type":"registry:block","title":"Compare List Empty","files":[{"path":"components/blocks/ecommerce-pro/empty-states/compare-list-empty.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/compare-list-empty.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An empty compare page blueprint with three dashed product slots above skeleton spec rows, a headline, and a primary action to add products.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-empty-cart-state","type":"registry:block","title":"Empty Cart State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/empty-cart-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/empty-cart-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The guilt free empty cart with three honest starting points.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-empty-wishlist-state","type":"registry:block","title":"Empty Wishlist State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/empty-wishlist-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/empty-wishlist-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The unused wishlist explained by what saving actually does, then two routes in.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-filter-no-results","type":"registry:block","title":"Filter No Results","files":[{"path":"components/blocks/ecommerce-pro/empty-states/filter-no-results.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/filter-no-results.tsx"}],"description":"Zero matches diagnosed, the one filter to loosen named with its count."},{"name":"ecommerce-pro-empty-states-notifications-empty-state","type":"registry:block","title":"Notifications Empty State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/notifications-empty-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/notifications-empty-state.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"An empty notifications inbox with a muted bell icon, a headline, and the full alert menu listed with live switches, all off until asked.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-order-history-empty-state","type":"registry:block","title":"Order History Empty State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/order-history-empty-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/order-history-empty-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Two honest reasons for an empty history, a guest order claim form inline, and no shopping push.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-reviews-empty-state","type":"registry:block","title":"Reviews Empty State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/reviews-empty-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/reviews-empty-state.tsx"}],"description":"The no reviews yet state for a new product with a bench take and the promise that critical ones stay.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-empty-states-rewards-empty-state","type":"registry:block","title":"Rewards Empty State","files":[{"path":"components/blocks/ecommerce-pro/empty-states/rewards-empty-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/rewards-empty-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A two column rewards layout with a zero balance headline, four ways to earn with point values, and a panel showing the reward ladder.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-search-no-results","type":"registry:block","title":"Search No Results","files":[{"path":"components/blocks/ecommerce-pro/empty-states/search-no-results.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/search-no-results.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A search dead end with a spelling correction and result count, three near miss product rows, and a footer to report a missing search.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-empty-states-store-404","type":"registry:block","title":"Store 404","files":[{"path":"components/blocks/ecommerce-pro/empty-states/store-404.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/empty-states/store-404.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The missing page owned plainly with search and the four most wanted routes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-events-sections-event-recap-gallery","type":"registry:block","title":"Event Recap Gallery","files":[{"path":"components/blocks/ecommerce-pro/events-sections/event-recap-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/event-recap-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Last clinic counted, including the two bags pronounced beyond saving."},{"name":"ecommerce-pro-events-sections-event-rsvp-form","type":"registry:block","title":"Event RSVP Form","files":[{"path":"components/blocks/ecommerce-pro/events-sections/event-rsvp-form.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/event-rsvp-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"}],"description":"A two column RSVP split pairing event facts and context on one side with a labeled form, slot picker, and opt in on the other.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-events-sections-fitting-appointment-card","type":"registry:block","title":"Fitting Appointment Card","files":[{"path":"components/blocks/ecommerce-pro/events-sections/fitting-appointment-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/fitting-appointment-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Book a 30 minute fitting with the do not buy verdict promised up front and three next slots as plain buttons.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-events-sections-host-an-event-card","type":"registry:block","title":"Host An Event Card","files":[{"path":"components/blocks/ecommerce-pro/events-sections/host-an-event-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/host-an-event-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Host a care clinic, the responsibilities split and past hosts listed plainly.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-events-sections-know-before-you-go","type":"registry:block","title":"Know Before You Go","files":[{"path":"components/blocks/ecommerce-pro/events-sections/know-before-you-go.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/know-before-you-go.tsx"}],"description":"A split layout pairing an intro column with an icon led two column grid of plain logistics answers from transport to rain plan.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-events-sections-open-day-schedule","type":"registry:block","title":"Open Day Schedule","files":[{"path":"components/blocks/ecommerce-pro/events-sections/open-day-schedule.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/open-day-schedule.tsx"}],"description":"A vertical timeline laying out an open day hour by hour with a time rail, dot markers, titled rows, and a closing note."},{"name":"ecommerce-pro-events-sections-past-events-archive","type":"registry:block","title":"Past Events Archive","files":[{"path":"components/blocks/ecommerce-pro/events-sections/past-events-archive.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/past-events-archive.tsx"}],"description":"Dated ruled rows with attendance and the one thing each event changed at the company afterward."},{"name":"ecommerce-pro-events-sections-repair-clinic-day","type":"registry:block","title":"Repair Clinic Day","files":[{"path":"components/blocks/ecommerce-pro/events-sections/repair-clinic-day.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/repair-clinic-day.tsx"}],"description":"The free clinic with timed fixes by type, any brand welcome, the business case stated.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-events-sections-tour-stops-grid","type":"registry:block","title":"Tour Stops Grid","files":[{"path":"components/blocks/ecommerce-pro/events-sections/tour-stops-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/tour-stops-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A responsive grid of city tour stops, each tile carrying a venue, date, and booking status badge, beside a heading, button, and footer note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-events-sections-trunk-show-banner","type":"registry:block","title":"Trunk Show Banner","files":[{"path":"components/blocks/ecommerce-pro/events-sections/trunk-show-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/trunk-show-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two days at a stockist announced as a wide bordered band with what is coming stated as three plain tile facts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-events-sections-workshop-calendar-list","type":"registry:block","title":"Workshop Calendar List","files":[{"path":"components/blocks/ecommerce-pro/events-sections/workshop-calendar-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/events-sections/workshop-calendar-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Upcoming events as dated rows with real seat counts and next dates over waitlists.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-faq-sections-customer-questions-faq","type":"registry:block","title":"Customer Questions FAQ","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/customer-questions-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/customer-questions-faq.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A feed of dated buyer questions, each with an avatar and an indented reply signed by its maker, closing with an invite to ask.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-faq-sections-faq-tabs","type":"registry:block","title":"FAQ Tabs","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/faq-tabs.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/faq-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A tabbed FAQ split into four shopper moments, ordering, delivery, returns, and product, with three open answers per tab and a contact line below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-faq-sections-faq-topics-index","type":"registry:block","title":"Faq Topics Index","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/faq-topics-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/faq-topics-index.tsx"}],"description":"Six help topics with counts, the most asked question linked from each tile.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-faq-sections-faq-with-contact-card","type":"registry:block","title":"Faq With Contact Card","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/faq-with-contact-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/faq-with-contact-card.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The month's top questions beside the human exit with measured response times.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-guarantee-faq","type":"registry:block","title":"Guarantee Faq","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/guarantee-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/guarantee-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five answers drawing the defect versus wear line in examples, lifetime answered honestly.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-most-asked-faq","type":"registry:block","title":"Most Asked FAQ","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/most-asked-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/most-asked-faq.tsx"}],"description":"A ranked list of the top eight support questions, each row showing its rank, ticket share, a short answer, and a small distribution bar."},{"name":"ecommerce-pro-faq-sections-ordering-faq","type":"registry:block","title":"Ordering Faq","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/ordering-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/ordering-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Six order flow questions answered with mechanisms: the change window, base rate, and no phone explained.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-ordering-faq-list","type":"registry:block","title":"Ordering Faq List","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/ordering-faq-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/ordering-faq-list.tsx"}],"description":"Six buying mechanics stated plainly, charge timing, cancels, and combined orders."},{"name":"ecommerce-pro-faq-sections-policies-changelog","type":"registry:block","title":"Policies Changelog","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/policies-changelog.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/policies-changelog.tsx"}],"description":"Every policy change as dated rows with the reason, the receipt that outlives announcements."},{"name":"ecommerce-pro-faq-sections-preorder-faq","type":"registry:block","title":"Preorder Faq","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/preorder-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/preorder-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Six made to order questions answered with dates, written from the inbox.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-product-care-faq","type":"registry:block","title":"Product Care Faq","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/product-care-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/product-care-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Care rituals as accordion answers beside a sticky image, prevention as content.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-returns-faq-two-col","type":"registry:block","title":"Returns Faq Two Col","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/returns-faq-two-col.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/returns-faq-two-col.tsx"}],"description":"The whole returns policy as eight open answers, no accordion for anxious readers."},{"name":"ecommerce-pro-faq-sections-secondhand-buyers-faq","type":"registry:block","title":"Secondhand Buyers Faq","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/secondhand-buyers-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/secondhand-buyers-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five answers for the used buyer, serial checks, guarantee transfer, first repair free.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-shipping-faq","type":"registry:block","title":"Shipping Faq","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/shipping-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/shipping-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Six shipping questions answered with cutoffs by day, couriers named, and the misdrop and locker rules.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-shipping-faq-accordion","type":"registry:block","title":"Shipping Faq Accordion","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/shipping-faq-accordion.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/shipping-faq-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"The six shipping questions support actually receives, answered with real numbers.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-faq-sections-sizing-faq-compact","type":"registry:block","title":"Sizing Faq Compact","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/sizing-faq-compact.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/sizing-faq-compact.tsx"}],"description":"The four sizing answers as one band, each sentence ending its question."},{"name":"ecommerce-pro-faq-sections-straight-answers-faq","type":"registry:block","title":"Straight Answers FAQ","files":[{"path":"components/blocks/ecommerce-pro/faq-sections/straight-answers-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/straight-answers-faq.tsx"}],"description":"A verdict first FAQ where a bold answer leads each row, Yes, Free, 60 days, with the question and one line of mechanics trailing."},{"name":"ecommerce-pro-gift-card-sections-corporate-gift-cards-card","type":"registry:block","title":"Corporate Gift Cards Card","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/corporate-gift-cards-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/corporate-gift-cards-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Bulk gift cards for teams of ten or more, no discount, no logo, free letterpress, invoice accepted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-corporate-gifting-card","type":"registry:block","title":"Corporate Gifting Card","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/corporate-gifting-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/corporate-gifting-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Team gifting as logistics solved, one CSV, one invoice, and a charity swap option.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-a-repair-card","type":"registry:block","title":"Gift A Repair Card","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-a-repair-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-a-repair-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The $40 repair credit card for the friend with the beloved dying bag, delivered as a letterpress card.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-amount-guide","type":"registry:block","title":"Gift Card Amount Guide","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-amount-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-amount-guide.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three denomination columns map each amount to catalog items it covers, with product thumbnails, prices, and a covers line under each.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-balance-check","type":"registry:block","title":"Gift Card Balance Check","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-balance-check.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-balance-check.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Code in, balance out, with the three balance anxieties answered beneath.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-balance-checker","type":"registry:block","title":"Gift Card Balance Checker","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-balance-checker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-balance-checker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Card number in, balance out, no account needed and no expiry to fear.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-design-picker","type":"registry:block","title":"Gift Card Design Picker","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-design-picker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-design-picker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Four occasion design tiles drive a live full size card preview, beside a picker column and rows listing what the design changes.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-faq","type":"registry:block","title":"Gift Card Faq","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-faq.tsx"}],"description":"Gift card questions answered like money questions, five rows, no asterisks."},{"name":"ecommerce-pro-gift-card-sections-gift-card-hero","type":"registry:block","title":"Gift Card Hero","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The gift card reframed as respect for their taste, with three term tiles.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-how-it-works","type":"registry:block","title":"Gift Card How It Works","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-how-it-works.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-how-it-works.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three numbered step tiles trace the path from checkout to redemption, each grounded by a small interface chip, above a send button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-gift-card-purchase","type":"registry:block","title":"Gift Card Purchase","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-purchase.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/gift-card-purchase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Amount chips updating a live card preview, with delivery date and no expiry terms.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-last-minute-gift-card","type":"registry:block","title":"Last Minute Gift Card","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/last-minute-gift-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/last-minute-gift-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Delivery timing facts sit beside a static blueprint of the exact email the recipient receives, with card art, a personal note, and code row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gift-card-sections-physical-gift-card","type":"registry:block","title":"Physical Gift Card","files":[{"path":"components/blocks/ecommerce-pro/gift-card-sections/physical-gift-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gift-card-sections/physical-gift-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The letterpress card you can wrap, no expiry, value reissued if lost.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-gifting-sections-corporate-gifting-tiers","type":"registry:block","title":"Corporate Gifting Tiers","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/corporate-gifting-tiers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/corporate-gifting-tiers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A corporate gifting section with four order size tiers in a table of discounts and lead times, three coordinator facts, and an email handoff.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gifting-sections-egift-card-builder","type":"registry:block","title":"Egift Card Builder","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/egift-card-builder.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/egift-card-builder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A gift card builder with amount chips and timing facts beside a live preview panel showing the card, delivery details, and a spam fallback note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gifting-sections-gift-concierge-card","type":"registry:block","title":"Gift Concierge Card","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/gift-concierge-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/gift-concierge-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Email three facts and a budget, a human replies with one pick and one alternative within a day.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gifting-sections-gift-finder-quiz","type":"registry:block","title":"Gift Finder Quiz","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/gift-finder-quiz.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/gift-finder-quiz.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A gift finder quiz with three question chip rows beside the match panel it produces, showing the pick, its reasoning, and a cheaper backup."},{"name":"ecommerce-pro-gifting-sections-gift-note-preview","type":"registry:block","title":"Gift Note Preview","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/gift-note-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/gift-note-preview.tsx"}],"description":"A gift note section pairing the rules a handwritten note follows and three starter lines with a serif stationery preview and a blank card option."},{"name":"ecommerce-pro-gifting-sections-gift-reminder-service","type":"registry:block","title":"Gift Reminder Service","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/gift-reminder-service.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/gift-reminder-service.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split pairing a three email reminder timeline and save a date button with an example saved dates panel showing budgets and statuses.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-gifting-sections-gift-returns-promise-band","type":"registry:block","title":"Gift Returns Promise Band","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/gift-returns-promise-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/gift-returns-promise-band.tsx"}],"description":"Four facts that cover the recipient through January 31 with the buyer never told about a return.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-gifting-sections-gift-wrapping-gallery","type":"registry:block","title":"Gift Wrapping Gallery","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/gift-wrapping-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/gift-wrapping-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three bench photos of the actual wrap with the $6 broken into paper, ribbon, and four bench minutes."},{"name":"ecommerce-pro-gifting-sections-group-gift-explainer","type":"registry:block","title":"Group Gift Explainer","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/group-gift-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/group-gift-explainer.tsx"}],"description":"One person starts it, others chip in by link, with three honest rules stated before it goes wrong."},{"name":"ecommerce-pro-gifting-sections-last-minute-gifts-grid","type":"registry:block","title":"Last Minute Gifts Grid","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/last-minute-gifts-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/last-minute-gifts-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three tiers ordered by certainty for December 23, the e gift card first and bags honestly ruled out."},{"name":"ecommerce-pro-gifting-sections-occasion-gift-guide","type":"registry:block","title":"Occasion Gift Guide","files":[{"path":"components/blocks/ecommerce-pro/gifting-sections/occasion-gift-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/gifting-sections/occasion-gift-guide.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four occasion cards with a photo, plain reasoning, the pick with price, and a smaller pick, closing with a gift desk handoff."},{"name":"ecommerce-pro-incentives-sections-about-our-prices","type":"registry:block","title":"About Our Prices","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/about-our-prices.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/about-our-prices.tsx"}],"description":"The bestseller's tag itemized to the margin, a price defended, not apologized for."},{"name":"ecommerce-pro-incentives-sections-bulk-pricing-tiers","type":"registry:block","title":"Bulk Pricing Tiers","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/bulk-pricing-tiers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/bulk-pricing-tiers.tsx"}],"description":"A volume pricing section showing four quantity tiers as a card row with per unit prices, then three ruled rules that govern bulk orders."},{"name":"ecommerce-pro-incentives-sections-community-discount-grid","type":"registry:block","title":"Community Discount Grid","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/community-discount-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/community-discount-grid.tsx"}],"description":"An eligibility discount grid of four groups as icon cards stating the proof required and how long it lasts, plus a document privacy footer band.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-duties-included-band","type":"registry:block","title":"Duties Included Band","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/duties-included-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/duties-included-band.tsx"}],"description":"The checkout price is the last number, with the refuse and email us record.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-financing-explainer","type":"registry:block","title":"Financing Explainer","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/financing-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/financing-explainer.tsx"}],"description":"Pay in three with worked math, return mechanics, and who should skip it."},{"name":"ecommerce-pro-incentives-sections-first-repair-free-card","type":"registry:block","title":"First Repair Free Card","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/first-repair-free-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/first-repair-free-card.tsx"}],"description":"First repair free even secondhand, the mechanics ruled and the commercial reasoning published.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-free-adjustments-card","type":"registry:block","title":"Free Adjustments Card","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/free-adjustments-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/free-adjustments-card.tsx"}],"description":"Strap, holes, and handles adjusted free forever on any product with bench minutes and the cost honest.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-free-shipping-threshold-bar","type":"registry:block","title":"Free Shipping Threshold Bar","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/free-shipping-threshold-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/free-shipping-threshold-bar.tsx"}],"description":"The $75 threshold with the real $7 cost, advising against padding the cart.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-gift-wrapping-callout","type":"registry:block","title":"Gift Wrapping Callout","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/gift-wrapping-callout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/gift-wrapping-callout.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The wrap pictured with three gifting promises, free paper wrap and priceless receipts.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-guarantee-band","type":"registry:block","title":"Guarantee Band","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/guarantee-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/guarantee-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The ten year promise in a primary band with honored, declined, and median repair time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-incentives-sections-holiday-returns-extension","type":"registry:block","title":"Holiday Returns Extension","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/holiday-returns-extension.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/holiday-returns-extension.tsx"}],"description":"Gift returns through January 31, automatic, with the unchanged rules listed.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-lifetime-guarantee-spotlight","type":"registry:block","title":"Lifetime Guarantee Spotlight","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/lifetime-guarantee-spotlight.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/lifetime-guarantee-spotlight.tsx"}],"description":"Hardware covered for the life of the bag with five things that do not void it and one thing that does.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-loyalty-not-points-explainer","type":"registry:block","title":"Loyalty Not Points Explainer","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/loyalty-not-points-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/loyalty-not-points-explainer.tsx"}],"description":"Why there is no points program, the breakage math stated, and the three real alternatives listed."},{"name":"ecommerce-pro-incentives-sections-packaging-explainer","type":"registry:block","title":"Packaging Explainer","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/packaging-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/packaging-explainer.tsx"}],"description":"The parcel layer by layer, material and disposal route, one bin."},{"name":"ecommerce-pro-incentives-sections-payment-options-row","type":"registry:block","title":"Payment Options Row","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/payment-options-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/payment-options-row.tsx"}],"description":"Accepted methods as text chips with the three payment facts that actually reassure."},{"name":"ecommerce-pro-incentives-sections-price-match-promise","type":"registry:block","title":"Price Match Promise","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/price-match-promise.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/price-match-promise.tsx"}],"description":"Automatic refunds on our own price drops, with last year's count and no asterisk."},{"name":"ecommerce-pro-incentives-sections-price-match-promise-card","type":"registry:block","title":"Price Match Promise Card","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/price-match-promise-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/price-match-promise-card.tsx"}],"description":"Own-price match only, with the nightly diff mechanic and a worked example showing $27 back automatically."},{"name":"ecommerce-pro-incentives-sections-referral-give-get","type":"registry:block","title":"Referral Give Get","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/referral-give-get.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/referral-give-get.tsx"}],"description":"A referral section pairing the give and get amounts as twin cards, then a ruled list of payout timing, the cap, and what it skips."},{"name":"ecommerce-pro-incentives-sections-returns-rate-transparency","type":"registry:block","title":"Returns Rate Transparency","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/returns-rate-transparency.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/returns-rate-transparency.tsx"}],"description":"The published 6.2 percent return rate with its category context, named culprit, and named fix."},{"name":"ecommerce-pro-incentives-sections-shipping-protection-card","type":"registry:block","title":"Shipping Protection Card","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/shipping-protection-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/shipping-protection-card.tsx"}],"description":"Protection included free with three plain claim rules and the 0.4% rate.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-shipping-returns-row","type":"registry:block","title":"Shipping Returns Row","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/shipping-returns-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/shipping-returns-row.tsx"}],"description":"The three column trust band where every policy claim carries a number.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-incentives-sections-sustainability-notes","type":"registry:block","title":"Sustainability Notes","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/sustainability-notes.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/sustainability-notes.tsx"}],"description":"Four numbered environmental facts with the unfinished one stated as a percentage."},{"name":"ecommerce-pro-incentives-sections-warranty-table","type":"registry:block","title":"Warranty Table","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/warranty-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/warranty-table.tsx"}],"description":"Coverage by failure type, including what is not covered and what happens anyway."},{"name":"ecommerce-pro-incentives-sections-welcome-code-explainer","type":"registry:block","title":"Welcome Code Explainer","files":[{"path":"components/blocks/ecommerce-pro/incentives-sections/welcome-code-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/welcome-code-explainer.tsx"}],"description":"A welcome offer split pairing the signup discount and its three plain rules with a dated archive of every email actually sent this year."},{"name":"ecommerce-pro-international-sections-country-shipping-table","type":"registry:block","title":"Country Shipping Table","files":[{"path":"components/blocks/ecommerce-pro/international-sections/country-shipping-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/country-shipping-table.tsx"}],"description":"Six regions with real day ranges, a duties column naming the collector, and tracking confirmed on every row.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-international-sections-cross-border-delivery-timeline","type":"registry:block","title":"Cross Border Delivery Timeline","files":[{"path":"components/blocks/ecommerce-pro/international-sections/cross-border-delivery-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/cross-border-delivery-timeline.tsx"}],"description":"A vertical rail walking a parcel through five international shipping stages, each with an honest day range and the customs stage called out.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-international-sections-currency-and-duties-toggle","type":"registry:block","title":"Currency And Duties Toggle","files":[{"path":"components/blocks/ecommerce-pro/international-sections/currency-and-duties-toggle.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/currency-and-duties-toggle.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One product repriced across three currencies with the bank rate disclosure inside the card."},{"name":"ecommerce-pro-international-sections-customs-paperwork-explainer","type":"registry:block","title":"Customs Paperwork Explainer","files":[{"path":"components/blocks/ecommerce-pro/international-sections/customs-paperwork-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/customs-paperwork-explainer.tsx"}],"description":"The customs form field by field, and the gift undervalue request declined as the fraud it is."},{"name":"ecommerce-pro-international-sections-duties-calculator-card","type":"registry:block","title":"Duties Calculator Card","files":[{"path":"components/blocks/ecommerce-pro/international-sections/duties-calculator-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/duties-calculator-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Country chips reveal landed cost, with who collects duties stated per region."},{"name":"ecommerce-pro-international-sections-global-fulfillment-hubs","type":"registry:block","title":"Global Fulfillment Hubs","files":[{"path":"components/blocks/ecommerce-pro/international-sections/global-fulfillment-hubs.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/global-fulfillment-hubs.tsx"}],"description":"A network stat strip above three dispatch hub cards, each naming the regions it serves, its dispatch promise, and what it keeps in stock.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-international-sections-international-orders-faq","type":"registry:block","title":"International Orders Faq","files":[{"path":"components/blocks/ecommerce-pro/international-sections/international-orders-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/international-orders-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five cross border questions answered, duties first, the customs delay named honestly.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-international-sections-international-returns-steps","type":"registry:block","title":"International Returns Steps","files":[{"path":"components/blocks/ecommerce-pro/international-sections/international-returns-steps.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/international-returns-steps.tsx"}],"description":"A split layout pairing the returns promise and money facts with a numbered four step card covering label, duties, drop off, and refund."},{"name":"ecommerce-pro-international-sections-landed-cost-comparison","type":"registry:block","title":"Landed Cost Comparison","files":[{"path":"components/blocks/ecommerce-pro/international-sections/landed-cost-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/landed-cost-comparison.tsx"}],"description":"Two side by side receipts pricing the same international order both ways, duties prepaid at checkout versus collected at the door.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-international-sections-where-we-ship-list","type":"registry:block","title":"Where We Ship List","files":[{"path":"components/blocks/ecommerce-pro/international-sections/where-we-ship-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/international-sections/where-we-ship-list.tsx"}],"description":"Where we ship with per region notes, and the refusal list with reasons published."},{"name":"ecommerce-pro-journal-sections-article-list-rows","type":"registry:block","title":"Article List Rows","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/article-list-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/article-list-rows.tsx"}],"description":"The journal as dated rows, category, read time, and a one line standfirst each."},{"name":"ecommerce-pro-journal-sections-care-column-split","type":"registry:block","title":"Care Column Split","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/care-column-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/care-column-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The care column with a routine readers can finish, five minutes a month."},{"name":"ecommerce-pro-journal-sections-field-notes-grid","type":"registry:block","title":"Field Notes Grid","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/field-notes-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/field-notes-grid.tsx"}],"description":"A heading and intro over a responsive grid of reader dispatch cards, each showing a location, a quoted note, the reader name, and years carried."},{"name":"ecommerce-pro-journal-sections-from-the-bench-column","type":"registry:block","title":"From The Bench Column","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/from-the-bench-column.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/from-the-bench-column.tsx"}],"description":"Three repair cases told as what failed and the lesson, written by the bench."},{"name":"ecommerce-pro-journal-sections-from-the-floor-qa","type":"registry:block","title":"From The Floor Qa","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/from-the-floor-qa.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/from-the-floor-qa.tsx"}],"description":"Three inbox questions answered by whoever actually knows, name and job on every answer."},{"name":"ecommerce-pro-journal-sections-guide-cards-grid","type":"registry:block","title":"Guide Cards Grid","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/guide-cards-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/guide-cards-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Six evergreen guides as cards, each promising a decision rather than content."},{"name":"ecommerce-pro-journal-sections-how-to-steps-article","type":"registry:block","title":"How To Steps Article","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/how-to-steps-article.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/how-to-steps-article.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One repair taught in four numbered steps with the bail out point marked."},{"name":"ecommerce-pro-journal-sections-issue-archive-timeline","type":"registry:block","title":"Issue Archive Timeline","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/issue-archive-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/issue-archive-timeline.tsx"}],"description":"A centered heading and intro above back issues grouped by year, each row linking an issue title with its number, month, and a read cue."},{"name":"ecommerce-pro-journal-sections-journal-hero-feature","type":"registry:block","title":"Journal Hero Feature","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/journal-hero-feature.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/journal-hero-feature.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The lead story big with a placeholder, three secondary headlines stacked beside it."},{"name":"ecommerce-pro-journal-sections-journal-newsletter-signup","type":"registry:block","title":"Journal Newsletter Signup","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/journal-newsletter-signup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/journal-newsletter-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column split pairing an email signup form with a list of recent issue subject lines, each showing a date and reading time.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-journal-sections-journal-topics-index","type":"registry:block","title":"Journal Topics Index","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/journal-topics-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/journal-topics-index.tsx"}],"description":"The journal mapped by topic with article counts and the best first read."},{"name":"ecommerce-pro-journal-sections-materials-deep-dive-article","type":"registry:block","title":"Materials Deep Dive Article","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/materials-deep-dive-article.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/materials-deep-dive-article.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The 18 oz canvas argued by the buyer who picks it, the contract spec callout, and the trade offs named."},{"name":"ecommerce-pro-journal-sections-workshop-film-chapters","type":"registry:block","title":"Workshop Film Chapters","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/workshop-film-chapters.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/workshop-film-chapters.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A heading and intro above a wide video still with a play button and runtime, then a two column list of timestamped chapters with notes."},{"name":"ecommerce-pro-journal-sections-year-of-wear-photo-log","type":"registry:block","title":"Year Of Wear Photo Log","files":[{"path":"components/blocks/ecommerce-pro/journal-sections/year-of-wear-photo-log.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/year-of-wear-photo-log.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Six months from twelve, the same bag photographed with no wax touch ups, the honest aging record."},{"name":"ecommerce-pro-lookbook-sections-archive-lookbooks-index","type":"registry:block","title":"Archive Lookbooks Index","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/archive-lookbooks-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/archive-lookbooks-index.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Every season kept online, each tile counting what is still made."},{"name":"ecommerce-pro-lookbook-sections-behind-the-scenes-row","type":"registry:block","title":"Behind The Scenes Row","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/behind-the-scenes-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/behind-the-scenes-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four outtakes with captions from the actual shoot day, the seams shown."},{"name":"ecommerce-pro-lookbook-sections-behind-the-shoot-notes","type":"registry:block","title":"Behind The Shoot Notes","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/behind-the-shoot-notes.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/behind-the-shoot-notes.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three lookbook frames with honest production captions and the full shoot budget published at the footer."},{"name":"ecommerce-pro-lookbook-sections-campaign-strip-band","type":"registry:block","title":"Campaign Strip Band","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/campaign-strip-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/campaign-strip-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three campaign frames with an offset middle and one button to the full lookbook.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-lookbook-sections-contact-sheet-selects","type":"registry:block","title":"Contact Sheet Selects","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/contact-sheet-selects.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/contact-sheet-selects.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A dense numbered grid of shoot frames with the selects that made the book marked, closed by a tally of shot, published, and chosen counts."},{"name":"ecommerce-pro-lookbook-sections-customer-styled-lookbook","type":"registry:block","title":"Customer Styled Lookbook","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/customer-styled-lookbook.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/customer-styled-lookbook.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Six owner photos, unretouched, paid in store credit and disclosed."},{"name":"ecommerce-pro-lookbook-sections-editorial-spread-split","type":"registry:block","title":"Editorial Spread Split","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/editorial-spread-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/editorial-spread-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One magazine spread, a large frame beside styling notes and the itemized pieces."},{"name":"ecommerce-pro-lookbook-sections-lookbook-cover-credits","type":"registry:block","title":"Lookbook Cover Credits","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/lookbook-cover-credits.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/lookbook-cover-credits.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A centered lookbook cover with title, standfirst, and two actions over one wide frame, closed by a masthead credits row of four roles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-lookbook-sections-lookbook-film-chapters","type":"registry:block","title":"Lookbook Film Chapters","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/lookbook-film-chapters.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/lookbook-film-chapters.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A lookbook film player blueprint with a chapter marked progress bar beside a timestamped chapter list, each row naming the pieces on screen."},{"name":"ecommerce-pro-lookbook-sections-numbered-look-list","type":"registry:block","title":"Numbered Look List","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/numbered-look-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/numbered-look-list.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The outfit image beside numbered pieces in dressing order, no overlaid pins."},{"name":"ecommerce-pro-lookbook-sections-one-piece-three-ways","type":"registry:block","title":"One Piece Three Ways","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/one-piece-three-ways.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/one-piece-three-ways.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three captioned frames in a row showing one overshirt styled three ways, each with its supporting pieces, closed by a constant piece anchor row."},{"name":"ecommerce-pro-lookbook-sections-seasonal-gallery-grid","type":"registry:block","title":"Seasonal Gallery Grid","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/seasonal-gallery-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/seasonal-gallery-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The lookbook as mixed ratio frames with shopping in the captions, not on the photos."},{"name":"ecommerce-pro-lookbook-sections-seasonal-lookbook-spread","type":"registry:block","title":"Seasonal Lookbook Spread","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/seasonal-lookbook-spread.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/seasonal-lookbook-spread.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The AW26 spread: one large frame, three supporting squares, and the pieces in the photos as priced rows."},{"name":"ecommerce-pro-lookbook-sections-shop-the-shoot-grid","type":"registry:block","title":"Shop The Shoot Grid","files":[{"path":"components/blocks/ecommerce-pro/lookbook-sections/shop-the-shoot-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/lookbook-sections/shop-the-shoot-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One lookbook frame with every item in it priced or declared not for sale, nothing in frame left unnamed."},{"name":"ecommerce-pro-membership-sections-gift-membership-panel","type":"registry:block","title":"Gift Membership Panel","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/gift-membership-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/gift-membership-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column layout with numbered how it works steps beside a gift certificate card listing benefits and a sample redemption code.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-membership-sections-join-flow-card","type":"registry:block","title":"Join Flow Card","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/join-flow-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/join-flow-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"The signup card with cancel mechanics spelled out before the button, not after.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-membership-sections-member-early-access-calendar","type":"registry:block","title":"Member Early Access Calendar","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/member-early-access-calendar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-early-access-calendar.tsx"}],"description":"The next drops with member and everyone dates side by side, sequence not exclusivity."},{"name":"ecommerce-pro-membership-sections-member-number-card","type":"registry:block","title":"Member Number Card","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/member-number-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-number-card.tsx"}],"description":"The member number framed as a birthday not a rank, with renewal date and a two click cancel path.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-membership-sections-member-price-strip","type":"registry:block","title":"Member Price Strip","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/member-price-strip.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-price-strip.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A heading and intro above a four column product grid, each card showing the everyone price beside the member price with a savings line."},{"name":"ecommerce-pro-membership-sections-member-savings-chart","type":"registry:block","title":"Member Savings Chart","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/member-savings-chart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-savings-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A two column split with heading and copy beside a card holding a line chart of cumulative member savings crossing a flat fee reference line.","dependencies":["recharts"]},{"name":"ecommerce-pro-membership-sections-member-stories-row","type":"registry:block","title":"Member Stories Row","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/member-stories-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-stories-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three members quoted on their own verified math rather than enthusiasm."},{"name":"ecommerce-pro-membership-sections-member-year-recap","type":"registry:block","title":"Member Year Recap","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/member-year-recap.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-year-recap.tsx"}],"description":"A centered heading and intro above an itemized recap card totaling one membership year down to the net, with the negative net policy stated below."},{"name":"ecommerce-pro-membership-sections-membership-benefits-table","type":"registry:block","title":"Membership Benefits Table","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/membership-benefits-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-benefits-table.tsx"}],"description":"Guest, free account, and member side by side, nothing free ever moves paid.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-membership-sections-membership-faq","type":"registry:block","title":"Membership Faq","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/membership-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five membership questions including the one that says do not join and the honest early access caveat.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-membership-sections-membership-landing-hero","type":"registry:block","title":"Membership Landing Hero","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/membership-landing-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-landing-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The program as a calculator, not a club, with the breakeven stated against the sale.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-membership-sections-membership-math-explainer","type":"registry:block","title":"Membership Math Explainer","files":[{"path":"components/blocks/ecommerce-pro/membership-sections/membership-math-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-math-explainer.tsx"}],"description":"The fee worked three ways, including the spender who is told not to join."},{"name":"ecommerce-pro-order-tracking-all-orders-timeline","type":"registry:block","title":"All Orders Timeline","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/all-orders-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/all-orders-timeline.tsx"}],"description":"Every open order as a compact row with its one line status and link, one page, every parcel, no tabs.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-carrier-handoff-card","type":"registry:block","title":"Carrier Handoff Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/carrier-handoff-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/carrier-handoff-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two stacked carrier legs, each with its own tracking number and status badge, joined by a handoff marker that explains the switch.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-courier-contact-card","type":"registry:block","title":"Courier Contact Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/courier-contact-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/courier-contact-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The courier for the van, the store for everything else, split honestly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-delivery-day-timeline","type":"registry:block","title":"Delivery Day Timeline","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/delivery-day-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/delivery-day-timeline.tsx"}],"description":"The day-of courier scan feed: stop count, firming window, and the driver note shown verbatim.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-delivery-instructions-card","type":"registry:block","title":"Delivery Instructions Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/delivery-instructions-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/delivery-instructions-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ranked fallbacks with honor rates from real delivery data and the keep it short finding.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-order-tracking-delivery-photo-confirmation","type":"registry:block","title":"Delivery Photo Confirmation","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/delivery-photo-confirmation.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/delivery-photo-confirmation.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The courier's proof photo with privacy terms and the that is not my door path.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-delivery-route-map","type":"registry:block","title":"Delivery Route Map","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/delivery-route-map.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/delivery-route-map.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A static street grid with the traveled route solid and remaining route dotted, beside a live stops away count, driver card, and stop list.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-delivery-window-card","type":"registry:block","title":"Delivery Window Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/delivery-window-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/delivery-window-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The window as the headline with the narrowing schedule and day of options.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-guest-order-lookup","type":"registry:block","title":"Guest Order Lookup","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/guest-order-lookup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/guest-order-lookup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Two column lookup with a headline, three hints on where the order number lives, and a card form for order number and email.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-international-tracking-view","type":"registry:block","title":"International Tracking View","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/international-tracking-view.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/international-tracking-view.tsx"}],"description":"Five stage tracker with the customs stage annotated honestly and the filing threshold stated.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-late-order-compensation-card","type":"registry:block","title":"Late Order Compensation Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/late-order-compensation-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/late-order-compensation-card.tsx"}],"description":"The automatic shipping refund when the miss is ours, help not compensation when it is the courier."},{"name":"ecommerce-pro-order-tracking-order-issues-card","type":"registry:block","title":"Order Issues Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/order-issues-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/order-issues-card.tsx"}],"description":"The three delivery failures with paths that never start with prove it.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-order-status-card","type":"registry:block","title":"Order Status Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/order-status-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/order-status-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One order as a compact card with status chip, delivery window, and two actions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-pickup-instructions-card","type":"registry:block","title":"Pickup Instructions Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/pickup-instructions-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/pickup-instructions-card.tsx"}],"description":"Locker collection with the code at display size and the deadline policy stated.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-pickup-ready-status","type":"registry:block","title":"Pickup Ready Status","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/pickup-ready-status.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/pickup-ready-status.tsx"}],"description":"Pickup code shown large, hold date in calendar not a countdown, and the ID rules by pickup type.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-preorder-progress-tracker","type":"registry:block","title":"Preorder Progress Tracker","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/preorder-progress-tracker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/preorder-progress-tracker.tsx"}],"description":"Five dated production stages, yours is bag 14 of 32 in the batch."},{"name":"ecommerce-pro-order-tracking-reschedule-delivery-card","type":"registry:block","title":"Reschedule Delivery Card","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/reschedule-delivery-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/reschedule-delivery-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered card with a tappable week of day chips, three arrival windows as radio rows, and a confirm button naming the chosen slot.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-order-tracking-return-status-tracker","type":"registry:block","title":"Return Status Tracker","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/return-status-tracker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/return-status-tracker.tsx"}],"description":"The return as a refund tracker, every stage says where the money is.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-shipment-updates-list","type":"registry:block","title":"Shipment Updates List","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/shipment-updates-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/shipment-updates-list.tsx"}],"description":"Courier scan codes translated into human sentences, the raw code kept visible."},{"name":"ecommerce-pro-order-tracking-split-shipment-tracker","type":"registry:block","title":"Split Shipment Tracker","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/split-shipment-tracker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/split-shipment-tracker.tsx"}],"description":"Two parcels, one order, the split explained and shipping charged once.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-tracking-faq-strip","type":"registry:block","title":"Tracking Faq Strip","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/tracking-faq-strip.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/tracking-faq-strip.tsx"}],"description":"The four questions people ask while staring at tracking, answered in one band."},{"name":"ecommerce-pro-order-tracking-tracking-timeline","type":"registry:block","title":"Tracking Timeline","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/tracking-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/tracking-timeline.tsx"}],"description":"Four stages on a vertical line with timestamps, the current one pulsing.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-order-tracking-weather-delay-notice","type":"registry:block","title":"Weather Delay Notice","files":[{"path":"components/blocks/ecommerce-pro/order-tracking/weather-delay-notice.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/order-tracking/weather-delay-notice.tsx"}],"description":"Storm pause with the courier reasoning published, the new date stated, and nothing to do.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-payment-sections-accepted-methods-row","type":"registry:block","title":"Accepted Methods Row","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/accepted-methods-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/accepted-methods-row.tsx"}],"description":"Payment options in three named groups as italic chips with one honest line each and two absences stated.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-payment-sections-bank-transfer-invoice-card","type":"registry:block","title":"Bank Transfer Invoice Card","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/bank-transfer-invoice-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/bank-transfer-invoice-card.tsx"}],"description":"Invoice payment for orders over 500 in three numbered rows with the speed caveat printed at the bottom."},{"name":"ecommerce-pro-payment-sections-declined-card-playbook","type":"registry:block","title":"Declined Card Playbook","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/declined-card-playbook.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/declined-card-playbook.tsx"}],"description":"A four step vertical timeline of what happens when a card declines, from the same second through the 48 hour hold to release, with common causes named."},{"name":"ecommerce-pro-payment-sections-installments-honest-math","type":"registry:block","title":"Installments Honest Math","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/installments-honest-math.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/installments-honest-math.tsx"}],"description":"The BNPL split printed in mono arithmetic with the late fee row and the cheaper lookalike named openly."},{"name":"ecommerce-pro-payment-sections-multi-currency-pricing-table","type":"registry:block","title":"Multi Currency Pricing Table","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/multi-currency-pricing-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/multi-currency-pricing-table.tsx"}],"description":"One product priced across three regions with the tax content of each price written into the table."},{"name":"ecommerce-pro-payment-sections-no-surcharge-receipt","type":"registry:block","title":"No Surcharge Receipt","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/no-surcharge-receipt.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/no-surcharge-receipt.tsx"}],"description":"A two column zero surcharge promise where a left list names three fees other checkouts add and a right mono receipt prints each at $0.00."},{"name":"ecommerce-pro-payment-sections-payment-security-explainer","type":"registry:block","title":"Payment Security Explainer","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/payment-security-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/payment-security-explainer.tsx"}],"description":"Three plain rows on where the card number goes by architecture with no padlock icons and no badge images."},{"name":"ecommerce-pro-payment-sections-refund-speed-by-method","type":"registry:block","title":"Refund Speed By Method","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/refund-speed-by-method.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/refund-speed-by-method.tsx"}],"description":"A refund timing comparison where each payment method row names its method, days to land, a proportional bar, and one line on where the wait lives."},{"name":"ecommerce-pro-payment-sections-saved-card-controls","type":"registry:block","title":"Saved Card Controls","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/saved-card-controls.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/saved-card-controls.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column saved card explainer where a left list states what saving stores and what removal does beside a static account panel blueprint.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-payment-sections-why-no-crypto-card","type":"registry:block","title":"Why No Crypto Card","files":[{"path":"components/blocks/ecommerce-pro/payment-sections/why-no-crypto-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/payment-sections/why-no-crypto-card.tsx"}],"description":"The honest no on crypto with the 60 day refund volatility math and a promise to update when it changes."},{"name":"ecommerce-pro-post-purchase-sections-delivery-feedback-card","type":"registry:block","title":"Delivery Feedback Card","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/delivery-feedback-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/delivery-feedback-card.tsx"}],"description":"One handover question with four chips, where the answer goes, and why it never touches the driver.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-post-purchase-sections-first-use-guide-card","type":"registry:block","title":"First Use Guide Card","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/first-use-guide-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/first-use-guide-card.tsx"}],"description":"Three timed steps before the first rain, each with the failure mode it prevents and the honest why."},{"name":"ecommerce-pro-post-purchase-sections-honest-review-request","type":"registry:block","title":"Honest Review Request","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/honest-review-request.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/honest-review-request.tsx"}],"description":"The review email shown in full at three weeks, no incentive stated inside it and one reminder maximum.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-post-purchase-sections-missed-delivery-playbook","type":"registry:block","title":"Missed Delivery Playbook","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/missed-delivery-playbook.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/missed-delivery-playbook.tsx"}],"description":"A centered heading over three ordered attempt cards, each pairing an icon, step label, delivery detail, and its limit, closed by a policy line.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-post-purchase-sections-order-edit-window-card","type":"registry:block","title":"Order Edit Window Card","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/order-edit-window-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/order-edit-window-card.tsx"}],"description":"The 60 minute self serve window: address, size, or cancel from the order email with no contact needed.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-post-purchase-sections-packaging-recycling-guide","type":"registry:block","title":"Packaging Recycling Guide","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/packaging-recycling-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/packaging-recycling-guide.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A left aligned heading above four material tiles, each with an icon, description, a bin badge, and a disposal note, followed by a closing line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-post-purchase-sections-packing-slip-explainer","type":"registry:block","title":"Packing Slip Explainer","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/packing-slip-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/packing-slip-explainer.tsx"}],"description":"Annotated slip mockup: contents and serials, gift prices stripped, QR return, and initials in pen.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-post-purchase-sections-product-registration-card","type":"registry:block","title":"Product Registration Card","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/product-registration-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/product-registration-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Serial plus email attaches the guarantee to the product itself, with three things registration unlocks.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-post-purchase-sections-reorder-reminder-card","type":"registry:block","title":"Reorder Reminder Card","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/reorder-reminder-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/reorder-reminder-card.tsx"}],"description":"A centered column with a usage curve card marking the single reminder day, a three rule grid explaining the timing, and a closing note."},{"name":"ecommerce-pro-post-purchase-sections-spare-parts-counter","type":"registry:block","title":"Spare Parts Counter","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/spare-parts-counter.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/spare-parts-counter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two column split pairing three checkmark promises with a parts panel listing each part by thumbnail, fit, price, and stock above an order button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-post-purchase-sections-what-happens-next-timeline","type":"registry:block","title":"What Happens Next Timeline","files":[{"path":"components/blocks/ecommerce-pro/post-purchase-sections/what-happens-next-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/post-purchase-sections/what-happens-next-timeline.tsx"}],"description":"Four stage dot timeline from payment to door, with the quiet stretch named as the system working.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-prebuilt-pages-care-hub-page","type":"registry:block","title":"Care Hub Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/care-hub-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/care-hub-page.tsx"},{"path":"components/blocks/ecommerce-pro/journal-sections/how-to-steps-article.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/journal-sections/how-to-steps-article.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/product-care-sections/care-by-material-tabs.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-by-material-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/blocks/ecommerce-pro/product-care-sections/care-kit-picker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-kit-picker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/ecommerce-pro/product-care-sections/care-schedule-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-schedule-table.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-service-links.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-service-links.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"Full care page sorted by material, with a schedule table, a kit picker, and a step by step how to article.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-journal-sections-how-to-steps-article","@shadcn-ui-blocks/ecommerce-pro-product-care-sections-care-by-material-tabs","@shadcn-ui-blocks/ecommerce-pro-product-care-sections-care-kit-picker","@shadcn-ui-blocks/ecommerce-pro-product-care-sections-care-schedule-table","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-service-links","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart"]},{"name":"ecommerce-pro-prebuilt-pages-contact-page","type":"registry:block","title":"Contact Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/contact-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/contact-page.tsx"},{"path":"components/blocks/ecommerce-pro/contact-sections/contact-routes-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/contact-routes-page.tsx"},{"path":"components/blocks/ecommerce-pro/contact-sections/response-times-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/response-times-band.tsx"},{"path":"components/blocks/ecommerce-pro/contact-sections/visit-the-workshop-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/contact-sections/visit-the-workshop-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/faq-sections/faq-topics-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/faq-sections/faq-topics-index.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-minimal-legal.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-minimal-legal.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"Full contact page routing each question to the right channel, with real reply times and a FAQ index.","dependencies":["lucide-react"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-contact-sections-contact-routes-page","@shadcn-ui-blocks/ecommerce-pro-contact-sections-response-times-band","@shadcn-ui-blocks/ecommerce-pro-contact-sections-visit-the-workshop-card","@shadcn-ui-blocks/ecommerce-pro-faq-sections-faq-topics-index","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-minimal-legal","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart"]},{"name":"ecommerce-pro-prebuilt-pages-home-page","type":"registry:block","title":"Home Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/home-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/home-page.tsx"},{"path":"components/blocks/ecommerce-pro/category-sections/new-vs-classics-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/category-sections/new-vs-classics-band.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/email-capture-sections/newsletter-with-archive.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/email-capture-sections/newsletter-with-archive.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/blocks/ecommerce-pro/product-grids/bestsellers-by-numbers-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/bestsellers-by-numbers-grid.tsx"},{"path":"components/blocks/ecommerce-pro/reviews-sections/reviews-milestone-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/reviews-milestone-band.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx"},{"path":"components/blocks/ecommerce-pro/store-heroes/mosaic-collage-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/mosaic-collage-hero.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-category-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-category-bar.tsx"}],"description":"Storefront home with category bar nav, mosaic hero, catalog split, ranked bestsellers, and reviews milestone.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-category-sections-new-vs-classics-band","@shadcn-ui-blocks/ecommerce-pro-email-capture-sections-newsletter-with-archive","@shadcn-ui-blocks/ecommerce-pro-product-grids-bestsellers-by-numbers-grid","@shadcn-ui-blocks/ecommerce-pro-reviews-sections-reviews-milestone-band","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-reviews-score","@shadcn-ui-blocks/ecommerce-pro-store-heroes-mosaic-collage-hero","@shadcn-ui-blocks/ecommerce-pro-store-navbars-nav-with-category-bar"]},{"name":"ecommerce-pro-prebuilt-pages-membership-page","type":"registry:block","title":"Membership Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/membership-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/membership-page.tsx"},{"path":"components/blocks/ecommerce-pro/membership-sections/join-flow-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/join-flow-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/blocks/ecommerce-pro/membership-sections/member-stories-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/member-stories-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/blocks/ecommerce-pro/membership-sections/membership-benefits-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-benefits-table.tsx"},{"path":"components/blocks/ecommerce-pro/membership-sections/membership-landing-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-landing-hero.tsx"},{"path":"components/blocks/ecommerce-pro/membership-sections/membership-math-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/membership-sections/membership-math-explainer.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"Membership landing that argues with arithmetic including the profile where joining loses money.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-membership-sections-join-flow-card","@shadcn-ui-blocks/ecommerce-pro-membership-sections-member-stories-row","@shadcn-ui-blocks/ecommerce-pro-membership-sections-membership-benefits-table","@shadcn-ui-blocks/ecommerce-pro-membership-sections-membership-landing-hero","@shadcn-ui-blocks/ecommerce-pro-membership-sections-membership-math-explainer","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-reviews-score","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart"]},{"name":"ecommerce-pro-prebuilt-pages-product-page","type":"registry:block","title":"Product Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/product-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/product-page.tsx"},{"path":"components/blocks/ecommerce-pro/incentives-sections/shipping-protection-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/incentives-sections/shipping-protection-card.tsx"},{"path":"components/blocks/ecommerce-pro/product-overviews/with-sustainability-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-sustainability-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/reviews-sections/photo-review-wall.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/photo-review-wall.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"},{"path":"components/blocks/ecommerce-pro/upsell-sections/care-kit-attach-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/care-kit-attach-row.tsx"}],"description":"Product detail with sustainability panel, photo review wall, care kit attach, and shipping protection.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-incentives-sections-shipping-protection-card","@shadcn-ui-blocks/ecommerce-pro-product-overviews-with-sustainability-panel","@shadcn-ui-blocks/ecommerce-pro-reviews-sections-photo-review-wall","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-company-numbers","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart","@shadcn-ui-blocks/ecommerce-pro-upsell-sections-care-kit-attach-row"]},{"name":"ecommerce-pro-prebuilt-pages-repairs-hub-page","type":"registry:block","title":"Repairs Hub Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/repairs-hub-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/repairs-hub-page.tsx"},{"path":"components/blocks/ecommerce-pro/repair-service-sections/bench-queue-status.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/bench-queue-status.tsx"},{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-pricing-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-pricing-table.tsx"},{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-request-form.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-request-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-stories-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-stories-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-turnaround-stats.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-turnaround-stats.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"Repairs hub with the published price table, live bench queue, request form, and turnaround stats.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-repair-service-sections-bench-queue-status","@shadcn-ui-blocks/ecommerce-pro-repair-service-sections-repair-pricing-table","@shadcn-ui-blocks/ecommerce-pro-repair-service-sections-repair-request-form","@shadcn-ui-blocks/ecommerce-pro-repair-service-sections-repair-stories-gallery","@shadcn-ui-blocks/ecommerce-pro-repair-service-sections-repair-turnaround-stats","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-company-numbers","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart"]},{"name":"ecommerce-pro-prebuilt-pages-resale-landing-page","type":"registry:block","title":"Resale Landing Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/resale-landing-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/resale-landing-page.tsx"},{"path":"components/blocks/ecommerce-pro/resale-sections/circularity-stats-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/circularity-stats-band.tsx"},{"path":"components/blocks/ecommerce-pro/resale-sections/resale-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/resale-faq.tsx"},{"path":"components/blocks/ecommerce-pro/resale-sections/resale-grading-scale.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/resale-grading-scale.tsx"},{"path":"components/blocks/ecommerce-pro/resale-sections/secondhand-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/secondhand-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/resale-sections/trade-in-estimator.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/trade-in-estimator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"Resale landing, the estimator first for sellers, graded listings and the loop counted for buyers.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-resale-sections-circularity-stats-band","@shadcn-ui-blocks/ecommerce-pro-resale-sections-resale-faq","@shadcn-ui-blocks/ecommerce-pro-resale-sections-resale-grading-scale","@shadcn-ui-blocks/ecommerce-pro-resale-sections-secondhand-grid","@shadcn-ui-blocks/ecommerce-pro-resale-sections-trade-in-estimator","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-reviews-score","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart"]},{"name":"ecommerce-pro-prebuilt-pages-returns-center-page","type":"registry:block","title":"Returns Center Page","files":[{"path":"components/blocks/ecommerce-pro/prebuilt-pages/returns-center-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/prebuilt-pages/returns-center-page.tsx"},{"path":"components/blocks/ecommerce-pro/returns-sections/plain-language-policy.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/plain-language-policy.tsx"},{"path":"components/blocks/ecommerce-pro/returns-sections/refund-timeline-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/refund-timeline-explainer.tsx"},{"path":"components/blocks/ecommerce-pro/returns-sections/returns-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/returns-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/blocks/ecommerce-pro/returns-sections/start-return-flow.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/start-return-flow.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx"},{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"Returns center with plain policy first, start flow, refund timeline, and a full FAQ before the footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/ecommerce-pro-returns-sections-plain-language-policy","@shadcn-ui-blocks/ecommerce-pro-returns-sections-refund-timeline-explainer","@shadcn-ui-blocks/ecommerce-pro-returns-sections-returns-faq","@shadcn-ui-blocks/ecommerce-pro-returns-sections-start-return-flow","@shadcn-ui-blocks/ecommerce-pro-store-footers-footer-with-company-numbers","@shadcn-ui-blocks/ecommerce-pro-store-navbars-minimal-logo-cart"]},{"name":"ecommerce-pro-pricing-transparency-sections-cost-breakdown-bars","type":"registry:block","title":"Cost Breakdown Bars","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/cost-breakdown-bars.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/cost-breakdown-bars.tsx"}],"description":"The $185 tote split into five labeled bars with dollar amounts and a note on each line that adds to the price."},{"name":"ecommerce-pro-pricing-transparency-sections-cost-of-free-returns-explainer","type":"registry:block","title":"Cost Of Free Returns Explainer","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/cost-of-free-returns-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/cost-of-free-returns-explainer.tsx"}],"description":"The $6.10 per return, the 6.2% rate, and the 38 cents on every order with the arithmetic printed."},{"name":"ecommerce-pro-pricing-transparency-sections-cost-per-wear-math","type":"registry:block","title":"Cost Per Wear Math","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/cost-per-wear-math.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/cost-per-wear-math.tsx"}],"description":"Three equation tiles divide the price across a ten year design life, above a marked decade strip and a list of milestones it covers."},{"name":"ecommerce-pro-pricing-transparency-sections-input-cost-index","type":"registry:block","title":"Input Cost Index","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/input-cost-index.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/input-cost-index.tsx"}],"description":"Four stat cards hold each raw input cost with its current rate, twelve month movement, and a trend sparkline, above the pass through rule line."},{"name":"ecommerce-pro-pricing-transparency-sections-no-sales-policy-card","type":"registry:block","title":"No Sales Policy Card","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/no-sales-policy-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/no-sales-policy-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Why no sales ever, in three numbered rows, with the archive exception.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-pricing-transparency-sections-price-history-table","type":"registry:block","title":"Price History Table","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/price-history-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/price-history-table.tsx"}],"description":"Every price since 2015 with the published reason per change including the year the price went down."},{"name":"ecommerce-pro-pricing-transparency-sections-price-questions-accordion","type":"registry:block","title":"Price Questions Accordion","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/price-questions-accordion.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/price-questions-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion answers five blunt questions about the price, each written plainly, with the first item expanded by default.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-pricing-transparency-sections-retail-markup-comparison","type":"registry:block","title":"Retail Markup Comparison","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/retail-markup-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/retail-markup-comparison.tsx"}],"description":"Two side by side channel cards break the same tote into additive cost rows, one priced through a store, one sold direct."},{"name":"ecommerce-pro-pricing-transparency-sections-wage-transparency-card","type":"registry:block","title":"Wage Transparency Card","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/wage-transparency-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/wage-transparency-card.tsx"}],"description":"Floor rate, median, and the local living wage published beside the labor cost line."},{"name":"ecommerce-pro-pricing-transparency-sections-what-margin-pays-for","type":"registry:block","title":"What Margin Pays For","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/what-margin-pays-for.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/what-margin-pays-for.tsx"}],"description":"The $40 margin itemized, repairs to reserve, profit stated without apology."},{"name":"ecommerce-pro-pricing-transparency-sections-why-this-price-explainer","type":"registry:block","title":"Why This Price Explainer","files":[{"path":"components/blocks/ecommerce-pro/pricing-transparency-sections/why-this-price-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/pricing-transparency-sections/why-this-price-explainer.tsx"}],"description":"The case for $185 against the $90 lookalike, with the sincere concession included."},{"name":"ecommerce-pro-product-care-sections-care-by-material-tabs","type":"registry:block","title":"Care By Material Tabs","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/care-by-material-tabs.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-by-material-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Three material routines in tabs, numbered steps, a frequency line, one product each.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-care-sections-care-dos-donts","type":"registry:block","title":"Care Dos and Donts","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/care-dos-donts.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-dos-donts.tsx"}],"description":"Two side by side panels list five care habits to always do and five to never do, each with a one line reason, closed by an honest footer note.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-care-sections-care-kit-picker","type":"registry:block","title":"Care Kit Picker","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/care-kit-picker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-kit-picker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three kits with the recommended tag on the cheapest one, on purpose.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-care-sections-care-label-decoder","type":"registry:block","title":"Care Label Decoder","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/care-label-decoder.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-label-decoder.tsx"}],"description":"A static mockup of the sewn in care label sits beside its five stitched symbols, each translated into a plain instruction and the damage it prevents."},{"name":"ecommerce-pro-product-care-sections-care-schedule-table","type":"registry:block","title":"Care Schedule Table","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/care-schedule-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-schedule-table.tsx"}],"description":"Four seasons, one five minute task each, and a Summer row that says do nothing."},{"name":"ecommerce-pro-product-care-sections-care-video-library","type":"registry:block","title":"Care Video Library","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/care-video-library.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/care-video-library.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three short tutorial cards, each with a video thumbnail, runtime, a job summary, and the tools it uses, closed by a filming note.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-care-sections-leather-aging-timeline","type":"registry:block","title":"Leather Aging Timeline","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/leather-aging-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/leather-aging-timeline.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Year 0 to 5 as four tiles, what patina is normal at each, cracking named as a claim, not aging."},{"name":"ecommerce-pro-product-care-sections-leather-care-faq","type":"registry:block","title":"Leather Care Faq","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/leather-care-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/leather-care-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five bench answers, early cracking is a claim, and the vegan question unguarded.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-care-sections-repair-bench-menu","type":"registry:block","title":"Repair Bench Menu","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/repair-bench-menu.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/repair-bench-menu.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A three step mail in repair process sits beside a six line price list with turnaround times and a closing note on repair claims.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-care-sections-stain-first-aid-guide","type":"registry:block","title":"Stain First Aid Guide","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/stain-first-aid-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/stain-first-aid-guide.tsx"}],"description":"Four stains with do now, never do, and bench it if, ink answered honestly."},{"name":"ecommerce-pro-product-care-sections-storage-guide-split","type":"registry:block","title":"Storage Guide Split","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/storage-guide-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/storage-guide-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Storage rules beside the image, the shipping bag revealed as the storage bag.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-care-sections-winterizing-checklist","type":"registry:block","title":"Winterizing Checklist","files":[{"path":"components/blocks/ecommerce-pro/product-care-sections/winterizing-checklist.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-care-sections/winterizing-checklist.tsx"}],"description":"Five steps with minute estimates, seams first, and the paid bench option offered without apology on row five."},{"name":"ecommerce-pro-product-finders-bag-finder-quiz","type":"registry:block","title":"Bag Finder Quiz","files":[{"path":"components/blocks/ecommerce-pro/product-finders/bag-finder-quiz.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/bag-finder-quiz.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two questions narrow nineteen bags to a shortlist, with the logic stated.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-finders-budget-finder-band","type":"registry:block","title":"Budget Finder Band","files":[{"path":"components/blocks/ecommerce-pro/product-finders/budget-finder-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/budget-finder-band.tsx"}],"description":"Three price tiles stating what each number buys, $200 answered honestly.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-finders-finalist-duel","type":"registry:block","title":"Finalist Duel","files":[{"path":"components/blocks/ecommerce-pro/product-finders/finalist-duel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/finalist-duel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two finalist bags side by side with spec rows where bold marks the better number and ties grey out, closed by one decider question.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-finders-finder-decision-tree","type":"registry:block","title":"Finder Decision Tree","files":[{"path":"components/blocks/ecommerce-pro/product-finders/finder-decision-tree.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/finder-decision-tree.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The finder logic printed as a static branching tree of yes and no questions leading to four bag leaf cards you trace by hand."},{"name":"ecommerce-pro-product-finders-finder-entry-tiles","type":"registry:block","title":"Finder Entry Tiles","files":[{"path":"components/blocks/ecommerce-pro/product-finders/finder-entry-tiles.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/finder-entry-tiles.tsx"}],"description":"Three ways into the catalog by question asked, not category browsed.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-finders-finder-results-grid","type":"registry:block","title":"Finder Results Grid","files":[{"path":"components/blocks/ecommerce-pro/product-finders/finder-results-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/finder-results-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The quiz verdict, one best match argued and two alternatives with trade offs.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-finders-first-bag-finder","type":"registry:block","title":"First Bag Finder","files":[{"path":"components/blocks/ecommerce-pro/product-finders/first-bag-finder.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/first-bag-finder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three questions pre filled to the most common answers, the verdict card and the honest fork stated.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-finders-gift-finder-card","type":"registry:block","title":"Gift Finder Card","files":[{"path":"components/blocks/ecommerce-pro/product-finders/gift-finder-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/gift-finder-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Recipient and budget in, three candidates out, with the safe pick flagged.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-finders-load-calculator","type":"registry:block","title":"Load Calculator","files":[{"path":"components/blocks/ecommerce-pro/product-finders/load-calculator.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/load-calculator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Checklist of everyday carry items that tallies liters live beside a verdict panel recommending one bag with a fill meter and headroom rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-finders-quiz-step-card","type":"registry:block","title":"Quiz Step Card","files":[{"path":"components/blocks/ecommerce-pro/product-finders/quiz-step-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/quiz-step-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One finder question as a full card, progress shown, skippable by design.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-finders-use-case-matrix","type":"registry:block","title":"Use Case Matrix","files":[{"path":"components/blocks/ecommerce-pro/product-finders/use-case-matrix.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-finders/use-case-matrix.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A fit matrix with five weeks down the side and four bags across the top, each cell a three state dot rating the fit."},{"name":"ecommerce-pro-product-grids-archive-pieces-grid","type":"registry:block","title":"Archive Pieces Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/archive-pieces-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/archive-pieces-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Resale one of ones at grid scale, each card carrying its serial, grade, price, and one line of history."},{"name":"ecommerce-pro-product-grids-bestsellers-by-numbers-grid","type":"registry:block","title":"Bestsellers By Numbers Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/bestsellers-by-numbers-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/bestsellers-by-numbers-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four products ranked by units sold this year, the count on every card and last place included with affection."},{"name":"ecommerce-pro-product-grids-bestsellers-rail","type":"registry:block","title":"Bestsellers Rail","files":[{"path":"components/blocks/ecommerce-pro/product-grids/bestsellers-rail.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/bestsellers-rail.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A snap scrolling ranked strip with units sold, no carousel scripts."},{"name":"ecommerce-pro-product-grids-colorway-family-grid","type":"registry:block","title":"Colorway Family Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/colorway-family-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/colorway-family-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One product in every colorway it has ever had: permanent, live batch count, and retired linked to resale."},{"name":"ecommerce-pro-product-grids-complete-collection-grid","type":"registry:block","title":"Complete Collection Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/complete-collection-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/complete-collection-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"All 19 products on one page with the honest admission that there is no page two."},{"name":"ecommerce-pro-product-grids-dense-list-rows","type":"registry:block","title":"Dense List Rows","files":[{"path":"components/blocks/ecommerce-pro/product-grids/dense-list-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/dense-list-rows.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Products as comparison rows with mono spec lines, ratings, and add buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-grids-editorial-two-column","type":"registry:block","title":"Editorial Two Column","files":[{"path":"components/blocks/ecommerce-pro/product-grids/editorial-two-column.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/editorial-two-column.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four products with large images and a full written sentence under each."},{"name":"ecommerce-pro-product-grids-featured-tile-grid","type":"registry:block","title":"Featured Tile Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/featured-tile-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/featured-tile-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A mixed size product grid where one hero piece spans a double tile beside four supporting products, each card carrying its name and price."},{"name":"ecommerce-pro-product-grids-gift-guide-grid-priced","type":"registry:block","title":"Gift Guide Grid Priced","files":[{"path":"components/blocks/ecommerce-pro/product-grids/gift-guide-grid-priced.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/gift-guide-grid-priced.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Picks under budget bands where every why is gifting logic, not product copy."},{"name":"ecommerce-pro-product-grids-grid-with-filters-sidebar","type":"registry:block","title":"Grid With Filters Sidebar","files":[{"path":"components/blocks/ecommerce-pro/product-grids/grid-with-filters-sidebar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/grid-with-filters-sidebar.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The standard category page, a filter rail with result counts beside a rated product grid.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-grids-grid-with-sort-pills","type":"registry:block","title":"Grid With Sort Pills","files":[{"path":"components/blocks/ecommerce-pro/product-grids/grid-with-sort-pills.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/grid-with-sort-pills.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Working sort pills reorder the grid live, bestselling, price, and newest."},{"name":"ecommerce-pro-product-grids-last-chance-grid","type":"registry:block","title":"Last Chance Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/last-chance-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/last-chance-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Discontinued stock with live counts and the reason each is leaving."},{"name":"ecommerce-pro-product-grids-most-repaired-grid","type":"registry:block","title":"Most Repaired Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/most-repaired-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/most-repaired-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four tiles wearing repair counts as proof of service and the reframe that repairs mean kept."},{"name":"ecommerce-pro-product-grids-new-in-grid-dated","type":"registry:block","title":"New In Grid Dated","files":[{"path":"components/blocks/ecommerce-pro/product-grids/new-in-grid-dated.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/new-in-grid-dated.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Arrivals grouped by week so returning visitors know where they left off."},{"name":"ecommerce-pro-product-grids-one-of-each-grid","type":"registry:block","title":"One Of Each Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/one-of-each-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/one-of-each-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The four piece starter set with total stated and a footer that advises to start with just the bag."},{"name":"ecommerce-pro-product-grids-preorder-grid","type":"registry:block","title":"Preorder Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/preorder-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/preorder-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A preorder grid for a numbered batch, each card showing its ship window, price, a claimed progress bar, and a reserve button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-grids-recently-restocked-grid","type":"registry:block","title":"Recently Restocked Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/recently-restocked-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/recently-restocked-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"This week's returns, each card dated with how long it was gone."},{"name":"ecommerce-pro-product-grids-sale-grid-with-badges","type":"registry:block","title":"Sale Grid With Badges","files":[{"path":"components/blocks/ecommerce-pro/product-grids/sale-grid-with-badges.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/sale-grid-with-badges.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The markdown rack with percent badges, both prices, and live stock notes per card."},{"name":"ecommerce-pro-product-grids-simple-four-column","type":"registry:block","title":"Simple Four Column","files":[{"path":"components/blocks/ecommerce-pro/product-grids/simple-four-column.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/simple-four-column.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The catalog reduced to image, name, and price in four disciplined columns."},{"name":"ecommerce-pro-product-grids-split-category-grid","type":"registry:block","title":"Split Category Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/split-category-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/split-category-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A sticky editorial column beside the grid, the magazine category page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-grids-staff-picks-grid","type":"registry:block","title":"Staff Picks Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/staff-picks-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/staff-picks-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four picks from repairs, the bench, the returns desk, and email with the cost discount disclosed up front."},{"name":"ecommerce-pro-product-grids-tabbed-category-grid","type":"registry:block","title":"Tabbed Category Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/tabbed-category-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/tabbed-category-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A product grid split across category tabs, each tab showing four bestsellers with a total count and a link to view the whole shelf.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-grids-under-50-gifts-grid","type":"registry:block","title":"Under 50 Gifts Grid","files":[{"path":"components/blocks/ecommerce-pro/product-grids/under-50-gifts-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/under-50-gifts-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Real range items under $50 with who it suits captions, gift cards as the fallback."},{"name":"ecommerce-pro-product-grids-with-color-swatches","type":"registry:block","title":"With Color Swatches","files":[{"path":"components/blocks/ecommerce-pro/product-grids/with-color-swatches.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/with-color-swatches.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A grid with colorway dots and overflow counts, inventory truth on every card."},{"name":"ecommerce-pro-product-grids-with-quick-add","type":"registry:block","title":"With Quick Add","files":[{"path":"components/blocks/ecommerce-pro/product-grids/with-quick-add.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/with-quick-add.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Consumable cards with add buttons so replenishment never leaves the listing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-grids-with-rating-rows","type":"registry:block","title":"With Rating Rows","files":[{"path":"components/blocks/ecommerce-pro/product-grids/with-rating-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/with-rating-rows.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Cards led by their rating row and closed with one quoted review line each.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-product-grids-with-size-availability","type":"registry:block","title":"With Size Availability","files":[{"path":"components/blocks/ecommerce-pro/product-grids/with-size-availability.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-grids/with-size-availability.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A product grid printing every size on each card, live sizes as chips and sold out sizes struck through with a one line restock note."},{"name":"ecommerce-pro-product-overviews-accessory-overview","type":"registry:block","title":"Accessory Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/accessory-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/accessory-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The $22 brass fob page with three spec rows, the straight faced guarantee, and shipping honesty.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-bundle-kit-overview","type":"registry:block","title":"Bundle Kit Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/bundle-kit-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/bundle-kit-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Every kit piece priced on its own row with the belt advisory directing belt owners to skip and save.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-bundle-product","type":"registry:block","title":"Bundle Product","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/bundle-product.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/bundle-product.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A set priced against its itemized total with every included piece and its solo price.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-capacity-overview","type":"registry:block","title":"Capacity Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/capacity-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/capacity-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A product overview pairing a numbered interior map of every compartment with a matching legend that names what each one holds.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-digital-download","type":"registry:block","title":"Digital Download","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/digital-download.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/digital-download.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A digital product with its exact file manifest, license terms, and a free sample.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-gallery-with-details","type":"registry:block","title":"Gallery With Details","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/gallery-with-details.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/gallery-with-details.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The canonical product top, gallery with thumbnail rail beside price, rating, and buy stack.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-heavy-freight-overview","type":"registry:block","title":"Heavy Freight Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/heavy-freight-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/heavy-freight-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The furniture page where delivery gets equal billing, crew, room, doorway.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-limited-colorway-overview","type":"registry:block","title":"Limited Colorway Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/limited-colorway-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/limited-colorway-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One dye lot of 200, live counts, the restock verdict, and the permanent alternative named below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-made-to-order-overview","type":"registry:block","title":"Made To Order Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/made-to-order-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/made-to-order-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The bespoke product with its make week, live queue, and charged at dispatch promise.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-minimal-product-spec","type":"registry:block","title":"Minimal Product Spec","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/minimal-product-spec.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/minimal-product-spec.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A spec table doing the persuading, seven concrete rows and no imagery by design.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-overview-with-inline-faq","type":"registry:block","title":"Overview With Inline Faq","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/overview-with-inline-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/overview-with-inline-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Product page ending in three inbox sourced questions answered with the specificity that reduces returns.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-overview-with-trade-in-offer","type":"registry:block","title":"Overview With Trade In Offer","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/overview-with-trade-in-offer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/overview-with-trade-in-offer.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Product page with the trade in card inline, credit landing at the courier scan, any brand accepted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-personalised-product-overview","type":"registry:block","title":"Personalised Product Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/personalised-product-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/personalised-product-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Live initials preview on the product as you type, placement honesty included.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-product-video-split","type":"registry:block","title":"Product Video Split","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/product-video-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/product-video-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The demo video chaptered, jump straight to the rain test or the pockets.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-refurbished-grade-overview","type":"registry:block","title":"Refurbished Grade Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/refurbished-grade-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/refurbished-grade-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One traded in unit with its serial, inspection report, and price against new.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-split-with-sticky-buy","type":"registry:block","title":"Split With Sticky Buy","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/split-with-sticky-buy.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/split-with-sticky-buy.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A long product story scrolls while a compact buy panel stays pinned beside it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-subscription-options","type":"registry:block","title":"Subscription Options","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/subscription-options.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/subscription-options.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One time versus subscribe as selectable cards with the cancel terms inside the option.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-trade-unit-overview","type":"registry:block","title":"Trade Unit Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/trade-unit-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/trade-unit-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The B2B product page with volume bands, one fleet spec change stated, Net 30 terms, and an order pad CTA.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-accordion-details","type":"registry:block","title":"With Accordion Details","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-accordion-details.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-accordion-details.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A clean buy fold with materials, care, shipping, and guarantee folded into an accordion.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-ingredients-list","type":"registry:block","title":"With Ingredients List","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-ingredients-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-ingredients-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Every ingredient named with purpose and source, the INCI pattern for goods.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-model-comparison","type":"registry:block","title":"With Model Comparison","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-model-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-model-comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A product overview above a full comparison table of every model in the range, the viewed column highlighted with its buy button inside.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-monogram-options","type":"registry:block","title":"With Monogram Options","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-monogram-options.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-monogram-options.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Letters, placement chips, and the return gate stated before the button changes to say no returns.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-press-quote","type":"registry:block","title":"With Press Quote","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-press-quote.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-press-quote.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The buy decision anchored on one earned press sentence, framed and linked.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-review-snapshot","type":"registry:block","title":"With Review Snapshot","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-review-snapshot.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-review-snapshot.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two column product overview pairing an image and buy stack with a star rating histogram and owner scored fit scales beneath.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-shipping-estimator","type":"registry:block","title":"With Shipping Estimator","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-shipping-estimator.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-shipping-estimator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Postcode in, a dated delivery answer out, the when question solved on the page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-size-guide-link","type":"registry:block","title":"With Size Guide Link","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-size-guide-link.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-size-guide-link.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Fit guidance at the size row, a crowd verdict banner and a measured guide link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-store-pickup","type":"registry:block","title":"With Store Pickup","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-store-pickup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-store-pickup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A product overview with delivery and pickup modes, a nearby store list showing live stock and hours, and the route echoed in the cart button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-sustainability-panel","type":"registry:block","title":"With Sustainability Panel","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-sustainability-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-sustainability-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Checkable environment facts with the mill named, repairs counted, and the carbon badge refused until measured.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-trust-row","type":"registry:block","title":"With Trust Row","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-trust-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-trust-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The buy stack closing on four promise tiles that lead with numbers, not adjectives.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-variant-swatches","type":"registry:block","title":"With Variant Swatches","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-variant-swatches.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-variant-swatches.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Working color and size selection with the chosen pair echoed in the add to cart button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-product-overviews-with-wear-photos-overview","type":"registry:block","title":"With Wear Photos Overview","files":[{"path":"components/blocks/ecommerce-pro/product-overviews/with-wear-photos-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/product-overviews/with-wear-photos-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A gallery aging timeline shows the same bag at new, year one, and year three before checkout.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-promo-sections-birthday-club-card","type":"registry:block","title":"Birthday Club Card","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/birthday-club-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/birthday-club-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"The birthday perk that asks for the month, not the date, terms in one line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-bogo-promo-split","type":"registry:block","title":"Bogo Promo Split","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/bogo-promo-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/bogo-promo-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Buy one gift one with the mechanics in three lines and a live unit counter.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-bundle-and-save-band","type":"registry:block","title":"Bundle And Save Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/bundle-and-save-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/bundle-and-save-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Kit math published in full, both prices printed, the shipping logic underneath.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-bundle-deal-card","type":"registry:block","title":"Bundle Deal Card","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/bundle-deal-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/bundle-deal-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two products joined by a plus with the pair price and the saving in the button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-countdown-sale-banner","type":"registry:block","title":"Countdown Sale Banner","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/countdown-sale-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/countdown-sale-banner.tsx"}],"description":"A real deadline in a primary band with the policy that powers it, we do not extend."},{"name":"ecommerce-pro-promo-sections-discount-code-band","type":"registry:block","title":"Discount Code Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/discount-code-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/discount-code-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"One code in a dashed ticket box with copy button and terms in a single honest line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-end-of-season-honesty-band","type":"registry:block","title":"End Of Season Honesty Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/end-of-season-honesty-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/end-of-season-honesty-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The seasonal canvas leaving on a date at an unchanged price with the warehouse math printed plainly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-flash-sale-rows","type":"registry:block","title":"Flash Sale Rows","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/flash-sale-rows.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/flash-sale-rows.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The odds and ends rack where every discount names its reason and its exact stock.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-promo-sections-free-gift-with-purchase","type":"registry:block","title":"Free Gift With Purchase","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/free-gift-with-purchase.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/free-gift-with-purchase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The $18 tin free over $150, the real product, not a giveaway sachet.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-free-shipping-banner","type":"registry:block","title":"Free Shipping Banner","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/free-shipping-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/free-shipping-banner.tsx"}],"description":"The threshold as a quiet permanent strip, same number all year, even December.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-promo-sections-member-pricing-callout","type":"registry:block","title":"Member Pricing Callout","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/member-pricing-callout.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/member-pricing-callout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The loyalty program pitched by a three row price table, not points, not tiers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-members-week-band","type":"registry:block","title":"Members Week Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/members-week-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/members-week-band.tsx"}],"description":"Early archive access for members 48 hours before the public, with the public date printed equally large."},{"name":"ecommerce-pro-promo-sections-mix-and-match-promo","type":"registry:block","title":"Mix And Match Promo","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/mix-and-match-promo.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/mix-and-match-promo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A mix and match promo with a heading, a six tile picking grid marking two chosen items, and a footer bar tracking the kit total.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-price-drop-protection","type":"registry:block","title":"Price Drop Protection","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/price-drop-protection.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/price-drop-protection.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A two column price drop promise pairing three numbered steps with a worked refund receipt showing the markdown difference returned to the card.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-promo-sections-referral-program-split","type":"registry:block","title":"Referral Program Split","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/referral-program-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/referral-program-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Both sides of the referral deal as equal cards, credited when the order ships.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-sale-calendar-band","type":"registry:block","title":"Sale Calendar Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/sale-calendar-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/sale-calendar-band.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A centered sale calendar with a heading and a bordered list of dated sale rows, each carrying scope copy and a live status badge.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-promo-sections-seasonal-promo-tiles","type":"registry:block","title":"Seasonal Promo Tiles","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/seasonal-promo-tiles.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/seasonal-promo-tiles.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Every live offer on one screen, each tile carrying its real end condition.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-promo-sections-spend-save-ladder","type":"registry:block","title":"Spend Save Ladder","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/spend-save-ladder.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/spend-save-ladder.tsx"}],"description":"Three rungs with the effective percentage worked at each one."},{"name":"ecommerce-pro-promo-sections-student-discount-card","type":"registry:block","title":"Student Discount Card","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/student-discount-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/student-discount-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ten percent off with the verification time, stacking rules, and honest scope all stated before the button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-trade-in-bonus-band","type":"registry:block","title":"Trade In Bonus Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/trade-in-bonus-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/trade-in-bonus-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A dated 20 percent trade in credit bonus with the demand side reason published inline.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-vip-early-access-band","type":"registry:block","title":"Vip Early Access Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/vip-early-access-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/vip-early-access-band.tsx"}],"description":"The earned regulars tier published whole, benefits, rule, and member count."},{"name":"ecommerce-pro-promo-sections-weekend-flash-band","type":"registry:block","title":"Weekend Flash Band","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/weekend-flash-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/weekend-flash-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A real window, a counted scope, and the overstock reason published.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-welcome-offer-signup","type":"registry:block","title":"Welcome Offer Signup","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/welcome-offer-signup.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/welcome-offer-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column email signup with a headline offer, address form, and a fact list on the right spelling out exactly what the newsletter sends.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-promo-sections-why-no-birthday-club","type":"registry:block","title":"Why No Birthday Club","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/why-no-birthday-club.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/why-no-birthday-club.tsx"}],"description":"The birthday discount declined as data minimalism with what Acme holds and will not ask for."},{"name":"ecommerce-pro-promo-sections-why-no-coupon-field","type":"registry:block","title":"Why No Coupon Field","files":[{"path":"components/blocks/ecommerce-pro/promo-sections/why-no-coupon-field.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/promo-sections/why-no-coupon-field.tsx"}],"description":"The missing code box defended in three arguments, with the gift card exception."},{"name":"ecommerce-pro-repair-service-sections-bench-queue-status","type":"registry:block","title":"Bench Queue Status","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/bench-queue-status.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/bench-queue-status.tsx"}],"description":"The repair backlog live, queue depth, turnaround, and the bench named."},{"name":"ecommerce-pro-repair-service-sections-mail-in-steps","type":"registry:block","title":"Mail In Steps","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/mail-in-steps.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/mail-in-steps.tsx"}],"description":"The postal repair in four cards with packing guidance that prevents real mistakes.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-repair-service-sections-meet-the-bench","type":"registry:block","title":"Meet The Bench","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/meet-the-bench.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/meet-the-bench.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A centered intro above two profile cards, each with an avatar, bio, and three stat rows, closed by a signed card note.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-repair-service-sections-parts-trade-in","type":"registry:block","title":"Parts Trade In","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/parts-trade-in.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/parts-trade-in.tsx"}],"description":"A two column trade in layout with three numbered steps beside a tiered credit table of four condition rows and a closing note."},{"name":"ecommerce-pro-repair-service-sections-repair-cost-estimator","type":"registry:block","title":"Repair Cost Estimator","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-cost-estimator.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-cost-estimator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Damage type and warranty status in, the real bench price out, with every guarantee repair confirmed at zero.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-repair-service-sections-repair-glossary","type":"registry:block","title":"Repair Glossary","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-glossary.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-glossary.tsx"}],"description":"The four bench terms defined in ruled rows with prices so every estimate reads without decoding."},{"name":"ecommerce-pro-repair-service-sections-repair-guarantee-terms","type":"registry:block","title":"Repair Guarantee Terms","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-guarantee-terms.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-guarantee-terms.tsx"}],"description":"A centered heading over two side by side cards listing what the guarantee covers and excludes, closed by a one line claim path.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-repair-service-sections-repair-pricing-table","type":"registry:block","title":"Repair Pricing Table","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-pricing-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-pricing-table.tsx"}],"description":"The out of warranty menu published, seven jobs with prices and bench time."},{"name":"ecommerce-pro-repair-service-sections-repair-request-form","type":"registry:block","title":"Repair Request Form","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-request-form.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-request-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Three fields and two photos start the repair, with the schedule promised in dates.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-repair-service-sections-repair-status-timeline","type":"registry:block","title":"Repair Status Timeline","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-status-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-status-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A two column repair tracker pairing an intro with a card that steps one ticket through five bench stages on a vertical status timeline.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-repair-service-sections-repair-stories-gallery","type":"registry:block","title":"Repair Stories Gallery","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-stories-gallery.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-stories-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Before and after pairs with bench notes, the guarantee shown working."},{"name":"ecommerce-pro-repair-service-sections-repair-turnaround-stats","type":"registry:block","title":"Repair Turnaround Stats","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-turnaround-stats.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-turnaround-stats.tsx"}],"description":"Four bench metrics published like a support inbox with the October queue spike stated upfront."},{"name":"ecommerce-pro-repair-service-sections-repair-vs-replace-guide","type":"registry:block","title":"Repair Vs Replace Guide","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/repair-vs-replace-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/repair-vs-replace-guide.tsx"}],"description":"The bench's decision rules, including neither and sadly replace."},{"name":"ecommerce-pro-repair-service-sections-spare-parts-grid","type":"registry:block","title":"Spare Parts Grid","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/spare-parts-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/spare-parts-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Every replaceable part sold individually with fit notes and honest difficulty."},{"name":"ecommerce-pro-repair-service-sections-walk-in-hours-card","type":"registry:block","title":"Walk In Hours Card","files":[{"path":"components/blocks/ecommerce-pro/repair-service-sections/walk-in-hours-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/repair-service-sections/walk-in-hours-card.tsx"}],"description":"Friday bench hours with the fixable list, the ticket list, and no appointment needed.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resale-sections-bench-restoration-log","type":"registry:block","title":"Bench Restoration Log","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/bench-restoration-log.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/bench-restoration-log.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three column triptych follows one traded in unit from arrival notes through itemized bench work to a regraded listing with price and guarantee."},{"name":"ecommerce-pro-resale-sections-buyback-explainer","type":"registry:block","title":"Buyback Explainer","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/buyback-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/buyback-explainer.tsx"}],"description":"Why the store buys its own products back, the business case stated out loud."},{"name":"ecommerce-pro-resale-sections-circularity-stats-band","type":"registry:block","title":"Circularity Stats Band","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/circularity-stats-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/circularity-stats-band.tsx"}],"description":"The loop counted in five tiles, with zero landfilled labeled as the one that matters."},{"name":"ecommerce-pro-resale-sections-consignment-vs-buyback-table","type":"registry:block","title":"Consignment Vs Buyback Table","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/consignment-vs-buyback-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/consignment-vs-buyback-table.tsx"}],"description":"Two resale routes on four rows, the 12% failure rate included, no verdict picked."},{"name":"ecommerce-pro-resale-sections-new-vs-used-compare","type":"registry:block","title":"New Versus Used Compare","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/new-vs-used-compare.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/new-vs-used-compare.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two side by side cards contrast buying new against a graded resale unit, each with an image, price, four condition rows, and a buy button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-resale-sections-provenance-report-card","type":"registry:block","title":"Provenance Report Card","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/provenance-report-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/provenance-report-card.tsx"}],"description":"One resale unit documented from first sale to regrade with a timestamped record that travels to every owner.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resale-sections-resale-drop-calendar","type":"registry:block","title":"Resale Drop Calendar","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/resale-drop-calendar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/resale-drop-calendar.tsx"}],"description":"Upcoming graded batches as dated rows including one entry honest enough to call itself TBD.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resale-sections-resale-faq","type":"registry:block","title":"Resale Faq","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/resale-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/resale-faq.tsx"}],"description":"Buyer and seller questions answered, guarantees per grade and the regret clause."},{"name":"ecommerce-pro-resale-sections-resale-grading-scale","type":"registry:block","title":"Resale Grading Scale","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/resale-grading-scale.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/resale-grading-scale.tsx"}],"description":"Four grades defined once with prices and the guarantees that travel with them."},{"name":"ecommerce-pro-resale-sections-resale-value-curve","type":"registry:block","title":"Resale Value Curve","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/resale-value-curve.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/resale-value-curve.tsx"}],"description":"A two column split pairs a heading and three retention notes with a card charting resale value falling over six years to a marked floor."},{"name":"ecommerce-pro-resale-sections-secondhand-grid","type":"registry:block","title":"Secondhand Grid","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/secondhand-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/secondhand-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One of one graded pieces with history lines, used goods sold as biographies."},{"name":"ecommerce-pro-resale-sections-sell-back-steps","type":"registry:block","title":"Sell Back Steps","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/sell-back-steps.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/sell-back-steps.tsx"}],"description":"Estimate to credit in four steps, about a week, the estimate locked from the first.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resale-sections-trade-in-estimator","type":"registry:block","title":"Trade In Estimator","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/trade-in-estimator.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/trade-in-estimator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Product and honest condition in, the credit out, regrades only ever go up.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-resale-sections-what-we-take","type":"registry:block","title":"What We Take","files":[{"path":"components/blocks/ecommerce-pro/resale-sections/what-we-take.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resale-sections/what-we-take.tsx"}],"description":"A centered intro sits above two panels, one listing four accepted trade ins with reasons and another listing the four kinds it declines.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resolution-sections-chargeback-honesty-card","type":"registry:block","title":"Chargeback Honesty Card","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/chargeback-honesty-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/chargeback-honesty-card.tsx"}],"description":"The dispute button named as your right with honest speed math on both routes and a published record."},{"name":"ecommerce-pro-resolution-sections-complaint-process-explainer","type":"registry:block","title":"Complaint Process Explainer","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/complaint-process-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/complaint-process-explainer.tsx"}],"description":"Three complaint stages with real durations and the exits past the store linked rather than buried."},{"name":"ecommerce-pro-resolution-sections-damage-report-card","type":"registry:block","title":"Damage Report Card","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/damage-report-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/damage-report-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A three step damaged item flow beside a static report form with order number field, photo drop area, fix choices, and submit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-resolution-sections-dispute-timeline-explainer","type":"registry:block","title":"Dispute Timeline Explainer","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/dispute-timeline-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/dispute-timeline-explainer.tsx"}],"description":"The chargeback path dated from day zero with honest advice on when a refund request beats it by weeks."},{"name":"ecommerce-pro-resolution-sections-escalation-contacts-card","type":"registry:block","title":"Escalation Contacts Card","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/escalation-contacts-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/escalation-contacts-card.tsx"}],"description":"Real addresses in order from the support inbox to the founder to the dispute body that binds the store."},{"name":"ecommerce-pro-resolution-sections-make-it-right-promise","type":"registry:block","title":"Make It Right Promise","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/make-it-right-promise.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/make-it-right-promise.tsx"}],"description":"Three automatic fixes for failures the store caused and the line between help and compensation.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resolution-sections-refund-status-card","type":"registry:block","title":"Refund Status Card","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/refund-status-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/refund-status-card.tsx"}],"description":"An example refund tracked across four stages from approval to statement, with wait bars per payment method and an escalation line below.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-resolution-sections-remedy-options-card","type":"registry:block","title":"Remedy Options Card","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/remedy-options-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/remedy-options-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Four remedy cards side by side, each with an icon, an optional badge, a description, and a spec row stating speed and any extra.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-resolution-sections-resolution-case-log","type":"registry:block","title":"Resolution Case Log","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/resolution-case-log.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/resolution-case-log.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A single complaint published as a timestamped thread, customer and support messages with system notes between them and the fix cost logged.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-resolution-sections-resolution-outcomes-report","type":"registry:block","title":"Resolution Outcomes Report","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/resolution-outcomes-report.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/resolution-outcomes-report.tsx"}],"description":"A quarterly complaint report with four headline stat tiles, a shared legend, and segmented bars showing where each complaint category ended."},{"name":"ecommerce-pro-resolution-sections-second-look-appeal","type":"registry:block","title":"Second Look Appeal","files":[{"path":"components/blocks/ecommerce-pro/resolution-sections/second-look-appeal.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/resolution-sections/second-look-appeal.tsx"}],"description":"A two column appeal section with a three step path on one side and last quarter's appeal outcomes and a segmented bar beside it."},{"name":"ecommerce-pro-restock-sections-batch-status-tracker","type":"registry:block","title":"Batch Status Tracker","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/batch-status-tracker.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/batch-status-tracker.tsx"}],"description":"A production heading, a three fact strip, and a five stage vertical timeline of done, in progress, and upcoming stages, each with a dated note.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-restock-sections-drop-calendar-list","type":"registry:block","title":"Drop Calendar List","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/drop-calendar-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/drop-calendar-list.tsx"}],"description":"The release pipeline with exact dates emphasized and honest months muted."},{"name":"ecommerce-pro-restock-sections-most-requested-restocks-list","type":"registry:block","title":"Most Requested Restocks List","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/most-requested-restocks-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/most-requested-restocks-list.tsx"}],"description":"The five longest waitlists ranked by queue length, each with batch math and an honest date or unknown."},{"name":"ecommerce-pro-restock-sections-next-drop-countdown","type":"registry:block","title":"Next Drop Countdown","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/next-drop-countdown.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/next-drop-countdown.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split section with a heading, three countdown tiles, waitlist buttons, and a final contents list with unit counts beside placeholder imagery.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-restock-sections-notify-me-card","type":"registry:block","title":"Notify Me Card","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/notify-me-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/notify-me-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Out of stock as a dated promise with queue size against batch size.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-restock-sections-notify-me-inline-row","type":"registry:block","title":"Notify Me Inline Row","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/notify-me-inline-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/notify-me-inline-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The sold out inline row with the batch date when known and the honest unknown when not, order noted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-restock-sections-preorder-explainer","type":"registry:block","title":"Preorder Explainer","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/preorder-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/preorder-explainer.tsx"}],"description":"Batch preorder mechanics in four steps, charged at dispatch, never before."},{"name":"ecommerce-pro-restock-sections-queue-fairness-policy","type":"registry:block","title":"Queue Fairness Policy","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/queue-fairness-policy.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/queue-fairness-policy.tsx"}],"description":"A heading, an intro, and a two by two grid of four icon cards, each stating one waitlist fairness rule, with a closing policy line.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-restock-sections-restock-history-log","type":"registry:block","title":"Restock History Log","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/restock-history-log.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/restock-history-log.tsx"}],"description":"Every past restock dated with units and sell through, the receipt behind the ETA."},{"name":"ecommerce-pro-restock-sections-restock-history-note","type":"registry:block","title":"Restock History Note","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/restock-history-note.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/restock-history-note.tsx"}],"description":"A year of restock promises scored against what landed, the miss included."},{"name":"ecommerce-pro-restock-sections-size-restock-table","type":"registry:block","title":"Size Restock Table","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/size-restock-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/size-restock-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A heading and a per size table with status badges, next batch dates, queue lengths, and a notify or add to cart action per row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-restock-sections-stock-counts-explainer","type":"registry:block","title":"Stock Counts Explainer","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/stock-counts-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/stock-counts-explainer.tsx"}],"description":"How the counters work, sworn in public, the hand set field does not exist."},{"name":"ecommerce-pro-restock-sections-waitlist-position-card","type":"registry:block","title":"Waitlist Position Card","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/waitlist-position-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/waitlist-position-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Your queue position with the batch math stated and a leave button with no guilt.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-restock-sections-why-batches-explainer","type":"registry:block","title":"Why Batches Explainer","files":[{"path":"components/blocks/ecommerce-pro/restock-sections/why-batches-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/restock-sections/why-batches-explainer.tsx"}],"description":"The four operational reasons everything restocks in batches, linked from every sold out tile."},{"name":"ecommerce-pro-returns-sections-damaged-item-fast-track","type":"registry:block","title":"Damaged Item Fast Track","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/damaged-item-fast-track.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/damaged-item-fast-track.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split layout pairs three photo first steps for damaged arrivals with a static report panel of issue rows, a dropzone, and a submit button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-returns-sections-dropoff-map-list","type":"registry:block","title":"Dropoff Map List","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/dropoff-map-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/dropoff-map-list.tsx"}],"description":"Three nearest return drop points listed with distance, hours, and the honest queue note per row.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-returns-sections-exchange-instead-panel","type":"registry:block","title":"Exchange Instead Panel","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/exchange-instead-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/exchange-instead-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The swap offer on the honest speed argument, with the refund button kept full size.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-returns-sections-holiday-return-window","type":"registry:block","title":"Holiday Return Window","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/holiday-return-window.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/holiday-return-window.tsx"}],"description":"A three date stat rail marks the holiday window opening, cutoff, and deadline, with gift return notes and a rule that the longer window wins."},{"name":"ecommerce-pro-returns-sections-instant-store-credit-option","type":"registry:block","title":"Instant Store Credit Option","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/instant-store-credit-option.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/instant-store-credit-option.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Card refund in 2 to 4 bank days or instant store credit with the reasoning for no bonus published.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-returns-sections-plain-language-policy","type":"registry:block","title":"Plain Language Policy","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/plain-language-policy.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/plain-language-policy.tsx"}],"description":"The whole returns policy in eight numbered sentences, the legal version linked, not inflicted."},{"name":"ecommerce-pro-returns-sections-refund-timeline-explainer","type":"registry:block","title":"Refund Timeline Explainer","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/refund-timeline-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/refund-timeline-explainer.tsx"}],"description":"Where the money is at each stage, who holds it, and which days are the bank."},{"name":"ecommerce-pro-returns-sections-return-condition-guide","type":"registry:block","title":"Return Condition Guide","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/return-condition-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/return-condition-guide.tsx"}],"description":"Two side by side lists sort eight returns into full refund and keep it, with a closing line routing gray area cases to a person.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-returns-sections-return-label-steps","type":"registry:block","title":"Return Label Steps","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/return-label-steps.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/return-label-steps.tsx"}],"description":"Print, QR, or pickup, two free and one priced at the courier cost it is.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-returns-sections-return-tracking-status","type":"registry:block","title":"Return Tracking Status","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/return-tracking-status.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/return-tracking-status.tsx"}],"description":"The return tracked with the refund milestone embedded before the warehouse stage.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-returns-sections-returns-faq","type":"registry:block","title":"Returns Faq","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/returns-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/returns-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Six questions from the returns inbox, including the used item and the missed deadline.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-returns-sections-returns-feedback-loop","type":"registry:block","title":"Returns Feedback Loop","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/returns-feedback-loop.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/returns-feedback-loop.tsx"}],"description":"Three product rows each pair the top return note with the fix that shipped and a before and after return rate stat column."},{"name":"ecommerce-pro-returns-sections-start-return-flow","type":"registry:block","title":"Start Return Flow","files":[{"path":"components/blocks/ecommerce-pro/returns-sections/start-return-flow.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/returns-sections/start-return-flow.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The order as selectable rows, the refund promised at the courier scan, not the warehouse.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-reviews-sections-ask-an-owner-qa","type":"registry:block","title":"Ask An Owner Qa","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/ask-an-owner-qa.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/ask-an-owner-qa.tsx"}],"description":"Three QA threads answered by verified owners, staff stepping in once and labeled loudly for it."},{"name":"ecommerce-pro-reviews-sections-critical-reviews-page","type":"registry:block","title":"Critical Reviews Page","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/critical-reviews-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/critical-reviews-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"All critical reviews under four stars, newest first with store replies and the honest count of 412.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-reviews-sections-most-helpful-pair","type":"registry:block","title":"Most Helpful Pair","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/most-helpful-pair.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/most-helpful-pair.tsx"}],"description":"The top voted positive and critical reviews side by side, both right.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-most-helpful-reviews-panel","type":"registry:block","title":"Most Helpful Reviews Panel","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/most-helpful-reviews-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/most-helpful-reviews-panel.tsx"}],"description":"The top voted positive and critical reviews side by side, chosen by readers.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-photo-review-guidelines-card","type":"registry:block","title":"Photo Review Guidelines Card","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/photo-review-guidelines-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/photo-review-guidelines-card.tsx"}],"description":"Three honest rules for a useful review photo, a do and do not table, and the five dollar credit terms.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-photo-review-wall","type":"registry:block","title":"Photo Review Wall","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/photo-review-wall.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/photo-review-wall.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Customer photos with stars, one line, and ownership time from order dates.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-questions-and-answers","type":"registry:block","title":"Questions And Answers","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/questions-and-answers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/questions-and-answers.tsx"}],"description":"Pre purchase questions answered by the team and by owners, labeled and timed."},{"name":"ecommerce-pro-reviews-sections-rating-over-time-chart","type":"registry:block","title":"Rating Over Time Chart","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/rating-over-time-chart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/rating-over-time-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Monthly rating as a shadcn line with the dip kept and its recall explained.","dependencies":["recharts"]},{"name":"ecommerce-pro-reviews-sections-rating-summary-with-bars","type":"registry:block","title":"Rating Summary With Bars","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/rating-summary-with-bars.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/rating-summary-with-bars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The average beside the full distribution, with the one star reviews linked first.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-reviews-sections-review-cards-grid","type":"registry:block","title":"Review Cards Grid","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/review-cards-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/review-cards-grid.tsx"}],"description":"Six short reviews that show how long each reviewer has owned the piece.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-review-highlights-summary","type":"registry:block","title":"Review Highlights Summary","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/review-highlights-summary.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/review-highlights-summary.tsx"}],"description":"Recurring review themes with counts and quotes, the mixed one kept, method disclosed."},{"name":"ecommerce-pro-reviews-sections-review-incentives-disclosure","type":"registry:block","title":"Review Incentives Disclosure","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/review-incentives-disclosure.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/review-incentives-disclosure.tsx"}],"description":"What reviewers are paid, published next to the stars it governs."},{"name":"ecommerce-pro-reviews-sections-review-list-with-photos","type":"registry:block","title":"Review List With Photos","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/review-list-with-photos.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/review-list-with-photos.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Full reviews with photo strips and the three star repair story kept on page one.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-review-topic-filters","type":"registry:block","title":"Review Topic Filters","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/review-topic-filters.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/review-topic-filters.tsx"}],"description":"Topic chips filter live review quotes by what buyers actually worry about, with mention counts."},{"name":"ecommerce-pro-reviews-sections-reviews-milestone-band","type":"registry:block","title":"Reviews Milestone Band","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/reviews-milestone-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/reviews-milestone-band.tsx"}],"description":"The review program audited, including the critical share, all published."},{"name":"ecommerce-pro-reviews-sections-reviews-over-the-years","type":"registry:block","title":"Reviews Over The Years","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/reviews-over-the-years.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/reviews-over-the-years.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"One quote per ownership band, year one to year five plus, sorted so time does the arguing."},{"name":"ecommerce-pro-reviews-sections-reviews-with-fit-feedback","type":"registry:block","title":"Reviews With Fit Feedback","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/reviews-with-fit-feedback.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/reviews-with-fit-feedback.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Fit verdict as three div bars with 412 buyer sample, beside two quotes anchored to height and load carried."},{"name":"ecommerce-pro-reviews-sections-spotlight-review","type":"registry:block","title":"Spotlight Review","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/spotlight-review.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/spotlight-review.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One earned review at editorial scale with the customer's own photos and provenance.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-store-response-thread","type":"registry:block","title":"Store Response Thread","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/store-response-thread.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/store-response-thread.tsx"}],"description":"Critical reviews with signed public replies and the fixes they caused.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-verified-buyer-strip","type":"registry:block","title":"Verified Buyer Strip","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/verified-buyer-strip.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/verified-buyer-strip.tsx"}],"description":"The review system's three rules with enforcement counts, the policy as a trust band.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-reviews-sections-write-review-prompt","type":"registry:block","title":"Write Review Prompt","files":[{"path":"components/blocks/ecommerce-pro/reviews-sections/write-review-prompt.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/reviews-sections/write-review-prompt.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The review ask with honest expectations, ninety seconds, wear photos welcome.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-search-sections-empty-search-state","type":"registry:block","title":"Empty Search State","files":[{"path":"components/blocks/ecommerce-pro/search-sections/empty-search-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/search-sections/empty-search-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Zero results handled honestly, what we checked and three real ways forward.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-search-sections-popular-searches-band","type":"registry:block","title":"Popular Searches Band","files":[{"path":"components/blocks/ecommerce-pro/search-sections/popular-searches-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/search-sections/popular-searches-band.tsx"}],"description":"This month's top queries as chips, ranked by real counts and dated."},{"name":"ecommerce-pro-search-sections-search-by-photo-card","type":"registry:block","title":"Search By Photo Card","files":[{"path":"components/blocks/ecommerce-pro/search-sections/search-by-photo-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/search-sections/search-by-photo-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Snap a bag you saw, get the match, the photo deleted the same minute.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-search-sections-search-results-page","type":"registry:block","title":"Search Results Page","files":[{"path":"components/blocks/ecommerce-pro/search-sections/search-results-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/search-sections/search-results-page.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Results for a query with the count, sort, and the close miss row below.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-search-sections-search-suggestions-panel","type":"registry:block","title":"Search Suggestions Panel","files":[{"path":"components/blocks/ecommerce-pro/search-sections/search-suggestions-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/search-sections/search-suggestions-panel.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The open search box, recents, popular now, and direct product jumps.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-search-sections-search-with-filters-bar","type":"registry:block","title":"Search With Filters Bar","files":[{"path":"components/blocks/ecommerce-pro/search-sections/search-with-filters-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/search-sections/search-with-filters-bar.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Results with toggleable filter chips and the count updating per selection.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-seconds-sections-flaw-glossary","type":"registry:block","title":"Flaw Glossary","files":[{"path":"components/blocks/ecommerce-pro/seconds-sections/flaw-glossary.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/seconds-sections/flaw-glossary.tsx"}],"description":"The four words the seconds rail can use, each defined in plain language with a severity line."},{"name":"ecommerce-pro-seconds-sections-photographed-flaw-overview","type":"registry:block","title":"Photographed Flaw Overview","files":[{"path":"components/blocks/ecommerce-pro/seconds-sections/photographed-flaw-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/seconds-sections/photographed-flaw-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One second with the flaw photographed close, the discount named, and the full guarantee unchanged.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-seconds-sections-seconds-faq","type":"registry:block","title":"Seconds Faq","files":[{"path":"components/blocks/ecommerce-pro/seconds-sections/seconds-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/seconds-sections/seconds-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Five seconds rail questions answered with glossary words, the unchanged returns and the pricing spine.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-seconds-sections-seconds-grid","type":"registry:block","title":"Seconds Grid","files":[{"path":"components/blocks/ecommerce-pro/seconds-sections/seconds-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/seconds-sections/seconds-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four one of one pieces each named by its actual flaw and the discount that flaw earned."},{"name":"ecommerce-pro-seconds-sections-seconds-vs-new-table","type":"registry:block","title":"Seconds Vs New Table","files":[{"path":"components/blocks/ecommerce-pro/seconds-sections/seconds-vs-new-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/seconds-sections/seconds-vs-new-table.tsx"}],"description":"Three rows change when you buy a second and four rows do not, and the unchanged column does the selling."},{"name":"ecommerce-pro-seconds-sections-why-seconds-exist-letter","type":"registry:block","title":"Why Seconds Exist Letter","files":[{"path":"components/blocks/ecommerce-pro/seconds-sections/why-seconds-exist-letter.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/seconds-sections/why-seconds-exist-letter.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"The QC lead explains the 4% failure rate, the three options, and why naming the flaw won.","dependencies":["radix-ui"]},{"name":"ecommerce-pro-shopping-carts-bulk-order-cart","type":"registry:block","title":"Bulk Order Cart","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/bulk-order-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/bulk-order-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Trade quantity cart with volume break shown per line and the next break named when the buyer is close.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-stock-warnings","type":"registry:block","title":"Cart Stock Warnings","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-stock-warnings.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-stock-warnings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Line items with live stock truth, including the one that sold out waiting.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-delivery-estimates","type":"registry:block","title":"Cart With Delivery Estimates","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-delivery-estimates.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-delivery-estimates.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Each cart line carries its own arrival date and the made to order batch date before payment.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-eco-options","type":"registry:block","title":"Cart With Eco Options","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-eco-options.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-eco-options.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Packaging and speed choices with real trade offs and the honest $2.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-gift-split","type":"registry:block","title":"Cart With Gift Split","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-gift-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-gift-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Line items grouped by destination, shipping per address, one checkout with gift tracking to you only.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-installments-preview","type":"registry:block","title":"Cart With Installments Preview","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-installments-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-installments-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The total with the four payment split shown inline before the payment page asks you to choose.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-order-notes","type":"registry:block","title":"Cart With Order Notes","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-order-notes.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-order-notes.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A note for the humans packing this, with honored examples that prove readership.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-promo-code","type":"registry:block","title":"Cart With Promo Code","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-promo-code.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-promo-code.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A visible code field that says where codes come from, applied codes itemized.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-recommendations","type":"registry:block","title":"Cart With Recommendations","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-recommendations.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-recommendations.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A clean cart above a cross sell rail where every suggestion states its reason.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-cart-with-save-for-later","type":"registry:block","title":"Cart With Save For Later","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/cart-with-save-for-later.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/cart-with-save-for-later.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The cart with a parked strip that tracks prices and never triggers a campaign.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-compact-cart-summary","type":"registry:block","title":"Compact Cart Summary","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/compact-cart-summary.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/compact-cart-summary.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The cart as one strip, count, named preview, total, and checkout.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-empty-cart-state","type":"registry:block","title":"Empty Cart State","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/empty-cart-state.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/empty-cart-state.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The empty cart as navigation, no guilt, with three labeled exits.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-free-shipping-progress-cart","type":"registry:block","title":"Free Shipping Progress Cart","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/free-shipping-progress-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/free-shipping-progress-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A threshold meter with one honest gap closing suggestion under the items.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-full-cart-page","type":"registry:block","title":"Full Cart Page","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/full-cart-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/full-cart-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The two column cart with steppers and a summary that promises no checkout surprises.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-gift-options-cart","type":"registry:block","title":"Gift Options Cart","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/gift-options-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/gift-options-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A working gift toggle with message field, free wrap, and no prices on gift receipts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-mini-cart-drawer","type":"registry:block","title":"Mini Cart Drawer","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/mini-cart-drawer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/mini-cart-drawer.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The open drawer with two items, a shipping meter, and honest top up arithmetic.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-mini-cart-panel","type":"registry:block","title":"Mini Cart Panel","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/mini-cart-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/mini-cart-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The slide over cart as a standalone panel with both exits given equal standing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-saved-for-later-cart","type":"registry:block","title":"Saved For Later Cart","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/saved-for-later-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/saved-for-later-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The parking shelf under the cart, watched while parked, restocks move back.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-shopping-carts-subscription-items-cart","type":"registry:block","title":"Subscription Items Cart","files":[{"path":"components/blocks/ecommerce-pro/shopping-carts/subscription-items-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/shopping-carts/subscription-items-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Recurring and one time lines separated, with today split from every 4 weeks.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-size-and-fit-belt-sizing-guide","type":"registry:block","title":"Belt Sizing Guide","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/belt-sizing-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/belt-sizing-guide.tsx"}],"description":"Pin to hole on the belt that fits, with the do not order your jeans size rule."},{"name":"ecommerce-pro-size-and-fit-between-sizes-decider","type":"registry:block","title":"Between Sizes Decider","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/between-sizes-decider.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/between-sizes-decider.tsx"}],"description":"One sizing rule per product type, each backed by ten years of exchange data from the ledger."},{"name":"ecommerce-pro-size-and-fit-brand-to-brand-fit-table","type":"registry:block","title":"Brand To Brand Fit Table","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/brand-to-brand-fit-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/brand-to-brand-fit-table.tsx"}],"description":"Four brand archetypes translated to an Acme order, with the outdoor row that sends buyers to centimeters."},{"name":"ecommerce-pro-size-and-fit-fit-notes-panel","type":"registry:block","title":"Fit Notes Panel","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/fit-notes-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/fit-notes-panel.tsx"}],"description":"Four notes from the pattern table, the cut, the between sizes call, and who graded it."},{"name":"ecommerce-pro-size-and-fit-glove-sizing-card","type":"registry:block","title":"Glove Sizing Card","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/glove-sizing-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/glove-sizing-card.tsx"}],"description":"Palm cm to size table with the between sizes rule and the leather stretch already accounted for."},{"name":"ecommerce-pro-size-and-fit-international-size-conversion","type":"registry:block","title":"International Size Conversion","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/international-size-conversion.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/international-size-conversion.tsx"}],"description":"House sizes against four systems, with centimeters as the tiebreaker."},{"name":"ecommerce-pro-size-and-fit-kids-growth-sizing","type":"registry:block","title":"Kids Growth Sizing","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/kids-growth-sizing.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/kids-growth-sizing.tsx"}],"description":"Age bands with buy ahead advice built in, height decides, age approximates."},{"name":"ecommerce-pro-size-and-fit-measure-yourself-guide","type":"registry:block","title":"Measure Yourself Guide","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/measure-yourself-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/measure-yourself-guide.tsx"}],"description":"A drawn figure with three measurement lines, each with a no tape fallback."},{"name":"ecommerce-pro-size-and-fit-measurement-guide-diagram","type":"registry:block","title":"Measurement Guide Diagram","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/measurement-guide-diagram.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/measurement-guide-diagram.tsx"}],"description":"A drawn garment SVG with lettered measurement lines matching the chart."},{"name":"ecommerce-pro-size-and-fit-shoe-size-measure","type":"registry:block","title":"Shoe Size Measure","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/shoe-size-measure.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/shoe-size-measure.tsx"}],"description":"Paper and pen measurement in three steps, then the centimeter table."},{"name":"ecommerce-pro-size-and-fit-size-chart-all-products","type":"registry:block","title":"Size Chart All Products","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/size-chart-all-products.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/size-chart-all-products.tsx"}],"description":"Every sized product on one bookmarkable table, each row linking its full guide and measuring steps.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-size-and-fit-size-chart-table","type":"registry:block","title":"Size Chart Table","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/size-chart-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/size-chart-table.tsx"}],"description":"Garment measurements taken flat, with tolerances and the between sizes verdict."},{"name":"ecommerce-pro-size-and-fit-size-recommender-card","type":"registry:block","title":"Size Recommender Card","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/size-recommender-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/size-recommender-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Height and usual size in, a recommendation with its reasoning printed out.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-size-and-fit-strap-length-guide","type":"registry:block","title":"Strap Length Guide","files":[{"path":"components/blocks/ecommerce-pro/size-and-fit/strap-length-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/size-and-fit/strap-length-guide.tsx"}],"description":"The 40 cm strap range explained via torso not height, with a string measuring method and wear table."},{"name":"ecommerce-pro-social-proof-sections-as-worn-by-row","type":"registry:block","title":"As Worn By Row","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/as-worn-by-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/as-worn-by-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three customers whose work tests the product, with tenure and their own words."},{"name":"ecommerce-pro-social-proof-sections-by-the-numbers-band","type":"registry:block","title":"By The Numbers Band","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/by-the-numbers-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/by-the-numbers-band.tsx"}],"description":"Five proof numbers with sources, picked to show people stay, not just arrive."},{"name":"ecommerce-pro-social-proof-sections-community-spotlight-interview","type":"registry:block","title":"Community Spotlight Interview","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/community-spotlight-interview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/community-spotlight-interview.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One customer at length, three questions, the unfixed pocket kept in."},{"name":"ecommerce-pro-social-proof-sections-creator-collabs-list","type":"registry:block","title":"Creator Collabs List","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/creator-collabs-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/creator-collabs-list.tsx"}],"description":"The collab archive with splits disclosed and honest sell through numbers.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-social-proof-sections-customer-photos-cta","type":"registry:block","title":"Customer Photos Cta","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/customer-photos-cta.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/customer-photos-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The owner photo ask with usage terms up front, older and dirtier preferred.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-social-proof-sections-press-mentions-row","type":"registry:block","title":"Press Mentions Row","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/press-mentions-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/press-mentions-row.tsx"}],"description":"Three dated press quotes, the mixed review kept in on purpose."},{"name":"ecommerce-pro-social-proof-sections-press-quotes-row","type":"registry:block","title":"Press Quotes Row","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/press-quotes-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/press-quotes-row.tsx"}],"description":"Three exact press sentences with text wordmarks and dates instead of logo soup."},{"name":"ecommerce-pro-social-proof-sections-repair-counter-live-band","type":"registry:block","title":"Repair Counter Live Band","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/repair-counter-live-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/repair-counter-live-band.tsx"}],"description":"The year to date repair count as one large integer, broken into three sub counts updated nightly."},{"name":"ecommerce-pro-social-proof-sections-stockist-quotes-row","type":"registry:block","title":"Stockist Quotes Row","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/stockist-quotes-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/stockist-quotes-row.tsx"}],"description":"Three wholesale stockists quoted on why they reorder, with the margin disclosure printed below."},{"name":"ecommerce-pro-social-proof-sections-thanks-milestones-band","type":"registry:block","title":"Thanks Milestones Band","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/thanks-milestones-band.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/thanks-milestones-band.tsx"}],"description":"The stats band as gratitude, these are your numbers, not ours."},{"name":"ecommerce-pro-social-proof-sections-ugc-photo-grid","type":"registry:block","title":"Ugc Photo Grid","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/ugc-photo-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/ugc-photo-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Six owner photos with handles and tenure captions, consent stated in one line."},{"name":"ecommerce-pro-social-proof-sections-years-owned-leaderboard","type":"registry:block","title":"Years Owned Leaderboard","files":[{"path":"components/blocks/ecommerce-pro/social-proof-sections/years-owned-leaderboard.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/social-proof-sections/years-owned-leaderboard.tsx"}],"description":"The longest serving bags from the registration data, numbered rows with a repair prize for first place."},{"name":"ecommerce-pro-spec-sections-capacity-table","type":"registry:block","title":"Capacity Table","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/capacity-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/capacity-table.tsx"}],"description":"Capacity claims tested by packing real things into a real bag with tight and no rows included.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-spec-sections-compatibility-table","type":"registry:block","title":"Compatibility Table","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/compatibility-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/compatibility-table.tsx"}],"description":"Accessories matrix across four bags with every cell tested by clipping and a minus meaning no not yet.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-spec-sections-dimensions-diagram","type":"registry:block","title":"Dimensions Diagram","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/dimensions-diagram.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/dimensions-diagram.tsx"}],"description":"Inline SVG technical line drawing paired with a table for screen readers and copy paste, four callouts."},{"name":"ecommerce-pro-spec-sections-full-spec-sheet","type":"registry:block","title":"Full Spec Sheet","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/full-spec-sheet.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/full-spec-sheet.tsx"}],"description":"The complete spec table with a tolerance column, because handmade varies and pretending generates email."},{"name":"ecommerce-pro-spec-sections-hardware-spec-card","type":"registry:block","title":"Hardware Spec Card","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/hardware-spec-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/hardware-spec-card.tsx"}],"description":"The buckle, zips, and rivets each specified and each carrying its failure rate from the bench log."},{"name":"ecommerce-pro-spec-sections-tolerances-note-card","type":"registry:block","title":"Tolerances Note Card","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/tolerances-note-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/tolerances-note-card.tsx"}],"description":"Three ruled sections on why handmade varies, what never does, and a return promise with no friction."},{"name":"ecommerce-pro-spec-sections-whats-in-the-box","type":"registry:block","title":"Whats In The Box","files":[{"path":"components/blocks/ecommerce-pro/spec-sections/whats-in-the-box.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/spec-sections/whats-in-the-box.tsx"}],"description":"Four items in and four deliberately out, with the absence list carrying the personality of the brand.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-footers-footer-minimal-legal","type":"registry:block","title":"Footer Minimal Legal","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-minimal-legal.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-minimal-legal.tsx"}],"description":"Brand name, four policy links, and a legal bar with company number, sized for checkout pages."},{"name":"ecommerce-pro-store-footers-footer-with-category-sitemap","type":"registry:block","title":"Footer With Category Sitemap","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-category-sitemap.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-category-sitemap.tsx"}],"description":"Every product and collection as a dense directory, completeness stated outright."},{"name":"ecommerce-pro-store-footers-footer-with-company-numbers","type":"registry:block","title":"Footer With Company Numbers","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-company-numbers.tsx"}],"description":"The brand column carries company number, VAT, and the real street address."},{"name":"ecommerce-pro-store-footers-footer-with-language-region","type":"registry:block","title":"Footer With Language Region","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-language-region.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-language-region.tsx"}],"description":"Three storefronts as plain text rows with duty notes per region and the pricing page named openly.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-footers-footer-with-locale-selector","type":"registry:block","title":"Footer With Locale Selector","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-locale-selector.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-locale-selector.tsx"}],"description":"Region, language, and currency as visible selectors with the duties promise localized.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-footers-footer-with-newsletter","type":"registry:block","title":"Footer With Newsletter","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-newsletter.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-newsletter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The capture band leading the footer, one email a month with the open rate as proof.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-footers-footer-with-reviews-score","type":"registry:block","title":"Footer With Reviews Score","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-reviews-score.tsx"}],"description":"The 4.8 with its count in the footer, linking the critical reviews first.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-footers-footer-with-service-links","type":"registry:block","title":"Footer With Service Links","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-service-links.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-service-links.tsx"}],"description":"Service columns instead of category columns: Repairs, Resale, Membership, and Help each named."},{"name":"ecommerce-pro-store-footers-footer-with-trust-row","type":"registry:block","title":"Footer With Trust Row","files":[{"path":"components/blocks/ecommerce-pro/store-footers/footer-with-trust-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/footer-with-trust-row.tsx"}],"description":"The four policy facts as a bordered strip above standard footer columns.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-footers-holiday-hours-footer","type":"registry:block","title":"Holiday Hours Footer","files":[{"path":"components/blocks/ecommerce-pro/store-footers/holiday-hours-footer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/holiday-hours-footer.tsx"}],"description":"The whole December schedule in one ruled list, cutoffs, support, bench."},{"name":"ecommerce-pro-store-footers-mega-store-footer","type":"registry:block","title":"Mega Store Footer","files":[{"path":"components/blocks/ecommerce-pro/store-footers/mega-store-footer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/mega-store-footer.tsx"}],"description":"The full sitemap footer with payment chips and the VAT number European buyers scan for."},{"name":"ecommerce-pro-store-footers-minimal-store-footer","type":"registry:block","title":"Minimal Store Footer","files":[{"path":"components/blocks/ecommerce-pro/store-footers/minimal-store-footer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-footers/minimal-store-footer.tsx"}],"description":"A centered one row footer with the five questions a single product store gets."},{"name":"ecommerce-pro-store-heroes-archive-sale-hero","type":"registry:block","title":"Archive Sale Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/archive-sale-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/archive-sale-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The twice yearly archive sale with the real piece count, listing time, and the full guarantee.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-bestseller-spotlight-hero","type":"registry:block","title":"Bestseller Spotlight Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/bestseller-spotlight-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/bestseller-spotlight-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The one bag that outsells the rest, argued with three audited numbers and an honest lede crediting buyers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-brand-manifesto-hero","type":"registry:block","title":"Brand Manifesto Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/brand-manifesto-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/brand-manifesto-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The position at display size with three receipts, buy it once, we mean the once.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-centered-with-category-links","type":"registry:block","title":"Centered With Category Links","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/centered-with-category-links.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/centered-with-category-links.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The brand promise above four category tiles with style counts, browsing starts here.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-editorial-split-hero","type":"registry:block","title":"Editorial Split Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/editorial-split-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/editorial-split-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The store led by seasonal writing beside a campaign image with its provenance caption.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-founders-welcome-hero","type":"registry:block","title":"Founders Welcome Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/founders-welcome-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/founders-welcome-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A kitchen table origin and a signed refusal list from the founder still packing boxes on Fridays.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-gift-guide-hero","type":"registry:block","title":"Gift Guide Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/gift-guide-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/gift-guide-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The seasonal guide opened by recipient with price floors and the gift card lane.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-gift-season-hero","type":"registry:block","title":"Gift Season Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/gift-season-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/gift-season-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"December hero with real courier cutoff dates, a gift returns promise, and a Placeholder split image panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-hero-with-bestsellers-row","type":"registry:block","title":"Hero With Bestsellers Row","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/hero-with-bestsellers-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/hero-with-bestsellers-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The pitch beside the four most bought products ranked with units sold.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-hero-with-reviews-strip","type":"registry:block","title":"Hero With Reviews Strip","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/hero-with-reviews-strip.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/hero-with-reviews-strip.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The pitch above three one line verified reviews, proof in the fold without a product shot.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-made-here-hero","type":"registry:block","title":"Made Here Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/made-here-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/made-here-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Eleven people, one room, 60 bags a week and the supplier count named on the chain page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-mosaic-collage-hero","type":"registry:block","title":"Mosaic Collage Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/mosaic-collage-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/mosaic-collage-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Five labeled category tiles beside the small range manifesto.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-new-arrivals-hero","type":"registry:block","title":"New Arrivals Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/new-arrivals-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/new-arrivals-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A drop announcement above three new pieces with names and prices in the fold.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-press-quote-hero","type":"registry:block","title":"Press Quote Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/press-quote-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/press-quote-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A publication's verdict as the headline, dated, linked, and not paid for.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-restock-hero","type":"registry:block","title":"Restock Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/restock-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/restock-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The waited for item back, with its queue history and a live unit counter.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-seasonal-prep-hero","type":"registry:block","title":"Seasonal Prep Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/seasonal-prep-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/seasonal-prep-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The October rewax as a ritual, three honest numbers and the bench price for anyone who prefers not.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-seasonal-sale-hero","type":"registry:block","title":"Seasonal Sale Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/seasonal-sale-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/seasonal-sale-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The discount at display scale with the three sale rules listed in full, no countdown gimmicks.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-split-with-product","type":"registry:block","title":"Split With Product","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/split-with-product.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/split-with-product.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A store hero with the flagship product beside price, rating, and the shipping promise.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-store-numbers-hero","type":"registry:block","title":"Store Numbers Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/store-numbers-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/store-numbers-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The tagline replaced by six audited figures, none rounded up.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-text-only-drop-hero","type":"registry:block","title":"Text Only Drop Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/text-only-drop-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/text-only-drop-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A drop announced with facts instead of photos, quantities and restock policy included.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-trade-hero","type":"registry:block","title":"Trade Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/trade-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/trade-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"B2B landing hero with fleet numbers, Net 30 terms, the total repair spend, and the account rep named.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-heroes-video-lookbook-hero","type":"registry:block","title":"Video Lookbook Hero","files":[{"path":"components/blocks/ecommerce-pro/store-heroes/video-lookbook-hero.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-heroes/video-lookbook-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The seasonal film as a wide poster with play badge, runtime, and every piece linked.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-locator-sections-flagship-store-page","type":"registry:block","title":"Flagship Store Page","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/flagship-store-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/flagship-store-page.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The one store, its hours, the bench in view, and honest parking advice."},{"name":"ecommerce-pro-store-locator-sections-flagship-store-split","type":"registry:block","title":"Flagship Store Split","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/flagship-store-split.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/flagship-store-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One store with its services itemized, monogramming times and the seconds shelf.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-locator-sections-in-store-pickup-explainer","type":"registry:block","title":"In Store Pickup Explainer","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/in-store-pickup-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/in-store-pickup-explainer.tsx"}],"description":"Click and collect in three steps, live stock, two hour ready, counter returns."},{"name":"ecommerce-pro-store-locator-sections-stockist-detail-card","type":"registry:block","title":"Stockist Detail Card","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/stockist-detail-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/stockist-detail-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One stockist in full: what is stocked, what is not, hours, services, and the price match promise stated.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-locator-sections-stockists-list","type":"registry:block","title":"Stockists List","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/stockists-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/stockists-list.tsx"}],"description":"Four independent shops with what each shelf actually carries."},{"name":"ecommerce-pro-store-locator-sections-store-events-list","type":"registry:block","title":"Store Events List","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/store-events-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/store-events-list.tsx"}],"description":"Tours, clinics, and pack nights as dated rows with honest small capacities."},{"name":"ecommerce-pro-store-locator-sections-store-list-cards","type":"registry:block","title":"Store List Cards","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/store-list-cards.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/store-list-cards.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Locations with live hours and a what this store uniquely offers line each.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-locator-sections-visit-planner-card","type":"registry:block","title":"Visit Planner Card","files":[{"path":"components/blocks/ecommerce-pro/store-locator-sections/visit-planner-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-locator-sections/visit-planner-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Book half an hour at the counter, fittings, repairs, or deciding between two.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-store-navbars-announcement-navbar-combo","type":"registry:block","title":"Announcement Navbar Combo","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/announcement-navbar-combo.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/announcement-navbar-combo.tsx"}],"description":"Banner and nav as one composed header unit with a dismissible price change preannounce above the bar.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-checkout-header-lock","type":"registry:block","title":"Checkout Header Lock","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/checkout-header-lock.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/checkout-header-lock.tsx"}],"description":"The payment flow header, wordmark, lock line, and one exit back to cart.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-country-selector-navbar","type":"registry:block","title":"Country Selector Navbar","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/country-selector-navbar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/country-selector-navbar.tsx"}],"description":"Navbar with the region panel open: four duty zones, consequence per row, and the cart survives the switch.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-minimal-logo-cart","type":"registry:block","title":"Minimal Logo Cart","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/minimal-logo-cart.tsx"}],"description":"The navbar stripped to wordmark, one trust link, and the cart for single product stores.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-mobile-menu-open-panel","type":"registry:block","title":"Mobile Menu Open Panel","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/mobile-menu-open-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/mobile-menu-open-panel.tsx"}],"description":"Static open state mobile nav with expanded sub-links, utility rows, and the support hours footer.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-announcement","type":"registry:block","title":"Nav With Announcement","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-announcement.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-announcement.tsx"}],"description":"An announcement strip and slim nav designed as one unit, dated message included.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-cart-search","type":"registry:block","title":"Nav With Cart Search","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-cart-search.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-cart-search.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The standard store header with inline search and the icon trio with cart count.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-category-bar","type":"registry:block","title":"Nav With Category Bar","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-category-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-category-bar.tsx"}],"description":"A brand row above a scrolling category bar with the current section underlined.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-mega-menu-panel","type":"registry:block","title":"Nav With Mega Menu Panel","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-mega-menu-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-mega-menu-panel.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The navbar with its mega panel open, link columns plus a help deciding column.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-order-status-strip","type":"registry:block","title":"Nav With Order Status Strip","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-order-status-strip.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-order-status-strip.tsx"}],"description":"Standard navbar with a dismissible strip showing the active order, ship date, and tracking link.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-utility-bar","type":"registry:block","title":"Nav With Utility Bar","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-utility-bar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-utility-bar.tsx"}],"description":"A support fact, order tracking, and locale picker in a slim strip above the nav.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-nav-with-wishlist-count","type":"registry:block","title":"Nav With Wishlist Count","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/nav-with-wishlist-count.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/nav-with-wishlist-count.tsx"}],"description":"Wishlist heart as a first class nav icon with a count badge and a price drop dot explained below.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-search-overlay-panel","type":"registry:block","title":"Search Overlay Panel","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/search-overlay-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/search-overlay-panel.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The search open mid query, products and guides split into two columns.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-service-first-navbar","type":"registry:block","title":"Service First Navbar","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/service-first-navbar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/service-first-navbar.tsx"}],"description":"Primary nav with Repairs, Resale, and Membership first, plus a live bench queue strip below.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-store-navbars-trade-portal-navbar","type":"registry:block","title":"Trade Portal Navbar","files":[{"path":"components/blocks/ecommerce-pro/store-navbars/trade-portal-navbar.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/store-navbars/trade-portal-navbar.tsx"}],"description":"The logged in B2B header with tier, rep, terms, and the Friday cutoff.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-subscription-sections-cadence-picker-card","type":"registry:block","title":"Cadence Picker Card","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/cadence-picker-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/cadence-picker-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Delivery rhythm chosen by honest usage guidance, the recommendation argued.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-care-club-annual-summary","type":"registry:block","title":"Care Club Annual Summary","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/care-club-annual-summary.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/care-club-annual-summary.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The year one care club receipt in four numbers with the skip praised and the cadence downgrade offered.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-gift-a-subscription-card","type":"registry:block","title":"Gift A Subscription Card","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/gift-a-subscription-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/gift-a-subscription-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A gifted year of wax with two delivery options and the no auto renew rule as the centerpiece.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-manage-subscription-panel","type":"registry:block","title":"Manage Subscription Panel","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/manage-subscription-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/manage-subscription-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"All four controls at equal weight, cancel included, with the skip praised in history.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-pause-or-skip-controls","type":"registry:block","title":"Pause Or Skip Controls","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/pause-or-skip-controls.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/pause-or-skip-controls.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three off switches compared by situation, no survey behind any of them.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-subscribe-save-overview","type":"registry:block","title":"Subscribe Save Overview","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/subscribe-save-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/subscribe-save-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The consumable subscription as logistics, exits listed above the join button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-subscription-faq","type":"registry:block","title":"Subscription Faq","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/subscription-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/subscription-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Six subscription inbox answers written as binding policy, from price locks to why bags are excluded entirely.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-subscription-sections-subscription-vs-onetime-math","type":"registry:block","title":"Subscription Vs Onetime Math","files":[{"path":"components/blocks/ecommerce-pro/subscription-sections/subscription-vs-onetime-math.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/subscription-sections/subscription-vs-onetime-math.tsx"}],"description":"A year priced both ways across three profiles, one verdict against the store."},{"name":"ecommerce-pro-sustainability-sections-durability-pledge-card","type":"registry:block","title":"Durability Pledge Card","files":[{"path":"components/blocks/ecommerce-pro/sustainability-sections/durability-pledge-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/sustainability-sections/durability-pledge-card.tsx"}],"description":"Four durability commitments you can test, not values language, each naming the thing that proves it.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-sustainability-sections-honest-unknowns-card","type":"registry:block","title":"Honest Unknowns Card","files":[{"path":"components/blocks/ecommerce-pro/sustainability-sections/honest-unknowns-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/sustainability-sections/honest-unknowns-card.tsx"}],"description":"The things Acme has not measured yet, three gaps stated plainly with the plan or the honest none."},{"name":"ecommerce-pro-sustainability-sections-longevity-as-sustainability","type":"registry:block","title":"Longevity As Sustainability","files":[{"path":"components/blocks/ecommerce-pro/sustainability-sections/longevity-as-sustainability.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/sustainability-sections/longevity-as-sustainability.tsx"}],"description":"The sustainability thesis: time in service beats material talk, argued with three service numbers."},{"name":"ecommerce-pro-sustainability-sections-materials-footprint-table","type":"registry:block","title":"Materials Footprint Table","files":[{"path":"components/blocks/ecommerce-pro/sustainability-sections/materials-footprint-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/sustainability-sections/materials-footprint-table.tsx"}],"description":"Three materials across two honest columns: what Acme verified on visits and what suppliers claimed."},{"name":"ecommerce-pro-sustainability-sections-repair-vs-replace-footprint","type":"registry:block","title":"Repair Vs Replace Footprint","files":[{"path":"components/blocks/ecommerce-pro/sustainability-sections/repair-vs-replace-footprint.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/sustainability-sections/repair-vs-replace-footprint.tsx"}],"description":"A zipper repair against a new bag in plain ratios, not invented kilograms, with the method stated."},{"name":"ecommerce-pro-sustainability-sections-shipping-footprint-explainer","type":"registry:block","title":"Shipping Footprint Explainer","files":[{"path":"components/blocks/ecommerce-pro/sustainability-sections/shipping-footprint-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/sustainability-sections/shipping-footprint-explainer.tsx"}],"description":"Ground over air 6 to 1, one box of three, and the no offsets position stated as a deliberate choice."},{"name":"ecommerce-pro-trade-sections-fleet-case-study","type":"registry:block","title":"Fleet Case Study","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/fleet-case-study.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/fleet-case-study.tsx"}],"description":"Forty bags, two years, and the strap flaw that changed the whole fleet spec included in the repair count."},{"name":"ecommerce-pro-trade-sections-pro-stories-row","type":"registry:block","title":"Pro Stories Row","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/pro-stories-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/pro-stories-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three fleets with wear numbers, deliveries per repair as the proof."},{"name":"ecommerce-pro-trade-sections-sample-kit-card","type":"registry:block","title":"Sample Kit Card","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/sample-kit-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/sample-kit-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The fleet evaluation kit, credited at five units, built for the deciding meeting.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-trade-sections-trade-application-form","type":"registry:block","title":"Trade Application Form","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/trade-application-form.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/trade-application-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"The pro program intake with who qualifies and a two day answer, never silence.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-trade-sections-trade-faq","type":"registry:block","title":"Trade Faq","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/trade-faq.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/trade-faq.tsx"}],"description":"Five program questions answered straight, priority repair quantified."},{"name":"ecommerce-pro-trade-sections-trade-onboarding-steps","type":"registry:block","title":"Trade Onboarding Steps","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/trade-onboarding-steps.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/trade-onboarding-steps.tsx"}],"description":"Application to first order in four real durations, 6 day median at the foot."},{"name":"ecommerce-pro-trade-sections-trade-perks-grid","type":"registry:block","title":"Trade Perks Grid","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/trade-perks-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/trade-perks-grid.tsx"}],"description":"Four perks argued from the professional's economics, downtime is our problem.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-trade-sections-volume-pricing-table","type":"registry:block","title":"Volume Pricing Table","files":[{"path":"components/blocks/ecommerce-pro/trade-sections/volume-pricing-table.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trade-sections/volume-pricing-table.tsx"}],"description":"Team order bands published with the services included at each."},{"name":"ecommerce-pro-trust-sections-account-deletion-card","type":"registry:block","title":"Account Deletion Card","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/account-deletion-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/account-deletion-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"One button, what dies instantly, what the law keeps, and the guarantee that outlives the account.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-trust-sections-counterfeit-spotting-guide","type":"registry:block","title":"Counterfeit Spotting Guide","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/counterfeit-spotting-guide.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/counterfeit-spotting-guide.tsx"}],"description":"Four physical tells and a same day serial check open to secondhand buyers who have no receipt.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-trust-sections-data-promise-card","type":"registry:block","title":"Data Promise Card","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/data-promise-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/data-promise-card.tsx"}],"description":"Five numbered data promises each with the mechanism that lets a buyer check it, and a review date."},{"name":"ecommerce-pro-trust-sections-guarantee-vs-warranty-explainer","type":"registry:block","title":"Guarantee Vs Warranty Explainer","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/guarantee-vs-warranty-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/guarantee-vs-warranty-explainer.tsx"}],"description":"Statutory rights, the Acme guarantee, and the repair program in one table showing they stack not replace.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-trust-sections-security-contact-card","type":"registry:block","title":"Security Contact Card","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/security-contact-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/security-contact-card.tsx"}],"description":"Scope, honest reward, and three named researchers with what they found for a store disclosure page.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-trust-sections-subprocessors-list","type":"registry:block","title":"Subprocessors List","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/subprocessors-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/subprocessors-list.tsx"}],"description":"Five outside data partners named by role with what they receive, why, and the deletion path on a page."},{"name":"ecommerce-pro-trust-sections-why-we-ask-explainer","type":"registry:block","title":"Why We Ask Explainer","files":[{"path":"components/blocks/ecommerce-pro/trust-sections/why-we-ask-explainer.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/trust-sections/why-we-ask-explainer.tsx"}],"description":"Every checkout field justified with its use and boundary, and the one field that is not there.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-upsell-sections-accessories-rail","type":"registry:block","title":"Accessories Rail","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/accessories-rail.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/accessories-rail.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The small goods as a snap strip with one earned context line per card."},{"name":"ecommerce-pro-upsell-sections-add-on-services","type":"registry:block","title":"Add On Services","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/add-on-services.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/add-on-services.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Monogramming, treatment, and care as checkable services with a live total.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-better-spend-suggester","type":"registry:block","title":"Better Spend Suggester","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/better-spend-suggester.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/better-spend-suggester.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Budget chips answered with the honest allocation at each number including the one that stops at 433.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-care-kit-attach-row","type":"registry:block","title":"Care Kit Attach Row","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/care-kit-attach-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/care-kit-attach-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The care kit at cart with the first rain argument and the attach rate published.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-care-sub-upsell-row","type":"registry:block","title":"Care Sub Upsell Row","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/care-sub-upsell-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/care-sub-upsell-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The wax already in the cart offered as a schedule with an equal weight decline priced alongside.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-complete-the-look","type":"registry:block","title":"Complete The Look","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/complete-the-look.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/complete-the-look.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One outfit photo itemized with roles and the wearer's height and size in the footer."},{"name":"ecommerce-pro-upsell-sections-complete-the-set-progress","type":"registry:block","title":"Complete The Set Progress","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/complete-the-set-progress.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/complete-the-set-progress.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Owned and missing pieces of the set, same hides as the only argument.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-cross-sell-banner","type":"registry:block","title":"Cross Sell Banner","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/cross-sell-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/cross-sell-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One product recommended to owners of another, with the relationship stated.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-frequently-bought-together","type":"registry:block","title":"Frequently Bought Together","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/frequently-bought-together.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/frequently-bought-together.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Checkable companions with a live total and real attachment rates printed per item.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-gift-wrap-upsell-row","type":"registry:block","title":"Gift Wrap Upsell Row","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/gift-wrap-upsell-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/gift-wrap-upsell-row.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The $6 wrap shown for real, with the hand written note revealed on selection.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-post-purchase-upsell","type":"registry:block","title":"Post Purchase Upsell","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/post-purchase-upsell.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/post-purchase-upsell.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One add riding the same box, declinable in a tap, never chaining to another.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-recently-viewed-row","type":"registry:block","title":"Recently Viewed Row","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/recently-viewed-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/recently-viewed-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The browsing trail with per item dismissal and a privacy footer, memory with manners.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-upsell-sections-replenishment-reminder-card","type":"registry:block","title":"Replenishment Reminder Card","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/replenishment-reminder-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/replenishment-reminder-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The reorder timed by your own usage math, one dated email, not a subscription.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-setup-service-upsell","type":"registry:block","title":"Setup Service Upsell","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/setup-service-upsell.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/setup-service-upsell.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The first wax at the bench for $12, with the honest counter offer and the adoption rate published.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-spare-parts-attach-row","type":"registry:block","title":"Spare Parts Attach Row","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/spare-parts-attach-row.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/spare-parts-attach-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two spares at the cart with an honest counter on who actually needs them and a skip.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-tiered-bundle-builder","type":"registry:block","title":"Tiered Bundle Builder","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/tiered-bundle-builder.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/tiered-bundle-builder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Pick any pieces, the discount steps at two and three, the math updates live.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-pro-upsell-sections-you-may-also-like","type":"registry:block","title":"You May Also Like","files":[{"path":"components/blocks/ecommerce-pro/upsell-sections/you-may-also-like.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/upsell-sections/you-may-also-like.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four recommendations that each print why they were chosen above the card."},{"name":"ecommerce-pro-wishlist-sections-price-drop-alerts-list","type":"registry:block","title":"Price Drop Alerts List","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/price-drop-alerts-list.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/price-drop-alerts-list.tsx"}],"description":"Watched items, saved versus current price, one real drop and one frozen for 14 months."},{"name":"ecommerce-pro-wishlist-sections-registry-mode-panel","type":"registry:block","title":"Registry Mode Panel","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/registry-mode-panel.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/registry-mode-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The wishlist as a registry with claimed states, group gifting, and anonymity rules.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-wishlist-sections-share-wishlist-card","type":"registry:block","title":"Share Wishlist Card","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/share-wishlist-card.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/share-wishlist-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A share link as a code chip with three privacy rules stated before the optional occasion date is asked for.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-wishlist-sections-shared-list-guest-view","type":"registry:block","title":"Shared List Guest View","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/shared-list-guest-view.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/shared-list-guest-view.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two column guest view of a shared wishlist with owner intro, occasion facts, claiming rules, and a thumbnail item list with claim buttons.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-wishlist-sections-wishlist-boards-grid","type":"registry:block","title":"Wishlist Boards Grid","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/wishlist-boards-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/wishlist-boards-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Account overview of three named wishlist boards as thumbnail strip cards with item counts and privacy captions, plus a dashed new list tile.","dependencies":["lucide-react"]},{"name":"ecommerce-pro-wishlist-sections-wishlist-grid-page","type":"registry:block","title":"Wishlist Grid Page","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/wishlist-grid-page.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/wishlist-grid-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Saved items as a product grid with live status captions and a single button that adds only the in stock ones.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-pro-wishlist-sections-wishlist-with-priorities","type":"registry:block","title":"Wishlist With Priorities","files":[{"path":"components/blocks/ecommerce-pro/wishlist-sections/wishlist-with-priorities.tsx","type":"registry:component","target":"components/blocks/ecommerce-pro/wishlist-sections/wishlist-with-priorities.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Five items grouped under three honest tiers with owner notes, and the admission the store ignores them.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-category-filters-filter-demo","type":"registry:block","title":"Filter Demo","files":[{"path":"components/blocks/ecommerce/category-filters/filter-demo.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-filters/filter-demo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/scroll-area.tsx","type":"registry:ui","target":"components/ui/scroll-area.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A sidebar of category filters with checkboxes, price sliders, and color swatches beside a product grid. Refines large catalogs on a shop listing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-filters-filter-drawer","type":"registry:block","title":"Filter Drawer","files":[{"path":"components/blocks/ecommerce/category-filters/filter-drawer.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-filters/filter-drawer.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/scroll-area.tsx","type":"registry:ui","target":"components/ui/scroll-area.tsx"},{"path":"components/ui/drawer.tsx","type":"registry:ui","target":"components/ui/drawer.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A slide in drawer holding category, price, and rating filters for small screens. Keeps the product grid full width until shoppers tap to refine on mobile.","dependencies":["class-variance-authority","lucide-react","radix-ui","vaul"]},{"name":"ecommerce-category-filters-horizontal-filters","type":"registry:block","title":"Horizontal Filters","files":[{"path":"components/blocks/ecommerce/category-filters/horizontal-filters.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-filters/horizontal-filters.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/scroll-area.tsx","type":"registry:ui","target":"components/ui/scroll-area.tsx"},{"path":"components/ui/popover.tsx","type":"registry:ui","target":"components/ui/popover.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"A row of filter dropdowns and chips sitting above the product grid. Lets shoppers narrow by category, price, and brand without giving up vertical space.","dependencies":["@radix-ui/react-slider","class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-carousel-preview","type":"registry:block","title":"Carousel Preview","files":[{"path":"components/blocks/ecommerce/category-preview/carousel-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/carousel-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A category preview that slides products through a horizontal carousel, letting shoppers swipe across a collection without leaving the page on mobile.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-expandable-preview","type":"registry:block","title":"Expandable Preview","files":[{"path":"components/blocks/ecommerce/category-preview/expandable-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/expandable-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A category preview where each tile expands to reveal more products on click, keeping the storefront tidy while shoppers dig into one collection at a time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-grid-preview","type":"registry:block","title":"Grid Preview","files":[{"path":"components/blocks/ecommerce/category-preview/grid-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/grid-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A category preview arranging collections in an even grid of image tiles, giving a clean overview of every department on a busy ecommerce home page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-magazine-preview","type":"registry:block","title":"Magazine Preview","files":[{"path":"components/blocks/ecommerce/category-preview/magazine-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/magazine-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A category preview styled like a magazine spread, mixing large feature tiles with smaller ones to spotlight seasonal collections on a storefront landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-scrolling-preview","type":"registry:block","title":"Scrolling Preview","files":[{"path":"components/blocks/ecommerce/category-preview/scrolling-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/scrolling-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A category preview that scrolls product cards in a continuous strip, ideal for showing many items while keeping a compact footprint on a collection page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-split-preview","type":"registry:block","title":"Split Preview","files":[{"path":"components/blocks/ecommerce/category-preview/split-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/split-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A category preview split between a featured image and a product list, pairing a strong visual with quick picks at the top of a collection page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-category-preview-three-column-preview","type":"registry:block","title":"Three Column Preview","files":[{"path":"components/blocks/ecommerce/category-preview/three-column-preview.tsx","type":"registry:component","target":"components/blocks/ecommerce/category-preview/three-column-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A category preview laid out in three balanced columns of image tiles, sorting collections into clear groups for a wide ecommerce navigation page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-bundle-upsells-builder","type":"registry:block","title":"Builder","files":[{"path":"components/blocks/ecommerce/ecommerce-bundle-upsells/builder.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-bundle-upsells/builder.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A bundle builder where shoppers pick add on products and watch the total update live. Use it on product pages to grow order value before checkout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-bundle-upsells-comparison","type":"registry:block","title":"Comparison","files":[{"path":"components/blocks/ecommerce/ecommerce-bundle-upsells/comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-bundle-upsells/comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A side view comparing a single item against a bundle, with prices and savings shown. Use it to nudge shoppers toward the better value package.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-bundle-upsells-minimalist-grid","type":"registry:block","title":"Minimalist Grid","files":[{"path":"components/blocks/ecommerce/ecommerce-bundle-upsells/minimalist-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-bundle-upsells/minimalist-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A clean grid of bundle products with images, names, and prices in even cells. Use it to present a curated set of items shoppers add together in one tap.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-bundle-upsells-side-by-side","type":"registry:block","title":"Side By Side","files":[{"path":"components/blocks/ecommerce/ecommerce-bundle-upsells/side-by-side.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-bundle-upsells/side-by-side.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Two product cards placed next to each other with a plus sign and combined price. Use it to pair complementary items and lift the average order total.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-bundle-upsells-stack","type":"registry:block","title":"Stack","files":[{"path":"components/blocks/ecommerce/ecommerce-bundle-upsells/stack.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-bundle-upsells/stack.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A vertical stack of bundle items with running totals and one add to cart action. Use it on mobile product pages to offer matching extras as shoppers scroll.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-cross-sells-feature-icons","type":"registry:block","title":"Feature Icons","files":[{"path":"components/blocks/ecommerce/ecommerce-cross-sells/feature-icons.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-cross-sells/feature-icons.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Recommended products laid out with an icon, short benefit, and price for each item. Highlights why shoppers should add a related pick to the cart.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-cross-sells-simple-grid","type":"registry:block","title":"Simple Grid","files":[{"path":"components/blocks/ecommerce/ecommerce-cross-sells/simple-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-cross-sells/simple-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A clean grid of related products with image, title, and price per card. Drops below the cart or product page to suggest items shoppers may want.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-ecommerce-cross-sells-stacked-list","type":"registry:block","title":"Stacked List","files":[{"path":"components/blocks/ecommerce/ecommerce-cross-sells/stacked-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-cross-sells/stacked-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Suggested products in a vertical stacked list with thumbnail, name, and price. Fits a narrow sidebar or cart drawer to keep cross sells visible.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-ecommerce-cross-sells-with-badges","type":"registry:block","title":"With Badges","files":[{"path":"components/blocks/ecommerce/ecommerce-cross-sells/with-badges.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-cross-sells/with-badges.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Related products in a card grid where each item carries a badge for sale, new, or low stock. Adds urgency to nudge shoppers toward another buy.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-ecommerce-cross-sells-with-ratings","type":"registry:block","title":"With Ratings","files":[{"path":"components/blocks/ecommerce/ecommerce-cross-sells/with-ratings.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-cross-sells/with-ratings.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Recommended products shown with star ratings and review counts beside each price. Uses social proof to push complementary items into the cart.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-customer-reviews-base","type":"registry:block","title":"Base","files":[{"path":"components/blocks/ecommerce/ecommerce-customer-reviews/base.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-customer-reviews/base.tsx"}],"description":"A starter customer review layout with star ratings, reviewer names, and comment text. Drop it onto a product page to show real shopper feedback fast.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-customer-reviews-compact-review-list","type":"registry:block","title":"Compact Review List","files":[{"path":"components/blocks/ecommerce/ecommerce-customer-reviews/compact-review-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-customer-reviews/compact-review-list.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A tight vertical list of reviews with star ratings and short quotes. Fits narrow sidebars or product pages where space for feedback is limited.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-customer-reviews-review-cards-grid","type":"registry:block","title":"Review Cards Grid","files":[{"path":"components/blocks/ecommerce/ecommerce-customer-reviews/review-cards-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-customer-reviews/review-cards-grid.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A grid of review cards showing star ratings, avatars, and short quotes. Use it to display many customer opinions at once on a product detail page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-customer-reviews-review-comparison","type":"registry:block","title":"Review Comparison","files":[{"path":"components/blocks/ecommerce/ecommerce-customer-reviews/review-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-customer-reviews/review-comparison.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A side by side view of the highest and lowest rated reviews so shoppers weigh pros and cons. Helps buyers decide quickly on a product detail page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-customer-reviews-review-stats-overview","type":"registry:block","title":"Review Stats Overview","files":[{"path":"components/blocks/ecommerce/ecommerce-customer-reviews/review-stats-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-customer-reviews/review-stats-overview.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A summary panel with average rating, total count, and a bar chart by star level. Gives shoppers a quick read on overall product quality up front.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-customer-reviews-social-proof-reviews","type":"registry:block","title":"Social Proof Reviews","files":[{"path":"components/blocks/ecommerce/ecommerce-customer-reviews/social-proof-reviews.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-customer-reviews/social-proof-reviews.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"Featured customer quotes paired with ratings and verified buyer badges. Builds confidence near the buy button to encourage shoppers to checkout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-footers-muti-column","type":"registry:block","title":"Multi Column","files":[{"path":"components/blocks/ecommerce/ecommerce-footers/muti-column.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-footers/muti-column.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer with several columns of grouped links for shop, support, company, and legal. Organizes a large storefront so customers find any page fast."},{"name":"ecommerce-ecommerce-footers-simple-links","type":"registry:block","title":"Simple Links","files":[{"path":"components/blocks/ecommerce/ecommerce-footers/simple-links.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-footers/simple-links.tsx"}],"description":"A compact footer with a single row of essential links and a copyright line. Keeps the bottom of a small store clean, tidy, and quick to scan for shoppers."},{"name":"ecommerce-ecommerce-footers-with-newsletter","type":"registry:block","title":"With Newsletter","files":[{"path":"components/blocks/ecommerce/ecommerce-footers/with-newsletter.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-footers/with-newsletter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A footer pairing link columns with an email signup field and button. Captures subscribers for promotions and offers while customers browse your store.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-ecommerce-footers-with-payments","type":"registry:block","title":"With Payments","files":[{"path":"components/blocks/ecommerce/ecommerce-footers/with-payments.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-footers/with-payments.tsx"}],"description":"A footer that displays accepted card and wallet badges beside the usual store links. Reassures shoppers about secure checkout right before they buy.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-footers-with-socials","type":"registry:block","title":"With Socials","files":[{"path":"components/blocks/ecommerce/ecommerce-footers/with-socials.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-footers/with-socials.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer with link columns plus a row of social media icons. Connects shoppers to your brand on Instagram, X, and other channels they already follow."},{"name":"ecommerce-ecommerce-shipping-returns-accordion","type":"registry:block","title":"Accordion","files":[{"path":"components/blocks/ecommerce/ecommerce-shipping-returns/accordion.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-shipping-returns/accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion that collapses shipping and returns details into expandable rows. Keeps long policy text tidy on a product page until shoppers tap to read.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-ecommerce-shipping-returns-checklist","type":"registry:block","title":"Checklist","files":[{"path":"components/blocks/ecommerce/ecommerce-shipping-returns/checklist.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-shipping-returns/checklist.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A checklist that lays out shipping steps and return conditions as ticked items. Helps buyers confirm eligibility before they start a refund request.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-shipping-returns-full-text","type":"registry:block","title":"Full Text","files":[{"path":"components/blocks/ecommerce/ecommerce-shipping-returns/full-text.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-shipping-returns/full-text.tsx"}],"description":"A full text panel covering delivery times, costs, and the returns process in plain prose. Use on a dedicated policy page where shoppers expect complete detail."},{"name":"ecommerce-ecommerce-shipping-returns-split-columns","type":"registry:block","title":"Split Columns","files":[{"path":"components/blocks/ecommerce/ecommerce-shipping-returns/split-columns.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-shipping-returns/split-columns.tsx"}],"description":"A split column layout that places shipping on one side and returns on the other. Lets customers compare delivery and refund terms in one quick glance.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-shipping-returns-with-icons","type":"registry:block","title":"With Icons","files":[{"path":"components/blocks/ecommerce/ecommerce-shipping-returns/with-icons.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-shipping-returns/with-icons.tsx"}],"description":"An icons layout pairing each shipping and returns point with a small symbol. Makes delivery speed, free returns, and refund windows scannable at a glance.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-trust-guarantee-badge-row","type":"registry:block","title":"Badge Row","files":[{"path":"components/blocks/ecommerce/ecommerce-trust-guarantee/badge-row.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-trust-guarantee/badge-row.tsx"}],"description":"A horizontal row of trust badges showing secure payment, returns, and warranty icons. Place under an add to cart button to calm buyer worry.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-trust-guarantee-checklist","type":"registry:block","title":"Checklist","files":[{"path":"components/blocks/ecommerce/ecommerce-trust-guarantee/checklist.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-trust-guarantee/checklist.tsx"}],"description":"A vertical checklist of product promises with check icons and short labels. Use it on a product page to spell out exactly what every order includes.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-trust-guarantee-highlighted-quote","type":"registry:block","title":"Highlighted Quote","files":[{"path":"components/blocks/ecommerce/ecommerce-trust-guarantee/highlighted-quote.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-trust-guarantee/highlighted-quote.tsx"}],"description":"A large pull quote with author name and star rating that features a happy customer. Drop it near pricing to back your claims with real social proof.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-trust-guarantee-icon-list","type":"registry:block","title":"Icon List","files":[{"path":"components/blocks/ecommerce/ecommerce-trust-guarantee/icon-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-trust-guarantee/icon-list.tsx"}],"description":"A compact list pairing small icons with guarantee statements like free shipping and easy returns. Fits neatly in a sidebar or below the buy section.","dependencies":["lucide-react"]},{"name":"ecommerce-ecommerce-trust-guarantee-three-pillars","type":"registry:block","title":"Three Pillars","files":[{"path":"components/blocks/ecommerce/ecommerce-trust-guarantee/three-pillars.tsx","type":"registry:component","target":"components/blocks/ecommerce/ecommerce-trust-guarantee/three-pillars.tsx"}],"description":"Three equal columns, each with an icon, heading, and a line on quality, security, and support. Builds buyer confidence across the full storefront.","dependencies":["lucide-react"]},{"name":"ecommerce-product-features-3d-feature-carousel","type":"registry:block","title":"3D Feature Carousel","files":[{"path":"components/blocks/ecommerce/product-features/3d-feature-carousel.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/3d-feature-carousel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A rotating carousel that shows product features on 3D cards with depth and motion. Great for highlighting a few standout capabilities on a landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-alternating-features","type":"registry:block","title":"Alternating Features","files":[{"path":"components/blocks/ecommerce/product-features/alternating-features.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/alternating-features.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Stacked rows that flip image and text from left to right as you scroll. Walks shoppers through key product benefits one clear section at a time.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-product-features-animated-features-grid","type":"registry:block","title":"Animated Features Grid","files":[{"path":"components/blocks/ecommerce/product-features/animated-features-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/animated-features-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A grid of feature cards with icons and motion that triggers as cards enter view. Adds life to a benefits section without burying the message.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-before-after-comparison","type":"registry:block","title":"Before After Comparison","files":[{"path":"components/blocks/ecommerce/product-features/before-after-comparison.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/before-after-comparison.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slider that wipes between two product images so buyers see the difference at a glance. Ideal for skincare, editing tools, or cleaning results.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-carousel-feature-showcase","type":"registry:block","title":"Carousel Feature Showcase","files":[{"path":"components/blocks/ecommerce/product-features/carousel-feature-showcase.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/carousel-feature-showcase.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A swipeable carousel that steps through product features with image and copy per slide. Fits compact pages where space for many cards is tight.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-expandable-features-grid","type":"registry:block","title":"Expandable Features Grid","files":[{"path":"components/blocks/ecommerce/product-features/expandable-features-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/expandable-features-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A grid of feature cards that open to reveal more detail on click. Keeps the overview tidy while letting curious shoppers dig into the specifics.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-feature-accordion","type":"registry:block","title":"Feature Accordion","files":[{"path":"components/blocks/ecommerce/product-features/feature-accordion.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/feature-accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Stacked panels that expand one feature at a time so each gets full focus. A clean way to present detailed product benefits without a wall of text.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-feature-comparison-table","type":"registry:block","title":"Feature Comparison Table","files":[{"path":"components/blocks/ecommerce/product-features/feature-comparison-table.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/feature-comparison-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"}],"description":"A table that lines up features across plans or models with clear check marks. Helps shoppers weigh every option and pick the right product fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-feature-tabs-navigation","type":"registry:block","title":"Feature Tabs Navigation","files":[{"path":"components/blocks/ecommerce/product-features/feature-tabs-navigation.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/feature-tabs-navigation.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabbed sections that swap feature content as buyers click each label. Organizes a deep feature set into bite sized views on one tidy single panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-feature-timeline","type":"registry:block","title":"Feature Timeline","files":[{"path":"components/blocks/ecommerce/product-features/feature-timeline.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/feature-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A vertical timeline that walks through product features in sequence. Useful for showing a setup flow or how capabilities build on each other.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-features-testimonial-combo","type":"registry:block","title":"Features Testimonial Combo","files":[{"path":"components/blocks/ecommerce/product-features/features-testimonial-combo.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/features-testimonial-combo.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A layout that pairs product features with a customer quote beside them. Backs each benefit claim with real proof to win hesitant buyers over.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-horizontal-scrolling-features","type":"registry:block","title":"Horizontal Scrolling Features","files":[{"path":"components/blocks/ecommerce/product-features/horizontal-scrolling-features.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/horizontal-scrolling-features.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A row of feature panels that scroll sideways as the page moves. Shows many product capabilities in a compact, playful strip that invites swiping.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-image-hotspot-features","type":"registry:block","title":"Image Hotspot Features","files":[{"path":"components/blocks/ecommerce/product-features/image-hotspot-features.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/image-hotspot-features.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A product image dotted with clickable hotspots that reveal each feature in place. Perfect for showing exactly where a capability lives on the item.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-interactive-feature-tabs","type":"registry:block","title":"Interactive Feature Tabs","files":[{"path":"components/blocks/ecommerce/product-features/interactive-feature-tabs.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/interactive-feature-tabs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs paired with a live preview that updates as buyers select a feature. Lets shoppers explore what each capability looks like before they buy.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-simple-feature-grid","type":"registry:block","title":"Simple Feature Grid","files":[{"path":"components/blocks/ecommerce/product-features/simple-feature-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/simple-feature-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A clean grid of feature cards with an icon, title, and short blurb each. The reliable choice for listing core product benefits at a quick glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-split-image-features","type":"registry:block","title":"Split Image Features","files":[{"path":"components/blocks/ecommerce/product-features/split-image-features.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/split-image-features.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column section with a product photo on one side and feature copy on the other. Balances visual and text to sell a single hero capability.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-stats-feature-showcase","type":"registry:block","title":"Stats Feature Showcase","files":[{"path":"components/blocks/ecommerce/product-features/stats-feature-showcase.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/stats-feature-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A section that pairs product features with hard numbers and metrics. Use it when figures like speed or savings make the strongest case to buy.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-timeline-feature-showcase","type":"registry:block","title":"Timeline Feature Showcase","files":[{"path":"components/blocks/ecommerce/product-features/timeline-feature-showcase.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/timeline-feature-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A timeline that reveals product features step by step as buyers scroll. Good for guiding readers through a journey from first use to results.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-features-video-feature-showcase","type":"registry:block","title":"Video Feature Showcase","files":[{"path":"components/blocks/ecommerce/product-features/video-feature-showcase.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-features/video-feature-showcase.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A section that pairs an embedded product video with supporting feature copy. Shows the item in action when motion sells better than a still.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-compact-list","type":"registry:block","title":"Compact List","files":[{"path":"components/blocks/ecommerce/product-list/compact-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/compact-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A dense list packing each product into a slim row with thumbnail, name, and price. Fits long catalogs and search results where space is tight.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-comparison-list","type":"registry:block","title":"Comparison List","files":[{"path":"components/blocks/ecommerce/product-list/comparison-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/comparison-list.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A side by side list lining up products with specs, prices, and features in columns. Helps shoppers weigh options before they commit to a purchase.","dependencies":["lucide-react","radix-ui"]},{"name":"ecommerce-product-list-featured-list","type":"registry:block","title":"Featured List","files":[{"path":"components/blocks/ecommerce/product-list/featured-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/featured-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A list spotlighting select products with large imagery, descriptions, and prices. Highlights bestsellers or promotions on a storefront landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-filter-list","type":"registry:block","title":"Filter List","files":[{"path":"components/blocks/ecommerce/product-list/filter-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/filter-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"A product list paired with category, price, and attribute filters in a sidebar. Lets shoppers narrow large catalogs and find the right item fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-gallery-list","type":"registry:block","title":"Gallery List","files":[{"path":"components/blocks/ecommerce/product-list/gallery-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/gallery-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An image first list showing products as large photo cards with name and price. Suits visual categories like fashion, home decor, and art prints.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-grid-list","type":"registry:block","title":"Grid List","files":[{"path":"components/blocks/ecommerce/product-list/grid-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/grid-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A responsive grid of product cards with images, titles, prices, and buttons. The standard catalog layout for category and search pages in a store.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-masonry-list","type":"registry:block","title":"Masonry List","files":[{"path":"components/blocks/ecommerce/product-list/masonry-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/masonry-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A masonry grid fitting product cards of varying heights into tight columns. Works well for mixed imagery in lookbooks and curated collections.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-table-list","type":"registry:block","title":"Table List","files":[{"path":"components/blocks/ecommerce/product-list/table-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/table-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A table listing products in rows with columns for image, name, stock, and price. Ideal for dashboards, admin catalogs, and bulk inventory views.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-list-timeline-list","type":"registry:block","title":"Timeline List","files":[{"path":"components/blocks/ecommerce/product-list/timeline-list.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-list/timeline-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A vertical timeline arranging products or drops by date with images and prices. Good for release schedules, new arrivals, and limited editions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-overview-classic-overview","type":"registry:block","title":"Classic Overview","files":[{"path":"components/blocks/ecommerce/product-overview/classic-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-overview/classic-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A classic product page with a large image on the left, title, price, variant options, and add to cart on the right. Familiar layout shoppers expect.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-overview-compact-overview","type":"registry:block","title":"Compact Overview","files":[{"path":"components/blocks/ecommerce/product-overview/compact-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-overview/compact-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A tight product layout that fits the image, price, options, and buy button above the fold. Built for small screens and quick mobile purchases.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-overview-gallery-overview","type":"registry:block","title":"Gallery Overview","files":[{"path":"components/blocks/ecommerce/product-overview/gallery-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-overview/gallery-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A product page led by a multi image gallery with thumbnails beside the details. Lets shoppers study every angle before they add the item to cart.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-overview-immersive-overview","type":"registry:block","title":"Immersive Overview","files":[{"path":"components/blocks/ecommerce/product-overview/immersive-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-overview/immersive-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A full bleed product page with edge to edge imagery, floating details, and a sticky buy bar. Best for premium goods that sell on visual impact.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-product-overview-minimal-overview","type":"registry:block","title":"Minimal Overview","files":[{"path":"components/blocks/ecommerce/product-overview/minimal-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-overview/minimal-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A pared back product page with one clean image, title, price, and a single buy button. Keeps focus on the item for simple, low clutter catalogs.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-product-overview-modern-overview","type":"registry:block","title":"Modern Overview","files":[{"path":"components/blocks/ecommerce/product-overview/modern-overview.tsx","type":"registry:component","target":"components/blocks/ecommerce/product-overview/modern-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A contemporary product page mixing a bold image grid, accent typography, and clear pricing. Suits fashion and lifestyle brands that want a fresh look.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-promo-sections-centered-icon-promo","type":"registry:block","title":"Centered Icon Promo","files":[{"path":"components/blocks/ecommerce/promo-sections/centered-icon-promo.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/centered-icon-promo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A centered promo with an icon, headline, and supporting copy. Highlights a single offer or shipping perk in the middle of a store landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-promo-sections-centered-image-grid","type":"registry:block","title":"Centered Image Grid","files":[{"path":"components/blocks/ecommerce/promo-sections/centered-image-grid.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/centered-image-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A centered promo paired with a tidy grid of product images. Showcases a curated collection or a seasonal lineup right on your shop homepage.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-centered-simple-promo","type":"registry:block","title":"Centered Simple Promo","files":[{"path":"components/blocks/ecommerce/promo-sections/centered-simple-promo.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/centered-simple-promo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A clean centered promo with a headline, short message, and button. Drop it onto any store page to push a sale, a discount code, or a new arrival.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-countdown-timer-promo","type":"registry:block","title":"Countdown Timer Promo","files":[{"path":"components/blocks/ecommerce/promo-sections/countdown-timer-promo.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/countdown-timer-promo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A promo block with a live countdown timer, headline, and call to action. Builds urgency around flash sales and limited time offers that expire soon.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-fading-background-testimonial","type":"registry:block","title":"Fading Background Testimonial","files":[{"path":"components/blocks/ecommerce/promo-sections/fading-background-testimonial.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/fading-background-testimonial.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A testimonial promo with a soft fading background and a customer quote. Builds trust on a product page while reinforcing the offer you are running.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-full-width-large-content","type":"registry:block","title":"Full Width Large Content","files":[{"path":"components/blocks/ecommerce/promo-sections/full-width-large-content.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/full-width-large-content.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A full width promo with oversized type and a clear button. Commands attention across the whole page for a headline campaign or a seasonal launch.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-image-aside","type":"registry:block","title":"Image Aside","files":[{"path":"components/blocks/ecommerce/promo-sections/image-aside.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/image-aside.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A promo with copy on one side and a product image alongside it. Pairs your offer with a visual so shoppers see exactly what is on sale right now.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-large-image-split","type":"registry:block","title":"Large Image Split","files":[{"path":"components/blocks/ecommerce/promo-sections/large-image-split.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/large-image-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A split promo with a large image filling one half and an offer on the other. Frames a hero product next to a discount and a clear, single button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-promo-sections-multi-column-cards","type":"registry:block","title":"Multi Column Cards","files":[{"path":"components/blocks/ecommerce/promo-sections/multi-column-cards.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/multi-column-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A promo arranged as several cards in columns, each holding its own offer. Presents multiple deals or categories side by side on one store page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-promo-sections-simple-banner","type":"registry:block","title":"Simple Banner","files":[{"path":"components/blocks/ecommerce/promo-sections/simple-banner.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/simple-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim promo banner with a short message and a link. Sits at the top of a store to announce free shipping, a running sale, or a fresh discount code.","dependencies":["class-variance-authority","radix-ui"]},{"name":"ecommerce-promo-sections-split-offers","type":"registry:block","title":"Split Offers","files":[{"path":"components/blocks/ecommerce/promo-sections/split-offers.tsx","type":"registry:component","target":"components/blocks/ecommerce/promo-sections/split-offers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A promo split into two panels, each holding a separate offer and button. Lets shoppers pick between two competing deals within one store section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-shopping-cart-compact-cart","type":"registry:block","title":"Compact Cart","files":[{"path":"components/blocks/ecommerce/shopping-cart/compact-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce/shopping-cart/compact-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A condensed cart panel listing items, quantities, and a running total in tight space. Fits a header dropdown or a narrow column without crowding the layout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-shopping-cart-floating-cart","type":"registry:block","title":"Floating Cart","files":[{"path":"components/blocks/ecommerce/shopping-cart/floating-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce/shopping-cart/floating-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A cart that floats over the page as a small overlay, showing added items and a subtotal. Lets shoppers review picks without leaving the product they browse.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-shopping-cart-mini-cart","type":"registry:block","title":"Mini Cart","files":[{"path":"components/blocks/ecommerce/shopping-cart/mini-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce/shopping-cart/mini-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/popover.tsx","type":"registry:ui","target":"components/ui/popover.tsx"}],"description":"A small summary cart with thumbnails, prices, and a checkout button. Pops from a cart icon so shoppers confirm contents fast before moving on to pay.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-shopping-cart-modern-cart","type":"registry:block","title":"Modern Cart","files":[{"path":"components/blocks/ecommerce/shopping-cart/modern-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce/shopping-cart/modern-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A clean cart layout with product images, quantity steppers, and an order summary. Suits a full cart page where shoppers review items before checkout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-shopping-cart-sidebar-cart","type":"registry:block","title":"Sidebar Cart","files":[{"path":"components/blocks/ecommerce/shopping-cart/sidebar-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce/shopping-cart/sidebar-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A cart that slides in from the side as a panel over the page, listing items and totals. Keeps shopping in view while customers adjust quantities and pay.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"ecommerce-shopping-cart-sticky-cart","type":"registry:block","title":"Sticky Cart","files":[{"path":"components/blocks/ecommerce/shopping-cart/sticky-cart.tsx","type":"registry:component","target":"components/blocks/ecommerce/shopping-cart/sticky-cart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A cart summary pinned to the side as you scroll, holding items, totals, and a checkout button. Keeps payment in reach on long product and listing pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-about-sections-about-split-with-quote","type":"registry:block","title":"About Split With Quote","files":[{"path":"components/blocks/marketing-pro/about-sections/about-split-with-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/about-split-with-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"An origin story in two paragraphs beside a founder pull quote on a muted panel.","dependencies":["radix-ui"]},{"name":"marketing-pro-about-sections-about-with-stats","type":"registry:block","title":"About With Stats","files":[{"path":"components/blocks/marketing-pro/about-sections/about-with-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/about-with-stats.tsx"}],"description":"Two paragraphs of company story beside a ruled grid of four numbers with sentence labels."},{"name":"marketing-pro-about-sections-backers-and-angels","type":"registry:block","title":"Backers and Angels","files":[{"path":"components/blocks/marketing-pro/about-sections/backers-and-angels.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/backers-and-angels.tsx"}],"description":"A muted band of two fund wordmarks above a ruled two column list of six angel operators, closed by a no board seats line."},{"name":"marketing-pro-about-sections-by-the-numbers","type":"registry:block","title":"By the Numbers","files":[{"path":"components/blocks/marketing-pro/about-sections/by-the-numbers.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/by-the-numbers.tsx"}],"description":"A split about section pairing narrative copy with a 2x2 grid of oversized stats in hairline ring cards and a muted strip of three milestone years."},{"name":"marketing-pro-about-sections-company-fact-sheet","type":"registry:block","title":"Company Fact Sheet","files":[{"path":"components/blocks/marketing-pro/about-sections/company-fact-sheet.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/company-fact-sheet.tsx"}],"description":"Narrative copy beside a ruled definition list ledger stating founded date, team, customers, funding, and ownership as plain label and value rows."},{"name":"marketing-pro-about-sections-founder-letter","type":"registry:block","title":"Founder Letter","files":[{"path":"components/blocks/marketing-pro/about-sections/founder-letter.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/founder-letter.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A first person letter in a narrow reading column with a salutation, three short paragraphs, and a serif signature above the founder portrait.","dependencies":["radix-ui"]},{"name":"marketing-pro-about-sections-funding-history-list","type":"registry:block","title":"Funding History List","files":[{"path":"components/blocks/marketing-pro/about-sections/funding-history-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/funding-history-list.tsx"}],"description":"The complete capital ledger including the round not raised and the one declined."},{"name":"marketing-pro-about-sections-leadership-grid","type":"registry:block","title":"Leadership Grid","files":[{"path":"components/blocks/marketing-pro/about-sections/leadership-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/leadership-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Six leaders in a borderless portrait grid, each with a role and the one thing they answer for, plus a flat titles note.","dependencies":["radix-ui"]},{"name":"marketing-pro-about-sections-manifesto-dark-band","type":"registry:block","title":"Manifesto Dark Band","files":[{"path":"components/blocks/marketing-pro/about-sections/manifesto-dark-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/manifesto-dark-band.tsx"}],"description":"Three belief statements set large on a primary band with a dated signature line."},{"name":"marketing-pro-about-sections-mission-and-values","type":"registry:block","title":"Mission and Values","files":[{"path":"components/blocks/marketing-pro/about-sections/mission-and-values.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/mission-and-values.tsx"}],"description":"An about section opening with a mission statement, then four value cards with soft square icons and a quiet attribution line linking to careers.","dependencies":["lucide-react"]},{"name":"marketing-pro-about-sections-mission-statement-centered","type":"registry:block","title":"Mission Statement Centered","files":[{"path":"components/blocks/marketing-pro/about-sections/mission-statement-centered.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/mission-statement-centered.tsx"}],"description":"One oversized centered mission statement with a single supporting paragraph."},{"name":"marketing-pro-about-sections-offices-list","type":"registry:block","title":"Offices List","files":[{"path":"components/blocks/marketing-pro/about-sections/offices-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/offices-list.tsx"}],"description":"Office cards with pin icons, addresses, and a note on what each city does for customers.","dependencies":["lucide-react"]},{"name":"marketing-pro-about-sections-operating-principles-grid","type":"registry:block","title":"Operating Principles Grid","files":[{"path":"components/blocks/marketing-pro/about-sections/operating-principles-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/operating-principles-grid.tsx"}],"description":"Six working rules as cards, each ending with what the principle actually cost."},{"name":"marketing-pro-about-sections-press-mentions","type":"registry:block","title":"Press Mentions","files":[{"path":"components/blocks/marketing-pro/about-sections/press-mentions.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/press-mentions.tsx"}],"description":"Earned headlines as linked rows with styled text wordmarks for each publication.","dependencies":["lucide-react"]},{"name":"marketing-pro-about-sections-principles-numbered","type":"registry:block","title":"Principles Numbered","files":[{"path":"components/blocks/marketing-pro/about-sections/principles-numbered.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/principles-numbered.tsx"}],"description":"Four numbered operating principles in wide ruled rows with full paragraph arguments."},{"name":"marketing-pro-about-sections-story-timeline","type":"registry:block","title":"Story Timeline","files":[{"path":"components/blocks/marketing-pro/about-sections/story-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/story-timeline.tsx"}],"description":"The company history as five year marked chapters on a vertical hairline timeline."},{"name":"marketing-pro-about-sections-values-grid","type":"registry:block","title":"Values Grid","files":[{"path":"components/blocks/marketing-pro/about-sections/values-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/about-sections/values-grid.tsx"}],"description":"Six bordered value cards, each with an icon disc and the working rule the value produces.","dependencies":["lucide-react"]},{"name":"marketing-pro-affiliate-sections-affiliate-hero-split","type":"registry:block","title":"Affiliate Hero Split","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/affiliate-hero-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/affiliate-hero-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A partner program hero with the terms in one paragraph beside an earnings panel mockup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-affiliate-sections-application-cta-card","type":"registry:block","title":"Application CTA Card","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/application-cta-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/application-cta-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A closing CTA card pairing the apply buttons with a panel listing every application field, why it is asked, and the approval rate.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-affiliate-sections-commission-tiers-table","type":"registry:block","title":"Commission Tiers Table","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/commission-tiers-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/commission-tiers-table.tsx"}],"description":"Four partner tiers with the requirements column programs usually omit."},{"name":"marketing-pro-affiliate-sections-how-referrals-work-steps","type":"registry:block","title":"How Referrals Work Steps","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/how-referrals-work-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/how-referrals-work-steps.tsx"}],"description":"The four attribution mechanics written out, including the two partner collision case."},{"name":"marketing-pro-affiliate-sections-partner-quotes-grid","type":"registry:block","title":"Partner Quotes Grid","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/partner-quotes-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/partner-quotes-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three partner quote cards from different channels, each led by a verified payout figure and closed with avatar attribution.","dependencies":["radix-ui"]},{"name":"marketing-pro-affiliate-sections-payout-stats-band","type":"registry:block","title":"Payout Stats Band","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/payout-stats-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/payout-stats-band.tsx"}],"description":"Program payout totals with the honest median and a public on time streak."},{"name":"marketing-pro-affiliate-sections-program-faq-accordion","type":"registry:block","title":"Program FAQ Accordion","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/program-faq-accordion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/program-faq-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Six pre application questions in an accordion beside the heading, with a direct email card promising a one day human reply.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-affiliate-sections-program-rules-split","type":"registry:block","title":"Program Rules Split","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/program-rules-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/program-rules-split.tsx"}],"description":"Two side by side rule cards listing allowed and prohibited promotion tactics with reasons, closed by a plain enforcement note.","dependencies":["lucide-react"]},{"name":"marketing-pro-affiliate-sections-promo-asset-kit-grid","type":"registry:block","title":"Promo Asset Kit Grid","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/promo-asset-kit-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/promo-asset-kit-grid.tsx"}],"description":"A six card grid of ready made promo asset packs, each with a small preview mockup, description, and format meta line."},{"name":"marketing-pro-affiliate-sections-terms-comparison-table","type":"registry:block","title":"Terms Comparison Table","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/terms-comparison-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/terms-comparison-table.tsx"}],"description":"A three column table setting six program terms against typical affiliate defaults, with a sourcing note under the table."},{"name":"marketing-pro-affiliate-sections-top-partners-leaderboard","type":"registry:block","title":"Top Partners Leaderboard","files":[{"path":"components/blocks/marketing-pro/affiliate-sections/top-partners-leaderboard.tsx","type":"registry:component","target":"components/blocks/marketing-pro/affiliate-sections/top-partners-leaderboard.tsx"}],"description":"The quarterly partner board with earnings by channel type, named only with consent."},{"name":"marketing-pro-ai-sections-ai-boundaries-panels","type":"registry:block","title":"Ai Boundaries Panels","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-boundaries-panels.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-boundaries-panels.tsx"}],"description":"Two ring framed panels under a centered heading listing what the assistant does and never does, closed by a contractual footnote.","dependencies":["lucide-react"]},{"name":"marketing-pro-ai-sections-ai-chat-hero","type":"registry:block","title":"Ai Chat Hero","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-chat-hero.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-chat-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An AI hero with a chat mockup where the assistant answers with segment sizes and choices made.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ai-sections-ai-drafts-demo-split","type":"registry:block","title":"Ai Drafts Demo Split","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-drafts-demo-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-drafts-demo-split.tsx"}],"description":"A drafting demo that shows the human edits, two corrected lines feeding the workspace voice.","dependencies":["lucide-react"]},{"name":"marketing-pro-ai-sections-ai-outcomes-stats","type":"registry:block","title":"Ai Outcomes Stats","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-outcomes-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-outcomes-stats.tsx"}],"description":"A measured outcomes band with a centered heading, four ruled stat columns with values, labels, and detail lines, and a methodology footnote."},{"name":"marketing-pro-ai-sections-ai-principles-list","type":"registry:block","title":"Ai Principles List","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-principles-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-principles-list.tsx"}],"description":"Five AI commitments written plainly, each backed by a mechanism a buyer can verify."},{"name":"marketing-pro-ai-sections-ai-release-timeline","type":"registry:block","title":"Ai Release Timeline","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-release-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-release-timeline.tsx"}],"description":"A dated model release log with versions, change summaries, category chips, and one rolled back entry under a header with a changelog link.","dependencies":["lucide-react"]},{"name":"marketing-pro-ai-sections-ai-skeptics-faq","type":"registry:block","title":"Ai Skeptics Faq","files":[{"path":"components/blocks/marketing-pro/ai-sections/ai-skeptics-faq.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/ai-skeptics-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A split section for skeptical AI questions, heading copy left and an accordion of five blunt answers right, first item opened.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-ai-sections-eval-scores-chart","type":"registry:block","title":"Eval Scores Chart","files":[{"path":"components/blocks/marketing-pro/ai-sections/eval-scores-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/eval-scores-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Eval pass rates per release as a shadcn line chart, including the regression we published.","dependencies":["recharts"]},{"name":"marketing-pro-ai-sections-human-review-explainer","type":"registry:block","title":"Human Review Explainer","files":[{"path":"components/blocks/marketing-pro/ai-sections/human-review-explainer.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/human-review-explainer.tsx"}],"description":"The three gates every AI draft passes, model, checks, human, with no autopilot setting."},{"name":"marketing-pro-ai-sections-prompt-library-grid","type":"registry:block","title":"Prompt Library Grid","files":[{"path":"components/blocks/marketing-pro/ai-sections/prompt-library-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/prompt-library-grid.tsx"}],"description":"Six proven prompts as cards with categories, usage counts, and mono opening lines.","dependencies":["lucide-react"]},{"name":"marketing-pro-ai-sections-usage-meter-card","type":"registry:block","title":"Usage Meter Card","files":[{"path":"components/blocks/marketing-pro/ai-sections/usage-meter-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ai-sections/usage-meter-card.tsx"}],"description":"An AI usage panel with per feature bars and a capacity meter that is always full, no metering."},{"name":"marketing-pro-awards-sections-analyst-mentions-list","type":"registry:block","title":"Analyst Mentions List","files":[{"path":"components/blocks/marketing-pro/awards-sections/analyst-mentions-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/analyst-mentions-list.tsx"}],"description":"Exact sentences from independent research with the firm, report, and date attached.","dependencies":["lucide-react"]},{"name":"marketing-pro-awards-sections-analyst-quadrant","type":"registry:block","title":"Analyst Quadrant","files":[{"path":"components/blocks/marketing-pro/awards-sections/analyst-quadrant.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/analyst-quadrant.tsx"}],"description":"Split analyst recognition section pairing a drawn quadrant matrix of unnamed vendor dots with ruled report facts and a highlighted placement.","dependencies":["lucide-react"]},{"name":"marketing-pro-awards-sections-award-spotlight","type":"registry:block","title":"Award Spotlight","files":[{"path":"components/blocks/marketing-pro/awards-sections/award-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/award-spotlight.tsx"}],"description":"Split spotlight on one flagship award pairing a drawn laurel medallion panel with the verbatim jury citation and ruled judging facts.","dependencies":["lucide-react"]},{"name":"marketing-pro-awards-sections-awards-timeline","type":"registry:block","title":"Awards Timeline","files":[{"path":"components/blocks/marketing-pro/awards-sections/awards-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/awards-timeline.tsx"}],"description":"Recognition by year as ruled rows, from the first small badge to category leader."},{"name":"marketing-pro-awards-sections-badge-comparison-table","type":"registry:block","title":"Badge Comparison Table","files":[{"path":"components/blocks/marketing-pro/awards-sections/badge-comparison-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/badge-comparison-table.tsx"}],"description":"Matrix of review platform badges comparing us with two shortlisted rivals as filled and hollow dots, one badge conceded, totals per column."},{"name":"marketing-pro-awards-sections-badge-wall","type":"registry:block","title":"Badge Wall","files":[{"path":"components/blocks/marketing-pro/awards-sections/badge-wall.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/badge-wall.tsx"}],"description":"Award badges drawn as SVG laurel medallions with names and seasons, no raster assets."},{"name":"marketing-pro-awards-sections-category-ratings-compare","type":"registry:block","title":"Category Ratings Compare","files":[{"path":"components/blocks/marketing-pro/awards-sections/category-ratings-compare.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/category-ratings-compare.tsx"}],"description":"Ruled list of review platform rating axes with paired meter bars comparing your score to the category average, losses included."},{"name":"marketing-pro-awards-sections-entry-ledger","type":"registry:block","title":"Entry Ledger","files":[{"path":"components/blocks/marketing-pro/awards-sections/entry-ledger.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/entry-ledger.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Complete ledger of award entries as ruled rows with year, award, outcome badge, and a lesson note, losses listed beside the wins.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-awards-sections-rating-breakdown-chart","type":"registry:block","title":"Rating Breakdown Chart","files":[{"path":"components/blocks/marketing-pro/awards-sections/rating-breakdown-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/rating-breakdown-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"The full star distribution as a horizontal shadcn bar chart, one star reviews included.","dependencies":["recharts"]},{"name":"marketing-pro-awards-sections-recognition-stats","type":"registry:block","title":"Recognition Stats","files":[{"path":"components/blocks/marketing-pro/awards-sections/recognition-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/recognition-stats.tsx"}],"description":"Four ruled stat columns counting badges held, Leader quarters, verified reviews, and first place categories, with a quarterly recount footnote."},{"name":"marketing-pro-awards-sections-review-scores-band","type":"registry:block","title":"Review Scores Band","files":[{"path":"components/blocks/marketing-pro/awards-sections/review-scores-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/review-scores-band.tsx"}],"description":"Ratings from four review platforms as drawn medallions with stars and verified counts.","dependencies":["lucide-react"]},{"name":"marketing-pro-awards-sections-reviewer-quotes-grid","type":"registry:block","title":"Reviewer Quotes Grid","files":[{"path":"components/blocks/marketing-pro/awards-sections/reviewer-quotes-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/awards-sections/reviewer-quotes-grid.tsx"}],"description":"Six lines lifted from verified reviews with star rows, one four star kept on purpose.","dependencies":["lucide-react"]},{"name":"marketing-pro-banners-announcement-bar","type":"registry:block","title":"Announcement Bar","files":[{"path":"components/blocks/marketing-pro/banners/announcement-bar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/announcement-bar.tsx"}],"description":"A slim muted strip with a highlighted lead word, one sentence of news, and an arrow link.","dependencies":["lucide-react"]},{"name":"marketing-pro-banners-app-download-banner","type":"registry:block","title":"App Download Banner","files":[{"path":"components/blocks/marketing-pro/banners/app-download-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/app-download-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A smart app style strip with a rounded app icon, the name over a star rating and review count, a get the app button, and dismiss.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-banners-bottom-docked-banner","type":"registry:block","title":"Bottom Docked Banner","files":[{"path":"components/blocks/marketing-pro/banners/bottom-docked-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/bottom-docked-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bottom pinned consent card with plain language copy and equal weight accept choices.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-banners-countdown-banner","type":"registry:block","title":"Countdown Banner","files":[{"path":"components/blocks/marketing-pro/banners/countdown-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/countdown-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bordered event band with the launch date, a day, hour, and minute countdown readout, and a register button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-banners-dismissible-announcement-bar","type":"registry:block","title":"Dismissible Announcement Bar","files":[{"path":"components/blocks/marketing-pro/banners/dismissible-announcement-bar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/dismissible-announcement-bar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim dismissible top of page bar on a primary background with an uppercase New tag, a one sentence message, an arrow link, and an X button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-banners-email-capture-banner","type":"registry:block","title":"Email Capture Banner","files":[{"path":"components/blocks/marketing-pro/banners/email-capture-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/email-capture-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A full width muted band with a newsletter invitation beside a labeled email form, a subscribe button, and a one line privacy note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-banners-live-signups-banner","type":"registry:block","title":"Live Signups Banner","files":[{"path":"components/blocks/marketing-pro/banners/live-signups-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/live-signups-banner.tsx"}],"description":"A pill banner with the most recent join, its city, and the day count, wired or nothing."},{"name":"marketing-pro-banners-promo-band-with-cta","type":"registry:block","title":"Promo Band With Cta","files":[{"path":"components/blocks/marketing-pro/banners/promo-band-with-cta.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/promo-band-with-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A primary colored offer strip with a bolded discount, plain deadline, and compact button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-banners-referral-banner","type":"registry:block","title":"Referral Banner","files":[{"path":"components/blocks/marketing-pro/banners/referral-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/referral-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A muted row with a gift icon square, a give and get lead with reward terms, a mono referral link field, and a copy button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-banners-sale-banner-dark","type":"registry:block","title":"Sale Banner Dark","files":[{"path":"components/blocks/marketing-pro/banners/sale-banner-dark.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/sale-banner-dark.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A seasonal sale band with the discount at display size, honest terms, and a secondary button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-banners-scheduled-maintenance-banner","type":"registry:block","title":"Scheduled Maintenance Banner","files":[{"path":"components/blocks/marketing-pro/banners/scheduled-maintenance-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/scheduled-maintenance-banner.tsx"}],"description":"A calm maintenance strip with exact UTC times and the impact answered in one sentence.","dependencies":["lucide-react"]},{"name":"marketing-pro-banners-update-banner-with-badge","type":"registry:block","title":"Update Banner With Badge","files":[{"path":"components/blocks/marketing-pro/banners/update-banner-with-badge.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/update-banner-with-badge.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A changelog style card strip with a version badge, feature line, release link, and dismiss.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-banners-upgrade-banner","type":"registry:block","title":"Upgrade Banner","files":[{"path":"components/blocks/marketing-pro/banners/upgrade-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/banners/upgrade-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An inline muted banner row with a Sparkles icon square, a semibold plan lead with muted benefits, a rounded Upgrade button, and a See plans link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-benchmarks-sections-before-after-bars","type":"registry:block","title":"Before After Bars","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/before-after-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/before-after-bars.tsx"}],"description":"Month zero against month three as paired bars, churned teams counted, not survivors."},{"name":"marketing-pro-benchmarks-sections-benchmark-cta-band","type":"registry:block","title":"Benchmark Cta Band","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/benchmark-cta-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/benchmark-cta-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A report download band trading the itemized PDF for an email.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-benchmarks-sections-benchmark-table-compact","type":"registry:block","title":"Benchmark Table Compact","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/benchmark-table-compact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/benchmark-table-compact.tsx"}],"description":"Benchmark metrics by company size with the reader band highlighted."},{"name":"marketing-pro-benchmarks-sections-benchmark-trend-line","type":"registry:block","title":"Benchmark Trend Line","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/benchmark-trend-line.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/benchmark-trend-line.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Five years of the median and top decile as a shadcn line chart, the case against comparing to stale numbers.","dependencies":["recharts"]},{"name":"marketing-pro-benchmarks-sections-distribution-curve","type":"registry:block","title":"Distribution Curve","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/distribution-curve.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/distribution-curve.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"The full account distribution as a shadcn area curve with a marked median.","dependencies":["recharts"]},{"name":"marketing-pro-benchmarks-sections-funnel-drop-off","type":"registry:block","title":"Funnel Drop Off","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/funnel-drop-off.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/funnel-drop-off.tsx"}],"description":"Median conversion per funnel step as bars with top decile ticks, counting rules per row, and the weakest step named."},{"name":"marketing-pro-benchmarks-sections-industry-benchmark-bars","type":"registry:block","title":"Industry Benchmark Bars","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/industry-benchmark-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/industry-benchmark-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Median and top decile open rates by industry as grouped shadcn bars with counting rules.","dependencies":["recharts"]},{"name":"marketing-pro-benchmarks-sections-methodology-note","type":"registry:block","title":"Methodology Note","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/methodology-note.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/methodology-note.tsx"}],"description":"The methods section on the page, sample, definitions, exclusions, and named bias."},{"name":"marketing-pro-benchmarks-sections-percentile-callouts","type":"registry:block","title":"Percentile Callouts","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/percentile-callouts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/percentile-callouts.tsx"}],"description":"Median, quartile, and decile threshold cards with mini position scales and verdict notes."},{"name":"marketing-pro-benchmarks-sections-rank-yourself-slider","type":"registry:block","title":"Rank Yourself Slider","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/rank-yourself-slider.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/rank-yourself-slider.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"An interactive slider placing the reader's open rate in a percentile band, with cut points listed and a verdict card.","dependencies":["radix-ui"]},{"name":"marketing-pro-benchmarks-sections-send-time-heatmap","type":"registry:block","title":"Send Time Heatmap","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/send-time-heatmap.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/send-time-heatmap.tsx"}],"description":"Median open rate by send day and hour as a token opacity heatmap grid, with peak, trough, and a legend."},{"name":"marketing-pro-benchmarks-sections-survey-results-bars","type":"registry:block","title":"Survey Results Bars","files":[{"path":"components/blocks/marketing-pro/benchmarks-sections/survey-results-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/benchmarks-sections/survey-results-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Ranked survey answers as horizontal shadcn bars with sample size in the footnote.","dependencies":["recharts"]},{"name":"marketing-pro-blog-sections-author-spotlight-row","type":"registry:block","title":"Author Spotlight Row","files":[{"path":"components/blocks/marketing-pro/blog-sections/author-spotlight-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/author-spotlight-row.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A writer with a beat and credential bio beside their three most read pieces.","dependencies":["radix-ui"]},{"name":"marketing-pro-blog-sections-blog-cards-grid","type":"registry:block","title":"Blog Cards Grid","files":[{"path":"components/blocks/marketing-pro/blog-sections/blog-cards-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/blog-cards-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three post cards with placeholder covers, category badges, excerpts, and read times.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-blog-sections-curated-reading-path","type":"registry:block","title":"Curated Reading Path","files":[{"path":"components/blocks/marketing-pro/blog-sections/curated-reading-path.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/curated-reading-path.tsx"}],"description":"A start here section walking new readers through five foundational posts on a numbered rail with read times and why it matters lines."},{"name":"marketing-pro-blog-sections-editorial-feature-row","type":"registry:block","title":"Editorial Feature Row","files":[{"path":"components/blocks/marketing-pro/blog-sections/editorial-feature-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/editorial-feature-row.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A magazine front page row pairing one large feature card with two stacked compact posts.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-blog-sections-editorial-list","type":"registry:block","title":"Editorial List","files":[{"path":"components/blocks/marketing-pro/blog-sections/editorial-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/editorial-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered blog header above five hairline separated editorial rows with dates, titles, excerpts, and category badges, closed by an archive button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-blog-sections-featured-post-split","type":"registry:block","title":"Featured Post Split","files":[{"path":"components/blocks/marketing-pro/blog-sections/featured-post-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/featured-post-split.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One flagship post with a wide cover, standfirst, author line, and read link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-blog-sections-featured-post-with-list","type":"registry:block","title":"Featured Post With List","files":[{"path":"components/blocks/marketing-pro/blog-sections/featured-post-with-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/featured-post-with-list.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A blog split with a view all header link, one large featured post with an author byline, and a hairline divided stack of three compact posts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-blog-sections-newsletter-archive-split","type":"registry:block","title":"Newsletter Archive Split","files":[{"path":"components/blocks/marketing-pro/blog-sections/newsletter-archive-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/newsletter-archive-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A sticky subscribe panel with a labeled email form beside a hairline divided ledger of five past issues with numbers, dates, and teasers.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-blog-sections-posts-list-minimal","type":"registry:block","title":"Posts List Minimal","files":[{"path":"components/blocks/marketing-pro/blog-sections/posts-list-minimal.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/posts-list-minimal.tsx"}],"description":"A text only post ledger of dated, ruled rows with categories and hover arrows.","dependencies":["lucide-react"]},{"name":"marketing-pro-blog-sections-posts-with-sidebar","type":"registry:block","title":"Posts With Sidebar","files":[{"path":"components/blocks/marketing-pro/blog-sections/posts-with-sidebar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/posts-with-sidebar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"An editorial post list beside a sticky sidebar of category counts and most read titles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-blog-sections-series-collection-cards","type":"registry:block","title":"Series Collection Cards","files":[{"path":"components/blocks/marketing-pro/blog-sections/series-collection-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/series-collection-cards.tsx"}],"description":"Three multi part series as cards with part counts, read times, and honest statuses.","dependencies":["lucide-react"]},{"name":"marketing-pro-blog-sections-topic-hub-tiles","type":"registry:block","title":"Topic Hub Tiles","files":[{"path":"components/blocks/marketing-pro/blog-sections/topic-hub-tiles.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/topic-hub-tiles.tsx"}],"description":"A browse by topic directory of six hairline topped tiles, each with an icon chip, mono post count, topic name, and one line description.","dependencies":["lucide-react"]},{"name":"marketing-pro-blog-sections-writers-grid","type":"registry:block","title":"Writers Grid","files":[{"path":"components/blocks/marketing-pro/blog-sections/writers-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/blog-sections/writers-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A meet the writers grid of four author columns with illustrated avatars, beats, one line bios, post counts, and read links.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-calculators-affiliate-earnings-calculator","type":"registry:block","title":"Affiliate Earnings Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/affiliate-earnings-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/affiliate-earnings-calculator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Audience and conversion sliders projecting commission, assumptions printed below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-calculators-annual-billing-toggle","type":"registry:block","title":"Annual Billing Toggle","files":[{"path":"components/blocks/marketing-pro/calculators/annual-billing-toggle.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/annual-billing-toggle.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"A monthly or annual toggle with a seat slider, both yearly totals side by side and the annual saving printed.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-build-vs-buy-calculator","type":"registry:block","title":"Build Vs Buy Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/build-vs-buy-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/build-vs-buy-calculator.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Engineer and month sliders price an in house build against a flat subscription, compared as proportional bars with a verdict.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-churn-impact-calculator","type":"registry:block","title":"Churn Impact Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/churn-impact-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/churn-impact-calculator.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Revenue and churn sliders feed a three stat strip of monthly loss, yearly loss, and what one point less churn keeps.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-email-volume-calculator","type":"registry:block","title":"Email Volume Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/email-volume-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/email-volume-calculator.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"A volume slider against public rate bands with the computed monthly price.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-funnel-projection-calculator","type":"registry:block","title":"Funnel Projection Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/funnel-projection-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/funnel-projection-calculator.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"One traffic slider runs a four stage funnel at printed median rates, ending in projected new monthly revenue.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-ltv-calculator","type":"registry:block","title":"Ltv Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/ltv-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/ltv-calculator.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Three sliders driving lifetime value with the formula printed under the result.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-payback-summary-static","type":"registry:block","title":"Payback Summary Static","files":[{"path":"components/blocks/marketing-pro/calculators/payback-summary-static.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/payback-summary-static.tsx"}],"description":"A worked payback example line by line, the calculator with the answer filled in."},{"name":"marketing-pro-calculators-roi-calculator","type":"registry:block","title":"Roi Calculator","files":[{"path":"components/blocks/marketing-pro/calculators/roi-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/roi-calculator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"Two sliders for team and hours driving live yearly savings with printed assumptions.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-calculators-savings-slider","type":"registry:block","title":"Savings Slider","files":[{"path":"components/blocks/marketing-pro/calculators/savings-slider.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/savings-slider.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"One slider for tool count driving monthly and yearly consolidation savings.","dependencies":["radix-ui"]},{"name":"marketing-pro-calculators-team-size-estimator","type":"registry:block","title":"Team Size Estimator","files":[{"path":"components/blocks/marketing-pro/calculators/team-size-estimator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/calculators/team-size-estimator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A stepper that picks the right plan from headcount with visible tier boundaries.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-benefits-grid","type":"registry:block","title":"Benefits Grid","files":[{"path":"components/blocks/marketing-pro/careers-sections/benefits-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/benefits-grid.tsx"}],"description":"Six benefit cards where every sentence commits to a number, policy, or default.","dependencies":["lucide-react"]},{"name":"marketing-pro-careers-sections-benefits-icon-grid","type":"registry:block","title":"Benefits Icon Grid","files":[{"path":"components/blocks/marketing-pro/careers-sections/benefits-icon-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/benefits-icon-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A careers benefits section with a centered header, six icon led perks in a three by two grid, and a rounded button pointing to open roles.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-careers-cta-banner","type":"registry:block","title":"Careers Cta Banner","files":[{"path":"components/blocks/marketing-pro/careers-sections/careers-cta-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/careers-cta-banner.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A compact banner with overlapping avatars, an invitation line, and an open roles count.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-careers-faq","type":"registry:block","title":"Careers FAQ","files":[{"path":"components/blocks/marketing-pro/careers-sections/careers-faq.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/careers-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Candidate questions in an accordion beside heading copy and a contact card promising a reply within two working days.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-compensation-principles","type":"registry:block","title":"Compensation Principles","files":[{"path":"components/blocks/marketing-pro/careers-sections/compensation-principles.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/compensation-principles.tsx"}],"description":"Pay transparency principles beside a salary band table with levels and ranges."},{"name":"marketing-pro-careers-sections-culture-values-split","type":"registry:block","title":"Culture Values Split","files":[{"path":"components/blocks/marketing-pro/careers-sections/culture-values-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/culture-values-split.tsx"}],"description":"Culture framed as working agreements beside four numbered rules with enforcement notes."},{"name":"marketing-pro-careers-sections-employee-quotes","type":"registry:block","title":"Employee Quotes","files":[{"path":"components/blocks/marketing-pro/careers-sections/employee-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/employee-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three employee quote cards with avatars and tenure lines confirming culture claims.","dependencies":["radix-ui"]},{"name":"marketing-pro-careers-sections-hiring-journey","type":"registry:block","title":"Hiring Journey","files":[{"path":"components/blocks/marketing-pro/careers-sections/hiring-journey.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/hiring-journey.tsx"}],"description":"A hiring process section with four numbered steps joined by hairlines, per step durations, and a muted accommodations strip with a contact link."},{"name":"marketing-pro-careers-sections-hiring-process-steps","type":"registry:block","title":"Hiring Process Steps","files":[{"path":"components/blocks/marketing-pro/careers-sections/hiring-process-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/hiring-process-steps.tsx"}],"description":"Four connected hiring stages with promised durations and no ghosting commitments."},{"name":"marketing-pro-careers-sections-interview-prep-list","type":"registry:block","title":"Interview Prep List","files":[{"path":"components/blocks/marketing-pro/careers-sections/interview-prep-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/interview-prep-list.tsx"}],"description":"What each interview stage assesses and how to prepare, the rubric published."},{"name":"marketing-pro-careers-sections-onboarding-plan","type":"registry:block","title":"Onboarding Plan","files":[{"path":"components/blocks/marketing-pro/careers-sections/onboarding-plan.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/onboarding-plan.tsx"}],"description":"Three timeframe cards mapping the first ninety days with checklists, ruled outcome lines, and an onboarding buddy note.","dependencies":["lucide-react"]},{"name":"marketing-pro-careers-sections-open-roles","type":"registry:block","title":"Open Roles","files":[{"path":"components/blocks/marketing-pro/careers-sections/open-roles.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/open-roles.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A header row with a view all button, role rows grouped by team with location and type badges, and a speculative application note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-open-roles-list","type":"registry:block","title":"Open Roles List","files":[{"path":"components/blocks/marketing-pro/careers-sections/open-roles-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/open-roles-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Ruled rows of open roles with team badges, honest locations, and a reply time promise.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-people-stats","type":"registry:block","title":"People Stats","files":[{"path":"components/blocks/marketing-pro/careers-sections/people-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/people-stats.tsx"}],"description":"Four ruled retention and tenure stats with one line explanations under a centered header, closed by a source note."},{"name":"marketing-pro-careers-sections-referral-program-card","type":"registry:block","title":"Referral Program Card","files":[{"path":"components/blocks/marketing-pro/careers-sections/referral-program-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/referral-program-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A public referral bounty split with the candidate, open beyond employees.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-careers-sections-roles-by-department","type":"registry:block","title":"Roles By Department","files":[{"path":"components/blocks/marketing-pro/careers-sections/roles-by-department.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/roles-by-department.tsx"}],"description":"Openings grouped under department headers with live counts and ruled role rows.","dependencies":["lucide-react"]},{"name":"marketing-pro-careers-sections-salary-bands-table","type":"registry:block","title":"Salary Bands Table","files":[{"path":"components/blocks/marketing-pro/careers-sections/salary-bands-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/salary-bands-table.tsx"}],"description":"Published compensation by level with the midpoint offer rule and equity columns."},{"name":"marketing-pro-careers-sections-where-we-work","type":"registry:block","title":"Where We Work","files":[{"path":"components/blocks/marketing-pro/careers-sections/where-we-work.tsx","type":"registry:component","target":"components/blocks/marketing-pro/careers-sections/where-we-work.tsx"}],"description":"Three office hub cards with working day, teams, and open role rows above a remote strip listing every hiring country."},{"name":"marketing-pro-case-studies-anonymous-results-compact","type":"registry:block","title":"Anonymous Results Compact","files":[{"path":"components/blocks/marketing-pro/case-studies/anonymous-results-compact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/anonymous-results-compact.tsx"}],"description":"Anonymized result rows for reference shy industries, with NDA references offered."},{"name":"marketing-pro-case-studies-challenge-solution-results","type":"registry:block","title":"Challenge Solution Results","files":[{"path":"components/blocks/marketing-pro/case-studies/challenge-solution-results.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/challenge-solution-results.tsx"}],"description":"One customer story told across three divided columns covering the challenge, the solution steps, and a stacked results metric list."},{"name":"marketing-pro-case-studies-dark-panel-feature","type":"registry:block","title":"Dark Panel Feature","files":[{"path":"components/blocks/marketing-pro/case-studies/dark-panel-feature.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/dark-panel-feature.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Featured story in a solid primary panel with inverted wordmark, summary, and three metrics.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-case-studies-featured-story","type":"registry:block","title":"Featured Story","files":[{"path":"components/blocks/marketing-pro/case-studies/featured-story.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/featured-story.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered heading over a story card pairing narrative and quote with a rail of three metrics.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-case-studies-growth-chart-story","type":"registry:block","title":"Growth Chart Story","files":[{"path":"components/blocks/marketing-pro/case-studies/growth-chart-story.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/growth-chart-story.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A case study card led by a twelve month line chart with milestone markers and a story row below.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-industry-tabs","type":"registry:block","title":"Industry Tabs","files":[{"path":"components/blocks/marketing-pro/case-studies/industry-tabs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/industry-tabs.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Industry tabs where each panel shows one story card with metrics and a customer quote.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-case-studies-interview-story","type":"registry:block","title":"Interview Story","files":[{"path":"components/blocks/marketing-pro/case-studies/interview-story.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/interview-story.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A case study told as an interview, with the customer intro and headline numbers beside four question and answer exchanges.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-logo-rows-with-results","type":"registry:block","title":"Logo Rows With Results","files":[{"path":"components/blocks/marketing-pro/case-studies/logo-rows-with-results.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/logo-rows-with-results.tsx"}],"description":"Stacked divided rows pairing a wordmark and outcome with a bold metric and story link.","dependencies":["lucide-react"]},{"name":"marketing-pro-case-studies-metrics-spotlight","type":"registry:block","title":"Metrics Spotlight","files":[{"path":"components/blocks/marketing-pro/case-studies/metrics-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/metrics-spotlight.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Company narrative beside a divided stat rail with a wide customer quote underneath.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-mini-results-grid","type":"registry:block","title":"Mini Results Grid","files":[{"path":"components/blocks/marketing-pro/case-studies/mini-results-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/mini-results-grid.tsx"}],"description":"Four compact customer cards with wordmarks, one headline number, and story links.","dependencies":["lucide-react"]},{"name":"marketing-pro-case-studies-quote-led-story","type":"registry:block","title":"Quote Led Story","files":[{"path":"components/blocks/marketing-pro/case-studies/quote-led-story.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/quote-led-story.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Oversized opening quote above a three stat row and two short narrative paragraphs.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-quote-with-radial-stats","type":"registry:block","title":"Quote With Radial Stats","files":[{"path":"components/blocks/marketing-pro/case-studies/quote-with-radial-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/quote-with-radial-stats.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A large customer quote beside a panel of three donut rings showing percentage outcomes.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-results-table","type":"registry:block","title":"Results Table","files":[{"path":"components/blocks/marketing-pro/case-studies/results-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/results-table.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Clean table of customers, industries, results, and time to value with CTA buttons below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-case-studies-results-with-area-chart","type":"registry:block","title":"Results With Area Chart","files":[{"path":"components/blocks/marketing-pro/case-studies/results-with-area-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/results-with-area-chart.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A case study with the customer indexed series as a hoverable shadcn area chart.","dependencies":["radix-ui","recharts"]},{"name":"marketing-pro-case-studies-roi-summary-cards","type":"registry:block","title":"Roi Summary Cards","files":[{"path":"components/blocks/marketing-pro/case-studies/roi-summary-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/roi-summary-cards.tsx"}],"description":"Three customers reduced to invested, returned, and payback period, finance memo style."},{"name":"marketing-pro-case-studies-split-with-quote","type":"registry:block","title":"Split With Quote","files":[{"path":"components/blocks/marketing-pro/case-studies/split-with-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/split-with-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two paragraph story beside a right rail holding a quote card and two key stats.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-stat-callout-story","type":"registry:block","title":"Stat Callout Story","files":[{"path":"components/blocks/marketing-pro/case-studies/stat-callout-story.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/stat-callout-story.tsx"}],"description":"A narrative case study interrupted twice by ruled display size stat callouts."},{"name":"marketing-pro-case-studies-story-accordion","type":"registry:block","title":"Story Accordion","files":[{"path":"components/blocks/marketing-pro/case-studies/story-accordion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/story-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Four customer stories in a bordered accordion where each trigger pairs a wordmark with a metric chip and opens to a summary and stats.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-case-studies-story-carousel","type":"registry:block","title":"Story Carousel","files":[{"path":"components/blocks/marketing-pro/case-studies/story-carousel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/story-carousel.tsx"}],"description":"Horizontally scrollable snap row of story cards with wordmarks, metrics, and summaries.","dependencies":["lucide-react"]},{"name":"marketing-pro-case-studies-story-grid","type":"registry:block","title":"Story Grid","files":[{"path":"components/blocks/marketing-pro/case-studies/story-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/story-grid.tsx"}],"description":"Three story cards each showing a wordmark, a bold result, a summary, and a read link.","dependencies":["lucide-react"]},{"name":"marketing-pro-case-studies-story-with-before-after-chart","type":"registry:block","title":"Story With Before After Chart","files":[{"path":"components/blocks/marketing-pro/case-studies/story-with-before-after-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/story-with-before-after-chart.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A customer narrative and quote beside grouped bars comparing three metrics before and after Acme.","dependencies":["radix-ui"]},{"name":"marketing-pro-case-studies-story-with-fact-sheet","type":"registry:block","title":"Story With Fact Sheet","files":[{"path":"components/blocks/marketing-pro/case-studies/story-with-fact-sheet.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/story-with-fact-sheet.tsx"}],"description":"A narrative case study and checklist of changes beside an at a glance fact sheet card that closes with two results.","dependencies":["lucide-react"]},{"name":"marketing-pro-case-studies-timeline-with-metrics","type":"registry:block","title":"Timeline With Metrics","files":[{"path":"components/blocks/marketing-pro/case-studies/timeline-with-metrics.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/timeline-with-metrics.tsx"}],"description":"A rollout told as a vertical timeline with a metric chip per milestone and a closing results band."},{"name":"marketing-pro-case-studies-video-case-row","type":"registry:block","title":"Video Case Row","files":[{"path":"components/blocks/marketing-pro/case-studies/video-case-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/case-studies/video-case-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three customer films with posters, durations, and the one number each story turns on.","dependencies":["lucide-react"]},{"name":"marketing-pro-changelog-sections-changelog-cards-monthly","type":"registry:block","title":"Changelog Cards Monthly","files":[{"path":"components/blocks/marketing-pro/changelog-sections/changelog-cards-monthly.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/changelog-cards-monthly.tsx"}],"description":"Monthly scorecards with change type counts, the headline ship, and line item links.","dependencies":["lucide-react"]},{"name":"marketing-pro-changelog-sections-changelog-filter-tabs","type":"registry:block","title":"Changelog Filter Tabs","files":[{"path":"components/blocks/marketing-pro/changelog-sections/changelog-filter-tabs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/changelog-filter-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A dated changelog behind working filter tabs that narrow one list of entries to new features, improvements, or fixes.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-changelog-sections-changelog-list-dated","type":"registry:block","title":"Changelog List Dated","files":[{"path":"components/blocks/marketing-pro/changelog-sections/changelog-list-dated.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/changelog-list-dated.tsx"}],"description":"Release entries down a hairline rail with dates, version chips, and outcome sentences."},{"name":"marketing-pro-changelog-sections-changelog-with-tags","type":"registry:block","title":"Changelog With Tags","files":[{"path":"components/blocks/marketing-pro/changelog-sections/changelog-with-tags.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/changelog-with-tags.tsx"}],"description":"Dated releases where every line carries a New, Improved, or Fixed chip."},{"name":"marketing-pro-changelog-sections-deprecations-notice-list","type":"registry:block","title":"Deprecations Notice List","files":[{"path":"components/blocks/marketing-pro/changelog-sections/deprecations-notice-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/deprecations-notice-list.tsx"}],"description":"Retirements with dates, reasons, and migration paths, plus the rumor stopping non removal.","dependencies":["lucide-react"]},{"name":"marketing-pro-changelog-sections-release-cadence-chart","type":"registry:block","title":"Release Cadence Chart","files":[{"path":"components/blocks/marketing-pro/changelog-sections/release-cadence-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/release-cadence-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Shipped changes per month as stacked shadcn bars split into features and fixes.","dependencies":["recharts"]},{"name":"marketing-pro-changelog-sections-release-cards","type":"registry:block","title":"Release Cards","files":[{"path":"components/blocks/marketing-pro/changelog-sections/release-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/release-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A changelog with a centered header, a subscribe link, and stacked release cards carrying version badges, dates, and grouped change bullets.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-changelog-sections-release-highlights-split","type":"registry:block","title":"Release Highlights Split","files":[{"path":"components/blocks/marketing-pro/changelog-sections/release-highlights-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/release-highlights-split.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The headline feature of a release with copy and CTAs beside a mini app mockup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-changelog-sections-release-notes-accordion","type":"registry:block","title":"Release Notes Accordion","files":[{"path":"components/blocks/marketing-pro/changelog-sections/release-notes-accordion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/release-notes-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Releases in a single open accordion where each trigger pairs a version chip, date, and title with grouped change bullets.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-changelog-sections-requested-and-shipped","type":"registry:block","title":"Requested And Shipped","files":[{"path":"components/blocks/marketing-pro/changelog-sections/requested-and-shipped.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/requested-and-shipped.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Shipped changes as cards crediting the customers who asked, each footer stacking requester avatars beside the request count.","dependencies":["radix-ui"]},{"name":"marketing-pro-changelog-sections-shipping-velocity-stats","type":"registry:block","title":"Shipping Velocity Stats","files":[{"path":"components/blocks/marketing-pro/changelog-sections/shipping-velocity-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/shipping-velocity-stats.tsx"}],"description":"Three shipping cadence stats beside a sparkline of releases per month."},{"name":"marketing-pro-changelog-sections-version-compare-table","type":"registry:block","title":"Version Compare Table","files":[{"path":"components/blocks/marketing-pro/changelog-sections/version-compare-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/version-compare-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A three column table putting the previous major version beside the current one, capability by capability, with a migration guide link."},{"name":"marketing-pro-changelog-sections-version-timeline-horizontal","type":"registry:block","title":"Version Timeline Horizontal","files":[{"path":"components/blocks/marketing-pro/changelog-sections/version-timeline-horizontal.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/version-timeline-horizontal.tsx"}],"description":"Version dots along a horizontal line with dates and titles, the latest haloed."},{"name":"marketing-pro-changelog-sections-whats-new-banner","type":"registry:block","title":"Whats New Banner","files":[{"path":"components/blocks/marketing-pro/changelog-sections/whats-new-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/changelog-sections/whats-new-banner.tsx"}],"description":"A clickable row with the latest release, a version chip, and a changelog link.","dependencies":["lucide-react"]},{"name":"marketing-pro-community-sections-community-calls-split","type":"registry:block","title":"Community Calls Split","files":[{"path":"components/blocks/marketing-pro/community-sections/community-calls-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/community-calls-split.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A monthly call pitch with hosts beside the next three dated topics and a series button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-community-sections-community-channels-cards","type":"registry:block","title":"Community Channels Cards","files":[{"path":"components/blocks/marketing-pro/community-sections/community-channels-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/community-channels-cards.tsx"}],"description":"Three doors into the community, forum, calls, and digest, with activity facts.","dependencies":["lucide-react"]},{"name":"marketing-pro-community-sections-community-guidelines-split","type":"registry:block","title":"Community Guidelines Split","files":[{"path":"components/blocks/marketing-pro/community-sections/community-guidelines-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/community-guidelines-split.tsx"}],"description":"Moderation stats and a full charter link beside four numbered house rules in a divided card.","dependencies":["lucide-react"]},{"name":"marketing-pro-community-sections-community-quote-band","type":"registry:block","title":"Community Quote Band","files":[{"path":"components/blocks/marketing-pro/community-sections/community-quote-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/community-quote-band.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A member arc quote with tenure attribution beside an ungated join button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-community-sections-community-stats-banner","type":"registry:block","title":"Community Stats Banner","files":[{"path":"components/blocks/marketing-pro/community-sections/community-stats-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/community-stats-banner.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Overlapping member avatars and an invitation beside reply speed stats and a join button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-community-sections-contributor-grid","type":"registry:block","title":"Contributor Grid","files":[{"path":"components/blocks/marketing-pro/community-sections/contributor-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/contributor-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Top contributor cards with answer counts above an avatar wall and a breadth stat.","dependencies":["radix-ui"]},{"name":"marketing-pro-community-sections-discussion-preview-list","type":"registry:block","title":"Discussion Preview List","files":[{"path":"components/blocks/marketing-pro/community-sections/discussion-preview-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/discussion-preview-list.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Live forum thread rows with avatars, tags, reply counts, and an active now chip.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-community-sections-first-week-steps","type":"registry:block","title":"First Week Steps","files":[{"path":"components/blocks/marketing-pro/community-sections/first-week-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/first-week-steps.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A seven day onboarding path in four numbered steps with day labels, closed by a join button and note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-community-sections-leaderboard-table","type":"registry:block","title":"Leaderboard Table","files":[{"path":"components/blocks/marketing-pro/community-sections/leaderboard-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/leaderboard-table.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"The quarterly contributor board with points, streaks, and published stakes.","dependencies":["radix-ui"]},{"name":"marketing-pro-community-sections-meetups-city-grid","type":"registry:block","title":"Meetups City Grid","files":[{"path":"components/blocks/marketing-pro/community-sections/meetups-city-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/meetups-city-grid.tsx"}],"description":"City chapters with next dates, named organizers, and a dashed your city card."},{"name":"marketing-pro-community-sections-member-resources-grid","type":"registry:block","title":"Member Resources Grid","files":[{"path":"components/blocks/marketing-pro/community-sections/member-resources-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/member-resources-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Member built template cards with type chips, author avatars, and download counts under a browse all link.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-community-sections-milestones-timeline","type":"registry:block","title":"Milestones Timeline","files":[{"path":"components/blocks/marketing-pro/community-sections/milestones-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/community-sections/milestones-timeline.tsx"}],"description":"Four dated community milestones on a marker line, each with a year, a title, and one concrete fact."},{"name":"marketing-pro-comparison-sections-alternative-cards","type":"registry:block","title":"Alternative Cards","files":[{"path":"components/blocks/marketing-pro/comparison-sections/alternative-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/alternative-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three cards positioning the product as the alternative to spreadsheets, email, and suites.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-before-after","type":"registry:block","title":"Before and After","files":[{"path":"components/blocks/marketing-pro/comparison-sections/before-after.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/before-after.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Before and after cards listing the same workflow as crossed off pains and checked wins.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-comparison-with-quote","type":"registry:block","title":"Comparison with Quote","files":[{"path":"components/blocks/marketing-pro/comparison-sections/comparison-with-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/comparison-with-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Compact five row comparison table beside a quote card from a customer who switched.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-competitor-table","type":"registry:block","title":"Competitor Table","files":[{"path":"components/blocks/marketing-pro/comparison-sections/competitor-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/competitor-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Feature table comparing the product against two competitors with check, partial, and no marks.","dependencies":["lucide-react"]},{"name":"marketing-pro-comparison-sections-cost-breakdown-bars","type":"registry:block","title":"Cost Breakdown Bars","files":[{"path":"components/blocks/marketing-pro/comparison-sections/cost-breakdown-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/cost-breakdown-bars.tsx"}],"description":"Two stacked bars totaling an old tool stack against one shorter Acme bar with an itemized legend."},{"name":"marketing-pro-comparison-sections-cost-comparison-chart","type":"registry:block","title":"Cost Comparison Chart","files":[{"path":"components/blocks/marketing-pro/comparison-sections/cost-comparison-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/cost-comparison-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"All in yearly cost against two competitors as grouped shadcn bars with the method owned.","dependencies":["recharts"]},{"name":"marketing-pro-comparison-sections-dimension-rows","type":"registry:block","title":"Dimension Rows","files":[{"path":"components/blocks/marketing-pro/comparison-sections/dimension-rows.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/dimension-rows.tsx"}],"description":"Stacked full width rows comparing Them and Us copy across four buying dimensions.","dependencies":["lucide-react"]},{"name":"marketing-pro-comparison-sections-feature-checklist-table","type":"registry:block","title":"Feature Checklist Table","files":[{"path":"components/blocks/marketing-pro/comparison-sections/feature-checklist-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/feature-checklist-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Two column checklist table comparing features and pricing against a single competitor.","dependencies":["lucide-react"]},{"name":"marketing-pro-comparison-sections-feature-depth-matrix","type":"registry:block","title":"Feature Depth Matrix","files":[{"path":"components/blocks/marketing-pro/comparison-sections/feature-depth-matrix.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/feature-depth-matrix.tsx"}],"description":"Capabilities rated with dot scales instead of checkmarks, one row conceded on purpose."},{"name":"marketing-pro-comparison-sections-grouped-bar-comparison","type":"registry:block","title":"Grouped Bar Comparison","files":[{"path":"components/blocks/marketing-pro/comparison-sections/grouped-bar-comparison.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/grouped-bar-comparison.tsx"}],"description":"Four dimensions compared as paired horizontal bars for Acme and a typical alternative."},{"name":"marketing-pro-comparison-sections-head-to-head-tabs","type":"registry:block","title":"Head To Head Tabs","files":[{"path":"components/blocks/marketing-pro/comparison-sections/head-to-head-tabs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/head-to-head-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Centered pill tabs switch between competitors, each pane pairing a verdict and three checked differences with a two by two grid of outcome stat tiles.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-migration-coverage","type":"registry:block","title":"Migration Coverage","files":[{"path":"components/blocks/marketing-pro/comparison-sections/migration-coverage.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/migration-coverage.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A left rail argues the switch is easy with migration stats and two buttons, beside a card listing what carries over from the old tool.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-old-way-new-way","type":"registry:block","title":"Old Way New Way","files":[{"path":"components/blocks/marketing-pro/comparison-sections/old-way-new-way.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/old-way-new-way.tsx"}],"description":"Editorial split contrasting a muted old way list with a confident checked new way list.","dependencies":["lucide-react"]},{"name":"marketing-pro-comparison-sections-performance-curves","type":"registry:block","title":"Performance Curves","files":[{"path":"components/blocks/marketing-pro/comparison-sections/performance-curves.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/performance-curves.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two SVG curves diverging over six quarters, teams on Acme rising while the status quo stays flat.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-comparison-sections-plan-match","type":"registry:block","title":"Plan Match","files":[{"path":"components/blocks/marketing-pro/comparison-sections/plan-match.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/plan-match.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Three stacked mapping rows pair each competitor plan with its matching plan on your side, an arrow chip between them and a yearly savings badge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-pros-and-cons-split","type":"registry:block","title":"Pros And Cons Split","files":[{"path":"components/blocks/marketing-pro/comparison-sections/pros-and-cons-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/pros-and-cons-split.tsx"}],"description":"An honest fit assessment with a good fit card beside real disqualifiers and a referral.","dependencies":["lucide-react"]},{"name":"marketing-pro-comparison-sections-quadrant-position-chart","type":"registry:block","title":"Quadrant Position Chart","files":[{"path":"components/blocks/marketing-pro/comparison-sections/quadrant-position-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/quadrant-position-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A self drawn market quadrant as a shadcn scatter with the methodology owned in the footnote.","dependencies":["recharts"]},{"name":"marketing-pro-comparison-sections-review-scores","type":"registry:block","title":"Review Scores","files":[{"path":"components/blocks/marketing-pro/comparison-sections/review-scores.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/review-scores.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A rounded table scores three products across independent review platforms, each cell pairing a rating with a five star meter above an averages row.","dependencies":["lucide-react"]},{"name":"marketing-pro-comparison-sections-score-ring-cards","type":"registry:block","title":"Score Ring Cards","files":[{"path":"components/blocks/marketing-pro/comparison-sections/score-ring-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/score-ring-cards.tsx"}],"description":"Four scored dimensions as ring gauges with industry averages and a source caption."},{"name":"marketing-pro-comparison-sections-side-by-side-mockups","type":"registry:block","title":"Side by Side Mockups","files":[{"path":"components/blocks/marketing-pro/comparison-sections/side-by-side-mockups.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/side-by-side-mockups.tsx"}],"description":"Two window mockups contrasting a cluttered generic tool with the calm product, captioned."},{"name":"marketing-pro-comparison-sections-switch-banner","type":"registry:block","title":"Switch Banner","files":[{"path":"components/blocks/marketing-pro/comparison-sections/switch-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/switch-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Migration banner card with a heading, one call to action, and three checked steps below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-switch-reasons","type":"registry:block","title":"Switch Reasons","files":[{"path":"components/blocks/marketing-pro/comparison-sections/switch-reasons.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/switch-reasons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A why teams switch section with three icon reason cards ending in highlighted stats, plus a guarantee strip with a migration guide button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-switching-stories-list","type":"registry:block","title":"Switching Stories List","files":[{"path":"components/blocks/marketing-pro/comparison-sections/switching-stories-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/switching-stories-list.tsx"}],"description":"Four evaluation accounts, each tagged with the factor that settled the decision."},{"name":"marketing-pro-comparison-sections-tco-table","type":"registry:block","title":"Tco Table","files":[{"path":"components/blocks/marketing-pro/comparison-sections/tco-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/tco-table.tsx"}],"description":"A total cost table with stack and Acme columns, a totals row, and named assumptions."},{"name":"marketing-pro-comparison-sections-us-vs-them-split","type":"registry:block","title":"Us vs Them Split","files":[{"path":"components/blocks/marketing-pro/comparison-sections/us-vs-them-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/us-vs-them-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Divided two column list pairing checked product strengths with crossed out competitor gaps.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-comparison-sections-vs-competitor","type":"registry:block","title":"Vs Competitor","files":[{"path":"components/blocks/marketing-pro/comparison-sections/vs-competitor.tsx","type":"registry:component","target":"components/blocks/marketing-pro/comparison-sections/vs-competitor.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A product versus legacy tools comparison with two matched criteria cards, a subtly emphasized product side, and a closing CTA with a migration link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-callback-request-form","type":"registry:block","title":"Callback Request Form","files":[{"path":"components/blocks/marketing-pro/contact-sections/callback-request-form.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/callback-request-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/native-select.tsx","type":"registry:ui","target":"components/ui/native-select.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"}],"description":"Two column split pairing a pitch with three numbered steps and a phone line beside a form card collecting name, phone, topic, and preferred time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-centered-email-cta","type":"registry:block","title":"Centered Email Cta","files":[{"path":"components/blocks/marketing-pro/contact-sections/centered-email-cta.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/centered-email-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A formless contact section with the email address itself at display size as a mailto link.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-contact-sections-channel-cards","type":"registry:block","title":"Channel Cards","files":[{"path":"components/blocks/marketing-pro/contact-sections/channel-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/channel-cards.tsx"}],"description":"Three contact channel cards with icons, response promises, and action links for routing by intent.","dependencies":["lucide-react"]},{"name":"marketing-pro-contact-sections-contact-split-form","type":"registry:block","title":"Contact Split Form","files":[{"path":"components/blocks/marketing-pro/contact-sections/contact-split-form.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/contact-split-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A reassuring pitch with reply time facts beside a bordered name, email, and message form.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-contact-with-hours","type":"registry:block","title":"Contact With Hours","files":[{"path":"components/blocks/marketing-pro/contact-sections/contact-with-hours.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/contact-with-hours.tsx"}],"description":"Channel rows with live open chips beside a staffed hours card and a handoff note.","dependencies":["lucide-react"]},{"name":"marketing-pro-contact-sections-direct-team-contacts","type":"registry:block","title":"Direct Team Contacts","files":[{"path":"components/blocks/marketing-pro/contact-sections/direct-team-contacts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/direct-team-contacts.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Heading and lede above a four column grid of named people cards, each with an avatar, role, scope, direct email, and reply promise.","dependencies":["radix-ui"]},{"name":"marketing-pro-contact-sections-faq-with-contact-card","type":"registry:block","title":"FAQ With Contact Card","files":[{"path":"components/blocks/marketing-pro/contact-sections/faq-with-contact-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/faq-with-contact-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Centered heading and lede above a two column split pairing an accordion of common questions with a contact card and direct inbox list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-form-with-channels","type":"registry:block","title":"Form With Channels","files":[{"path":"components/blocks/marketing-pro/contact-sections/form-with-channels.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/form-with-channels.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A split contact section pairing intro copy, three contact channel rows, and office hours with a card based message form and privacy note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-form-with-map-mockup","type":"registry:block","title":"Form With Map Mockup","files":[{"path":"components/blocks/marketing-pro/contact-sections/form-with-map-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/form-with-map-mockup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A contact form beside an abstract dot grid map with labeled office pins and a coverage caption.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-contact-sections-offices-grid","type":"registry:block","title":"Offices Grid","files":[{"path":"components/blocks/marketing-pro/contact-sections/offices-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/offices-grid.tsx"}],"description":"Regional office cards with addresses, local inboxes, and working hours per timezone.","dependencies":["lucide-react"]},{"name":"marketing-pro-contact-sections-offices-list","type":"registry:block","title":"Offices List","files":[{"path":"components/blocks/marketing-pro/contact-sections/offices-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/offices-list.tsx"}],"description":"A centered header over three office cards with region labels, addresses, timezones, and email links, closed by a remote friendly note.","dependencies":["lucide-react"]},{"name":"marketing-pro-contact-sections-project-inquiry-form","type":"registry:block","title":"Project Inquiry Form","files":[{"path":"components/blocks/marketing-pro/contact-sections/project-inquiry-form.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/project-inquiry-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/native-select.tsx","type":"registry:ui","target":"components/ui/native-select.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Centered heading and lede above a brief form card with name, email, company, and budget fields, a service checkbox grid, and a project textarea.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-regional-offices-grid","type":"registry:block","title":"Regional Offices Grid","files":[{"path":"components/blocks/marketing-pro/contact-sections/regional-offices-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/regional-offices-grid.tsx"}],"description":"Three offices with addresses, honest local hours, and the one channel each answers.","dependencies":["lucide-react"]},{"name":"marketing-pro-contact-sections-sales-vs-support-split","type":"registry:block","title":"Sales Vs Support Split","files":[{"path":"components/blocks/marketing-pro/contact-sections/sales-vs-support-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/sales-vs-support-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"One panel split into sales and support doors, each with expectation bullets and its own CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-contact-sections-support-channels","type":"registry:block","title":"Support Channels","files":[{"path":"components/blocks/marketing-pro/contact-sections/support-channels.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/support-channels.tsx"}],"description":"A centered contact header above three channel cards for sales, support, and community, each with an arrow link and a median response time.","dependencies":["lucide-react"]},{"name":"marketing-pro-contact-sections-support-stats-contact","type":"registry:block","title":"Support Stats Contact","files":[{"path":"components/blocks/marketing-pro/contact-sections/support-stats-contact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/contact-sections/support-stats-contact.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Live support queue stats beside the start a conversation card.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-content-sections-article-with-tldr","type":"registry:block","title":"Article With TLDR","files":[{"path":"components/blocks/marketing-pro/content-sections/article-with-tldr.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/article-with-tldr.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A long read opener with an author byline, reading meta, a bordered short version panel summarizing the argument, then the opening paragraphs.","dependencies":["radix-ui"]},{"name":"marketing-pro-content-sections-checklist-manifesto","type":"registry:block","title":"Checklist Manifesto","files":[{"path":"components/blocks/marketing-pro/content-sections/checklist-manifesto.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/checklist-manifesto.tsx"}],"description":"Six checked commitments pairing enforceable rules with the practices behind them.","dependencies":["lucide-react"]},{"name":"marketing-pro-content-sections-content-with-toc-sidebar","type":"registry:block","title":"Content With Toc Sidebar","files":[{"path":"components/blocks/marketing-pro/content-sections/content-with-toc-sidebar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/content-with-toc-sidebar.tsx"}],"description":"Long form prose beside a sticky mini table of contents with an active item."},{"name":"marketing-pro-content-sections-definition-list-section","type":"registry:block","title":"Definition List Section","files":[{"path":"components/blocks/marketing-pro/content-sections/definition-list-section.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/definition-list-section.tsx"}],"description":"A working glossary of term and definition rows where the second sentence differentiates."},{"name":"marketing-pro-content-sections-glossary-preview-list","type":"registry:block","title":"Glossary Preview List","files":[{"path":"components/blocks/marketing-pro/content-sections/glossary-preview-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/glossary-preview-list.tsx"}],"description":"Six glossary terms defined in two sentences each, the second one with a stance.","dependencies":["lucide-react"]},{"name":"marketing-pro-content-sections-headline-with-leadline","type":"registry:block","title":"Headline With Leadline","files":[{"path":"components/blocks/marketing-pro/content-sections/headline-with-leadline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/headline-with-leadline.tsx"}],"description":"An oversized research finding with a sourced leadline and one evidence link.","dependencies":["lucide-react"]},{"name":"marketing-pro-content-sections-letter-from-founder","type":"registry:block","title":"Letter From Founder","files":[{"path":"components/blocks/marketing-pro/content-sections/letter-from-founder.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/letter-from-founder.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A short founder letter that names the catch, signed with an avatar and a real email.","dependencies":["radix-ui"]},{"name":"marketing-pro-content-sections-myth-fact-rows","type":"registry:block","title":"Myth Fact Rows","files":[{"path":"components/blocks/marketing-pro/content-sections/myth-fact-rows.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/myth-fact-rows.tsx"}],"description":"A myth versus evidence section of hairline divided rows pairing a popular belief on the left with what the measured data shows on the right."},{"name":"marketing-pro-content-sections-numbered-takeaways","type":"registry:block","title":"Numbered Takeaways","files":[{"path":"components/blocks/marketing-pro/content-sections/numbered-takeaways.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/numbered-takeaways.tsx"}],"description":"Three ghost numbered research takeaways, each a claim with its data and reframe."},{"name":"marketing-pro-content-sections-prose-two-column","type":"registry:block","title":"Prose Two Column","files":[{"path":"components/blocks/marketing-pro/content-sections/prose-two-column.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/prose-two-column.tsx"}],"description":"An essay set in magazine columns under a heading, closed by an attribution line."},{"name":"marketing-pro-content-sections-prose-with-margin-notes","type":"registry:block","title":"Prose With Margin Notes","files":[{"path":"components/blocks/marketing-pro/content-sections/prose-with-margin-notes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/prose-with-margin-notes.tsx"}],"description":"An annotated essay where each paragraph carries a superscript marker paired with a numbered caveat in a narrow margin column beside it."},{"name":"marketing-pro-content-sections-pull-quote-break","type":"registry:block","title":"Pull Quote Break","files":[{"path":"components/blocks/marketing-pro/content-sections/pull-quote-break.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/pull-quote-break.tsx"}],"description":"One aphorism set large between hairline rules with a source line, page punctuation."},{"name":"marketing-pro-content-sections-reading-list-cards","type":"registry:block","title":"Reading List Cards","files":[{"path":"components/blocks/marketing-pro/content-sections/reading-list-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/reading-list-cards.tsx"}],"description":"Curated external resources including one that argues against you, with real whys.","dependencies":["lucide-react"]},{"name":"marketing-pro-content-sections-series-chapter-index","type":"registry:block","title":"Series Chapter Index","files":[{"path":"components/blocks/marketing-pro/content-sections/series-chapter-index.tsx","type":"registry:component","target":"components/blocks/marketing-pro/content-sections/series-chapter-index.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A series index pairing an intro column and byline with a divided list of numbered chapters, each showing a description, reading time, and marker.","dependencies":["radix-ui"]},{"name":"marketing-pro-ctas-banner-with-avatars","type":"registry:block","title":"Banner With Avatars","files":[{"path":"components/blocks/marketing-pro/ctas/banner-with-avatars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/banner-with-avatars.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Card banner with headline, overlapping avatar row, and a single primary button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-before-after-split","type":"registry:block","title":"Before After Split","files":[{"path":"components/blocks/marketing-pro/ctas/before-after-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/before-after-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered headline and lede above a divided two column panel comparing the current week with the same week on the product, four lines per side.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-bordered-inset","type":"registry:block","title":"Bordered Inset","files":[{"path":"components/blocks/marketing-pro/ctas/bordered-inset.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/bordered-inset.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered headline and buttons inside a large rounded border inset.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-cta-with-setup-checklist","type":"registry:block","title":"Cta With Setup Checklist","files":[{"path":"components/blocks/marketing-pro/ctas/cta-with-setup-checklist.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/cta-with-setup-checklist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The closing ask beside the first session itemized, five steps with median times that sum.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-cta-with-trend-chart","type":"registry:block","title":"Cta With Trend Chart","files":[{"path":"components/blocks/marketing-pro/ctas/cta-with-trend-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/cta-with-trend-chart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A closing ask beside a minimal shadcn trendline framed as the reader future line.","dependencies":["class-variance-authority","radix-ui","recharts"]},{"name":"marketing-pro-ctas-dark-band-with-sparkline","type":"registry:block","title":"Dark Band With Sparkline","files":[{"path":"components/blocks/marketing-pro/ctas/dark-band-with-sparkline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/dark-band-with-sparkline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A primary colored CTA band with a single button and a faint sparkline along its base.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-dual-cta-banner","type":"registry:block","title":"Dual CTA Banner","files":[{"path":"components/blocks/marketing-pro/ctas/dual-cta-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/dual-cta-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A full width inverted CTA panel with a centered headline, supporting line, contrasting pill button, quiet arrow link, and a three item trust row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-full-bleed-band","type":"registry:block","title":"Full Bleed Band","files":[{"path":"components/blocks/marketing-pro/ctas/full-bleed-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/full-bleed-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Full width primary band with headline, supporting line, and one inverted button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-minimal-inline","type":"registry:block","title":"Minimal Inline","files":[{"path":"components/blocks/marketing-pro/ctas/minimal-inline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/minimal-inline.tsx"}],"description":"Slim ruled strip pairing a short headline with a single arrow text link.","dependencies":["lucide-react"]},{"name":"marketing-pro-ctas-plain-text-cta","type":"registry:block","title":"Plain Text Cta","files":[{"path":"components/blocks/marketing-pro/ctas/plain-text-cta.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/plain-text-cta.tsx"}],"description":"The editorial close, three sentences and two text links, no buttons."},{"name":"marketing-pro-ctas-side-by-side-cards","type":"registry:block","title":"Side By Side Cards","files":[{"path":"components/blocks/marketing-pro/ctas/side-by-side-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/side-by-side-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two matched cards offering free trial and sales paths with checklists and buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-split-with-growth-chart","type":"registry:block","title":"Split With Growth Chart","files":[{"path":"components/blocks/marketing-pro/ctas/split-with-growth-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/split-with-growth-chart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bordered CTA panel with headline and buttons beside a rising area chart and a labeled result.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-split-with-mockup","type":"registry:block","title":"Split With Mockup","files":[{"path":"components/blocks/marketing-pro/ctas/split-with-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/split-with-mockup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Card split pairing CTA copy and buttons with a metrics dashboard mockup.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-split-with-quote","type":"registry:block","title":"Split With Quote","files":[{"path":"components/blocks/marketing-pro/ctas/split-with-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/split-with-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"CTA copy and buttons beside a customer quote card with a matching avatar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-trial-vs-demo-split","type":"registry:block","title":"Trial Vs Demo Split","files":[{"path":"components/blocks/marketing-pro/ctas/trial-vs-demo-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/trial-vs-demo-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Self serve trial and guided demo as equal doors with terms lines and separate buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-app-badges","type":"registry:block","title":"With App Badges","files":[{"path":"components/blocks/marketing-pro/ctas/with-app-badges.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-app-badges.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered mobile pitch with App Store and Google Play download buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-booking-slots","type":"registry:block","title":"With Booking Slots","files":[{"path":"components/blocks/marketing-pro/ctas/with-booking-slots.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-booking-slots.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two column split pairing a headline, agenda list, and button with a scheduling card of a host, day chips, a time grid, and timezone note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-countdown","type":"registry:block","title":"With Countdown","files":[{"path":"components/blocks/marketing-pro/ctas/with-countdown.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-countdown.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered card with a headline, supporting line, three countdown tiles for days, hours, and minutes, then a primary button over a terms line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-with-email-capture","type":"registry:block","title":"With Email Capture","files":[{"path":"components/blocks/marketing-pro/ctas/with-email-capture.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-email-capture.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"Centered closing call to action pairing a headline and supporting line with a labeled email form, one input, a primary button, and a terms line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-ctas-with-faq-links","type":"registry:block","title":"With Faq Links","files":[{"path":"components/blocks/marketing-pro/ctas/with-faq-links.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-faq-links.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A final ask beside the three questions that stall signups, each linked to its answer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-guarantee","type":"registry:block","title":"With Guarantee","files":[{"path":"components/blocks/marketing-pro/ctas/with-guarantee.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-guarantee.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered card CTA with buttons and a money back guarantee reassurance line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-install-command","type":"registry:block","title":"With Install Command","files":[{"path":"components/blocks/marketing-pro/ctas/with-install-command.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-install-command.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A developer CTA with a terminal box, copy affordance, and a first event success line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-integration-grid","type":"registry:block","title":"With Integration Grid","files":[{"path":"components/blocks/marketing-pro/ctas/with-integration-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-integration-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"CTA copy beside a three by three grid of integration tiles with a filled Acme tile at the center.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-setup-progress","type":"registry:block","title":"With Setup Progress","files":[{"path":"components/blocks/marketing-pro/ctas/with-setup-progress.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-setup-progress.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A CTA pairing copy and button with an onboarding card showing a progress ring and checklist.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-ctas-with-stats","type":"registry:block","title":"With Stats","files":[{"path":"components/blocks/marketing-pro/ctas/with-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/ctas/with-stats.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered CTA copy and buttons above a divided grid of three proof stats.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-developers-sections-api-changelog-compact","type":"registry:block","title":"Api Changelog Compact","files":[{"path":"components/blocks/marketing-pro/developers-sections/api-changelog-compact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/api-changelog-compact.tsx"}],"description":"Five dated API changes with type tags and the 180 day breaking change policy up front."},{"name":"marketing-pro-developers-sections-api-hero-with-terminal","type":"registry:block","title":"Api Hero With Terminal","files":[{"path":"components/blocks/marketing-pro/developers-sections/api-hero-with-terminal.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/api-hero-with-terminal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A developer hero with the pitch beside a terminal running the first API call and its response.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-developers-sections-cli-install-band","type":"registry:block","title":"Cli Install Band","files":[{"path":"components/blocks/marketing-pro/developers-sections/cli-install-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/cli-install-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim band selling the CLI, one brew command with a copy button and three proof points.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-developers-sections-dev-community-cards","type":"registry:block","title":"Dev Community Cards","files":[{"path":"components/blocks/marketing-pro/developers-sections/dev-community-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/dev-community-cards.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Centered developer community section with three channel cards, each carrying a stat, a description, and a join link, closed by an email line.","dependencies":["lucide-react"]},{"name":"marketing-pro-developers-sections-docs-links-grid","type":"registry:block","title":"Docs Links Grid","files":[{"path":"components/blocks/marketing-pro/developers-sections/docs-links-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/docs-links-grid.tsx"}],"description":"Six documentation entry points as icon cards, each labeled with its honest reading time.","dependencies":["lucide-react"]},{"name":"marketing-pro-developers-sections-error-codes-split","type":"registry:block","title":"Error Codes Split","files":[{"path":"components/blocks/marketing-pro/developers-sections/error-codes-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/error-codes-split.tsx"}],"description":"Split section listing six error families with codes, stable types, and fixes beside a mockup response body and a short list of guarantees.","dependencies":["lucide-react"]},{"name":"marketing-pro-developers-sections-quickstart-steps-code","type":"registry:block","title":"Quickstart Steps Code","files":[{"path":"components/blocks/marketing-pro/developers-sections/quickstart-steps-code.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/quickstart-steps-code.tsx"}],"description":"Install, authenticate, send. The whole quickstart as three cards with real code panels."},{"name":"marketing-pro-developers-sections-rate-limits-table","type":"registry:block","title":"Rate Limits Table","files":[{"path":"components/blocks/marketing-pro/developers-sections/rate-limits-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/rate-limits-table.tsx"}],"description":"Published rate limits by plan beside the response headers that expose limit state."},{"name":"marketing-pro-developers-sections-sdk-language-grid","type":"registry:block","title":"Sdk Language Grid","files":[{"path":"components/blocks/marketing-pro/developers-sections/sdk-language-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/sdk-language-grid.tsx"}],"description":"Nine SDK cards with install commands and honest Official or Community badges.","dependencies":["lucide-react"]},{"name":"marketing-pro-developers-sections-status-uptime-panel","type":"registry:block","title":"Status Uptime Panel","files":[{"path":"components/blocks/marketing-pro/developers-sections/status-uptime-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/status-uptime-panel.tsx"}],"description":"Two column reliability section pairing audited uptime stats and a status page link with a panel of 45 day uptime bar strips and a legend.","dependencies":["lucide-react"]},{"name":"marketing-pro-developers-sections-test-mode-fixtures","type":"registry:block","title":"Test Mode Fixtures","files":[{"path":"components/blocks/marketing-pro/developers-sections/test-mode-fixtures.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/test-mode-fixtures.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Two column sandbox section with test mode proof points and keys beside a panel of magic recipient addresses that reproduce each failure mode.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-developers-sections-webhook-events-table","type":"registry:block","title":"Webhook Events Table","files":[{"path":"components/blocks/marketing-pro/developers-sections/webhook-events-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/developers-sections/webhook-events-table.tsx"}],"description":"The complete webhook reference as a ruled table, seven events with payload sizes."},{"name":"marketing-pro-enterprise-sections-ciso-quote-stats","type":"registry:block","title":"CISO Quote Stats","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/ciso-quote-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/ciso-quote-stats.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A two column proof section pairing a customer CISO quote with a portrait against four audited deployment numbers, above a verification line.","dependencies":["radix-ui"]},{"name":"marketing-pro-enterprise-sections-compliance-certifications-grid","type":"registry:block","title":"Compliance Certifications Grid","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/compliance-certifications-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/compliance-certifications-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A centered heading over a three column grid of framework cards, each with a status badge, plain language scope, and a footer audit date.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-enterprise-sections-dedicated-infra-stats","type":"registry:block","title":"Dedicated Infra Stats","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/dedicated-infra-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/dedicated-infra-stats.tsx"}],"description":"Four audited infrastructure numbers over a region table that separates failover from residency."},{"name":"marketing-pro-enterprise-sections-deployment-options-cards","type":"registry:block","title":"Deployment Options Cards","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/deployment-options-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/deployment-options-cards.tsx"}],"description":"Cloud, dedicated, and self hosted as three cards, each stating its tradeoff in the footer.","dependencies":["lucide-react"]},{"name":"marketing-pro-enterprise-sections-enterprise-hero-logos","type":"registry:block","title":"Enterprise Hero Logos","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/enterprise-hero-logos.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/enterprise-hero-logos.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An enterprise hero with the three procurement numbers and a wordmark row of large customers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-enterprise-sections-pilot-terms-panel","type":"registry:block","title":"Pilot Terms Panel","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/pilot-terms-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/pilot-terms-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column section pairing a paid pilot pitch and call to action buttons with a panel listing six standard pilot terms as definition rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-enterprise-sections-procurement-checklist","type":"registry:block","title":"Procurement Checklist","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/procurement-checklist.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/procurement-checklist.tsx"}],"description":"Seven procurement artifacts with availability and turnaround, the vendor packet in rows.","dependencies":["lucide-react"]},{"name":"marketing-pro-enterprise-sections-rollout-responsibilities","type":"registry:block","title":"Rollout Responsibilities","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/rollout-responsibilities.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/rollout-responsibilities.tsx"}],"description":"A two column section pairing a heading and commitment stats with four onboarding phases, each splitting tasks between vendor and customer teams."},{"name":"marketing-pro-enterprise-sections-security-review-fastlane","type":"registry:block","title":"Security Review Fastlane","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/security-review-fastlane.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/security-review-fastlane.tsx"}],"description":"The security review as a dated four step timeline with a free pilot extension if it runs long."},{"name":"marketing-pro-enterprise-sections-sso-scim-grid","type":"registry:block","title":"Sso Scim Grid","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/sso-scim-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/sso-scim-grid.tsx"}],"description":"Six identity questionnaire rows answered with mechanisms, SSO, SCIM, audit, and residency.","dependencies":["lucide-react"]},{"name":"marketing-pro-enterprise-sections-support-tiers-table","type":"registry:block","title":"Support Tiers Table","files":[{"path":"components/blocks/marketing-pro/enterprise-sections/support-tiers-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/enterprise-sections/support-tiers-table.tsx"}],"description":"Three support tiers with contractual response times and automatic credits when missed.","dependencies":["lucide-react"]},{"name":"marketing-pro-events-sections-agenda-day-columns","type":"registry:block","title":"Agenda Day Columns","files":[{"path":"components/blocks/marketing-pro/events-sections/agenda-day-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/agenda-day-columns.tsx"}],"description":"A two day single track agenda with timed session rows and track chips."},{"name":"marketing-pro-events-sections-agenda-tracks-columns","type":"registry:block","title":"Agenda Tracks Columns","files":[{"path":"components/blocks/marketing-pro/events-sections/agenda-tracks-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/agenda-tracks-columns.tsx"}],"description":"A two track conference day side by side with timed sessions and role credited speakers."},{"name":"marketing-pro-events-sections-conference-cta-band","type":"registry:block","title":"Conference Cta Band","files":[{"path":"components/blocks/marketing-pro/events-sections/conference-cta-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/conference-cta-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A primary registration band with the event name, date line, quick facts, and ticket button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-events-sections-event-stats-banner","type":"registry:block","title":"Event Stats Banner","files":[{"path":"components/blocks/marketing-pro/events-sections/event-stats-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/event-stats-banner.tsx"}],"description":"A banner of four numbers from last year, attendance, reach, rating, and return intent."},{"name":"marketing-pro-events-sections-featured-webinar-split","type":"registry:block","title":"Featured Webinar Split","files":[{"path":"components/blocks/marketing-pro/events-sections/featured-webinar-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/featured-webinar-split.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A session pitch with speakers beside a registration card with date facts and an email field.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-events-sections-key-dates-timeline","type":"registry:block","title":"Key Dates Timeline","files":[{"path":"components/blocks/marketing-pro/events-sections/key-dates-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/key-dates-timeline.tsx"}],"description":"Four event milestones sit on a connected dot timeline with done, current, and upcoming states, each carrying a date, title, and one detail line.","dependencies":["lucide-react"]},{"name":"marketing-pro-events-sections-past-talks-list","type":"registry:block","title":"Past Talks List","files":[{"path":"components/blocks/marketing-pro/events-sections/past-talks-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/past-talks-list.tsx"}],"description":"The team speaking record as ruled rows with venues, recordings, and a booking line.","dependencies":["lucide-react"]},{"name":"marketing-pro-events-sections-speakers-grid","type":"registry:block","title":"Speakers Grid","files":[{"path":"components/blocks/marketing-pro/events-sections/speakers-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/speakers-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Eight speaker cards with portraits, roles, and session titles doubling as a mini agenda.","dependencies":["radix-ui"]},{"name":"marketing-pro-events-sections-sponsor-tiers","type":"registry:block","title":"Sponsor Tiers","files":[{"path":"components/blocks/marketing-pro/events-sections/sponsor-tiers.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/sponsor-tiers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Ruled tier rows list sponsor wordmarks with small SVG marks sized down from platinum to community, above a bordered prospectus request strip.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-events-sections-ticket-tiers","type":"registry:block","title":"Ticket Tiers","files":[{"path":"components/blocks/marketing-pro/events-sections/ticket-tiers.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/ticket-tiers.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three bordered ticket cards show prices, inclusion lists, and availability notes with one pass highlighted, closed by a refunds and transfer line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-events-sections-upcoming-events-list","type":"registry:block","title":"Upcoming Events List","files":[{"path":"components/blocks/marketing-pro/events-sections/upcoming-events-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/upcoming-events-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Ruled event rows with date tiles, format badges, and locations under a recordings link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-events-sections-venue-travel-split","type":"registry:block","title":"Venue Travel Split","files":[{"path":"components/blocks/marketing-pro/events-sections/venue-travel-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/venue-travel-split.tsx"}],"description":"A stylized SVG neighborhood map and venue address sit beside ruled rows for airport, transit, and parking plus partner hotels with nightly rates.","dependencies":["lucide-react"]},{"name":"marketing-pro-events-sections-workshop-cards","type":"registry:block","title":"Workshop Cards","files":[{"path":"components/blocks/marketing-pro/events-sections/workshop-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/events-sections/workshop-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Three hands on workshop cards with date chips, outcome lines, and honest seat counts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-accordion-with-links","type":"registry:block","title":"Accordion With Links","files":[{"path":"components/blocks/marketing-pro/faqs/accordion-with-links.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/accordion-with-links.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Accordion beside a bordered card of documentation, community, and support links.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-audience-tabs","type":"registry:block","title":"Audience Tabs","files":[{"path":"components/blocks/marketing-pro/faqs/audience-tabs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/audience-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Centered heading and lede above a three tab switcher for marketers, finance, and IT, each pane a hairline divided list of questions and answers.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-faqs-category-columns","type":"registry:block","title":"Category Columns","files":[{"path":"components/blocks/marketing-pro/faqs/category-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/category-columns.tsx"}],"description":"Three topic columns for billing, product, and security with short plain text answers."},{"name":"marketing-pro-faqs-category-icon-grid","type":"registry:block","title":"Category Icon Grid","files":[{"path":"components/blocks/marketing-pro/faqs/category-icon-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/category-icon-grid.tsx"}],"description":"Six FAQ category cards with icons, answer counts, and the top two questions pulled out.","dependencies":["lucide-react"]},{"name":"marketing-pro-faqs-centered-accordion","type":"registry:block","title":"Centered Accordion","files":[{"path":"components/blocks/marketing-pro/faqs/centered-accordion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/centered-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A classic centered FAQ with a single column accordion of six questions, the first open by default, and a closing support handoff line.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-chat-style-qa","type":"registry:block","title":"Chat Style QA","files":[{"path":"components/blocks/marketing-pro/faqs/chat-style-qa.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/chat-style-qa.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered heading and lede above a bordered chat panel where visitor questions sit in filled bubbles and a named teammate answers in muted bubbles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-faqs-compact-two-column-qa","type":"registry:block","title":"Compact Two Column Qa","files":[{"path":"components/blocks/marketing-pro/faqs/compact-two-column-qa.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/compact-two-column-qa.tsx"}],"description":"A text only FAQ grid with every short answer already open in two columns."},{"name":"marketing-pro-faqs-faq-accordion-two-col","type":"registry:block","title":"Faq Accordion Two Col","files":[{"path":"components/blocks/marketing-pro/faqs/faq-accordion-two-col.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/faq-accordion-two-col.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Two independent accordions side by side, twelve questions in the height of six.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-faq-cards-grid","type":"registry:block","title":"FAQ Cards Grid","files":[{"path":"components/blocks/marketing-pro/faqs/faq-cards-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/faq-cards-grid.tsx"}],"description":"Six bordered cards in a responsive grid, each pairing one question with a short answer."},{"name":"marketing-pro-faqs-faq-with-contact-card","type":"registry:block","title":"Faq With Contact Card","files":[{"path":"components/blocks/marketing-pro/faqs/faq-with-contact-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/faq-with-contact-card.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An FAQ accordion beside a support card with an avatar, reply time promise, and button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-journey-stages","type":"registry:block","title":"Journey Stages","files":[{"path":"components/blocks/marketing-pro/faqs/journey-stages.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/journey-stages.tsx"}],"description":"Centered heading and lede above a vertical rail of numbered stage nodes, each carrying a caption and a short stack of questions and answers."},{"name":"marketing-pro-faqs-numbered-list","type":"registry:block","title":"Numbered List","files":[{"path":"components/blocks/marketing-pro/faqs/numbered-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/numbered-list.tsx"}],"description":"Editorial Q&A list with large muted numerals beside each question and hairline dividers."},{"name":"marketing-pro-faqs-objection-answer-pairs","type":"registry:block","title":"Objection Answer Pairs","files":[{"path":"components/blocks/marketing-pro/faqs/objection-answer-pairs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/objection-answer-pairs.tsx"}],"description":"Four skeptical sentences quoted at heading weight, answered with concessions and receipts."},{"name":"marketing-pro-faqs-sidebar-topics","type":"registry:block","title":"Sidebar Topics","files":[{"path":"components/blocks/marketing-pro/faqs/sidebar-topics.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/sidebar-topics.tsx"}],"description":"Static topic list with counts beside a flat divided list of billing questions."},{"name":"marketing-pro-faqs-single-column-prose","type":"registry:block","title":"Single Column Prose","files":[{"path":"components/blocks/marketing-pro/faqs/single-column-prose.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/single-column-prose.tsx"}],"description":"Narrow centered column of stacked Q&As in calm prose separated by hairlines."},{"name":"marketing-pro-faqs-split-headline-accordion","type":"registry:block","title":"Split Headline Accordion","files":[{"path":"components/blocks/marketing-pro/faqs/split-headline-accordion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/split-headline-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Sticky heading and lede in the left third with the accordion filling the right two thirds.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-top-questions-plus-all","type":"registry:block","title":"Top Questions Plus All","files":[{"path":"components/blocks/marketing-pro/faqs/top-questions-plus-all.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/top-questions-plus-all.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Three featured question cards above an accordion holding the remaining answers.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-topic-columns","type":"registry:block","title":"Topic Columns","files":[{"path":"components/blocks/marketing-pro/faqs/topic-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/topic-columns.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A static FAQ grouping bold questions and short muted answers in a two column grid under three uppercase topic labels, closed by a contact panel.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-faqs-verdict-list","type":"registry:block","title":"Verdict List","files":[{"path":"components/blocks/marketing-pro/faqs/verdict-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/verdict-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Left aligned heading above a hairline divided list where each row pairs a Yes, No, or Depends badge with a bold question and short answer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-faqs-wide-accordion-bold","type":"registry:block","title":"Wide Accordion Bold","files":[{"path":"components/blocks/marketing-pro/faqs/wide-accordion-bold.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/wide-accordion-bold.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Full width accordion with oversized question typography for confident scanning.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-with-cta-banner","type":"registry:block","title":"With CTA Banner","files":[{"path":"components/blocks/marketing-pro/faqs/with-cta-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/with-cta-banner.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered accordion above a slim bordered contact band with an outline support button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-faqs-with-search-bar","type":"registry:block","title":"With Search Bar","files":[{"path":"components/blocks/marketing-pro/faqs/with-search-bar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/faqs/with-search-bar.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"An FAQ head with a search pill, topic chips, and a most asked accordion beneath.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-feature-sections-accordion-with-preview","type":"registry:block","title":"Accordion With Preview","files":[{"path":"components/blocks/marketing-pro/feature-sections/accordion-with-preview.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/accordion-with-preview.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Single open accordion of features paired with an analytics preview window.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-feature-sections-alternating-rows","type":"registry:block","title":"Alternating Rows","files":[{"path":"components/blocks/marketing-pro/feature-sections/alternating-rows.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/alternating-rows.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A centered header above three feature rows that alternate sides, pairing icon led copy and check lists with framed app panel mockups.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-feature-sections-alternating-with-charts","type":"registry:block","title":"Alternating With Charts","files":[{"path":"components/blocks/marketing-pro/feature-sections/alternating-with-charts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/alternating-with-charts.tsx"}],"description":"Three alternating feature rows pairing copy and checklists with bar, line, and donut chart panels.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-before-after-panels","type":"registry:block","title":"Before After Panels","files":[{"path":"components/blocks/marketing-pro/feature-sections/before-after-panels.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/before-after-panels.tsx"}],"description":"A centered header above two matched panels, a muted before column and a highlighted after column listing the same tasks with new time costs.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-bento-grid","type":"registry:block","title":"Bento Grid","files":[{"path":"components/blocks/marketing-pro/feature-sections/bento-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/bento-grid.tsx"}],"description":"Centered intro above a bento of one large dashboard card and five smaller icon tiles.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-bento-grid-features","type":"registry:block","title":"Bento Grid Features","files":[{"path":"components/blocks/marketing-pro/feature-sections/bento-grid-features.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/bento-grid-features.tsx"}],"description":"Five features in mixed cell sizes, a sparkline lead and an inbox stack among quiet text cells.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-capability-matrix","type":"registry:block","title":"Capability Matrix","files":[{"path":"components/blocks/marketing-pro/feature-sections/capability-matrix.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/capability-matrix.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A left aligned header above a framed table crossing six capabilities against three teams, marking coverage with checks and gaps with muted minus icons.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-cards-with-mockups","type":"registry:block","title":"Cards With Mockups","files":[{"path":"components/blocks/marketing-pro/feature-sections/cards-with-mockups.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/cards-with-mockups.tsx"}],"description":"Three feature cards, each topped with a small chart, list, or form mockup."},{"name":"marketing-pro-feature-sections-centered-rows","type":"registry:block","title":"Centered Rows","files":[{"path":"components/blocks/marketing-pro/feature-sections/centered-rows.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/centered-rows.tsx"}],"description":"Narrow centered column of four icon feature rows separated by dividers.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-checklist-split","type":"registry:block","title":"Checklist Split","files":[{"path":"components/blocks/marketing-pro/feature-sections/checklist-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/checklist-split.tsx"}],"description":"A split feature section with a header and grouped checklist beside a tall app window mockup with stats, task rows, and status chips.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-compact-two-column","type":"registry:block","title":"Compact Two Column","files":[{"path":"components/blocks/marketing-pro/feature-sections/compact-two-column.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/compact-two-column.tsx"}],"description":"Centered heading over a tight two column list of eight checkmarked essentials.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-feature-list-two-column","type":"registry:block","title":"Feature List Two Column","files":[{"path":"components/blocks/marketing-pro/feature-sections/feature-list-two-column.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/feature-list-two-column.tsx"}],"description":"A text only inventory of eight features, each a bold name with one working sentence."},{"name":"marketing-pro-feature-sections-feature-tabs-with-preview","type":"registry:block","title":"Feature Tabs With Preview","files":[{"path":"components/blocks/marketing-pro/feature-sections/feature-tabs-with-preview.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/feature-tabs-with-preview.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs switching between three features, each pane pairing a blurb with a framed app mockup.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-feature-sections-feature-timeline","type":"registry:block","title":"Feature Timeline","files":[{"path":"components/blocks/marketing-pro/feature-sections/feature-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/feature-timeline.tsx"}],"description":"A left aligned header above a vertical timeline of four numbered nodes, each carrying a capability title, a paragraph, and outcome chips."},{"name":"marketing-pro-feature-sections-features-with-area-chart","type":"registry:block","title":"Features With Area Chart","files":[{"path":"components/blocks/marketing-pro/feature-sections/features-with-area-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/features-with-area-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Reporting copy beside the actual shadcn chart component the dashboard renders.","dependencies":["lucide-react","recharts"]},{"name":"marketing-pro-feature-sections-features-with-customer-quotes","type":"registry:block","title":"Features With Customer Quotes","files":[{"path":"components/blocks/marketing-pro/feature-sections/features-with-customer-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/features-with-customer-quotes.tsx"}],"description":"Four capabilities, each paired with one customer line about that specific feature."},{"name":"marketing-pro-feature-sections-grid-with-sparklines","type":"registry:block","title":"Grid With Sparklines","files":[{"path":"components/blocks/marketing-pro/feature-sections/grid-with-sparklines.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/grid-with-sparklines.tsx"}],"description":"Six feature cards, each headed by a distinct mini graphic such as a sparkline, ring, or gauge."},{"name":"marketing-pro-feature-sections-icon-benefit-grid","type":"registry:block","title":"Icon Benefit Grid","files":[{"path":"components/blocks/marketing-pro/feature-sections/icon-benefit-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/icon-benefit-grid.tsx"}],"description":"A centered header over a hairline divided three by two grid of six benefits, each with an icon tile, one line title, and two line copy.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-icon-grid-six","type":"registry:block","title":"Icon Grid Six","files":[{"path":"components/blocks/marketing-pro/feature-sections/icon-grid-six.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/icon-grid-six.tsx"}],"description":"Centered heading over a three column grid of six icon led feature blurbs.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-icon-list-three-column","type":"registry:block","title":"Icon List Three Column","files":[{"path":"components/blocks/marketing-pro/feature-sections/icon-list-three-column.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/icon-list-three-column.tsx"}],"description":"Six features as inline icons, bold names, and single sentences, no cards.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-mockup-with-callouts","type":"registry:block","title":"Mockup With Callouts","files":[{"path":"components/blocks/marketing-pro/feature-sections/mockup-with-callouts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/mockup-with-callouts.tsx"}],"description":"A centered header above one annotated product window with numbered callout badges, then a four column legend mapping each number to a feature.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-numbered-feature-rows","type":"registry:block","title":"Numbered Feature Rows","files":[{"path":"components/blocks/marketing-pro/feature-sections/numbered-feature-rows.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/numbered-feature-rows.tsx"}],"description":"Three features argued editorially in ruled rows with ghost numerals and proof lines."},{"name":"marketing-pro-feature-sections-solid-panel-grid","type":"registry:block","title":"Solid Panel Grid","files":[{"path":"components/blocks/marketing-pro/feature-sections/solid-panel-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/solid-panel-grid.tsx"}],"description":"Solid primary panel holding a heading and a six tile icon feature grid.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-split-with-app-window","type":"registry:block","title":"Split With App Window","files":[{"path":"components/blocks/marketing-pro/feature-sections/split-with-app-window.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/split-with-app-window.tsx"}],"description":"Heading and checklist beside a campaign window mockup with live progress bars.","dependencies":["lucide-react"]},{"name":"marketing-pro-feature-sections-split-with-flow-diagram","type":"registry:block","title":"Split With Flow Diagram","files":[{"path":"components/blocks/marketing-pro/feature-sections/split-with-flow-diagram.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/split-with-flow-diagram.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Feature copy and a checklist beside an SVG automation flow with a trigger, condition, and branches.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-feature-sections-split-with-stat-cards","type":"registry:block","title":"Split With Stat Cards","files":[{"path":"components/blocks/marketing-pro/feature-sections/split-with-stat-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/split-with-stat-cards.tsx"}],"description":"Feature copy beside a two by two grid of mini stat cards with attribution notes."},{"name":"marketing-pro-feature-sections-stacked-panels","type":"registry:block","title":"Stacked Panels","files":[{"path":"components/blocks/marketing-pro/feature-sections/stacked-panels.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/stacked-panels.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two stacked split panels pairing copy and checklists with app window mockups.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-feature-sections-tabbed-showcase","type":"registry:block","title":"Tabbed Showcase","files":[{"path":"components/blocks/marketing-pro/feature-sections/tabbed-showcase.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/tabbed-showcase.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A tabbed feature showcase with pill triggers for plan, track, and ship views, each pairing copy and a checklist with an app panel mockup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-feature-sections-with-stat-band","type":"registry:block","title":"With Stat Band","files":[{"path":"components/blocks/marketing-pro/feature-sections/with-stat-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/feature-sections/with-stat-band.tsx"}],"description":"Icon feature grid capped by a divided band of three headline stats.","dependencies":["lucide-react"]},{"name":"marketing-pro-footers-brand-blurb-columns","type":"registry:block","title":"Brand Blurb Columns","files":[{"path":"components/blocks/marketing-pro/footers/brand-blurb-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/brand-blurb-columns.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Brand blurb and social icons beside three columns of product links."},{"name":"marketing-pro-footers-centered-logo-links","type":"registry:block","title":"Centered Logo Links","files":[{"path":"components/blocks/marketing-pro/footers/centered-logo-links.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/centered-logo-links.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Centered logo over a single row of links, social icons, and a copyright line."},{"name":"marketing-pro-footers-columns-with-newsletter","type":"registry:block","title":"Columns With Newsletter","files":[{"path":"components/blocks/marketing-pro/footers/columns-with-newsletter.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/columns-with-newsletter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Four link columns beside a newsletter pitch with an inline email subscribe row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-footers-dark-solid","type":"registry:block","title":"Dark Solid","files":[{"path":"components/blocks/marketing-pro/footers/dark-solid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/dark-solid.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Solid primary footer with brand blurb, socials, and four link columns."},{"name":"marketing-pro-footers-developer-links-footer","type":"registry:block","title":"Developer Links Footer","files":[{"path":"components/blocks/marketing-pro/footers/developer-links-footer.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/developer-links-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A developer footer with an install command chip, docs columns, and an API status row."},{"name":"marketing-pro-footers-five-column-with-tagline","type":"registry:block","title":"Five Column With Tagline","files":[{"path":"components/blocks/marketing-pro/footers/five-column-with-tagline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/five-column-with-tagline.tsx"}],"description":"Brand name and tagline beside four link columns above a legal bar."},{"name":"marketing-pro-footers-footer-with-status-line","type":"registry:block","title":"Footer With Status Line","files":[{"path":"components/blocks/marketing-pro/footers/footer-with-status-line.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/footer-with-status-line.tsx"}],"description":"A four column footer whose bottom bar carries live status, region, and locale."},{"name":"marketing-pro-footers-giant-wordmark","type":"registry:block","title":"Giant Wordmark","files":[{"path":"components/blocks/marketing-pro/footers/giant-wordmark.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/giant-wordmark.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A statement footer pairing a slim nav and social row, an oversized brand wordmark across the middle, and a copyright and legal bottom bar."},{"name":"marketing-pro-footers-global-offices","type":"registry:block","title":"Global Offices","files":[{"path":"components/blocks/marketing-pro/footers/global-offices.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/global-offices.tsx"}],"description":"A footer with a brand blurb and three link columns, a dedicated offices band listing four worldwide locations with hours, and a contact bar.","dependencies":["lucide-react"]},{"name":"marketing-pro-footers-legal-heavy","type":"registry:block","title":"Legal Heavy","files":[{"path":"components/blocks/marketing-pro/footers/legal-heavy.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/legal-heavy.tsx"}],"description":"Link columns over a dense legal block with disclaimers and compliance badges."},{"name":"marketing-pro-footers-mega-footer","type":"registry:block","title":"Mega Footer","files":[{"path":"components/blocks/marketing-pro/footers/mega-footer.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/mega-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A comprehensive footer with a brand mark and tagline beside four link columns, plus a bottom bar pairing the copyright with social icon links."},{"name":"marketing-pro-footers-minimal-inline-links","type":"registry:block","title":"Minimal Inline Links","files":[{"path":"components/blocks/marketing-pro/footers/minimal-inline-links.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/minimal-inline-links.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"One slim row with copyright, inline nav links, and small social icons."},{"name":"marketing-pro-footers-newsletter-centered","type":"registry:block","title":"Newsletter Centered","files":[{"path":"components/blocks/marketing-pro/footers/newsletter-centered.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/newsletter-centered.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Centered newsletter signup above a row of nav links and a copyright line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-footers-sitemap-mega-footer","type":"registry:block","title":"Sitemap Mega Footer","files":[{"path":"components/blocks/marketing-pro/footers/sitemap-mega-footer.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/sitemap-mega-footer.tsx"}],"description":"Six dense link columns covering every page, pure wayfinding with a slim legal row."},{"name":"marketing-pro-footers-slim-centered","type":"registry:block","title":"Slim Centered","files":[{"path":"components/blocks/marketing-pro/footers/slim-centered.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/slim-centered.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A minimal centered footer stacking a brand mark, one row of five links, social icon buttons, and a muted copyright line under a hairline border."},{"name":"marketing-pro-footers-social-and-certifications","type":"registry:block","title":"Social And Certifications","files":[{"path":"components/blocks/marketing-pro/footers/social-and-certifications.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/social-and-certifications.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A trust forward footer closing with social icons and compliance chips for SOC 2, GDPR, and ISO.","dependencies":["lucide-react"]},{"name":"marketing-pro-footers-stacked-link-rows","type":"registry:block","title":"Stacked Link Rows","files":[{"path":"components/blocks/marketing-pro/footers/stacked-link-rows.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/stacked-link-rows.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer that stacks each link group into its own hairline separated row, with a brand and social row above and a copyright bar below."},{"name":"marketing-pro-footers-with-app-badges","type":"registry:block","title":"With App Badges","files":[{"path":"components/blocks/marketing-pro/footers/with-app-badges.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/with-app-badges.tsx"}],"description":"Three link columns plus iOS and Android download buttons above a brand bar.","dependencies":["lucide-react"]},{"name":"marketing-pro-footers-with-blog-posts","type":"registry:block","title":"With Blog Posts","files":[{"path":"components/blocks/marketing-pro/footers/with-blog-posts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/with-blog-posts.tsx"}],"description":"A footer pairing a brand blurb and three link columns with a latest posts list of three dated links and a view all link.","dependencies":["lucide-react"]},{"name":"marketing-pro-footers-with-contact-info","type":"registry:block","title":"With Contact Info","files":[{"path":"components/blocks/marketing-pro/footers/with-contact-info.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/with-contact-info.tsx"}],"description":"Link columns alongside address, email, and phone contact details.","dependencies":["lucide-react"]},{"name":"marketing-pro-footers-with-cta-row","type":"registry:block","title":"With Cta Row","files":[{"path":"components/blocks/marketing-pro/footers/with-cta-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/with-cta-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A footer opening with a final CTA row above standard link columns and a status link.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-footers-with-status-and-locale","type":"registry:block","title":"With Status And Locale","files":[{"path":"components/blocks/marketing-pro/footers/with-status-and-locale.tsx","type":"registry:component","target":"components/blocks/marketing-pro/footers/with-status-and-locale.tsx"}],"description":"Four link columns with a bottom bar showing system status and a language picker.","dependencies":["lucide-react"]},{"name":"marketing-pro-help-center-sections-category-cards-grid","type":"registry:block","title":"Category Cards Grid","files":[{"path":"components/blocks/marketing-pro/help-center-sections/category-cards-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/category-cards-grid.tsx"}],"description":"Six help categories as cards with article counts and the top three links inlined.","dependencies":["lucide-react"]},{"name":"marketing-pro-help-center-sections-community-answer-callout","type":"registry:block","title":"Community Answer Callout","files":[{"path":"components/blocks/marketing-pro/help-center-sections/community-answer-callout.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/community-answer-callout.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A forum thread mockup with an accepted answer, selling community as a support channel.","dependencies":["radix-ui"]},{"name":"marketing-pro-help-center-sections-escalation-paths-band","type":"registry:block","title":"Escalation Paths Band","files":[{"path":"components/blocks/marketing-pro/help-center-sections/escalation-paths-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/escalation-paths-band.tsx"}],"description":"Chat, email, and phone as cards with measured response times and when to pick each.","dependencies":["lucide-react"]},{"name":"marketing-pro-help-center-sections-help-search-hero","type":"registry:block","title":"Help Search Hero","files":[{"path":"components/blocks/marketing-pro/help-center-sections/help-search-hero.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/help-search-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A help center hero with one big search field and the five queries people actually type.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-help-center-sections-known-issues-list","type":"registry:block","title":"Known Issues List","files":[{"path":"components/blocks/marketing-pro/help-center-sections/known-issues-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/known-issues-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A tracker of open bugs as ruled rows, each with a status badge, affected area, open date, and a workaround link when one exists.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-help-center-sections-live-sessions-schedule","type":"registry:block","title":"Live Sessions Schedule","files":[{"path":"components/blocks/marketing-pro/help-center-sections/live-sessions-schedule.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/live-sessions-schedule.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The next four live sessions as ruled rows, each with a date tile, the topic, host and time, and a seat reservation button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-help-center-sections-popular-articles-list","type":"registry:block","title":"Popular Articles List","files":[{"path":"components/blocks/marketing-pro/help-center-sections/popular-articles-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/popular-articles-list.tsx"}],"description":"The ten most read help articles as ranked rows with categories and read times.","dependencies":["lucide-react"]},{"name":"marketing-pro-help-center-sections-setup-steps-timeline","type":"registry:block","title":"Setup Steps Timeline","files":[{"path":"components/blocks/marketing-pro/help-center-sections/setup-steps-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/setup-steps-timeline.tsx"}],"description":"A numbered vertical timeline of five setup steps, each with a time estimate, a one line description, and a link to the full guide."},{"name":"marketing-pro-help-center-sections-support-plans-table","type":"registry:block","title":"Support Plans Table","files":[{"path":"components/blocks/marketing-pro/help-center-sections/support-plans-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/support-plans-table.tsx"}],"description":"Three support tiers as columns in a ruled table, compared across channels, first reply time, coverage hours, escalation, and onboarding."},{"name":"marketing-pro-help-center-sections-symptom-triage-table","type":"registry:block","title":"Symptom Triage Table","files":[{"path":"components/blocks/marketing-pro/help-center-sections/symptom-triage-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/symptom-triage-table.tsx"}],"description":"A ruled three column table mapping common symptoms to the first thing to check and the fix article, with a chat fallback line beneath."},{"name":"marketing-pro-help-center-sections-system-status-band","type":"registry:block","title":"System Status Band","files":[{"path":"components/blocks/marketing-pro/help-center-sections/system-status-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/system-status-band.tsx"}],"description":"An overall status line above one row per service, each with a 45 day uptime bar strip, an uptime percentage, and a status page link."},{"name":"marketing-pro-help-center-sections-video-guides-row","type":"registry:block","title":"Video Guides Row","files":[{"path":"components/blocks/marketing-pro/help-center-sections/video-guides-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/help-center-sections/video-guides-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three walkthrough videos with posters, honest durations, and one line on what each covers.","dependencies":["lucide-react"]},{"name":"marketing-pro-hero-sections-centered-minimal","type":"registry:block","title":"Centered Minimal","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-minimal.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-minimal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A typography only hero with a centered headline, lede, single CTA, and a muted trust line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-centered-with-browser-mockup","type":"registry:block","title":"Centered With Browser Mockup","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-with-browser-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-with-browser-mockup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero with headline and CTAs above a browser mockup with sidebar, chart, and table rows.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-centered-with-feature-pills","type":"registry:block","title":"Centered With Feature Pills","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-with-feature-pills.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-with-feature-pills.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered headline, lede, and dual CTAs above a wrapped row of bordered icon feature pills.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-centered-with-integration-diagram","type":"registry:block","title":"Centered With Integration Diagram","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-with-integration-diagram.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-with-integration-diagram.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero above a hub and spoke diagram of six integration chips around an Acme node.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-centered-with-logo-strip","type":"registry:block","title":"Centered With Logo Strip","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-with-logo-strip.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-with-logo-strip.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero anchored by a ruled strip of customer wordmarks under a trust count.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-centered-with-search","type":"registry:block","title":"Centered With Search","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-with-search.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-with-search.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"A docs hero with centered copy above a command bar search mockup with suggestion rows.","dependencies":["lucide-react"]},{"name":"marketing-pro-hero-sections-centered-with-video-mockup","type":"registry:block","title":"Centered With Video Mockup","files":[{"path":"components/blocks/marketing-pro/hero-sections/centered-with-video-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/centered-with-video-mockup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Centered hero with headline, lede, and dual CTAs above a video player mockup with poster, play button, control bar, and a row of chapter markers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-headline-only-hero","type":"registry:block","title":"Headline Only Hero","files":[{"path":"components/blocks/marketing-pro/hero-sections/headline-only-hero.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/headline-only-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"One oversized statement, one line with a number, two buttons. Typography carries the fold.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-hero-with-ticker-band","type":"registry:block","title":"Hero With Ticker Band","files":[{"path":"components/blocks/marketing-pro/hero-sections/hero-with-ticker-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/hero-with-ticker-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero above five live platform activity tiles with pulsing dots.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-left-aligned-with-checklist","type":"registry:block","title":"Left Aligned With Checklist","files":[{"path":"components/blocks/marketing-pro/hero-sections/left-aligned-with-checklist.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/left-aligned-with-checklist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A left aligned headline, lede, three check items, and dual CTAs that own the left edge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-metrics-hero","type":"registry:block","title":"Metrics Hero","files":[{"path":"components/blocks/marketing-pro/hero-sections/metrics-hero.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/metrics-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered proof led hero with headline, lede, dual CTAs, a hairline separated row of three oversized stats, and a customer wordmark strip.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-signup-hero","type":"registry:block","title":"Signup Hero","files":[{"path":"components/blocks/marketing-pro/hero-sections/signup-hero.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/signup-hero.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A split hero pairing a headline, lede, and check marked benefits with an inline signup card of labeled fields, Google sign in, and a terms line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-split-app-panel","type":"registry:block","title":"Split App Panel","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-app-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-app-panel.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero pairing headline, lede, dual CTAs, and an avatar star rating with a markup app window of icon rail, chart strip, and invoice rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-analytics-dashboard","type":"registry:block","title":"Split With Analytics Dashboard","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-analytics-dashboard.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-analytics-dashboard.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column hero pairing headline and CTAs with an analytics dashboard mockup and area chart.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-chat-mockup","type":"registry:block","title":"Split With Chat Mockup","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-chat-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-chat-mockup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A support led hero beside a chat mockup with a named agent and a resolved in minutes line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-code","type":"registry:block","title":"Split With Code","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-code.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-code.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero with headline, lede, and CTAs beside a token colored code editor window mockup.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-comparison","type":"registry:block","title":"Split With Comparison","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-comparison.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Split hero with headline, lede, and dual CTAs beside a two column panel contrasting the old way as crossed items against checked new ones.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-funnel-graphic","type":"registry:block","title":"Split With Funnel Graphic","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-funnel-graphic.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-funnel-graphic.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero pairing headline and CTAs with a vertical funnel of narrowing stage bars.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-live-chart","type":"registry:block","title":"Split With Live Chart","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-live-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-live-chart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A hero whose chart is a working shadcn component, wired for real data instead of a mockup.","dependencies":["class-variance-authority","radix-ui","recharts"]},{"name":"marketing-pro-hero-sections-split-with-metrics","type":"registry:block","title":"Split With Metrics","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-metrics.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-metrics.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero with copy and dual CTAs beside a divided panel of four large KPI tiles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-mobile-app","type":"registry:block","title":"Split With Mobile App","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-mobile-app.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-mobile-app.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero with copy and dual CTAs beside a phone mockup of the product mobile app.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-pricing-card","type":"registry:block","title":"Split With Pricing Card","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-pricing-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-pricing-card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Split hero with headline, lede, dual CTAs, and a guarantee row beside a single plan card showing the seat price, checked features, and trial CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-signup-form","type":"registry:block","title":"Split With Signup Form","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-signup-form.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-signup-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A hero with the signup card in the fold, friction removers checked beside email and password fields.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-stats-sidebar","type":"registry:block","title":"Split With Stats Sidebar","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-stats-sidebar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-stats-sidebar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A calm hero with four proof numbers running down a single ruled rail.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-steps","type":"registry:block","title":"Split With Steps","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-steps.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Split hero with headline, lede, dual CTAs, and a two stat row beside a card walking the four onboarding steps on a numbered vertical rail.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-split-with-testimonial","type":"registry:block","title":"Split With Testimonial","files":[{"path":"components/blocks/marketing-pro/hero-sections/split-with-testimonial.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/split-with-testimonial.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero with headline, lede, and dual CTAs beside a single customer quote card.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-terminal-hero","type":"registry:block","title":"Terminal Hero","files":[{"path":"components/blocks/marketing-pro/hero-sections/terminal-hero.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/terminal-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered developer tool hero with an install command row, dual CTAs, and a terminal window mockup of prompt, output, and success lines.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-with-avatar-rating","type":"registry:block","title":"With Avatar Rating","files":[{"path":"components/blocks/marketing-pro/hero-sections/with-avatar-rating.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/with-avatar-rating.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero with dual CTAs above overlapping avatars, five stars, and a team count line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-hero-sections-with-customer-counter","type":"registry:block","title":"With Customer Counter","files":[{"path":"components/blocks/marketing-pro/hero-sections/with-customer-counter.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/with-customer-counter.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero with the unrounded customer count at display size and an avatar row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-hero-sections-with-kanban-preview","type":"registry:block","title":"With Kanban Preview","files":[{"path":"components/blocks/marketing-pro/hero-sections/with-kanban-preview.tsx","type":"registry:component","target":"components/blocks/marketing-pro/hero-sections/with-kanban-preview.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered hero with copy and CTAs above a wide kanban board mockup of campaign tasks.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-impact-sections-carbon-stats-band","type":"registry:block","title":"Carbon Stats Band","files":[{"path":"components/blocks/marketing-pro/impact-sections/carbon-stats-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/carbon-stats-band.tsx"}],"description":"Three years of audited emissions with shrinking bars and the mechanism named."},{"name":"marketing-pro-impact-sections-commitments-timeline","type":"registry:block","title":"Commitments Timeline","files":[{"path":"components/blocks/marketing-pro/impact-sections/commitments-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/commitments-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A vertical rail timeline of public impact promises with year markers, kept or in progress status badges, and honest detail lines.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-impact-sections-counting-rules-grid","type":"registry:block","title":"Counting Rules Grid","files":[{"path":"components/blocks/marketing-pro/impact-sections/counting-rules-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/counting-rules-grid.tsx"}],"description":"A methodology section presenting four numbered impact accounting rules in a two by two card grid with the external auditor named in the footer.","dependencies":["lucide-react"]},{"name":"marketing-pro-impact-sections-grantee-spotlight","type":"registry:block","title":"Grantee Spotlight","files":[{"path":"components/blocks/marketing-pro/impact-sections/grantee-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/grantee-spotlight.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A grantee spotlight split with a director quote on the left and a paperwork facts panel plus a headline outcome number on the right.","dependencies":["radix-ui"]},{"name":"marketing-pro-impact-sections-grants-program-card","type":"registry:block","title":"Grants Program Card","files":[{"path":"components/blocks/marketing-pro/impact-sections/grants-program-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/grants-program-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A grants program with cycle stats, clear criteria, and no logo placement required.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-impact-sections-impact-report-numbers","type":"registry:block","title":"Impact Report Numbers","files":[{"path":"components/blocks/marketing-pro/impact-sections/impact-report-numbers.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/impact-report-numbers.tsx"}],"description":"The annual impact report as an eight line ledger, including the weakest number.","dependencies":["lucide-react"]},{"name":"marketing-pro-impact-sections-open-source-list","type":"registry:block","title":"Open Source List","files":[{"path":"components/blocks/marketing-pro/impact-sections/open-source-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/open-source-list.tsx"}],"description":"Maintain, contribute, fund, publish. Four open source relations with real numbers.","dependencies":["lucide-react"]},{"name":"marketing-pro-impact-sections-pledge-percent-card","type":"registry:block","title":"Pledge Percent Card","files":[{"path":"components/blocks/marketing-pro/impact-sections/pledge-percent-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/pledge-percent-card.tsx"}],"description":"The 1% pledge with last year's total and the allocation rows that prove it."},{"name":"marketing-pro-impact-sections-product-donations-grid","type":"registry:block","title":"Product Donations Grid","files":[{"path":"components/blocks/marketing-pro/impact-sections/product-donations-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/product-donations-grid.tsx"}],"description":"A centered header over three stat cards for standing product giveaway programs, each with a big count, terms, and eligibility link.","dependencies":["lucide-react"]},{"name":"marketing-pro-impact-sections-regional-giving-bar","type":"registry:block","title":"Regional Giving Bar","files":[{"path":"components/blocks/marketing-pro/impact-sections/regional-giving-bar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/regional-giving-bar.tsx"}],"description":"A regional grant allocation section with one segmented bar across the top and a ruled legend listing regions, grantee counts, amounts, and share."},{"name":"marketing-pro-impact-sections-volunteer-days-panel","type":"registry:block","title":"Volunteer Days Panel","files":[{"path":"components/blocks/marketing-pro/impact-sections/volunteer-days-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/impact-sections/volunteer-days-panel.tsx"}],"description":"A split volunteer program section with participation stats on the left and a partner outing roster listing activities, people, and hours on the right."},{"name":"marketing-pro-integration-sections-api-webhooks-panel","type":"registry:block","title":"API and Webhooks Panel","files":[{"path":"components/blocks/marketing-pro/integration-sections/api-webhooks-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/api-webhooks-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A developer split with a headline, capability ticks, and a docs button beside an inverted code panel with file tabs and token styled lines.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-connection-methods-table","type":"registry:block","title":"Connection Methods Table","files":[{"path":"components/blocks/marketing-pro/integration-sections/connection-methods-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/connection-methods-table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A centered header above a comparison table weighing native apps, no code recipes, and the developer API, with the most popular column highlighted.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-directory-grid","type":"registry:block","title":"Directory Grid","files":[{"path":"components/blocks/marketing-pro/integration-sections/directory-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/directory-grid.tsx"}],"description":"An integration directory with a centered header, static category chips, a three by two grid of tool cards with Connect links, and a request line.","dependencies":["lucide-react"]},{"name":"marketing-pro-integration-sections-integration-request-board","type":"registry:block","title":"Integration Request Board","files":[{"path":"components/blocks/marketing-pro/integration-sections/integration-request-board.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integration-request-board.tsx"}],"description":"Connector requests with vote counts and honest statuses, the declined one kept visible.","dependencies":["lucide-react"]},{"name":"marketing-pro-integration-sections-integration-security-panel","type":"registry:block","title":"Integration Security Panel","files":[{"path":"components/blocks/marketing-pro/integration-sections/integration-security-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integration-security-panel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A trust focused split with a headline, four security assurances, and a docs link beside an access manager showing granted scopes and a revoke control.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-integration-setup-steps","type":"registry:block","title":"Integration Setup Steps","files":[{"path":"components/blocks/marketing-pro/integration-sections/integration-setup-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integration-setup-steps.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"An onboarding split with a headline, a numbered three step timeline, and a blueprint that walks from choosing a tool to the first live sync.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-integration-spotlight","type":"registry:block","title":"Integration Spotlight","files":[{"path":"components/blocks/marketing-pro/integration-sections/integration-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integration-spotlight.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An integration deep dive with paired marks, a headline, three feature rows, and connect buttons beside a field mapping panel of what syncs each way.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-integrations-categories-columns","type":"registry:block","title":"Integrations Categories Columns","files":[{"path":"components/blocks/marketing-pro/integration-sections/integrations-categories-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integrations-categories-columns.tsx"}],"description":"A text only directory index of four category columns with counts and linked tool names."},{"name":"marketing-pro-integration-sections-integrations-cta-band","type":"registry:block","title":"Integrations Cta Band","files":[{"path":"components/blocks/marketing-pro/integration-sections/integrations-cta-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integrations-cta-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered panel with icon chips, a stack fit headline, and browse and request buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-integrations-grid-tiles","type":"registry:block","title":"Integrations Grid Tiles","files":[{"path":"components/blocks/marketing-pro/integration-sections/integrations-grid-tiles.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integrations-grid-tiles.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Nine category tiles with icons and data flow blurbs above a browse all button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-integrations-hub-diagram","type":"registry:block","title":"Integrations Hub Diagram","files":[{"path":"components/blocks/marketing-pro/integration-sections/integrations-hub-diagram.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integrations-hub-diagram.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hub diagram of sources flowing into Acme and attribution flowing back out, with a legend.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-integrations-with-code","type":"registry:block","title":"Integrations With Code","files":[{"path":"components/blocks/marketing-pro/integration-sections/integrations-with-code.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/integrations-with-code.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"API copy and a checklist beside a terminal panel showing a colored webhook payload.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-integration-sections-sync-volume-chart","type":"registry:block","title":"Sync Volume Chart","files":[{"path":"components/blocks/marketing-pro/integration-sections/sync-volume-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/integration-sections/sync-volume-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Records synced per day as shadcn bars beside sync lag and success rate facts.","dependencies":["recharts"]},{"name":"marketing-pro-localization-sections-data-residency-split","type":"registry:block","title":"Data Residency Split","files":[{"path":"components/blocks/marketing-pro/localization-sections/data-residency-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/data-residency-split.tsx"}],"description":"Split section stacking residency stats beside a seven region list with mono codes, role notes, and live or in build status chips."},{"name":"marketing-pro-localization-sections-glossary-terms-table","type":"registry:block","title":"Glossary Terms Table","files":[{"path":"components/blocks/marketing-pro/localization-sections/glossary-terms-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/glossary-terms-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A heading and lede, then a bordered table of product terms with approved translations in three languages, usage notes, and review status chips."},{"name":"marketing-pro-localization-sections-languages-grid-band","type":"registry:block","title":"Languages Grid Band","files":[{"path":"components/blocks/marketing-pro/localization-sections/languages-grid-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/languages-grid-band.tsx"}],"description":"Interface languages as chips with two honest tiers, full coverage or UI only."},{"name":"marketing-pro-localization-sections-local-payments-row","type":"registry:block","title":"Local Payments Row","files":[{"path":"components/blocks/marketing-pro/localization-sections/local-payments-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/local-payments-row.tsx"}],"description":"Currencies, local payment methods, tax, and AP ready invoices as four cards.","dependencies":["lucide-react"]},{"name":"marketing-pro-localization-sections-locale-formatting-split","type":"registry:block","title":"Locale Formatting Split","files":[{"path":"components/blocks/marketing-pro/localization-sections/locale-formatting-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/locale-formatting-split.tsx"}],"description":"A two column split pairing a stacked list of formatting behaviors with a bordered panel rendering one date, number, and price across five locales."},{"name":"marketing-pro-localization-sections-market-rollout-timeline","type":"registry:block","title":"Market Rollout Timeline","files":[{"path":"components/blocks/marketing-pro/localization-sections/market-rollout-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/market-rollout-timeline.tsx"}],"description":"A heading and lede, then four phase columns on a dotted top rule, each with a quarter label, status chip, markets opening, and shipping work."},{"name":"marketing-pro-localization-sections-regional-compliance-list","type":"registry:block","title":"Regional Compliance List","files":[{"path":"components/blocks/marketing-pro/localization-sections/regional-compliance-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/regional-compliance-list.tsx"}],"description":"Privacy and messaging laws by region, described as product behavior instead of legal prose."},{"name":"marketing-pro-localization-sections-rtl-support-callout","type":"registry:block","title":"Rtl Support Callout","files":[{"path":"components/blocks/marketing-pro/localization-sections/rtl-support-callout.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/rtl-support-callout.tsx"}],"description":"Right to left and script support described at the level where credibility lives."},{"name":"marketing-pro-localization-sections-support-hubs-columns","type":"registry:block","title":"Support Hubs Columns","files":[{"path":"components/blocks/marketing-pro/localization-sections/support-hubs-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/support-hubs-columns.tsx"}],"description":"Three regional support hub columns with staffing hour strips, native language lists, and median first reply stats above a handoff note."},{"name":"marketing-pro-localization-sections-translation-coverage-bars","type":"registry:block","title":"Translation Coverage Bars","files":[{"path":"components/blocks/marketing-pro/localization-sections/translation-coverage-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/translation-coverage-bars.tsx"}],"description":"A heading and lede, a two segment legend, then a two column list of languages with reviewed percentages, progress bars, and string counts."},{"name":"marketing-pro-localization-sections-translation-workflow-mockup","type":"registry:block","title":"Translation Workflow Mockup","files":[{"path":"components/blocks/marketing-pro/localization-sections/translation-workflow-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/localization-sections/translation-workflow-mockup.tsx"}],"description":"A drawn translation screen with locale rows, review chips, and a send blocked footer."},{"name":"marketing-pro-logo-clouds-customer-wall-dense","type":"registry:block","title":"Customer Wall Dense","files":[{"path":"components/blocks/marketing-pro/logo-clouds/customer-wall-dense.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/customer-wall-dense.tsx"}],"description":"Twenty wordmarks in a tight ruled grid, volume as the entire message."},{"name":"marketing-pro-logo-clouds-logos-band-dark","type":"registry:block","title":"Logos Band Dark","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-band-dark.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-band-dark.tsx"}],"description":"A primary colored band with a trust claim above wordmarks in foreground tones."},{"name":"marketing-pro-logo-clouds-logos-by-industry","type":"registry:block","title":"Logos By Industry","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-by-industry.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-by-industry.tsx"}],"description":"Customer wordmarks sorted into four industry columns with team counts per shelf."},{"name":"marketing-pro-logo-clouds-logos-case-results","type":"registry:block","title":"Logos Case Results","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-case-results.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-case-results.tsx"}],"description":"A centered heading over six bordered tiles, each pairing a customer wordmark with a headline case study metric, a result line, and a link.","dependencies":["lucide-react"]},{"name":"marketing-pro-logo-clouds-logos-featured-customer","type":"registry:block","title":"Logos Featured Customer","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-featured-customer.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-featured-customer.tsx"}],"description":"A featured customer panel with a wordmark, quote, and ruled fact rows sits beside a two column grid of supporting wordmarks and a count line."},{"name":"marketing-pro-logo-clouds-logos-grid-with-heading","type":"registry:block","title":"Logos Grid With Heading","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-grid-with-heading.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-grid-with-heading.tsx"}],"description":"A heading and lede beside a two by four grid of bordered wordmark tiles."},{"name":"marketing-pro-logo-clouds-logos-row-simple","type":"registry:block","title":"Logos Row Simple","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-row-simple.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-row-simple.tsx"}],"description":"A single wrapped row of muted text wordmarks under one line of trust copy."},{"name":"marketing-pro-logo-clouds-logos-timeline","type":"registry:block","title":"Logos Timeline","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-timeline.tsx"}],"description":"A left aligned heading over ruled yearly rows, each pairing the notable wordmarks that signed on with a running customer total at the right."},{"name":"marketing-pro-logo-clouds-logos-two-row-offset","type":"registry:block","title":"Logos Two Row Offset","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-two-row-offset.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-two-row-offset.tsx"}],"description":"Ten wordmark pills in two staggered rows for a dense, brickwork style logo cloud."},{"name":"marketing-pro-logo-clouds-logos-with-proof-stats","type":"registry:block","title":"Logos With Proof Stats","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-with-proof-stats.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-with-proof-stats.tsx"}],"description":"A wordmark wall above the three numbers that make logos evidence, retention included."},{"name":"marketing-pro-logo-clouds-logos-with-quote","type":"registry:block","title":"Logos With Quote","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-with-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-with-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A wordmark row above one short centered customer quote with avatar attribution.","dependencies":["radix-ui"]},{"name":"marketing-pro-logo-clouds-logos-with-stat","type":"registry:block","title":"Logos With Stat","files":[{"path":"components/blocks/marketing-pro/logo-clouds/logos-with-stat.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/logos-with-stat.tsx"}],"description":"A large customer count and claim beside a ruled two column grid of wordmarks."},{"name":"marketing-pro-logo-clouds-press-strip","type":"registry:block","title":"Press Strip","files":[{"path":"components/blocks/marketing-pro/logo-clouds/press-strip.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/press-strip.tsx"}],"description":"A press strip with a standalone uppercase label and three pull quotes above outlet wordmarks, split by hairlines that adapt to stacking."},{"name":"marketing-pro-logo-clouds-ratings-strip","type":"registry:block","title":"Ratings Strip","files":[{"path":"components/blocks/marketing-pro/logo-clouds/ratings-strip.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/ratings-strip.tsx"}],"description":"An uppercase intro over three review platform columns with star rows, scores, wordmarks, and review counts, above a wrapped row of customer wordmarks."},{"name":"marketing-pro-logo-clouds-stat-anchored","type":"registry:block","title":"Stat Anchored","files":[{"path":"components/blocks/marketing-pro/logo-clouds/stat-anchored.tsx","type":"registry:component","target":"components/blocks/marketing-pro/logo-clouds/stat-anchored.tsx"}],"description":"A static logo cloud anchored by an oversized customer count in primary type, a muted supporting line, and two staggered rows of wordmarks."},{"name":"marketing-pro-migration-sections-feature-name-mapping","type":"registry:block","title":"Feature Name Mapping","files":[{"path":"components/blocks/marketing-pro/migration-sections/feature-name-mapping.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/feature-name-mapping.tsx"}],"description":"A centered heading over a two column grid of cards mapping each old tool name to its new equivalent, each with a short note.","dependencies":["lucide-react"]},{"name":"marketing-pro-migration-sections-import-coverage-table","type":"registry:block","title":"Import Coverage Table","files":[{"path":"components/blocks/marketing-pro/migration-sections/import-coverage-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/import-coverage-table.tsx"}],"description":"What migrates from each source tool by data type, with honest partial cells worth reading.","dependencies":["lucide-react"]},{"name":"marketing-pro-migration-sections-import-dry-run-preview","type":"registry:block","title":"Import Dry Run Preview","files":[{"path":"components/blocks/marketing-pro/migration-sections/import-dry-run-preview.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/import-dry-run-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Split section pairing dry run copy and three assurances with a static importer report of counts, review statuses, and estimated run time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-migration-sections-migration-paths-cards","type":"registry:block","title":"Migration Paths Cards","files":[{"path":"components/blocks/marketing-pro/migration-sections/migration-paths-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/migration-paths-cards.tsx"}],"description":"A centered heading over three migration path cards with a best fit line, an included checklist, and a time estimate, one marked featured.","dependencies":["lucide-react"]},{"name":"marketing-pro-migration-sections-migration-steps-timeline","type":"registry:block","title":"Migration Steps Timeline","files":[{"path":"components/blocks/marketing-pro/migration-sections/migration-steps-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/migration-steps-timeline.tsx"}],"description":"The switch as five clock stamped steps tagged automatic, your review, or your call."},{"name":"marketing-pro-migration-sections-migration-stories-row","type":"registry:block","title":"Migration Stories Row","files":[{"path":"components/blocks/marketing-pro/migration-sections/migration-stories-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/migration-stories-row.tsx"}],"description":"Three switcher accounts structured as feared, what happened, and how long it really took."},{"name":"marketing-pro-migration-sections-switch-faq-accordion","type":"registry:block","title":"Switch FAQ Accordion","files":[{"path":"components/blocks/marketing-pro/migration-sections/switch-faq-accordion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/switch-faq-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A two column switching FAQ with reassurance copy and a contact link beside a five item accordion that opens the first answer by default.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-migration-sections-switch-hero-checklist","type":"registry:block","title":"Switch Hero Checklist","files":[{"path":"components/blocks/marketing-pro/migration-sections/switch-hero-checklist.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/switch-hero-checklist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A migration hero with the importer checklist and the one thing it cannot carry, stated.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-migration-sections-switcher-offer-card","type":"registry:block","title":"Switcher Offer Card","files":[{"path":"components/blocks/marketing-pro/migration-sections/switcher-offer-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/switcher-offer-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The buyout deal as three numbered terms on the page, contract credit to exit clause.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-migration-sections-time-to-switch-band","type":"registry:block","title":"Time To Switch Band","files":[{"path":"components/blocks/marketing-pro/migration-sections/time-to-switch-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/time-to-switch-band.tsx"}],"description":"A centered heading over a four column bordered band of account size tiers, each showing a large migration time and a line on coverage."},{"name":"marketing-pro-migration-sections-who-does-what-split","type":"registry:block","title":"Who Does What Split","files":[{"path":"components/blocks/marketing-pro/migration-sections/who-does-what-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/who-does-what-split.tsx"}],"description":"Two panel responsibilities section listing your timed migration tasks beside importer and engineer duties, totaled in a closing footnote."},{"name":"marketing-pro-migration-sections-zero-downtime-explainer","type":"registry:block","title":"Zero Downtime Explainer","files":[{"path":"components/blocks/marketing-pro/migration-sections/zero-downtime-explainer.tsx","type":"registry:component","target":"components/blocks/marketing-pro/migration-sections/zero-downtime-explainer.tsx"}],"description":"How both tools run in parallel during the switch, three paragraphs with a definitions rail."},{"name":"marketing-pro-mobile-app-sections-app-download","type":"registry:block","title":"App Download","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-download.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-download.tsx"}],"description":"A split app download CTA pairing a heading, drawn store buttons, and a star rating with a phone mockup showing a chart strip and activity rows.","dependencies":["lucide-react"]},{"name":"marketing-pro-mobile-app-sections-app-features-with-screens","type":"registry:block","title":"App Features With Screens","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-features-with-screens.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-features-with-screens.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three mobile moments, each with a small phone frame and the why a phone copy."},{"name":"marketing-pro-mobile-app-sections-app-hero-with-phone","type":"registry:block","title":"App Hero With Phone","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-hero-with-phone.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-hero-with-phone.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An app hero with store buttons and a rating line beside a drawn phone frame.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-mobile-app-sections-app-onboarding-steps","type":"registry:block","title":"App Onboarding Steps","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-onboarding-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-onboarding-steps.tsx"}],"description":"A three step onboarding section with a heading above numbered steps joined by a dashed connector, each pairing an explanation with a drawn UI chip.","dependencies":["lucide-react"]},{"name":"marketing-pro-mobile-app-sections-app-privacy-label","type":"registry:block","title":"App Privacy Label","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-privacy-label.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-privacy-label.tsx"}],"description":"A two column privacy section pairing plain language data promises with a drawn store style privacy label card listing data categories.","dependencies":["lucide-react"]},{"name":"marketing-pro-mobile-app-sections-app-rating-callout","type":"registry:block","title":"App Rating Callout","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-rating-callout.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-rating-callout.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"The big store rating beside three real voiced review cards with version metadata.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-mobile-app-sections-app-screens-row","type":"registry:block","title":"App Screens Row","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-screens-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-screens-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three captioned phone frames in a row with the middle screen elevated."},{"name":"marketing-pro-mobile-app-sections-app-store-badges-band","type":"registry:block","title":"App Store Badges Band","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-store-badges-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-store-badges-band.tsx"}],"description":"A download band with drawn store chips and an existing account reassurance.","dependencies":["lucide-react"]},{"name":"marketing-pro-mobile-app-sections-app-update-notes","type":"registry:block","title":"App Update Notes","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-update-notes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-update-notes.tsx"}],"description":"Store style release notes with version, size, and a voice people actually read."},{"name":"marketing-pro-mobile-app-sections-app-watch-companion","type":"registry:block","title":"App Watch Companion","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-watch-companion.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-watch-companion.tsx"}],"description":"A two column watch companion section pairing three wrist feature rows with a drawn smartwatch mockup showing an approval notification and its inline actions.","dependencies":["lucide-react"]},{"name":"marketing-pro-mobile-app-sections-app-widget-showcase","type":"registry:block","title":"App Widget Showcase","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/app-widget-showcase.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/app-widget-showcase.tsx"}],"description":"A widget showcase with a heading above three captioned tiles, a wide chart, a daily glance, and a quick actions grid, over behavior notes.","dependencies":["lucide-react"]},{"name":"marketing-pro-mobile-app-sections-push-notification-mockup","type":"registry:block","title":"Push Notification Mockup","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/push-notification-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/push-notification-mockup.tsx"}],"description":"A drawn lock screen with the three pushes the app sends beside the restraint policy."},{"name":"marketing-pro-mobile-app-sections-qr-download-split","type":"registry:block","title":"Qr Download Split","files":[{"path":"components/blocks/marketing-pro/mobile-app-sections/qr-download-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/mobile-app-sections/qr-download-split.tsx"}],"description":"A desktop to phone bridge with a drawn QR card that stays dark on light by design."},{"name":"marketing-pro-navbars-announcement-bar-nav","type":"registry:block","title":"Announcement Bar Nav","files":[{"path":"components/blocks/marketing-pro/navbars/announcement-bar-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/announcement-bar-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A sticky header with a primary announcement bar and arrow link above a frosted navbar with centered links and dual CTAs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-bordered-grid-nav","type":"registry:block","title":"Bordered Grid Nav","files":[{"path":"components/blocks/marketing-pro/navbars/bordered-grid-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/bordered-grid-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A full bleed grid header where the logo, uppercase links, and actions sit in bordered cells split by dividers, ending in a solid CTA cell.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-centered-links-nav","type":"registry:block","title":"Centered Links Nav","files":[{"path":"components/blocks/marketing-pro/navbars/centered-links-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/centered-links-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A symmetric header with links optically centered between the logo and a single CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-compact-centered-nav","type":"registry:block","title":"Compact Centered Nav","files":[{"path":"components/blocks/marketing-pro/navbars/compact-centered-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/compact-centered-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A slim borderless navbar with a wordmark, three links, and a text only primary CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-dark-nav","type":"registry:block","title":"Dark Nav","files":[{"path":"components/blocks/marketing-pro/navbars/dark-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/dark-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A solid primary colored header with inverted logo chip and a secondary CTA button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-double-deck-nav","type":"registry:block","title":"Double Deck Nav","files":[{"path":"components/blocks/marketing-pro/navbars/double-deck-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/double-deck-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A two row header with a slim utility deck above the main logo, links, and CTA row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-mega-menu-nav","type":"registry:block","title":"Mega Menu Nav","files":[{"path":"components/blocks/marketing-pro/navbars/mega-menu-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/mega-menu-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A sticky navbar with its product mega menu expanded inline: two icon link columns and a featured update card, collapsing to a mobile sheet.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-minimal-nav-with-search","type":"registry:block","title":"Minimal Nav With Search","files":[{"path":"components/blocks/marketing-pro/navbars/minimal-nav-with-search.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/minimal-nav-with-search.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A minimal header built around a command bar search pill with a keyboard shortcut hint.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-nav-with-announcement","type":"registry:block","title":"Nav With Announcement","files":[{"path":"components/blocks/marketing-pro/navbars/nav-with-announcement.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/nav-with-announcement.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A sticky header with a slim primary announcement line riding above a standard navbar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-navbar-with-promo-banner","type":"registry:block","title":"Navbar With Promo Banner","files":[{"path":"components/blocks/marketing-pro/navbars/navbar-with-promo-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/navbar-with-promo-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An announcement strip and navigation designed as one header unit with a real deadline.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-phone-cta-nav","type":"registry:block","title":"Phone CTA Nav","files":[{"path":"components/blocks/marketing-pro/navbars/phone-cta-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/phone-cta-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A contact forward sticky header for service businesses with logo and links, a labeled phone number, and a quote CTA that collapse on mobile.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-pill-nav","type":"registry:block","title":"Pill Nav","files":[{"path":"components/blocks/marketing-pro/navbars/pill-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/pill-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A contained rounded pill header inset from the page edges with links and a rounded CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-slim-glass-nav","type":"registry:block","title":"Slim Glass Nav","files":[{"path":"components/blocks/marketing-pro/navbars/slim-glass-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/slim-glass-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A slim glass navbar with a wordmark, four muted links, and one pill shaped CTA. Links collapse into a mobile sheet menu.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-split-logo-nav","type":"registry:block","title":"Split Logo Nav","files":[{"path":"components/blocks/marketing-pro/navbars/split-logo-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/split-logo-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A boutique header with the logo centered between two split link sets and a compact CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-stacked-centered-nav","type":"registry:block","title":"Stacked Centered Nav","files":[{"path":"components/blocks/marketing-pro/navbars/stacked-centered-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/stacked-centered-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"An editorial masthead with utility links and search, a large centered wordmark, sign in and subscribe actions, and a centered section link row below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-standard-sticky-nav","type":"registry:block","title":"Standard Sticky Nav","files":[{"path":"components/blocks/marketing-pro/navbars/standard-sticky-nav.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/standard-sticky-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A dependable sticky header with logo, inline links, dual CTAs, and a mobile sheet menu.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-navbars-subnav-section-bar","type":"registry:block","title":"Subnav Section Bar","files":[{"path":"components/blocks/marketing-pro/navbars/subnav-section-bar.tsx","type":"registry:component","target":"components/blocks/marketing-pro/navbars/subnav-section-bar.tsx"}],"description":"A slim sticky section bar with the page name and anchor links for long pages."},{"name":"marketing-pro-newsletter-sections-issue-preview-split","type":"registry:block","title":"Issue Preview Split","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/issue-preview-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/issue-preview-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"The signup form beside the actual current issue drawn as an email mockup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-archive-list","type":"registry:block","title":"Newsletter Archive List","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-archive-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-archive-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Four numbered back issues as linked rows with the subscribe form for the next one.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-author-note","type":"registry:block","title":"Newsletter Author Note","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-author-note.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-author-note.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column layout pairing a letter style note card with the writer avatar signature beside the heading, labeled subscribe form, and small print.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-card-centered","type":"registry:block","title":"Newsletter Card Centered","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-card-centered.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-card-centered.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"One centered panel with the pitch, form, and a reader avatar row with a count.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-dark-band","type":"registry:block","title":"Newsletter Dark Band","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-dark-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-dark-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A primary colored band with a tinted email field, secondary button, and small print line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-inline-band","type":"registry:block","title":"Newsletter Inline Band","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-inline-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-inline-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A slim bordered band pairing a cadence promise with an inline email field and button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-panel","type":"registry:block","title":"Newsletter Panel","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A full width muted newsletter panel pairing a headline, benefit line, and no spam note with a labeled email field and pill subscribe button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-reader-quotes","type":"registry:block","title":"Newsletter Reader Quotes","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-reader-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-reader-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column layout with subscribe copy and a labeled form on one side and two subscriber quote cards with avatars, names, and roles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-split-with-perks","type":"registry:block","title":"Newsletter Split With Perks","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-split-with-perks.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-split-with-perks.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Subscribe copy and form beside a checked list of what every issue contains.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-stats-strip","type":"registry:block","title":"Newsletter Stats Strip","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-stats-strip.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-stats-strip.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered heading and labeled subscribe form above a four stat strip showing subscribers, open rate, issues shipped, and publishing streak.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-topic-picker","type":"registry:block","title":"Newsletter Topic Picker","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-topic-picker.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-topic-picker.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered heading and intro over a grid of selectable topic tiles with checkboxes, followed by a labeled email field and subscribe button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-newsletter-sections-newsletter-with-sample-issue","type":"registry:block","title":"Newsletter With Sample Issue","files":[{"path":"components/blocks/marketing-pro/newsletter-sections/newsletter-with-sample-issue.tsx","type":"registry:component","target":"components/blocks/marketing-pro/newsletter-sections/newsletter-with-sample-issue.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"Subscribe copy beside an email client mockup rendering last month as the sample issue.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-open-metrics-churn-retention-charts","type":"registry:block","title":"Churn Retention Charts","files":[{"path":"components/blocks/marketing-pro/open-metrics/churn-retention-charts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/churn-retention-charts.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Monthly churn bars beside a net revenue retention line, the uncomfortable pair published.","dependencies":["recharts"]},{"name":"marketing-pro-open-metrics-conversion-funnel-metrics","type":"registry:block","title":"Conversion Funnel Metrics","files":[{"path":"components/blocks/marketing-pro/open-metrics/conversion-funnel-metrics.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/conversion-funnel-metrics.tsx"}],"description":"A split layout pairing headline conversion facts with a funnel panel of proportional bars and the step by step rate between visitors, signups, and customers.","dependencies":["lucide-react"]},{"name":"marketing-pro-open-metrics-cost-transparency-chart","type":"registry:block","title":"Cost Transparency Chart","files":[{"path":"components/blocks/marketing-pro/open-metrics/cost-transparency-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/cost-transparency-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Monthly costs by category as horizontal shadcn bars with a profitable since header.","dependencies":["recharts"]},{"name":"marketing-pro-open-metrics-costs-breakdown-chart","type":"registry:block","title":"Costs Breakdown Chart","files":[{"path":"components/blocks/marketing-pro/open-metrics/costs-breakdown-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/costs-breakdown-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Cost structure by quarter as stacked shadcn bars, mostly people, deliberately.","dependencies":["recharts"]},{"name":"marketing-pro-open-metrics-goals-progress-board","type":"registry:block","title":"Goals Progress Board","files":[{"path":"components/blocks/marketing-pro/open-metrics/goals-progress-board.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/goals-progress-board.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Four goal cards pairing public targets with actuals, each carrying the current value, a progress bar, an honest status badge, and a detail line.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-open-metrics-growth-milestones-timeline","type":"registry:block","title":"Growth Milestones Timeline","files":[{"path":"components/blocks/marketing-pro/open-metrics/growth-milestones-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/growth-milestones-timeline.tsx"}],"description":"A vertical timeline of dated milestones behind the published numbers, each row stamped with its title, a short note, and the MRR at the time."},{"name":"marketing-pro-open-metrics-metrics-intro-banner","type":"registry:block","title":"Metrics Intro Banner","files":[{"path":"components/blocks/marketing-pro/open-metrics/metrics-intro-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/metrics-intro-banner.tsx"}],"description":"The why of an open metrics page with publish dates, cadence, and named exclusions.","dependencies":["lucide-react"]},{"name":"marketing-pro-open-metrics-metrics-stat-grid","type":"registry:block","title":"Metrics Stat Grid","files":[{"path":"components/blocks/marketing-pro/open-metrics/metrics-stat-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/metrics-stat-grid.tsx"}],"description":"A headline snapshot with six KPI tiles, each showing the current value, a month over month delta line, and a small illustrative sparkline.","dependencies":["lucide-react"]},{"name":"marketing-pro-open-metrics-mrr-growth-chart","type":"registry:block","title":"Mrr Growth Chart","files":[{"path":"components/blocks/marketing-pro/open-metrics/mrr-growth-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/mrr-growth-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Twelve months of MRR as a shadcn area chart with a stat header and counting rules footnote.","dependencies":["recharts"]},{"name":"marketing-pro-open-metrics-open-metrics-table","type":"registry:block","title":"Open Metrics Table","files":[{"path":"components/blocks/marketing-pro/open-metrics/open-metrics-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/open-metrics-table.tsx"}],"description":"Six months of exact headline metrics in a copyable table with a CSV link."},{"name":"marketing-pro-open-metrics-revenue-breakdown-bars","type":"registry:block","title":"Revenue Breakdown Bars","files":[{"path":"components/blocks/marketing-pro/open-metrics/revenue-breakdown-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/revenue-breakdown-bars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"MRR by plan tier as stacked shadcn bars across six months.","dependencies":["recharts"]},{"name":"marketing-pro-open-metrics-traffic-sources-donut","type":"registry:block","title":"Traffic Sources Donut","files":[{"path":"components/blocks/marketing-pro/open-metrics/traffic-sources-donut.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/traffic-sources-donut.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Visitor acquisition split as a shadcn donut beside strategy notes per source.","dependencies":["recharts"]},{"name":"marketing-pro-open-metrics-user-growth-line","type":"registry:block","title":"User Growth Line","files":[{"path":"components/blocks/marketing-pro/open-metrics/user-growth-line.tsx","type":"registry:component","target":"components/blocks/marketing-pro/open-metrics/user-growth-line.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Active workspaces against paying customers as two shadcn lines with a legend.","dependencies":["recharts"]},{"name":"marketing-pro-partner-sections-agency-program-banner","type":"registry:block","title":"Agency Program Banner","files":[{"path":"components/blocks/marketing-pro/partner-sections/agency-program-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/agency-program-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A primary band compressing program terms to three chips with a decision timeline.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-partner-sections-become-partner-split","type":"registry:block","title":"Become Partner Split","files":[{"path":"components/blocks/marketing-pro/partner-sections/become-partner-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/become-partner-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An agency recruitment pitch with a no competition promise beside a first quarter checklist.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-partner-sections-certification-path-steps","type":"registry:block","title":"Certification Path Steps","files":[{"path":"components/blocks/marketing-pro/partner-sections/certification-path-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/certification-path-steps.tsx"}],"description":"Three certification stages with honest hours and what each one unlocks."},{"name":"marketing-pro-partner-sections-deal-registration-compare","type":"registry:block","title":"Deal Registration Compare","files":[{"path":"components/blocks/marketing-pro/partner-sections/deal-registration-compare.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/deal-registration-compare.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A heading and lede above a comparison table of registered versus unregistered deals, then a three column policy fact row and action buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-partner-sections-marketplace-categories-grid","type":"registry:block","title":"Marketplace Categories Grid","files":[{"path":"components/blocks/marketing-pro/partner-sections/marketplace-categories-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/marketplace-categories-grid.tsx"}],"description":"Six marketplace aisles with listing counts and a yearly re review policy up top.","dependencies":["lucide-react"]},{"name":"marketing-pro-partner-sections-partner-directory-preview","type":"registry:block","title":"Partner Directory Preview","files":[{"path":"components/blocks/marketing-pro/partner-sections/partner-directory-preview.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/partner-directory-preview.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered heading above a filter chip row and three partner cards with portrait, tier badges, specialties, ratings, and a browse all button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-partner-sections-partner-earnings-calculator","type":"registry:block","title":"Partner Earnings Calculator","files":[{"path":"components/blocks/marketing-pro/partner-sections/partner-earnings-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/partner-earnings-calculator.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered heading with two sliders for client count and plan value feeding a three stat payout strip, a policy note, and an apply button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-partner-sections-partner-logos-band","type":"registry:block","title":"Partner Logos Band","files":[{"path":"components/blocks/marketing-pro/partner-sections/partner-logos-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/partner-logos-band.tsx"}],"description":"A certified agency count above partner wordmarks and a find a partner link."},{"name":"marketing-pro-partner-sections-partner-stats-row","type":"registry:block","title":"Partner Stats Row","files":[{"path":"components/blocks/marketing-pro/partner-sections/partner-stats-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/partner-stats-row.tsx"}],"description":"Program economics as four tiles, margin, median revenue, leads, and the zero."},{"name":"marketing-pro-partner-sections-partner-story-timeline","type":"registry:block","title":"Partner Story Timeline","files":[{"path":"components/blocks/marketing-pro/partner-sections/partner-story-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/partner-story-timeline.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column layout pairing an agency narrative, quote, and byline with a vertical milestone timeline of dated stages, details, and metrics.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-partner-sections-partner-tiers-cards","type":"registry:block","title":"Partner Tiers Cards","files":[{"path":"components/blocks/marketing-pro/partner-sections/partner-tiers-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/partner-sections/partner-tiers-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three program tiers with public requirements, stated margins, and benefit checklists.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-press-sections-boilerplate-and-facts","type":"registry:block","title":"Boilerplate And Facts","files":[{"path":"components/blocks/marketing-pro/press-sections/boilerplate-and-facts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/boilerplate-and-facts.tsx"}],"description":"The approved company paragraph with word count and date beside a fast facts table."},{"name":"marketing-pro-press-sections-brand-colors-grid","type":"registry:block","title":"Brand Colors Grid","files":[{"path":"components/blocks/marketing-pro/press-sections/brand-colors-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/brand-colors-grid.tsx"}],"description":"Palette swatch cards with names, hex values, and usage notes per color."},{"name":"marketing-pro-press-sections-company-milestones","type":"registry:block","title":"Company Milestones","files":[{"path":"components/blocks/marketing-pro/press-sections/company-milestones.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/company-milestones.tsx"}],"description":"A centered heading above a single vertical timeline rail of dated milestones, each with a title, a short detail, and an optional figure chip."},{"name":"marketing-pro-press-sections-coverage-quote-wall","type":"registry:block","title":"Coverage Quote Wall","files":[{"path":"components/blocks/marketing-pro/press-sections/coverage-quote-wall.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/coverage-quote-wall.tsx"}],"description":"A centered heading above a three column grid of coverage cards, each with a publication wordmark, a pulled sentence, and a writer byline."},{"name":"marketing-pro-press-sections-founder-bios-row","type":"registry:block","title":"Founder Bios Row","files":[{"path":"components/blocks/marketing-pro/press-sections/founder-bios-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/founder-bios-row.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three quotable people with bios written to be lifted verbatim and speaks on lines.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-press-sections-interview-appearances","type":"registry:block","title":"Interview Appearances","files":[{"path":"components/blocks/marketing-pro/press-sections/interview-appearances.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/interview-appearances.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A heading with a booking note above a divided row list of founder appearances, each showing format icon, show, guest, runtime, and a listen link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-press-sections-logo-usage-rules","type":"registry:block","title":"Logo Usage Rules","files":[{"path":"components/blocks/marketing-pro/press-sections/logo-usage-rules.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/logo-usage-rules.tsx"}],"description":"The mark rendered correctly beside the four common abuses, crossed out.","dependencies":["lucide-react"]},{"name":"marketing-pro-press-sections-media-assets-grid","type":"registry:block","title":"Media Assets Grid","files":[{"path":"components/blocks/marketing-pro/press-sections/media-assets-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/media-assets-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Browsable asset tiles with format chips and download affordances.","dependencies":["lucide-react"]},{"name":"marketing-pro-press-sections-media-contact-card","type":"registry:block","title":"Media Contact Card","files":[{"path":"components/blocks/marketing-pro/press-sections/media-contact-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/media-contact-card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A named press contact with deadline aware reply terms and what she can arrange.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-press-sections-press-kit-downloads","type":"registry:block","title":"Press Kit Downloads","files":[{"path":"components/blocks/marketing-pro/press-sections/press-kit-downloads.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/press-kit-downloads.tsx"}],"description":"Four ungated asset bundle cards with file details and an everything ZIP link.","dependencies":["lucide-react"]},{"name":"marketing-pro-press-sections-press-release-archive","type":"registry:block","title":"Press Release Archive","files":[{"path":"components/blocks/marketing-pro/press-sections/press-release-archive.tsx","type":"registry:component","target":"components/blocks/marketing-pro/press-sections/press-release-archive.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A sticky intro column with email and RSS subscribe links beside announcements grouped by year, each row showing date, category, headline, and summary.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-annual-toggle-two-tier","type":"registry:block","title":"Annual Toggle Two Tier","files":[{"path":"components/blocks/marketing-pro/pricing-sections/annual-toggle-two-tier.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/annual-toggle-two-tier.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"Two plan cards under a monthly and annual switch that updates prices with a savings badge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-base-plus-addons","type":"registry:block","title":"Base Plus Add Ons","files":[{"path":"components/blocks/marketing-pro/pricing-sections/base-plus-addons.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/base-plus-addons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split pricing section pairing a base plan card and feature checklist with a stack of priced extras and a hairline estimated total row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-compact-tier-cards","type":"registry:block","title":"Compact Tier Cards","files":[{"path":"components/blocks/marketing-pro/pricing-sections/compact-tier-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/compact-tier-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three slim tiers with a price and one deciding sentence each, no feature lists.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-pricing-sections-compare-plans","type":"registry:block","title":"Compare Plans","files":[{"path":"components/blocks/marketing-pro/pricing-sections/compare-plans.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/compare-plans.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A full feature matrix for three plans with pricing and CTAs in the column heads, grouped feature rows, and a tinted band on the popular plan.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-credit-packs","type":"registry:block","title":"Credit Packs","files":[{"path":"components/blocks/marketing-pro/pricing-sections/credit-packs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/credit-packs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Four prepaid credit pack cards with one time prices and per credit rates, above three notes on expiry, team sharing, and automatic top ups.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-currency-region-table","type":"registry:block","title":"Currency Region Table","files":[{"path":"components/blocks/marketing-pro/pricing-sections/currency-region-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/currency-region-table.tsx"}],"description":"The same plan in four currencies with purchasing power discounts published openly."},{"name":"marketing-pro-pricing-sections-dark-featured-tier","type":"registry:block","title":"Dark Featured Tier","files":[{"path":"components/blocks/marketing-pro/pricing-sections/dark-featured-tier.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/dark-featured-tier.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three pricing tiers where the featured middle plan sits on a solid primary panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-enterprise-split-cta","type":"registry:block","title":"Enterprise Split Cta","files":[{"path":"components/blocks/marketing-pro/pricing-sections/enterprise-split-cta.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/enterprise-split-cta.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An enterprise pitch with capability checks beside a named contact card and call terms.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-feature-matrix-compact","type":"registry:block","title":"Feature Matrix Compact","files":[{"path":"components/blocks/marketing-pro/pricing-sections/feature-matrix-compact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/feature-matrix-compact.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Plan headers with CTAs above a compact feature matrix that shades the middle column.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-free-vs-pro","type":"registry:block","title":"Free vs Pro","files":[{"path":"components/blocks/marketing-pro/pricing-sections/free-vs-pro.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/free-vs-pro.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Free and Pro columns with their own feature lists and CTAs, with Pro framed by a primary ring.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-lifetime-deal","type":"registry:block","title":"Lifetime Deal","files":[{"path":"components/blocks/marketing-pro/pricing-sections/lifetime-deal.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/lifetime-deal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A wide panel with a one time price, three value bullets, a guarantee note, and a strong CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-open-source-vs-cloud","type":"registry:block","title":"Open Source vs Cloud","files":[{"path":"components/blocks/marketing-pro/pricing-sections/open-source-vs-cloud.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/open-source-vs-cloud.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A free self hosted panel with an install command beside a paid managed cloud plan.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-per-seat-calculator","type":"registry:block","title":"Per Seat Calculator","files":[{"path":"components/blocks/marketing-pro/pricing-sections/per-seat-calculator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/per-seat-calculator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"A seat slider that totals a flat per seat rate beside the included feature list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-plans-by-audience","type":"registry:block","title":"Plans By Audience","files":[{"path":"components/blocks/marketing-pro/pricing-sections/plans-by-audience.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/plans-by-audience.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A centered tab switcher for freelancers, teams, and agencies, each revealing two plan cards with prices, feature lists, and a highlighted pick.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-plans-with-meters","type":"registry:block","title":"Plans With Meters","files":[{"path":"components/blocks/marketing-pro/pricing-sections/plans-with-meters.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/plans-with-meters.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three plan cards whose quotas are proportional meter bars, so tiers compare at a glance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-pricing-sections-pricing-faq-inline","type":"registry:block","title":"Pricing Faq Inline","files":[{"path":"components/blocks/marketing-pro/pricing-sections/pricing-faq-inline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/pricing-faq-inline.tsx"}],"description":"Six billing questions answered open beside the prices, mechanisms and timelines included."},{"name":"marketing-pro-pricing-sections-pricing-with-cost-chart","type":"registry:block","title":"Pricing With Cost Chart","files":[{"path":"components/blocks/marketing-pro/pricing-sections/pricing-with-cost-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/pricing-with-cost-chart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"A flat plan beside a shadcn bar chart of total cost against a per seat stack by team size.","dependencies":["class-variance-authority","radix-ui","recharts"]},{"name":"marketing-pro-pricing-sections-pricing-with-guarantee","type":"registry:block","title":"Pricing With Guarantee","files":[{"path":"components/blocks/marketing-pro/pricing-sections/pricing-with-guarantee.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/pricing-with-guarantee.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A flat plan beside a guarantee card with spelled out terms and a published claim rate.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-pricing-with-testimonial","type":"registry:block","title":"Pricing With Testimonial","files":[{"path":"components/blocks/marketing-pro/pricing-sections/pricing-with-testimonial.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/pricing-with-testimonial.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two plan cards beside a customer quote card that endorses the upgrade.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-sample-invoice","type":"registry:block","title":"Sample Invoice","files":[{"path":"components/blocks/marketing-pro/pricing-sections/sample-invoice.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/sample-invoice.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A left column of a heading and four checked billing promises beside a static sample invoice with line items, a seat credit, tax, and total.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-simple-rate-table","type":"registry:block","title":"Simple Rate Table","files":[{"path":"components/blocks/marketing-pro/pricing-sections/simple-rate-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/simple-rate-table.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A minimal rate table listing each metric, its included allowance, and the overage price."},{"name":"marketing-pro-pricing-sections-single-plan-with-faq","type":"registry:block","title":"Single Plan With FAQ","files":[{"path":"components/blocks/marketing-pro/pricing-sections/single-plan-with-faq.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/single-plan-with-faq.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A single full plan price card beside a divided list of three short pricing questions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-startup-discount-card","type":"registry:block","title":"Startup Discount Card","files":[{"path":"components/blocks/marketing-pro/pricing-sections/startup-discount-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/startup-discount-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The startup program as five labeled rows, including what happens when the discount ends.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-trial-timeline","type":"registry:block","title":"Trial Timeline","files":[{"path":"components/blocks/marketing-pro/pricing-sections/trial-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/trial-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A single plan card with a flat price and feature list beside a vertical timeline walking through each day of a 14 day trial.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-usage-estimator","type":"registry:block","title":"Usage Estimator","files":[{"path":"components/blocks/marketing-pro/pricing-sections/usage-estimator.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/usage-estimator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"An interactive estimator with a seats slider and annual switch on one side and an inverted summary card with a line item breakdown on the other.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-pricing-sections-usage-estimator-slider","type":"registry:block","title":"Usage Estimator Slider","files":[{"path":"components/blocks/marketing-pro/pricing-sections/usage-estimator-slider.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/usage-estimator-slider.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"}],"description":"One slider for contacts, the matching plan and price computed live with the CTA labeled.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-pricing-sections-with-roi-chart","type":"registry:block","title":"With Roi Chart","files":[{"path":"components/blocks/marketing-pro/pricing-sections/with-roi-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/with-roi-chart.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A flat price plan beside a chart of cumulative value crossing cost at a labeled break even.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-pricing-sections-with-usage-curve","type":"registry:block","title":"With Usage Curve","files":[{"path":"components/blocks/marketing-pro/pricing-sections/with-usage-curve.tsx","type":"registry:component","target":"components/blocks/marketing-pro/pricing-sections/with-usage-curve.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A plan card beside an SVG curve of the unit price flattening across three labeled volume tiers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-process-sections-branching-flow","type":"registry:block","title":"Branching Flow","files":[{"path":"components/blocks/marketing-pro/process-sections/branching-flow.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/branching-flow.tsx"}],"description":"An SVG flowchart of automated checks branching to approve or review, with a numbered step list."},{"name":"marketing-pro-process-sections-checklist-with-progress","type":"registry:block","title":"Checklist With Progress","files":[{"path":"components/blocks/marketing-pro/process-sections/checklist-with-progress.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/checklist-with-progress.tsx"}],"description":"The setup checklist mid flight, a computed meter above tasks in three states."},{"name":"marketing-pro-process-sections-cycle-diagram","type":"registry:block","title":"Cycle Diagram","files":[{"path":"components/blocks/marketing-pro/process-sections/cycle-diagram.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/cycle-diagram.tsx"}],"description":"A numbered four step list beside a circular loop diagram with nodes on a dashed ring."},{"name":"marketing-pro-process-sections-day-in-the-life","type":"registry:block","title":"Day In The Life","files":[{"path":"components/blocks/marketing-pro/process-sections/day-in-the-life.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/day-in-the-life.tsx"}],"description":"A workday told in timestamped scenes down a rule, each with its quiet before."},{"name":"marketing-pro-process-sections-day-one-timeline","type":"registry:block","title":"Day One Timeline","files":[{"path":"components/blocks/marketing-pro/process-sections/day-one-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/day-one-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Intro copy beside a first day timeline of product moments keyed by monospaced times.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-process-sections-first-week-timeline","type":"registry:block","title":"First Week Timeline","files":[{"path":"components/blocks/marketing-pro/process-sections/first-week-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/first-week-timeline.tsx"}],"description":"Days one through seven in honest prose, including the two days of nothing on purpose."},{"name":"marketing-pro-process-sections-gantt-style-plan","type":"registry:block","title":"Gantt Style Plan","files":[{"path":"components/blocks/marketing-pro/process-sections/gantt-style-plan.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/gantt-style-plan.tsx"}],"description":"The onboarding month as overlapping workstream bars with owners labeled per bar."},{"name":"marketing-pro-process-sections-horizontal-connected","type":"registry:block","title":"Horizontal Connected","files":[{"path":"components/blocks/marketing-pro/process-sections/horizontal-connected.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/horizontal-connected.tsx"}],"description":"Three steps in a row joined by a thin connector line with a dot marking each step."},{"name":"marketing-pro-process-sections-milestone-path","type":"registry:block","title":"Milestone Path","files":[{"path":"components/blocks/marketing-pro/process-sections/milestone-path.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/milestone-path.tsx"}],"description":"A winding dashed path with four numbered milestone dots above a matching grid of steps."},{"name":"marketing-pro-process-sections-numbered-editorial","type":"registry:block","title":"Numbered Editorial","files":[{"path":"components/blocks/marketing-pro/process-sections/numbered-editorial.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/numbered-editorial.tsx"}],"description":"Four oversized numbered steps in a two column editorial grid with top borders."},{"name":"marketing-pro-process-sections-onboarding-checklist","type":"registry:block","title":"Onboarding Checklist","files":[{"path":"components/blocks/marketing-pro/process-sections/onboarding-checklist.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/onboarding-checklist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Copy about a one afternoon setup beside a bordered checklist card with a progress bar.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-process-sections-pipeline-flow","type":"registry:block","title":"Pipeline Flow","files":[{"path":"components/blocks/marketing-pro/process-sections/pipeline-flow.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/pipeline-flow.tsx"}],"description":"Inline SVG flow of four pipeline stages above a three column row explaining them."},{"name":"marketing-pro-process-sections-progress-bar-steps","type":"registry:block","title":"Progress Bar Steps","files":[{"path":"components/blocks/marketing-pro/process-sections/progress-bar-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/progress-bar-steps.tsx"}],"description":"Onboarding as a segmented meter frozen mid journey with honest time labels per step."},{"name":"marketing-pro-process-sections-split-steps-with-mockup","type":"registry:block","title":"Split Steps With Mockup","files":[{"path":"components/blocks/marketing-pro/process-sections/split-steps-with-mockup.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/split-steps-with-mockup.tsx"}],"description":"Three numbered steps beside an app window mockup showing live metrics and a chart."},{"name":"marketing-pro-process-sections-step-tabs","type":"registry:block","title":"Step Tabs","files":[{"path":"components/blocks/marketing-pro/process-sections/step-tabs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/step-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs labeled Step 1 to 3 where each panel pairs step copy with a small app mockup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-process-sections-steps-with-mini-mockups","type":"registry:block","title":"Steps With Mini Mockups","files":[{"path":"components/blocks/marketing-pro/process-sections/steps-with-mini-mockups.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/steps-with-mini-mockups.tsx"}],"description":"Three numbered step cards, each led by a mini UI mockup of the brief, board, and report stages."},{"name":"marketing-pro-process-sections-three-phase-path","type":"registry:block","title":"Three Phase Path","files":[{"path":"components/blocks/marketing-pro/process-sections/three-phase-path.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/three-phase-path.tsx"}],"description":"A three phase process section with icon squares, arrow connectors on desktop, per phase checklists, and a quiet link to the onboarding guide.","dependencies":["lucide-react"]},{"name":"marketing-pro-process-sections-three-step-cards","type":"registry:block","title":"Three Step Cards","files":[{"path":"components/blocks/marketing-pro/process-sections/three-step-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/three-step-cards.tsx"}],"description":"Centered heading above three step cards, each pairing an icon and number with short copy.","dependencies":["lucide-react"]},{"name":"marketing-pro-process-sections-vertical-milestones","type":"registry:block","title":"Vertical Milestones","files":[{"path":"components/blocks/marketing-pro/process-sections/vertical-milestones.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/vertical-milestones.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split process section with a sticky header, CTA, and proof stats beside a vertical timeline of four numbered milestones with timing detail rows.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-process-sections-vertical-timeline","type":"registry:block","title":"Vertical Timeline","files":[{"path":"components/blocks/marketing-pro/process-sections/vertical-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/vertical-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Narrow vertical timeline of four numbered steps joined by a line, with buttons below.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-process-sections-zigzag-steps","type":"registry:block","title":"Zigzag Steps","files":[{"path":"components/blocks/marketing-pro/process-sections/zigzag-steps.tsx","type":"registry:component","target":"components/blocks/marketing-pro/process-sections/zigzag-steps.tsx"}],"description":"Alternating rows of step copy and app mockups, each tagged with a bordered step badge."},{"name":"marketing-pro-product-tours-annotated-screenshot","type":"registry:block","title":"Annotated Screenshot","files":[{"path":"components/blocks/marketing-pro/product-tours/annotated-screenshot.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/annotated-screenshot.tsx"}],"description":"A browser mockup with numbered marker dots decoded by a sticky legend list."},{"name":"marketing-pro-product-tours-before-after-screens","type":"registry:block","title":"Before After Screens","files":[{"path":"components/blocks/marketing-pro/product-tours/before-after-screens.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/before-after-screens.tsx"}],"description":"A shabby dashed before screen beside a confident after screen with verdict captions."},{"name":"marketing-pro-product-tours-demo-teaser-split","type":"registry:block","title":"Demo Teaser Split","files":[{"path":"components/blocks/marketing-pro/product-tours/demo-teaser-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/demo-teaser-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A sandbox pitch beside a mockup with a drawn cursor, hovered row, and honest tooltip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-product-tours-feature-spotlight-tabs","type":"registry:block","title":"Feature Spotlight Tabs","files":[{"path":"components/blocks/marketing-pro/product-tours/feature-spotlight-tabs.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/feature-spotlight-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Three workflows on ui tabs, each pairing one paragraph with a small drawn panel.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-product-tours-feature-spotlight-zoom","type":"registry:block","title":"Feature Spotlight Zoom","files":[{"path":"components/blocks/marketing-pro/product-tours/feature-spotlight-zoom.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/feature-spotlight-zoom.tsx"}],"description":"One UI element drawn at large scale, an automation rule row with a toggle and live count."},{"name":"marketing-pro-product-tours-keyboard-shortcuts-panel","type":"registry:block","title":"Keyboard Shortcuts Panel","files":[{"path":"components/blocks/marketing-pro/product-tours/keyboard-shortcuts-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/keyboard-shortcuts-panel.tsx"},{"path":"components/ui/kbd.tsx","type":"registry:ui","target":"components/ui/kbd.tsx"}],"description":"The product shortcuts as a Kbd reference panel, craft signaled through key caps."},{"name":"marketing-pro-product-tours-side-tabs-tour","type":"registry:block","title":"Side Tabs Tour","files":[{"path":"components/blocks/marketing-pro/product-tours/side-tabs-tour.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/side-tabs-tour.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Vertical tabs of product areas, each pane pairing a blurb with a framed list mockup.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-product-tours-tour-steps-with-screens","type":"registry:block","title":"Tour Steps With Screens","files":[{"path":"components/blocks/marketing-pro/product-tours/tour-steps-with-screens.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/tour-steps-with-screens.tsx"}],"description":"Three numbered tour steps, each paired with a framed mini screen showing that stage."},{"name":"marketing-pro-product-tours-workflow-walkthrough","type":"registry:block","title":"Workflow Walkthrough","files":[{"path":"components/blocks/marketing-pro/product-tours/workflow-walkthrough.tsx","type":"registry:component","target":"components/blocks/marketing-pro/product-tours/workflow-walkthrough.tsx"}],"description":"Three mini screens joined by arrows following one item from new to sent.","dependencies":["lucide-react"]},{"name":"marketing-pro-roadmap-sections-milestone-progress-bars","type":"registry:block","title":"Milestone Progress Bars","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/milestone-progress-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/milestone-progress-bars.tsx"}],"description":"In flight initiatives with stage chips, owners, and progress bars defined by milestones."},{"name":"marketing-pro-roadmap-sections-public-roadmap-banner","type":"registry:block","title":"Public Roadmap Banner","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/public-roadmap-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/public-roadmap-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A transparency banner with in flight and shipped counts linking roadmap and changelog.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-roadmap-sections-quarter-timeline","type":"registry:block","title":"Quarter Timeline","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/quarter-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/quarter-timeline.tsx"}],"description":"Four quarters on a line with status chips and struck through shipped items."},{"name":"marketing-pro-roadmap-sections-roadmap-columns","type":"registry:block","title":"Roadmap Columns","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/roadmap-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/roadmap-columns.tsx"}],"description":"A Now, Next, Later board with defined column semantics and tagged item cards."},{"name":"marketing-pro-roadmap-sections-roadmap-with-votes","type":"registry:block","title":"Roadmap With Votes","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/roadmap-with-votes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/roadmap-with-votes.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Feature requests ranked by vote buttons with status badges and descriptions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-roadmap-sections-shipped-vs-planned-list","type":"registry:block","title":"Shipped Vs Planned List","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/shipped-vs-planned-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/shipped-vs-planned-list.tsx"}],"description":"Dated shipped items beside planned ones with quarter chips and an honest exploring label.","dependencies":["lucide-react"]},{"name":"marketing-pro-roadmap-sections-voting-board-columns","type":"registry:block","title":"Voting Board Columns","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/voting-board-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/voting-board-columns.tsx"}],"description":"The public roadmap as a three column kanban, vote counts kept on shipped cards.","dependencies":["lucide-react"]},{"name":"marketing-pro-roadmap-sections-yearly-themes","type":"registry:block","title":"Yearly Themes","files":[{"path":"components/blocks/marketing-pro/roadmap-sections/yearly-themes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/roadmap-sections/yearly-themes.tsx"}],"description":"The three directive themes the year answers to, with reasoning and in flight bets."},{"name":"marketing-pro-stats-sections-annual-report-numbers","type":"registry:block","title":"Annual Report Numbers","files":[{"path":"components/blocks/marketing-pro/stats-sections/annual-report-numbers.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/annual-report-numbers.tsx"}],"description":"An editorial year in review with a statement headline and three oversized ruled numbers."},{"name":"marketing-pro-stats-sections-counters-with-icons","type":"registry:block","title":"Counters With Icons","files":[{"path":"components/blocks/marketing-pro/stats-sections/counters-with-icons.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/counters-with-icons.tsx"}],"description":"A light four counter row with tinted icon discs, large values, and hairline dividers.","dependencies":["lucide-react"]},{"name":"marketing-pro-stats-sections-dark-stat-band","type":"registry:block","title":"Dark Stat Band","files":[{"path":"components/blocks/marketing-pro/stats-sections/dark-stat-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/dark-stat-band.tsx"}],"description":"A solid primary band with a short headline beside three large stats divided by hairline rules."},{"name":"marketing-pro-stats-sections-growth-story","type":"registry:block","title":"Growth Story","files":[{"path":"components/blocks/marketing-pro/stats-sections/growth-story.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/growth-story.tsx"}],"description":"A split stats section pairing a heading, narrative paragraph, and three hairline stat rows with a large decorative area chart panel."},{"name":"marketing-pro-stats-sections-inline-stat-strip","type":"registry:block","title":"Inline Stat Strip","files":[{"path":"components/blocks/marketing-pro/stats-sections/inline-stat-strip.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/inline-stat-strip.tsx"}],"description":"A slim pill shaped strip of four value and label pairs, the lightest proof beat between sections."},{"name":"marketing-pro-stats-sections-kpi-cards","type":"registry:block","title":"KPI Cards","files":[{"path":"components/blocks/marketing-pro/stats-sections/kpi-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/kpi-cards.tsx"}],"description":"A centered stats header over three KPI cards, each pairing a small label and oversized value with a delta chip and a twelve bar sparkline.","dependencies":["lucide-react"]},{"name":"marketing-pro-stats-sections-kpi-cards-with-charts","type":"registry:block","title":"Kpi Cards With Charts","files":[{"path":"components/blocks/marketing-pro/stats-sections/kpi-cards-with-charts.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/kpi-cards-with-charts.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Four KPI cards with working shadcn sparklines beneath their numbers.","dependencies":["recharts"]},{"name":"marketing-pro-stats-sections-live-counter-band","type":"registry:block","title":"Live Counter Band","files":[{"path":"components/blocks/marketing-pro/stats-sections/live-counter-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/live-counter-band.tsx"}],"description":"One running total with a pulsing dot and the per minute rate beneath."},{"name":"marketing-pro-stats-sections-metric-band","type":"registry:block","title":"Metric Band","files":[{"path":"components/blocks/marketing-pro/stats-sections/metric-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/metric-band.tsx"}],"description":"A centered stats band with a heading, four oversized metrics separated by hairline dividers, and a footnote citing the measurement period."},{"name":"marketing-pro-stats-sections-metric-tiles-band","type":"registry:block","title":"Metric Tiles Band","files":[{"path":"components/blocks/marketing-pro/stats-sections/metric-tiles-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/metric-tiles-band.tsx"}],"description":"A centered heading above four large KPI tiles separated by hairline dividers in one rounded band."},{"name":"marketing-pro-stats-sections-milestones-inline-text","type":"registry:block","title":"Milestones Inline Text","files":[{"path":"components/blocks/marketing-pro/stats-sections/milestones-inline-text.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/milestones-inline-text.tsx"}],"description":"Six years of company history as one paragraph with the milestones set at display size inline."},{"name":"marketing-pro-stats-sections-single-stat-spotlight","type":"registry:block","title":"Single Stat Spotlight","files":[{"path":"components/blocks/marketing-pro/stats-sections/single-stat-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/single-stat-spotlight.tsx"}],"description":"One enormous centered number with a quiet claim above and a sourcing line below."},{"name":"marketing-pro-stats-sections-split-numbers-with-copy","type":"registry:block","title":"Split Numbers With Copy","files":[{"path":"components/blocks/marketing-pro/stats-sections/split-numbers-with-copy.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/split-numbers-with-copy.tsx"}],"description":"A text only split section with a heading and two paragraphs beside a grid of four large numbers."},{"name":"marketing-pro-stats-sections-stats-comparison-columns","type":"registry:block","title":"Stats Comparison Columns","files":[{"path":"components/blocks/marketing-pro/stats-sections/stats-comparison-columns.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/stats-comparison-columns.tsx"}],"description":"A then and now ledger with before values struck through beside bold on Acme numbers."},{"name":"marketing-pro-stats-sections-stats-with-bar-chart","type":"registry:block","title":"Stats With Bar Chart","files":[{"path":"components/blocks/marketing-pro/stats-sections/stats-with-bar-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/stats-with-bar-chart.tsx"}],"description":"A split section pairing a heading and three stacked stats with a twelve month bar chart panel."},{"name":"marketing-pro-stats-sections-stats-with-donut-chart","type":"registry:block","title":"Stats With Donut Chart","files":[{"path":"components/blocks/marketing-pro/stats-sections/stats-with-donut-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/stats-with-donut-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Three stat lines beside a shadcn donut splitting the same claim into its parts.","dependencies":["recharts"]},{"name":"marketing-pro-stats-sections-stats-with-donut-grid","type":"registry:block","title":"Stats With Donut Grid","files":[{"path":"components/blocks/marketing-pro/stats-sections/stats-with-donut-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/stats-with-donut-grid.tsx"}],"description":"Three large donut rings with centered percentages and captions inside one bordered panel."},{"name":"marketing-pro-stats-sections-stats-with-progress-bars","type":"registry:block","title":"Stats With Progress Bars","files":[{"path":"components/blocks/marketing-pro/stats-sections/stats-with-progress-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/stats-with-progress-bars.tsx"}],"description":"Copy beside four goal attainment rows, each with a label, value, and filled progress bar."},{"name":"marketing-pro-stats-sections-stats-with-sparklines","type":"registry:block","title":"Stats With Sparklines","files":[{"path":"components/blocks/marketing-pro/stats-sections/stats-with-sparklines.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/stats-with-sparklines.tsx"}],"description":"Four stat cards, each topped by a small sparkline that shows the trend behind the number."},{"name":"marketing-pro-stats-sections-text-stat-sentences","type":"registry:block","title":"Text Stat Sentences","files":[{"path":"components/blocks/marketing-pro/stats-sections/text-stat-sentences.tsx","type":"registry:component","target":"components/blocks/marketing-pro/stats-sections/text-stat-sentences.tsx"}],"description":"Three prose sentences with the numbers rendered large inline, stats with grammar."},{"name":"marketing-pro-status-sections-current-status-list","type":"registry:block","title":"Current Status List","files":[{"path":"components/blocks/marketing-pro/status-sections/current-status-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/current-status-list.tsx"}],"description":"An aggregate status banner above per component rows with dots and uptime figures."},{"name":"marketing-pro-status-sections-incident-history-list","type":"registry:block","title":"Incident History List","files":[{"path":"components/blocks/marketing-pro/status-sections/incident-history-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/incident-history-list.tsx"}],"description":"Dated incidents with severity chips, precise impact lines, and postmortem links.","dependencies":["lucide-react"]},{"name":"marketing-pro-status-sections-regional-status-grid","type":"registry:block","title":"Regional Status Grid","files":[{"path":"components/blocks/marketing-pro/status-sections/regional-status-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/regional-status-grid.tsx"}],"description":"Per region health cards with local latency and twelve month incident counts."},{"name":"marketing-pro-status-sections-response-time-chart","type":"registry:block","title":"Response Time Chart","files":[{"path":"components/blocks/marketing-pro/status-sections/response-time-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/response-time-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Median and p99 latency as shadcn lines with the visible spike explained.","dependencies":["recharts"]},{"name":"marketing-pro-status-sections-sla-commitments-table","type":"registry:block","title":"Sla Commitments Table","files":[{"path":"components/blocks/marketing-pro/status-sections/sla-commitments-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/sla-commitments-table.tsx"}],"description":"SLA targets beside trailing actuals and automatic remedies, published inline."},{"name":"marketing-pro-status-sections-status-summary-banner","type":"registry:block","title":"Status Summary Banner","files":[{"path":"components/blocks/marketing-pro/status-sections/status-summary-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/status-summary-banner.tsx"}],"description":"A one row live status banner with a pulsing dot linking the full status page.","dependencies":["lucide-react"]},{"name":"marketing-pro-status-sections-subscribe-to-updates","type":"registry:block","title":"Subscribe To Updates","files":[{"path":"components/blocks/marketing-pro/status-sections/subscribe-to-updates.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/subscribe-to-updates.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A status list signup with a never marketing constitution and an email form.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-status-sections-uptime-day-ticks","type":"registry:block","title":"Uptime Day Ticks","files":[{"path":"components/blocks/marketing-pro/status-sections/uptime-day-ticks.tsx","type":"registry:component","target":"components/blocks/marketing-pro/status-sections/uptime-day-ticks.tsx"}],"description":"The last 90 days as tick bars with the two degraded days named below, not in tooltips."},{"name":"marketing-pro-team-sections-compact-team-roles","type":"registry:block","title":"Compact Team Roles","files":[{"path":"components/blocks/marketing-pro/team-sections/compact-team-roles.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/compact-team-roles.tsx"}],"description":"A text only roster in three department columns listing names and roles without portraits."},{"name":"marketing-pro-team-sections-founders-spotlight","type":"registry:block","title":"Founders Spotlight","files":[{"path":"components/blocks/marketing-pro/team-sections/founders-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/founders-spotlight.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two wide founder cards with large avatars, problem and answer bios, and social links.","dependencies":["radix-ui"]},{"name":"marketing-pro-team-sections-leadership-list","type":"registry:block","title":"Leadership List","files":[{"path":"components/blocks/marketing-pro/team-sections/leadership-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/leadership-list.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Editorial leadership rows with avatars, highlighted roles, and short biographies.","dependencies":["radix-ui"]},{"name":"marketing-pro-team-sections-open-roles-by-team","type":"registry:block","title":"Open Roles By Team","files":[{"path":"components/blocks/marketing-pro/team-sections/open-roles-by-team.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/open-roles-by-team.tsx"}],"description":"Positions grouped by team with location and the real comp range on every row.","dependencies":["lucide-react"]},{"name":"marketing-pro-team-sections-team-by-department","type":"registry:block","title":"Team By Department","files":[{"path":"components/blocks/marketing-pro/team-sections/team-by-department.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-by-department.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"People grouped into labeled departments as avatar pill chips with one line charters.","dependencies":["radix-ui"]},{"name":"marketing-pro-team-sections-team-cards-with-socials","type":"registry:block","title":"Team Cards With Socials","files":[{"path":"components/blocks/marketing-pro/team-sections/team-cards-with-socials.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-cards-with-socials.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Six bordered member cards with avatars, personality one liners, and social icon rows.","dependencies":["radix-ui"]},{"name":"marketing-pro-team-sections-team-grid-with-avatars","type":"registry:block","title":"Team Grid With Avatars","files":[{"path":"components/blocks/marketing-pro/team-sections/team-grid-with-avatars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-grid-with-avatars.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A centered heading above a four column grid of illustrated portraits with names and roles.","dependencies":["radix-ui"]},{"name":"marketing-pro-team-sections-team-growth-chart","type":"registry:block","title":"Team Growth Chart","files":[{"path":"components/blocks/marketing-pro/team-sections/team-growth-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-growth-chart.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Five years of headcount as a stepped shadcn line beside the slow on purpose philosophy.","dependencies":["recharts"]},{"name":"marketing-pro-team-sections-team-map-distribution","type":"registry:block","title":"Team Map Distribution","files":[{"path":"components/blocks/marketing-pro/team-sections/team-map-distribution.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-map-distribution.tsx"}],"description":"A distributed team pitch beside a dot grid map with city pins and an overlap caption."},{"name":"marketing-pro-team-sections-team-stats-banner","type":"registry:block","title":"Team Stats Banner","files":[{"path":"components/blocks/marketing-pro/team-sections/team-stats-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-stats-banner.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A compact banner pairing overlapping avatars and a team pitch with three numbers.","dependencies":["radix-ui"]},{"name":"marketing-pro-team-sections-team-with-hiring-cta","type":"registry:block","title":"Team With Hiring Cta","files":[{"path":"components/blocks/marketing-pro/team-sections/team-with-hiring-cta.tsx","type":"registry:component","target":"components/blocks/marketing-pro/team-sections/team-with-hiring-cta.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Recruiting copy and CTAs beside an avatar mosaic ending in a dashed open seat tile.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-testimonials-alternating-quotes","type":"registry:block","title":"Alternating Quotes","files":[{"path":"components/blocks/marketing-pro/testimonials/alternating-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/alternating-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Large quotes with avatars that alternate left and right alignment in a divided stack.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-avatar-strip-with-quote","type":"registry:block","title":"Avatar Strip With Quote","files":[{"path":"components/blocks/marketing-pro/testimonials/avatar-strip-with-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/avatar-strip-with-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A centered row of ten overlapping avatars above one quote, five stars, and a review count.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-testimonials-case-study-cards","type":"registry:block","title":"Case Study Cards","files":[{"path":"components/blocks/marketing-pro/testimonials/case-study-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/case-study-cards.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A centered header over two large case study cards pairing a customer wordmark and quote excerpt with two headline metrics and a story link.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-testimonials-chat-style-quotes","type":"registry:block","title":"Chat Style Quotes","files":[{"path":"components/blocks/marketing-pro/testimonials/chat-style-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/chat-style-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Testimonials as a chat thread with alternating bubbles, avatars, and timestamps in a framed window.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-dark-panel-quote","type":"registry:block","title":"Dark Panel Quote","files":[{"path":"components/blocks/marketing-pro/testimonials/dark-panel-quote.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/dark-panel-quote.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"One featured quote inside a solid primary panel with avatar attribution at the bottom.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-logos-and-quotes-grid","type":"registry:block","title":"Logos And Quotes Grid","files":[{"path":"components/blocks/marketing-pro/testimonials/logos-and-quotes-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/logos-and-quotes-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A grid that alternates customer quote cards with company wordmark tiles under a heading.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-nps-chart-with-quotes","type":"registry:block","title":"Nps Chart With Quotes","files":[{"path":"components/blocks/marketing-pro/testimonials/nps-chart-with-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/nps-chart-with-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/chart.tsx","type":"registry:ui","target":"components/ui/chart.tsx"}],"description":"Six quarters of NPS as shadcn bars beside survey verbatims including the missing point.","dependencies":["radix-ui","recharts"]},{"name":"marketing-pro-testimonials-one-line-quotes-list","type":"registry:block","title":"One Line Quotes List","files":[{"path":"components/blocks/marketing-pro/testimonials/one-line-quotes-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/one-line-quotes-list.tsx"}],"description":"Ten customers at one ruled line each, density and variety as the proof."},{"name":"marketing-pro-testimonials-press-quotes-row","type":"registry:block","title":"Press Quotes Row","files":[{"path":"components/blocks/marketing-pro/testimonials/press-quotes-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/press-quotes-row.tsx"}],"description":"Three pulled review lines under publication wordmarks, each cited to its piece."},{"name":"marketing-pro-testimonials-pull-quotes-stack","type":"registry:block","title":"Pull Quotes Stack","files":[{"path":"components/blocks/marketing-pro/testimonials/pull-quotes-stack.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/pull-quotes-stack.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"An editorial stack of two big pull quotes with oversized quote marks and attributions.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-quote-carousel","type":"registry:block","title":"Quote Carousel","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-carousel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-carousel.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A looping carousel of three large centered pull quotes with avatars, customer wordmarks, and rounded previous and next controls below.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"marketing-pro-testimonials-quote-masonry-grid","type":"registry:block","title":"Quote Masonry Grid","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-masonry-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-masonry-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Five quotes at their natural lengths flowing in masonry columns with avatar attributions.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-quote-with-metrics","type":"registry:block","title":"Quote With Metrics","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-with-metrics.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-with-metrics.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A featured customer quote card beside a divided grid of two big result numbers.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-quote-with-metrics-panel","type":"registry:block","title":"Quote With Metrics Panel","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-with-metrics-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-with-metrics-panel.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"One substantial quote beside the board slide it describes, befores struck through.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-quote-with-product-shot","type":"registry:block","title":"Quote With Product Shot","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-with-product-shot.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-with-product-shot.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A large quote and attribution beside a launch checklist mockup of the product.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-testimonials-quote-with-rating-bars","type":"registry:block","title":"Quote With Rating Bars","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-with-rating-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-with-rating-bars.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A review summary with average score, star row, and histogram bars beside a featured quote.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-testimonials-quote-with-results-chart","type":"registry:block","title":"Quote With Results Chart","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-with-results-chart.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-with-results-chart.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A large customer quote beside a results panel with an outcome headline and twelve month bar chart.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-quote-with-stats-row","type":"registry:block","title":"Quote With Stats Row","files":[{"path":"components/blocks/marketing-pro/testimonials/quote-with-stats-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/quote-with-stats-row.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A centered banner quote above a ruled row of three results from the same customer.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-single-quote-banner","type":"registry:block","title":"Single Quote Banner","files":[{"path":"components/blocks/marketing-pro/testimonials/single-quote-banner.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/single-quote-banner.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"One large centered quote with an avatar, name, and role stacked beneath it.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-social-cards","type":"registry:block","title":"Social Cards","files":[{"path":"components/blocks/marketing-pro/testimonials/social-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/social-cards.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A grid of six social post style cards with avatars, handles, and casual praise.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-social-posts-wall","type":"registry:block","title":"Social Posts Wall","files":[{"path":"components/blocks/marketing-pro/testimonials/social-posts-wall.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/social-posts-wall.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Six short posts drawn as cards with avatars, handles, and timestamps, displayed unedited.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-three-column-quotes","type":"registry:block","title":"Three Column Quotes","files":[{"path":"components/blocks/marketing-pro/testimonials/three-column-quotes.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/three-column-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three customer quotes in divided columns under a centered heading and lede.","dependencies":["radix-ui"]},{"name":"marketing-pro-testimonials-wall-of-love","type":"registry:block","title":"Wall of Love","files":[{"path":"components/blocks/marketing-pro/testimonials/wall-of-love.tsx","type":"registry:component","target":"components/blocks/marketing-pro/testimonials/wall-of-love.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A masonry wall of nine short quote cards under a centered header, with illustrated avatars, names, and roles at customer companies.","dependencies":["radix-ui"]},{"name":"marketing-pro-trust-and-security-audit-log-preview","type":"registry:block","title":"Audit Log Preview","files":[{"path":"components/blocks/marketing-pro/trust-and-security/audit-log-preview.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/audit-log-preview.tsx"}],"description":"A mono audit log mockup including the line the vendor own support access writes."},{"name":"marketing-pro-trust-and-security-compliance-badges-row","type":"registry:block","title":"Compliance Badges Row","files":[{"path":"components/blocks/marketing-pro/trust-and-security/compliance-badges-row.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/compliance-badges-row.tsx"}],"description":"A strip of certification chips with shield icons and audit dates beside a delivery promise.","dependencies":["lucide-react"]},{"name":"marketing-pro-trust-and-security-compliance-panel","type":"registry:block","title":"Compliance Panel","files":[{"path":"components/blocks/marketing-pro/trust-and-security/compliance-panel.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/compliance-panel.tsx"}],"description":"A compliance section with a centered header, four framework cards pairing drawn badge marks with status lines, and a quiet trust center link.","dependencies":["lucide-react"]},{"name":"marketing-pro-trust-and-security-data-flow-diagram","type":"registry:block","title":"Data Flow Diagram","files":[{"path":"components/blocks/marketing-pro/trust-and-security/data-flow-diagram.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/data-flow-diagram.tsx"}],"description":"An SVG flow of tools, platform, and storage with TLS and AES labels on the arrows."},{"name":"marketing-pro-trust-and-security-data-promise","type":"registry:block","title":"Data Promise","files":[{"path":"components/blocks/marketing-pro/trust-and-security/data-promise.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/data-promise.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered data manifesto with five check marked promise rows split by hairlines and whitepaper and DPA buttons beneath.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-trust-and-security-encryption-flow-diagram","type":"registry:block","title":"Encryption Flow Diagram","files":[{"path":"components/blocks/marketing-pro/trust-and-security/encryption-flow-diagram.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/encryption-flow-diagram.tsx"}],"description":"Browser to storage as a three node SVG flow with the encryption state on every hop."},{"name":"marketing-pro-trust-and-security-plain-language-privacy","type":"registry:block","title":"Plain Language Privacy","files":[{"path":"components/blocks/marketing-pro/trust-and-security/plain-language-privacy.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/plain-language-privacy.tsx"}],"description":"Five human sentences summarizing the privacy policy, each linked to its legal section."},{"name":"marketing-pro-trust-and-security-residency-map-dots","type":"registry:block","title":"Residency Map Dots","files":[{"path":"components/blocks/marketing-pro/trust-and-security/residency-map-dots.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/residency-map-dots.tsx"}],"description":"A residency promise beside a dot grid map with pinned storage regions and a backup clause."},{"name":"marketing-pro-trust-and-security-security-faq-compact","type":"registry:block","title":"Security Faq Compact","files":[{"path":"components/blocks/marketing-pro/trust-and-security/security-faq-compact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/security-faq-compact.tsx"}],"description":"Six always open security answers written to be pasted into a vendor review form."},{"name":"marketing-pro-trust-and-security-security-feature-list","type":"registry:block","title":"Security Feature List","files":[{"path":"components/blocks/marketing-pro/trust-and-security/security-feature-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/security-feature-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split security section pairing a headline, whitepaper button, and spec rows with a grouped icon feature list under two uppercase labels.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-trust-and-security-security-pillars-grid","type":"registry:block","title":"Security Pillars Grid","files":[{"path":"components/blocks/marketing-pro/trust-and-security/security-pillars-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/security-pillars-grid.tsx"}],"description":"Six security control cards with icon discs and implementation detail sentences.","dependencies":["lucide-react"]},{"name":"marketing-pro-trust-and-security-security-split-with-checklist","type":"registry:block","title":"Security Split With Checklist","files":[{"path":"components/blocks/marketing-pro/trust-and-security/security-split-with-checklist.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/security-split-with-checklist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A security pitch and pack request beside six checked controls with terse implementation notes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-trust-and-security-subprocessors-table","type":"registry:block","title":"Subprocessors Table","files":[{"path":"components/blocks/marketing-pro/trust-and-security/subprocessors-table.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/subprocessors-table.tsx"}],"description":"Every third party that touches customer data, with purpose, region, and year added."},{"name":"marketing-pro-trust-and-security-trust-center-links","type":"registry:block","title":"Trust Center Links","files":[{"path":"components/blocks/marketing-pro/trust-and-security/trust-center-links.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/trust-center-links.tsx"}],"description":"Four document cards with updated dates and honest action links for security reviewers.","dependencies":["lucide-react"]},{"name":"marketing-pro-trust-and-security-uptime-history-bars","type":"registry:block","title":"Uptime History Bars","files":[{"path":"components/blocks/marketing-pro/trust-and-security/uptime-history-bars.tsx","type":"registry:component","target":"components/blocks/marketing-pro/trust-and-security/uptime-history-bars.tsx"}],"description":"SLA stats beside twelve monthly uptime bars with one honest dip explained in the caption."},{"name":"marketing-pro-utility-pages-coming-soon","type":"registry:block","title":"Coming Soon","files":[{"path":"components/blocks/marketing-pro/utility-pages/coming-soon.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/coming-soon.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A prelaunch page with the launch date at display size and a two email promise.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-utility-pages-email-confirmed","type":"registry:block","title":"Email Confirmed","files":[{"path":"components/blocks/marketing-pro/utility-pages/email-confirmed.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/email-confirmed.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A verification landing that names what the click unlocked before one button back.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-utility-pages-maintenance-page","type":"registry:block","title":"Maintenance Page","files":[{"path":"components/blocks/marketing-pro/utility-pages/maintenance-page.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/maintenance-page.tsx"}],"description":"A planned window notice with the untouched list and a live status link.","dependencies":["lucide-react"]},{"name":"marketing-pro-utility-pages-not-found-404","type":"registry:block","title":"Not Found 404","files":[{"path":"components/blocks/marketing-pro/utility-pages/not-found-404.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/not-found-404.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A 404 with a search pill and chips for the pages people were actually hunting.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-utility-pages-not-found-directory","type":"registry:block","title":"Not Found Directory","files":[{"path":"components/blocks/marketing-pro/utility-pages/not-found-directory.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/not-found-directory.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A 404 page with an oversized muted number, a calm headline, a rounded home button, and three destination cards for docs, status, and support.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-utility-pages-rate-limited-429","type":"registry:block","title":"Rate Limited 429","files":[{"path":"components/blocks/marketing-pro/utility-pages/rate-limited-429.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/rate-limited-429.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A blameless 429 page with the exact retry window and a human path to higher limits.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-utility-pages-server-error-500","type":"registry:block","title":"Server Error 500","files":[{"path":"components/blocks/marketing-pro/utility-pages/server-error-500.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/server-error-500.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A 500 that owns the failure, protects the draft, and hands out an error ID.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-utility-pages-signups-closed","type":"registry:block","title":"Signups Closed","files":[{"path":"components/blocks/marketing-pro/utility-pages/signups-closed.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/signups-closed.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A capacity pause page with the reason, reopen date, and a hold my place form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-utility-pages-thank-you-page","type":"registry:block","title":"Thank You Page","files":[{"path":"components/blocks/marketing-pro/utility-pages/thank-you-page.tsx","type":"registry:component","target":"components/blocks/marketing-pro/utility-pages/thank-you-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A post signup page that schedules the next five minutes with honest times.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-video-sections-centered-video-showcase","type":"registry:block","title":"Centered Video Showcase","files":[{"path":"components/blocks/marketing-pro/video-sections/centered-video-showcase.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/centered-video-showcase.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One ultrawide cinematic player mockup under a centered heading with a duration caption.","dependencies":["lucide-react"]},{"name":"marketing-pro-video-sections-podcast-episode-list","type":"registry:block","title":"Podcast Episode List","files":[{"path":"components/blocks/marketing-pro/video-sections/podcast-episode-list.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/podcast-episode-list.tsx"}],"description":"Episode rows with play discs, guest credits, and platform chips.","dependencies":["lucide-react"]},{"name":"marketing-pro-video-sections-testimonial-video-cards","type":"registry:block","title":"Testimonial Video Cards","files":[{"path":"components/blocks/marketing-pro/video-sections/testimonial-video-cards.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/testimonial-video-cards.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three customer film cards with pull quote lines, avatars, and duration chips.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-pro-video-sections-video-grid-thumbnails","type":"registry:block","title":"Video Grid Thumbnails","files":[{"path":"components/blocks/marketing-pro/video-sections/video-grid-thumbnails.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/video-grid-thumbnails.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three video cards with posters, play discs, duration chips, and topic badges.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-video-sections-video-player-split","type":"registry:block","title":"Video Player Split","files":[{"path":"components/blocks/marketing-pro/video-sections/video-player-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/video-player-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Pitch copy beside a player mockup with a poster, play disc, and progress bar.","dependencies":["lucide-react"]},{"name":"marketing-pro-video-sections-video-with-chapters","type":"registry:block","title":"Video With Chapters","files":[{"path":"components/blocks/marketing-pro/video-sections/video-with-chapters.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/video-with-chapters.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A player mockup beside a chapter list with timestamps and one active row.","dependencies":["lucide-react"]},{"name":"marketing-pro-video-sections-webinar-replay-split","type":"registry:block","title":"Webinar Replay Split","files":[{"path":"components/blocks/marketing-pro/video-sections/webinar-replay-split.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/webinar-replay-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A dated replay player beside checked takeaways with watch and slides CTAs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-video-sections-webinar-replays-grid","type":"registry:block","title":"Webinar Replays Grid","files":[{"path":"components/blocks/marketing-pro/video-sections/webinar-replays-grid.tsx","type":"registry:component","target":"components/blocks/marketing-pro/video-sections/webinar-replays-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four past sessions with posters, live attendance counts, and no registration wall.","dependencies":["lucide-react"]},{"name":"marketing-pro-waitlist-sections-early-access-tiers","type":"registry:block","title":"Early Access Tiers","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/early-access-tiers.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/early-access-tiers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"The free queue beside a paid skip whose fee credits against the first year.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-waitlist-sections-founding-member-perks","type":"registry:block","title":"Founding Member Perks","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/founding-member-perks.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/founding-member-perks.tsx"}],"description":"Four founding perks with stated limits, led by the price lock, dated window.","dependencies":["lucide-react"]},{"name":"marketing-pro-waitlist-sections-invite-code-redeem","type":"registry:block","title":"Invite Code Redeem","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/invite-code-redeem.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/invite-code-redeem.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A centered code entry card with the invite tree explained and a polite no code path.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-waitlist-sections-launch-timeline","type":"registry:block","title":"Launch Timeline","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/launch-timeline.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/launch-timeline.tsx"}],"description":"Alpha, beta, launch phases down a rail with a you are here chip on the live one."},{"name":"marketing-pro-waitlist-sections-referral-position-card","type":"registry:block","title":"Referral Position Card","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/referral-position-card.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/referral-position-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Your queue position with referral math, a copyable link, and a fairness cap.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pro-waitlist-sections-waitlist-faq-compact","type":"registry:block","title":"Waitlist Faq Compact","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/waitlist-faq-compact.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/waitlist-faq-compact.tsx"}],"description":"The five waitlist questions answered with dates, counts, and mechanisms."},{"name":"marketing-pro-waitlist-sections-waitlist-hero-count","type":"registry:block","title":"Waitlist Hero Count","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/waitlist-hero-count.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/waitlist-hero-count.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A waitlist hero with the queue size and weekly admission rate as the proof.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-pro-waitlist-sections-waitlist-stats-band","type":"registry:block","title":"Waitlist Stats Band","files":[{"path":"components/blocks/marketing-pro/waitlist-sections/waitlist-stats-band.tsx","type":"registry:component","target":"components/blocks/marketing-pro/waitlist-sections/waitlist-stats-band.tsx"}],"description":"Four queue health numbers including median wait and invite activation rate."},{"name":"marketing-about-sections-achievements","type":"registry:block","title":"Achievements","files":[{"path":"components/blocks/marketing/about-sections/achievements.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/achievements.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A grid of awards and milestones with icons and short captions. Use it on an about page to prove credibility and show what your team has earned.","dependencies":["lucide-react"]},{"name":"marketing-about-sections-animated-stats","type":"registry:block","title":"Animated Stats","files":[{"path":"components/blocks/marketing/about-sections/animated-stats.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/animated-stats.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Headline metrics that count up as they scroll into view. Drop it on an about page to make growth, users, and revenue feel alive and concrete.","dependencies":["lucide-react"]},{"name":"marketing-about-sections-brand-values","type":"registry:block","title":"Brand Values","files":[{"path":"components/blocks/marketing/about-sections/brand-values.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/brand-values.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A row of value cards pairing an icon with a short principle. Use it to spell out what your brand stands for and how the team makes decisions.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-company-culture","type":"registry:block","title":"Company Culture","files":[{"path":"components/blocks/marketing/about-sections/company-culture.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/company-culture.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Photos and short blurbs that show how the team works and what daily life feels like. Use it on a careers or about page to attract good people.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-company-values","type":"registry:block","title":"Company Values","files":[{"path":"components/blocks/marketing/about-sections/company-values.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/company-values.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A clean grid of core values, each with an icon, title, and sentence. Use it to explain the beliefs that guide how your company operates daily.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-diversity-inclusion","type":"registry:block","title":"Diversity & Inclusion","files":[{"path":"components/blocks/marketing/about-sections/diversity-inclusion.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/diversity-inclusion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A section pairing a statement on belonging with supporting stats and imagery. Use it to show how your company invests in people and fairness.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-founders","type":"registry:block","title":"Founders","files":[{"path":"components/blocks/marketing/about-sections/founders.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/founders.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Portrait cards of the founders with names, roles, and a short bio. Use it on an about page to put faces and a personal story behind the company.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-mission-statement","type":"registry:block","title":"Mission Statement","files":[{"path":"components/blocks/marketing/about-sections/mission-statement.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/mission-statement.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bold single statement of purpose framed as a centered headline. Use it at the top of an about page to anchor everything in one clear idea.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-press-recognitions","type":"registry:block","title":"Press & Recognitions","files":[{"path":"components/blocks/marketing/about-sections/press-recognitions.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/press-recognitions.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A strip of publication logos and pull quotes that show where you have been featured. Use it on an about page to borrow trust from known names.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-process","type":"registry:block","title":"Process","files":[{"path":"components/blocks/marketing/about-sections/process.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/process.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Numbered steps that walk through how you work, from first contact to final delivery. Use it on an about or services page to set expectations."},{"name":"marketing-about-sections-simple","type":"registry:block","title":"Simple","files":[{"path":"components/blocks/marketing/about-sections/simple.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/simple.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A minimal about block with a heading and a paragraph of company background. Use it when you want to introduce the business without extra clutter.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-about-sections-stats-grid","type":"registry:block","title":"Stats Grid","files":[{"path":"components/blocks/marketing/about-sections/stats-grid.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/stats-grid.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A tidy grid of key numbers with labels for users, revenue, or reach. Use it on an about page to back up your story with solid figures, fast.","dependencies":["lucide-react"]},{"name":"marketing-about-sections-tabs","type":"registry:block","title":"Tabs","files":[{"path":"components/blocks/marketing/about-sections/tabs.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/tabs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabbed panels that split your story into mission, team, and history. Use it on an about page to pack a lot of context into one compact space.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-team-grid","type":"registry:block","title":"Team Grid","files":[{"path":"components/blocks/marketing/about-sections/team-grid.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/team-grid.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A responsive grid of headshots with names, titles, and social links. Use it on an about page to introduce the real people behind your product."},{"name":"marketing-about-sections-timeline","type":"registry:block","title":"Timeline","files":[{"path":"components/blocks/marketing/about-sections/timeline.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/timeline.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A vertical list of dated milestones marking how the company grew. Use it on an about page to walk visitors through your story, year by year.","dependencies":["lucide-react"]},{"name":"marketing-about-sections-two-column","type":"registry:block","title":"Two Column","files":[{"path":"components/blocks/marketing/about-sections/two-column.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/two-column.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split layout with company text on one side and an image on the other. Use it on an about page to balance a short story with a clear visual.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-about-sections-values","type":"registry:block","title":"Values","files":[{"path":"components/blocks/marketing/about-sections/values.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/values.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A set of value cards each holding an icon, title, and one line. Use it on an about page to share the principles your team works by every day.","dependencies":["lucide-react"]},{"name":"marketing-about-sections-with-image","type":"registry:block","title":"With Image","files":[{"path":"components/blocks/marketing/about-sections/with-image.tsx","type":"registry:component","target":"components/blocks/marketing/about-sections/with-image.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An about block pairing a paragraph of background with a large photo. Use it to introduce the company while a real image builds warmth and trust.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-announcement-banners-floating","type":"registry:block","title":"Floating","files":[{"path":"components/blocks/marketing/announcement-banners/floating.tsx","type":"registry:component","target":"components/blocks/marketing/announcement-banners/floating.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner that floats above page content with rounded corners and a dismiss button. Announce a promotion or update without pushing the layout down.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-announcement-banners-simple-centered","type":"registry:block","title":"Simple Centered","files":[{"path":"components/blocks/marketing/announcement-banners/simple-centered.tsx","type":"registry:component","target":"components/blocks/marketing/announcement-banners/simple-centered.tsx"}],"description":"A slim bar with centered text and a single dismiss control. Share a short notice like free shipping or a new feature across the top of any page."},{"name":"marketing-announcement-banners-with-action","type":"registry:block","title":"With Action","files":[{"path":"components/blocks/marketing/announcement-banners/with-action.tsx","type":"registry:component","target":"components/blocks/marketing/announcement-banners/with-action.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner pairing a short message with a button so readers can act at once. Use it to drive signups, trial starts, or a link to a new release.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-announcement-banners-with-countdown","type":"registry:block","title":"With Countdown","files":[{"path":"components/blocks/marketing/announcement-banners/with-countdown.tsx","type":"registry:component","target":"components/blocks/marketing/announcement-banners/with-countdown.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner with a live countdown timer beside the message. Build urgency for a sale, webinar, or deadline and prompt visitors to act before time runs out.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-announcement-banners-with-image","type":"registry:block","title":"With Image","files":[{"path":"components/blocks/marketing/announcement-banners/with-image.tsx","type":"registry:component","target":"components/blocks/marketing/announcement-banners/with-image.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner that places a thumbnail or icon next to the headline and link. Spotlight a product, event, or article with a visual that draws the eye.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-announcement-banners-with-social-proof","type":"registry:block","title":"With Social Proof","files":[{"path":"components/blocks/marketing/announcement-banners/with-social-proof.tsx","type":"registry:component","target":"components/blocks/marketing/announcement-banners/with-social-proof.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner showing user counts, ratings, or avatars next to the message. Build instant trust at the top of a page and nudge new visitors to convert.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-blog-sections-author-spotlight","type":"registry:block","title":"Author Spotlight","files":[{"path":"components/blocks/marketing/blog-sections/author-spotlight.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/author-spotlight.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A profile block pairing an author photo, bio, and their latest posts. Use it to build trust on a blog and surface more writing from one voice.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-carousel","type":"registry:block","title":"Carousel","files":[{"path":"components/blocks/marketing/blog-sections/carousel.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A horizontal slider of article cards with cover images and titles. Use it to feature recent or popular posts in a compact strip readers can swipe.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-case-study-showcase","type":"registry:block","title":"Case Study Showcase","files":[{"path":"components/blocks/marketing/blog-sections/case-study-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/case-study-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/hover-card.tsx","type":"registry:ui","target":"components/ui/hover-card.tsx"}],"description":"A grid of case study cards with logos, results, and short summaries. Use it to present customer stories and proof on a results focused blog page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-category-filter","type":"registry:block","title":"Category Filter","files":[{"path":"components/blocks/marketing/blog-sections/category-filter.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/category-filter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"A post grid paired with category tabs that filter the visible articles. Use it to help readers narrow a busy blog down to the topics they want.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-compact-list","type":"registry:block","title":"Compact List","files":[{"path":"components/blocks/marketing/blog-sections/compact-list.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/compact-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A dense vertical list of posts with titles, dates, and short excerpts. Use it to show many articles in little space on an index or archive page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-expert-roundup","type":"registry:block","title":"Expert Roundup","files":[{"path":"components/blocks/marketing/blog-sections/expert-roundup.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/expert-roundup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A grid collecting quotes and headshots from several contributors. Use it to package an opinion roundup or panel feature into one shareable post.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-featured-list","type":"registry:block","title":"Featured List","files":[{"path":"components/blocks/marketing/blog-sections/featured-list.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/featured-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A list led by one large featured article above smaller stacked posts. Use it to spotlight your top story while listing the rest of the feed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-featured-with-sidebar","type":"registry:block","title":"Featured With Sidebar","files":[{"path":"components/blocks/marketing/blog-sections/featured-with-sidebar.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/featured-with-sidebar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"A two column layout with a main article feed beside a sidebar of links. Use it for a blog home that mixes posts with categories and promos here.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-hero-focus","type":"registry:block","title":"Hero Focus","files":[{"path":"components/blocks/marketing/blog-sections/hero-focus.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/hero-focus.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A full width hero centered on a single article with a large cover image. Use it to launch a flagship post and pull readers straight into it.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-interview-format","type":"registry:block","title":"Interview Format","files":[{"path":"components/blocks/marketing/blog-sections/interview-format.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/interview-format.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A question and answer layout with a guest portrait and intro. Use it to publish interviews in a clear, readable format on an editorial blog.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-magazine-layout","type":"registry:block","title":"Magazine Layout","files":[{"path":"components/blocks/marketing/blog-sections/magazine-layout.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/magazine-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"An editorial grid that mixes large and small story cards across columns. Use it to give a content heavy blog the dense feel of a print magazine.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-minimal-blog","type":"registry:block","title":"Minimal Blog","files":[{"path":"components/blocks/marketing/blog-sections/minimal-blog.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/minimal-blog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A clean list of post titles, dates, and excerpts set in plenty of space. Use it for a writing focused blog where the words carry the whole page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-newsletter-blog","type":"registry:block","title":"Newsletter Blog","files":[{"path":"components/blocks/marketing/blog-sections/newsletter-blog.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/newsletter-blog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"An article feed combined with an email signup form and short prompt. Use it to grow a subscriber list while showcasing your most recent posts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-podcast-list","type":"registry:block","title":"Podcast List","files":[{"path":"components/blocks/marketing/blog-sections/podcast-list.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/podcast-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A list of episode cards with cover art, titles, and play controls. Use it to publish a podcast feed where listeners browse and start episodes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-simple-grid","type":"registry:block","title":"Simple Grid","files":[{"path":"components/blocks/marketing/blog-sections/simple-grid.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/simple-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"An even grid of article cards with cover images, titles, and dates. Use it as a clean, flexible blog index that scales to any number of posts.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-timeline-blog","type":"registry:block","title":"Timeline Blog","files":[{"path":"components/blocks/marketing/blog-sections/timeline-blog.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/timeline-blog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A vertical timeline that orders posts by date with markers and dots. Use it for a changelog, release notes, or a chronological story archive.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-blog-sections-video-blog","type":"registry:block","title":"Video Blog","files":[{"path":"components/blocks/marketing/blog-sections/video-blog.tsx","type":"registry:component","target":"components/blocks/marketing/blog-sections/video-blog.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"A grid of video cards with thumbnails, durations, and titles. Use it to run a video first blog where each card opens a clip or full episode.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-application-form","type":"registry:block","title":"Application Form","files":[{"path":"components/blocks/marketing/careers/application-form.tsx","type":"registry:component","target":"components/blocks/marketing/careers/application-form.tsx"},{"path":"components/ui/field.tsx","type":"registry:ui","target":"components/ui/field.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A job application form with fields for contact details, resume upload, and a cover letter. Lets candidates apply directly from your careers page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-career-path","type":"registry:block","title":"Career Path","files":[{"path":"components/blocks/marketing/careers/career-path.tsx","type":"registry:component","target":"components/blocks/marketing/careers/career-path.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A career path layout showing role progression, levels, and growth milestones. Helps applicants picture how they advance after joining your team.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-company-benefits","type":"registry:block","title":"Company Benefits","files":[{"path":"components/blocks/marketing/careers/company-benefits.tsx","type":"registry:component","target":"components/blocks/marketing/careers/company-benefits.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A company benefits section with icons and short blurbs for perks like health, time off, and remote work. Reassures candidates as they read open roles.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-department-positions","type":"registry:block","title":"Department Positions","files":[{"path":"components/blocks/marketing/careers/department-positions.tsx","type":"registry:component","target":"components/blocks/marketing/careers/department-positions.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A list of open positions grouped by department, each with a title and location. Helps candidates find the right team and apply to the matching role.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-department-showcase","type":"registry:block","title":"Department Showcase","files":[{"path":"components/blocks/marketing/careers/department-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/careers/department-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A department showcase with cards describing each team, its focus, and people. Helps candidates understand where they fit before browsing open roles.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"marketing-careers-employee-benefits","type":"registry:block","title":"Employee Benefits","files":[{"path":"components/blocks/marketing/careers/employee-benefits.tsx","type":"registry:component","target":"components/blocks/marketing/careers/employee-benefits.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An employee benefits grid covering insurance, learning budgets, and flexible hours. Shows candidates the full package while they consider applying.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-featured-job-slider","type":"registry:block","title":"Featured Job Slider","files":[{"path":"components/blocks/marketing/careers/featured-job-slider.tsx","type":"registry:component","target":"components/blocks/marketing/careers/featured-job-slider.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A horizontal slider of featured job cards with title, team, and location. Spotlights priority roles you want candidates to notice on the careers page.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"marketing-careers-interview-process","type":"registry:block","title":"Interview Process","files":[{"path":"components/blocks/marketing/careers/interview-process.tsx","type":"registry:component","target":"components/blocks/marketing/careers/interview-process.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A step by step interview process timeline running from first application to final offer. Sets expectations so candidates know what each hiring stage involves.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-job-board","type":"registry:block","title":"Job Board","files":[{"path":"components/blocks/marketing/careers/job-board.tsx","type":"registry:component","target":"components/blocks/marketing/careers/job-board.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A searchable job board with filters for team, location, and type. Lets candidates scan every open role and apply to the one that fits them best.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-job-details","type":"registry:block","title":"Job Details","files":[{"path":"components/blocks/marketing/careers/job-details.tsx","type":"registry:component","target":"components/blocks/marketing/careers/job-details.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A single job details page with description, responsibilities, and an apply button. Gives candidates everything they need to decide and submit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-job-listings","type":"registry:block","title":"Job Listings","files":[{"path":"components/blocks/marketing/careers/job-listings.tsx","type":"registry:component","target":"components/blocks/marketing/careers/job-listings.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A clean list of job listings with title, location, and a quick apply link. Helps candidates skim available roles and pick one to pursue today.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-careers-workplace-culture","type":"registry:block","title":"Workplace Culture","files":[{"path":"components/blocks/marketing/careers/workplace-culture.tsx","type":"registry:component","target":"components/blocks/marketing/careers/workplace-culture.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A workplace culture section with photos and short stories about daily life. Gives candidates a feel for the team before they decide to apply.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-changelogs-basic-changelog","type":"registry:block","title":"Basic Changelog","files":[{"path":"components/blocks/marketing/changelogs/basic-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/basic-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A straightforward changelog list with version numbers, dates, and bullet points. Use it to post release notes when you want clarity over visual flourish.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-changelogs-categorized-changelog","type":"registry:block","title":"Categorized Changelog","files":[{"path":"components/blocks/marketing/changelogs/categorized-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/categorized-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Release notes split into Added, Fixed, and Changed sections under each version. Helps readers scan a busy update and jump to the changes they care about.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-changelogs-compact-changelog","type":"registry:block","title":"Compact Changelog","files":[{"path":"components/blocks/marketing/changelogs/compact-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/compact-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/scroll-area.tsx","type":"registry:ui","target":"components/ui/scroll-area.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"A dense changelog that packs many versions into a tight column. Ideal when you ship often and want the full history visible without heavy scrolling.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-changelogs-expandable-changelog","type":"registry:block","title":"Expandable Changelog","files":[{"path":"components/blocks/marketing/changelogs/expandable-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/expandable-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Collapsed version entries that open on click to reveal full details. Keeps a long release history short while letting readers drill into any update.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-changelogs-grid-changelog","type":"registry:block","title":"Grid Changelog","files":[{"path":"components/blocks/marketing/changelogs/grid-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/grid-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Release entries laid out as cards in a responsive grid. Use it to show recent updates side by side with badges, dates, and short summaries at a glance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-changelogs-grouped-changelog","type":"registry:block","title":"Grouped Changelog","files":[{"path":"components/blocks/marketing/changelogs/grouped-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/grouped-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Updates clustered by month or release so related entries sit together. Good for products with frequent shipping where context across versions matters.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-changelogs-interactive-changelog","type":"registry:block","title":"Interactive Changelog","files":[{"path":"components/blocks/marketing/changelogs/interactive-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/interactive-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A changelog with filters and clickable entries that reveal more detail. Lets visitors explore updates by type and focus on the releases that matter.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-changelogs-minimalist-changelog","type":"registry:block","title":"Minimalist Changelog","files":[{"path":"components/blocks/marketing/changelogs/minimalist-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/minimalist-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A pared back changelog with just dates, versions, and one line per change. Use it when you want updates to feel quiet and stay out of the way.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-changelogs-tabbed-changelog","type":"registry:block","title":"Tabbed Changelog","files":[{"path":"components/blocks/marketing/changelogs/tabbed-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/tabbed-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Release notes organized into tabs by version or category. Lets readers switch between updates without scrolling, keeping each release neatly contained.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-changelogs-table-changelog","type":"registry:block","title":"Table Changelog","files":[{"path":"components/blocks/marketing/changelogs/table-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/table-changelog.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A changelog rendered as a table with columns for version, date, and notes. Use it when readers need to scan and compare many releases quickly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-changelogs-timeline-changelog","type":"registry:block","title":"Timeline Changelog","files":[{"path":"components/blocks/marketing/changelogs/timeline-changelog.tsx","type":"registry:component","target":"components/blocks/marketing/changelogs/timeline-changelog.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A vertical timeline that plots releases in order with dates and notes. Use it to tell the story of a product as it grows version over version.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-contact-sections-center-aligned","type":"registry:block","title":"Center Aligned","files":[{"path":"components/blocks/marketing/contact-sections/center-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/contact-sections/center-aligned.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A center aligned contact form with heading, supporting text, and stacked fields. Drops onto a simple contact page so visitors can send a message fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-contact-sections-split-with-details","type":"registry:block","title":"Split With Details","files":[{"path":"components/blocks/marketing/contact-sections/split-with-details.tsx","type":"registry:component","target":"components/blocks/marketing/contact-sections/split-with-details.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A split layout pairing a contact form with a column of details like email, phone, and hours. Use it when people need a quick way to reach the right team.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-contact-sections-with-map","type":"registry:block","title":"With Map","files":[{"path":"components/blocks/marketing/contact-sections/with-map.tsx","type":"registry:component","target":"components/blocks/marketing/contact-sections/with-map.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A contact section that places a form beside an embedded map of your location. Ideal for a storefront or office that wants visitors to find and reach it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-awards-cta","type":"registry:block","title":"Awards CTA","files":[{"path":"components/blocks/marketing/cta-sections/awards-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/awards-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A call to action that pairs award badges and recognition logos with a signup prompt. Builds trust before the click on a landing or pricing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-banner-with-background","type":"registry:block","title":"Banner With Background","files":[{"path":"components/blocks/marketing/cta-sections/banner-with-background.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/banner-with-background.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A full width banner with a background image, headline, and button. Anchors a campaign message across the top or bottom of any marketing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-case-study-cta","type":"registry:block","title":"Case Study CTA","files":[{"path":"components/blocks/marketing/cta-sections/case-study-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/case-study-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A call to action framed around a customer story with a headline result and link. Use it after proof points to push readers toward booking a demo.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-countdown-timer","type":"registry:block","title":"Countdown Timer","files":[{"path":"components/blocks/marketing/cta-sections/countdown-timer.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/countdown-timer.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A call to action with a live countdown clock beside a headline and button. Drives urgency for a sale, launch, or webinar registration deadline.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-cta-with-testimonial","type":"registry:block","title":"CTA With Testimonial","files":[{"path":"components/blocks/marketing/cta-sections/cta-with-testimonial.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/cta-with-testimonial.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action that places a customer quote and avatar right next to a signup button. Reinforces social proof at the moment a visitor decides.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-faq-cta","type":"registry:block","title":"FAQ CTA","files":[{"path":"components/blocks/marketing/cta-sections/faq-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/faq-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A short FAQ list paired with a closing prompt and button. Answers the last objections and nudges readers to convert at the end of a long page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-feature-grid","type":"registry:block","title":"Feature Grid","files":[{"path":"components/blocks/marketing/cta-sections/feature-grid.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/feature-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action backed by a grid of feature highlights with icons. Recaps the value of a product before inviting visitors to start a free trial.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-gradient-cta","type":"registry:block","title":"Gradient CTA","files":[{"path":"components/blocks/marketing/cta-sections/gradient-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/gradient-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered call to action set on a vivid gradient panel with a headline and button. A bright closing section for a homepage or feature page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-image-with-text","type":"registry:block","title":"Image With Text","files":[{"path":"components/blocks/marketing/cta-sections/image-with-text.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/image-with-text.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action that sets an image beside a headline, body copy, and button. Use it to show a product shot while inviting the visitor to act.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-integrations-cta","type":"registry:block","title":"Integrations CTA","files":[{"path":"components/blocks/marketing/cta-sections/integrations-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/integrations-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action surrounded by logos of supported tools and platforms. Reassures teams about compatibility before they sign up and connect apps.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-newsletter-form","type":"registry:block","title":"Newsletter Form","files":[{"path":"components/blocks/marketing/cta-sections/newsletter-form.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/newsletter-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A signup section with an email input and subscribe button under a short pitch. Collects leads for a newsletter, waitlist, or product updates.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-quick-contact-cta","type":"registry:block","title":"Quick Contact CTA","files":[{"path":"components/blocks/marketing/cta-sections/quick-contact-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/quick-contact-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A compact contact prompt with a short form or button to reach the team. Drops into a footer or sidebar so visitors can get in touch fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-simple-centered","type":"registry:block","title":"Simple Centered","files":[{"path":"components/blocks/marketing/cta-sections/simple-centered.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/simple-centered.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered call to action with a headline, supporting line, and button. A clean closing section to end a landing page and prompt the next step.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-split-with-image","type":"registry:block","title":"Split With Image","files":[{"path":"components/blocks/marketing/cta-sections/split-with-image.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/split-with-image.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A two column call to action with copy on one side and an image on the other. Balances message and visual to invite a signup or demo request.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-stats-cta","type":"registry:block","title":"Stats CTA","files":[{"path":"components/blocks/marketing/cta-sections/stats-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/stats-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action that leads with key metrics like users or uptime, then a button. Uses hard numbers to convince visitors before they commit.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-tab-cta","type":"registry:block","title":"Tab CTA","files":[{"path":"components/blocks/marketing/cta-sections/tab-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/tab-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A call to action with tabbed content that swaps messages by audience or use case. Lets visitors pick a path before clicking the matching button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-cta-sections-video-cta","type":"registry:block","title":"Video CTA","files":[{"path":"components/blocks/marketing/cta-sections/video-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/video-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action built around an embedded video with a headline and button. Plays a quick demo or pitch, then invites the viewer to start now.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-cta-sections-zigzag-cta","type":"registry:block","title":"Zigzag CTA","files":[{"path":"components/blocks/marketing/cta-sections/zigzag-cta.tsx","type":"registry:component","target":"components/blocks/marketing/cta-sections/zigzag-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call to action with alternating text and image rows that lead into a button. Walks readers through benefits before the final closing prompt.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-faq-sections-accordion-with-background","type":"registry:block","title":"Accordion With Background","files":[{"path":"components/blocks/marketing/faq-sections/accordion-with-background.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/accordion-with-background.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion FAQ set against a tinted background panel. Each question expands to reveal its answer, keeping long lists of details tidy and easy to scan.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-faq-sections-card-grid","type":"registry:block","title":"Card Grid","files":[{"path":"components/blocks/marketing/faq-sections/card-grid.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/card-grid.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A grid of question cards, each holding one query and its answer inline. Lays out frequent questions clearly so visitors find what they need at a glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-faq-sections-center-aligned","type":"registry:block","title":"Center Aligned","files":[{"path":"components/blocks/marketing/faq-sections/center-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/center-aligned.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A centered FAQ column with a heading and stacked accordion items. Keeps focus on the questions and works well as a standalone support section on any page.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-faq-sections-code-snippets","type":"registry:block","title":"Code Snippets","files":[{"path":"components/blocks/marketing/faq-sections/code-snippets.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/code-snippets.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"An FAQ layout with formatted code blocks inside answers. Built for developer docs where responses need syntax examples, commands, or configuration shown.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-faq-sections-contact-form","type":"registry:block","title":"Contact Form","files":[{"path":"components/blocks/marketing/faq-sections/contact-form.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/contact-form.tsx"},{"path":"components/ui/field.tsx","type":"registry:ui","target":"components/ui/field.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"An FAQ section paired with a contact form, so visitors read common answers and reach out when their question is not covered, all within one tidy section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-faq-sections-image-illustrated","type":"registry:block","title":"Image Illustrated","files":[{"path":"components/blocks/marketing/faq-sections/image-illustrated.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/image-illustrated.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An FAQ section with a supporting illustration beside the question list. Adds visual context and warmth to a help area while answers stay easy to read.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-faq-sections-right-aligned","type":"registry:block","title":"Right Aligned","files":[{"path":"components/blocks/marketing/faq-sections/right-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/right-aligned.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A two column FAQ with the heading and intro on the left and accordion items on the right. Balances explanation and detail across a wide support section.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-faq-sections-search-filter","type":"registry:block","title":"Search Filter","files":[{"path":"components/blocks/marketing/faq-sections/search-filter.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/search-filter.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An FAQ section with a search field that filters questions as you type. Helps visitors jump straight to the answer they want across a long question list.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-faq-sections-sidebar-navigation","type":"registry:block","title":"Sidebar Navigation","files":[{"path":"components/blocks/marketing/faq-sections/sidebar-navigation.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/sidebar-navigation.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"An FAQ layout with a sidebar of categories beside the answers. Lets visitors switch topics quickly and keeps large help sections organized and navigable.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-faq-sections-simple-2-cols-grid","type":"registry:block","title":"Simple 2 Cols Grid","files":[{"path":"components/blocks/marketing/faq-sections/simple-2-cols-grid.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/simple-2-cols-grid.tsx"}],"description":"A plain two column grid of questions and answers. A compact way to cover many topics at once, ideal for a quick reference block near a page footer."},{"name":"marketing-faq-sections-simple-with-divider-and-icon","type":"registry:block","title":"Simple With Divider And Icon","files":[{"path":"components/blocks/marketing/faq-sections/simple-with-divider-and-icon.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/simple-with-divider-and-icon.tsx"}],"description":"A clean FAQ list with an icon by each question and dividers between rows. Keeps a long set of answers readable and clearly separated on any support page.","dependencies":["lucide-react"]},{"name":"marketing-faq-sections-tabbed-categories","type":"registry:block","title":"Tabbed Categories","files":[{"path":"components/blocks/marketing/faq-sections/tabbed-categories.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/tabbed-categories.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"An FAQ section with tabs that group questions by category. Visitors pick a topic and see only relevant answers, keeping a broad help area uncluttered.","dependencies":["lucide-react","radix-ui"]},{"name":"marketing-faq-sections-timeline-faq","type":"registry:block","title":"Timeline FAQ","files":[{"path":"components/blocks/marketing/faq-sections/timeline-faq.tsx","type":"registry:component","target":"components/blocks/marketing/faq-sections/timeline-faq.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"An FAQ laid out as a vertical timeline, walking visitors through questions in order. Suited to onboarding or step by step guides where sequence matters.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-3d-cards","type":"registry:block","title":"3D Cards","files":[{"path":"components/blocks/marketing/feature-sections/3d-cards.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/3d-cards.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Feature cards that tilt in 3D as the cursor moves, each holding an icon, title, and copy. Adds depth to a landing page when you want highlights to feel tactile.","dependencies":["lucide-react"]},{"name":"marketing-feature-sections-card-grid","type":"registry:block","title":"Card Grid","files":[{"path":"components/blocks/marketing/feature-sections/card-grid.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/card-grid.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A tidy grid of feature cards, each with an icon, heading, and short description. Lays out several product capabilities at once for a clean overview section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-accordion","type":"registry:block","title":"Feature Accordion","files":[{"path":"components/blocks/marketing/feature-sections/feature-accordion.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Stacked feature panels that expand on click to reveal detail and a paired visual. Lets visitors drill into one capability at a time without crowding the page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-chat","type":"registry:block","title":"Feature Chat","files":[{"path":"components/blocks/marketing/feature-sections/feature-chat.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-chat.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A feature section styled as a chat thread, pairing message bubbles with copy. Built to show a messaging or support product talking in real conversation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-comparison","type":"registry:block","title":"Feature Comparison","files":[{"path":"components/blocks/marketing/feature-sections/feature-comparison.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Sets two options side by side with checkmarks and notes per row. Use it to contrast your product against an alternative and make the better choice obvious.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-stats","type":"registry:block","title":"Feature Stats","files":[{"path":"components/blocks/marketing/feature-sections/feature-stats.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-stats.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Feature copy paired with bold metrics like uptime, users, or speed. Backs your claims with numbers and builds trust on a homepage or product overview.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-timeline","type":"registry:block","title":"Feature Timeline","files":[{"path":"components/blocks/marketing/feature-sections/feature-timeline.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A vertical timeline that walks through features or milestones in sequence. Ideal for telling how a product flow works or how your story unfolded over time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-videos","type":"registry:block","title":"Feature Videos","files":[{"path":"components/blocks/marketing/feature-sections/feature-videos.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-videos.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A feature layout built around short video clips, each captioned with a benefit. Best when a moving demo explains the value faster than text alone could.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-feature-wizard","type":"registry:block","title":"Feature Wizard","files":[{"path":"components/blocks/marketing/feature-sections/feature-wizard.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/feature-wizard.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A guided, multi step layout that reveals features as the visitor advances. Useful for onboarding copy or walking through a setup flow one screen at a time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-grid-hover","type":"registry:block","title":"Grid Hover","files":[{"path":"components/blocks/marketing/feature-sections/grid-hover.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/grid-hover.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A feature grid where each cell reveals more copy and a glow on hover. Keeps the section compact at rest, then rewards visitors who explore each capability.","dependencies":["lucide-react"]},{"name":"marketing-feature-sections-simple","type":"registry:block","title":"Simple","files":[{"path":"components/blocks/marketing/feature-sections/simple.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/simple.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A clean feature section with a heading, supporting text, and a short list of points. Reach for it when you want clarity over decoration on a marketing page.","dependencies":["lucide-react"]},{"name":"marketing-feature-sections-steps","type":"registry:block","title":"Steps","files":[{"path":"components/blocks/marketing/feature-sections/steps.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/steps.tsx"}],"description":"Numbered steps that lay out how your product works from start to finish. Drop it on a homepage to turn a process into an easy three or four part story."},{"name":"marketing-feature-sections-terminal","type":"registry:block","title":"Terminal","files":[{"path":"components/blocks/marketing/feature-sections/terminal.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/terminal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A feature section featuring a mock terminal with typed commands and output. Built for developer tools where showing real CLI usage sells the value fast.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-feature-sections-with-carousel","type":"registry:block","title":"With Carousel","files":[{"path":"components/blocks/marketing/feature-sections/with-carousel.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/with-carousel.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Feature highlights in a swipeable carousel, one slide per capability with copy and a visual. Fits many features into a small space without a long scroll.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-with-comparison","type":"registry:block","title":"With Comparison","files":[{"path":"components/blocks/marketing/feature-sections/with-comparison.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/with-comparison.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A feature block that places before and after states next to each other. Use it to show the change your product brings and let the difference speak plainly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-with-images","type":"registry:block","title":"With Images","files":[{"path":"components/blocks/marketing/feature-sections/with-images.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/with-images.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Alternating rows of feature copy beside supporting images. A reliable pattern for explaining several capabilities while keeping the page lively and balanced.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-feature-sections-with-stats","type":"registry:block","title":"With Stats","files":[{"path":"components/blocks/marketing/feature-sections/with-stats.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/with-stats.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Feature descriptions interleaved with headline numbers and labels. Pairs the what with the proof so visitors trust the results on a product or pricing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-feature-sections-with-tabs","type":"registry:block","title":"With Tabs","files":[{"path":"components/blocks/marketing/feature-sections/with-tabs.tsx","type":"registry:component","target":"components/blocks/marketing/feature-sections/with-tabs.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Tabbed feature panels that swap content and visuals as visitors switch tabs. Organizes many capabilities into one compact, tidy section that stays readable.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-footers-logo-cloud","type":"registry:block","title":"Logo Cloud","files":[{"path":"components/blocks/marketing/footers/logo-cloud.tsx","type":"registry:component","target":"components/blocks/marketing/footers/logo-cloud.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer with a row of partner and customer logos above the navigation links. Adds social proof and brand trust at the bottom of a landing page."},{"name":"marketing-footers-minimal","type":"registry:block","title":"Minimal","files":[{"path":"components/blocks/marketing/footers/minimal.tsx","type":"registry:component","target":"components/blocks/marketing/footers/minimal.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A compact footer with a single line of copyright text and a few essential links. Keeps the bottom of an app or docs page quiet and out of the way.","dependencies":["lucide-react"]},{"name":"marketing-footers-multi-column","type":"registry:block","title":"Multi Column","files":[{"path":"components/blocks/marketing/footers/multi-column.tsx","type":"registry:component","target":"components/blocks/marketing/footers/multi-column.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer split into grouped link columns for products, company, and resources. Organizes deep site navigation on a large marketing or app homepage.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-footers-simple","type":"registry:block","title":"Simple","files":[{"path":"components/blocks/marketing/footers/simple.tsx","type":"registry:component","target":"components/blocks/marketing/footers/simple.tsx"}],"description":"A footer pairing a logo and short tagline with a tidy row of page links. Rounds off a small business or portfolio site without crowding the layout."},{"name":"marketing-footers-subscribe","type":"registry:block","title":"Subscribe","files":[{"path":"components/blocks/marketing/footers/subscribe.tsx","type":"registry:component","target":"components/blocks/marketing/footers/subscribe.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer with an email newsletter form beside the usual navigation links. Captures signups while visitors are leaving the bottom of your site.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-gallery-carousel-gallery","type":"registry:block","title":"Carousel Gallery","files":[{"path":"components/blocks/marketing/gallery/carousel-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/carousel-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A swipeable carousel that steps through images one at a time. Use it to feature product shots or photos in a compact space on any landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-gallery-filmstrip-gallery","type":"registry:block","title":"Filmstrip Gallery","files":[{"path":"components/blocks/marketing/gallery/filmstrip-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/filmstrip-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A horizontal filmstrip of thumbnails with a larger preview above. Ideal for browsing a photo set or product angles while keeping every frame in view.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-gallery-fullscreen-gallery","type":"registry:block","title":"Fullscreen Gallery","files":[{"path":"components/blocks/marketing/gallery/fullscreen-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/fullscreen-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A fullscreen gallery that fills the viewport with one image at a time. Good for immersive photo stories, lookbooks, or a striking visual showcase.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-gallery-grid-gallery","type":"registry:block","title":"Grid Gallery","files":[{"path":"components/blocks/marketing/gallery/grid-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/grid-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A responsive grid of evenly sized image tiles. Use it to display many photos, products, or case studies at once with a clean, scannable layout.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-gallery-immersive-gallery","type":"registry:block","title":"Immersive Gallery","files":[{"path":"components/blocks/marketing/gallery/immersive-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/immersive-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"An edge to edge gallery with large visuals and smooth motion. Use it to surround visitors in your photos or brand imagery on a campaign page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-gallery-polaroid-gallery","type":"registry:block","title":"Polaroid Gallery","files":[{"path":"components/blocks/marketing/gallery/polaroid-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/polaroid-gallery.tsx"}],"description":"A scattered set of polaroid style cards with captions and slight tilts. Great for adding a casual, personal feel to an about page or event recap.","dependencies":["lucide-react"]},{"name":"marketing-gallery-portfolio-gallery","type":"registry:block","title":"Portfolio Gallery","files":[{"path":"components/blocks/marketing/gallery/portfolio-gallery.tsx","type":"registry:component","target":"components/blocks/marketing/gallery/portfolio-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A portfolio layout that pairs project images with titles and short notes. Use it to present work, case studies, or a creative showcase to clients.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-booking-form","type":"registry:block","title":"Booking Form","files":[{"path":"components/blocks/marketing/hero-forms/booking-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/booking-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/popover.tsx","type":"registry:ui","target":"components/ui/popover.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/calendar.tsx","type":"registry:ui","target":"components/ui/calendar.tsx"}],"description":"A hero with a booking form for dates, times, and guest details next to a headline. Lets visitors reserve a slot the moment they land on the page.","dependencies":["class-variance-authority","date-fns","lucide-react","radix-ui","react-day-picker"]},{"name":"marketing-hero-forms-center-aligned-search-with-tags","type":"registry:block","title":"Center Aligned Search With Tags","files":[{"path":"components/blocks/marketing/hero-forms/center-aligned-search-with-tags.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/center-aligned-search-with-tags.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered hero built around a search field with popular tags below it. Helps visitors find what they need fast on a directory or marketplace home.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-center-aligned-with-a-form","type":"registry:block","title":"Center Aligned With A Form","files":[{"path":"components/blocks/marketing/hero-forms/center-aligned-with-a-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/center-aligned-with-a-form.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered hero pairing a headline and subtext with a short inline form. Collects an email or signup in one view to start onboarding immediately.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-forms-contact-form-with-background","type":"registry:block","title":"Contact Form With Background","files":[{"path":"components/blocks/marketing/hero-forms/contact-form-with-background.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/contact-form-with-background.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A hero with a full contact form set over a styled background image. Invites visitors to send a message or request a quote without leaving the top.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-contest-entry-form","type":"registry:block","title":"Contest Entry Form","files":[{"path":"components/blocks/marketing/hero-forms/contest-entry-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/contest-entry-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a contest entry form for name, email, and answer fields. Drives signups and excitement around a giveaway or promotional campaign.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-early-access-form","type":"registry:block","title":"Early Access Form","files":[{"path":"components/blocks/marketing/hero-forms/early-access-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/early-access-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with an early access form and a single email field beside the pitch. Builds a waitlist for an upcoming product before the public launch.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-event-registration-countdown","type":"registry:block","title":"Event Registration Countdown","files":[{"path":"components/blocks/marketing/hero-forms/event-registration-countdown.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/event-registration-countdown.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A hero combining a registration form with a live countdown timer. Pushes visitors to claim a spot before an event or sale window closes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-feedback-survey-form","type":"registry:block","title":"Feedback Survey Form","files":[{"path":"components/blocks/marketing/hero-forms/feedback-survey-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/feedback-survey-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A hero with a feedback survey form using ratings and short answers. Gathers visitor opinions on a product or service in a single focused view.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-floating-card-with-gradient","type":"registry:block","title":"Floating Card With Gradient","files":[{"path":"components/blocks/marketing/hero-forms/floating-card-with-gradient.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/floating-card-with-gradient.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A hero with a floating form card resting over a soft gradient backdrop. Highlights a signup field and pulls the eye to one clear action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-free-ebook-form","type":"registry:block","title":"Free Ebook Form","files":[{"path":"components/blocks/marketing/hero-forms/free-ebook-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/free-ebook-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a free ebook form that trades an email for a download. Grows a mailing list while offering a guide or report as the incentive.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-free-trial-signup-form","type":"registry:block","title":"Free Trial Signup Form","files":[{"path":"components/blocks/marketing/hero-forms/free-trial-signup-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/free-trial-signup-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a free trial signup form for email and password fields. Starts new accounts the moment a visitor decides to try the product.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-image-and-form","type":"registry:block","title":"Image And Form","files":[{"path":"components/blocks/marketing/hero-forms/image-and-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/image-and-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A split hero with a product image on one side and a signup form on the other. Balances visual proof with a clear path to start using the product.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-forms-job-application-form","type":"registry:block","title":"Job Application Form","files":[{"path":"components/blocks/marketing/hero-forms/job-application-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/job-application-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A hero with a job application form for contact details and a resume upload. Lets candidates apply right from the top of a careers page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-newsletter-subscription","type":"registry:block","title":"Newsletter Subscription","files":[{"path":"components/blocks/marketing/hero-forms/newsletter-subscription.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/newsletter-subscription.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A hero with a newsletter subscription field and a short value pitch. Turns first time visitors into subscribers with one quick email entry.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-newsletter-with-social-proof","type":"registry:block","title":"Newsletter With Social Proof","files":[{"path":"components/blocks/marketing/hero-forms/newsletter-with-social-proof.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/newsletter-with-social-proof.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A hero pairing a newsletter form with subscriber counts and logos. Uses social proof to convince visitors the list is worth joining today.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-product-customizer-form","type":"registry:block","title":"Product Customizer Form","files":[{"path":"components/blocks/marketing/hero-forms/product-customizer-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/product-customizer-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A hero with a product customizer form for options like size and color. Lets shoppers configure their choice and preview it before checkout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-quiz-assessment-form","type":"registry:block","title":"Quiz Assessment Form","files":[{"path":"components/blocks/marketing/hero-forms/quiz-assessment-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/quiz-assessment-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A hero with a quiz or assessment form that walks through scored questions. Engages visitors and routes them toward a tailored recommendation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-schedule-demo-form","type":"registry:block","title":"Schedule Demo Form","files":[{"path":"components/blocks/marketing/hero-forms/schedule-demo-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/schedule-demo-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"A hero with a schedule demo form for name, company, and a time slot. Books sales calls with prospects right where they first arrive.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-sign-up-form","type":"registry:block","title":"Sign Up Form","files":[{"path":"components/blocks/marketing/hero-forms/sign-up-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/sign-up-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A hero with a sign up form for email and password beside the headline. Opens new accounts fast so visitors can start using the product now.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-split-screen-multi-step","type":"registry:block","title":"Split Screen Multi Step","files":[{"path":"components/blocks/marketing/hero-forms/split-screen-multi-step.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/split-screen-multi-step.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A split screen hero with a multi step form and a progress indicator. Guides visitors through a longer signup without overwhelming them at once.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-subscription-form-with-toggle","type":"registry:block","title":"Subscription Form With Toggle","files":[{"path":"components/blocks/marketing/hero-forms/subscription-form-with-toggle.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/subscription-form-with-toggle.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A hero with a subscription form and a monthly to yearly billing toggle. Lets visitors pick a plan and price before they start a paid signup.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-two-factor-verification","type":"registry:block","title":"Two Factor Verification","files":[{"path":"components/blocks/marketing/hero-forms/two-factor-verification.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/two-factor-verification.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A hero with a two factor verification form for a one time security code. Confirms identity during signin to keep new accounts safe and secure.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-user-feedback-form","type":"registry:block","title":"User Feedback Form","files":[{"path":"components/blocks/marketing/hero-forms/user-feedback-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/user-feedback-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/radio-group.tsx","type":"registry:ui","target":"components/ui/radio-group.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A hero with a user feedback form for comments, ratings, and contact info. Collects honest input from visitors to guide the next product update.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-forms-webinar-registration-form","type":"registry:block","title":"Webinar Registration Form","files":[{"path":"components/blocks/marketing/hero-forms/webinar-registration-form.tsx","type":"registry:component","target":"components/blocks/marketing/hero-forms/webinar-registration-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a webinar registration form for name, email, and session time. Fills seats for a live session straight from the landing page top.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-3d-isometric-hero","type":"registry:block","title":"3D Isometric Hero","files":[{"path":"components/blocks/marketing/hero-sections/3d-isometric-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/3d-isometric-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a 3D isometric illustration beside a headline and call to action. Adds depth and a modern feel to the top of a product landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-animated-features-hero","type":"registry:block","title":"Animated Features Hero","files":[{"path":"components/blocks/marketing/hero-sections/animated-features-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/animated-features-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero that cycles through key features with motion next to a headline and CTA. Use it to show what your product does the moment a visitor arrives.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-animated-gradient","type":"registry:block","title":"Animated Gradient","files":[{"path":"components/blocks/marketing/hero-sections/animated-gradient.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/animated-gradient.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A hero set on a slowly shifting gradient backdrop with a centered headline and CTA. A colorful, lively opener for SaaS and creative product pages.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-animated-text-hero","type":"registry:block","title":"Animated Text Hero","files":[{"path":"components/blocks/marketing/hero-sections/animated-text-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/animated-text-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero where the headline word swaps through phrases with smooth motion. Highlights several value points in one line at the top of a landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-centred-with-image","type":"registry:block","title":"Centred With Image","files":[{"path":"components/blocks/marketing/hero-sections/centred-with-image.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/centred-with-image.tsx"}],"description":"A centered hero with a headline, subtext, and CTA above a wide product image. A balanced, classic opener for marketing and SaaS landing pages."},{"name":"marketing-hero-sections-chat-preview-hero","type":"registry:block","title":"Chat Preview Hero","files":[{"path":"components/blocks/marketing/hero-sections/chat-preview-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/chat-preview-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A hero pairing a headline and CTA with a live chat conversation preview. Ideal for messaging, support, or AI assistant products you want to demo.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-countdown-hero","type":"registry:block","title":"Countdown Hero","files":[{"path":"components/blocks/marketing/hero-sections/countdown-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/countdown-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a ticking countdown timer beside a headline and CTA. Builds urgency for launches, sales, webinars, and limited time offer landing pages.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-gradient-background","type":"registry:block","title":"Gradient Background","files":[{"path":"components/blocks/marketing/hero-sections/gradient-background.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/gradient-background.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero on a rich gradient background with a centered headline, subtext, and CTA. A bold, color led opener for product and campaign landing pages.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-gradient-mesh-hero","type":"registry:block","title":"Gradient Mesh Hero","files":[{"path":"components/blocks/marketing/hero-sections/gradient-mesh-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/gradient-mesh-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a soft mesh gradient behind a centered headline and CTA. Gives a calm, premium backdrop to SaaS, design, and startup landing pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-image-carousel-hero","type":"registry:block","title":"Image Carousel Hero","files":[{"path":"components/blocks/marketing/hero-sections/image-carousel-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/image-carousel-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a rotating image carousel next to a headline and CTA. Shows several product shots or screens at the top of a landing page in turn.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-image-with-reviews","type":"registry:block","title":"Image With Reviews","files":[{"path":"components/blocks/marketing/hero-sections/image-with-reviews.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/image-with-reviews.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero placing a product image alongside short customer reviews and a CTA. Pairs your pitch with proof to win trust on a landing page right away.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-interactive-metrics","type":"registry:block","title":"Interactive Metrics","files":[{"path":"components/blocks/marketing/hero-sections/interactive-metrics.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/interactive-metrics.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with live, interactive stat counters beside a headline and CTA. Use it to make growth, usage, or results tangible on a SaaS landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-mobile-app-hero","type":"registry:block","title":"Mobile App Hero","files":[{"path":"components/blocks/marketing/hero-sections/mobile-app-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/mobile-app-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a phone mockup, app store badges, and a headline. Built to drive downloads at the top of a mobile app marketing or launch page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-multi-step-cta-hero","type":"registry:block","title":"Multi-Step CTA Hero","files":[{"path":"components/blocks/marketing/hero-sections/multi-step-cta-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/multi-step-cta-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A hero that guides visitors through a short multi step call to action. Use it to qualify leads or onboard users right from a landing page header.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-particles-background-hero","type":"registry:block","title":"Particles Background Hero","files":[{"path":"components/blocks/marketing/hero-sections/particles-background-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/particles-background-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with animated particles drifting behind a centered headline and CTA. A dynamic, tech forward opener for software and startup landing pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-product-carousel-hero","type":"registry:block","title":"Product Carousel Hero","files":[{"path":"components/blocks/marketing/hero-sections/product-carousel-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/product-carousel-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a swipeable product carousel beside a headline and CTA. Showcases a range of items or plans at the top of an ecommerce landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-progress-tracker-hero","type":"registry:block","title":"Progress Tracker Hero","files":[{"path":"components/blocks/marketing/hero-sections/progress-tracker-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/progress-tracker-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A hero with a step progress tracker next to a headline and CTA. Use it to show a setup flow or journey at the top of an onboarding landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-search-bar","type":"registry:block","title":"Search Bar","files":[{"path":"components/blocks/marketing/hero-sections/search-bar.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/search-bar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A hero centered on a prominent search bar below a headline and subtext. Ideal for directories, docs, marketplaces, and content heavy landing pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-simple-centred","type":"registry:block","title":"Simple Centred","files":[{"path":"components/blocks/marketing/hero-sections/simple-centred.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/simple-centred.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A clean centered hero with a headline, short subtext, and a single CTA. A minimal, fast loading opener that suits almost any landing page or product.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-social-proof-hero","type":"registry:block","title":"Social Proof Hero","files":[{"path":"components/blocks/marketing/hero-sections/social-proof-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/social-proof-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A hero pairing a headline and CTA with logos, ratings, and user counts. Leads with credibility to reassure visitors at the top of a landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-split-content-hero","type":"registry:block","title":"Split Content Hero","files":[{"path":"components/blocks/marketing/hero-sections/split-content-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/split-content-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a two column split, text and CTA on one side, content on the other. A flexible opener that balances your message and a visual cleanly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-split-image-hero","type":"registry:block","title":"Split Image Hero","files":[{"path":"components/blocks/marketing/hero-sections/split-image-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/split-image-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A hero split into a text column and a full height product image. A direct, balanced opener that pairs your pitch with a visual on a landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-split-with-video","type":"registry:block","title":"Split With Video","files":[{"path":"components/blocks/marketing/hero-sections/split-with-video.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/split-with-video.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A hero split between a headline with CTA and an embedded product video. Use it to show your product in motion at the top of a landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-testimonial-carousel","type":"registry:block","title":"Testimonial Carousel","files":[{"path":"components/blocks/marketing/hero-sections/testimonial-carousel.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/testimonial-carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A hero with a rotating carousel of customer testimonials and a CTA. Opens a landing page with real quotes to build trust before the pitch lands.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-trust-indicators","type":"registry:block","title":"Trust Indicators","files":[{"path":"components/blocks/marketing/hero-sections/trust-indicators.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/trust-indicators.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A hero leading with security badges, certifications, and partner logos. Reassures cautious buyers at the top of a landing or enterprise sales page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-video-background-hero","type":"registry:block","title":"Video Background Hero","files":[{"path":"components/blocks/marketing/hero-sections/video-background-hero.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/video-background-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a looping video filling the background behind a headline and CTA. Sets an immersive, cinematic tone at the top of a landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-hero-sections-with-3d-mockup","type":"registry:block","title":"With 3D Mockup","files":[{"path":"components/blocks/marketing/hero-sections/with-3d-mockup.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-3d-mockup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A hero featuring a rotating 3D device mockup beside a headline and CTA. Presents your app or product with depth on a modern landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-api-preview","type":"registry:block","title":"With API Preview","files":[{"path":"components/blocks/marketing/hero-sections/with-api-preview.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-api-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero pairing a headline and CTA with a live API request and response preview. Built for developer tools and platforms aimed at technical buyers.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-app-showcase","type":"registry:block","title":"With App Showcase","files":[{"path":"components/blocks/marketing/hero-sections/with-app-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-app-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero showcasing app screens in a layered layout next to a headline and CTA. Use it to highlight the interface on a software product landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-bento-grid","type":"registry:block","title":"With Bento Grid","files":[{"path":"components/blocks/marketing/hero-sections/with-bento-grid.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-bento-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a bento grid of feature tiles below a headline and CTA. Summarizes several capabilities at a glance on a modern SaaS landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-code-preview","type":"registry:block","title":"With Code Preview","files":[{"path":"components/blocks/marketing/hero-sections/with-code-preview.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-code-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero pairing a headline and CTA with a syntax highlighted code snippet. Speaks directly to developers at the top of a tool or library landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-content-tabs","type":"registry:block","title":"With Content Tabs","files":[{"path":"components/blocks/marketing/hero-sections/with-content-tabs.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-content-tabs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A hero with tabbed panels that swap content beneath a headline and CTA. Use it to present several use cases or features in one compact area.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-dashboard","type":"registry:block","title":"With Dashboard","files":[{"path":"components/blocks/marketing/hero-sections/with-dashboard.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-dashboard.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero placing a product dashboard screenshot next to a headline and CTA. Shows your interface and data at the top of a SaaS or analytics page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-email-input","type":"registry:block","title":"With Email Input","files":[{"path":"components/blocks/marketing/hero-sections/with-email-input.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-email-input.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A hero centered on an inline email capture form below a headline and subtext. Ideal for waitlists, newsletters, and early access landing pages.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-feature-cards","type":"registry:block","title":"With Feature Cards","files":[{"path":"components/blocks/marketing/hero-sections/with-feature-cards.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-feature-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A hero with a row of feature cards beneath a headline and CTA. Breaks your key benefits into scannable tiles at the top of a landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-feature-timeline","type":"registry:block","title":"With Feature Timeline","files":[{"path":"components/blocks/marketing/hero-sections/with-feature-timeline.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-feature-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero with a feature timeline beside a headline and CTA. Walks visitors through a workflow or roadmap at the top of a product landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-integration-showcase","type":"registry:block","title":"With Integration Showcase","files":[{"path":"components/blocks/marketing/hero-sections/with-integration-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-integration-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero showing a grid of integration logos beside a headline and CTA. Highlights the tools your product connects to on a platform landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-product-screenshots","type":"registry:block","title":"With Product Screenshots","files":[{"path":"components/blocks/marketing/hero-sections/with-product-screenshots.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-product-screenshots.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A hero with framed product screenshots next to a headline and CTA. Shows the real interface at the top of a software or SaaS landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-team-grid","type":"registry:block","title":"With Team Grid","files":[{"path":"components/blocks/marketing/hero-sections/with-team-grid.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-team-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A hero pairing a headline and CTA with a grid of team member photos. Adds a human face to about, agency, and company landing pages from the start.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-hero-sections-with-terminal","type":"registry:block","title":"With Terminal","files":[{"path":"components/blocks/marketing/hero-sections/with-terminal.tsx","type":"registry:component","target":"components/blocks/marketing/hero-sections/with-terminal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A hero pairing a headline and CTA with an animated terminal window. Speaks to developers and shows install or usage commands on a tool landing page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-icon-sections-2-cols-grid","type":"registry:block","title":"2 Cols Grid","files":[{"path":"components/blocks/marketing/icon-sections/2-cols-grid.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/2-cols-grid.tsx"}],"description":"A two column grid pairing each icon with a heading and short paragraph. Lays out a handful of product features in a clean, balanced reading layout.","dependencies":["lucide-react"]},{"name":"marketing-icon-sections-animated-icon-grid","type":"registry:block","title":"Animated Icon Grid","files":[{"path":"components/blocks/marketing/icon-sections/animated-icon-grid.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/animated-icon-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A grid of feature icons that animate into view on scroll. Adds motion to a list of capabilities so each benefit catches the eye as users read down.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-centred-description-with-icon-blocks","type":"registry:block","title":"Centred Description With Icon Blocks","files":[{"path":"components/blocks/marketing/icon-sections/centred-description-with-icon-blocks.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/centred-description-with-icon-blocks.tsx"}],"description":"A centred intro paragraph above a row of icon blocks. Frames a section theme, then lists supporting features in tidy, evenly spaced columns.","dependencies":["lucide-react"]},{"name":"marketing-icon-sections-circle-icons-centre-aligned","type":"registry:block","title":"Circle Icons Centre Aligned","files":[{"path":"components/blocks/marketing/icon-sections/circle-icons-centre-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/circle-icons-centre-aligned.tsx"}],"description":"Centre aligned icons set in soft circles, each with a title and caption. A friendly way to present three or four core benefits on a landing page.","dependencies":["lucide-react"]},{"name":"marketing-icon-sections-compact-metric-list","type":"registry:block","title":"Compact Metric List","files":[{"path":"components/blocks/marketing/icon-sections/compact-metric-list.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/compact-metric-list.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"A tight vertical list pairing icons with numbers and labels. Shows key metrics in a small footprint, ideal for sidebars or dense feature pages.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-description-on-left-icon-blocks-on-right","type":"registry:block","title":"Description On Left Icon Blocks On Right","files":[{"path":"components/blocks/marketing/icon-sections/description-on-left-icon-blocks-on-right.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/description-on-left-icon-blocks-on-right.tsx"}],"description":"A split layout with a section heading and copy on the left and stacked icon blocks on the right. Pairs a narrative pitch with scannable feature points.","dependencies":["lucide-react"]},{"name":"marketing-icon-sections-expandable-icon-cards","type":"registry:block","title":"Expandable Icon Cards","files":[{"path":"components/blocks/marketing/icon-sections/expandable-icon-cards.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/expandable-icon-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Icon cards that expand on click to reveal more detail. Keeps the section compact while letting curious visitors dig into any feature they choose.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-feature-icon-tabs","type":"registry:block","title":"Feature Icon Tabs","files":[{"path":"components/blocks/marketing/icon-sections/feature-icon-tabs.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/feature-icon-tabs.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/dropdown-menu.tsx","type":"registry:ui","target":"components/ui/dropdown-menu.tsx"}],"description":"Icon tabs that switch between feature panels in place. Lets visitors explore several capabilities without scrolling, one focused view at a time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-horizontal-scrolling-icons","type":"registry:block","title":"Horizontal Scrolling Icons","files":[{"path":"components/blocks/marketing/icon-sections/horizontal-scrolling-icons.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/horizontal-scrolling-icons.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A horizontal strip of icon cards users swipe or scroll through. Fits many features in limited height and reads naturally on mobile screens.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-icon-feature-carousel","type":"registry:block","title":"Icon Feature Carousel","files":[{"path":"components/blocks/marketing/icon-sections/icon-feature-carousel.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/icon-feature-carousel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A carousel rotating through icon features one slide at a time. Highlights a long list of capabilities without crowding the page or overwhelming readers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-icon-stats-grid","type":"registry:block","title":"Icon Stats Grid","files":[{"path":"components/blocks/marketing/icon-sections/icon-stats-grid.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/icon-stats-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A grid of stat cards pairing an icon with a bold number and label. Surfaces growth figures and key results to build trust on a marketing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-icon-tabs-categories","type":"registry:block","title":"Icon Tabs Categories","files":[{"path":"components/blocks/marketing/icon-sections/icon-tabs-categories.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/icon-tabs-categories.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Category tabs marked with icons that filter the features shown below. Helps visitors jump straight to the feature set that matches their needs.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-icon-timeline","type":"registry:block","title":"Icon Timeline","files":[{"path":"components/blocks/marketing/icon-sections/icon-timeline.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/icon-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A vertical timeline with an icon at each step. Walks visitors through a process or product journey in clear order, one milestone after another.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-icons-with-tooltips","type":"registry:block","title":"Icons With Tooltips","files":[{"path":"components/blocks/marketing/icon-sections/icons-with-tooltips.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/icons-with-tooltips.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"}],"description":"A row of icons that reveal a short tooltip on hover. Packs many features into a small space while keeping extra detail one cursor away.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-interactive-icon-showcase","type":"registry:block","title":"Interactive Icon Showcase","files":[{"path":"components/blocks/marketing/icon-sections/interactive-icon-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/interactive-icon-showcase.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/collapsible.tsx","type":"registry:ui","target":"components/ui/collapsible.tsx"}],"description":"An interactive panel where hovering an icon updates the description beside it. Invites visitors to explore features at their own pace and stay engaged.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-metric-cards","type":"registry:block","title":"Metric Cards","files":[{"path":"components/blocks/marketing/icon-sections/metric-cards.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/metric-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A set of cards pairing an icon with a headline metric and caption. Presents results, usage, or savings in confident, easy to scan tiles.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-minimal-stats-tiles","type":"registry:block","title":"Minimal Stats Tiles","files":[{"path":"components/blocks/marketing/icon-sections/minimal-stats-tiles.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/minimal-stats-tiles.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Clean tiles showing an icon, a number, and a short label. A spare way to display a few key stats without distracting from the surrounding copy.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-radial-icon-layout","type":"registry:block","title":"Radial Icon Layout","files":[{"path":"components/blocks/marketing/icon-sections/radial-icon-layout.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/radial-icon-layout.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Icons arranged in a circular, radial pattern around a central label. A distinctive way to show how features connect to one core product idea.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-icon-sections-solid-icon-with-hover-effect","type":"registry:block","title":"Solid Icon With Hover Effect","files":[{"path":"components/blocks/marketing/icon-sections/solid-icon-with-hover-effect.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/solid-icon-with-hover-effect.tsx"}],"description":"Solid filled icons that shift colour or lift on hover. Adds tactile feedback to a feature grid so the section feels responsive as visitors browse.","dependencies":["lucide-react"]},{"name":"marketing-icon-sections-stacked-cards","type":"registry:block","title":"Stacked Cards","files":[{"path":"components/blocks/marketing/icon-sections/stacked-cards.tsx","type":"registry:component","target":"components/blocks/marketing/icon-sections/stacked-cards.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Vertically stacked icon cards, each with a title and short blurb. Reads top to bottom on any screen and keeps a long feature list easy to follow.","dependencies":["lucide-react"]},{"name":"marketing-integrations-api-preview","type":"registry:block","title":"API Preview","files":[{"path":"components/blocks/marketing/integrations/api-preview.tsx","type":"registry:component","target":"components/blocks/marketing/integrations/api-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A code sample panel beside copy that explains your API. Drop it on a developer page to show how integrations connect in only a few short lines.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-integrations-carousel","type":"registry:block","title":"Carousel","files":[{"path":"components/blocks/marketing/integrations/carousel.tsx","type":"registry:component","target":"components/blocks/marketing/integrations/carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A scrolling row of partner and app logos that loops as visitors watch. Place it under a hero to prove your product fits neatly into an existing stack.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"marketing-integrations-category-tabs","type":"registry:block","title":"Category Tabs","files":[{"path":"components/blocks/marketing/integrations/category-tabs.tsx","type":"registry:component","target":"components/blocks/marketing/integrations/category-tabs.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Tabs that sort connected apps by type, so visitors filter integrations to find the one they use. Ideal for a busy marketplace or directory page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-integrations-featured-showcase","type":"registry:block","title":"Featured Showcase","files":[{"path":"components/blocks/marketing/integrations/featured-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/integrations/featured-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A large card spotlighting one key integration with its logo, summary, and a link. Use it to highlight a flagship partner above the full list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-integrations-simple-grid","type":"registry:block","title":"Simple Grid","files":[{"path":"components/blocks/marketing/integrations/simple-grid.tsx","type":"registry:component","target":"components/blocks/marketing/integrations/simple-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A clean grid of integration logos in even rows and columns. Use it on a connections page to display the apps and services your product supports.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-masonry-sections-cards-on-images","type":"registry:block","title":"Cards On Images","files":[{"path":"components/blocks/marketing/masonry-sections/cards-on-images.tsx","type":"registry:component","target":"components/blocks/marketing/masonry-sections/cards-on-images.tsx"}],"description":"A masonry grid of cards layered over images, each with a heading and short text. Showcases a gallery, portfolio, or product collection on a landing page."},{"name":"marketing-pricing-sections-calculator","type":"registry:block","title":"Calculator","files":[{"path":"components/blocks/marketing/pricing-sections/calculator.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/calculator.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A pricing calculator with sliders and inputs that estimate cost from usage. Use it when plans scale by seats, requests, or volume so buyers see real numbers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-cards","type":"registry:block","title":"Cards","files":[{"path":"components/blocks/marketing/pricing-sections/cards.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A row of pricing cards listing plan names, prices, and features with a clear call to action. Drop it on a pricing page to compare tiers at a glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-custom-builder","type":"registry:block","title":"Custom Builder","files":[{"path":"components/blocks/marketing/pricing-sections/custom-builder.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/custom-builder.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A plan builder where buyers pick features and quantities to assemble a quote. Use it for modular products where every customer needs a different mix.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-enterprise","type":"registry:block","title":"Enterprise","files":[{"path":"components/blocks/marketing/pricing-sections/enterprise.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/enterprise.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A pricing layout pairing standard tiers with a contact sales panel for large accounts. Use it when bigger deals need custom quotes and a human conversation.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-feature-grid","type":"registry:block","title":"Feature Grid","files":[{"path":"components/blocks/marketing/pricing-sections/feature-grid.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/feature-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A pricing table mapping every feature to each plan across rows and columns. Use it when buyers want to confirm exactly what each tier includes before paying.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-horizontal","type":"registry:block","title":"Horizontal","files":[{"path":"components/blocks/marketing/pricing-sections/horizontal.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/horizontal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/scroll-area.tsx","type":"registry:ui","target":"components/ui/scroll-area.tsx"}],"description":"A wide pricing row that lays plans side by side in a single band. Fits narrow page slots and pages where you want plans visible without much scrolling.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-interactive","type":"registry:block","title":"Interactive","files":[{"path":"components/blocks/marketing/pricing-sections/interactive.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/interactive.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/slider.tsx","type":"registry:ui","target":"components/ui/slider.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A pricing section that updates prices and highlights as buyers select options. Use it when choices like seats or add ons should reflect cost instantly.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-minimalist","type":"registry:block","title":"Minimalist","files":[{"path":"components/blocks/marketing/pricing-sections/minimalist.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/minimalist.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A pared back pricing layout with generous spacing, plain type, and one clear price. Use it when a single plan or clean brand needs no visual clutter.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-modern","type":"registry:block","title":"Modern","files":[{"path":"components/blocks/marketing/pricing-sections/modern.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/modern.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A contemporary pricing section with bold cards, soft shadows, and accent gradients. Use it to give a polished, current feel to a product or SaaS page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-seasonal","type":"registry:block","title":"Seasonal","files":[{"path":"components/blocks/marketing/pricing-sections/seasonal.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/seasonal.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A pricing section with promotional banners and limited time discounts on each plan. Use it for holiday sales, launches, and campaigns that push urgency.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-simple","type":"registry:block","title":"Simple","files":[{"path":"components/blocks/marketing/pricing-sections/simple.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/simple.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A clean pricing section showing a few plans with price, features, and a button each. Use it when you want fast comprehension without extra decoration.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-stacked","type":"registry:block","title":"Stacked","files":[{"path":"components/blocks/marketing/pricing-sections/stacked.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/stacked.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A pricing layout that stacks plan cards vertically for narrow columns and phones. Use it on mobile first pages or sidebars where width is limited.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-testimonial","type":"registry:block","title":"Testimonial","files":[{"path":"components/blocks/marketing/pricing-sections/testimonial.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/testimonial.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A pricing section that pairs plan cards with customer quotes and logos. Use it to add social proof right where buyers weigh price and decide to commit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-pricing-sections-toggle","type":"registry:block","title":"Toggle","files":[{"path":"components/blocks/marketing/pricing-sections/toggle.tsx","type":"registry:component","target":"components/blocks/marketing/pricing-sections/toggle.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A pricing section with a monthly and yearly switch that updates every plan price. Use it to show annual savings and let buyers pick a billing cycle fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-achievement-bars","type":"registry:block","title":"Achievement Bars","files":[{"path":"components/blocks/marketing/stats/achievement-bars.tsx","type":"registry:component","target":"components/blocks/marketing/stats/achievement-bars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"Horizontal bars that fill to show milestones reached against a target. Drop it on a results page to visualize goals hit and progress toward each one.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-card-group","type":"registry:block","title":"Card Group","files":[{"path":"components/blocks/marketing/stats/card-group.tsx","type":"registry:component","target":"components/blocks/marketing/stats/card-group.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A cluster of stat cards with a big number, label, and short caption in each. Use it to spotlight key metrics across a landing page in a clean grid.","dependencies":["radix-ui"]},{"name":"marketing-stats-circular-progress","type":"registry:block","title":"Circular Progress","files":[{"path":"components/blocks/marketing/stats/circular-progress.tsx","type":"registry:component","target":"components/blocks/marketing/stats/circular-progress.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Ring shaped progress dials that animate to a percentage value. Good for dashboards or landing pages that report completion rates and capacity at a glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-comparison-metrics","type":"registry:block","title":"Comparison Metrics","files":[{"path":"components/blocks/marketing/stats/comparison-metrics.tsx","type":"registry:component","target":"components/blocks/marketing/stats/comparison-metrics.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Two columns of numbers placed side by side to contrast before and after results. Use it to show the lift your product delivers over the old way.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-comparison-stats","type":"registry:block","title":"Comparison Stats","files":[{"path":"components/blocks/marketing/stats/comparison-stats.tsx","type":"registry:component","target":"components/blocks/marketing/stats/comparison-stats.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Paired figures with labels that weigh your offering against a baseline. Great for sales pages that need to make the gain feel concrete and credible.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-customer-testimonial","type":"registry:block","title":"Customer Testimonial","files":[{"path":"components/blocks/marketing/stats/customer-testimonial.tsx","type":"registry:component","target":"components/blocks/marketing/stats/customer-testimonial.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A quote from a customer next to the numbers their team reached with you. Use it to pair social proof with hard results on a case study page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-funnel-stats","type":"registry:block","title":"Funnel Stats","files":[{"path":"components/blocks/marketing/stats/funnel-stats.tsx","type":"registry:component","target":"components/blocks/marketing/stats/funnel-stats.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A stepped funnel showing how many visitors move from view to signup to paid. Use it to explain conversion and where users drop off in your flow.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-stats-gradient-grid","type":"registry:block","title":"Gradient Grid","files":[{"path":"components/blocks/marketing/stats/gradient-grid.tsx","type":"registry:component","target":"components/blocks/marketing/stats/gradient-grid.tsx"}],"description":"A grid of stat tiles washed in soft gradients for a vivid, modern look. Use it to display headline metrics when you want the section to feel premium.","dependencies":["lucide-react"]},{"name":"marketing-stats-growth-timeline","type":"registry:block","title":"Growth Timeline","files":[{"path":"components/blocks/marketing/stats/growth-timeline.tsx","type":"registry:component","target":"components/blocks/marketing/stats/growth-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A vertical timeline pairing dates with the numbers you hit at each stage. Use it to chart company momentum on an about page or investor deck.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-horizontal-with-dividers","type":"registry:block","title":"Horizontal With Dividers","files":[{"path":"components/blocks/marketing/stats/horizontal-with-dividers.tsx","type":"registry:component","target":"components/blocks/marketing/stats/horizontal-with-dividers.tsx"}],"description":"A single row of figures split by thin vertical dividers for a tidy summary. Use it under a hero to surface three or four headline numbers fast.","dependencies":["lucide-react"]},{"name":"marketing-stats-impact-numbers","type":"registry:block","title":"Impact Numbers","files":[{"path":"components/blocks/marketing/stats/impact-numbers.tsx","type":"registry:component","target":"components/blocks/marketing/stats/impact-numbers.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Oversized counters that animate upward as the section scrolls into view. Use it to make reach, users, or revenue feel bold and immediate to readers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-interactive-hover","type":"registry:block","title":"Interactive Hover","files":[{"path":"components/blocks/marketing/stats/interactive-hover.tsx","type":"registry:component","target":"components/blocks/marketing/stats/interactive-hover.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Stat cards that reveal extra detail or a chart when you hover over them. Use it when you want a number to expand into context on a feature page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-metric-cards","type":"registry:block","title":"Metric Cards","files":[{"path":"components/blocks/marketing/stats/metric-cards.tsx","type":"registry:component","target":"components/blocks/marketing/stats/metric-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"}],"description":"Bordered cards each holding one metric, a label, and a trend note. Use it to report KPIs in a structured layout on a homepage or product page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-one-main-with-three-follow-ups","type":"registry:block","title":"One Main With Three Follow Ups","files":[{"path":"components/blocks/marketing/stats/one-main-with-three-follow-ups.tsx","type":"registry:component","target":"components/blocks/marketing/stats/one-main-with-three-follow-ups.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"One large headline number anchored by three smaller supporting stats. Use it to lead with your strongest figure and back it with related proof.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-progress-bars","type":"registry:block","title":"Progress Bars","files":[{"path":"components/blocks/marketing/stats/progress-bars.tsx","type":"registry:component","target":"components/blocks/marketing/stats/progress-bars.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Labeled bars that fill to a percentage to track adoption or completion. Use it on a status page or report to show how far each goal has come.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-stats-simple-3-cols","type":"registry:block","title":"Simple 3 Cols","files":[{"path":"components/blocks/marketing/stats/simple-3-cols.tsx","type":"registry:component","target":"components/blocks/marketing/stats/simple-3-cols.tsx"}],"description":"Three evenly spaced columns each with a number and a short label below. Use it for a clean, balanced stats strip on any marketing or about page."},{"name":"marketing-stats-sparkline-stats","type":"registry:block","title":"Sparkline Stats","files":[{"path":"components/blocks/marketing/stats/sparkline-stats.tsx","type":"registry:component","target":"components/blocks/marketing/stats/sparkline-stats.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/select.tsx","type":"registry:ui","target":"components/ui/select.tsx"}],"description":"Stat cards that pair a current value with a tiny inline trend chart. Use it to show a number and its recent direction together on a dashboard view.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-stats-with-icons","type":"registry:block","title":"Stats With Icons","files":[{"path":"components/blocks/marketing/stats/stats-with-icons.tsx","type":"registry:component","target":"components/blocks/marketing/stats/stats-with-icons.tsx"}],"description":"Each figure sits beside an icon that signals what the number measures. Use it to make a stats row scannable and add visual cues to every metric.","dependencies":["lucide-react"]},{"name":"marketing-stats-timeline-stats","type":"registry:block","title":"Timeline Stats","files":[{"path":"components/blocks/marketing/stats/timeline-stats.tsx","type":"registry:component","target":"components/blocks/marketing/stats/timeline-stats.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"Key numbers plotted along a horizontal timeline of moments and dates. Use it to tell a growth story across quarters on an about or press page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-stats-trust-indicators","type":"registry:block","title":"Trust Indicators","files":[{"path":"components/blocks/marketing/stats/trust-indicators.tsx","type":"registry:component","target":"components/blocks/marketing/stats/trust-indicators.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tooltip.tsx","type":"registry:ui","target":"components/ui/tooltip.tsx"}],"description":"A band of proof points like uptime, customers, and ratings in one row. Use it near a signup form to reassure visitors and lift their confidence.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-subscribe-benefits-list","type":"registry:block","title":"Benefits List","files":[{"path":"components/blocks/marketing/subscribe/benefits-list.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/benefits-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A subscribe form paired with a bulleted list of benefits and an email field. Tells visitors what they get before they sign up to your newsletter.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-subscribe-incentive-center-aligned","type":"registry:block","title":"Incentive Center Aligned","files":[{"path":"components/blocks/marketing/subscribe/incentive-center-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/incentive-center-aligned.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered signup block that offers a clear incentive above the email field. Use it to reward visitors who join your list with a discount or guide.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-subscribe-input-style","type":"registry:block","title":"Input Style","files":[{"path":"components/blocks/marketing/subscribe/input-style.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/input-style.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A compact email input with an inline submit button on one row. Drop it into a footer or banner where space is tight but you still want signups.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-subscribe-newsletter-preview","type":"registry:block","title":"Newsletter Preview","files":[{"path":"components/blocks/marketing/subscribe/newsletter-preview.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/newsletter-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A signup block showing a small preview of the newsletter content beside the email field. Sets reader expectations before they subscribe to it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-subscribe-simple-center-aligned","type":"registry:block","title":"Simple Center Aligned","files":[{"path":"components/blocks/marketing/subscribe/simple-center-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/simple-center-aligned.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A clean centered newsletter signup with a heading, short text, and email field. The reliable default for landing pages and blog footers here.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-subscribe-simple-right-aligned","type":"registry:block","title":"Simple Right Aligned","files":[{"path":"components/blocks/marketing/subscribe/simple-right-aligned.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/simple-right-aligned.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A signup block with text on the left and the email field aligned right. Fits wide sections where you want the form to balance the supporting copy.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-subscribe-social-proof-center","type":"registry:block","title":"Social Proof Center","files":[{"path":"components/blocks/marketing/subscribe/social-proof-center.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/social-proof-center.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A centered subscribe form topped with subscriber counts or avatars as social proof. Use it when trust nudges visitors to join your mailing list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-subscribe-split-layout","type":"registry:block","title":"Split Layout","files":[{"path":"components/blocks/marketing/subscribe/split-layout.tsx","type":"registry:component","target":"components/blocks/marketing/subscribe/split-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column subscribe block pairing an image or copy on one side with the email form on the other. Adds visual interest to a signup section.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-alternating-sections","type":"registry:block","title":"Alternating Sections","files":[{"path":"components/blocks/marketing/team-sections/alternating-sections.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/alternating-sections.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A team layout that alternates photos and bios from left to right down the page. Adds rhythm and gives room for longer profiles on an about page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-masonry-grid","type":"registry:block","title":"Masonry Grid","files":[{"path":"components/blocks/marketing/team-sections/masonry-grid.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/masonry-grid.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A team showcase in a staggered masonry grid where photos vary in height. Fills the space naturally and suits a large, photo rich company roster.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-simple-cards","type":"registry:block","title":"Simple Cards","files":[{"path":"components/blocks/marketing/team-sections/simple-cards.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/simple-cards.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A clean grid of team member cards, each with a photo, name, and role. The fast, tidy way to introduce a small team on an about or company page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-with-contact","type":"registry:block","title":"With Contact","files":[{"path":"components/blocks/marketing/team-sections/with-contact.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/with-contact.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Team cards that pair each photo and role with an email or phone link. Lets visitors reach the right person directly from your about or contact page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-team-sections-with-filters","type":"registry:block","title":"With Filters","files":[{"path":"components/blocks/marketing/team-sections/with-filters.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/with-filters.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A team directory with category filters that sort members by department or location. Helps visitors find the right person inside a large company.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-with-hover-cards","type":"registry:block","title":"With Hover Cards","files":[{"path":"components/blocks/marketing/team-sections/with-hover-cards.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/with-hover-cards.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A team grid where each photo reveals a short bio and social links on hover. Keeps the layout clean while extra detail stays one mouse move away.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-with-large-images","type":"registry:block","title":"With Large Images","files":[{"path":"components/blocks/marketing/team-sections/with-large-images.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/with-large-images.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Team profiles built around big, full bleed portraits with name and role. Puts faces front and center for a bold, personal about page that feels human.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-with-skill-badges","type":"registry:block","title":"With Skill Badges","files":[{"path":"components/blocks/marketing/team-sections/with-skill-badges.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/with-skill-badges.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Team cards that list each member with badges for their skills and tools. Great for agencies and studios that want to show real expertise at a glance.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-team-sections-with-testimonials","type":"registry:block","title":"With Testimonials","files":[{"path":"components/blocks/marketing/team-sections/with-testimonials.tsx","type":"registry:component","target":"components/blocks/marketing/team-sections/with-testimonials.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Team profiles paired with short quotes from each member or their clients. Adds a human voice and social proof to the about page of any company.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-testimonials-base","type":"registry:block","title":"Base","files":[{"path":"components/blocks/marketing/testimonials/base.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/base.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A clean testimonial section with a customer quote, name, role, and avatar. Drop it onto any landing page to add a trusted voice with little effort.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-testimonials-big-image","type":"registry:block","title":"Big Image","files":[{"path":"components/blocks/marketing/testimonials/big-image.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/big-image.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A testimonial paired with a large customer photo beside the quote. Use it when you want a single voice to carry weight and feel personal and real.","dependencies":["class-variance-authority","radix-ui"]},{"name":"marketing-testimonials-cards","type":"registry:block","title":"Cards","files":[{"path":"components/blocks/marketing/testimonials/cards.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/cards.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A grid of testimonial cards, each holding a quote, avatar, name, and title. Show several happy customers at once to build trust across your page."},{"name":"marketing-testimonials-cards-with-stats","type":"registry:block","title":"Cards With Stats","files":[{"path":"components/blocks/marketing/testimonials/cards-with-stats.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/cards-with-stats.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"Testimonial cards joined by a row of headline metrics like users and revenue. Pair real quotes with hard numbers to prove your product delivers.","dependencies":["radix-ui"]},{"name":"marketing-testimonials-customer-story-showcase","type":"registry:block","title":"Customer Story Showcase","files":[{"path":"components/blocks/marketing/testimonials/customer-story-showcase.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/customer-story-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A featured customer story with a detailed quote, company logo, and result. Use it as social proof when one account speaks to your ideal buyer.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"marketing-testimonials-mini-with-dividers-in-grid","type":"registry:block","title":"Mini With Dividers In Grid","files":[{"path":"components/blocks/marketing/testimonials/mini-with-dividers-in-grid.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/mini-with-dividers-in-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"Compact testimonials arranged in a grid with thin dividers between them. Fit many short quotes into a tidy space without crowding the layout.","dependencies":["radix-ui"]},{"name":"marketing-testimonials-short-review-with-logo-and-stars","type":"registry:block","title":"Short Review With Logo And Stars","files":[{"path":"components/blocks/marketing/testimonials/short-review-with-logo-and-stars.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/short-review-with-logo-and-stars.tsx"}],"description":"A brief review with a star rating and a company logo for instant credibility. Place it near a pricing table to reassure buyers before they commit.","dependencies":["lucide-react"]},{"name":"marketing-testimonials-simple-center-aligned-with-logo","type":"registry:block","title":"Simple Center Aligned With Logo","files":[{"path":"components/blocks/marketing/testimonials/simple-center-aligned-with-logo.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/simple-center-aligned-with-logo.tsx"}],"description":"A single centered quote topped with a company logo and the author below. Keep focus on one strong endorsement on a calm, uncluttered section."},{"name":"marketing-testimonials-small-image","type":"registry:block","title":"Small Image","files":[{"path":"components/blocks/marketing/testimonials/small-image.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/small-image.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A testimonial with a small rounded avatar set beside a concise quote and name. A friendly, lightweight option for sidebars or quieter page spots.","dependencies":["radix-ui"]},{"name":"marketing-testimonials-with-stats","type":"registry:block","title":"With Stats","files":[{"path":"components/blocks/marketing/testimonials/with-stats.tsx","type":"registry:component","target":"components/blocks/marketing/testimonials/with-stats.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"}],"description":"A testimonial section blended with key metrics such as customers served and ratings. Combine a quote with proof points to back your claims with data.","dependencies":["lucide-react","radix-ui"]},{"name":"modern-saas-about-sections-leadership-team","type":"registry:block","title":"Leadership Team","files":[{"path":"components/blocks/modern-saas/about-sections/leadership-team.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/leadership-team.tsx"}],"description":"A two part header with a credibility wordmark strip above a five up row of leadership portraits, each with a name and role, to put real faces behind the product."},{"name":"modern-saas-about-sections-meet-the-team","type":"registry:block","title":"Meet the Team","files":[{"path":"components/blocks/modern-saas/about-sections/meet-the-team.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/meet-the-team.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/dialog.tsx","type":"registry:ui","target":"components/ui/dialog.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A swipeable carousel of team profile cards with names, roles, and portraits, each opening a short bio in a dialog.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","next","radix-ui"]},{"name":"modern-saas-about-sections-our-purpose","type":"registry:block","title":"Our Purpose","files":[{"path":"components/blocks/modern-saas/about-sections/our-purpose.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/our-purpose.tsx"}],"description":"An editorial about section with no imagery: an uppercase eyebrow and large headline on the left beside a two paragraph purpose statement on the right."},{"name":"modern-saas-about-sections-story-timeline","type":"registry:block","title":"Story Timeline","files":[{"path":"components/blocks/modern-saas/about-sections/story-timeline.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/story-timeline.tsx"}],"description":"A vertical 'Our story' timeline of company milestones, alternating a photo with the year and a short paragraph beside a center rail, with the most recent year highlighted.","dependencies":["next"]},{"name":"modern-saas-blog-sections-article-card-grid","type":"registry:block","title":"Article Card Grid","files":[{"path":"components/blocks/modern-saas/blog-sections/article-card-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/blog-sections/article-card-grid.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A three up grid of blog post cards, each pairing a category badge and date with the post title and a stacked author byline.","dependencies":["class-variance-authority","radix-ui"]},{"name":"modern-saas-blog-sections-card-carousel","type":"registry:block","title":"Card Carousel","files":[{"path":"components/blocks/modern-saas/blog-sections/card-carousel.tsx","type":"registry:component","target":"components/blocks/modern-saas/blog-sections/card-carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A swipeable carousel of blog post cards, each pairing a cover image with a category, date, two line title, and read time.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"modern-saas-changelogs-horizontal-timeline","type":"registry:block","title":"Horizontal Timeline","files":[{"path":"components/blocks/modern-saas/changelogs/horizontal-timeline.tsx","type":"registry:component","target":"components/blocks/modern-saas/changelogs/horizontal-timeline.tsx"}],"description":"A Linear style changelog: a bold heading above a horizontal rail of recent releases, each with a dot, title, two line summary, and date. The newest entry is highlighted.","dependencies":["lucide-react"]},{"name":"modern-saas-changelogs-vertical-timeline","type":"registry:block","title":"Vertical Timeline","files":[{"path":"components/blocks/modern-saas/changelogs/vertical-timeline.tsx","type":"registry:component","target":"components/blocks/modern-saas/changelogs/vertical-timeline.tsx"}],"description":"A vertical changelog feed: a single rail of releases, each with a dot, date, title, summary, and a bulleted list of what changed. The newest release is highlighted.","dependencies":["lucide-react"]},{"name":"modern-saas-ctas-centered-callout","type":"registry:block","title":"Centered Callout","files":[{"path":"components/blocks/modern-saas/ctas/centered-callout.tsx","type":"registry:component","target":"components/blocks/modern-saas/ctas/centered-callout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A simple, centered closing CTA on a soft bordered panel: a bold headline and short lede over two pill buttons.","dependencies":["class-variance-authority","radix-ui"]},{"name":"modern-saas-ctas-split-signup","type":"registry:block","title":"Split Signup","files":[{"path":"components/blocks/modern-saas/ctas/split-signup.tsx","type":"registry:component","target":"components/blocks/modern-saas/ctas/split-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A split CTA on a soft bordered panel: a headline and pill button beside a newsletter signup with an email field, submit button, and privacy note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"modern-saas-error-pages-centered-astronaut","type":"registry:block","title":"Centered Astronaut","files":[{"path":"components/blocks/modern-saas/error-pages/centered-astronaut.tsx","type":"registry:component","target":"components/blocks/modern-saas/error-pages/centered-astronaut.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered 404 screen: a framed astronaut adrift over a soft glow above a bold headline, a short lede, and pill CTAs to head home or go back.","dependencies":["class-variance-authority","next","radix-ui"]},{"name":"modern-saas-error-pages-split-with-links","type":"registry:block","title":"Split With Links","files":[{"path":"components/blocks/modern-saas/error-pages/split-with-links.tsx","type":"registry:component","target":"components/blocks/modern-saas/error-pages/split-with-links.tsx"}],"description":"A 404 page with a split header, a giant outlined number over a dotted grid, and a row of helpful link cards to get visitors back on track.","dependencies":["lucide-react"]},{"name":"modern-saas-faqs-split-with-aside","type":"registry:block","title":"Split With Aside","files":[{"path":"components/blocks/modern-saas/faqs/split-with-aside.tsx","type":"registry:component","target":"components/blocks/modern-saas/faqs/split-with-aside.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A two-column FAQ: a sticky heading and help link beside a flat, single-open accordion of answers.","dependencies":["lucide-react","radix-ui"]},{"name":"modern-saas-faqs-tabbed-categories","type":"registry:block","title":"Tabbed Categories","files":[{"path":"components/blocks/modern-saas/faqs/tabbed-categories.tsx","type":"registry:component","target":"components/blocks/modern-saas/faqs/tabbed-categories.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A categorized FAQ: a centered headline and pill CTA above category tabs, then the active category and its count beside a single-open accordion of answers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-feature-sections-app-workspace","type":"registry:block","title":"App Workspace","files":[{"path":"components/blocks/modern-saas/feature-sections/app-workspace.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/app-workspace.tsx"}],"description":"An oversized display word over a stat-led feature rail beside a full automation workspace dashboard mockup built from theme tokens.","dependencies":["lucide-react"]},{"name":"modern-saas-feature-sections-benefits-isometric","type":"registry:block","title":"Benefits Isometric","files":[{"path":"components/blocks/modern-saas/feature-sections/benefits-isometric.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/benefits-isometric.tsx"}],"description":"Three benefit columns, each with a centered isometric SVG illustration, a FIG tag, label, and short paragraph. A clean, minimal way to frame product principles."},{"name":"modern-saas-feature-sections-bento-grid","type":"registry:block","title":"Bento Grid","files":[{"path":"components/blocks/modern-saas/feature-sections/bento-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/bento-grid.tsx"}],"description":"An asymmetric bento feature grid with a custom SVG illustration in every cell: analytics, collaboration, automation, security, and integrations. A clean, minimal overview.","dependencies":["lucide-react"]},{"name":"modern-saas-feature-sections-illustrated-cards","type":"registry:block","title":"Illustrated Cards","files":[{"path":"components/blocks/modern-saas/feature-sections/illustrated-cards.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/illustrated-cards.tsx"}],"description":"A gradient lead headline over two equal isometric cards: a backlog sorted into stacked lanes and cubes converging on one focused point.","dependencies":["lucide-react"]},{"name":"modern-saas-feature-sections-product-showcase","type":"registry:block","title":"Product Showcase","files":[{"path":"components/blocks/modern-saas/feature-sections/product-showcase.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/product-showcase.tsx"}],"description":"A split header over an app window mockup: a triage inbox where incoming feedback is auto-routed into labeled, assigned issues. Shows the product in action.","dependencies":["lucide-react"]},{"name":"modern-saas-footers-brand-watermark","type":"registry:block","title":"Brand Watermark","files":[{"path":"components/blocks/modern-saas/footers/brand-watermark.tsx","type":"registry:component","target":"components/blocks/modern-saas/footers/brand-watermark.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full width footer with a brand line, social buttons, and link columns, over a giant outlined brand wordmark above a legal bottom bar."},{"name":"modern-saas-footers-simple","type":"registry:block","title":"Simple","files":[{"path":"components/blocks/modern-saas/footers/simple.tsx","type":"registry:component","target":"components/blocks/modern-saas/footers/simple.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A simple footer: a brand mark and tagline beside columns of navigation links, over a bottom bar with a copyright line and social icons."},{"name":"modern-saas-hero-sections-centered-with-backdrop","type":"registry:block","title":"Centered With Backdrop","files":[{"path":"components/blocks/modern-saas/hero-sections/centered-with-backdrop.tsx","type":"registry:component","target":"components/blocks/modern-saas/hero-sections/centered-with-backdrop.tsx"},{"path":"components/blocks/modern-saas/navbars/centered-oval.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/centered-oval.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A minimal centered hero, headline, lede, and two CTAs, set over a full bleed backdrop with matching light and dark images and a sticky oval navbar.","dependencies":["class-variance-authority","lucide-react","next","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-navbars-centered-oval"]},{"name":"modern-saas-hero-sections-centered-with-product-image","type":"registry:block","title":"Centered With Product Image","files":[{"path":"components/blocks/modern-saas/hero-sections/centered-with-product-image.tsx","type":"registry:component","target":"components/blocks/modern-saas/hero-sections/centered-with-product-image.tsx"},{"path":"components/blocks/modern-saas/navbars/centered-oval.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/centered-oval.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A centered hero with a bold headline, lede, and dual CTAs above a sleek app window mockup, topped by a sticky oval navbar. A clean, modern opener for product launches.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-navbars-centered-oval"]},{"name":"modern-saas-hero-sections-planet-centerpiece","type":"registry:block","title":"Planet Centerpiece","files":[{"path":"components/blocks/modern-saas/hero-sections/planet-centerpiece.tsx","type":"registry:component","target":"components/blocks/modern-saas/hero-sections/planet-centerpiece.tsx"},{"path":"components/blocks/modern-saas/navbars/standard-sticky.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/standard-sticky.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A full-fold hero spread pairing a headline and CTAs with a token-built planet centerpiece and a monospace statement above a customer logo strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-navbars-standard-sticky"]},{"name":"modern-saas-integrations-connect-your-stack","type":"registry:block","title":"Connect Your Stack","files":[{"path":"components/blocks/modern-saas/integrations/connect-your-stack.tsx","type":"registry:component","target":"components/blocks/modern-saas/integrations/connect-your-stack.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A copy rail beside a constellation graph that fans connector lines from a central product node out to a ring of integration nodes over a fading dotted grid.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-logo-clouds-dual-marquee","type":"registry:block","title":"Dual Marquee","files":[{"path":"components/blocks/modern-saas/logo-clouds/dual-marquee.tsx","type":"registry:component","target":"components/blocks/modern-saas/logo-clouds/dual-marquee.tsx"}],"description":"A logo cloud with two rows of customer logos scrolling in opposite directions. A seamless, pure CSS marquee for social proof on a landing page."},{"name":"modern-saas-logo-clouds-simple-grid","type":"registry:block","title":"Simple Grid","files":[{"path":"components/blocks/modern-saas/logo-clouds/simple-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/logo-clouds/simple-grid.tsx"}],"description":"A simple, static logo cloud: an eyebrow line above a centered, wrapping row of customer logos. Clean, no motion social proof for a Modern SaaS landing page."},{"name":"modern-saas-navbars-centered-oval","type":"registry:block","title":"Centered Oval","files":[{"path":"components/blocks/modern-saas/navbars/centered-oval.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/centered-oval.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A sticky, pill shaped glass navbar with a logo, optically centered links, and dual CTAs. A clean, modern header for a Modern SaaS landing page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-navbars-standard-sticky","type":"registry:block","title":"Standard Sticky","files":[{"path":"components/blocks/modern-saas/navbars/standard-sticky.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/standard-sticky.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"}],"description":"A full width sticky header with a bottom border, logo, inline links, and CTAs. Links collapse into a mobile sheet menu. A clean, dependable Modern SaaS header.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-prebuilt-pages-company-page","type":"registry:block","title":"Company Page","files":[{"path":"components/blocks/modern-saas/prebuilt-pages/company-page.tsx","type":"registry:component","target":"components/blocks/modern-saas/prebuilt-pages/company-page.tsx"},{"path":"components/blocks/modern-saas/about-sections/leadership-team.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/leadership-team.tsx"},{"path":"components/blocks/modern-saas/about-sections/meet-the-team.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/meet-the-team.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/dialog.tsx","type":"registry:ui","target":"components/ui/dialog.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/blocks/modern-saas/about-sections/our-purpose.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/our-purpose.tsx"},{"path":"components/blocks/modern-saas/about-sections/story-timeline.tsx","type":"registry:component","target":"components/blocks/modern-saas/about-sections/story-timeline.tsx"},{"path":"components/blocks/modern-saas/ctas/centered-callout.tsx","type":"registry:component","target":"components/blocks/modern-saas/ctas/centered-callout.tsx"},{"path":"components/blocks/modern-saas/footers/brand-watermark.tsx","type":"registry:component","target":"components/blocks/modern-saas/footers/brand-watermark.tsx"},{"path":"components/blocks/modern-saas/navbars/standard-sticky.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/standard-sticky.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"},{"path":"components/blocks/modern-saas/testimonials/spotlight-with-stats.tsx","type":"registry:component","target":"components/blocks/modern-saas/testimonials/spotlight-with-stats.tsx"}],"description":"A complete Modern SaaS company page that opens with the navbar and runs from purpose through the story and team to a closing call to action.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","next","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-about-sections-leadership-team","@shadcn-ui-blocks/modern-saas-about-sections-meet-the-team","@shadcn-ui-blocks/modern-saas-about-sections-our-purpose","@shadcn-ui-blocks/modern-saas-about-sections-story-timeline","@shadcn-ui-blocks/modern-saas-ctas-centered-callout","@shadcn-ui-blocks/modern-saas-footers-brand-watermark","@shadcn-ui-blocks/modern-saas-navbars-standard-sticky","@shadcn-ui-blocks/modern-saas-testimonials-spotlight-with-stats"]},{"name":"modern-saas-prebuilt-pages-pricing-page","type":"registry:block","title":"Pricing Page","files":[{"path":"components/blocks/modern-saas/prebuilt-pages/pricing-page.tsx","type":"registry:component","target":"components/blocks/modern-saas/prebuilt-pages/pricing-page.tsx"},{"path":"components/blocks/modern-saas/ctas/centered-callout.tsx","type":"registry:component","target":"components/blocks/modern-saas/ctas/centered-callout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/modern-saas/faqs/split-with-aside.tsx","type":"registry:component","target":"components/blocks/modern-saas/faqs/split-with-aside.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/blocks/modern-saas/footers/simple.tsx","type":"registry:component","target":"components/blocks/modern-saas/footers/simple.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/blocks/modern-saas/logo-clouds/simple-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/logo-clouds/simple-grid.tsx"},{"path":"components/blocks/modern-saas/navbars/standard-sticky.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/standard-sticky.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"},{"path":"components/blocks/modern-saas/pricing-sections/three-tier.tsx","type":"registry:component","target":"components/blocks/modern-saas/pricing-sections/three-tier.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/blocks/modern-saas/testimonials/quote-card-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/testimonials/quote-card-grid.tsx"}],"description":"A full Modern SaaS pricing page that leads with the plans, then backs them with logo proof, customer voices, and answers before a final CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-ctas-centered-callout","@shadcn-ui-blocks/modern-saas-faqs-split-with-aside","@shadcn-ui-blocks/modern-saas-footers-simple","@shadcn-ui-blocks/modern-saas-logo-clouds-simple-grid","@shadcn-ui-blocks/modern-saas-navbars-standard-sticky","@shadcn-ui-blocks/modern-saas-pricing-sections-three-tier","@shadcn-ui-blocks/modern-saas-testimonials-quote-card-grid"]},{"name":"modern-saas-prebuilt-pages-product-landing","type":"registry:block","title":"Product Landing","files":[{"path":"components/blocks/modern-saas/prebuilt-pages/product-landing.tsx","type":"registry:component","target":"components/blocks/modern-saas/prebuilt-pages/product-landing.tsx"},{"path":"components/blocks/modern-saas/ctas/centered-callout.tsx","type":"registry:component","target":"components/blocks/modern-saas/ctas/centered-callout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/modern-saas/faqs/tabbed-categories.tsx","type":"registry:component","target":"components/blocks/modern-saas/faqs/tabbed-categories.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/blocks/modern-saas/feature-sections/bento-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/bento-grid.tsx"},{"path":"components/blocks/modern-saas/feature-sections/product-showcase.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/product-showcase.tsx"},{"path":"components/blocks/modern-saas/footers/simple.tsx","type":"registry:component","target":"components/blocks/modern-saas/footers/simple.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/blocks/modern-saas/hero-sections/centered-with-product-image.tsx","type":"registry:component","target":"components/blocks/modern-saas/hero-sections/centered-with-product-image.tsx"},{"path":"components/blocks/modern-saas/navbars/centered-oval.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/centered-oval.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"},{"path":"components/blocks/modern-saas/integrations/connect-your-stack.tsx","type":"registry:component","target":"components/blocks/modern-saas/integrations/connect-your-stack.tsx"},{"path":"components/blocks/modern-saas/logo-clouds/dual-marquee.tsx","type":"registry:component","target":"components/blocks/modern-saas/logo-clouds/dual-marquee.tsx"},{"path":"components/blocks/modern-saas/pricing-sections/three-tier.tsx","type":"registry:component","target":"components/blocks/modern-saas/pricing-sections/three-tier.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"},{"path":"components/blocks/modern-saas/testimonials/spotlight-with-stats.tsx","type":"registry:component","target":"components/blocks/modern-saas/testimonials/spotlight-with-stats.tsx"}],"description":"A complete Modern SaaS landing page that runs from hero through features, proof, and plans into a closing call to action and footer.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-ctas-centered-callout","@shadcn-ui-blocks/modern-saas-faqs-tabbed-categories","@shadcn-ui-blocks/modern-saas-feature-sections-bento-grid","@shadcn-ui-blocks/modern-saas-feature-sections-product-showcase","@shadcn-ui-blocks/modern-saas-footers-simple","@shadcn-ui-blocks/modern-saas-hero-sections-centered-with-product-image","@shadcn-ui-blocks/modern-saas-integrations-connect-your-stack","@shadcn-ui-blocks/modern-saas-logo-clouds-dual-marquee","@shadcn-ui-blocks/modern-saas-pricing-sections-three-tier","@shadcn-ui-blocks/modern-saas-testimonials-spotlight-with-stats"]},{"name":"modern-saas-prebuilt-pages-startup-landing","type":"registry:block","title":"Startup Landing","files":[{"path":"components/blocks/modern-saas/prebuilt-pages/startup-landing.tsx","type":"registry:component","target":"components/blocks/modern-saas/prebuilt-pages/startup-landing.tsx"},{"path":"components/blocks/modern-saas/ctas/split-signup.tsx","type":"registry:component","target":"components/blocks/modern-saas/ctas/split-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/blocks/modern-saas/faqs/split-with-aside.tsx","type":"registry:component","target":"components/blocks/modern-saas/faqs/split-with-aside.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/blocks/modern-saas/feature-sections/benefits-isometric.tsx","type":"registry:component","target":"components/blocks/modern-saas/feature-sections/benefits-isometric.tsx"},{"path":"components/blocks/modern-saas/footers/brand-watermark.tsx","type":"registry:component","target":"components/blocks/modern-saas/footers/brand-watermark.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/blocks/modern-saas/hero-sections/centered-with-backdrop.tsx","type":"registry:component","target":"components/blocks/modern-saas/hero-sections/centered-with-backdrop.tsx"},{"path":"components/blocks/modern-saas/navbars/centered-oval.tsx","type":"registry:component","target":"components/blocks/modern-saas/navbars/centered-oval.tsx"},{"path":"components/ui/sheet.tsx","type":"registry:ui","target":"components/ui/sheet.tsx"},{"path":"components/blocks/modern-saas/logo-clouds/simple-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/logo-clouds/simple-grid.tsx"},{"path":"components/blocks/modern-saas/pricing-sections/two-plans.tsx","type":"registry:component","target":"components/blocks/modern-saas/pricing-sections/two-plans.tsx"},{"path":"components/blocks/modern-saas/process-flow/numbered-steps.tsx","type":"registry:component","target":"components/blocks/modern-saas/process-flow/numbered-steps.tsx"},{"path":"components/blocks/modern-saas/testimonials/quote-card-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/testimonials/quote-card-grid.tsx"}],"description":"A calmer, story led Modern SaaS landing page with a full bleed hero, principle first benefits, two simple plans, and a newsletter close.","dependencies":["class-variance-authority","lucide-react","next","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/modern-saas-ctas-split-signup","@shadcn-ui-blocks/modern-saas-faqs-split-with-aside","@shadcn-ui-blocks/modern-saas-feature-sections-benefits-isometric","@shadcn-ui-blocks/modern-saas-footers-brand-watermark","@shadcn-ui-blocks/modern-saas-hero-sections-centered-with-backdrop","@shadcn-ui-blocks/modern-saas-logo-clouds-simple-grid","@shadcn-ui-blocks/modern-saas-pricing-sections-two-plans","@shadcn-ui-blocks/modern-saas-process-flow-numbered-steps","@shadcn-ui-blocks/modern-saas-testimonials-quote-card-grid"]},{"name":"modern-saas-pricing-sections-membership","type":"registry:block","title":"Membership","files":[{"path":"components/blocks/modern-saas/pricing-sections/membership.tsx","type":"registry:component","target":"components/blocks/modern-saas/pricing-sections/membership.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A single membership plan: a price card with an annual note and refund line beside a checked list of what the plan includes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-pricing-sections-three-tier","type":"registry:block","title":"Three Tier","files":[{"path":"components/blocks/modern-saas/pricing-sections/three-tier.tsx","type":"registry:component","target":"components/blocks/modern-saas/pricing-sections/three-tier.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/switch.tsx","type":"registry:ui","target":"components/ui/switch.tsx"}],"description":"A three tier pricing section with a featured plan, per card annual billing toggles, icon feature lists, and an enterprise banner.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-pricing-sections-two-plans","type":"registry:block","title":"Two Plans","files":[{"path":"components/blocks/modern-saas/pricing-sections/two-plans.tsx","type":"registry:component","target":"components/blocks/modern-saas/pricing-sections/two-plans.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two large plan cards side by side, a light free tier and an inverted paid tier, each with a price and CTA, over a group discounts link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"modern-saas-process-flow-numbered-steps","type":"registry:block","title":"Numbered Steps","files":[{"path":"components/blocks/modern-saas/process-flow/numbered-steps.tsx","type":"registry:component","target":"components/blocks/modern-saas/process-flow/numbered-steps.tsx"}],"description":"A horizontal row of numbered steps, each pinning a label to the top and dropping a two line heading and a learn more link to the foot. A quiet, editorial flow.","dependencies":["lucide-react"]},{"name":"modern-saas-testimonials-quote-card-grid","type":"registry:block","title":"Quote Card Grid","files":[{"path":"components/blocks/modern-saas/testimonials/quote-card-grid.tsx","type":"registry:component","target":"components/blocks/modern-saas/testimonials/quote-card-grid.tsx"}],"description":"A two column grid of testimonial cards, each pairing a customer quote with an avatar, name, and role."},{"name":"modern-saas-testimonials-spotlight-with-stats","type":"registry:block","title":"Spotlight With Stats","files":[{"path":"components/blocks/modern-saas/testimonials/spotlight-with-stats.tsx","type":"registry:component","target":"components/blocks/modern-saas/testimonials/spotlight-with-stats.tsx"}],"description":"A customer logo bar, one oversized pull quote with its attribution, and three metric cards that back the quote with hard numbers. A focused proof point for a landing page."},{"name":"portfolio-pro-about-sections-about-long-form","type":"registry:block","title":"About Long Form","files":[{"path":"components/blocks/portfolio-pro/about-sections/about-long-form.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/about-long-form.tsx"}],"description":"A reading-width essay about with three prose paragraphs covering career origin, what shaped the practice, and where the work stands now."},{"name":"portfolio-pro-about-sections-about-split","type":"registry:block","title":"About Split","files":[{"path":"components/blocks/portfolio-pro/about-sections/about-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/about-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An about split with a portrait, a point of view bio, and three grounding facts including a human one."},{"name":"portfolio-pro-about-sections-about-with-image-row","type":"registry:block","title":"About With Image Row","files":[{"path":"components/blocks/portfolio-pro/about-sections/about-with-image-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/about-with-image-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An about section with a two-column bio and ruled facts grid above a row of three labelled Placeholder tiles showing workspace, process, and a close detail."},{"name":"portfolio-pro-about-sections-about-with-stats","type":"registry:block","title":"About With Stats","files":[{"path":"components/blocks/portfolio-pro/about-sections/about-with-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/about-with-stats.tsx"}],"description":"A two-column about pairing a short bio and a facts list with a four-card stat strip covering years, projects, clients, and one human metric."},{"name":"portfolio-pro-about-sections-approach-about","type":"registry:block","title":"Approach About","files":[{"path":"components/blocks/portfolio-pro/about-sections/approach-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/approach-about.tsx"}],"description":"An about section that presents three to four named working principles in a numbered ruled list beside a heading and setup paragraph."},{"name":"portfolio-pro-about-sections-faq-about","type":"registry:block","title":"FAQ About","files":[{"path":"components/blocks/portfolio-pro/about-sections/faq-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/faq-about.tsx"}],"description":"An about told as five ruled intro call questions with honest answers, beside a heading and a card inviting anything not covered."},{"name":"portfolio-pro-about-sections-full-width-statement","type":"registry:block","title":"Full Width Statement","files":[{"path":"components/blocks/portfolio-pro/about-sections/full-width-statement.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/full-width-statement.tsx"}],"description":"A centered bordered panel containing a single large belief sentence at heading scale and one supporting line attributing the principle to the practice."},{"name":"portfolio-pro-about-sections-journey-about","type":"registry:block","title":"Journey About","files":[{"path":"components/blocks/portfolio-pro/about-sections/journey-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/journey-about.tsx"}],"description":"A ruled vertical list of three dated milestones tracing the career path from first role to going independent, each with a year, heading, and body."},{"name":"portfolio-pro-about-sections-letter-about","type":"registry:block","title":"Letter About","files":[{"path":"components/blocks/portfolio-pro/about-sections/letter-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/letter-about.tsx"}],"description":"A card-framed signed note with three personal paragraphs and a ruled sign-off naming the designer and their location."},{"name":"portfolio-pro-about-sections-manifesto-about","type":"registry:block","title":"Manifesto About","files":[{"path":"components/blocks/portfolio-pro/about-sections/manifesto-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/manifesto-about.tsx"}],"description":"A numbered list of craft beliefs each paired with a clarifying sentence, for a practitioner with a genuine position on their work."},{"name":"portfolio-pro-about-sections-now-page-about","type":"registry:block","title":"Now Page About","files":[{"path":"components/blocks/portfolio-pro/about-sections/now-page-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/now-page-about.tsx"}],"description":"A dated snapshot of current projects, learning, and availability with a side column showing location and next opening."},{"name":"portfolio-pro-about-sections-off-hours-about","type":"registry:block","title":"Off Hours About","files":[{"path":"components/blocks/portfolio-pro/about-sections/off-hours-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/off-hours-about.tsx"}],"description":"A four-card grid of pursuits away from the desk, each with an honest note, closed by a line tying them back to the craft."},{"name":"portfolio-pro-about-sections-photo-collage-about","type":"registry:block","title":"Photo Collage About","files":[{"path":"components/blocks/portfolio-pro/about-sections/photo-collage-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/photo-collage-about.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column about with a mixed aspect ratio three-image collage beside a short bio and facts list, designed for photographers and makers who lead with their environment."},{"name":"portfolio-pro-about-sections-principles-about","type":"registry:block","title":"Principles About","files":[{"path":"components/blocks/portfolio-pro/about-sections/principles-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/principles-about.tsx"}],"description":"Three principle cards each split into the belief and its honest cost, naming the tradeoff that following the principle requires in practice."},{"name":"portfolio-pro-about-sections-quote-and-bio","type":"registry:block","title":"Quote And Bio","files":[{"path":"components/blocks/portfolio-pro/about-sections/quote-and-bio.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/quote-and-bio.tsx"}],"description":"An about section that leads with a personal philosophy quote at heading size, then follows with a short bio paragraph and a ruled fact strip."},{"name":"portfolio-pro-about-sections-split-with-list","type":"registry:block","title":"Split With List","files":[{"path":"components/blocks/portfolio-pro/about-sections/split-with-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/split-with-list.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column about split with a portrait Placeholder beside a bio heading, a paragraph, and a five-item checklist that names capabilities and explicitly lists what is not taken on.","dependencies":["lucide-react"]},{"name":"portfolio-pro-about-sections-stats-and-bio","type":"registry:block","title":"Stats And Bio","files":[{"path":"components/blocks/portfolio-pro/about-sections/stats-and-bio.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/stats-and-bio.tsx"}],"description":"A two-column section pairing a career bio paragraph with a 2x2 grid of four concrete career figures in large tabular numerals."},{"name":"portfolio-pro-about-sections-studio-about","type":"registry:block","title":"Studio About","files":[{"path":"components/blocks/portfolio-pro/about-sections/studio-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/studio-about.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A two-column studio about with a founding narrative, three named avatar team cards showing name and role, and a single belief line beneath the team."},{"name":"portfolio-pro-about-sections-then-and-now-about","type":"registry:block","title":"Then And Now About","files":[{"path":"components/blocks/portfolio-pro/about-sections/then-and-now-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/then-and-now-about.tsx"}],"description":"A ruled comparison list of four topics, each pairing an early career belief with the replacement a decade of practice produced."},{"name":"portfolio-pro-about-sections-three-things-about","type":"registry:block","title":"Three Things About","files":[{"path":"components/blocks/portfolio-pro/about-sections/three-things-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/three-things-about.tsx"}],"description":"A scannable about section with three bordered cards covering what the person does, how they work, and what they care about."},{"name":"portfolio-pro-about-sections-timeline-about","type":"registry:block","title":"Timeline About","files":[{"path":"components/blocks/portfolio-pro/about-sections/timeline-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/timeline-about.tsx"}],"description":"A career told as a vertical ruled timeline with a year and a concrete sentence per chapter from first job to now."},{"name":"portfolio-pro-about-sections-tools-and-setup-about","type":"registry:block","title":"Tools And Setup About","files":[{"path":"components/blocks/portfolio-pro/about-sections/tools-and-setup-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/tools-and-setup-about.tsx"}],"description":"A grouped card grid listing the hardware and software this person uses day to day with a short honest note per tool."},{"name":"portfolio-pro-about-sections-typical-week-about","type":"registry:block","title":"Typical Week About","files":[{"path":"components/blocks/portfolio-pro/about-sections/typical-week-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/typical-week-about.tsx"}],"description":"A two-column about showing the shape of a working week as five ruled day rows beside a heading and three working facts."},{"name":"portfolio-pro-about-sections-values-list","type":"registry:block","title":"Values List","files":[{"path":"components/blocks/portfolio-pro/about-sections/values-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/values-list.tsx"}],"description":"A four-row ruled list of numbered working principles each with a short imperative title and a concrete sentence on what the principle has cost to learn."},{"name":"portfolio-pro-about-sections-what-i-do-about","type":"registry:block","title":"What I Do About","files":[{"path":"components/blocks/portfolio-pro/about-sections/what-i-do-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/what-i-do-about.tsx"}],"description":"Three discipline cards each naming a practice area and describing the approach taken, defining the work by activity rather than by job title or deliverable."},{"name":"portfolio-pro-availability-sections-availability-faq","type":"registry:block","title":"Availability FAQ","files":[{"path":"components/blocks/portfolio-pro/availability-sections/availability-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/availability-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column block answering common booking questions in an accordion beside a short intro, response meta rows, and a direct contact button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-booking-calendar","type":"registry:block","title":"Booking Calendar","files":[{"path":"components/blocks/portfolio-pro/availability-sections/booking-calendar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/booking-calendar.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A six month availability strip of month cells marked booked, open, or closed, each with a short note, plus a status legend and booking button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-booking-status","type":"registry:block","title":"Booking Status","files":[{"path":"components/blocks/portfolio-pro/availability-sections/booking-status.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/booking-status.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column availability block stating the current booked-through month, the next opening slot, response time, and typical engagement length as ruled detail rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-capacity-breakdown","type":"registry:block","title":"Capacity Breakdown","files":[{"path":"components/blocks/portfolio-pro/availability-sections/capacity-breakdown.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/capacity-breakdown.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column block with a stacked weekly capacity bar and legend beside commitment rows naming each engagement, its share, and the open day.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-capacity-note","type":"registry:block","title":"Capacity Note","files":[{"path":"components/blocks/portfolio-pro/availability-sections/capacity-note.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/capacity-note.tsx"}],"description":"A two-column block with a candid workload statement and a last-updated timestamp on the left, and four expectation rows covering response time and start dates on the right."},{"name":"portfolio-pro-availability-sections-hire-me-card","type":"registry:block","title":"Hire Me Card","files":[{"path":"components/blocks/portfolio-pro/availability-sections/hire-me-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/hire-me-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column block listing engagement types as ruled rows beside availability, location, and rate detail rows, with a referral note for when the calendar is full.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-next-opening-card","type":"registry:block","title":"Next Opening Card","files":[{"path":"components/blocks/portfolio-pro/availability-sections/next-opening-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/next-opening-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column split showing the next available start date with slot details and a three-step claim process ending in a contact action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-open-for-work-banner","type":"registry:block","title":"Open For Work Banner","files":[{"path":"components/blocks/portfolio-pro/availability-sections/open-for-work-banner.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/open-for-work-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim top-of-page band with a green status dot, an availability statement naming the open month, and a contact button for an immediate above-the-fold signal.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-project-slots","type":"registry:block","title":"Project Slots","files":[{"path":"components/blocks/portfolio-pro/availability-sections/project-slots.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/project-slots.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column availability block showing 3 named project slots with open or taken status, engagement details, and a claim action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-retainer-days","type":"registry:block","title":"Retainer Days","files":[{"path":"components/blocks/portfolio-pro/availability-sections/retainer-days.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/retainer-days.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column block with a weekday strip marking committed and open days beside retainer detail rows and a reserve-a-day contact action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-status-band","type":"registry:block","title":"Status Band","files":[{"path":"components/blocks/portfolio-pro/availability-sections/status-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/status-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim card stating current booking status, next opening month, and response time with a direct contact button in one horizontal strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-availability-sections-waitlist-card","type":"registry:block","title":"Waitlist Card","files":[{"path":"components/blocks/portfolio-pro/availability-sections/waitlist-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/availability-sections/waitlist-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two-column block explaining the first-refusal waitlist mechanic in three numbered steps, with current list stats as ruled rows and an email join form on the right.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-awards-recognition-as-featured-in","type":"registry:block","title":"As Featured In","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/as-featured-in.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/as-featured-in.tsx"}],"description":"A centred press strip with eight publication wordmarks and a dated context line per entry showing what kind of coverage was given."},{"name":"portfolio-pro-awards-recognition-awards-and-press","type":"registry:block","title":"Awards And Press","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/awards-and-press.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/awards-and-press.tsx"}],"description":"A two-column recognition block listing formal awards with body and category on the left and press features with outlet and headline on the right.","dependencies":["lucide-react"]},{"name":"portfolio-pro-awards-recognition-awards-by-year","type":"registry:block","title":"Awards By Year","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/awards-by-year.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/awards-by-year.tsx"}],"description":"An awards ledger grouped by year with each year as a large left numeral beside that year's wins, bodies, and projects in ruled rows."},{"name":"portfolio-pro-awards-recognition-awards-list","type":"registry:block","title":"Awards List","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/awards-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/awards-list.tsx"}],"description":"A ruled list of award wins naming the award, the project it recognised, the awarding body, and the year."},{"name":"portfolio-pro-awards-recognition-certifications-row","type":"registry:block","title":"Certifications Row","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/certifications-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/certifications-row.tsx"}],"description":"A row of compact credential cards each naming the certification, the issuing organisation, and the year."},{"name":"portfolio-pro-awards-recognition-feature-quotes","type":"registry:block","title":"Feature Quotes","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/feature-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/feature-quotes.tsx"}],"description":"A three-card grid of short press pull quotes each attributed to a named publication with its date."},{"name":"portfolio-pro-awards-recognition-judging-roles","type":"registry:block","title":"Judging Roles","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/judging-roles.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/judging-roles.tsx"}],"description":"A ruled table of invited jury seats with columns for the awarding body, the role held, the category judged, and the year."},{"name":"portfolio-pro-awards-recognition-nominations-and-wins","type":"registry:block","title":"Nominations And Wins","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/nominations-and-wins.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/nominations-and-wins.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A ruled list of award submissions where an outcome badge marks each entry as won, shortlisted, or an honourable mention beside its year.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-awards-recognition-press-features","type":"registry:block","title":"Press Features","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/press-features.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/press-features.tsx"}],"description":"A ruled list of press coverage naming the publication, the article headline, the date, and a read link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-awards-recognition-press-logo-row","type":"registry:block","title":"Press Logo Row","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/press-logo-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/press-logo-row.tsx"}],"description":"A heading and lede above a single ruled grid of six publication wordmarks where the practice has been featured."},{"name":"portfolio-pro-awards-recognition-recognition-band","type":"registry:block","title":"Recognition Band","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/recognition-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/recognition-band.tsx"}],"description":"A slim border-y strip listing award wins and press features with their source and year in a compact horizontal flow."},{"name":"portfolio-pro-awards-recognition-recognition-grid","type":"registry:block","title":"Recognition Grid","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/recognition-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/recognition-grid.tsx"}],"description":"A four-card grid mixing awards, press features, and honours each tagged by kind with its source and year."},{"name":"portfolio-pro-awards-recognition-recognition-stats","type":"registry:block","title":"Recognition Stats","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/recognition-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/recognition-stats.tsx"}],"description":"A four-column stat band summarising awards won, press features, jury invitations, and years of practice with a source line under each number."},{"name":"portfolio-pro-awards-recognition-single-award-feature","type":"registry:block","title":"Single Award Feature","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/single-award-feature.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/single-award-feature.tsx"}],"description":"A two-column block spotlighting one award with a ruled context list on the left and a large award callout card on the right."},{"name":"portfolio-pro-awards-recognition-speaking-list","type":"registry:block","title":"Speaking List","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/speaking-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/speaking-list.tsx"}],"description":"A ruled list of conference talks naming the event, the talk title, the year, and an optional recording link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-awards-recognition-timeline-awards","type":"registry:block","title":"Timeline Awards","files":[{"path":"components/blocks/portfolio-pro/awards-recognition/timeline-awards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/awards-recognition/timeline-awards.tsx"}],"description":"A vertical connected timeline listing awards most recent first, each tied to a specific project and awarding body."},{"name":"portfolio-pro-blog-sections-archive-by-year","type":"registry:block","title":"Archive By Year","files":[{"path":"components/blocks/portfolio-pro/blog-sections/archive-by-year.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/archive-by-year.tsx"}],"description":"A chronological archive grouping posts under large year labels with post counts, each year holding a ruled list of titles, dates, and read times."},{"name":"portfolio-pro-blog-sections-article-body","type":"registry:block","title":"Article Body","files":[{"path":"components/blocks/portfolio-pro/blog-sections/article-body.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/article-body.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A reading-width prose column with h2 sections, body paragraphs, a pull-quote, and an inline Placeholder image demonstrating long-form typographic rhythm."},{"name":"portfolio-pro-blog-sections-article-series","type":"registry:block","title":"Article Series","files":[{"path":"components/blocks/portfolio-pro/blog-sections/article-series.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/article-series.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Two article series cards with status badges, descriptions, numbered part rows showing read times or a coming soon badge, and start reading links.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-blog-sections-author-bio-card","type":"registry:block","title":"Author Bio Card","files":[{"path":"components/blocks/portfolio-pro/blog-sections/author-bio-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/author-bio-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A compact end-of-article card with an avatar, name, role line, a two-sentence bio, and a subscribe link for the foot of a blog post.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-blog-categories","type":"registry:block","title":"Blog Categories","files":[{"path":"components/blocks/portfolio-pro/blog-sections/blog-categories.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/blog-categories.tsx"}],"description":"A six-card topic index with post counts and a one-line description per category so readers can find the threads that match their interests.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-blog-post-grid","type":"registry:block","title":"Blog Post Grid","files":[{"path":"components/blocks/portfolio-pro/blog-sections/blog-post-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/blog-post-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A six-post writing index in a three-column card grid, each card showing a Placeholder cover, category, title, date, and read time."},{"name":"portfolio-pro-blog-sections-blog-post-header","type":"registry:block","title":"Blog Post Header","files":[{"path":"components/blocks/portfolio-pro/blog-sections/blog-post-header.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/blog-post-header.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"An article page opener with a category label, h1-scale post title, author avatar and meta, and a wide Placeholder cover image."},{"name":"portfolio-pro-blog-sections-blog-sidebar-layout","type":"registry:block","title":"Blog Sidebar Layout","files":[{"path":"components/blocks/portfolio-pro/blog-sections/blog-sidebar-layout.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/blog-sidebar-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A post list with thumbnail and meta on the left and a sidebar of about bio, category counts, and email subscribe on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-blog-sections-featured-and-list","type":"registry:block","title":"Featured And List","files":[{"path":"components/blocks/portfolio-pro/blog-sections/featured-and-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/featured-and-list.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A writing landing with one promoted post shown at full width with a cover image and excerpt above a ruled list of four recent posts.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-featured-post","type":"registry:block","title":"Featured Post","files":[{"path":"components/blocks/portfolio-pro/blog-sections/featured-post.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/featured-post.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A writing section with one large featured post carrying a cover, excerpt, and meta beside a ruled list of three recent posts.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-magazine-blog-grid","type":"registry:block","title":"Magazine Blog Grid","files":[{"path":"components/blocks/portfolio-pro/blog-sections/magazine-blog-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/magazine-blog-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An editorial two-column layout with one large featured post and a divided stack of three secondary posts beside it.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-most-read-list","type":"registry:block","title":"Most Read List","files":[{"path":"components/blocks/portfolio-pro/blog-sections/most-read-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/most-read-list.tsx"}],"description":"A split section with archive stats rows and a browse link beside a ranked list of five posts with large ordinals, category, and read counts.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-post-list-rows","type":"registry:block","title":"Post List Rows","files":[{"path":"components/blocks/portfolio-pro/blog-sections/post-list-rows.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/post-list-rows.tsx"}],"description":"A minimal image-free writing archive as ruled rows showing publish date, post title with inline category, and read time.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-read-next-posts","type":"registry:block","title":"Read Next Posts","files":[{"path":"components/blocks/portfolio-pro/blog-sections/read-next-posts.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/read-next-posts.tsx"}],"description":"An end of article footer with previous and next post cards carrying excerpts and meta, above a short ruled list of related reading.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-recent-writing","type":"registry:block","title":"Recent Writing","files":[{"path":"components/blocks/portfolio-pro/blog-sections/recent-writing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/recent-writing.tsx"}],"description":"A homepage writing teaser showing three recent posts as compact rows with category, title, and date, plus a link to the full archive.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-tag-filter-blog","type":"registry:block","title":"Tag Filter Blog","files":[{"path":"components/blocks/portfolio-pro/blog-sections/tag-filter-blog.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/tag-filter-blog.tsx"}],"description":"A writing index with tag chips (All, Design, Career, Process) that filter six post rows via client-side state and show a live article count."},{"name":"portfolio-pro-blog-sections-three-card-row","type":"registry:block","title":"Three Card Row","files":[{"path":"components/blocks/portfolio-pro/blog-sections/three-card-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/three-card-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three equal blog post cards each with a Placeholder cover, title, date, and reading time in a responsive three-column grid.","dependencies":["lucide-react"]},{"name":"portfolio-pro-blog-sections-writing-with-topics","type":"registry:block","title":"Writing With Topics","files":[{"path":"components/blocks/portfolio-pro/blog-sections/writing-with-topics.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/blog-sections/writing-with-topics.tsx"}],"description":"A three-column writing index that groups posts under topic headings, each column holding a ruled list of two to three post rows.","dependencies":["lucide-react"]},{"name":"portfolio-pro-case-study-sections-annotated-screen-case","type":"registry:block","title":"Annotated Screen Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/annotated-screen-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/annotated-screen-case.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single product screen as a Placeholder with numbered markers keyed to a side list naming the design decision behind each area."},{"name":"portfolio-pro-case-study-sections-before-after-case","type":"registry:block","title":"Before After Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/before-after-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/before-after-case.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A redesign case study with two Placeholder images side by side, each followed by a paragraph that names the problem or outcome and one unresolved edge case."},{"name":"portfolio-pro-case-study-sections-case-study-cover","type":"registry:block","title":"Case Study Cover","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-cover.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-cover.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A case study opening with a full-width Placeholder hero and a bordered panel showing the project title, subtitle, and a meta table of client, role, duration, and year."},{"name":"portfolio-pro-case-study-sections-case-study-hero","type":"registry:block","title":"Case Study Hero","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-hero.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A fold-filling project page opener with the project name large, a one-line outcome summary, a four-cell meta row of client, role, year, and deliverables, and a wide cover image."},{"name":"portfolio-pro-case-study-sections-case-study-index","type":"registry:block","title":"Case Study Index","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-index.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-index.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A ruled list of four navigable case study rows each carrying a thumbnail, a one-line problem statement, a result figure, and a category tag.","dependencies":["lucide-react"]},{"name":"portfolio-pro-case-study-sections-case-study-pager","type":"registry:block","title":"Case Study Pager","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-pager.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-pager.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An end of case study pager with previous and next project cells carrying thumbnails, summaries, and result lines, plus an all work link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-case-study-sections-case-study-split","type":"registry:block","title":"Case Study Split","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A case study split telling problem, what I did, and the constraint, with a sticky result strip."},{"name":"portfolio-pro-case-study-sections-challenge-solution","type":"registry:block","title":"Challenge Solution","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/challenge-solution.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/challenge-solution.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A case study section with a wide Placeholder image above a two-column ruled layout naming the specific challenge and the solution with its test rounds."},{"name":"portfolio-pro-case-study-sections-constraints-case","type":"registry:block","title":"Constraints Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/constraints-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/constraints-case.tsx"}],"description":"Four fixed project constraints in a ruled list, each typed and explained by the mark it left on the design, with a candid closing note."},{"name":"portfolio-pro-case-study-sections-decision-log-case","type":"registry:block","title":"Decision Log Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/decision-log-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/decision-log-case.tsx"}],"description":"A ruled log of four project decisions, each row pairing the chosen path with the rejected alternative and the reason it lost."},{"name":"portfolio-pro-case-study-sections-full-bleed-case","type":"registry:block","title":"Full Bleed Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/full-bleed-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/full-bleed-case.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A case study section with a full-width container image and an attached ruled panel carrying the title, summary, and outcome figures."},{"name":"portfolio-pro-case-study-sections-gallery-case-study","type":"registry:block","title":"Gallery Case Study","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/gallery-case-study.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/gallery-case-study.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A vertically sequenced case study of three numbered Placeholder images with captions that name the specific decision visible in each screen."},{"name":"portfolio-pro-case-study-sections-impact-summary","type":"registry:block","title":"Impact Summary","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/impact-summary.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/impact-summary.tsx"}],"description":"A case study closing section with a four-cell tabular figure strip and a reflection paragraph that names the specific scheduling or process mistake the designer would change."},{"name":"portfolio-pro-case-study-sections-intro-and-gallery","type":"registry:block","title":"Intro and Gallery","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/intro-and-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/intro-and-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A case study section with a short project intro paragraph followed by a captioned gallery of process frames in a three-column grid."},{"name":"portfolio-pro-case-study-sections-long-form-case","type":"registry:block","title":"Long Form Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/long-form-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/long-form-case.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A full written case study with an intro, five titled prose sections including a constraint, inline Placeholders, and a results strip."},{"name":"portfolio-pro-case-study-sections-metrics-grid-case","type":"registry:block","title":"Metrics Grid Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/metrics-grid-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/metrics-grid-case.tsx"}],"description":"A 2x2 grid of outcome figures each with a context line and measurement window, plus a candid attribution note below the grid."},{"name":"portfolio-pro-case-study-sections-outcome-first-case","type":"registry:block","title":"Outcome First Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/outcome-first-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/outcome-first-case.tsx"}],"description":"A case study that leads with the result at display size before a ruled divider reveals the problem and approach in two equal columns."},{"name":"portfolio-pro-case-study-sections-process-walkthrough","type":"registry:block","title":"Process Walkthrough","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/process-walkthrough.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/process-walkthrough.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A numbered sequence of project steps each with a large step number, title, duration, paragraph, and a Placeholder showing the artefact."},{"name":"portfolio-pro-case-study-sections-quote-led-case","type":"registry:block","title":"Quote Led Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/quote-led-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/quote-led-case.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A case study that opens with a client testimonial in a ruled blockquote before the work narrative and a results strip."},{"name":"portfolio-pro-case-study-sections-results-band","type":"registry:block","title":"Results Band","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/results-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/results-band.tsx"}],"description":"A ruled metric strip of four figures with one context line each and an honest attribution note naming any confounding changes in the same window."},{"name":"portfolio-pro-case-study-sections-role-breakdown","type":"registry:block","title":"Role Breakdown","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/role-breakdown.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/role-breakdown.tsx"}],"description":"Two ruled lists side by side naming what the author owned versus what named teammates contributed, with honest framing about the credit split."},{"name":"portfolio-pro-case-study-sections-sticky-summary-case","type":"registry:block","title":"Sticky Summary Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/sticky-summary-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/sticky-summary-case.tsx"}],"description":"A case study layout with project facts and result figures fixed in a sticky left column while the prose writeup scrolls on the right."},{"name":"portfolio-pro-case-study-sections-testimonial-in-case","type":"registry:block","title":"Testimonial In Case","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/testimonial-in-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/testimonial-in-case.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A single attributed client quote in a ruled panel placed between the work body and results sections of a case study."},{"name":"portfolio-pro-case-study-sections-two-column-writeup","type":"registry:block","title":"Two Column Writeup","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/two-column-writeup.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/two-column-writeup.tsx"}],"description":"A dense case study section with the project narrative split across two prose columns and a four-figure result strip below."},{"name":"portfolio-pro-case-study-sections-visual-process","type":"registry:block","title":"Visual Process","files":[{"path":"components/blocks/portfolio-pro/case-study-sections/visual-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/visual-process.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A vertical sequence of numbered process phases each pairing a Placeholder artefact frame with a short paragraph naming the concrete finding or decision from that phase."},{"name":"portfolio-pro-clients-and-logos-animated-logo-row","type":"registry:block","title":"Animated Logo Row","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/animated-logo-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/animated-logo-row.tsx"}],"description":"Eight client wordmarks as muted semibold text at varied type sizes arranged in a single wrapping bordered panel."},{"name":"portfolio-pro-clients-and-logos-client-grid-detailed","type":"registry:block","title":"Client Grid Detailed","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/client-grid-detailed.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/client-grid-detailed.tsx"}],"description":"Six client cards each showing the wordmark, sector, the actual deliverable delivered, and the year of engagement."},{"name":"portfolio-pro-clients-and-logos-client-list","type":"registry:block","title":"Client List","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/client-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/client-list.tsx"}],"description":"A ruled-row roster of ten clients each showing the company name, the kind of work delivered, and the year, the complete scannable client history."},{"name":"portfolio-pro-clients-and-logos-client-results-row","type":"registry:block","title":"Client Results Row","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/client-results-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/client-results-row.tsx"}],"description":"Three columns each attributing a large tabular-nums result figure and a one-line context sentence to a named client, the outcomes-by-client proof strip."},{"name":"portfolio-pro-clients-and-logos-client-spotlight","type":"registry:block","title":"Client Spotlight","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/client-spotlight.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/client-spotlight.tsx"}],"description":"A split layout pairing one anchor client panel with scope, fact rows, and an outcome against a ruled six row list of further clients."},{"name":"portfolio-pro-clients-and-logos-clients-by-service","type":"registry:block","title":"Clients By Service","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/clients-by-service.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/clients-by-service.tsx"}],"description":"Three bordered discipline columns each with a service description, a stacked list of client wordmarks, and a client count per column."},{"name":"portfolio-pro-clients-and-logos-global-clients","type":"registry:block","title":"Global Clients","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/global-clients.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/global-clients.tsx"}],"description":"Three stacked region bands each pairing a region label and client count with a wrapped set of client names and home cities."},{"name":"portfolio-pro-clients-and-logos-industries-served","type":"registry:block","title":"Industries Served","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/industries-served.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/industries-served.tsx"}],"description":"A six-tile sector grid showing project counts and example client types per industry to demonstrate breadth without a logo grid."},{"name":"portfolio-pro-clients-and-logos-logo-grid-with-quote","type":"registry:block","title":"Logo Grid With Quote","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/logo-grid-with-quote.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/logo-grid-with-quote.tsx"}],"description":"Eight client wordmarks in a bordered grid on one side and one attributed client testimonial on the other, pairing breadth with a specific endorsement."},{"name":"portfolio-pro-clients-and-logos-logo-wall","type":"registry:block","title":"Logo Wall","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/logo-wall.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/logo-wall.tsx"}],"description":"A grid of ten client wordmarks styled as muted text in varying sizes, with a heading and lede, showing the full breadth of past clients at a glance."},{"name":"portfolio-pro-clients-and-logos-logos-and-testimonial","type":"registry:block","title":"Logos And Testimonial","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/logos-and-testimonial.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/logos-and-testimonial.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A ruled wordmark row of seven clients above one attributed pull quote that names a specific deliverable and outcome."},{"name":"portfolio-pro-clients-and-logos-logos-with-count","type":"registry:block","title":"Logos With Count","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/logos-with-count.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/logos-with-count.tsx"}],"description":"A centred headline figure above a twelve-cell client wordmark grid that proves practice scale with a count and a longevity line."},{"name":"portfolio-pro-clients-and-logos-notable-clients","type":"registry:block","title":"Notable Clients","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/notable-clients.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/notable-clients.tsx"}],"description":"Four client cards each naming the company, a paragraph on the scope of work, and a concrete one-line outcome, the selected engagements with results attached."},{"name":"portfolio-pro-clients-and-logos-repeat-clients","type":"registry:block","title":"Repeat Clients","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/repeat-clients.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/repeat-clients.tsx"}],"description":"Ruled rows of five returning clients each pairing the company and a one line history with a right aligned project count and year span."},{"name":"portfolio-pro-clients-and-logos-trusted-by-row","type":"registry:block","title":"Trusted By Row","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/trusted-by-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/trusted-by-row.tsx"}],"description":"A compact single-line strip of five client wordmarks with a small uppercase label, placed beneath a hero to add proof without interrupting page flow."},{"name":"portfolio-pro-clients-and-logos-two-row-logos","type":"registry:block","title":"Two Row Logos","files":[{"path":"components/blocks/portfolio-pro/clients-and-logos/two-row-logos.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/clients-and-logos/two-row-logos.tsx"}],"description":"A centered heading with a client count above two even ruled rows of five client wordmarks each, covering ten names across two sectors."},{"name":"portfolio-pro-coaching-mentoring-book-session","type":"registry:block","title":"Book Session","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/book-session.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/book-session.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column booking block showing what a single session covers, the duration and price, a four-step booking sequence, and an honest list of what coaching is not.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-coaching-faq","type":"registry:block","title":"Coaching FAQ","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/coaching-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/coaching-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column FAQ answering common coaching questions in an accordion beside quick facts covering price, engagement length, and reply time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-coaching-hero","type":"registry:block","title":"Coaching Hero","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/coaching-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/coaching-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A full-fold hero naming the coach, their one-line premise, the next availability date, primary and secondary actions, and a three-cell credential strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-coaching-offerings","type":"registry:block","title":"Coaching Offerings","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/coaching-offerings.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/coaching-offerings.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three coaching engagement types as cards with included items and a from price so visitors can self-sort before reaching out.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-coaching-packages","type":"registry:block","title":"Coaching Packages","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/coaching-packages.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/coaching-packages.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three named coaching packages with session counts, durations, prices, and included items, one marked recommended, plus a scoping note confirming fit before payment.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-coaching-principles","type":"registry:block","title":"Coaching Principles","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/coaching-principles.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/coaching-principles.tsx"}],"description":"Five numbered coaching ground rules in a divided list beside an intro, a short origin note, and a three-fact track record panel."},{"name":"portfolio-pro-coaching-mentoring-engagement-timeline","type":"registry:block","title":"Engagement Timeline","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/engagement-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/engagement-timeline.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A five phase vertical timeline tracing a coaching engagement from free intake call to the one month check-in, plus a strip of what stays after.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-group-cohort","type":"registry:block","title":"Group Cohort","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/group-cohort.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/group-cohort.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A six week group program pairing a curriculum list with a cohort card showing start date, schedule, seats left, price, and a reserve action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-mentee-outcomes","type":"registry:block","title":"Mentee Outcomes","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/mentee-outcomes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/mentee-outcomes.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A summary stat row and three outcome cards pairing then and now role panels with mentee quotes, avatars, and engagement lengths."},{"name":"portfolio-pro-coaching-mentoring-mentorship-card","type":"registry:block","title":"Mentorship Card","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/mentorship-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/mentorship-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A free or low-cost mentorship offer naming who it is for, the monthly cadence, the pay-what-you-can cost, and a four-step application process.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-office-hours","type":"registry:block","title":"Office Hours","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/office-hours.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/office-hours.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Open weekly slots with a spots-remaining count, a good-for list, a not-the-right-fit list, and a how-it-works breakdown for free 25-minute advice calls.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-coaching-mentoring-session-formats","type":"registry:block","title":"Session Formats","files":[{"path":"components/blocks/portfolio-pro/coaching-mentoring/session-formats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/coaching-mentoring/session-formats.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Four format cards for video, async review, voice notes, and in person days, with best-when lists and a how-to-choose strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-collaborations-brands-worked-with","type":"registry:block","title":"Brands Worked With","files":[{"path":"components/blocks/portfolio-pro/collaborations/brands-worked-with.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/brands-worked-with.tsx"}],"description":"A wordmark grid of twelve named client brands with sector labels, a total client count, and a four-column breakdown of work by engagement type."},{"name":"portfolio-pro-collaborations-collab-cta","type":"registry:block","title":"Collab Cta","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column band listing four genuine collaboration types in a ruled list with explicit exclusions and a direct contact email button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-collaborations-collab-faq","type":"registry:block","title":"Collab Faq","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A two-column FAQ answering five questions studios ask before a joint project, beside a heading and a three-row list of fixed terms.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-collaborations-collab-formats","type":"registry:block","title":"Collab Formats","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-formats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-formats.tsx"}],"description":"Three engagement format cards, each with a summary, a ruled facts list of length, team shape, and fit, plus a recent partner example."},{"name":"portfolio-pro-collaborations-collab-grid","type":"registry:block","title":"Collab Grid","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-card grid of joint projects each naming the partner, their discipline and location, the deliverable, and the year."},{"name":"portfolio-pro-collaborations-collab-logos","type":"registry:block","title":"Collab Logos","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-logos.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-logos.tsx"}],"description":"A four-column wordmark grid of collaborated companies each showing the brand name and the type of engagement as a secondary line."},{"name":"portfolio-pro-collaborations-collab-process","type":"registry:block","title":"Collab Process","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-process.tsx"}],"description":"Four numbered stage cards from first call to shipped work, each with a timing line, over a three cell band of working agreements."},{"name":"portfolio-pro-collaborations-collab-timeline","type":"registry:block","title":"Collab Timeline","files":[{"path":"components/blocks/portfolio-pro/collaborations/collab-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/collab-timeline.tsx"}],"description":"A year-by-year ruled ledger of five joint projects, each entry naming the partner, the shared deliverable, and the role split."},{"name":"portfolio-pro-collaborations-featured-collab","type":"registry:block","title":"Featured Collab","files":[{"path":"components/blocks/portfolio-pro/collaborations/featured-collab.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/featured-collab.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split block spotlighting one joint project with a Placeholder image, a two-paragraph story including a constraint named, and a five-row facts list."},{"name":"portfolio-pro-collaborations-partner-quotes","type":"registry:block","title":"Partner Quotes","files":[{"path":"components/blocks/portfolio-pro/collaborations/partner-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/partner-quotes.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two large quote cards from past collaborators with avatar attribution and a footer row naming the shared project and their side of the split."},{"name":"portfolio-pro-collaborations-partners-row","type":"registry:block","title":"Partners Row","files":[{"path":"components/blocks/portfolio-pro/collaborations/partners-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/partners-row.tsx"}],"description":"A divided wordmark grid of eight collaborators each showing the name and a one-word discipline label under a section heading."},{"name":"portfolio-pro-collaborations-repeat-partners","type":"registry:block","title":"Repeat Partners","files":[{"path":"components/blocks/portfolio-pro/collaborations/repeat-partners.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/collaborations/repeat-partners.tsx"}],"description":"A ruled ledger of four returning collaborators, each row pairing discipline and a working note with a tabular count of projects and years."},{"name":"portfolio-pro-comparison-sections-am-i-the-right-fit","type":"registry:block","title":"Am I the Right Fit","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/am-i-the-right-fit.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/am-i-the-right-fit.tsx"}],"description":"Two honest panels of fit signals, a good fit checklist beside reasons to look elsewhere, each item backed by a one line detail.","dependencies":["lucide-react"]},{"name":"portfolio-pro-comparison-sections-before-and-after","type":"registry:block","title":"Before And After","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/before-and-after.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/before-and-after.tsx"}],"description":"Five paired before and after panels joined by arrows, each labelled by the dimension that changed, selling outcomes rather than deliverables.","dependencies":["lucide-react"]},{"name":"portfolio-pro-comparison-sections-by-the-numbers","type":"registry:block","title":"By the Numbers","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/by-the-numbers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/by-the-numbers.tsx"}],"description":"Five project metrics as paired horizontal bars comparing a typical engagement with mine, each metric captioned and labelled with plain values."},{"name":"portfolio-pro-comparison-sections-comparison-table","type":"registry:block","title":"Comparison Table","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/comparison-table.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/comparison-table.tsx"}],"description":"Nine criteria rows comparing this person against a typical alternative using check and minus icons, with honest gaps on both sides.","dependencies":["lucide-react"]},{"name":"portfolio-pro-comparison-sections-expectations-vs-reality","type":"registry:block","title":"Expectations Vs Reality","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/expectations-vs-reality.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/expectations-vs-reality.tsx"}],"description":"Five assumptions about hiring a solo designer paired row by row with what actually happens, including one the block admits is true."},{"name":"portfolio-pro-comparison-sections-freelance-vs-agency","type":"registry:block","title":"Freelance Vs Agency","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/freelance-vs-agency.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/freelance-vs-agency.tsx"}],"description":"A three-column table comparing freelance and agency across seven criteria including cost, speed to start, and institutional knowledge."},{"name":"portfolio-pro-comparison-sections-freelance-vs-inhouse","type":"registry:block","title":"Freelance Vs Inhouse","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/freelance-vs-inhouse.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/freelance-vs-inhouse.tsx"}],"description":"A three-column table of five signals arguing honestly for hiring a freelancer or building in-house across project length, budget, and team structure."},{"name":"portfolio-pro-comparison-sections-process-comparison","type":"registry:block","title":"Process Comparison","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/process-comparison.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/process-comparison.tsx"}],"description":"Two engagement timelines side by side, a typical studio process against mine, with five numbered steps, timing labels, and an honest closing note."},{"name":"portfolio-pro-comparison-sections-shortlist-questions","type":"registry:block","title":"Shortlist Questions","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/shortlist-questions.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/shortlist-questions.tsx"}],"description":"Four questions to ask every designer you are comparing, each card pairing the question and why it matters with my answer below a divider."},{"name":"portfolio-pro-comparison-sections-template-vs-custom","type":"registry:block","title":"Template Vs Custom","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/template-vs-custom.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/template-vs-custom.tsx"}],"description":"Two decision panels weighing a bought template against custom work, each with cost and timeline facts plus the signs it is the right call."},{"name":"portfolio-pro-comparison-sections-what-makes-me-different","type":"registry:block","title":"What Makes Me Different","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/what-makes-me-different.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/what-makes-me-different.tsx"}],"description":"Three distinctive approach points each paired with an explicit tradeoff so the block reads as credible rather than promotional."},{"name":"portfolio-pro-comparison-sections-what-you-actually-pay","type":"registry:block","title":"What You Actually Pay","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/what-you-actually-pay.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/what-you-actually-pay.tsx"}],"description":"Two itemised cost ledgers pricing the same project through an agency and through me, with line notes, plain totals, and an honest caveat."},{"name":"portfolio-pro-comparison-sections-why-work-with-me","type":"registry:block","title":"Why Work With Me","files":[{"path":"components/blocks/portfolio-pro/comparison-sections/why-work-with-me.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/comparison-sections/why-work-with-me.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Four honest reasons as cards, each pairing a direct claim with the substance that makes it verifiable, the differentiation block.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-availability-and-form","type":"registry:block","title":"Availability And Form","files":[{"path":"components/blocks/portfolio-pro/contact-sections/availability-and-form.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/availability-and-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"An availability strip showing current status and four project criteria sits above a name plus email plus message form so visitors self-qualify before writing.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-calendar-embed-blueprint","type":"registry:block","title":"Calendar Embed Blueprint","files":[{"path":"components/blocks/portfolio-pro/contact-sections/calendar-embed-blueprint.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/calendar-embed-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A static booking widget blueprint showing a month grid with available and selected dates, a time-slot row, and a confirm button beside a call fact strip, ready to wire to a real scheduler.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-contact-sections-centered-contact","type":"registry:block","title":"Centered Contact","files":[{"path":"components/blocks/portfolio-pro/contact-sections/centered-contact.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/centered-contact.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A centred narrow column with a heading, a framing sentence, and a name plus email plus message form with a reply-time note below the button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-contact-card-grid","type":"registry:block","title":"Contact Card Grid","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-card-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-card-grid.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Six reach channels laid out as linked cards in a three-column grid, each naming the platform, the handle, and what that channel is best for.","dependencies":["lucide-react"]},{"name":"portfolio-pro-contact-sections-contact-details-panel","type":"registry:block","title":"Contact Details Panel","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-details-panel.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-details-panel.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A text-only ruled list of email, location, availability, and response time rows with social links beneath, no form required."},{"name":"portfolio-pro-contact-sections-contact-faq-combo","type":"registry:block","title":"Contact Faq Combo","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-faq-combo.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-faq-combo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A contact form beside three pre-emptive FAQ answers covering rates, timeline, and availability so common objections are resolved before the message is sent.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-contact-form","type":"registry:block","title":"Contact Form","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-form.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A centred name, email, and message form with a send button and an explicit two-business-day reply commitment below the submit action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-contact-split","type":"registry:block","title":"Contact Split","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-split.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A two-column contact section with a warm intro, ruled detail rows, and social links on the left and a name, email, and message form on the right.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-contact-with-availability","type":"registry:block","title":"Contact With Availability","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-with-availability.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-with-availability.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A contact section that opens with a status dot, availability label, and a four-row capacity table before presenting the inquiry form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-contact-with-map-blueprint","type":"registry:block","title":"Contact With Map Blueprint","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-with-map-blueprint.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-with-map-blueprint.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A studio contact panel beside a bg-muted inline SVG map surface with a centred MapPin marker and a location chip, no third-party embed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-contact-sections-contact-with-testimonial","type":"registry:block","title":"Contact With Testimonial","files":[{"path":"components/blocks/portfolio-pro/contact-sections/contact-with-testimonial.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-with-testimonial.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A name plus email plus message form beside a bordered client testimonial panel with a quote, avatar attribution, and two relationship facts.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-email-and-socials","type":"registry:block","title":"Email And Socials","files":[{"path":"components/blocks/portfolio-pro/contact-sections/email-and-socials.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/email-and-socials.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A centred minimal contact block with the email address rendered large as a mailto link and a row of social platform links with brand icons beneath."},{"name":"portfolio-pro-contact-sections-email-brief-checklist","type":"registry:block","title":"Email Brief Checklist","files":[{"path":"components/blocks/portfolio-pro/contact-sections/email-brief-checklist.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/email-brief-checklist.tsx"}],"description":"A large mailto link and a no forms pitch beside a checklist card covering the five details a useful first email should include.","dependencies":["lucide-react"]},{"name":"portfolio-pro-contact-sections-full-contact-page","type":"registry:block","title":"Full Contact Page","files":[{"path":"components/blocks/portfolio-pro/contact-sections/full-contact-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/full-contact-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A two-column contact section with a warm intro, ruled details list, availability block naming exclusions, social links, and a complete inquiry form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-inquiry-form","type":"registry:block","title":"Inquiry Form","files":[{"path":"components/blocks/portfolio-pro/contact-sections/inquiry-form.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/inquiry-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/native-select.tsx","type":"registry:ui","target":"components/ui/native-select.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A qualified project inquiry form with name, email, project-type and budget-range selects, a message field, and a note that scope and fee follow a discovery call.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-contact-sections-office-hours-booking","type":"registry:block","title":"Office Hours Booking","files":[{"path":"components/blocks/portfolio-pro/contact-sections/office-hours-booking.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/office-hours-booking.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three recurring office hour slots as ruled rows naming session, audience, schedule, and length, each with a book button and an email fallback.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-process-and-form","type":"registry:block","title":"Process And Form","files":[{"path":"components/blocks/portfolio-pro/contact-sections/process-and-form.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/process-and-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A numbered three step outline of the reply, intro call, and written proposal sits beside a name plus email plus message form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-contact-sections-simple-contact-row","type":"registry:block","title":"Simple Contact Row","files":[{"path":"components/blocks/portfolio-pro/contact-sections/simple-contact-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/simple-contact-row.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A single bordered row with a mailto email link on the left and three social icon and text links on the right, sized for footer-adjacent placement."},{"name":"portfolio-pro-contact-sections-social-contact-grid","type":"registry:block","title":"Social Contact Grid","files":[{"path":"components/blocks/portfolio-pro/contact-sections/social-contact-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/social-contact-grid.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A grid of six destination cards covering email, LinkedIn, GitHub, X, Instagram, and a calendar booking link, each with a description of what lives there.","dependencies":["lucide-react"]},{"name":"portfolio-pro-contact-sections-two-column-contact","type":"registry:block","title":"Two Column Contact","files":[{"path":"components/blocks/portfolio-pro/contact-sections/two-column-contact.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/two-column-contact.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A contact form on the left balanced against a ruled detail list of email, location, timezone, availability, and social links on the right.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-cta-sections-availability-band","type":"registry:block","title":"Availability Band","files":[{"path":"components/blocks/portfolio-pro/cta-sections/availability-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/availability-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A ruled availability list naming real months and booking statuses with a get-in-touch action for the one open September slot.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-availability-cta-band","type":"registry:block","title":"Availability CTA Band","files":[{"path":"components/blocks/portfolio-pro/cta-sections/availability-cta-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/availability-cta-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bordered card that states the next opening month as a heading and pairs it with a single action button linking to the contact section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-book-a-call-band","type":"registry:block","title":"Book A Call Band","files":[{"path":"components/blocks/portfolio-pro/cta-sections/book-a-call-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/book-a-call-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A call-booking band with a two-row agenda covering what the call addresses and what it skips, plus a duration row stating free 20 minutes and no prep needed.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-download-resume-cta","type":"registry:block","title":"Download Resume Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/download-resume-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/download-resume-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A resume prompt with a lede, a ruled meta strip covering last-updated date and page count, and dual actions for downloading the PDF and viewing it online.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-email-capture-cta","type":"registry:block","title":"Email Capture CTA","files":[{"path":"components/blocks/portfolio-pro/cta-sections/email-capture-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/email-capture-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A centered heading with an inline email input and submit button that collects addresses for a one-email availability notification.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-engagement-paths-cta","type":"registry:block","title":"Engagement Paths CTA","files":[{"path":"components/blocks/portfolio-pro/cta-sections/engagement-paths-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/engagement-paths-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A heading above three bordered engagement cards, each naming a way to work together with a scope note, a terms line, and its own action button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-cta-sections-full-bleed-cta","type":"registry:block","title":"Full Bleed Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/full-bleed-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/full-bleed-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bold section-filling heading with a concrete availability line and a single primary button, no gradient and no overlay.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-get-in-touch-cta","type":"registry:block","title":"Get In Touch Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/get-in-touch-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/get-in-touch-cta.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A contact band with a pill-shaped email chip and three social icon links that lets visitors follow or reach out without committing to a message."},{"name":"portfolio-pro-cta-sections-hire-me-band","type":"registry:block","title":"Hire Me Band","files":[{"path":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bordered conversion band with a confident heading, a one-line capacity note, and a single primary action that closes a portfolio page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-lets-talk-split","type":"registry:block","title":"Lets Talk Split","files":[{"path":"components/blocks/portfolio-pro/cta-sections/lets-talk-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/lets-talk-split.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column contact split with a warm heading on the left and a bordered card carrying response time, fit criteria, and preferred start date on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-newsletter-cta","type":"registry:block","title":"Newsletter Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/newsletter-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/newsletter-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A centred subscribe band with a heading naming the cadence, an honest pitch describing the content and what it excludes, and an inline email form.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-cta-sections-next-steps-cta","type":"registry:block","title":"Next Steps CTA","files":[{"path":"components/blocks/portfolio-pro/cta-sections/next-steps-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/next-steps-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered closer with three numbered steps covering the first message, a short intro call, and a written proposal, ending in one primary action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-project-inquiry-cta","type":"registry:block","title":"Project Inquiry Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/project-inquiry-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/project-inquiry-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A ruled brief prompt listing four things to include in a first message, timeline, budget range, product description, and scope, to qualify enquiries before they arrive.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-simple-contact-cta","type":"registry:block","title":"Simple Contact Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/simple-contact-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/simple-contact-cta.tsx"}],"description":"A minimal closer with a single centered heading and one large email link at heading scale, nothing else, for visitors who have already decided to reach out."},{"name":"portfolio-pro-cta-sections-split-availability-cta","type":"registry:block","title":"Split Availability Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/split-availability-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/split-availability-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column CTA with booking criteria and an availability dot on the left and what to send plus a project brief button on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-start-project-band","type":"registry:block","title":"Start Project Band","files":[{"path":"components/blocks/portfolio-pro/cta-sections/start-project-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/start-project-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A single bordered card with a confident heading, a one-line on how to begin, and a primary email action that names the response time commitment.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-stats-cta-band","type":"registry:block","title":"Stats CTA Band","files":[{"path":"components/blocks/portfolio-pro/cta-sections/stats-cta-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/stats-cta-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered band with a heading, a primary button, and a ruled three cell stat strip proving years of practice, shipped projects, and returning clients.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-testimonial-cta","type":"registry:block","title":"Testimonial CTA","files":[{"path":"components/blocks/portfolio-pro/cta-sections/testimonial-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/testimonial-cta.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column closer pairing a heading and dual actions with a bordered client quote card carrying an avatar, attribution, and an outcome line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-cta-sections-two-action-cta","type":"registry:block","title":"Two Action Cta","files":[{"path":"components/blocks/portfolio-pro/cta-sections/two-action-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/two-action-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A centered band with a heading and two equal-weight buttons offering distinct paths for visitors browsing work and visitors ready to reach out.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-design-portfolio-annotated-screen","type":"registry:block","title":"Annotated Screen","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/annotated-screen.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/annotated-screen.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single captioned product screen beside five numbered decision notes, each naming a screen region and the reasoning behind the call."},{"name":"portfolio-pro-design-portfolio-before-after-design","type":"registry:block","title":"Before After Design","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/before-after-design.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/before-after-design.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A redesign proof with side-by-side Placeholder visuals and a ruled change table naming the constraint and three specific before-and-after decisions."},{"name":"portfolio-pro-design-portfolio-brand-showcase","type":"registry:block","title":"Brand Showcase","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/brand-showcase.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/brand-showcase.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A brand identity case showing logo mark, theme-token colour swatches, typography panel, and three application mockups for one project."},{"name":"portfolio-pro-design-portfolio-case-study-design","type":"registry:block","title":"Case Study Design","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/case-study-design.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/case-study-design.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A design case study with a sticky screen stack and result strip on the left and a four-section narrative (problem, approach, constraint, outcome) on the right."},{"name":"portfolio-pro-design-portfolio-concept-grid","type":"registry:block","title":"Concept Grid","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/concept-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/concept-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A process-transparency grid of six unexplored or unshipped design directions, each with a Placeholder tile and an honest reason it was set aside."},{"name":"portfolio-pro-design-portfolio-design-principles","type":"registry:block","title":"Design Principles","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/design-principles.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/design-principles.tsx"}],"description":"A ruled three-column grid of six numbered working principles, each pairing a short titled belief with an honest explanation of its impact."},{"name":"portfolio-pro-design-portfolio-design-process","type":"registry:block","title":"Design Process","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/design-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/design-process.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A five-step design process block with numbered rows each carrying a title, duration, Placeholder illustration, and an honest description of the step output."},{"name":"portfolio-pro-design-portfolio-design-system-display","type":"registry:block","title":"Design System Display","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/design-system-display.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/design-system-display.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A systems-work section showing a shared design system as colour token swatches, a six-step type scale, and three component documentation cards."},{"name":"portfolio-pro-design-portfolio-featured-project","type":"registry:block","title":"Featured Project","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/featured-project.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/featured-project.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A flagship project split with a full-height Placeholder screen beside a summary, five ruled spec rows, and three measured outcome stats.","dependencies":["lucide-react"]},{"name":"portfolio-pro-design-portfolio-logo-grid","type":"registry:block","title":"Logo Grid","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/logo-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/logo-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An eight-mark logo portfolio grid with centred monogram overlays on Placeholder tiles, each labelled by client name and mark kind."},{"name":"portfolio-pro-design-portfolio-project-index","type":"registry:block","title":"Project Index","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/project-index.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/project-index.tsx"}],"description":"A ruled archive table of every project by year with client sector and deliverable columns and a row-level arrow link to each case.","dependencies":["lucide-react"]},{"name":"portfolio-pro-design-portfolio-screens-carousel-blueprint","type":"registry:block","title":"Screens Carousel Blueprint","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/screens-carousel-blueprint.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/screens-carousel-blueprint.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A static carousel blueprint of five app screens with prev and next affordances, dot indicators, and a thumbnail strip with one slide active.","dependencies":["lucide-react"]},{"name":"portfolio-pro-design-portfolio-ui-wall","type":"registry:block","title":"UI Wall","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/ui-wall.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/ui-wall.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A six-screen product interface grid with state-level captions showing the full range of a design system from empty states to dense data views."},{"name":"portfolio-pro-design-portfolio-visual-grid","type":"registry:block","title":"Visual Grid","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/visual-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/visual-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A dense nine-item square grid of design shots with minimal captions for explorations and process fragments that did not fit a case study."},{"name":"portfolio-pro-design-portfolio-work-showcase","type":"registry:block","title":"Work Showcase","files":[{"path":"components/blocks/portfolio-pro/design-portfolio/work-showcase.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/design-portfolio/work-showcase.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-project design grid where each card names the client type, the role, the year, and the specific deliverables the designer owned.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-api-project-card","type":"registry:block","title":"Api Project Card","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/api-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/api-project-card.tsx"}],"description":"A two-column backend project card pairing a project description and stack chips with a static mono panel showing a sample endpoint path and a formatted HTTP response.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-career-timeline","type":"registry:block","title":"Career Timeline","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/career-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/career-timeline.tsx"}],"description":"Reverse chronological engineering roles as ruled rows pairing period and tenure with role, company, summary, a shipped highlight, and stack tags."},{"name":"portfolio-pro-developer-portfolio-code-snippet","type":"registry:block","title":"Code Snippet","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/code-snippet.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/code-snippet.tsx"}],"description":"A production function displayed in a mono bg-muted editor panel with a filename tab, gutter line numbers, and a caption explaining the technical tradeoff the snippet demonstrates."},{"name":"portfolio-pro-developer-portfolio-contributions-grid","type":"registry:block","title":"Contributions Grid","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/contributions-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/contributions-grid.tsx"}],"description":"An activity heatmap showing 1654 contributions across 52 weeks using theme-token opacity squares with a streak note and quarterly commit breakdown."},{"name":"portfolio-pro-developer-portfolio-engineering-principles","type":"registry:block","title":"Engineering Principles","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/engineering-principles.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/engineering-principles.tsx"}],"description":"Six numbered engineering principles in an editorial three column grid, each pairing a mono index with a short title and a first person note."},{"name":"portfolio-pro-developer-portfolio-github-stats","type":"registry:block","title":"Github Stats","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/github-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/github-stats.tsx"}],"description":"A four-figure contribution stat strip above a 52-week CSS-grid heatmap built with theme-token opacity squares and a deterministic seed, with no green color scale."},{"name":"portfolio-pro-developer-portfolio-now-building","type":"registry:block","title":"Now Building","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/now-building.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/now-building.tsx"}],"description":"A stacked list of 3 projects currently in development, each with a status badge, technical description, and a dated progress note.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-open-source-list","type":"registry:block","title":"Open Source List","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/open-source-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/open-source-list.tsx"}],"description":"A ruled-row list of open-source contributions each naming the project, a specific description of the work done, a tabular star count, and a Maintainer or Contributor role badge.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-project-list","type":"registry:block","title":"Project List","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/project-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/project-list.tsx"}],"description":"A ruled-row developer projects index with stack chips, a one-line summary, and separate repo and live links per project.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-project-repos","type":"registry:block","title":"Project Repos","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/project-repos.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/project-repos.tsx"}],"description":"A four-card grid of public repositories each showing the project name, a one-line description, the stack as chips, and tabular stars and forks counts with a repo link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-published-packages","type":"registry:block","title":"Published Packages","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/published-packages.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/published-packages.tsx"}],"description":"A ruled list of maintained npm packages, each row with the name, version, license, weekly downloads, a short description, and an install command.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-skills-and-projects","type":"registry:block","title":"Skills and Projects","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/skills-and-projects.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/skills-and-projects.tsx"}],"description":"A two-column block with the technology stack organised into labelled chip categories on the left and a ruled list of representative projects on the right.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-system-design-case","type":"registry:block","title":"System Design Case","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/system-design-case.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/system-design-case.tsx"}],"description":"A case study split pairing the problem, numbered architecture decisions, and outcome metrics with a blueprint panel tracing the ingest and read paths.","dependencies":["lucide-react"]},{"name":"portfolio-pro-developer-portfolio-tech-stack-detail","type":"registry:block","title":"Tech Stack Detail","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/tech-stack-detail.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/tech-stack-detail.tsx"}],"description":"A four-column grid of technologies grouped under Languages, Frameworks, Infrastructure, and Tools, each item showing a two-letter mark and a short honest context note."},{"name":"portfolio-pro-developer-portfolio-terminal-intro","type":"registry:block","title":"Terminal Intro","files":[{"path":"components/blocks/portfolio-pro/developer-portfolio/terminal-intro.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/terminal-intro.tsx"}],"description":"A full-viewport hero split with an h1 and lede on the left and a static mono terminal panel on the right showing a whoami command with structured key-value output and a static cursor."},{"name":"portfolio-pro-experience-sections-career-chapters","type":"registry:block","title":"Career Chapters","files":[{"path":"components/blocks/portfolio-pro/experience-sections/career-chapters.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/career-chapters.tsx"}],"description":"The full history grouped into three named eras as columns, each with a year range, a first person narrative, and a ruled list of roles."},{"name":"portfolio-pro-experience-sections-career-timeline","type":"registry:block","title":"Career Timeline","files":[{"path":"components/blocks/portfolio-pro/experience-sections/career-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/career-timeline.tsx"}],"description":"A vertical connected timeline of key roles and turning points with year markers and short narrative descriptions of how each move built on the last."},{"name":"portfolio-pro-experience-sections-client-engagements","type":"registry:block","title":"Client Engagements","files":[{"path":"components/blocks/portfolio-pro/experience-sections/client-engagements.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/client-engagements.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Freelance work listed as a ruled index, each row pairing client and sector with a one line deliverable, an engagement type badge, and the year.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-experience-sections-compact-history","type":"registry:block","title":"Compact History","files":[{"path":"components/blocks/portfolio-pro/experience-sections/compact-history.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/compact-history.tsx"}],"description":"A ruled list of roles showing company, title, and year range in tabular-nums, fitting five positions into a minimal footprint."},{"name":"portfolio-pro-experience-sections-current-position","type":"registry:block","title":"Current Position","files":[{"path":"components/blocks/portfolio-pro/experience-sections/current-position.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/current-position.tsx"}],"description":"A two-column card stating the present role with company, title, focus rows, and a plain note on what the person is and is not open to."},{"name":"portfolio-pro-experience-sections-experience-detail","type":"registry:block","title":"Experience Detail","files":[{"path":"components/blocks/portfolio-pro/experience-sections/experience-detail.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/experience-detail.tsx"}],"description":"A single role expanded with company, tenure, scope, a not in scope list, and key project cards each naming the work done and the measured outcome."},{"name":"portfolio-pro-experience-sections-experience-tabs","type":"registry:block","title":"Experience Tabs","files":[{"path":"components/blocks/portfolio-pro/experience-sections/experience-tabs.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/experience-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A vertical rail of companies switches a detail panel showing the role title, a first person summary, what you owned, and a stat row.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-experience-sections-experience-with-logos","type":"registry:block","title":"Experience With Logos","files":[{"path":"components/blocks/portfolio-pro/experience-sections/experience-with-logos.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/experience-with-logos.tsx"}],"description":"A ruled history list where each role leads with an inline SVG company wordmark alongside title, date range, and a one-line summary."},{"name":"portfolio-pro-experience-sections-growth-matrix","type":"registry:block","title":"Growth Matrix","files":[{"path":"components/blocks/portfolio-pro/experience-sections/growth-matrix.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/growth-matrix.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"Areas of responsibility as rows and career levels as columns, with filled, faded, and empty dots marking what was owned or contributed at each stage."},{"name":"portfolio-pro-experience-sections-highlights-band","type":"registry:block","title":"Highlights Band","files":[{"path":"components/blocks/portfolio-pro/experience-sections/highlights-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/highlights-band.tsx"}],"description":"A four-cell bordered grid strip presenting standout career moments each with a bold label and a concrete outcome sentence."},{"name":"portfolio-pro-experience-sections-positions-list","type":"registry:block","title":"Positions List","files":[{"path":"components/blocks/portfolio-pro/experience-sections/positions-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/positions-list.tsx"}],"description":"A compact ruled index of every role with company, title, employment type, and year range and no descriptions by design."},{"name":"portfolio-pro-experience-sections-role-highlights","type":"registry:block","title":"Role Highlights","files":[{"path":"components/blocks/portfolio-pro/experience-sections/role-highlights.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/role-highlights.tsx"}],"description":"Cards for the two or three most consequential roles, each with a context sentence and bulleted achievements that include concrete numbers."},{"name":"portfolio-pro-experience-sections-work-history","type":"registry:block","title":"Work History","files":[{"path":"components/blocks/portfolio-pro/experience-sections/work-history.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/experience-sections/work-history.tsx"}],"description":"A ruled list of every role with company, title, date range, and a one-sentence summary covering the full employment record."},{"name":"portfolio-pro-faq-sections-anchored-faq","type":"registry:block","title":"Anchored FAQ","files":[{"path":"components/blocks/portfolio-pro/faq-sections/anchored-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/anchored-faq.tsx"}],"description":"A FAQ with a sticky anchor rail listing three topic sections beside always open ruled answers, keeping long lists navigable without accordions."},{"name":"portfolio-pro-faq-sections-availability-faq","type":"registry:block","title":"Availability Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/availability-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/availability-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An availability FAQ that states the real next opening month in the lede and answers five questions about lead time, rush work, waiting list, and start date slippage.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-centered-faq","type":"registry:block","title":"Centered Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/centered-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/centered-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A centered heading and lede above a narrow max-w-2xl accordion of six working-together questions with specific policy answers.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-faq-accordion","type":"registry:block","title":"Faq Accordion","files":[{"path":"components/blocks/portfolio-pro/faq-sections/faq-accordion.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/faq-accordion.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A six-question general FAQ accordion covering how to start, revisions, time zones, file ownership, and NDA signing, with the first item open by default.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-faq-three-column","type":"registry:block","title":"Faq Three Column","files":[{"path":"components/blocks/portfolio-pro/faq-sections/faq-three-column.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/faq-three-column.tsx"}],"description":"Nine questions and answers laid out in three equal columns as plain text blocks for at-a-glance scanning without interaction."},{"name":"portfolio-pro-faq-sections-faq-with-contact","type":"registry:block","title":"Faq With Contact","files":[{"path":"components/blocks/portfolio-pro/faq-sections/faq-with-contact.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/faq-with-contact.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A five-question accordion beside a sticky contact nudge card so visitors whose question is not listed can reach out without leaving the page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-grouped-faq","type":"registry:block","title":"Grouped Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/grouped-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/grouped-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A FAQ block that organizes questions into three topic groups (Process, Pricing, Working together) each rendered as a collapsible accordion.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-inline-faq-list","type":"registry:block","title":"Inline Faq List","files":[{"path":"components/blocks/portfolio-pro/faq-sections/inline-faq-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/inline-faq-list.tsx"}],"description":"A FAQ block that shows all questions and answers as always-open ruled rows in a two-column grid with no accordion."},{"name":"portfolio-pro-faq-sections-numbered-faq","type":"registry:block","title":"Numbered FAQ","files":[{"path":"components/blocks/portfolio-pro/faq-sections/numbered-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/numbered-faq.tsx"}],"description":"An editorial FAQ of six always open questions in a single narrow column, each led by a large index numeral and separated by ruled dividers."},{"name":"portfolio-pro-faq-sections-pricing-faq","type":"registry:block","title":"Pricing Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/pricing-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/pricing-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A five-question pricing FAQ stating project cost ranges, payment installments, delay responsibility, refund policy, and retainer terms without hedging.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-process-faq","type":"registry:block","title":"Process Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/process-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/process-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A five-question process FAQ covering revision rounds, how to give feedback, handoff deliverables, source file ownership, and how design disagreements are handled.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-tabbed-faq","type":"registry:block","title":"Tabbed FAQ","files":[{"path":"components/blocks/portfolio-pro/faq-sections/tabbed-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/tabbed-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A tabbed FAQ that splits questions into Projects, Pricing, and Logistics tabs, each revealing its own accordion of answers below a centered heading.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-two-column-faq","type":"registry:block","title":"Two Column Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/two-column-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/two-column-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A two-column FAQ with a heading and quick-facts strip on the left and a five-question accordion on the right in a balanced split layout.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-working-faq","type":"registry:block","title":"Working Faq","files":[{"path":"components/blocks/portfolio-pro/faq-sections/working-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/working-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A five-question collaboration FAQ answering how often you will talk, what the client needs to provide, scope changes, feedback format, and typical timelines.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-faq-sections-yes-no-faq","type":"registry:block","title":"Yes No FAQ","files":[{"path":"components/blocks/portfolio-pro/faq-sections/yes-no-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/faq-sections/yes-no-faq.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A rapid FAQ of nine questions in a three column card grid, each led by a Yes, No, or Depends badge above a short answer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-footers-big-cta-footer","type":"registry:block","title":"Big Cta Footer","files":[{"path":"components/blocks/portfolio-pro/footers/big-cta-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/big-cta-footer.tsx"}],"description":"A conversion footer with a status line, a heading, a qualifier sentence, and a large email link filling the card, with compact links and a copyright line below.","dependencies":["lucide-react"]},{"name":"portfolio-pro-footers-big-name-footer","type":"registry:block","title":"Big Name Footer","files":[{"path":"components/blocks/portfolio-pro/footers/big-name-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/big-name-footer.tsx"}],"description":"A footer centred on the name and a tagline set at heading scale, with a ruled divider separating a short page link row and a copyright line."},{"name":"portfolio-pro-footers-centered-footer","type":"registry:block","title":"Centered Footer","files":[{"path":"components/blocks/portfolio-pro/footers/centered-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/centered-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A fully centered footer with the name mark, a row of nav links, a row of social icon links, and a copyright line separated by a top border."},{"name":"portfolio-pro-footers-colophon-footer","type":"registry:block","title":"Colophon Footer","files":[{"path":"components/blocks/portfolio-pro/footers/colophon-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/colophon-footer.tsx"}],"description":"A colophon footer pairing a name and site note with a ruled definition list of typefaces, stack, tools, and last update, above a copyright line."},{"name":"portfolio-pro-footers-columns-and-social-footer","type":"registry:block","title":"Columns And Social Footer","files":[{"path":"components/blocks/portfolio-pro/footers/columns-and-social-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/columns-and-social-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A three-column footer with a brand bio, a navigation column, and a contact column, topped by a social icon row and copyright bar."},{"name":"portfolio-pro-footers-contact-footer","type":"registry:block","title":"Contact Footer","files":[{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A contact footer with a large email address as the centrepiece, social icon links, a compact site nav, and a copyright line inside a rounded card."},{"name":"portfolio-pro-footers-footer-with-availability","type":"registry:block","title":"Footer With Availability","files":[{"path":"components/blocks/portfolio-pro/footers/footer-with-availability.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/footer-with-availability.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A two-column footer pairing the name, positioning line, and email on the left with a toggling availability status card and social icons on the right."},{"name":"portfolio-pro-footers-footer-with-cta-band","type":"registry:block","title":"Footer With CTA Band","files":[{"path":"components/blocks/portfolio-pro/footers/footer-with-cta-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/footer-with-cta-band.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A footer that opens with a bordered card holding a lets-work heading and action button, then closes with nav links, social icons, and a copyright line.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-footers-footer-with-nav","type":"registry:block","title":"Footer With Nav","files":[{"path":"components/blocks/portfolio-pro/footers/footer-with-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/footer-with-nav.tsx"}],"description":"A footer with four labelled link columns covering Work, About, Contact, and Social, the studio name and tagline above, and a copyright bar below."},{"name":"portfolio-pro-footers-footer-with-newsletter","type":"registry:block","title":"Footer With Newsletter","files":[{"path":"components/blocks/portfolio-pro/footers/footer-with-newsletter.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/footer-with-newsletter.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A footer pairing contact details and social icons with an inline newsletter subscribe form inside a bordered card above a copyright bar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-footers-footer-with-now","type":"registry:block","title":"Footer With Now","files":[{"path":"components/blocks/portfolio-pro/footers/footer-with-now.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/footer-with-now.tsx"}],"description":"A now panel of three ruled cells reporting what the owner builds, where they are based, and current interests, above a nav and copyright bar."},{"name":"portfolio-pro-footers-latest-writing-footer","type":"registry:block","title":"Latest Writing Footer","files":[{"path":"components/blocks/portfolio-pro/footers/latest-writing-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/latest-writing-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A footer pairing a brand column with a ruled list of recent essays, each titled and dated, plus a view all link and copyright bar.","dependencies":["lucide-react"]},{"name":"portfolio-pro-footers-minimal-link-footer","type":"registry:block","title":"Minimal Link Footer","files":[{"path":"components/blocks/portfolio-pro/footers/minimal-link-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/minimal-link-footer.tsx"}],"description":"A single centered row of text nav links above a copyright line, the smallest possible footer for pages that close with a strong CTA section."},{"name":"portfolio-pro-footers-minimal-signoff-footer","type":"registry:block","title":"Minimal Signoff Footer","files":[{"path":"components/blocks/portfolio-pro/footers/minimal-signoff-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/minimal-signoff-footer.tsx"}],"description":"A single ruled line carrying the name and copyright year on one side and a made-with location line on the other, with no nav or social links."},{"name":"portfolio-pro-footers-recent-work-footer","type":"registry:block","title":"Recent Work Footer","files":[{"path":"components/blocks/portfolio-pro/footers/recent-work-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/recent-work-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A footer opening with three latest project thumbnails, closed by a ruled bar carrying the copyright, a compact nav, and a row of social icons.","dependencies":["lucide-react"]},{"name":"portfolio-pro-footers-sitemap-footer","type":"registry:block","title":"Sitemap Footer","files":[{"path":"components/blocks/portfolio-pro/footers/sitemap-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/sitemap-footer.tsx"}],"description":"A complete portfolio footer with the name set at heading scale and five link columns covering Work, Writing, About, Contact, and Social."},{"name":"portfolio-pro-footers-social-row-footer","type":"registry:block","title":"Social Row Footer","files":[{"path":"components/blocks/portfolio-pro/footers/social-row-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/social-row-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A centred footer showing the name at heading scale, a one-line tagline, a row of social icon links, and a copyright line with no other navigation."},{"name":"portfolio-pro-footers-three-column-footer","type":"registry:block","title":"Three Column Footer","files":[{"path":"components/blocks/portfolio-pro/footers/three-column-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/three-column-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A three-column footer with a brand and tagline column, a navigation links column, and a contact and social column, plus a full-width copyright bar."},{"name":"portfolio-pro-gallery-sections-album-grid","type":"registry:block","title":"Album Grid","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/album-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/album-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A collections index of six named photography series, each card showing a cover image, album title, photo count, and date range."},{"name":"portfolio-pro-gallery-sections-before-after-gallery","type":"registry:block","title":"Before After Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/before-after-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/before-after-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three retouching pairs showing a before and after image side by side with a technical note naming the specific technique applied to each."},{"name":"portfolio-pro-gallery-sections-captioned-gallery","type":"registry:block","title":"Captioned Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/captioned-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/captioned-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four photographs each paired with a full documentary caption naming where, when, and the story behind how the frame was made."},{"name":"portfolio-pro-gallery-sections-columns-gallery","type":"registry:block","title":"Columns Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/columns-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/columns-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-column uniform grid of twelve captioned Placeholder tiles showing project name and client for a large body of work."},{"name":"portfolio-pro-gallery-sections-contact-sheet","type":"registry:block","title":"Contact Sheet","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/contact-sheet.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/contact-sheet.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A ring framed sheet panel with a roll header above a dense grid of numbered mono frames, two ringed as picks marked for print."},{"name":"portfolio-pro-gallery-sections-filmstrip-gallery","type":"registry:block","title":"Filmstrip Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/filmstrip-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/filmstrip-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A horizontally scrolling row of wide film frames with mono frame codes and captions beneath each, plus roll metadata beside the heading."},{"name":"portfolio-pro-gallery-sections-full-bleed-gallery","type":"registry:block","title":"Full Bleed Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/full-bleed-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/full-bleed-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Four large edge-to-edge images stacked vertically with a sentence caption and location plus date beside each frame for immersive editorial presentation."},{"name":"portfolio-pro-gallery-sections-full-width-rows","type":"registry:block","title":"Full Width Rows","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/full-width-rows.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/full-width-rows.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Large images stacked at full container width with a title, a context-naming caption, and a two-digit series counter beneath each."},{"name":"portfolio-pro-gallery-sections-grid-with-filters","type":"registry:block","title":"Grid With Filters","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/grid-with-filters.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/grid-with-filters.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A client-rendered gallery with category chips that filter image tiles via useState and a live count showing how many images are visible."},{"name":"portfolio-pro-gallery-sections-index-preview-gallery","type":"registry:block","title":"Index Preview Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/index-preview-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/index-preview-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A numbered list of works with medium and year on the left beside a large preview of the highlighted row with its caption and counter."},{"name":"portfolio-pro-gallery-sections-lightbox-blueprint","type":"registry:block","title":"Lightbox Blueprint","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/lightbox-blueprint.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/lightbox-blueprint.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A static open-state lightbox layout showing a centered large image with prev/next controls, a frame counter, caption, and thumbnail strip over a dark scrim.","dependencies":["lucide-react"]},{"name":"portfolio-pro-gallery-sections-photo-grid","type":"registry:block","title":"Photo Grid","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/photo-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/photo-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three-column grid of nine square photography frames with hover captions showing location, date, and subject for each shot."},{"name":"portfolio-pro-gallery-sections-photo-masonry","type":"registry:block","title":"Photo Masonry","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/photo-masonry.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/photo-masonry.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A CSS-columns masonry gallery of twelve Placeholder images in mixed aspect ratios that form a dense visual wall of travel photography."},{"name":"portfolio-pro-gallery-sections-spotlight-gallery","type":"registry:block","title":"Spotlight Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/spotlight-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/spotlight-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A large main image with a captioned location and date above a five-thumbnail strip with the active selection ringed."},{"name":"portfolio-pro-gallery-sections-thumbnail-strip","type":"registry:block","title":"Thumbnail Strip","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/thumbnail-strip.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/thumbnail-strip.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A compact responsive grid of square Placeholder thumbnails labelled with a series name and year for browsing a photographic archive."},{"name":"portfolio-pro-gallery-sections-two-up-gallery","type":"registry:block","title":"Two Up Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/two-up-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/two-up-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An editorial two-column image layout pairing photographs by series with title and medium captions beneath each image."},{"name":"portfolio-pro-gallery-sections-year-archive-gallery","type":"registry:block","title":"Year Archive Gallery","files":[{"path":"components/blocks/portfolio-pro/gallery-sections/year-archive-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/gallery-sections/year-archive-gallery.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Work grouped into bordered rows by year, each pairing a large year heading, frame count, and note with a four image row of selects.","dependencies":["lucide-react"]},{"name":"portfolio-pro-hero-sections-availability-hero","type":"registry:block","title":"Availability Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/availability-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/availability-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A freelancer hero that centres a card showing the next open project slot, the slot count, and the typical engagement length beside a get-in-touch action.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-big-type-hero","type":"registry:block","title":"Big Type Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/big-type-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/big-type-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A fold-filling hero that renders the name at oversized typographic scale with a discipline line, lede, two actions, and a three-cell grounding facts grid.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-career-timeline-hero","type":"registry:block","title":"Career Timeline Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/career-timeline-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/career-timeline-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A split hero with name, lede, actions, and availability note beside a bordered timeline panel listing each chapter with years, role, and detail.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-centered-statement-hero","type":"registry:block","title":"Centered Statement Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/centered-statement-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/centered-statement-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A symmetric portfolio opener with everything centered around a single strong positioning sentence, a quiet role lede, and one action button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-client-quote-hero","type":"registry:block","title":"Client Quote Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/client-quote-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/client-quote-hero.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with name, role lede, and two actions above a full width client quote strip carrying the quote, an avatar, and attribution.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-cta-focused-hero","type":"registry:block","title":"Cta Focused Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/cta-focused-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/cta-focused-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A conversion-first hero with a single confident headline, a start-a-project button, and a four-figure trust signal strip at the base of the fold.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-featured-case-hero","type":"registry:block","title":"Featured Case Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/featured-case-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/featured-case-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split hero with name, positioning lede, detail strip, and actions beside a single featured case study panel showing a thumbnail and outcome rows.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-hero-with-marquee","type":"registry:block","title":"Hero With Marquee","files":[{"path":"components/blocks/portfolio-pro/hero-sections/hero-with-marquee.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/hero-with-marquee.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A fold-filling hero with a declarative h1, lede, two actions, a static row of service chips as a skills strip, and a three-cell availability facts grid.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-intro-paragraph-hero","type":"registry:block","title":"Intro Paragraph Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/intro-paragraph-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/intro-paragraph-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero that opens with a first-person paragraph above the name and headline, followed by a single action button and a three-field detail strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-intro-with-socials","type":"registry:block","title":"Intro With Socials","files":[{"path":"components/blocks/portfolio-pro/hero-sections/intro-with-socials.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/intro-with-socials.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A personal portfolio hero with a name, role lede, two actions, and a branded social icon row that moves profile links into the first viewport.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-left-aligned-hero","type":"registry:block","title":"Left Aligned Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/left-aligned-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/left-aligned-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A left-anchored editorial hero with name and role in the h1, a studio lede, two actions, and a four-row ruled metadata strip covering role, studio, availability, and clients.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-minimal-name-hero","type":"registry:block","title":"Minimal Name Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/minimal-name-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/minimal-name-hero.tsx"}],"description":"A fully reduced centered hero with the name in the h1, a role line below it, and a small set of plain text navigation links and nothing else."},{"name":"portfolio-pro-hero-sections-name-and-role-hero","type":"registry:block","title":"Name And Role Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/name-and-role-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/name-and-role-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A name and role hero with a positioning line, a three fact strip, and an honest availability note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-photo-grid-hero","type":"registry:block","title":"Photo Grid Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/photo-grid-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/photo-grid-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A hero built around a 2x2 photo tile grid with the photographer name and credential facts in a height-balanced side panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-portrait-right-hero","type":"registry:block","title":"Portrait Right Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/portrait-right-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/portrait-right-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split hero with a name, lede, actions, and three grounding facts on the left beside a tall portrait placeholder on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-process-steps-hero","type":"registry:block","title":"Process Steps Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/process-steps-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/process-steps-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a first person intro, lede, and two actions above a numbered three step strip showing how an engagement runs end to end.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-quote-hero","type":"registry:block","title":"Quote Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/quote-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/quote-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero that opens with a craft philosophy sentence as the heading and the practitioner name and studio in a quieter line below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-role-and-clients-hero","type":"registry:block","title":"Role And Clients Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/role-and-clients-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/role-and-clients-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A portfolio hero that pairs a name and role statement with an inline row of past client wordmarks placed between the lede and the action buttons.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-scrolling-roles-hero","type":"registry:block","title":"Scrolling Roles Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/scrolling-roles-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/scrolling-roles-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero that stacks every discipline this person works in as a static role list with one role emphasised and a facts panel beside it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-split-portrait-hero","type":"registry:block","title":"Split Portrait Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/split-portrait-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/split-portrait-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column hero with a name, positioning lede, and ruled availability strip on the left and an aspect-4/5 portrait placeholder on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-statement-hero","type":"registry:block","title":"Statement Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/statement-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/statement-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A stripped-back hero with one confident h1 sentence, a single lede, and one primary action directing visitors to the work.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-studio-hero","type":"registry:block","title":"Studio Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/studio-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/studio-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A small-agency opener with a studio name, a we-voice lede naming what the team does not offer, two actions, and a three-fact founding strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-two-disciplines-hero","type":"registry:block","title":"Two Disciplines Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/two-disciplines-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/two-disciplines-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero for a dual-practice creator with an h1 naming both disciplines, a lede connecting them, and two cards each pointing at one body of work.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-video-reel-hero","type":"registry:block","title":"Video Reel Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/video-reel-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/video-reel-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A hero that leads with a large video frame and play affordance, then names the director and their availability below it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-hero-sections-work-preview-hero","type":"registry:block","title":"Work Preview Hero","files":[{"path":"components/blocks/portfolio-pro/hero-sections/work-preview-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/work-preview-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A hero that leads with the name and role then immediately shows three labelled work thumbnails with role and year below each.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-music-audio-album-feature","type":"registry:block","title":"Album Feature","files":[{"path":"components/blocks/portfolio-pro/music-audio/album-feature.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/album-feature.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split layout pairing a large Placeholder album cover with a full ruled tracklist, meta line, short release note, and platform links."},{"name":"portfolio-pro-music-audio-booking-panel","type":"registry:block","title":"Booking Panel","files":[{"path":"components/blocks/portfolio-pro/music-audio/booking-panel.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/booking-panel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A live booking split pairing a ruled list of set formats with a details card of availability, a rider link, and a request button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-music-audio-discography-grid","type":"registry:block","title":"Discography Grid","files":[{"path":"components/blocks/portfolio-pro/music-audio/discography-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/discography-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A six-album grid with Placeholder covers, titles, years, and track counts spanning a full catalogue from debut to latest release."},{"name":"portfolio-pro-music-audio-gig-list","type":"registry:block","title":"Gig List","files":[{"path":"components/blocks/portfolio-pro/music-audio/gig-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/gig-list.tsx"}],"description":"Upcoming shows as ruled rows with date, venue, city, and a tickets link, followed by muted past shows as an archive beneath.","dependencies":["lucide-react"]},{"name":"portfolio-pro-music-audio-listen-card","type":"registry:block","title":"Listen Card","files":[{"path":"components/blocks/portfolio-pro/music-audio/listen-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/listen-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A featured track card with a Placeholder cover, static div-bar waveform in theme tokens, and text links to four streaming platforms.","dependencies":["lucide-react"]},{"name":"portfolio-pro-music-audio-music-hero","type":"registry:block","title":"Music Hero","files":[{"path":"components/blocks/portfolio-pro/music-audio/music-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/music-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A fold-filling hero with a sentence h1, album lede, play and releases CTAs, a three-stat strip, and a Placeholder album cover beside it.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-music-audio-press-kit","type":"registry:block","title":"Press Kit","files":[{"path":"components/blocks/portfolio-pro/music-audio/press-kit.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/press-kit.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A press kit section pairing an approved short bio and press pull quotes with two photos and a ruled list of downloadable assets.","dependencies":["lucide-react"]},{"name":"portfolio-pro-music-audio-releases-row","type":"registry:block","title":"Releases Row","files":[{"path":"components/blocks/portfolio-pro/music-audio/releases-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/releases-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-column grid of recent album and EP cards each with a Placeholder cover, title, year, format, and a listen link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-music-audio-studio-services","type":"registry:block","title":"Studio Services","files":[{"path":"components/blocks/portfolio-pro/music-audio/studio-services.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/studio-services.tsx"}],"description":"Three service cards for mixing, mastering, and production, each with a rate, a checklist of what is included, and a turnaround line.","dependencies":["lucide-react"]},{"name":"portfolio-pro-music-audio-sync-placements","type":"registry:block","title":"Sync Placements","files":[{"path":"components/blocks/portfolio-pro/music-audio/sync-placements.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/sync-placements.tsx"}],"description":"Selected sync licensing credits in three columns for film and television, advertising, and games, each a ruled list with a licensing link below.","dependencies":["lucide-react"]},{"name":"portfolio-pro-music-audio-track-list","type":"registry:block","title":"Track List","files":[{"path":"components/blocks/portfolio-pro/music-audio/track-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/music-audio/track-list.tsx"}],"description":"A ruled list of ten tracks with tabular-numeral durations, track numbers, and a static play affordance for an album or EP.","dependencies":["lucide-react"]},{"name":"portfolio-pro-navbars-centered-nav","type":"registry:block","title":"Centered Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/centered-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/centered-nav.tsx"}],"description":"An editorial header with the name mark pinned to the absolute center and two nav links split symmetrically on each side."},{"name":"portfolio-pro-navbars-compact-nav","type":"registry:block","title":"Compact Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/compact-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/compact-nav.tsx"}],"description":"A slim 12-unit header with a name mark on the left and three minimal text links on the right, nothing else."},{"name":"portfolio-pro-navbars-divided-nav","type":"registry:block","title":"Divided Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/divided-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/divided-nav.tsx"}],"description":"Full width header where the name mark and each page link occupy their own border separated cell, ending in a solid inverse contact cell.","dependencies":["lucide-react"]},{"name":"portfolio-pro-navbars-logo-center-nav","type":"registry:block","title":"Logo Center Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/logo-center-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/logo-center-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A navbar with the name mark centered and two navigation links flanking it on each side, plus a contact button on the far right.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-navbars-minimal-name-navbar","type":"registry:block","title":"Minimal Name Navbar","files":[{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"}],"description":"A minimal personal-site header with the name mark on the left and three nav links on the right, nothing else."},{"name":"portfolio-pro-navbars-name-and-menu","type":"registry:block","title":"Name And Menu","files":[{"path":"components/blocks/portfolio-pro/navbars/name-and-menu.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/name-and-menu.tsx"}],"description":"A mobile-first header shown in its open-menu state with four large stacked links and zero-padded index numbers.","dependencies":["lucide-react"]},{"name":"portfolio-pro-navbars-nav-with-availability-dot","type":"registry:block","title":"Nav With Availability Dot","files":[{"path":"components/blocks/portfolio-pro/navbars/nav-with-availability-dot.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/nav-with-availability-dot.tsx"}],"description":"A navbar with name, centred links, and a pulsing emerald dot beside an availability month label on the right."},{"name":"portfolio-pro-navbars-nav-with-cta","type":"registry:block","title":"Nav With Cta","files":[{"path":"components/blocks/portfolio-pro/navbars/nav-with-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/nav-with-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A conversion header with the name mark, three nav links, and a primary Get in touch button on the right.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-navbars-nav-with-location-time","type":"registry:block","title":"Nav with Location and Time","files":[{"path":"components/blocks/portfolio-pro/navbars/nav-with-location-time.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/nav-with-location-time.tsx"}],"description":"Header with a name mark on the left, centered page links, and a location readout showing the city and a local time label on the right.","dependencies":["lucide-react"]},{"name":"portfolio-pro-navbars-nav-with-resume","type":"registry:block","title":"Nav With Resume","files":[{"path":"components/blocks/portfolio-pro/navbars/nav-with-resume.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/nav-with-resume.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A site header with a name mark and nav links on the left and a download CV button on the right for portfolios where recruiters need direct resume access.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-navbars-nav-with-socials","type":"registry:block","title":"Nav With Socials","files":[{"path":"components/blocks/portfolio-pro/navbars/nav-with-socials.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/nav-with-socials.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A connected header with the name mark and nav links on the left and a row of GitHub, LinkedIn, and Instagram icon links on the right."},{"name":"portfolio-pro-navbars-nav-with-theme-toggle","type":"registry:block","title":"Nav With Theme Toggle","files":[{"path":"components/blocks/portfolio-pro/navbars/nav-with-theme-toggle.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/nav-with-theme-toggle.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A navbar with the name mark on the left, four nav links in the center, and a static sun and moon theme toggle button on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-navbars-numbered-nav","type":"registry:block","title":"Numbered Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/numbered-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/numbered-nav.tsx"}],"description":"Header with a name mark on the left, horizontal links each carrying a zero padded index number, and a small index caption on the right."},{"name":"portfolio-pro-navbars-pill-links-nav","type":"registry:block","title":"Pill Links Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/pill-links-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/pill-links-nav.tsx"}],"description":"Header with a name mark, page links inside a bordered rounded pill segmented control with the active one highlighted, and a quiet arrow link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-navbars-sticky-minimal-nav","type":"registry:block","title":"Sticky Minimal Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/sticky-minimal-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/sticky-minimal-nav.tsx"}],"description":"A slim sticky header with frosted background, the name mark, three nav links, and an emerald availability dot."},{"name":"portfolio-pro-navbars-transparent-nav","type":"registry:block","title":"Transparent Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/transparent-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/transparent-nav.tsx"}],"description":"A background-free header with the studio name on the left and anchor links on the right, designed to float over a hero section."},{"name":"portfolio-pro-navbars-two-row-nav","type":"registry:block","title":"Two Row Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/two-row-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/two-row-nav.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A stacked two-row header with the name and social icons on the top row and a six-link section nav on the second row for content-rich portfolios."},{"name":"portfolio-pro-navbars-wide-nav","type":"registry:block","title":"Wide Nav","files":[{"path":"components/blocks/portfolio-pro/navbars/wide-nav.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/wide-nav.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A full-width header with the name mark on the left, five centred navigation links, and a contact button on the right in a generous 16-unit bar.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-centered-signup","type":"registry:block","title":"Centered Signup","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/centered-signup.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/centered-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A centered heading, pitch, and email-and-button form with a cadence note naming the send dates, frequency, and unsubscribe policy.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-inbox-preview","type":"registry:block","title":"Inbox Preview","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/inbox-preview.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/inbox-preview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column newsletter signup pairing a pitch and labeled email form with a drawn inbox mockup listing five recent issues by subject and date.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-inline-newsletter-band","type":"registry:block","title":"Inline Newsletter Band","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/inline-newsletter-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/inline-newsletter-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim bordered subscribe band with a one-line pitch and inline email input designed for mid-page placement between content sections.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-latest-issue","type":"registry:block","title":"Latest Issue","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/latest-issue.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/latest-issue.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A two-column block showing a preview card of the most recent newsletter issue beside a subscribe form with cadence note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-newsletter-faq","type":"registry:block","title":"Newsletter FAQ","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/newsletter-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/newsletter-faq.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two column newsletter signup pairing the pitch and labeled email form with a bordered list of five short questions and plain answers.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-newsletter-feature","type":"registry:block","title":"Newsletter Feature","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/newsletter-feature.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/newsletter-feature.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A two-column newsletter signup with value props and cadence on the left and recent issue previews on the right.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-newsletter-signup","type":"registry:block","title":"Newsletter Signup","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/newsletter-signup.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/newsletter-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A newsletter signup section with a heading, a one-sentence pitch, an email and subscribe form, and an exact cadence note naming the send dates.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-newsletter-stats","type":"registry:block","title":"Newsletter Stats","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/newsletter-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/newsletter-stats.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A two-column newsletter signup block pairing an email form with three proof figures including subscriber count, open rate, and issues published.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-newsletter-tiers","type":"registry:block","title":"Newsletter Tiers","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/newsletter-tiers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/newsletter-tiers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A two tier newsletter signup pairing side by side Reader and Supporter cards, one carrying the email form and the other a feature list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-newsletter-with-archive","type":"registry:block","title":"Newsletter With Archive","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/newsletter-with-archive.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/newsletter-with-archive.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A newsletter signup block that lists the three most recent issues as titled linked rows before showing the subscribe form, letting visitors sample the content first.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-reader-quotes","type":"registry:block","title":"Reader Quotes","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/reader-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/reader-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"}],"description":"A centered newsletter signup above a three card row of short reader quotes, each attributed with avatar art, a name, and a role.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-sidebar-subscribe","type":"registry:block","title":"Sidebar Subscribe","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/sidebar-subscribe.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/sidebar-subscribe.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A compact subscribe card sized for a sidebar with a short pitch, email form, and subscriber count.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-simple-subscribe","type":"registry:block","title":"Simple Subscribe","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/simple-subscribe.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/simple-subscribe.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A minimal horizontal band with a single line of copy and an inline email input and subscribe button, sized for placement directly above a footer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-split-newsletter","type":"registry:block","title":"Split Newsletter","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/split-newsletter.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/split-newsletter.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A two-column block with the pitch and four dated recent issue titles on the left and a signup form card with cadence and reader count on the right.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-newsletter-sections-subscribe-card","type":"registry:block","title":"Subscribe Card","files":[{"path":"components/blocks/portfolio-pro/newsletter-sections/subscribe-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/newsletter-sections/subscribe-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A compact bordered card with a newsletter pitch, a subscriber count and frequency stats strip, and an email form sized for a sidebar or narrow column.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-now-uses-app-defaults","type":"registry:block","title":"App Defaults","files":[{"path":"components/blocks/portfolio-pro/now-uses/app-defaults.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/app-defaults.tsx"}],"description":"Two ruled columns pairing twenty everyday categories with the single app that wins each job, a dot flagging any default changed this year."},{"name":"portfolio-pro-now-uses-currently-card","type":"registry:block","title":"Currently Card","files":[{"path":"components/blocks/portfolio-pro/now-uses/currently-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/currently-card.tsx"}],"description":"A compact ruled card of six status rows covering building, reading, listening, learning, availability, and location as a live snapshot."},{"name":"portfolio-pro-now-uses-desk-tour","type":"registry:block","title":"Desk Tour","files":[{"path":"components/blocks/portfolio-pro/now-uses/desk-tour.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/desk-tour.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Split desk tour pairing a square workspace photo with six numbered callout rows naming each item and the reason it earned its place."},{"name":"portfolio-pro-now-uses-gear-list","type":"registry:block","title":"Gear List","files":[{"path":"components/blocks/portfolio-pro/now-uses/gear-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/gear-list.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Kit organised into category groups as cards with a placeholder visual, a model name, and a sentence on why each piece earned its place."},{"name":"portfolio-pro-now-uses-learning-log","type":"registry:block","title":"Learning Log","files":[{"path":"components/blocks/portfolio-pro/now-uses/learning-log.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/learning-log.tsx"}],"description":"Vertical timeline of five skills with month stamps, status badges covering progress and pauses, and short notes on what each skill changed."},{"name":"portfolio-pro-now-uses-media-diet","type":"registry:block","title":"Media Diet","files":[{"path":"components/blocks/portfolio-pro/now-uses/media-diet.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/media-diet.tsx"}],"description":"Four category cards for listening, watching, playing, and following, each holding three titled items with meta notes and one highlighted pick."},{"name":"portfolio-pro-now-uses-now-archive","type":"registry:block","title":"Now Archive","files":[{"path":"components/blocks/portfolio-pro/now-uses/now-archive.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/now-archive.tsx"}],"description":"Dated snapshots of a now page, each pairing a date column with a three column panel of what started, stopped, and kept going."},{"name":"portfolio-pro-now-uses-now-page","type":"registry:block","title":"Now Page","files":[{"path":"components/blocks/portfolio-pro/now-uses/now-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/now-page.tsx"}],"description":"A dated snapshot across Work, Learning, and Life sections with specific items so the page reads as a live signal rather than a static bio."},{"name":"portfolio-pro-now-uses-paid-tools","type":"registry:block","title":"Paid Tools","files":[{"path":"components/blocks/portfolio-pro/now-uses/paid-tools.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/paid-tools.tsx"}],"description":"Ruled rows of the subscriptions behind an independent practice, each showing the tool, its plan, a monthly price, closing on a total row."},{"name":"portfolio-pro-now-uses-reading-list","type":"registry:block","title":"Reading List","files":[{"path":"components/blocks/portfolio-pro/now-uses/reading-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/reading-list.tsx"}],"description":"Books listed as ruled rows with title, author, a one-line connection to current practice, and a reading, finished, or queued status badge."},{"name":"portfolio-pro-now-uses-uses-page","type":"registry:block","title":"Uses Page","files":[{"path":"components/blocks/portfolio-pro/now-uses/uses-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/now-uses/uses-page.tsx"}],"description":"Daily gear and software listed across Desk Setup, Software, and Everyday Carry groups, each item with a model name and a one-line why."},{"name":"portfolio-pro-photography-category-tiles","type":"registry:block","title":"Category Tiles","files":[{"path":"components/blocks/portfolio-pro/photography/category-tiles.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/category-tiles.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A browse-by-genre block with 4 Placeholder tiles for Portrait, Landscape, Street, and Studio, each labelled with a genre name, image count, and a hover descriptor."},{"name":"portfolio-pro-photography-commission-brief","type":"registry:block","title":"Commission Brief","files":[{"path":"components/blocks/portfolio-pro/photography/commission-brief.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/commission-brief.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three commission types with day rates and inclusions beside a booking panel walking four steps from enquiry to delivery with an availability note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-photography-contact-sheet","type":"registry:block","title":"Contact Sheet","files":[{"path":"components/blocks/portfolio-pro/photography/contact-sheet.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/contact-sheet.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A proof-sheet block with 12 small Placeholder frames in a dense grid labelled by roll and frame number, with a footer naming the camera, film stock, and lab."},{"name":"portfolio-pro-photography-edit-breakdown","type":"registry:block","title":"Edit Breakdown","files":[{"path":"components/blocks/portfolio-pro/photography/edit-breakdown.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/edit-breakdown.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"The raw scan and final print file side by side, four numbered edit steps, and a closing note on what the retouching never includes."},{"name":"portfolio-pro-photography-exhibition-history","type":"registry:block","title":"Exhibition History","files":[{"path":"components/blocks/portfolio-pro/photography/exhibition-history.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/exhibition-history.tsx"}],"description":"Two ruled lists set side by side, selected exhibitions with venue, city, and year beside publications naming each outlet, piece, and date."},{"name":"portfolio-pro-photography-full-bleed-set","type":"registry:block","title":"Full Bleed Set","files":[{"path":"components/blocks/portfolio-pro/photography/full-bleed-set.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/full-bleed-set.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A full-bleed editorial photo set with 3 edge-to-edge Placeholder images and ruled caption rows carrying location, date, and a field note between each frame."},{"name":"portfolio-pro-photography-photo-about","type":"registry:block","title":"Photo About","files":[{"path":"components/blocks/portfolio-pro/photography/photo-about.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/photo-about.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A photographer profile split with a Placeholder portrait beside a bio, three approach sections, and a gear table."},{"name":"portfolio-pro-photography-photo-book","type":"registry:block","title":"Photo Book","files":[{"path":"components/blocks/portfolio-pro/photography/photo-book.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/photo-book.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A book cover and three spread thumbnails beside the monograph story, a full specifications table, a stockist list, and a direct order button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-photography-photo-hero","type":"registry:block","title":"Photo Hero","files":[{"path":"components/blocks/portfolio-pro/photography/photo-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/photo-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A fold-filling photography hero with a large Placeholder image above a two-column text panel carrying the photographer name, focus, commission note, and a four-row meta strip.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-photography-print-pricing","type":"registry:block","title":"Print Pricing","files":[{"path":"components/blocks/portfolio-pro/photography/print-pricing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/print-pricing.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A photography print pricing block listing multiple series as cards with size and price tables, edition counts, remaining inventory, and framing notes.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-photography-print-shop","type":"registry:block","title":"Print Shop","files":[{"path":"components/blocks/portfolio-pro/photography/print-shop.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/print-shop.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A print sales block with 4 limited-edition print cards each showing a Placeholder image, a size-to-price table, edition size, and an honest shipping and duties note."},{"name":"portfolio-pro-photography-series-feature","type":"registry:block","title":"Series Feature","files":[{"path":"components/blocks/portfolio-pro/photography/series-feature.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/series-feature.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A photography series feature with a large lead frame, a four-still strip with location captions, and a series note naming the shooting constraint and frame count."},{"name":"portfolio-pro-photography-series-grid","type":"registry:block","title":"Series Grid","files":[{"path":"components/blocks/portfolio-pro/photography/series-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/series-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A photo series grid showing 6 Placeholder images grouped under a series title, year span, and intro paragraph with per-frame location captions."},{"name":"portfolio-pro-photography-shoot-detail","type":"registry:block","title":"Shoot Detail","files":[{"path":"components/blocks/portfolio-pro/photography/shoot-detail.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/shoot-detail.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single-shoot case block with a lead Placeholder image, a one-sentence brief, a ruled meta strip of six rows, and a supporting row of three smaller frames."},{"name":"portfolio-pro-photography-two-column-photos","type":"registry:block","title":"Two Column Photos","files":[{"path":"components/blocks/portfolio-pro/photography/two-column-photos.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/two-column-photos.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column photo layout with six captioned frames at mixed aspect ratios that lets a photographer contrast subject, light, or location side by side."},{"name":"portfolio-pro-prebuilt-pages-about-page","type":"registry:block","title":"About Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/about-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/about-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/about-sections/about-long-form.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/about-long-form.tsx"},{"path":"components/blocks/portfolio-pro/skills-sections/skills-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skills-list.tsx"},{"path":"components/blocks/portfolio-pro/process-sections/how-i-work-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/how-i-work-steps.tsx"},{"path":"components/blocks/portfolio-pro/testimonials/testimonial-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/testimonial-cards.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full about page composing a long form personal story, skills list, process steps, and testimonial cards into one ready to deploy page.","registryDependencies":["@shadcn-ui-blocks/portfolio-pro-about-sections-about-long-form","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-process-sections-how-i-work-steps","@shadcn-ui-blocks/portfolio-pro-skills-sections-skills-list","@shadcn-ui-blocks/portfolio-pro-testimonials-testimonial-cards"]},{"name":"portfolio-pro-prebuilt-pages-contact-page","type":"registry:block","title":"Contact Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/contact-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/contact-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/contact-sections/contact-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/contact-sections/contact-split.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"}],"description":"A minimal contact page composing a split section that shows the inquiry form and contact details side by side without scrolling.","dependencies":["class-variance-authority","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-contact-sections-contact-split","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar"]},{"name":"portfolio-pro-prebuilt-pages-developer-page","type":"registry:block","title":"Developer Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/developer-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/developer-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/developer-portfolio/terminal-intro.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/terminal-intro.tsx"},{"path":"components/blocks/portfolio-pro/developer-portfolio/project-repos.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/project-repos.tsx"},{"path":"components/blocks/portfolio-pro/developer-portfolio/tech-stack-detail.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/developer-portfolio/tech-stack-detail.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full developer portfolio page composing a terminal intro hero, project repos, tech stack detail, and contact footer from sibling blocks.","dependencies":["lucide-react"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-developer-portfolio-project-repos","@shadcn-ui-blocks/portfolio-pro-developer-portfolio-tech-stack-detail","@shadcn-ui-blocks/portfolio-pro-developer-portfolio-terminal-intro","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar"]},{"name":"portfolio-pro-prebuilt-pages-freelancer-page","type":"registry:block","title":"Freelancer Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/freelancer-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/freelancer-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/hero-sections/availability-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/availability-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/portfolio-pro/services-sections/services-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-list.tsx"},{"path":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full freelancer hire-me page composing an availability hero with a next opening month, services list, featured work grid, hire me band, and contact footer from sibling blocks.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-cta-sections-hire-me-band","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-hero-sections-availability-hero","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-services-sections-services-list","@shadcn-ui-blocks/portfolio-pro-work-grids-featured-work-grid"]},{"name":"portfolio-pro-prebuilt-pages-home-page","type":"registry:block","title":"Home Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/home-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/home-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/hero-sections/name-and-role-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/hero-sections/name-and-role-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/portfolio-pro/about-sections/about-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/about-sections/about-split.tsx"},{"path":"components/blocks/portfolio-pro/testimonials/testimonial-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/testimonial-cards.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full portfolio homepage composing a name and role hero, featured work grid, about split, testimonial cards, and hire me band into one ready to deploy page.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-about-sections-about-split","@shadcn-ui-blocks/portfolio-pro-cta-sections-hire-me-band","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-hero-sections-name-and-role-hero","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-testimonials-testimonial-cards","@shadcn-ui-blocks/portfolio-pro-work-grids-featured-work-grid"]},{"name":"portfolio-pro-prebuilt-pages-link-in-bio-page","type":"registry:block","title":"Link In Bio Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/link-in-bio-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/link-in-bio-page.tsx"},{"path":"components/blocks/portfolio-pro/social-links/link-in-bio.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/link-in-bio.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/blocks/portfolio-pro/footers/minimal-signoff-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/minimal-signoff-footer.tsx"}],"description":"A minimal two-block link-in-bio page composing the link-in-bio social links block and a minimal signoff footer for a single-URL creator landing page.","dependencies":["class-variance-authority","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-footers-minimal-signoff-footer","@shadcn-ui-blocks/portfolio-pro-social-links-link-in-bio"]},{"name":"portfolio-pro-prebuilt-pages-photographer-page","type":"registry:block","title":"Photographer Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/photographer-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/photographer-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/photography/photo-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/photo-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/portfolio-pro/photography/series-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/series-grid.tsx"},{"path":"components/blocks/portfolio-pro/photography/print-shop.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/photography/print-shop.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full photographer portfolio page composing a photo hero, series grid, print shop, and contact footer from sibling blocks.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-photography-photo-hero","@shadcn-ui-blocks/portfolio-pro-photography-print-shop","@shadcn-ui-blocks/portfolio-pro-photography-series-grid"]},{"name":"portfolio-pro-prebuilt-pages-project-page","type":"registry:block","title":"Project Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/project-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/project-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-hero.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/portfolio-pro/case-study-sections/case-study-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/case-study-split.tsx"},{"path":"components/blocks/portfolio-pro/case-study-sections/results-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/case-study-sections/results-band.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full case study page composing a project hero, problem and approach split with a named constraint, and a quantified results band.","registryDependencies":["@shadcn-ui-blocks/portfolio-pro-case-study-sections-case-study-hero","@shadcn-ui-blocks/portfolio-pro-case-study-sections-case-study-split","@shadcn-ui-blocks/portfolio-pro-case-study-sections-results-band","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar"]},{"name":"portfolio-pro-prebuilt-pages-services-page","type":"registry:block","title":"Services Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/services-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/services-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/services-sections/services-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-list.tsx"},{"path":"components/blocks/portfolio-pro/services-sections/service-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/service-cards.tsx"},{"path":"components/blocks/portfolio-pro/process-sections/how-i-work-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/how-i-work-steps.tsx"},{"path":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full services page composing a scoped services list, engagement cards with rates, process steps, and a hire me band into one ready to deploy page.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-cta-sections-hire-me-band","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-process-sections-how-i-work-steps","@shadcn-ui-blocks/portfolio-pro-services-sections-service-cards","@shadcn-ui-blocks/portfolio-pro-services-sections-services-list"]},{"name":"portfolio-pro-prebuilt-pages-studio-page","type":"registry:block","title":"Studio Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/studio-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/studio-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/studio-team/studio-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/portfolio-pro/studio-team/team-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/team-grid.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/blocks/portfolio-pro/studio-team/studio-services.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-services.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full studio site page composing a studio hero, named team grid, services list with explicit exclusions, and contact footer from sibling blocks.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-studio-team-studio-hero","@shadcn-ui-blocks/portfolio-pro-studio-team-studio-services","@shadcn-ui-blocks/portfolio-pro-studio-team-team-grid"]},{"name":"portfolio-pro-prebuilt-pages-work-page","type":"registry:block","title":"Work Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/work-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/work-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/portfolio-pro/work-grids/masonry-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/masonry-grid.tsx"},{"path":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/cta-sections/hire-me-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A dedicated work page composing a featured work grid and masonry grid with a hire me band so visitors see selected and full work in one flow.","dependencies":["class-variance-authority","lucide-react","radix-ui"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-cta-sections-hire-me-band","@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-work-grids-featured-work-grid","@shadcn-ui-blocks/portfolio-pro-work-grids-masonry-grid"]},{"name":"portfolio-pro-prebuilt-pages-writer-page","type":"registry:block","title":"Writer Page","files":[{"path":"components/blocks/portfolio-pro/prebuilt-pages/writer-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/prebuilt-pages/writer-page.tsx"},{"path":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/navbars/minimal-name-navbar.tsx"},{"path":"components/blocks/portfolio-pro/writing-portfolio/writing-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/writing-hero.tsx"},{"path":"components/blocks/portfolio-pro/writing-portfolio/featured-essay.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/featured-essay.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/blocks/portfolio-pro/writing-portfolio/published-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/published-list.tsx"},{"path":"components/blocks/portfolio-pro/writing-portfolio/publications-wall.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/publications-wall.tsx"},{"path":"components/blocks/portfolio-pro/footers/contact-footer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/footers/contact-footer.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A full writer portfolio page composing a writing hero, featured essay, published list, publications wall, and contact footer from sibling blocks.","dependencies":["lucide-react"],"registryDependencies":["@shadcn-ui-blocks/portfolio-pro-footers-contact-footer","@shadcn-ui-blocks/portfolio-pro-navbars-minimal-name-navbar","@shadcn-ui-blocks/portfolio-pro-writing-portfolio-featured-essay","@shadcn-ui-blocks/portfolio-pro-writing-portfolio-publications-wall","@shadcn-ui-blocks/portfolio-pro-writing-portfolio-published-list","@shadcn-ui-blocks/portfolio-pro-writing-portfolio-writing-hero"]},{"name":"portfolio-pro-press-kit-brand-bio","type":"registry:block","title":"Brand Bio","files":[{"path":"components/blocks/portfolio-pro/press-kit/brand-bio.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/brand-bio.tsx"}],"description":"Three approved bio lengths in copyable cards with word counts, followed by a key facts list for journalists to cite without follow-up."},{"name":"portfolio-pro-press-kit-by-the-numbers","type":"registry:block","title":"By the Numbers","files":[{"path":"components/blocks/portfolio-pro/press-kit/by-the-numbers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/by-the-numbers.tsx"}],"description":"Heading and lede above a hairline grid of eight large stat tiles with labels and notes, closed by a verification footnote."},{"name":"portfolio-pro-press-kit-download-row","type":"registry:block","title":"Download Row","files":[{"path":"components/blocks/portfolio-pro/press-kit/download-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/download-row.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A compact border-y strip of outline download buttons each labelled with file format and tabular size for press kit, CV, brand guide, logo pack, and case studies.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-press-kit-headshot-gallery","type":"registry:block","title":"Headshot Gallery","files":[{"path":"components/blocks/portfolio-pro/press-kit/headshot-gallery.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/headshot-gallery.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Heading with a download button, three headshot crops in a grid with resolution and use captions, and a required photo credit panel.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-press-kit-interview-topics","type":"registry:block","title":"Interview Topics","files":[{"path":"components/blocks/portfolio-pro/press-kit/interview-topics.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/interview-topics.tsx"}],"description":"Six numbered cards pitching subjects a founder can speak about, with a formats band covering podcasts, panels, and written Q&A.","dependencies":["lucide-react"]},{"name":"portfolio-pro-press-kit-logo-guidelines","type":"registry:block","title":"Logo Guidelines","files":[{"path":"components/blocks/portfolio-pro/press-kit/logo-guidelines.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/logo-guidelines.tsx"}],"description":"Wordmark demo tiles on plain and reversed surfaces with size and format specs beside ruled lists of approved and prohibited uses.","dependencies":["lucide-react"]},{"name":"portfolio-pro-press-kit-media-assets","type":"registry:block","title":"Media Assets","files":[{"path":"components/blocks/portfolio-pro/press-kit/media-assets.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/media-assets.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-card grid of downloadable brand assets each showing a Placeholder preview, a format and resolution note, a file size, and a download button.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-press-kit-press-faq","type":"registry:block","title":"Press FAQ","files":[{"path":"components/blocks/portfolio-pro/press-kit/press-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/press-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Two column press FAQ with a heading and response time list beside an accordion answering the questions journalists ask before covering a studio.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-press-kit-press-inquiry","type":"registry:block","title":"Press Inquiry","files":[{"path":"components/blocks/portfolio-pro/press-kit/press-inquiry.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/press-inquiry.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Two column press inquiry with a heading and what to include checklist beside a labeled contact form for outlet, deadline, and request.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-press-kit-press-kit-page","type":"registry:block","title":"Press Kit Page","files":[{"path":"components/blocks/portfolio-pro/press-kit/press-kit-page.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/press-kit-page.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A consolidated press section with a studio bio, five key facts, three downloadable assets with format notes, and a press contact card.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-press-kit-press-mentions","type":"registry:block","title":"Press Mentions","files":[{"path":"components/blocks/portfolio-pro/press-kit/press-mentions.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/press-mentions.tsx"}],"description":"A ruled list of editorial coverage showing publication name, article headline, date, and an external read link for each mention.","dependencies":["lucide-react"]},{"name":"portfolio-pro-press-kit-quick-facts","type":"registry:block","title":"Quick Facts","files":[{"path":"components/blocks/portfolio-pro/press-kit/quick-facts.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/press-kit/quick-facts.tsx"}],"description":"A ruled definition list of ten key editorial facts covering name, location, focus, notable work, and a clickable press contact email."},{"name":"portfolio-pro-pricing-sections-add-on-pricing","type":"registry:block","title":"Add-On Pricing","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/add-on-pricing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/add-on-pricing.tsx"}],"description":"Two category panels list a la carte extras as divided rows, each pairing a name and one line description with a plainly stated price."},{"name":"portfolio-pro-pricing-sections-budget-guide","type":"registry:block","title":"Budget Guide","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/budget-guide.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/budget-guide.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three stacked budget bands pair a price range and engagement with a good fit list and a keep in mind list, the middle band flagged.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-pricing-sections-hourly-rate-card","type":"registry:block","title":"Hourly Rate Card","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/hourly-rate-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/hourly-rate-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An hourly rate stated plainly with included and excluded item columns, a four-hour minimum, and a ruled list of three scenarios where hourly billing makes more sense than a fixed scope.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-package-comparison","type":"registry:block","title":"Package Comparison","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/package-comparison.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/package-comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A three-package comparison table with Check and Minus feature rows, prices, and per-package CTAs in a scrollable layout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-pricing-sections-payment-schedule","type":"registry:block","title":"Payment Schedule","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/payment-schedule.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/payment-schedule.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three numbered payment stages with percentage splits sit beside a worked example panel that breaks a project fee into three payments with terms.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-pricing-tiers","type":"registry:block","title":"Pricing Tiers","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/pricing-tiers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/pricing-tiers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three package cards with price-from amounts, durations, and included item lists, with a recommended tier highlighted and an honest scoping note below the grid.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-pricing-with-faq","type":"registry:block","title":"Pricing With Faq","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/pricing-with-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/pricing-with-faq.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Two tier cards with from prices and included lists beside three plainly answered pricing questions that remove common objections.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-project-estimate-card","type":"registry:block","title":"Project Estimate Card","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/project-estimate-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/project-estimate-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Six common project types as ruled table rows showing price bands and timelines, with scope assumptions per row and an honest note that all figures are starting points.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-rate-and-faq","type":"registry:block","title":"Rate and FAQ","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/rate-and-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/rate-and-faq.tsx"}],"description":"A prominent day rate panel with a breakdown of half-day and retainer rates beside three plain-answer billing FAQ pairs."},{"name":"portfolio-pro-pricing-sections-retainer-pricing","type":"registry:block","title":"Retainer Pricing","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/retainer-pricing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/retainer-pricing.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three monthly retainer cards with hour counts, prices, and cover items, plus a ruled panel explaining minimum terms, hour rollover policy, and when to switch off a retainer.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-simple-rate-band","type":"registry:block","title":"Simple Rate Band","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/simple-rate-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/simple-rate-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A minimal pricing block with three from-price rows and a qualifying note beside a heading and a single contact CTA.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-pricing-sections-single-package-card","type":"registry:block","title":"Single Package Card","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/single-package-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/single-package-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"One clearly presented package with a from price, a bulleted included list, a not-included list, and a call to action button.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-three-tier-pricing","type":"registry:block","title":"Three Tier Pricing","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/three-tier-pricing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/three-tier-pricing.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three project tiers with from-prices, durations, and feature checklists where the middle tier is marked Recommended.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-pricing-sections-usage-licensing","type":"registry:block","title":"Usage Licensing","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/usage-licensing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/usage-licensing.tsx"}],"description":"A formula strip showing creation fee times usage multiplier equals final fee sits above four license tier cards, closed by notes on exclusivity."},{"name":"portfolio-pro-pricing-sections-value-pricing-note","type":"registry:block","title":"Value Pricing Note","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/value-pricing-note.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/value-pricing-note.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column prose block arguing why project pricing beats hourly, with three named reasons on the right and a pair of actions linking to a quote and the hourly rate.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-pricing-sections-whats-included-card","type":"registry:block","title":"Whats Included Card","files":[{"path":"components/blocks/portfolio-pro/pricing-sections/whats-included-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/pricing-sections/whats-included-card.tsx"}],"description":"Side-by-side included and not-included cards for a design package, followed by a ruled assumptions panel covering brief quality, feedback rounds, content readiness, and stakeholder access."},{"name":"portfolio-pro-process-sections-checklist-process","type":"registry:block","title":"Checklist Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/checklist-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/checklist-process.tsx"}],"description":"Four project stages in a two-column card grid each listing the deliverables as checked items so scope is unambiguous.","dependencies":["lucide-react"]},{"name":"portfolio-pro-process-sections-discovery-call-steps","type":"registry:block","title":"Discovery Call Steps","files":[{"path":"components/blocks/portfolio-pro/process-sections/discovery-call-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/discovery-call-steps.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A first-call explainer listing the four agenda items of a free 30-minute discovery call alongside a fact strip covering duration, format, cost, and commitment.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-process-sections-engagement-flow","type":"registry:block","title":"Engagement Flow","files":[{"path":"components/blocks/portfolio-pro/process-sections/engagement-flow.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/engagement-flow.tsx"}],"description":"Five steps from first call to handoff presented as a two-column you and me table that names the mutual responsibilities at every stage."},{"name":"portfolio-pro-process-sections-four-step-process","type":"registry:block","title":"Four Step Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/four-step-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/four-step-process.tsx"}],"description":"A four-step process block showing Discover, Define, Design, and Deliver as numbered cards, each with a plain sentence describing the work at that stage."},{"name":"portfolio-pro-process-sections-handoff-checklist","type":"registry:block","title":"Handoff Checklist","files":[{"path":"components/blocks/portfolio-pro/process-sections/handoff-checklist.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/handoff-checklist.tsx"}],"description":"A checked list of six deliverables the client receives at project close alongside a ruled notes strip and a card naming what the handoff does not include.","dependencies":["lucide-react"]},{"name":"portfolio-pro-process-sections-horizontal-steps","type":"registry:block","title":"Horizontal Steps","files":[{"path":"components/blocks/portfolio-pro/process-sections/horizontal-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/horizontal-steps.tsx"}],"description":"A centered heading above four numbered steps on a connected rail, each marker with a title and short description that stacks on small screens."},{"name":"portfolio-pro-process-sections-how-i-work-steps","type":"registry:block","title":"How I Work Steps","files":[{"path":"components/blocks/portfolio-pro/process-sections/how-i-work-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/how-i-work-steps.tsx"}],"description":"Four numbered cards each naming a stage title, what happens, and the concrete artifact the client receives at the close of that stage."},{"name":"portfolio-pro-process-sections-numbered-process","type":"registry:block","title":"Numbered Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/numbered-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/numbered-process.tsx"}],"description":"Three large-numbered phase cards showing Discover, Make, and Ship with a description and typical duration for each phase."},{"name":"portfolio-pro-process-sections-phase-allocation","type":"registry:block","title":"Phase Allocation","files":[{"path":"components/blocks/portfolio-pro/process-sections/phase-allocation.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/phase-allocation.tsx"}],"description":"A heading and intro above a segmented proportional bar, with a ruled legend listing each phase, its percentage share, and what the time buys."},{"name":"portfolio-pro-process-sections-phases-grid","type":"registry:block","title":"Phases Grid","files":[{"path":"components/blocks/portfolio-pro/process-sections/phases-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/phases-grid.tsx"}],"description":"Four project phases in a two-column card grid, each card naming what happens, the concrete deliverable, and the typical duration."},{"name":"portfolio-pro-process-sections-principles-process","type":"registry:block","title":"Principles Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/principles-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/principles-process.tsx"}],"description":"A principles-led process block presenting three working principles as wide cards, each with an explanatory sentence and an explicit named tradeoff."},{"name":"portfolio-pro-process-sections-process-comparison","type":"registry:block","title":"Process Comparison","files":[{"path":"components/blocks/portfolio-pro/process-sections/process-comparison.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/process-comparison.tsx"}],"description":"A heading and intro above a two column comparison table, contrasting the usual studio approach with how I work across five ruled aspect rows."},{"name":"portfolio-pro-process-sections-process-with-deliverables","type":"registry:block","title":"Process With Deliverables","files":[{"path":"components/blocks/portfolio-pro/process-sections/process-with-deliverables.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/process-with-deliverables.tsx"}],"description":"Four stage cards each split into a process description on the left and the named artifact it produces on the right, from the brief to the spec."},{"name":"portfolio-pro-process-sections-revision-rounds","type":"registry:block","title":"Revision Rounds","files":[{"path":"components/blocks/portfolio-pro/process-sections/revision-rounds.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/revision-rounds.tsx"}],"description":"A heading and intro above three feedback round cards, each naming its scope and an example note, plus a two panel footer on process."},{"name":"portfolio-pro-process-sections-three-phase-process","type":"registry:block","title":"Three Phase Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/three-phase-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/three-phase-process.tsx"}],"description":"A two-column split with design philosophy and three belief statements on the left and three numbered phases as a ruled list on the right."},{"name":"portfolio-pro-process-sections-timeline-process","type":"registry:block","title":"Timeline Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/timeline-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/timeline-process.tsx"}],"description":"A vertical timeline rail with five milestones each carrying a week range, day count, and the exact deliverable produced at that stage."},{"name":"portfolio-pro-process-sections-timeline-with-art","type":"registry:block","title":"Timeline With Art","files":[{"path":"components/blocks/portfolio-pro/process-sections/timeline-with-art.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/timeline-with-art.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-step vertical timeline with a Placeholder thumbnail per step and a named deliverable line under each description."},{"name":"portfolio-pro-process-sections-two-column-process","type":"registry:block","title":"Two Column Process","files":[{"path":"components/blocks/portfolio-pro/process-sections/two-column-process.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/two-column-process.tsx"}],"description":"A working philosophy in three paragraphs on the left balanced against four numbered process steps in a ruled card on the right."},{"name":"portfolio-pro-process-sections-vertical-steps","type":"registry:block","title":"Vertical Steps","files":[{"path":"components/blocks/portfolio-pro/process-sections/vertical-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/vertical-steps.tsx"}],"description":"Five numbered stages stacked in a ruled list each with a title and a description that names a concrete commitment."},{"name":"portfolio-pro-process-sections-working-together-steps","type":"registry:block","title":"Working Together Steps","files":[{"path":"components/blocks/portfolio-pro/process-sections/working-together-steps.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/process-sections/working-together-steps.tsx"}],"description":"A day-by-day breakdown of the first two weeks with honest expectations listed beside the Week 1 and Week 2 ruled day cards."},{"name":"portfolio-pro-project-cards-before-after-card","type":"registry:block","title":"Before After Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/before-after-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/before-after-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two redesign cards in a grid, each pairing captioned before and after thumbnails side by side with a name, meta line, and result figure."},{"name":"portfolio-pro-project-cards-bordered-project-card","type":"registry:block","title":"Bordered Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/bordered-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/bordered-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A bordered card grid showing project thumbnails with name, role, year, skill tags, and a view link per entry.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-case-study-card","type":"registry:block","title":"Case Study Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/case-study-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/case-study-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A project teaser card showing a Placeholder image, a one-line problem statement, a headline result figure, and a read-case-study link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-compact-grid-card","type":"registry:block","title":"Compact Grid Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/compact-grid-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/compact-grid-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A dense four-column archive grid showing eight project thumbnails each with a name and year in a tight baseline row."},{"name":"portfolio-pro-project-cards-duo-tone-card","type":"registry:block","title":"Duo Tone Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/duo-tone-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/duo-tone-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A project card grid where each tile pairs a thumbnail with a muted caption panel in a contrasting surface tone, no gradient."},{"name":"portfolio-pro-project-cards-featured-project-card","type":"registry:block","title":"Featured Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/featured-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/featured-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single project given full-width treatment with a wide aspect-16/10 Placeholder, a heading-scale project name, a two-sentence description naming the problem and outcome, and a view-case link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-hover-reveal-card","type":"registry:block","title":"Hover Reveal Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/hover-reveal-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/hover-reveal-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A project card rendered in its revealed state as a blueprint, showing the name, role, and arrow in an overlay strip with an outcome caption and year below the image.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-image-stack-card","type":"registry:block","title":"Image Stack Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/image-stack-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/image-stack-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A project card showing two or three Placeholder images layered at offsets to suggest depth, with the project name and role below."},{"name":"portfolio-pro-project-cards-minimal-list-card","type":"registry:block","title":"Minimal List Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/minimal-list-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/minimal-list-card.tsx"}],"description":"Projects as quiet ruled rows with a small thumb, name, role, and year, for a text forward work index.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-minimal-project-card","type":"registry:block","title":"Minimal Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/minimal-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/minimal-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-up project grid with a portrait Placeholder image, project name, and a single muted role line per card, nothing else."},{"name":"portfolio-pro-project-cards-next-project-teaser","type":"registry:block","title":"Next Project Teaser","files":[{"path":"components/blocks/portfolio-pro/project-cards/next-project-teaser.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/next-project-teaser.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A full-width bordered band at the foot of a case study page with a Placeholder thumbnail, the next project name and meta, a forward link, and a back-to-all link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-numbered-project-card","type":"registry:block","title":"Numbered Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/numbered-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/numbered-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A vertical project stack where each entry is led by a large muted editorial index number beside a Placeholder image with the name, role, and year below."},{"name":"portfolio-pro-project-cards-overlay-caption-card","type":"registry:block","title":"Overlay Caption Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/overlay-caption-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/overlay-caption-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column project grid where each full-bleed thumbnail carries a frosted bottom strip naming the project and role."},{"name":"portfolio-pro-project-cards-project-card-with-tags","type":"registry:block","title":"Project Card With Tags","files":[{"path":"components/blocks/portfolio-pro/project-cards/project-card-with-tags.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/project-card-with-tags.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column project grid where each card carries a Placeholder image, name, a one-line problem description, and a row of small skill and category chips."},{"name":"portfolio-pro-project-cards-project-list-row","type":"registry:block","title":"Project List Row","files":[{"path":"components/blocks/portfolio-pro/project-cards/project-list-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/project-list-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A ruled divided list where each project appears as a row with a small square thumbnail, name, client type, role, year in tabular numerals, and an arrow.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-quote-project-card","type":"registry:block","title":"Quote Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/quote-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/quote-project-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Two project cards in a grid, each pairing a thumbnail with a short client quote attributed by avatar, name, role, and a view link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-split-project-card","type":"registry:block","title":"Split Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/split-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/split-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A full-width horizontal card featuring one project with a Placeholder on the left and the name, description, discipline tags, and a case study link on the right.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-stat-project-card","type":"registry:block","title":"Stat Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/stat-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/stat-project-card.tsx"}],"description":"An imageless three column grid where each card leads with a large metric and context line, then the project name, meta, summary, and link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-tag-heavy-card","type":"registry:block","title":"Tag Heavy Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/tag-heavy-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/tag-heavy-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three-column project grid where each card leads with a prominent row of skill and tool tags before the description, for technical work where the stack signals as much as the outcome."},{"name":"portfolio-pro-project-cards-tall-project-card","type":"registry:block","title":"Tall Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/tall-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/tall-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-column grid of portrait-format project cards each showing a Placeholder at aspect-4/5 with the name, role, and a concrete two-sentence outcome description below."},{"name":"portfolio-pro-project-cards-text-only-card","type":"registry:block","title":"Text Only Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/text-only-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/text-only-card.tsx"}],"description":"A typographic work index of ruled rows, each naming the project, role, year, and a one-sentence outcome with no thumbnail.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-timeline-project-card","type":"registry:block","title":"Timeline Project Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/timeline-project-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/timeline-project-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A vertical rail grouped by year, each project a compact row with a square thumbnail, name, role, and a one line outcome.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-wide-project-row","type":"registry:block","title":"Wide Project Row","files":[{"path":"components/blocks/portfolio-pro/project-cards/wide-project-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/wide-project-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A full-width bordered project row with a Placeholder on one side and the name, description, tags, and view link on the other.","dependencies":["lucide-react"]},{"name":"portfolio-pro-project-cards-year-badge-card","type":"registry:block","title":"Year Badge Card","files":[{"path":"components/blocks/portfolio-pro/project-cards/year-badge-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/project-cards/year-badge-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A project card grid with a pill chip marking the year on each thumbnail, plus the project name, client type, and role below."},{"name":"portfolio-pro-resume-cv-certifications-awards","type":"registry:block","title":"Certifications and Awards","files":[{"path":"components/blocks/portfolio-pro/resume-cv/certifications-awards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/certifications-awards.tsx"}],"description":"A heading and intro above two ruled lists in a grid, one for certifications with issuer and ID, one for awards with presenter and note."},{"name":"portfolio-pro-resume-cv-compact-resume","type":"registry:block","title":"Compact Resume","files":[{"path":"components/blocks/portfolio-pro/resume-cv/compact-resume.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/compact-resume.tsx"}],"description":"A tight single-column CV with a positioned summary, three bulleted roles, and a two-column skills and education grid.","dependencies":["lucide-react"]},{"name":"portfolio-pro-resume-cv-cover-letter","type":"registry:block","title":"Cover Letter","files":[{"path":"components/blocks/portfolio-pro/resume-cv/cover-letter.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/cover-letter.tsx"}],"description":"A centered letter with a name and contact letterhead, date and recipient lines, three body paragraphs, a signed sign off, and an enclosures footer."},{"name":"portfolio-pro-resume-cv-cv-download-band","type":"registry:block","title":"Cv Download Band","files":[{"path":"components/blocks/portfolio-pro/resume-cv/cv-download-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/cv-download-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim card showing the last updated date beside a Download CV button for the linked PDF resume.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-resume-cv-cv-header","type":"registry:block","title":"Cv Header","files":[{"path":"components/blocks/portfolio-pro/resume-cv/cv-header.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/cv-header.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A print-friendly CV header band showing name large, title, and an inline contact and social strip with email, location, site URL, and brand icon social links.","dependencies":["lucide-react"]},{"name":"portfolio-pro-resume-cv-download-cv-card","type":"registry:block","title":"Download Cv Card","files":[{"path":"components/blocks/portfolio-pro/resume-cv/download-cv-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/download-cv-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A bordered card with a heading, a one-line document description, a last-updated date, a primary download PDF button, and a secondary view-online text link.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-resume-cv-education-list","type":"registry:block","title":"Education List","files":[{"path":"components/blocks/portfolio-pro/resume-cv/education-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/education-list.tsx"}],"description":"A ruled list of education entries showing institution, qualification, year range, and an optional contextual note per row."},{"name":"portfolio-pro-resume-cv-experience-timeline","type":"registry:block","title":"Experience Timeline","files":[{"path":"components/blocks/portfolio-pro/resume-cv/experience-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/experience-timeline.tsx"}],"description":"A vertical work history timeline listing four roles most recent first, each with company, title, date range, a short description, and a concrete result set off by a left border rule."},{"name":"portfolio-pro-resume-cv-printable-cv","type":"registry:block","title":"Printable CV","files":[{"path":"components/blocks/portfolio-pro/resume-cv/printable-cv.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/printable-cv.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A single-column CV with a contact header, experience, education, and grouped skills sections optimised for both screen and print.","dependencies":["lucide-react"]},{"name":"portfolio-pro-resume-cv-publications-talks","type":"registry:block","title":"Publications and Talks","files":[{"path":"components/blocks/portfolio-pro/resume-cv/publications-talks.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/publications-talks.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A heading and intro above a single ruled list of writing and speaking, each row with a year, title, venue, and a format badge.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-resume-cv-references-row","type":"registry:block","title":"References Row","files":[{"path":"components/blocks/portfolio-pro/resume-cv/references-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/references-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A heading and intro above three reference cards, each with an avatar, name, role, a note, and a relationship and overlap meta footer."},{"name":"portfolio-pro-resume-cv-resume-summary","type":"registry:block","title":"Resume Summary","files":[{"path":"components/blocks/portfolio-pro/resume-cv/resume-summary.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/resume-summary.tsx"}],"description":"A CV opener with a name and title header, a two-sentence professional summary, and a three-cell quick-facts strip covering location, years of experience, and primary focus area.","dependencies":["lucide-react"]},{"name":"portfolio-pro-resume-cv-resume-with-photo","type":"registry:block","title":"Resume With Photo","files":[{"path":"components/blocks/portfolio-pro/resume-cv/resume-with-photo.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/resume-with-photo.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A CV header pairing a square Placeholder portrait with the name, contact details, and summary before experience and skills follow below.","dependencies":["lucide-react"]},{"name":"portfolio-pro-resume-cv-skills-and-tools-cv","type":"registry:block","title":"Skills And Tools Cv","files":[{"path":"components/blocks/portfolio-pro/resume-cv/skills-and-tools-cv.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/skills-and-tools-cv.tsx"}],"description":"A ruled skills table grouping six disciplines with a proficiency level label and chip tags so a hiring manager can scan breadth in one pass."},{"name":"portfolio-pro-resume-cv-skills-resume","type":"registry:block","title":"Skills Resume","files":[{"path":"components/blocks/portfolio-pro/resume-cv/skills-resume.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/skills-resume.tsx"}],"description":"A resume skills section presenting four skill categories as chip rows in a two-column grid, each with a short proficiency note and no bar charts or percentage scores."},{"name":"portfolio-pro-resume-cv-timeline-resume","type":"registry:block","title":"Timeline Resume","files":[{"path":"components/blocks/portfolio-pro/resume-cv/timeline-resume.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/timeline-resume.tsx"}],"description":"A vertical connected timeline of four career roles with company, title, period, and bullet outcomes for a resume or about page."},{"name":"portfolio-pro-resume-cv-two-column-resume","type":"registry:block","title":"Two Column Resume","files":[{"path":"components/blocks/portfolio-pro/resume-cv/two-column-resume.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/resume-cv/two-column-resume.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A two-column CV with a main experience and education column and a fixed sidebar for skills, contact, and brand icon links.","dependencies":["lucide-react"]},{"name":"portfolio-pro-services-sections-availability-services","type":"registry:block","title":"Availability Services","files":[{"path":"components/blocks/portfolio-pro/services-sections/availability-services.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/availability-services.tsx"}],"description":"A services block that leads with a four-row availability table showing current status and next opening before the services detail."},{"name":"portfolio-pro-services-sections-capabilities-grid","type":"registry:block","title":"Capabilities Grid","files":[{"path":"components/blocks/portfolio-pro/services-sections/capabilities-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/capabilities-grid.tsx"}],"description":"Six capability tiles in a three-column grid each with a label and one sentence describing the concrete output, suited to generalist or multi-discipline practices."},{"name":"portfolio-pro-services-sections-detailed-service-list","type":"registry:block","title":"Detailed Service List","files":[{"path":"components/blocks/portfolio-pro/services-sections/detailed-service-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/detailed-service-list.tsx"}],"description":"A ruled two-column services layout with a scope paragraph and a bulleted deliverables list per service."},{"name":"portfolio-pro-services-sections-engagement-comparison","type":"registry:block","title":"Engagement Comparison","files":[{"path":"components/blocks/portfolio-pro/services-sections/engagement-comparison.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/engagement-comparison.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A heading and intro above a scrollable table that compares three engagement types row by row across fit, length, communication, and pricing."},{"name":"portfolio-pro-services-sections-engagement-types","type":"registry:block","title":"Engagement Types","files":[{"path":"components/blocks/portfolio-pro/services-sections/engagement-types.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/engagement-types.tsx"}],"description":"Three ways to work together as cards each showing a commitment level, a summary, and a fit line naming the ideal client situation."},{"name":"portfolio-pro-services-sections-icon-services-grid","type":"registry:block","title":"Icon Services Grid","files":[{"path":"components/blocks/portfolio-pro/services-sections/icon-services-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/icon-services-grid.tsx"}],"description":"A services grid of four cards each with a lucide icon, a service name, and one sentence naming what is included and what is not.","dependencies":["lucide-react"]},{"name":"portfolio-pro-services-sections-not-offered-note","type":"registry:block","title":"Not Offered Note","files":[{"path":"components/blocks/portfolio-pro/services-sections/not-offered-note.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/not-offered-note.tsx"}],"description":"A ruled list of four things this practice does not offer, each paired with a specific redirect to who can help instead."},{"name":"portfolio-pro-services-sections-numbered-services","type":"registry:block","title":"Numbered Services","files":[{"path":"components/blocks/portfolio-pro/services-sections/numbered-services.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/numbered-services.tsx"}],"description":"An editorial services list of large-numbered ruled rows each carrying a service title and a plain description with a stated scope limit."},{"name":"portfolio-pro-services-sections-packages-overview","type":"registry:block","title":"Packages Overview","files":[{"path":"components/blocks/portfolio-pro/services-sections/packages-overview.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/packages-overview.tsx"}],"description":"Three engagement package cards showing a starting price, duration, and included items with a written-proposal footnote."},{"name":"portfolio-pro-services-sections-process-and-services","type":"registry:block","title":"Process And Services","files":[{"path":"components/blocks/portfolio-pro/services-sections/process-and-services.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/process-and-services.tsx"}],"description":"A two-column services block that maps each service to its engagement phase so clients see the flow before they reach out."},{"name":"portfolio-pro-services-sections-process-services-split","type":"registry:block","title":"Process Services Split","files":[{"path":"components/blocks/portfolio-pro/services-sections/process-services-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/process-services-split.tsx"}],"description":"A two-column block with four services on the left and four numbered process phases on the right showing both the offer and the method."},{"name":"portfolio-pro-services-sections-service-cards","type":"registry:block","title":"Service Cards","files":[{"path":"components/blocks/portfolio-pro/services-sections/service-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/service-cards.tsx"}],"description":"Three service cards each with a Lucide icon, a one-sentence description, and a bullet list of included deliverables.","dependencies":["lucide-react"]},{"name":"portfolio-pro-services-sections-service-detail-split","type":"registry:block","title":"Service Detail Split","files":[{"path":"components/blocks/portfolio-pro/services-sections/service-detail-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/service-detail-split.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single service explained in depth with two paragraphs and a six-row deliverables table beside a sticky Placeholder visual."},{"name":"portfolio-pro-services-sections-service-faq-combo","type":"registry:block","title":"Service Faq Combo","files":[{"path":"components/blocks/portfolio-pro/services-sections/service-faq-combo.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/service-faq-combo.tsx"}],"description":"A services block with three ruled service rows followed by three direct answers to the questions clients most commonly ask before contacting."},{"name":"portfolio-pro-services-sections-service-outcomes","type":"registry:block","title":"Service Outcomes","files":[{"path":"components/blocks/portfolio-pro/services-sections/service-outcomes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/service-outcomes.tsx"}],"description":"A heading and intro above a ruled list of services, each pairing a scope description with a large result stat and its context line."},{"name":"portfolio-pro-services-sections-service-with-pricing","type":"registry:block","title":"Service With Pricing","files":[{"path":"components/blocks/portfolio-pro/services-sections/service-with-pricing.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/service-with-pricing.tsx"}],"description":"A ruled list of services each paired with a from-price and a short deliverable list so prospects can self-qualify before reaching out."},{"name":"portfolio-pro-services-sections-services-and-cta","type":"registry:block","title":"Services and CTA","files":[{"path":"components/blocks/portfolio-pro/services-sections/services-and-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-and-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two-column block pairing a concise services table on the left with a get-in-touch card on the right that names availability and prompts enquiry.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-services-sections-services-by-audience","type":"registry:block","title":"Services By Audience","files":[{"path":"components/blocks/portfolio-pro/services-sections/services-by-audience.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-by-audience.tsx"}],"description":"A heading and intro above three columns, one per client type, each naming who it serves and listing the services most relevant to them."},{"name":"portfolio-pro-services-sections-services-list","type":"registry:block","title":"Services List","files":[{"path":"components/blocks/portfolio-pro/services-sections/services-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-list.tsx"}],"description":"A scannable ruled list of four services each with a title and a sentence describing what the engagement delivers."},{"name":"portfolio-pro-services-sections-services-tabs","type":"registry:block","title":"Services Tabs","files":[{"path":"components/blocks/portfolio-pro/services-sections/services-tabs.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-tabs.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A heading and intro above a tabbed explorer where each service tab opens a two column panel with scope, meta rows, and a deliverables list.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-services-sections-services-with-faq","type":"registry:block","title":"Services With Faq","files":[{"path":"components/blocks/portfolio-pro/services-sections/services-with-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/services-with-faq.tsx"}],"description":"A services block listing four offerings in a ruled table followed by three answered questions clients commonly ask before reaching out."},{"name":"portfolio-pro-services-sections-three-services-row","type":"registry:block","title":"Three Services Row","files":[{"path":"components/blocks/portfolio-pro/services-sections/three-services-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/three-services-row.tsx"}],"description":"Three equal service cards each with an icon, a name, and a one-sentence scope, giving visitors an instant read of a focused practice.","dependencies":["lucide-react"]},{"name":"portfolio-pro-services-sections-what-i-offer","type":"registry:block","title":"What I Offer","files":[{"path":"components/blocks/portfolio-pro/services-sections/what-i-offer.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/what-i-offer.tsx"}],"description":"A two-column split with an intro and honest capacity note on the left and a numbered list of four offerings on the right."},{"name":"portfolio-pro-services-sections-who-i-work-with","type":"registry:block","title":"Who I Work With","files":[{"path":"components/blocks/portfolio-pro/services-sections/who-i-work-with.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/services-sections/who-i-work-with.tsx"}],"description":"A two-column fit block describing the ideal client by stage and team size alongside an honest list of situations that are a poor fit."},{"name":"portfolio-pro-shop-products-bestseller-row","type":"registry:block","title":"Bestseller Row","files":[{"path":"components/blocks/portfolio-pro/shop-products/bestseller-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/bestseller-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-column strip of top-selling products each with a ranked bestseller badge overlaid on a Placeholder thumbnail and a price."},{"name":"portfolio-pro-shop-products-digital-downloads","type":"registry:block","title":"Digital Downloads","files":[{"path":"components/blocks/portfolio-pro/shop-products/digital-downloads.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/digital-downloads.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-card block of downloadable products each showing a Placeholder, format chip, description, price, and an instant-download note.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-shop-products-featured-product","type":"registry:block","title":"Featured Product","files":[{"path":"components/blocks/portfolio-pro/shop-products/featured-product.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/featured-product.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column split highlighting one digital product with a Placeholder image, price in tabular-nums, description, and an itemised includes list.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-shop-products-license-tiers","type":"registry:block","title":"License Tiers","files":[{"path":"components/blocks/portfolio-pro/shop-products/license-tiers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/license-tiers.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"Three license cards, each with a name, one time price, scope line, feature checklist, and buy action, the commercial tier flagged as most chosen.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-shop-products-product-bundle","type":"registry:block","title":"Product Bundle","files":[{"path":"components/blocks/portfolio-pro/shop-products/product-bundle.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/product-bundle.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two column bundle offer: included product tiles with struck prices beside a pricing column showing the combined value, bundle price, and saving.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-shop-products-product-categories","type":"registry:block","title":"Product Categories","files":[{"path":"components/blocks/portfolio-pro/shop-products/product-categories.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/product-categories.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three-tile category index for a creator shop showing a Placeholder, category name, and product count per format.","dependencies":["lucide-react"]},{"name":"portfolio-pro-shop-products-product-comparison","type":"registry:block","title":"Product Comparison","files":[{"path":"components/blocks/portfolio-pro/shop-products/product-comparison.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/product-comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A comparison table for three packs, with prices as column headers, feature rows mixing counts, text, and check marks, and a buy button row.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-shop-products-product-detail-card","type":"registry:block","title":"Product Detail Card","files":[{"path":"components/blocks/portfolio-pro/shop-products/product-detail-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/product-detail-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split single-product view with a Placeholder image, price, plain-language description, an itemised includes list, and a buy action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-shop-products-product-grid","type":"registry:block","title":"Product Grid","files":[{"path":"components/blocks/portfolio-pro/shop-products/product-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/product-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A six-card shop grid listing products with a Placeholder thumbnail, name, from-price, and a format chip for each item."},{"name":"portfolio-pro-shop-products-product-list","type":"registry:block","title":"Product List","files":[{"path":"components/blocks/portfolio-pro/shop-products/product-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/product-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A dense shop list inside one bordered panel, each row with a thumbnail, product name, one line description, format chip, price, and a view action.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-shop-products-shop-hero","type":"registry:block","title":"Shop Hero","files":[{"path":"components/blocks/portfolio-pro/shop-products/shop-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/shop-products/shop-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A shop opener with a heading, studio lede, and a featured row of three Placeholder product tiles showing name, from-price, and format.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-skills-sections-badge-cloud","type":"registry:block","title":"Badge Cloud","files":[{"path":"components/blocks/portfolio-pro/skills-sections/badge-cloud.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/badge-cloud.tsx"}],"description":"A wrapped chip cloud that renders core disciplines larger and bolder so the primary expertise registers at a glance."},{"name":"portfolio-pro-skills-sections-capability-cards","type":"registry:block","title":"Capability Cards","files":[{"path":"components/blocks/portfolio-pro/skills-sections/capability-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/capability-cards.tsx"}],"description":"Three capability cards each with a title, a plain-language approach sentence, and a ruled method list covering Product design, Design systems, and Front-end implementation."},{"name":"portfolio-pro-skills-sections-certifications-skills","type":"registry:block","title":"Certifications Skills","files":[{"path":"components/blocks/portfolio-pro/skills-sections/certifications-skills.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/certifications-skills.tsx"}],"description":"A two-column card grid pairing four formal credentials with the practical skill chips each one produces so visitors see qualification and capability together."},{"name":"portfolio-pro-skills-sections-core-and-tools","type":"registry:block","title":"Core And Tools","files":[{"path":"components/blocks/portfolio-pro/skills-sections/core-and-tools.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/core-and-tools.tsx"}],"description":"A ruled list of core disciplines each with a plain-language description and a chip row of the supporting tools used."},{"name":"portfolio-pro-skills-sections-disciplines-split","type":"registry:block","title":"Disciplines Split","files":[{"path":"components/blocks/portfolio-pro/skills-sections/disciplines-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/disciplines-split.tsx"}],"description":"Three equal discipline columns for a multi-discipline creative, each with a heading, a grounding sentence, and a ruled skill list covering Brand design, Product design, and Creative direction."},{"name":"portfolio-pro-skills-sections-expertise-bars","type":"registry:block","title":"Expertise Bars","files":[{"path":"components/blocks/portfolio-pro/skills-sections/expertise-bars.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/expertise-bars.tsx"}],"description":"A two-column expertise display with five div proficiency bars filled via theme tokens and plain-language level labels from Foundational to Fluent instead of percentages."},{"name":"portfolio-pro-skills-sections-grouped-tool-grid","type":"registry:block","title":"Grouped Tool Grid","files":[{"path":"components/blocks/portfolio-pro/skills-sections/grouped-tool-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/grouped-tool-grid.tsx"}],"description":"Three labeled columns of tool tiles covering Design, Development, and Collaboration, each tile showing a two-letter mark and the tool name."},{"name":"portfolio-pro-skills-sections-now-learning","type":"registry:block","title":"Now Learning","files":[{"path":"components/blocks/portfolio-pro/skills-sections/now-learning.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/now-learning.tsx"}],"description":"A skills block listing four topics currently in progress, each with a reason and an honest status line showing where the learning stands."},{"name":"portfolio-pro-skills-sections-proficiency-list","type":"registry:block","title":"Proficiency List","files":[{"path":"components/blocks/portfolio-pro/skills-sections/proficiency-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/proficiency-list.tsx"}],"description":"A ruled list of skills with an honest level word per row and a one-sentence note that qualifies what the level includes and what it does not."},{"name":"portfolio-pro-skills-sections-skill-bars-grouped","type":"registry:block","title":"Skill Bars Grouped","files":[{"path":"components/blocks/portfolio-pro/skills-sections/skill-bars-grouped.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skill-bars-grouped.tsx"}],"description":"Twelve skills across three discipline columns each with a div bar and a word level from Foundational to Fluent rather than a percentage."},{"name":"portfolio-pro-skills-sections-skill-categories","type":"registry:block","title":"Skill Categories","files":[{"path":"components/blocks/portfolio-pro/skills-sections/skill-categories.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skill-categories.tsx"}],"description":"Four category cards in a two-column grid organizing specific skills by project phase from Discovery through Delivery for a senior product designer."},{"name":"portfolio-pro-skills-sections-skills-in-practice","type":"registry:block","title":"Skills In Practice","files":[{"path":"components/blocks/portfolio-pro/skills-sections/skills-in-practice.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skills-in-practice.tsx"}],"description":"A heading and lede above a ruled list where each row pairs a skill with the project that proved it, its outcome, and the year."},{"name":"portfolio-pro-skills-sections-skills-list","type":"registry:block","title":"Skills List","files":[{"path":"components/blocks/portfolio-pro/skills-sections/skills-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skills-list.tsx"}],"description":"A three-column grouped skills block with Design, Research, and Front-end category headings and bordered chip pills for a product designer or creative generalist."},{"name":"portfolio-pro-skills-sections-skills-matrix","type":"registry:block","title":"Skills Matrix","files":[{"path":"components/blocks/portfolio-pro/skills-sections/skills-matrix.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skills-matrix.tsx"}],"description":"A heading and lede above a bordered table pairing skill rows with three engagement columns, one filled dot per row marking lead, build, or refer."},{"name":"portfolio-pro-skills-sections-skills-timeline","type":"registry:block","title":"Skills Timeline","files":[{"path":"components/blocks/portfolio-pro/skills-sections/skills-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/skills-timeline.tsx"}],"description":"A heading and lede above a dotted vertical timeline where each entry marks the year a skill arrived, its status word, and a note."},{"name":"portfolio-pro-skills-sections-specialties-row","type":"registry:block","title":"Specialties Row","files":[{"path":"components/blocks/portfolio-pro/skills-sections/specialties-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/specialties-row.tsx"}],"description":"Three card tiles each naming a core specialty with a focused sentence that states the scope and what falls outside it."},{"name":"portfolio-pro-skills-sections-stack-with-context","type":"registry:block","title":"Stack With Context","files":[{"path":"components/blocks/portfolio-pro/skills-sections/stack-with-context.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/stack-with-context.tsx"}],"description":"A three-column card grid showing six core tools each paired with a sentence explaining why it is in the stack rather than an alternative."},{"name":"portfolio-pro-skills-sections-t-shaped-skills","type":"registry:block","title":"T-Shaped Skills","files":[{"path":"components/blocks/portfolio-pro/skills-sections/t-shaped-skills.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/t-shaped-skills.tsx"}],"description":"An asymmetric split pairing one deep discipline, unpacked as a ruled card of facets, with a breadth column of two labeled skill chip groups."},{"name":"portfolio-pro-skills-sections-tech-stack-row","type":"registry:block","title":"Tech Stack Row","files":[{"path":"components/blocks/portfolio-pro/skills-sections/tech-stack-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/tech-stack-row.tsx"}],"description":"A bordered horizontal strip showing a full-stack developer technology choices in three labeled rows: Frontend, Backend, and Infrastructure."},{"name":"portfolio-pro-skills-sections-tool-stack-grid","type":"registry:block","title":"Tool Stack Grid","files":[{"path":"components/blocks/portfolio-pro/skills-sections/tool-stack-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/tool-stack-grid.tsx"}],"description":"A four-group grid of tool tiles with two-letter mark badges covering Design, Development, Research, and Delivery tools used day to day."},{"name":"portfolio-pro-skills-sections-tools-marquee","type":"registry:block","title":"Tools Marquee","files":[{"path":"components/blocks/portfolio-pro/skills-sections/tools-marquee.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/tools-marquee.tsx"}],"description":"A static wrap strip of twelve tool chips each showing a name and a one-word category, giving an at-a-glance view of the full toolkit."},{"name":"portfolio-pro-skills-sections-two-column-skills","type":"registry:block","title":"Two Column Skills","files":[{"path":"components/blocks/portfolio-pro/skills-sections/two-column-skills.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/two-column-skills.tsx"}],"description":"A two-column skills layout grouping chips by project phase across Research, Design, Systems, and Delivery columns."},{"name":"portfolio-pro-skills-sections-what-i-use","type":"registry:block","title":"What I Use","files":[{"path":"components/blocks/portfolio-pro/skills-sections/what-i-use.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/skills-sections/what-i-use.tsx"}],"description":"A ruled list of six daily tools each paired with one sentence explaining why that tool earned its place over the alternatives."},{"name":"portfolio-pro-social-links-big-type-links","type":"registry:block","title":"Big Type Links","files":[{"path":"components/blocks/portfolio-pro/social-links/big-type-links.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/big-type-links.tsx"}],"description":"An index of social destinations in oversized type, each ruled row pairing a mono number, a large platform name, a handle, and a hover arrow.","dependencies":["lucide-react"]},{"name":"portfolio-pro-social-links-connect-card","type":"registry:block","title":"Connect Card","files":[{"path":"components/blocks/portfolio-pro/social-links/connect-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/connect-card.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A compact centered card with a come-say-hi headline, an email row, a primary social row, and two side-by-side action buttons for a lightweight contact nudge.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-social-links-elsewhere-list","type":"registry:block","title":"Elsewhere List","files":[{"path":"components/blocks/portfolio-pro/social-links/elsewhere-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/elsewhere-list.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A ruled list of platforms where this person can be found online, showing the brand icon, handle, and a context-appropriate follow or connect action per row."},{"name":"portfolio-pro-social-links-featured-links","type":"registry:block","title":"Featured Links","files":[{"path":"components/blocks/portfolio-pro/social-links/featured-links.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/featured-links.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Four high-priority destinations given prominence as large icon cards covering newsletter, shop, open-source project, and booking link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-social-links-icon-row","type":"registry:block","title":"Icon Row","files":[{"path":"components/blocks/portfolio-pro/social-links/icon-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/icon-row.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A centered strip of brand-icon links for GitHub, LinkedIn, X, and Instagram with accessible labels and hover transitions."},{"name":"portfolio-pro-social-links-link-in-bio","type":"registry:block","title":"Link In Bio","files":[{"path":"components/blocks/portfolio-pro/social-links/link-in-bio.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/link-in-bio.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A mobile-first link hub with a centered avatar, name, one-line context, and a vertical stack of full-width buttons covering portfolio, newsletter, socials, and contact.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-social-links-links-card","type":"registry:block","title":"Links Card","files":[{"path":"components/blocks/portfolio-pro/social-links/links-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/links-card.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A compact bordered card listing email, social handles, and a newsletter as ruled rows with an icon and platform label per entry.","dependencies":["lucide-react"]},{"name":"portfolio-pro-social-links-links-grid","type":"registry:block","title":"Links Grid","files":[{"path":"components/blocks/portfolio-pro/social-links/links-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/links-grid.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A responsive grid of link cards covering portfolio, newsletter, shop, calendar, and social channels, each with an icon, a bold label, and a short destination note.","dependencies":["lucide-react"]},{"name":"portfolio-pro-social-links-platform-feeds","type":"registry:block","title":"Platform Feeds","files":[{"path":"components/blocks/portfolio-pro/social-links/platform-feeds.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/platform-feeds.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"Three platform panels previewing recent posts, each with a brand icon header, handle, and follow action above a ruled list of titles with dates.","dependencies":["lucide-react"]},{"name":"portfolio-pro-social-links-platform-stats","type":"registry:block","title":"Platform Stats","files":[{"path":"components/blocks/portfolio-pro/social-links/platform-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/platform-stats.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A grid of platform cards, each pairing a brand icon and handle with a large audience count, a short note, and a follow action."},{"name":"portfolio-pro-social-links-reach-guide","type":"registry:block","title":"Reach Guide","files":[{"path":"components/blocks/portfolio-pro/social-links/reach-guide.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/reach-guide.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A split contact guide ranking channels by reply speed, an intro column of location and hours beside a numbered list of channels with response chips.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-social-links-social-row","type":"registry:block","title":"Social Row","files":[{"path":"components/blocks/portfolio-pro/social-links/social-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/social-links/social-row.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A centered horizontal strip of social links pairing a brand icon with a display handle for each platform, sized for embedding at the foot of any section."},{"name":"portfolio-pro-speaking-events-booking-cta","type":"registry:block","title":"Booking CTA","files":[{"path":"components/blocks/portfolio-pro/speaking-events/booking-cta.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/booking-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A speaker booking closer with an invitation heading, a booking checklist, and dual actions beside a ruled card of speaking formats and logistics.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-speaking-events-conference-grid","type":"registry:block","title":"Conference Grid","files":[{"path":"components/blocks/portfolio-pro/speaking-events/conference-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/conference-grid.tsx"}],"description":"A wordmark tile grid of conferences a speaker has appeared at, with a year sub-line per cell and a total count in the header."},{"name":"portfolio-pro-speaking-events-keynote-feature","type":"registry:block","title":"Keynote Feature","files":[{"path":"components/blocks/portfolio-pro/speaking-events/keynote-feature.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/keynote-feature.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split highlight of one signature talk with its title, abstract, a ruled venue history, and a watch link beside a portrait placeholder.","dependencies":["lucide-react"]},{"name":"portfolio-pro-speaking-events-organizer-quotes","type":"registry:block","title":"Organizer Quotes","files":[{"path":"components/blocks/portfolio-pro/speaking-events/organizer-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/organizer-quotes.tsx"},{"path":"components/ui/avatar.tsx","type":"registry:ui","target":"components/ui/avatar.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three organizer testimonial cards, each pairing an avatar, name, and role with a quote and the event it refers to in a ruled footer.","dependencies":["radix-ui"]},{"name":"portfolio-pro-speaking-events-past-talks-grid","type":"registry:block","title":"Past Talks Grid","files":[{"path":"components/blocks/portfolio-pro/speaking-events/past-talks-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/past-talks-grid.tsx"}],"description":"A three-column card grid of speaking engagements showing event, talk title, year, and a watch link or a no-recording note.","dependencies":["lucide-react"]},{"name":"portfolio-pro-speaking-events-speaker-bio","type":"registry:block","title":"Speaker Bio","files":[{"path":"components/blocks/portfolio-pro/speaking-events/speaker-bio.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/speaker-bio.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column organizer package with a portrait placeholder, short and long bios ready to copy, a detail list, and a speaker kit download link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-speaking-events-speaker-stats","type":"registry:block","title":"Speaker Stats","files":[{"path":"components/blocks/portfolio-pro/speaking-events/speaker-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/speaker-stats.tsx"}],"description":"A three-panel ruled strip of headline speaking figures showing talks given, countries visited, and total audience with a context line under each number."},{"name":"portfolio-pro-speaking-events-speaking-faq","type":"registry:block","title":"Speaking FAQ","files":[{"path":"components/blocks/portfolio-pro/speaking-events/speaking-faq.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/speaking-faq.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"A speaking FAQ with a heading and an accordion of organizer questions beside a small ruled card listing what to include in a first invite.","dependencies":["lucide-react","radix-ui"]},{"name":"portfolio-pro-speaking-events-talk-topics","type":"registry:block","title":"Talk Topics","files":[{"path":"components/blocks/portfolio-pro/speaking-events/talk-topics.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/talk-topics.tsx"}],"description":"A talk topics catalog of numbered ruled rows, each with a title, abstract, and a meta column of format, length, and audience fit.","dependencies":["lucide-react"]},{"name":"portfolio-pro-speaking-events-talks-list","type":"registry:block","title":"Talks List","files":[{"path":"components/blocks/portfolio-pro/speaking-events/talks-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/talks-list.tsx"}],"description":"A reverse-chronological ruled index of past talks showing event, title, year, and a Watch or Slides link per row.","dependencies":["lucide-react"]},{"name":"portfolio-pro-speaking-events-upcoming-events","type":"registry:block","title":"Upcoming Events","files":[{"path":"components/blocks/portfolio-pro/speaking-events/upcoming-events.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/speaking-events/upcoming-events.tsx"}],"description":"A card grid of confirmed future talks showing date, event, city, talk title, and a register link for each appearance.","dependencies":["lucide-react"]},{"name":"portfolio-pro-stats-sections-achievement-counters","type":"registry:block","title":"Achievement Counters","files":[{"path":"components/blocks/portfolio-pro/stats-sections/achievement-counters.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/achievement-counters.tsx"}],"description":"Three large figures in equal columns covering products shipped, years of practice, and industries deep, each paired with a one-line context note that scopes the number."},{"name":"portfolio-pro-stats-sections-at-a-glance-facts","type":"registry:block","title":"At A Glance Facts","files":[{"path":"components/blocks/portfolio-pro/stats-sections/at-a-glance-facts.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/at-a-glance-facts.tsx"}],"description":"A 2x2 grid of qualitative fact tiles covering location, focus, availability, and response time so a prospective client has the practical working-with details at a glance."},{"name":"portfolio-pro-stats-sections-availability-stat-band","type":"registry:block","title":"Availability Stat Band","files":[{"path":"components/blocks/portfolio-pro/stats-sections/availability-stat-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/availability-stat-band.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A three-figure booking facts band showing response time, current lead time, and next opening month alongside a short enquire CTA card.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-pro-stats-sections-before-after-stats","type":"registry:block","title":"Before After Stats","files":[{"path":"components/blocks/portfolio-pro/stats-sections/before-after-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/before-after-stats.tsx"}],"description":"A heading and lede above ruled rows that pair each metric and its measurement note with a before figure, an arrow, and an after figure.","dependencies":["lucide-react"]},{"name":"portfolio-pro-stats-sections-big-figures-band","type":"registry:block","title":"Big Figures Band","files":[{"path":"components/blocks/portfolio-pro/stats-sections/big-figures-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/big-figures-band.tsx"}],"description":"A three-stat band of oversized tabular-nums figures divided by vertical rules inside a bordered card, anchored by a closing statement."},{"name":"portfolio-pro-stats-sections-by-the-numbers","type":"registry:block","title":"By The Numbers","files":[{"path":"components/blocks/portfolio-pro/stats-sections/by-the-numbers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/by-the-numbers.tsx"}],"description":"Five ruled rows pairing a tabular figure with a plain-language fact that scopes the number, presented as an honest accounting of the practice to date."},{"name":"portfolio-pro-stats-sections-career-stats","type":"registry:block","title":"Career Stats","files":[{"path":"components/blocks/portfolio-pro/stats-sections/career-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/career-stats.tsx"}],"description":"A four-number horizontal strip showing years in practice, companies worked with, projects shipped, and active long-term retainers at a glance."},{"name":"portfolio-pro-stats-sections-client-logos-and-stats","type":"registry:block","title":"Client Logos And Stats","files":[{"path":"components/blocks/portfolio-pro/stats-sections/client-logos-and-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/client-logos-and-stats.tsx"}],"description":"A credibility band combining a row of client wordmarks above a three-figure stat grid covering projects shipped, long-term clients, and on-time delivery rate."},{"name":"portfolio-pro-stats-sections-four-up-stats","type":"registry:block","title":"Four Up Stats","files":[{"path":"components/blocks/portfolio-pro/stats-sections/four-up-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/four-up-stats.tsx"}],"description":"A 2x2 grid of four stat cards each showing a large figure, a short label, and a context line that earns the number."},{"name":"portfolio-pro-stats-sections-headline-stat","type":"registry:block","title":"Headline Stat","files":[{"path":"components/blocks/portfolio-pro/stats-sections/headline-stat.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/headline-stat.tsx"}],"description":"One oversized centerpiece figure above a heading and a context paragraph, closed by a ruled row of three small supporting figures."},{"name":"portfolio-pro-stats-sections-impact-numbers","type":"registry:block","title":"Impact Numbers","files":[{"path":"components/blocks/portfolio-pro/stats-sections/impact-numbers.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/impact-numbers.tsx"}],"description":"An outcome figures block showing four measured results from real client work, each with a context line, methodology note, and client attribution."},{"name":"portfolio-pro-stats-sections-impact-stats","type":"registry:block","title":"Impact Stats","files":[{"path":"components/blocks/portfolio-pro/stats-sections/impact-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/impact-stats.tsx"}],"description":"Three outcome figures from real client work, each with an attribution note naming the project type and the measurement method so the result does not overstate."},{"name":"portfolio-pro-stats-sections-inline-stats-row","type":"registry:block","title":"Inline Stats Row","files":[{"path":"components/blocks/portfolio-pro/stats-sections/inline-stats-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/inline-stats-row.tsx"}],"description":"A single ruled band of four tabular figures with short labels, the slimmest way to surface career numbers without a card grid."},{"name":"portfolio-pro-stats-sections-numbers-strip","type":"registry:block","title":"Numbers Strip","files":[{"path":"components/blocks/portfolio-pro/stats-sections/numbers-strip.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/numbers-strip.tsx"}],"description":"A ruled horizontal band of four headline figures covering years, projects shipped, clients, and a retention count, each with a short plain-English label."},{"name":"portfolio-pro-stats-sections-projects-per-year","type":"registry:block","title":"Projects Per Year","files":[{"path":"components/blocks/portfolio-pro/stats-sections/projects-per-year.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/projects-per-year.tsx"}],"description":"A heading and lede above a bordered card of ruled year rows, each pairing a year with a proportional bar and a project count, plus a total footer."},{"name":"portfolio-pro-stats-sections-stats-with-context","type":"registry:block","title":"Stats With Context","files":[{"path":"components/blocks/portfolio-pro/stats-sections/stats-with-context.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/stats-with-context.tsx"}],"description":"Three figures each followed by a full sentence naming the client, the quarter, and the measurement method so no result appears without the context that earned it."},{"name":"portfolio-pro-stats-sections-stats-with-icons","type":"registry:block","title":"Stats With Icons","files":[{"path":"components/blocks/portfolio-pro/stats-sections/stats-with-icons.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/stats-with-icons.tsx"}],"description":"Four career figures each paired with a small lucide icon and a label in individual cards, making a numbers strip visually scannable.","dependencies":["lucide-react"]},{"name":"portfolio-pro-stats-sections-work-mix-split","type":"registry:block","title":"Work Mix Split","files":[{"path":"components/blocks/portfolio-pro/stats-sections/work-mix-split.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/work-mix-split.tsx"}],"description":"A heading and lede above a single segmented distribution bar showing how billed time splits across four kinds of work, with a percentage legend beneath."},{"name":"portfolio-pro-stats-sections-years-and-projects","type":"registry:block","title":"Years And Projects","files":[{"path":"components/blocks/portfolio-pro/stats-sections/years-and-projects.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/stats-sections/years-and-projects.tsx"}],"description":"A two-column split with a positioning heading on the left and two ruled figures on the right covering years of independent practice and total projects shipped."},{"name":"portfolio-pro-studio-team-culture-section","type":"registry:block","title":"Culture Section","files":[{"path":"components/blocks/portfolio-pro/studio-team/culture-section.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/culture-section.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A split block presenting three studio working principles as border-left blurbs beside a placeholder image."},{"name":"portfolio-pro-studio-team-extended-team","type":"registry:block","title":"Extended Team","files":[{"path":"components/blocks/portfolio-pro/studio-team/extended-team.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/extended-team.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A heading and intro above a two column grid of collaborator cards, each with avatar, discipline, project count and tenure, plus a credit note."},{"name":"portfolio-pro-studio-team-founders-row","type":"registry:block","title":"Founders Row","files":[{"path":"components/blocks/portfolio-pro/studio-team/founders-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/founders-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A three-column grid of studio founder cards each with a named avatar, role, and a single concrete bio line."},{"name":"portfolio-pro-studio-team-open-roles","type":"registry:block","title":"Open Roles","files":[{"path":"components/blocks/portfolio-pro/studio-team/open-roles.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/open-roles.tsx"}],"description":"A heading above a two column layout: a ruled list of open roles with salary bands beside a numbered hiring process and application card."},{"name":"portfolio-pro-studio-team-studio-hero","type":"registry:block","title":"Studio Hero","files":[{"path":"components/blocks/portfolio-pro/studio-team/studio-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-hero.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A full-viewport studio opener with a we-voice headline, two actions, and a three-fact credential strip below.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-pro-studio-team-studio-services","type":"registry:block","title":"Studio Services","files":[{"path":"components/blocks/portfolio-pro/studio-team/studio-services.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-services.tsx"}],"description":"Four studio service cards each listing a discipline, a scope statement, and a bulleted includes list in a two-column grid."},{"name":"portfolio-pro-studio-team-studio-stats","type":"registry:block","title":"Studio Stats","files":[{"path":"components/blocks/portfolio-pro/studio-team/studio-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-stats.tsx"}],"description":"A four-figure horizontal strip showing a studio founded year, team size, projects completed, and clients served."},{"name":"portfolio-pro-studio-team-studio-timeline","type":"registry:block","title":"Studio Timeline","files":[{"path":"components/blocks/portfolio-pro/studio-team/studio-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-timeline.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two column layout with a heading and founder quote card on the left beside a ruled list of year marked studio milestones on the right."},{"name":"portfolio-pro-studio-team-studio-week","type":"registry:block","title":"Studio Week","files":[{"path":"components/blocks/portfolio-pro/studio-team/studio-week.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/studio-week.tsx"}],"description":"Two column layout with a heading, exceptions list and note on the left beside a ruled five day breakdown of the studio's working week."},{"name":"portfolio-pro-studio-team-team-grid","type":"registry:block","title":"Team Grid","files":[{"path":"components/blocks/portfolio-pro/studio-team/team-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/team-grid.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A six-member team grid showing avatar, name, role, and a one-line bio per card for a design or development studio."},{"name":"portfolio-pro-studio-team-team-member-card","type":"registry:block","title":"Team Member Card","files":[{"path":"components/blocks/portfolio-pro/studio-team/team-member-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/team-member-card.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A single studio member profile with avatar, bio, a ruled focus-area list, and an availability date in a split layout."},{"name":"portfolio-pro-studio-team-team-values","type":"registry:block","title":"Team Values","files":[{"path":"components/blocks/portfolio-pro/studio-team/team-values.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/studio-team/team-values.tsx"}],"description":"Four numbered studio principles each with a plain description and a ruled cost section naming the honest downside of holding to that principle."},{"name":"portfolio-pro-testimonials-avatar-quote-row","type":"registry:block","title":"Avatar Quote Row","files":[{"path":"components/blocks/portfolio-pro/testimonials/avatar-quote-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/avatar-quote-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three short quote cards in a row each opening with the avatar and name before the quote, for fast scannable social proof across a range of client types."},{"name":"portfolio-pro-testimonials-client-interview","type":"registry:block","title":"Client Interview","files":[{"path":"components/blocks/portfolio-pro/testimonials/client-interview.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/client-interview.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A two column testimonial with a client and engagement summary card on the left and four honest question and answer pairs on the right."},{"name":"portfolio-pro-testimonials-client-logo-quotes","type":"registry:block","title":"Client Logo Quotes","files":[{"path":"components/blocks/portfolio-pro/testimonials/client-logo-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/client-logo-quotes.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three client cards each pairing a styled wordmark badge with a quote tied to a concrete outcome and an avatar attribution."},{"name":"portfolio-pro-testimonials-client-quotes-row","type":"registry:block","title":"Client Quotes Row","files":[{"path":"components/blocks/portfolio-pro/testimonials/client-quotes-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/client-quotes-row.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three brief punchy client quotes in a three-column row, each attributed with avatar and name, designed to be scanned in seconds."},{"name":"portfolio-pro-testimonials-clients-say-grid","type":"registry:block","title":"Clients Say Grid","files":[{"path":"components/blocks/portfolio-pro/testimonials/clients-say-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/clients-say-grid.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A 2x2 grid of four client quotes each with an avatar, name, role, and company, giving a compact and scannable proof block on a single page section."},{"name":"portfolio-pro-testimonials-featured-quote-band","type":"registry:block","title":"Featured Quote Band","files":[{"path":"components/blocks/portfolio-pro/testimonials/featured-quote-band.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/featured-quote-band.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A single client quote at display scale inside a full-width bordered band with a small avatar and attribution row below."},{"name":"portfolio-pro-testimonials-grid-of-six","type":"registry:block","title":"Grid of Six","files":[{"path":"components/blocks/portfolio-pro/testimonials/grid-of-six.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/grid-of-six.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Six short client quotes in a three-column card grid with avatars and named role and company attribution per card."},{"name":"portfolio-pro-testimonials-logo-and-quote","type":"registry:block","title":"Logo And Quote","files":[{"path":"components/blocks/portfolio-pro/testimonials/logo-and-quote.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/logo-and-quote.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two client company wordmarks each paired with one attributed quote in a side-by-side row, leading with the brand name before the person."},{"name":"portfolio-pro-testimonials-logos-and-praise","type":"registry:block","title":"Logos And Praise","files":[{"path":"components/blocks/portfolio-pro/testimonials/logos-and-praise.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/logos-and-praise.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A row of five client wordmarks above two attributed quote cards, combining brand recognition with personal praise in a single section."},{"name":"portfolio-pro-testimonials-long-form-testimonial","type":"registry:block","title":"Long Form Testimonial","files":[{"path":"components/blocks/portfolio-pro/testimonials/long-form-testimonial.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/long-form-testimonial.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A four-paragraph client recommendation with a sticky attribution card naming the person, role, company, and working relationship."},{"name":"portfolio-pro-testimonials-praise-timeline","type":"registry:block","title":"Praise Timeline","files":[{"path":"components/blocks/portfolio-pro/testimonials/praise-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/praise-timeline.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A vertical timeline rail of four short client quotes from one project, from kickoff through six months after launch, each with an avatar."},{"name":"portfolio-pro-testimonials-praise-wall","type":"registry:block","title":"Praise Wall","files":[{"path":"components/blocks/portfolio-pro/testimonials/praise-wall.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/praise-wall.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Six short testimonials in a two-column masonry-feeling grid with mixed quote lengths and small attributions showing breadth of trust."},{"name":"portfolio-pro-testimonials-quote-marquee","type":"registry:block","title":"Quote Marquee","files":[{"path":"components/blocks/portfolio-pro/testimonials/quote-marquee.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/quote-marquee.tsx"}],"description":"A static 3-col grid of six short attributed client quotes presenting a scannable horizontal band of social proof without animation."},{"name":"portfolio-pro-testimonials-quote-with-stats","type":"registry:block","title":"Quote With Stats","files":[{"path":"components/blocks/portfolio-pro/testimonials/quote-with-stats.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/quote-with-stats.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A client quote paired with a ruled table of four project result figures giving the measurable outcomes behind the praise."},{"name":"portfolio-pro-testimonials-rating-scorecard","type":"registry:block","title":"Rating Scorecard","files":[{"path":"components/blocks/portfolio-pro/testimonials/rating-scorecard.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/rating-scorecard.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A two column scorecard with an average rating and per criterion bars on the left and two supporting client quotes on the right."},{"name":"portfolio-pro-testimonials-recommendation-card","type":"registry:block","title":"Recommendation Card","files":[{"path":"components/blocks/portfolio-pro/testimonials/recommendation-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/recommendation-card.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A centered card holding a long first-person endorsement with avatar, name, title, and a relationship line naming the project and year."},{"name":"portfolio-pro-testimonials-scrolling-quotes","type":"registry:block","title":"Scrolling Quotes","files":[{"path":"components/blocks/portfolio-pro/testimonials/scrolling-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/scrolling-quotes.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A horizontal overflow strip of five fixed-width quote cards each attributed with avatar, role, and company."},{"name":"portfolio-pro-testimonials-single-spotlight","type":"registry:block","title":"Single Spotlight","files":[{"path":"components/blocks/portfolio-pro/testimonials/single-spotlight.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/single-spotlight.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column split with a long detailed quote at heading scale on one side and the recommender, a context image, and an engagement line on the other."},{"name":"portfolio-pro-testimonials-single-with-photo","type":"registry:block","title":"Single With Photo","files":[{"path":"components/blocks/portfolio-pro/testimonials/single-with-photo.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/single-with-photo.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single detailed client quote beside a context image and a ruled attribution card naming the role and engagement."},{"name":"portfolio-pro-testimonials-testimonial-cards","type":"registry:block","title":"Testimonial Cards","files":[{"path":"components/blocks/portfolio-pro/testimonials/testimonial-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/testimonial-cards.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three testimonial cards in a grid, each quoting a specific measurable outcome with avatar, name, role, and company."},{"name":"portfolio-pro-testimonials-testimonial-quote","type":"registry:block","title":"Testimonial Quote","files":[{"path":"components/blocks/portfolio-pro/testimonials/testimonial-quote.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/testimonial-quote.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A single large client quote set at heading scale with an avatar, name, role, and company beneath it, for spotlight social proof."},{"name":"portfolio-pro-testimonials-testimonial-tabs","type":"registry:block","title":"Testimonial Tabs","files":[{"path":"components/blocks/portfolio-pro/testimonials/testimonial-tabs.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/testimonial-tabs.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"An interactive switcher showing one featured client quote at large scale above a row of avatar tabs that flip between four clients."},{"name":"portfolio-pro-testimonials-testimonial-with-result","type":"registry:block","title":"Testimonial With Result","files":[{"path":"components/blocks/portfolio-pro/testimonials/testimonial-with-result.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/testimonial-with-result.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A testimonial block pairing each client quote with the concrete outcome figure from that engagement, proof and praise shown side by side in a single card."},{"name":"portfolio-pro-testimonials-three-column-quotes","type":"registry:block","title":"Three Column Quotes","files":[{"path":"components/blocks/portfolio-pro/testimonials/three-column-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/three-column-quotes.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Three equal client quote cards each anchored to a named project outcome and attributed with avatar and role."},{"name":"portfolio-pro-testimonials-two-up-testimonials","type":"registry:block","title":"Two Up Testimonials","files":[{"path":"components/blocks/portfolio-pro/testimonials/two-up-testimonials.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/two-up-testimonials.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"Two equal quote cards side by side each with an avatar and full attribution, presenting two clients and two distinct proof points at the same visual weight."},{"name":"portfolio-pro-testimonials-video-testimonial-blueprint","type":"registry:block","title":"Video Testimonial Blueprint","files":[{"path":"components/blocks/portfolio-pro/testimonials/video-testimonial-blueprint.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/testimonials/video-testimonial-blueprint.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"},{"path":"components/ui/avatars.tsx","type":"registry:ui","target":"components/ui/avatars.tsx"}],"description":"A static video testimonial layout with an aspect-video Placeholder frame, a play affordance, client attribution, and a pull-quote caption ready to wire to a real video embed.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-client-reel-list","type":"registry:block","title":"Client Reel List","files":[{"path":"components/blocks/portfolio-pro/video-motion/client-reel-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/client-reel-list.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A ruled list of commissioned films each showing a thumbnail, client name, deliverable description, runtime, year, and a watch link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-featured-video","type":"registry:block","title":"Featured Video","files":[{"path":"components/blocks/portfolio-pro/video-motion/featured-video.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/featured-video.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single video piece highlighted as a full-width play frame above a two-column panel with the description, creative constraint, and a ruled credits list.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-motion-breakdown","type":"registry:block","title":"Motion Breakdown","files":[{"path":"components/blocks/portfolio-pro/video-motion/motion-breakdown.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/motion-breakdown.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three-stage process section showing one project from storyboard to final, each frame captioned with the motion technique applied."},{"name":"portfolio-pro-video-motion-play-feature","type":"registry:block","title":"Play Feature","files":[{"path":"components/blocks/portfolio-pro/video-motion/play-feature.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/play-feature.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column project detail with a video frame and play button on one side and description, discipline pills, and named crew credits on the other.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-reel-grid","type":"registry:block","title":"Reel Grid","files":[{"path":"components/blocks/portfolio-pro/video-motion/reel-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/reel-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three-column grid of video work thumbnails each with a centred play button, a duration badge, and a client and year line.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-reel-hero","type":"registry:block","title":"Reel Hero","files":[{"path":"components/blocks/portfolio-pro/video-motion/reel-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/reel-hero.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A fold-filling hero with a large video frame, play button, and director identity column showing name, discipline, three stats, and two CTAs.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-showreel-card","type":"registry:block","title":"Showreel Card","files":[{"path":"components/blocks/portfolio-pro/video-motion/showreel-card.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/showreel-card.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single featured reel in a full-width card with a play button, description, discipline tags, duration, year, and a named watch link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-video-case-study","type":"registry:block","title":"Video Case Study","files":[{"path":"components/blocks/portfolio-pro/video-motion/video-case-study.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/video-case-study.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A single project told through a Placeholder video frame, a stat strip of production figures, and a three-column brief, approach, and result narrative."},{"name":"portfolio-pro-video-motion-video-grid","type":"registry:block","title":"Video Grid","files":[{"path":"components/blocks/portfolio-pro/video-motion/video-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/video-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A three-column tile grid of six video commissions, each with a play affordance, duration badge, title, client type, and year.","dependencies":["lucide-react"]},{"name":"portfolio-pro-video-motion-video-list-rows","type":"registry:block","title":"Video List Rows","files":[{"path":"components/blocks/portfolio-pro/video-motion/video-list-rows.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/video-motion/video-list-rows.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A ruled-row videography index listing each film with a small thumbnail, title, client name, duration, year, and a watch link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-alternating-rows","type":"registry:block","title":"Alternating Rows","files":[{"path":"components/blocks/portfolio-pro/work-grids/alternating-rows.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/alternating-rows.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A work layout of full-width two-column rows that flip image and detail sides on each project, with a constraint-led description, a ruled deliverables list, and a case study link per row.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-archive-grid","type":"registry:block","title":"Archive Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/archive-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/archive-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A full-archive grid of nine project tiles with a total count badge and an honest lede noting that older work shows the range."},{"name":"portfolio-pro-work-grids-bento-work-grid","type":"registry:block","title":"Bento Work Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/bento-work-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/bento-work-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An asymmetric four-column project grid where two tiles span two columns at a wide aspect ratio and four sit at standard size, each captioned with category, role, and year.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-category-sections-grid","type":"registry:block","title":"Category Sections Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/category-sections-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/category-sections-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A work grid divided into discipline sections each with a ruled label and a row of project tiles naming the role and year.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-featured-and-grid","type":"registry:block","title":"Featured And Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/featured-and-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/featured-and-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"One large lead project with a real summary above a supporting grid of three more, the pick plus the catalog.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-featured-three","type":"registry:block","title":"Featured Three","files":[{"path":"components/blocks/portfolio-pro/work-grids/featured-three.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/featured-three.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Three equal project tiles each with a full-width image, client type, role, year, a one-line outcome description, and a case study link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-featured-work-grid","type":"registry:block","title":"Featured Work Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/featured-work-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A selected work grid of project tiles that each name the client type, the role, and the year.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-filterable-work-grid","type":"registry:block","title":"Filterable Work Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/filterable-work-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/filterable-work-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A filterable work grid with category chips and a live count that narrows six project tiles by discipline, naming the kind, role, and year per tile."},{"name":"portfolio-pro-work-grids-grid-with-categories","type":"registry:block","title":"Grid With Categories","files":[{"path":"components/blocks/portfolio-pro/work-grids/grid-with-categories.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/grid-with-categories.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A work index that groups project tiles under discipline category headings, each with a scope description and an archive link, so visitors navigate directly to the work type they need.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-hover-grid","type":"registry:block","title":"Hover Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/hover-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/hover-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A six-tile work grid with a permanently revealed overlay strip naming the project and role on each thumbnail, plus static kind and year captions below."},{"name":"portfolio-pro-work-grids-masonry-grid","type":"registry:block","title":"Masonry Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/masonry-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/masonry-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A masonry work grid with six Placeholder tiles in mixed aspect ratios and medium and year captions, suited to photography and illustration portfolios."},{"name":"portfolio-pro-work-grids-masonry-with-captions","type":"registry:block","title":"Masonry With Captions","files":[{"path":"components/blocks/portfolio-pro/work-grids/masonry-with-captions.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/masonry-with-captions.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A CSS-columns masonry of six project tiles at mixed aspect ratios, each captioned with the project name, role, and year."},{"name":"portfolio-pro-work-grids-numbered-work-list","type":"registry:block","title":"Numbered Work List","files":[{"path":"components/blocks/portfolio-pro/work-grids/numbered-work-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/numbered-work-list.tsx"}],"description":"A ruled editorial index of projects as large-numbered rows showing name, role, and year with a hover arrow link on each entry.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-one-big-three-small","type":"registry:block","title":"One Big Three Small","files":[{"path":"components/blocks/portfolio-pro/work-grids/one-big-three-small.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/one-big-three-small.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A featured layout with one large project tile carrying a summary sentence and a view case study link, followed by a row of three smaller supporting tiles.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-recent-work-row","type":"registry:block","title":"Recent Work Row","files":[{"path":"components/blocks/portfolio-pro/work-grids/recent-work-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/recent-work-row.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A four-card recent work strip with a see-all link at heading level, each card showing a portrait thumbnail, project name, role, and year.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-three-column-grid","type":"registry:block","title":"Three Column Grid","files":[{"path":"components/blocks/portfolio-pro/work-grids/three-column-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/three-column-grid.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A dense three-column grid of six square project tiles with name and year captions and a full archive link, for breadth-first portfolios."},{"name":"portfolio-pro-work-grids-two-column-work","type":"registry:block","title":"Two Column Work","files":[{"path":"components/blocks/portfolio-pro/work-grids/two-column-work.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/two-column-work.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"An alternating two-column project list pairing a Placeholder image with a paragraph writeup, role, and year for each engagement.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-work-by-year","type":"registry:block","title":"Work By Year","files":[{"path":"components/blocks/portfolio-pro/work-grids/work-by-year.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/work-by-year.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"Projects grouped under ruled year headings with an inline project count, each tile showing the project name, client kind, and role.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-work-index-list","type":"registry:block","title":"Work Index List","files":[{"path":"components/blocks/portfolio-pro/work-grids/work-index-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/work-index-list.tsx"}],"description":"A numbered text list of projects showing project name, kind, and year with a trailing arrow and no images.","dependencies":["lucide-react"]},{"name":"portfolio-pro-work-grids-work-with-results","type":"registry:block","title":"Work With Results","files":[{"path":"components/blocks/portfolio-pro/work-grids/work-with-results.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/work-with-results.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column project grid where each tile pairs a thumbnail with a one-line outcome carrying a highlighted tabular figure beneath the name and role."},{"name":"portfolio-pro-work-grids-work-with-tabs","type":"registry:block","title":"Work With Tabs","files":[{"path":"components/blocks/portfolio-pro/work-grids/work-with-tabs.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/work-grids/work-with-tabs.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A work grid with three discipline tabs switching between four-tile project sets via state, for multi-discipline creatives presenting Design, Code, and Writing separately."},{"name":"portfolio-pro-writing-portfolio-byline-row","type":"registry:block","title":"Byline Row","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/byline-row.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/byline-row.tsx"}],"description":"A centred wordmark row of publications where work has appeared, with a summary strip counting pieces placed, years active, and average read time."},{"name":"portfolio-pro-writing-portfolio-clip-grid","type":"registry:block","title":"Clip Grid","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/clip-grid.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/clip-grid.tsx"}],"description":"A three-column card grid of six writing samples each showing publication, headline, a one-line standfirst, and date.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-essay-list","type":"registry:block","title":"Essay List","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/essay-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/essay-list.tsx"}],"description":"A ruled-row essays archive with title, publication name, read time, and date per entry for a scannable writing index.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-excerpt-cards","type":"registry:block","title":"Excerpt Cards","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/excerpt-cards.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/excerpt-cards.tsx"}],"description":"Three writing samples each opened by a pull-quote blockquote before the title, publication, date, and read-full link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-featured-clips","type":"registry:block","title":"Featured Clips","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/featured-clips.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/featured-clips.tsx"}],"description":"Three standout writing pieces as cards with the publication, headline, an excerpt from the argument, and a read link.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-featured-essay","type":"registry:block","title":"Featured Essay","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/featured-essay.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/featured-essay.tsx"},{"path":"components/ui/placeholder.tsx","type":"registry:ui","target":"components/ui/placeholder.tsx"}],"description":"A two-column spotlight on one essay with a Placeholder, a pull-quote excerpt, and a detail list naming publication, date, read time, topic, and audience.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-publications-wall","type":"registry:block","title":"Publications Wall","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/publications-wall.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/publications-wall.tsx"}],"description":"A dense ruled cell grid of 18 publication names where work has appeared, with a counted heading that distinguishes bylines from mentions."},{"name":"portfolio-pro-writing-portfolio-published-list","type":"registry:block","title":"Published List","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/published-list.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/published-list.tsx"}],"description":"A ruled list of placed articles and essays showing title, publication, date, and a read link for every byline on record.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-topics-covered","type":"registry:block","title":"Topics Covered","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/topics-covered.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/topics-covered.tsx"}],"description":"A six-tile grid mapping the subjects a writer covers with a piece count per topic and a link to each archive.","dependencies":["lucide-react"]},{"name":"portfolio-pro-writing-portfolio-writing-hero","type":"registry:block","title":"Writing Hero","files":[{"path":"components/blocks/portfolio-pro/writing-portfolio/writing-hero.tsx","type":"registry:component","target":"components/blocks/portfolio-pro/writing-portfolio/writing-hero.tsx"}],"description":"A two-column writer opener combining an identity heading and ruled meta list with a featured piece card showing publication and read time.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-about-and-skills-about-me","type":"registry:block","title":"About Me","files":[{"path":"components/blocks/portfolio/portfolio-about-and-skills/about-me.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-about-and-skills/about-me.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"An about section pairing a portrait with a short bio, role, and contact links. Tells visitors who you are and why they should hire you on a portfolio page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-about-and-skills-education-certifications","type":"registry:block","title":"Education Certifications","files":[{"path":"components/blocks/portfolio/portfolio-about-and-skills/education-certifications.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-about-and-skills/education-certifications.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A list of degrees, courses, and certifications with issuer, date, and credential. Shows formal training and qualifications on a portfolio or resume page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-about-and-skills-resume-download","type":"registry:block","title":"Resume Download","files":[{"path":"components/blocks/portfolio/portfolio-about-and-skills/resume-download.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-about-and-skills/resume-download.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A compact call to action with a download button and file details for your CV. Lets recruiters grab your resume in one click from a portfolio page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-about-and-skills-skills-display","type":"registry:block","title":"Skills Display","files":[{"path":"components/blocks/portfolio/portfolio-about-and-skills/skills-display.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-about-and-skills/skills-display.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A grid of skill badges grouped by area with optional proficiency levels. Summarizes the tools and languages you know across a portfolio about page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-about-and-skills-timeline-category-skills","type":"registry:block","title":"Timeline Category Skills","files":[{"path":"components/blocks/portfolio/portfolio-about-and-skills/timeline-category-skills.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-about-and-skills/timeline-category-skills.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A vertical timeline of roles and projects with skills tagged per entry. Maps your career history and the abilities you used at each step you took.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-awards-and-recognition-awards-timeline","type":"registry:block","title":"Awards Timeline","files":[{"path":"components/blocks/portfolio/portfolio-awards-and-recognition/awards-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-awards-and-recognition/awards-timeline.tsx"}],"description":"A vertical timeline listing awards by year with titles and issuers. Use it to walk visitors through your honors in chronological order on a profile.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-awards-and-recognition-badge-or-icon-grid","type":"registry:block","title":"Badge Or Icon Grid","files":[{"path":"components/blocks/portfolio/portfolio-awards-and-recognition/badge-or-icon-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-awards-and-recognition/badge-or-icon-grid.tsx"}],"description":"A responsive grid of award badges or icons with short captions. Displays many certifications and honors at a glance on a portfolio about page."},{"name":"portfolio-portfolio-awards-and-recognition-carousel-of-certifications","type":"registry:block","title":"Carousel Of Certifications","files":[{"path":"components/blocks/portfolio/portfolio-awards-and-recognition/carousel-of-certifications.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-awards-and-recognition/carousel-of-certifications.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A sliding carousel that cycles through certification logos and details. Fits a long list of credentials into a compact, scrollable strip here.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-awards-and-recognition-featured-award-highlight","type":"registry:block","title":"Featured Award Highlight","files":[{"path":"components/blocks/portfolio/portfolio-awards-and-recognition/featured-award-highlight.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-awards-and-recognition/featured-award-highlight.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A spotlight block centered on a single major award with its name, year, and a short note. Use it to lead with your most impressive recognition.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-awards-and-recognition-quote-award-combo","type":"registry:block","title":"Quote Award Combo","files":[{"path":"components/blocks/portfolio/portfolio-awards-and-recognition/quote-award-combo.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-awards-and-recognition/quote-award-combo.tsx"}],"description":"A block pairing a testimonial quote with an award badge side by side. Combines praise and recognition to build credibility on a portfolio page.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-blog-writing-and-previews-featured-article-list","type":"registry:block","title":"Featured Article List","files":[{"path":"components/blocks/portfolio/portfolio-blog-writing-and-previews/featured-article-list.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-blog-writing-and-previews/featured-article-list.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A list that leads with one large featured article followed by smaller entries. Use it to spotlight your best post while listing recent writing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-blog-writing-and-previews-grid-blog-cards","type":"registry:block","title":"Grid Blog Cards","files":[{"path":"components/blocks/portfolio/portfolio-blog-writing-and-previews/grid-blog-cards.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-blog-writing-and-previews/grid-blog-cards.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A responsive grid of blog cards with cover image, title, and excerpt. The standard layout for browsing many articles on a writing index page.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-blog-writing-and-previews-horizontal-blog-carousel","type":"registry:block","title":"Horizontal Blog Carousel","files":[{"path":"components/blocks/portfolio/portfolio-blog-writing-and-previews/horizontal-blog-carousel.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-blog-writing-and-previews/horizontal-blog-carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A horizontal carousel of blog cards that scrolls sideways. Use it to preview recent posts in a tidy row without taking up much vertical space.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-blog-writing-and-previews-masonry-layout-articles","type":"registry:block","title":"Masonry Layout Articles","files":[{"path":"components/blocks/portfolio/portfolio-blog-writing-and-previews/masonry-layout-articles.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-blog-writing-and-previews/masonry-layout-articles.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A masonry grid of article cards with varied heights for a dynamic feel. Fits posts that mix tall images with short text on a writing showcase.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-blog-writing-and-previews-minimal-list-dates","type":"registry:block","title":"Minimal List Dates","files":[{"path":"components/blocks/portfolio/portfolio-blog-writing-and-previews/minimal-list-dates.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-blog-writing-and-previews/minimal-list-dates.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A plain text list of post titles with publish dates beside each one. Use it when you want a fast, distraction free archive of all your writing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-case-studies-accordion-expandable-case-studies","type":"registry:block","title":"Accordion Expandable Case Studies","files":[{"path":"components/blocks/portfolio/portfolio-case-studies/accordion-expandable-case-studies.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-case-studies/accordion-expandable-case-studies.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion that expands each case study to reveal the full story. Use it to list many projects while keeping the page compact until one is tapped.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-case-studies-grid-case-study-previews","type":"registry:block","title":"Grid Case Study Previews","files":[{"path":"components/blocks/portfolio/portfolio-case-studies/grid-case-study-previews.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-case-studies/grid-case-study-previews.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A responsive grid of case study cards with thumbnail, title, and summary. The go to layout for browsing a portfolio of client projects at once.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-case-studies-large-visual-focus-case-study","type":"registry:block","title":"Large Visual Focus Case Study","files":[{"path":"components/blocks/portfolio/portfolio-case-studies/large-visual-focus-case-study.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-case-studies/large-visual-focus-case-study.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A case study block built around one large hero image with supporting copy. Use it when the visual result of the project tells the story best.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-case-studies-side-by-side-image-story","type":"registry:block","title":"Side By Side Image Story","files":[{"path":"components/blocks/portfolio/portfolio-case-studies/side-by-side-image-story.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-case-studies/side-by-side-image-story.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A two column block placing a project image beside its written story. Pairs visuals and narrative to walk readers through a single case study.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-case-studies-timeline-style-case-study","type":"registry:block","title":"Timeline Style Case Study","files":[{"path":"components/blocks/portfolio/portfolio-case-studies/timeline-style-case-study.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-case-studies/timeline-style-case-study.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A timeline that maps a project across stages from the first brief to outcome. Use it to show your process and results step by step in one case study.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-contact-sections-classic-contact-form","type":"registry:block","title":"Classic Contact Form","files":[{"path":"components/blocks/portfolio/portfolio-contact-sections/classic-contact-form.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-contact-sections/classic-contact-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A straightforward contact form with name, email, and message fields plus a submit button. Drop it on a portfolio page so visitors can send a quick note.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-contact-sections-map-with-contact-info","type":"registry:block","title":"Map With Contact Info","files":[{"path":"components/blocks/portfolio/portfolio-contact-sections/map-with-contact-info.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-contact-sections/map-with-contact-info.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"Pairs an embedded location map with address, phone, and email details. Use it when clients need to find your studio or office alongside ways to reach you.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-contact-sections-minimal-form-with-social","type":"registry:block","title":"Minimal Form With Social","files":[{"path":"components/blocks/portfolio/portfolio-contact-sections/minimal-form-with-social.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-contact-sections/minimal-form-with-social.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A compact contact form sitting beside a row of social media icons. Fits portfolios that want one simple message field and links to your other profiles.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-contact-sections-popup-trigger-contact","type":"registry:block","title":"Popup Trigger Contact","files":[{"path":"components/blocks/portfolio/portfolio-contact-sections/popup-trigger-contact.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-contact-sections/popup-trigger-contact.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/dialog.tsx","type":"registry:ui","target":"components/ui/dialog.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A button that opens the contact form in a modal dialog, keeping the page clean. Good for portfolios where you want the form hidden until a visitor asks.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-contact-sections-split-layout","type":"registry:block","title":"Split Layout","files":[{"path":"components/blocks/portfolio/portfolio-contact-sections/split-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-contact-sections/split-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/textarea.tsx","type":"registry:ui","target":"components/ui/textarea.tsx"}],"description":"A two column section with intro copy on one side and the contact form on the other. Balances a personal message with a clear path to get in touch.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-core-services-overview-accordion-services","type":"registry:block","title":"Accordion Services","files":[{"path":"components/blocks/portfolio/portfolio-core-services-overview/accordion-services.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-core-services-overview/accordion-services.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"An accordion that lists each service as an expandable row with a short summary and details inside. Keeps a long offering compact and easy to scan.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-core-services-overview-icon-list-overview","type":"registry:block","title":"Icon List Overview","files":[{"path":"components/blocks/portfolio/portfolio-core-services-overview/icon-list-overview.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-core-services-overview/icon-list-overview.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A list of services where each row pairs an icon with a title and one line of supporting text. Communicates your capabilities at a quick glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-core-services-overview-numbered-process-style-services","type":"registry:block","title":"Numbered Process Style Services","files":[{"path":"components/blocks/portfolio/portfolio-core-services-overview/numbered-process-style-services.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-core-services-overview/numbered-process-style-services.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A numbered sequence that frames your services as ordered steps with titles and notes. Shows clients how you work and what to expect at each stage.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-core-services-overview-service-cards-grid","type":"registry:block","title":"Service Cards Grid","files":[{"path":"components/blocks/portfolio/portfolio-core-services-overview/service-cards-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-core-services-overview/service-cards-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A responsive grid of service cards, each with an icon, heading, and short description. Lays out everything you offer in a tidy, balanced overview.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-core-services-overview-split-layout-feature","type":"registry:block","title":"Split Layout Feature","files":[{"path":"components/blocks/portfolio/portfolio-core-services-overview/split-layout-feature.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-core-services-overview/split-layout-feature.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A split section pairing a single highlighted service with an image on one side and explanatory copy on the other. Spotlights your headline offering.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-cta-banner-full-width-bold-banner","type":"registry:block","title":"Full Width Bold Banner","files":[{"path":"components/blocks/portfolio/portfolio-cta-banner/full-width-bold-banner.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-cta-banner/full-width-bold-banner.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A wide banner with a large heading and a single prominent button. Use it to span the page and push visitors toward hiring you or booking a call.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-cta-banner-inline-cta","type":"registry:block","title":"Inline CTA","files":[{"path":"components/blocks/portfolio/portfolio-cta-banner/inline-cta.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-cta-banner/inline-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A slim call to action that sits within page content, pairing one line of copy with a button. Place it between sections to nudge readers without interrupting.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-cta-banner-personal-photo-cta","type":"registry:block","title":"Personal Photo CTA","files":[{"path":"components/blocks/portfolio/portfolio-cta-banner/personal-photo-cta.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-cta-banner/personal-photo-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner combining your portrait with a short pitch and a button. Adds a human face to the ask, ideal for freelancers inviting visitors to connect.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-cta-banner-split-cta","type":"registry:block","title":"Split CTA","files":[{"path":"components/blocks/portfolio/portfolio-cta-banner/split-cta.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-cta-banner/split-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A two column banner with a message on one side and the action button on the other. Keeps the copy and the click target distinct and easy to scan.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-cta-banner-sticky-cta","type":"registry:block","title":"Sticky CTA","files":[{"path":"components/blocks/portfolio/portfolio-cta-banner/sticky-cta.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-cta-banner/sticky-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A banner that stays fixed as the visitor scrolls, keeping a button always in view. Useful for long portfolio pages where the offer should stay reachable.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-email-signup-and-newsletter-card-style-signup","type":"registry:block","title":"Card Style Signup","files":[{"path":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/card-style-signup.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/card-style-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A bordered card holding a headline, short pitch, and email field. Use it as a standalone callout inviting visitors to join your mailing list.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-email-signup-and-newsletter-footer-integrated-signup","type":"registry:block","title":"Footer Integrated Signup","files":[{"path":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/footer-integrated-signup.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/footer-integrated-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"An email field built into the site footer beside links and details. Captures subscribers at the bottom of every page without a dedicated section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-email-signup-and-newsletter-popup-signup-form","type":"registry:block","title":"Popup Signup Form","files":[{"path":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/popup-signup-form.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/popup-signup-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/dialog.tsx","type":"registry:ui","target":"components/ui/dialog.tsx"}],"description":"A modal that surfaces an email field over the page, often on exit or after a delay. Use it to catch visitors before they leave your portfolio.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-email-signup-and-newsletter-simple-inline-form","type":"registry:block","title":"Simple Inline Form","files":[{"path":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/simple-inline-form.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/simple-inline-form.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"}],"description":"A single row with an email input and a subscribe button. Slots into any section when you want a quick, low friction way to gather addresses.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-email-signup-and-newsletter-split-section-signup","type":"registry:block","title":"Split Section Signup","files":[{"path":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/split-section-signup.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-email-signup-and-newsletter/split-section-signup.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"}],"description":"A two column section with descriptive copy beside the signup form. Explains what subscribers get while keeping the email field clearly in view.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-event-speaking-and-workshops-event-cards-grid","type":"registry:block","title":"Event Cards Grid","files":[{"path":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/event-cards-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/event-cards-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A grid of cards listing talks and workshops with their title, date, and venue. Use it to present many speaking appearances in one scannable layout.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-event-speaking-and-workshops-featured-talk","type":"registry:block","title":"Featured Talk","files":[{"path":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/featured-talk.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/featured-talk.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A spotlight section for one talk with its title, summary, and event details. Highlights a signature presentation at the top of a speaking page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-event-speaking-and-workshops-featured-talk-highlight","type":"registry:block","title":"Featured Talk Highlight","files":[{"path":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/featured-talk-highlight.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/featured-talk-highlight.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A bold featured talk layout pairing a large title with imagery and key facts. Draws extra attention to your most notable conference appearance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-event-speaking-and-workshops-timeline-speaking-engagements","type":"registry:block","title":"Timeline Speaking Engagements","files":[{"path":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/timeline-speaking-engagements.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/timeline-speaking-engagements.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A vertical timeline charting talks and workshops in date order. Use it to show how your speaking history has grown across many events over time.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-event-speaking-and-workshops-video-recording-embed","type":"registry:block","title":"Video Recording Embed","files":[{"path":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/video-recording-embed.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-event-speaking-and-workshops/video-recording-embed.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A section embedding a recorded talk video alongside its title and context. Lets visitors watch you present without ever leaving your portfolio.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-featured-work-highlights-carousel-of-featured-projects","type":"registry:block","title":"Carousel Of Featured Projects","files":[{"path":"components/blocks/portfolio/portfolio-featured-work-highlights/carousel-of-featured-projects.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-featured-work-highlights/carousel-of-featured-projects.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A carousel that slides through featured projects one at a time, each with a cover image and title. Use it to spotlight your best work on a portfolio home page.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-featured-work-highlights-interactive-hover-reveal","type":"registry:block","title":"Interactive Hover Reveal","files":[{"path":"components/blocks/portfolio/portfolio-featured-work-highlights/interactive-hover-reveal.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-featured-work-highlights/interactive-hover-reveal.tsx"}],"description":"A grid of project thumbnails that reveal a title, role, and link on hover. Use it to keep a portfolio index clean while exposing detail on demand.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-featured-work-highlights-large-hero-project-display","type":"registry:block","title":"Large Hero Project Display","files":[{"path":"components/blocks/portfolio/portfolio-featured-work-highlights/large-hero-project-display.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-featured-work-highlights/large-hero-project-display.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A full width hero that frames one flagship project with a big image, title, and short summary. Use it to open a case study or anchor a portfolio.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-featured-work-highlights-split-image-and-details-layout","type":"registry:block","title":"Split Image And Details Layout","files":[{"path":"components/blocks/portfolio/portfolio-featured-work-highlights/split-image-and-details-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-featured-work-highlights/split-image-and-details-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A two column layout pairing a project screenshot with details and a link beside it. Use it to present featured work with room for context and notes.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-featured-work-highlights-stacked-highlight-cards","type":"registry:block","title":"Stacked Highlight Cards","files":[{"path":"components/blocks/portfolio/portfolio-featured-work-highlights/stacked-highlight-cards.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-featured-work-highlights/stacked-highlight-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A vertical stack of project cards, each holding an image, title, and tags. Use it to walk visitors through selected highlights in a clear reading order.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-hero-showcases-carousel-slider","type":"registry:block","title":"Carousel Slider","files":[{"path":"components/blocks/portfolio/portfolio-hero-showcases/carousel-slider.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-hero-showcases/carousel-slider.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with a sliding carousel of images behind a headline and short intro. Use it to cycle through signature work the moment a portfolio loads.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-hero-showcases-floating-elements","type":"registry:block","title":"Floating Elements","files":[{"path":"components/blocks/portfolio/portfolio-hero-showcases/floating-elements.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-hero-showcases/floating-elements.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero with floating shapes and images drifting around a centered headline. Use it to add motion and personality to a creative portfolio landing.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-hero-showcases-full-screen-centered","type":"registry:block","title":"Full Screen Centered","files":[{"path":"components/blocks/portfolio/portfolio-hero-showcases/full-screen-centered.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-hero-showcases/full-screen-centered.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A full screen hero with a centered name, role, and tagline over a clean background. Use it to make a strong first statement on a personal site.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-hero-showcases-minimalist-cta","type":"registry:block","title":"Minimalist CTA","files":[{"path":"components/blocks/portfolio/portfolio-hero-showcases/minimalist-cta.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-hero-showcases/minimalist-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A spare hero with a short headline and one prominent call to action button. Use it when you want visitors to reach your work or contact fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-hero-showcases-split-layout","type":"registry:block","title":"Split Layout","files":[{"path":"components/blocks/portfolio/portfolio-hero-showcases/split-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-hero-showcases/split-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A hero split into a text column and an image column side by side. Use it to pair an introduction with a portrait or featured shot at the top of a page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-mission-and-values-grid-of-core-values","type":"registry:block","title":"Grid Of Core Values","files":[{"path":"components/blocks/portfolio/portfolio-mission-and-values/grid-of-core-values.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-mission-and-values/grid-of-core-values.tsx"}],"description":"A grid of cards, each naming one core value with an icon and a short line of detail. Use it to lay out the principles behind your work at a glance.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-mission-and-values-quote-values-combo","type":"registry:block","title":"Quote Values Combo","files":[{"path":"components/blocks/portfolio/portfolio-mission-and-values/quote-values-combo.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-mission-and-values/quote-values-combo.tsx"}],"description":"A layout that pairs a featured quote with a list of supporting values beside it. Use it to ground your mission in a memorable statement and proof.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-mission-and-values-story-first-narrative","type":"registry:block","title":"Story First Narrative","files":[{"path":"components/blocks/portfolio/portfolio-mission-and-values/story-first-narrative.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-mission-and-values/story-first-narrative.tsx"}],"description":"A reading focused section that tells your origin story in flowing paragraphs. Use it to explain how a studio or person came to be and what drives it.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-mission-and-values-three-pillars-layout","type":"registry:block","title":"Three Pillars Layout","files":[{"path":"components/blocks/portfolio/portfolio-mission-and-values/three-pillars-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-mission-and-values/three-pillars-layout.tsx"}],"description":"Three equal columns, each presenting one guiding pillar with a heading and text. Use it to summarize the ideas your practice is built around.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-mission-and-values-vertical-step-timeline","type":"registry:block","title":"Vertical Step Timeline","files":[{"path":"components/blocks/portfolio/portfolio-mission-and-values/vertical-step-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-mission-and-values/vertical-step-timeline.tsx"}],"description":"A vertical timeline that marks milestones and values down the page in order. Use it to trace how your mission took shape over time for visitors.","dependencies":["lucide-react"]},{"name":"portfolio-portfolio-process-and-approach-cycle-diagram","type":"registry:block","title":"Cycle Diagram","files":[{"path":"components/blocks/portfolio/portfolio-process-and-approach/cycle-diagram.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-process-and-approach/cycle-diagram.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A circular diagram showing the stages of your process as a repeating loop. Use it to convey an iterative way of working where steps feed back in.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-process-and-approach-horizontal-stepper","type":"registry:block","title":"Horizontal Stepper","files":[{"path":"components/blocks/portfolio/portfolio-process-and-approach/horizontal-stepper.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-process-and-approach/horizontal-stepper.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A horizontal row of numbered steps that lead the eye from start to finish. Use it to lay out a linear workflow across a single line on the page.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-process-and-approach-process-principles","type":"registry:block","title":"Process Principles","files":[{"path":"components/blocks/portfolio/portfolio-process-and-approach/process-principles.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-process-and-approach/process-principles.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"}],"description":"A section that lists the principles guiding how you tackle each project. Use it to state the beliefs behind your method alongside short explanations.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-process-and-approach-stacked-cards","type":"registry:block","title":"Stacked Cards","files":[{"path":"components/blocks/portfolio/portfolio-process-and-approach/stacked-cards.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-process-and-approach/stacked-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A vertical stack of cards, each describing one phase of your process in turn. Use it to walk a client through how an engagement unfolds step by step.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-process-and-approach-vertical-timeline","type":"registry:block","title":"Vertical Timeline","files":[{"path":"components/blocks/portfolio/portfolio-process-and-approach/vertical-timeline.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-process-and-approach/vertical-timeline.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A vertical timeline that maps each process phase down the page in sequence. Use it to show the path a project follows from kickoff through delivery.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-project-displays-filterable-grid","type":"registry:block","title":"Filterable Grid","files":[{"path":"components/blocks/portfolio/portfolio-project-displays/filterable-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-project-displays/filterable-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A project grid with category filters across the top so visitors narrow results by tag or type. Use it when a portfolio holds varied work across many fields.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-project-displays-quote-stack","type":"registry:block","title":"Quote Stack","files":[{"path":"components/blocks/portfolio/portfolio-project-displays/quote-stack.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-project-displays/quote-stack.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A vertical stack of client quotes paired with project names and roles. Use it to weave testimonials into a project page and back up your results with words.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-project-displays-standard-grid","type":"registry:block","title":"Standard Grid","files":[{"path":"components/blocks/portfolio/portfolio-project-displays/standard-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-project-displays/standard-grid.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"An even grid of project cards, each with a cover image, title, and short caption. Use it as the main index for browsing a portfolio at a glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-project-displays-stats-cards","type":"registry:block","title":"Stats Cards","files":[{"path":"components/blocks/portfolio/portfolio-project-displays/stats-cards.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-project-displays/stats-cards.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/progress.tsx","type":"registry:ui","target":"components/ui/progress.tsx"}],"description":"A row of cards calling out key numbers like projects shipped, clients, and years active. Use it to quantify your track record near the top of a portfolio.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-project-displays-zigzag-layout","type":"registry:block","title":"Zigzag Layout","files":[{"path":"components/blocks/portfolio/portfolio-project-displays/zigzag-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-project-displays/zigzag-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"Alternating rows that flip image and text side to side down the page. Use it to give each project room to breathe with a clear narrative flow.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-quote-and-feedback-base","type":"registry:block","title":"Base","files":[{"path":"components/blocks/portfolio/portfolio-quote-and-feedback/base.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-quote-and-feedback/base.tsx"}],"description":"A clean quote block with the testimonial text, author name, and role. Use it as a simple starting point to add one piece of client feedback to any page."},{"name":"portfolio-portfolio-quote-and-feedback-grid-of-quotes","type":"registry:block","title":"Grid Of Quotes","files":[{"path":"components/blocks/portfolio/portfolio-quote-and-feedback/grid-of-quotes.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-quote-and-feedback/grid-of-quotes.tsx"}],"description":"A grid that arranges several short client quotes side by side with names and roles. Use it to gather feedback from many clients in one compact section."},{"name":"portfolio-portfolio-quote-and-feedback-quote-with-project-context","type":"registry:block","title":"Quote With Project Context","files":[{"path":"components/blocks/portfolio/portfolio-quote-and-feedback/quote-with-project-context.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-quote-and-feedback/quote-with-project-context.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A testimonial paired with the project it refers to, including a thumbnail and link. Use it to tie praise directly to the work that earned it on a case study.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-quote-and-feedback-scrollable-quote-carousel","type":"registry:block","title":"Scrollable Quote Carousel","files":[{"path":"components/blocks/portfolio/portfolio-quote-and-feedback/scrollable-quote-carousel.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-quote-and-feedback/scrollable-quote-carousel.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A carousel that slides through client quotes one at a time with author details. Use it to rotate testimonials without crowding a portfolio page.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-quote-and-feedback-single-quote-highlight","type":"registry:block","title":"Single Quote Highlight","files":[{"path":"components/blocks/portfolio/portfolio-quote-and-feedback/single-quote-highlight.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-quote-and-feedback/single-quote-highlight.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A large single quote set in generous space with the author name and title. Use it to feature one standout endorsement and let it carry real weight.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-resource-download-sections-featured-resource-card","type":"registry:block","title":"Featured Resource Card","files":[{"path":"components/blocks/portfolio/portfolio-resource-download-sections/featured-resource-card.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resource-download-sections/featured-resource-card.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A prominent card spotlighting one downloadable resource with a cover, summary, and button. Use it to push a flagship guide or template to visitors.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resource-download-sections-gated-download","type":"registry:block","title":"Gated Download","files":[{"path":"components/blocks/portfolio/portfolio-resource-download-sections/gated-download.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resource-download-sections/gated-download.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/input.tsx","type":"registry:ui","target":"components/ui/input.tsx"},{"path":"components/ui/label.tsx","type":"registry:ui","target":"components/ui/label.tsx"},{"path":"components/ui/checkbox.tsx","type":"registry:ui","target":"components/ui/checkbox.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A download offer behind a short email form so visitors trade contact details for the file. Use it to capture leads while sharing a guide or kit.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resource-download-sections-inline-resource-callout","type":"registry:block","title":"Inline Resource Callout","files":[{"path":"components/blocks/portfolio/portfolio-resource-download-sections/inline-resource-callout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resource-download-sections/inline-resource-callout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A compact callout that slots into running text to point readers at a related file. Use it to surface a download right where it stays relevant.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resource-download-sections-minimalist-resource-list","type":"registry:block","title":"Minimalist Resource List","files":[{"path":"components/blocks/portfolio/portfolio-resource-download-sections/minimalist-resource-list.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resource-download-sections/minimalist-resource-list.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A plain vertical list of resources, each a title and a download link. Use it when you want a quiet, fast index of files with no extra clutter.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resource-download-sections-resources-grid","type":"registry:block","title":"Resources Grid","files":[{"path":"components/blocks/portfolio/portfolio-resource-download-sections/resources-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resource-download-sections/resources-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A grid of resource cards, each with an icon, title, and download action. Use it to present a full library of guides and templates in one tidy section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resume-and-downloads-branded-document-icons-grid","type":"registry:block","title":"Branded Document Icons Grid","files":[{"path":"components/blocks/portfolio/portfolio-resume-and-downloads/branded-document-icons-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resume-and-downloads/branded-document-icons-grid.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A grid of document icons, each labeled and linked to a file like a resume or portfolio PDF. Use it to offer several downloads in one branded section.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resume-and-downloads-resume-cover-letter-combo","type":"registry:block","title":"Resume Cover Letter Combo","files":[{"path":"components/blocks/portfolio/portfolio-resume-and-downloads/resume-cover-letter-combo.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resume-and-downloads/resume-cover-letter-combo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A paired offer that lets visitors grab both your resume and cover letter together. Use it on a hiring page where both documents matter to recruiters.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resume-and-downloads-resume-with-short-bio-cta","type":"registry:block","title":"Resume With Short Bio CTA","files":[{"path":"components/blocks/portfolio/portfolio-resume-and-downloads/resume-with-short-bio-cta.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resume-and-downloads/resume-with-short-bio-cta.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/separator.tsx","type":"registry:ui","target":"components/ui/separator.tsx"}],"description":"A short bio next to a clear call to action that downloads your resume. Use it to introduce yourself and hand over your CV in one focused block.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resume-and-downloads-simple-download-button","type":"registry:block","title":"Simple Download Button","files":[{"path":"components/blocks/portfolio/portfolio-resume-and-downloads/simple-download-button.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resume-and-downloads/simple-download-button.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"}],"description":"A single clear button that downloads your resume in one click. Use it when you want the lightest possible way to share a CV on any portfolio page.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-resume-and-downloads-split-layout","type":"registry:block","title":"Split Layout","files":[{"path":"components/blocks/portfolio/portfolio-resume-and-downloads/split-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-resume-and-downloads/split-layout.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A two column block with your intro on one side and resume downloads on the other. Use it to balance a personal pitch with quick access to your files.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-social-media-embeds-highlighted-post","type":"registry:block","title":"Highlighted Post","files":[{"path":"components/blocks/portfolio/portfolio-social-media-embeds/highlighted-post.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-social-media-embeds/highlighted-post.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A single featured post pinned in a clean card with avatar, caption, and engagement counts. Spotlights your best content when one example carries the message.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-social-media-embeds-instagram-grid","type":"registry:block","title":"Instagram Grid","files":[{"path":"components/blocks/portfolio/portfolio-social-media-embeds/instagram-grid.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-social-media-embeds/instagram-grid.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A responsive photo grid that mirrors an Instagram profile layout with hover overlays for likes and comments. Use it to preview a visual feed on a portfolio.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-social-media-embeds-social-icons-feed","type":"registry:block","title":"Social Icons Feed","files":[{"path":"components/blocks/portfolio/portfolio-social-media-embeds/social-icons-feed.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-social-media-embeds/social-icons-feed.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/tabs.tsx","type":"registry:ui","target":"components/ui/tabs.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A compact row of platform icons that link out to every profile you maintain. Drop it in a footer or sidebar so visitors can follow you anywhere fast.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-social-media-embeds-tweet-carousel","type":"registry:block","title":"Tweet Carousel","files":[{"path":"components/blocks/portfolio/portfolio-social-media-embeds/tweet-carousel.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-social-media-embeds/tweet-carousel.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A swipeable carousel of tweet cards with author, timestamp, and text. Rotate through recent posts or testimonials without stacking them down the page.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-social-media-embeds-youtube-video-strip","type":"registry:block","title":"YouTube Video Strip","files":[{"path":"components/blocks/portfolio/portfolio-social-media-embeds/youtube-video-strip.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-social-media-embeds/youtube-video-strip.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/brand-icons.tsx","type":"registry:ui","target":"components/ui/brand-icons.tsx"}],"description":"A horizontal strip of YouTube thumbnails with titles and view counts. Place it on a channel page to let visitors scan and open videos in one click.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-why-work-with-me-before-after-comparison","type":"registry:block","title":"Before After Comparison","files":[{"path":"components/blocks/portfolio/portfolio-why-work-with-me/before-after-comparison.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-why-work-with-me/before-after-comparison.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/carousel.tsx","type":"registry:ui","target":"components/ui/carousel.tsx"}],"description":"A split panel that shows a project before and after your work with a draggable divider. Proves your impact visually when results speak louder than text.","dependencies":["class-variance-authority","embla-carousel-react","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-why-work-with-me-bulleted-value-proposition","type":"registry:block","title":"Bulleted Value Proposition","files":[{"path":"components/blocks/portfolio/portfolio-why-work-with-me/bulleted-value-proposition.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-why-work-with-me/bulleted-value-proposition.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A scannable list of value points, each with an icon and short line. Summarizes what you deliver so visitors grasp your strengths in a few seconds.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-why-work-with-me-client-oriented-testimonials","type":"registry:block","title":"Client Oriented Testimonials","files":[{"path":"components/blocks/portfolio/portfolio-why-work-with-me/client-oriented-testimonials.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-why-work-with-me/client-oriented-testimonials.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"Stacked testimonial cards framed around client outcomes, with quote, name, and role. Builds trust by letting past clients vouch for your results.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-why-work-with-me-storytelling-approach","type":"registry:block","title":"Storytelling Approach","files":[{"path":"components/blocks/portfolio/portfolio-why-work-with-me/storytelling-approach.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-why-work-with-me/storytelling-approach.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A narrative section that walks through your process in ordered steps with supporting copy. Use it to explain how you work and win over cautious buyers.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-why-work-with-me-why-me-vs-competition","type":"registry:block","title":"Why Me Vs Competition","files":[{"path":"components/blocks/portfolio/portfolio-why-work-with-me/why-me-vs-competition.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-why-work-with-me/why-me-vs-competition.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/table.tsx","type":"registry:ui","target":"components/ui/table.tsx"}],"description":"A two column comparison table contrasting your offer against typical alternatives. Helps undecided visitors see why you are the better choice at a glance.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-work-experience-cards-accordion-experience-cards","type":"registry:block","title":"Accordion Experience Cards","files":[{"path":"components/blocks/portfolio/portfolio-work-experience-cards/accordion-experience-cards.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-work-experience-cards/accordion-experience-cards.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/accordion.tsx","type":"registry:ui","target":"components/ui/accordion.tsx"}],"description":"Collapsible role cards that expand to reveal duties and achievements on click. Keeps a long career history tidy while letting readers drill into detail.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-work-experience-cards-card-with-project-showcase","type":"registry:block","title":"Card With Project Showcase","files":[{"path":"components/blocks/portfolio/portfolio-work-experience-cards/card-with-project-showcase.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-work-experience-cards/card-with-project-showcase.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A role card paired with a thumbnail of the project you shipped there. Connects each position to concrete work so visitors see outcomes, not just titles.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-work-experience-cards-experience-quote-combo","type":"registry:block","title":"Experience Quote Combo","files":[{"path":"components/blocks/portfolio/portfolio-work-experience-cards/experience-quote-combo.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-work-experience-cards/experience-quote-combo.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A role card joined with a manager or client quote about your impact. Pairs the facts of a position with social proof to strengthen each entry.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"portfolio-portfolio-work-experience-cards-logo-first-card-layout","type":"registry:block","title":"Logo First Card Layout","files":[{"path":"components/blocks/portfolio/portfolio-work-experience-cards/logo-first-card-layout.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-work-experience-cards/logo-first-card-layout.tsx"},{"path":"components/ui/badge.tsx","type":"registry:ui","target":"components/ui/badge.tsx"}],"description":"A card that leads with the company logo beside your title and dates. Use it when recognizable employers carry weight and you want brands seen first.","dependencies":["class-variance-authority","radix-ui"]},{"name":"portfolio-portfolio-work-experience-cards-minimalist-role-highlight","type":"registry:block","title":"Minimalist Role Highlight","files":[{"path":"components/blocks/portfolio/portfolio-work-experience-cards/minimalist-role-highlight.tsx","type":"registry:component","target":"components/blocks/portfolio/portfolio-work-experience-cards/minimalist-role-highlight.tsx"},{"path":"components/ui/button.tsx","type":"registry:ui","target":"components/ui/button.tsx"},{"path":"components/ui/card.tsx","type":"registry:ui","target":"components/ui/card.tsx"}],"description":"A pared back card showing title, company, and dates with generous spacing. Ideal for a clean resume page where the focus stays on the roles themselves.","dependencies":["class-variance-authority","lucide-react","radix-ui"]},{"name":"og-image-agenda","type":"registry:item","title":"Agenda Open Graph image","description":"An agenda card with an event chip and three session rows.","files":[{"path":"components/og-images/agenda.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-annual-report","type":"registry:item","title":"Annual report Open Graph image","description":"An annual report card with a year tile, title, and stat chips.","files":[{"path":"components/og-images/annual-report.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-api-endpoint","type":"registry:item","title":"API reference Open Graph image","description":"A dark API card with a method chip, endpoint path pill, and description.","files":[{"path":"components/og-images/api-endpoint.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-article-dark","type":"registry:item","title":"Article dark Open Graph image","description":"A dark editorial card with a category chip, headline, summary, and byline.","files":[{"path":"components/og-images/article-dark.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-award-win","type":"registry:item","title":"Award Open Graph image","description":"A dark award card with a ringed badge, award title, and presenter line.","files":[{"path":"components/og-images/award-win.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-back-in-stock","type":"registry:item","title":"Restock Open Graph image","description":"A restock card with a back in stock chip, product name, and size chips.","files":[{"path":"components/og-images/back-in-stock.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-benchmark","type":"registry:item","title":"Benchmark Open Graph image","description":"A dark benchmark card with a title, two comparison bars, and a source.","files":[{"path":"components/og-images/benchmark.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-beta-invite","type":"registry:item","title":"Beta invite Open Graph image","description":"A dark beta invite card with a private beta pill and an invite code.","files":[{"path":"components/og-images/beta-invite.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-blog-post","type":"registry:item","title":"Blog post Open Graph image","description":"A clean article card with your headline, summary, and author byline.","files":[{"path":"components/og-images/blog-post.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-browser-extension","type":"registry:item","title":"Extension Open Graph image","description":"An extension card with a browser toolbar mock, title, and browser chips.","files":[{"path":"components/og-images/browser-extension.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-bundle-offer","type":"registry:item","title":"Bundle Open Graph image","description":"A dark bundle card with joined product tiles, a name, and a savings stat.","files":[{"path":"components/og-images/bundle-offer.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-case-study","type":"registry:item","title":"Case study Open Graph image","description":"A case study card with a customer chip, result headline, and key stats.","files":[{"path":"components/og-images/case-study.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-certification","type":"registry:item","title":"Certification Open Graph image","description":"A certification card with a check badge, cert name, and issuer line.","files":[{"path":"components/og-images/certification.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-cheat-sheet","type":"registry:item","title":"Cheat sheet Open Graph image","description":"A dark cheat sheet card with a title and a grid of key tiles.","files":[{"path":"components/og-images/cheat-sheet.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-cli-tool","type":"registry:item","title":"CLI tool Open Graph image","description":"A dark CLI card with a terminal window, install line, and title.","files":[{"path":"components/og-images/cli-tool.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-code-snippet","type":"registry:item","title":"Code snippet Open Graph image","description":"A dark code snippet card with a full width code window and language chip.","files":[{"path":"components/og-images/code-snippet.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-coming-soon","type":"registry:item","title":"Coming soon Open Graph image","description":"A dark centered teaser card with a brand mark, headline, and date chip.","files":[{"path":"components/og-images/coming-soon.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-community-ama","type":"registry:item","title":"AMA Open Graph image","description":"A dark AMA card with a guest avatar, title, name line, and date chip.","files":[{"path":"components/og-images/community-ama.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-company-news","type":"registry:item","title":"Company news Open Graph image","description":"A company news card with an announcement chip, headline, and date line.","files":[{"path":"components/og-images/company-news.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-comparison","type":"registry:item","title":"Comparison Open Graph image","description":"A comparison card with two feature columns and a title.","files":[{"path":"components/og-images/comparison.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-countdown","type":"registry:item","title":"Countdown Open Graph image","description":"A dark countdown card with a giant day count, a caption, and a date chip.","files":[{"path":"components/og-images/countdown.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-dashboard","type":"registry:item","title":"Dashboard Open Graph image","description":"A dark dashboard card with a window mock, stat tiles, and a sparkline.","files":[{"path":"components/og-images/dashboard.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-design-system","type":"registry:item","title":"Design system Open Graph image","description":"A design system card with a swatch and component panel and a version chip.","files":[{"path":"components/og-images/design-system.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-documentation","type":"registry:item","title":"Documentation Open Graph image","description":"A docs card with a breadcrumb trail, page title, and reading metadata.","files":[{"path":"components/og-images/documentation.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-earnings","type":"registry:item","title":"Earnings Open Graph image","description":"A dark earnings card with a quarter chip, revenue, and growth stats.","files":[{"path":"components/og-images/earnings.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-ebook-download","type":"registry:item","title":"Ebook Open Graph image","description":"An ebook card with a drawn book cover, book title, and a pages chip.","files":[{"path":"components/og-images/ebook-download.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-event","type":"registry:item","title":"Event Open Graph image","description":"A conference card with a calendar tile, venue, and schedule details.","files":[{"path":"components/og-images/event.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-event-ticket","type":"registry:item","title":"Ticket Open Graph image","description":"A ticket card with an event info panel, dashed divider, and a stub.","files":[{"path":"components/og-images/event-ticket.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-faq-answer","type":"registry:item","title":"FAQ Open Graph image","description":"An FAQ card with a help center chip, question title, and answer preview.","files":[{"path":"components/og-images/faq-answer.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-feature-update","type":"registry:item","title":"Feature update Open Graph image","description":"A dark feature card with a title, description, and settings toggle panel.","files":[{"path":"components/og-images/feature-update.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-funding-round","type":"registry:item","title":"Funding Open Graph image","description":"A dark funding card with a round pill, a giant raise stat, and investors.","files":[{"path":"components/og-images/funding-round.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-gift-card","type":"registry:item","title":"Gift card Open Graph image","description":"A gift card design with a drawn card panel, title, and redeem line.","files":[{"path":"components/og-images/gift-card.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-gift-guide","type":"registry:item","title":"Gift guide Open Graph image","description":"A gift guide card with three gift tiles, a title, and a price range chip.","files":[{"path":"components/og-images/gift-guide.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-glossary-term","type":"registry:item","title":"Glossary Open Graph image","description":"A glossary card with a breadcrumb, oversized term, and one line definition.","files":[{"path":"components/og-images/glossary-term.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-guide-series","type":"registry:item","title":"Series Open Graph image","description":"A series card with a part chip, series name, and part title.","files":[{"path":"components/og-images/guide-series.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-hackathon","type":"registry:item","title":"Hackathon Open Graph image","description":"A dark hackathon card with a dates chip, title, and prize stat.","files":[{"path":"components/og-images/hackathon.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-hiring-roles","type":"registry:item","title":"Hiring Open Graph image","description":"A dark hiring card with a title and three role rows with locations.","files":[{"path":"components/og-images/hiring-roles.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-impact-report","type":"registry:item","title":"Impact report Open Graph image","description":"An impact report card with a title and three stat columns.","files":[{"path":"components/og-images/impact-report.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-incident-report","type":"registry:item","title":"Incident report Open Graph image","description":"A dark incident card with a postmortem chip, timeline rows, and duration.","files":[{"path":"components/og-images/incident-report.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-integration","type":"registry:item","title":"Integration Open Graph image","description":"An integration card with two joined logo tiles, a title, and description.","files":[{"path":"components/og-images/integration.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-internship-program","type":"registry:item","title":"Internship Open Graph image","description":"An internship card with a title, season and location chips, and a footer.","files":[{"path":"components/og-images/internship-program.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-interview","type":"registry:item","title":"Interview Open Graph image","description":"A dark interview card with paired avatars, a title, and names line.","files":[{"path":"components/og-images/interview.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-job-posting","type":"registry:item","title":"Job posting Open Graph image","description":"A hiring card with the role, your pitch, and compensation details.","files":[{"path":"components/og-images/job-posting.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-launch-day","type":"registry:item","title":"Launch day Open Graph image","description":"A launch card with an upvote tile, a live chip, title, and tagline.","files":[{"path":"components/og-images/launch-day.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-library-release","type":"registry:item","title":"Library release Open Graph image","description":"A dark library card with a version pill, install pill, and highlights.","files":[{"path":"components/og-images/library-release.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-limited-offer","type":"registry:item","title":"Limited offer Open Graph image","description":"A dark limited offer card with a discount stat and an ends chip.","files":[{"path":"components/og-images/limited-offer.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-livestream","type":"registry:item","title":"Live stream Open Graph image","description":"A dark live stream card with a live pill, title, and platform chips.","files":[{"path":"components/og-images/livestream.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-market-update","type":"registry:item","title":"Market update Open Graph image","description":"A dark market card with three ticker rows and a date line.","files":[{"path":"components/og-images/market-update.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-meetup","type":"registry:item","title":"Meetup Open Graph image","description":"A meetup card with a date tile, city chip, topic title, and rsvp url.","files":[{"path":"components/og-images/meetup.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-metrics-report","type":"registry:item","title":"Metrics report Open Graph image","description":"A dark report cover led by three headline statistics.","files":[{"path":"components/og-images/metrics-report.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-milestone","type":"registry:item","title":"Milestone Open Graph image","description":"A dark milestone card with a giant number, context line, and date chip.","files":[{"path":"components/og-images/milestone.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-minimal-brand","type":"registry:item","title":"Minimal brand Open Graph image","description":"A centered brand card with your logo, name, and tagline.","files":[{"path":"components/og-images/minimal-brand.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-mobile-app","type":"registry:item","title":"Mobile app Open Graph image","description":"A mobile app card with a drawn phone, app name, tagline, and store chips.","files":[{"path":"components/og-images/mobile-app.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-music-release","type":"registry:item","title":"Music Open Graph image","description":"A dark music card with an album art mock, artist name, and album title.","files":[{"path":"components/og-images/music-release.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-new-teammate","type":"registry:item","title":"New teammate Open Graph image","description":"A new teammate card with an avatar, a joining title, and role line.","files":[{"path":"components/og-images/new-teammate.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-newsletter-issue","type":"registry:item","title":"Newsletter Open Graph image","description":"A newsletter card with an issue tile, headline, and author byline.","files":[{"path":"components/og-images/newsletter-issue.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-online-course","type":"registry:item","title":"Course Open Graph image","description":"A course card with a title, module and hour chips, and instructor byline.","files":[{"path":"components/og-images/online-course.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-open-source","type":"registry:item","title":"Open source Open Graph image","description":"A repository card with a code window and project statistics.","files":[{"path":"components/og-images/open-source.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-opinion","type":"registry:item","title":"Opinion Open Graph image","description":"An opinion card with a columnist byline, bold stance title, and footer.","files":[{"path":"components/og-images/opinion.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-panel-discussion","type":"registry:item","title":"Panel Open Graph image","description":"A panel card with three avatar circles, a title, and names line.","files":[{"path":"components/og-images/panel-discussion.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-partnership","type":"registry:item","title":"Partnership Open Graph image","description":"A partnership card with two joined brand tiles, a title, and description.","files":[{"path":"components/og-images/partnership.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-personal-profile","type":"registry:item","title":"Profile Open Graph image","description":"A centered profile card with an avatar, name, role, and link chips.","files":[{"path":"components/og-images/personal-profile.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-photo-essay","type":"registry:item","title":"Photo essay Open Graph image","description":"A photo essay card with a wide image panel, title, and photographer byline.","files":[{"path":"components/og-images/photo-essay.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-podcast-episode","type":"registry:item","title":"Podcast episode Open Graph image","description":"A dark episode card with guest names and a waveform art panel.","files":[{"path":"components/og-images/podcast-episode.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-podcast-show","type":"registry:item","title":"Podcast show Open Graph image","description":"A podcast show card with a waveform tile, show name, and host line.","files":[{"path":"components/og-images/podcast-show.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-poll-question","type":"registry:item","title":"Poll Open Graph image","description":"A poll card with a question title, two option bars, and a votes line.","files":[{"path":"components/og-images/poll-question.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-portfolio-project","type":"registry:item","title":"Portfolio project Open Graph image","description":"A dark portfolio card with a project title, role chips, and image panel.","files":[{"path":"components/og-images/portfolio-project.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-press-release","type":"registry:item","title":"Press release Open Graph image","description":"A press release card with a release chip, headline, and contact line.","files":[{"path":"components/og-images/press-release.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-price-drop","type":"registry:item","title":"Price drop Open Graph image","description":"A price drop card with an old and new price, product name, and ends chip.","files":[{"path":"components/og-images/price-drop.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-pricing-plans","type":"registry:item","title":"Pricing Open Graph image","description":"A pricing card with three plan tiles and a highlighted middle plan.","files":[{"path":"components/og-images/pricing-plans.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-product-card","type":"registry:item","title":"Product Open Graph image","description":"A product card with an image panel, name, price, and star rating.","files":[{"path":"components/og-images/product-card.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-product-drop","type":"registry:item","title":"Drop Open Graph image","description":"A dark drop card with a new drop chip, product name, and notify pill.","files":[{"path":"components/og-images/product-drop.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-product-launch","type":"registry:item","title":"Product launch Open Graph image","description":"A dark launch card pairing your announcement with an app window mockup.","files":[{"path":"components/og-images/product-launch.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-quote-card","type":"registry:item","title":"Quote Open Graph image","description":"A quote card with an oversized quote mark, quote text, and attribution.","files":[{"path":"components/og-images/quote-card.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-rebrand","type":"registry:item","title":"Rebrand Open Graph image","description":"A rebrand card with old and new logo tiles, a title, and description.","files":[{"path":"components/og-images/rebrand.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-recipe","type":"registry:item","title":"Recipe Open Graph image","description":"A recipe card with a dish title, description, and time and serving chips.","files":[{"path":"components/og-images/recipe.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-referral-offer","type":"registry:item","title":"Referral Open Graph image","description":"A referral card with give and get tiles, a title, and a url.","files":[{"path":"components/og-images/referral-offer.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-release-notes","type":"registry:item","title":"Release notes Open Graph image","description":"A dark changelog card with a version badge and a highlight list.","files":[{"path":"components/og-images/release-notes.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-research-summary","type":"registry:item","title":"Research Open Graph image","description":"A research card with a title, authors line, and a key finding.","files":[{"path":"components/og-images/research-summary.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-resume-card","type":"registry:item","title":"Resume Open Graph image","description":"A resume card with a name, title line, skill chips, and contact url.","files":[{"path":"components/og-images/resume-card.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-review-score","type":"registry:item","title":"Review Open Graph image","description":"A review card with a product title, star rating, verdict, and score chip.","files":[{"path":"components/og-images/review-score.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-rewards-program","type":"registry:item","title":"Rewards Open Graph image","description":"A dark rewards card with a points stat, tier chips, and a title.","files":[{"path":"components/og-images/rewards-program.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-roadmap-update","type":"registry:item","title":"Roadmap Open Graph image","description":"A roadmap card with now, next, and later columns and a quarter chip.","files":[{"path":"components/og-images/roadmap-update.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-sale-promo","type":"registry:item","title":"Sale Open Graph image","description":"A sale card with a giant discount, event line, dates chip, and code pill.","files":[{"path":"components/og-images/sale-promo.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-sdk-release","type":"registry:item","title":"SDK Open Graph image","description":"A dark SDK card with a code window, title, and language chips.","files":[{"path":"components/og-images/sdk-release.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-security-advisory","type":"registry:item","title":"Security advisory Open Graph image","description":"A dark advisory card with a severity chip, title, and affected versions.","files":[{"path":"components/og-images/security-advisory.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-speaker-card","type":"registry:item","title":"Speaker Open Graph image","description":"A dark speaker card with a large avatar, name and role, and talk title.","files":[{"path":"components/og-images/speaker-card.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-survey-results","type":"registry:item","title":"Survey results Open Graph image","description":"A survey card with a title, three percent bars, and a sample size line.","files":[{"path":"components/og-images/survey-results.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-system-status","type":"registry:item","title":"Status Open Graph image","description":"A status card with an operational headline and green service rows.","files":[{"path":"components/og-images/system-status.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-testimonial","type":"registry:item","title":"Testimonial Open Graph image","description":"A testimonial card with a star row, quote, and an avatar attribution.","files":[{"path":"components/og-images/testimonial.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-tutorial","type":"registry:item","title":"Tutorial Open Graph image","description":"A tutorial card with a title, summary, and step, time, and level chips.","files":[{"path":"components/og-images/tutorial.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-video-episode","type":"registry:item","title":"Video Open Graph image","description":"A dark video card with a play button, title, and duration and view chips.","files":[{"path":"components/og-images/video-episode.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-video-series","type":"registry:item","title":"Video series Open Graph image","description":"A video series card with three episode tiles, a title, and a count chip.","files":[{"path":"components/og-images/video-series.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-waitlist","type":"registry:item","title":"Waitlist Open Graph image","description":"A waitlist card with a title, a waiting count stat, and a join pill.","files":[{"path":"components/og-images/waitlist.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-webinar","type":"registry:item","title":"Webinar Open Graph image","description":"A webinar card with a date tile, title, host avatars, and detail chips.","files":[{"path":"components/og-images/webinar.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-website-template","type":"registry:item","title":"Website template Open Graph image","description":"A template card with a browser mock, template name, and stack chips.","files":[{"path":"components/og-images/website-template.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-weekly-digest","type":"registry:item","title":"Digest Open Graph image","description":"A digest card with a week chip, title, and three numbered highlights.","files":[{"path":"components/og-images/weekly-digest.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-workshop","type":"registry:item","title":"Workshop Open Graph image","description":"A workshop card with a title, seat and level chips, and a date footer.","files":[{"path":"components/og-images/workshop.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]},{"name":"og-image-year-in-review","type":"registry:item","title":"Year in review Open Graph image","description":"A dark year in review card with a big year and three stat columns.","files":[{"path":"components/og-images/year-in-review.tsx","type":"registry:page","target":"app/opengraph-image.tsx"}]}]}