-
- {skill.name}
-
- View
-
-
- {skill.description && (
-
- {skill.description}
-
- )}
- {adapterEntry?.detail && (
-
{adapterEntry.detail}
- )}
+ {(() => {
+ const allSkills = companySkills ?? [];
+ const optionalSkills = allSkills.filter(
+ (skill) => !adapterEntryByName.get(skill.slug)?.required,
+ );
+ const requiredSkills = allSkills.filter(
+ (skill) => adapterEntryByName.get(skill.slug)?.required,
+ );
+
+ const renderSkillRow = (skill: (typeof allSkills)[number]) => {
+ const checked = skillDraft.includes(skill.slug);
+ const adapterEntry = adapterEntryByName.get(skill.slug);
+ const required = Boolean(adapterEntry?.required);
+ const disabled = required || skillSnapshot?.mode === "unsupported";
+ const checkbox = (
+
{
+ const next = event.target.checked
+ ? Array.from(new Set([...skillDraft, skill.slug]))
+ : skillDraft.filter((value) => value !== skill.slug);
+ setSkillDraft(next);
+ }}
+ className="mt-0.5 disabled:cursor-not-allowed disabled:opacity-60"
+ />
+ );
+ return (
+
+ );
+ };
+
+ if (allSkills.length === 0) {
+ return (
+
+
+ Import skills into the company library first, then attach them here.
+
+
+ );
+ }
+
+ return (
+ <>
+ {optionalSkills.length > 0 && (
+
+ {optionalSkills.map(renderSkillRow)}
+
+ )}
+
+ {requiredSkills.length > 0 && (
+
+
+
+ Required by Paperclip
+
+
+ {requiredSkills.map(renderSkillRow)}
+
+ )}
+ >
+ );
+ })()}
{desiredOnlyMissingSkills.length > 0 && (