fix(skills): reuse shared upload field in skill import modal; logo-only Quartr icon#5026
Conversation
…ly Quartr icon - Replace the hand-rolled drop zone in the skill import modal with the shared ChipModalField type='file' control (same component the Knowledge Base and Help & Support modals use), so the upload zone is visually consistent. - Migrate the GitHub-URL and paste-content rows to ChipModalField so every field shares the canonical px-4 gutter and error rendering, and align the 'or' dividers to match. - Drop the monospace font on the paste textarea so its text matches the rest of the modal. - Quartr icon now renders the logo mark only (no wordmark) as a black mark on a white rounded tile.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryLow Risk Overview
Reviewed by Cursor Bugbot for commit 460b304. Configure here. |
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e6ef14e. Configure here.
Greptile SummaryThis PR replaces the hand-rolled upload drop zone and field wrappers in the skill Import modal with the shared
Confidence Score: 5/5Safe to merge — changes are a UI refactor with no new network calls, state logic, or data paths. The upload migration correctly threads the file through handleFiles → processFile unchanged, the new loading prop in ChipModalFileControl is well-guarded with isInteractive, and the Quartr icon swap is self-contained. No application logic changed. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User opens Import modal] --> B{Choose method}
B --> C[Upload File]
B --> D[Import from GitHub]
B --> E[Paste SKILL.md Content]
C --> C1[ChipModalField type=file]
C1 --> C2{Drop or click}
C2 --> C3[handleFiles callback]
C3 --> C4[processFile]
C4 --> C5{fileState}
C5 -->|loading| C6[loading=true → Loader spinner + aria-busy]
C5 -->|error| C7[fileError shown via ChipModalField error prop]
C5 -->|idle| C8[onImport called]
D --> D1[ChipModalField type=custom]
D1 --> D2[ChipInput + Chip Fetch button]
D2 --> D3[handleGithubImport]
D3 -->|error| D4[githubError shown]
D3 -->|success| D5[onImport called]
E --> E1[ChipModalField type=custom]
E1 --> E2[ChipTextarea + Chip Import button]
E2 --> E3[handlePasteImport]
E3 -->|error| E4[pasteError shown]
E3 -->|success| E5[onImport called]
Reviews (3): Last reviewed commit: "fix(emcn): restore upload spinner via lo..." | Re-trigger Greptile |
Greptile SummaryThis PR refactors the skill import modal to replace a hand-rolled file drop zone and custom field rows with the shared
Confidence Score: 4/5Safe to merge; the refactor delegates well-tested shared components and removes complexity without changing business logic. Both changed files are UI-layer only. The skill-import refactor faithfully reproduces all prior behaviours (drag-and-drop, error display, loading state) through the shared ChipModalFileControl, and the processFile / GitHub / paste logic is untouched. The only open question is the Quartr icon's hardcoded black-on-white fill, which won't automatically adapt in dark mode. icons.tsx — the QuartrIcon's hardcoded fill values deserve a quick check against dark-mode rendering to confirm the white-tile approach is intentional. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[SkillImport modal] --> B[ChipModalField file]
A --> C[ChipModalField GitHub]
A --> D[ChipModalField Paste]
B -->|onChange| E[handleFiles]
E --> F[processFile]
F -->|md| G[file.text]
F -->|zip| H[extractSkillFromZip]
G --> I[parseSkillMarkdown]
H --> I
I --> J[onImport]
C --> K[ChipInput + Fetch Chip]
K -->|onClick| L[handleGithubImport]
L --> M[requestJson]
M --> I
D --> N[ChipTextarea + Import Chip]
N -->|onClick| O[handlePasteImport]
O --> I
|
…file control Addresses review feedback — the shared file drop zone now accepts an optional loading prop that renders an animated spinner and blocks further picks while an async import is in flight, restoring the feedback the skill import modal lost when it migrated off its bespoke drop zone.
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 460b304. Configure here.
Summary
ChipModalField type='file'control — the same upload component the Create Knowledge Base and Help & support modals use — so the upload zone is visually consistent across modals.ChipModalFieldso every field shares the canonical gutter, label, and error rendering, and align theordividers to match.Type of Change
Testing
Tested manually — verified the import modal renders the shared upload field, GitHub/paste rows align with the Create tab, and the Quartr icon renders centered.
Checklist