Components
Link editor
Create or update a bookmark with URL, label, board and optional icon.
On this page
Purpose and placement
Create or update a bookmark with URL, label, board and optional icon.
Anatomy
- URL and label fields
- Board select
- Optional inline board-name field
- Icon search / selection
- Feedback and primary action
Contract
| Input or boundary | Behavior |
|---|---|
| Create payload | url, label, icon, boardId |
| Edit payload | linkId, url, label, icon or null, boardId |
| Label assistance | 500ms delayed title lookup while untouched |
| Save | POST for create; PATCH for edit |
States and feedback
- Blank create
- Prefilled edit
- Title lookup pending
- Required-label error
- Saving disabled
- Service error with values retained
Interaction and composition
Client create validates only a nonempty label before requesting the API. URL input type does not supply native form validation because the action is a button outside a form submit. The server rejects empty URLs. Creating a board inline performs board POST before link POST, so the operation is not atomic.
Responsive behavior
The select spans the form width. Icon suggestions can extend past the card and small viewport; the screenshot includes the native placement.
Accessibility contract
URL/label/icon inputs rely on placeholders rather than associated labels. Feedback paragraphs do not have alert/live-region semantics. Add explicit names and error associations as remediation.
Known implementation gaps
Removing an icon in edit sends null, but link PATCH maps only string icons to updates; null removal is not guaranteed to persist. This discrepancy should be fixed in the app before claiming the interaction is complete.
Source references
| Repository file | Responsibility |
|---|---|
| app/(home)/AppHome.tsx | Link fields and handlers |
| app/api/links/route.ts | Create/update validation |
| app/api/link-metadata/route.ts | Title fetch |
Examples from the app
Actual Startboard source UI with isolated fictional records; both native themes at 2× resolution or higher. No live integrations or account writes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-08 · Revision 08fa2595a668 · Documentation v1.0.0