-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Labels
good first issueGood for newcomersGood for newcomers
Description
Summary
The functions browse page (/functions) shows "Loading functions..." text while data is being fetched. A skeleton loading state (pulsing placeholder cards) would give much better perceived performance.
What to do
-
Create a
SkeletonCardcomponent inobjectiveai-web/components/ui/- Pulsing gray rectangle matching the card dimensions on the browse page
- Use CSS animation (e.g.,
@keyframes pulse) — no extra dependencies needed - Follow the pattern in existing
components/ui/components (LoadingSpinner.tsx,ErrorAlert.tsx)
-
Use
SkeletonCardinobjectiveai-web/app/functions/page.tsx- Replace the "Loading functions..." text with a grid of 6-8 skeleton cards
- Match the existing grid layout (
gridThreeclass)
Files to create/modify
- Create:
objectiveai-web/components/ui/SkeletonCard.tsx - Modify:
objectiveai-web/app/functions/page.tsx(loading state)
Reference
- Existing UI components:
objectiveai-web/components/ui/LoadingSpinner.tsx - Design tokens:
objectiveai-web/app/globals.css(usesvar(--border),var(--page-bg))
Acceptance criteria
- Skeleton cards appear while functions are loading
- Cards match the approximate size of real function cards
- Smooth pulse animation using CSS only
- No layout shift when real cards replace skeletons
Setup
npm install
npm run dev --workspace=objectiveai-webReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
good first issueGood for newcomersGood for newcomers