--- // FileTabs — the package-file switcher inside the preview surface. // // A horizontal scroll of buttons, one per file in the submitted package // (SKILL.md + references + scripts + templates). Click handling and the // fetch-state machine are task 16's job; this component ships zero JS. // // `aria-label` is on the nav itself so the tablist announces as a unit. // The `active` class on the selected file mirrors the legacy CSS so the // verification engineer can re-point scripts/verify.mjs assertions without // renaming. interface PackageFile { /** File name without directory prefix; the row label. */ name: string; /** Kind tag rendered as the small uppercase eyebrow above the name. */ kind: string; /** Absolute or repo-relative path used to fetch the source. */ path: string; } interface Props { files: PackageFile[]; /** Name of the currently-selected file. */ currentFile?: string; /** Accessible label for the tablist. Defaults to the skill-package label. */ ariaLabel?: string; } const { files, currentFile, ariaLabel = 'Skill package files' } = Astro.props; ---