Replace Prismic open positions with Ashby-sourced roles - #199
Conversation
Swap the careers page "Open positions" list from Prismic-managed job offers to Plural's live Ashby job board, sourced via Ashby's public Job Posting API. - Add getAshbyJobs() (src/utils/ashby.ts): server-side fetch of the Ashby posting API with hourly ISR revalidation, filtered to listed roles and normalized for the UI. Degrades to an empty list on error. - Make OpenPositionsDefault an async server component that fetches the roles server-side (same pattern as BlogDefault). The Prismic-driven eyebrow/title header and "don't see your role?" CTA are unchanged. - Move the filterable list into a client component (OpenPositionsList) that reuses the existing FilterButtonGroup/Button/row markup, adds a compensation line, and links each role to its Ashby posting page. No Prismic content change is required; the open_positions slice stays on the careers page. Board name is overridable via NEXT_PUBLIC_ASHBY_JOB_BOARD_NAME (defaults to "Plural"). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Greptile SummaryThe PR replaces Prismic-managed career listings with server-fetched Ashby roles and a client-side filterable list.
Confidence Score: 4/5The PR appears safe to merge, with a non-blocking accessibility issue in the nested job-row controls. The Ashby data flow and fallback behavior have no established blocking defect, but each external job anchor currently contains a native button and should be reduced to one interactive control. Files Needing Attention: src/slices/main/OpenPositions/components/OpenPositionsList.tsx
|
| Filename | Overview |
|---|---|
| src/utils/ashby.ts | Adds the cached Ashby API fetch, listed-role filtering, normalization, and error fallback; no concrete blocking failure was established. |
| src/slices/main/OpenPositions/OpenPositionsDefault.tsx | Converts the slice variation to an async server component and passes fetched roles to the client list while retaining Prismic-managed surrounding content. |
| src/slices/main/OpenPositions/components/OpenPositionsList.tsx | Adds category filtering and Ashby job rows, but nests a native button inside each job anchor. |
| next-env.d.ts | Changes the generated route-type import from the development output path to the build output path. |
| package-lock.json | Removes postcss's dev-only lockfile marker without changing its version or dependency edges. |
Reviews (1): Last reviewed commit: "Replace Prismic open positions with Ashb..." | Re-trigger Greptile
| <Button | ||
| className="row-span-2 h-10 w-10 self-center justify-self-end p-0 group-hover:border-white/24 lg:row-span-1" | ||
| variant="secondary" | ||
| > | ||
| <SvgArrowDownAccordion className="rotate-[-90deg] transform text-white" /> | ||
| </Button> |
There was a problem hiding this comment.
Nested interactive job controls
Each job-row anchor contains a Button that defaults to a native <button>, creating two nested focusable controls for one action and producing redundant focus stops and ambiguous semantics for keyboard and screen-reader users.
| <Button | |
| className="row-span-2 h-10 w-10 self-center justify-self-end p-0 group-hover:border-white/24 lg:row-span-1" | |
| variant="secondary" | |
| > | |
| <SvgArrowDownAccordion className="rotate-[-90deg] transform text-white" /> | |
| </Button> | |
| <span className="border-white/16 row-span-2 flex h-10 w-10 self-center justify-self-end rounded-full border p-0 group-hover:border-white/24 lg:row-span-1"> | |
| <SvgArrowDownAccordion className="m-auto rotate-[-90deg] transform text-white" /> | |
| </span> |
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Swap the careers page "Open positions" list from Prismic-managed job
offers to Plural's live Ashby job board, sourced via Ashby's public
Job Posting API.
Ashby posting API with hourly ISR revalidation, filtered to listed
roles and normalized for the UI. Degrades to an empty list on error.
roles server-side (same pattern as BlogDefault). The Prismic-driven
eyebrow/title header and "don't see your role?" CTA are unchanged.
that reuses the existing FilterButtonGroup/Button/row markup, adds a
compensation line, and links each role to its Ashby posting page.
No Prismic content change is required; the open_positions slice stays
on the careers page. Board name is overridable via
NEXT_PUBLIC_ASHBY_JOB_BOARD_NAME (defaults to "Plural").
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com