Skip to content

pastetaste

Workday Range Picker

FormsInteractionData

A booking calendar for multi-day jobs: pick first and last day, weekends are skipped, booked days block the range, the span is capped, and a summary shows the workdays and a running estimate.

Paste it into Claude Code: it installs the component, asks for your brand and content, and places it on the page you name.

Install

Or by hand, in a Next.js project with shadcn set up. It writes components/pastetaste/workday-range-picker.tsx.

npx shadcn@latest add https://pastetaste.com/r/workday-range-picker.json

Prompt

Install the pastetaste component "Workday Range Picker" (workday-range-picker) into this Next.js project and use it.

What it is: A booking calendar for multi-day jobs: pick first and last day, weekends are skipped, booked days block the range, the span is capped, and a summary shows the workdays and a running estimate.

Before you place it, ask me (one short message, in my language; "skip" = sensible default): which page and section it goes in, my brand colour (hex), the text, labels or images it should show, and whether I want my logo or my own copy in the demo content. Then:

Steps:
1. If the project has no components.json, run: npx shadcn@latest init -y -d. Then run: npx shadcn@latest add https://pastetaste.com/r/workday-range-picker.json
   (it writes components/pastetaste/workday-range-picker.tsx; install any npm packages it reports).
2. Import it: import { WorkdayRangePicker } from "@/components/pastetaste/workday-range-picker" (check the file for the exact named export).
3. Put it where it fits on the page I name, keep the rest of the page untouched, and pass props for my colours instead of editing the installed file.
4. It does not depend on Tailwind; colours come from CSS variables (--pt-*) or props.
5. It supports prefers-reduced-motion with a still state; do not remove it.

Props (all optional unless the type has no default):
- booked: string[] = sample dates — ISO dates (YYYY-MM-DD) that cannot be picked.
- from: string = '2026-11-09' — First bookable ISO date; earlier days are disabled.
- startMonth / months: [year, monthIndex] / number = [2026, 10] / 3 — First month shown and how many months you can page through.
- maxDays: number = 5 — Most workdays in one range; a longer pick restarts from the clicked day.
- rate / extra / currency: number / number / string = 1400 / 0 / '€' — Estimate = workdays x rate + extra. rate 0 hides the estimate.
- unit / title: string = 'day' / '' — Word used in the summary and an optional label before the month.
- onChange: (r: { start, end, days, estimate }) => void — Called after every click and on clear.
- accent / ink: string = #e8d9b0 / #0b0b0c — Range fill and main colour.
- className / style: string / CSSProperties — On the root.

Live preview: https://pastetaste.com/c/workday-range-picker
Then run the dev server, check it in the browser at desktop and mobile width, and tell me the page URL.

Props 9

PropTypeDefaultDescription
bookedstring[]sample datesISO dates (YYYY-MM-DD) that cannot be picked.
fromstring'2026-11-09'First bookable ISO date; earlier days are disabled.
startMonth / months[year, monthIndex] / number[2026, 10] / 3First month shown and how many months you can page through.
maxDaysnumber5Most workdays in one range; a longer pick restarts from the clicked day.
rate / extra / currencynumber / number / string1400 / 0 / '€'Estimate = workdays x rate + extra. rate 0 hides the estimate.
unit / titlestring'day' / ''Word used in the summary and an optional label before the month.
onChange(r: { start, end, days, estimate }) => void-Called after every click and on clear.
accent / inkstring#e8d9b0 / #0b0b0cRange fill and main colour.
className / stylestring / CSSProperties-On the root.
View all →