diff --git a/src/components/CrewForm.tsx b/src/components/CrewForm.tsx
index d722e72..9ace413 100644
--- a/src/components/CrewForm.tsx
+++ b/src/components/CrewForm.tsx
@@ -428,6 +428,12 @@ export function CrewForm({ existing }: CrewFormProps) {
return;
}
+ // An invalid coordinator would be silently dropped on save — tell the user.
+ if (coordinatorInput.trim() && !parsedCoordinator) {
+ toast({ title: t('socialUi.coordinator.invalid'), variant: 'destructive' });
+ return;
+ }
+
try {
const identifier = existing?.identifier ?? `crew-${Date.now().toString(36)}`;
@@ -1091,8 +1097,7 @@ export function CrewForm({ existing }: CrewFormProps) {
{t('socialUi.coordinator.customTitle')} {t('socialUi.coordinator.customBadge')}
- {t('socialUi.coordinator.customDescA')} {t('socialUi.coordinator.customDescB')}{' '}
- {t('socialUi.coordinator.customRunOwn')}{' '}
+ {t('socialUi.coordinator.customDescShort')}{' '}
{t('socialUi.coordinator.cordnCoordinator')}
- {' '}
- {t('socialUi.coordinator.customDescC')}
+
+ .
- setCoordinatorInput(e.target.value)}
- className="bg-gray-800 border-gray-700 font-mono text-xs"
- spellCheck={false}
- />
+
+ setCoordinatorInput(e.target.value)}
+ className="bg-gray-800 border-gray-700 font-mono text-xs"
+ spellCheck={false}
+ />
+ {coordinatorInput.trim() !== '' && (
+
+ )}
+
{coordinatorInput.trim() !== '' &&
(parsedCoordinator ? (
@@ -1134,6 +1154,7 @@ export function CrewForm({ existing }: CrewFormProps) {
{t('socialUi.coordinator.useMine')}
)}
+
{t('socialUi.coordinator.pointerNote')}
);
@@ -1281,19 +1302,19 @@ export function CrewForm({ existing }: CrewFormProps) {
{bioBlock}
{vibeBlock}
{crewTypeBlock}
- {agentBlock}
{openCallBlock}
- {treasuryBlock}
{membersBlock}
{spotsBlock}
- {labLinkBlock}
- {videoBlock}
- {sponsorBlock}
- {coordinatorBlock}
{locationBlock}
{nip05Block}
{linksBlock}
{bandBlock}
+ {agentBlock}
+ {videoBlock}
+ {sponsorBlock}
+ {treasuryBlock}
+ {labLinkBlock}
+ {coordinatorBlock}