shadcn.io is not affiliated with official shadcn/ui
Tattoo Piece Estimator Profile Block for React
A tattoo artist profile as a piece estimator: placement, size and style in, a price range, hours and sessions out, with the sum written out and the studio's hours beside it.
Installation
Overview
Let a client see roughly what a piece will cost before they write, with this tattoo artist profile for React with Base UI. Inside a hairline frame with a plus mark on each corner, the first band names the artist, and below it the estimate sits in a cell at the start: a price range in large figures, the hours behind it and how many sessions of four hours at most that makes, then the studio's days, hours and waitlist in a Data List and a line saying it is an estimate, not a quote. The main cell holds the three choices: where on the body in a Native Select, how big on a Slider from 5 to 40 cm, and the style in a Segment Group that shows each style's factor. Under them the sum is written out in the open, a size at two hours for every ten centimetres times a factor for the place and one for the style, so nothing is a black box. The foot, ruled by Guides, holds a status line beside a Shine Button that asks for a consult. It's built from Native Select, Slider, Segment Group, Data List, Badge, Avatar, Shine Button and Guides, with a CSS entrance only. For a studio's booking page, a portfolio site or any craft that quotes by the hour.
FAQ
How do I change the rates, places and styles?
Edit the constants at the top. RATE is the hourly rate and MINIMUM the least the studio charges. HOURS_PER_10CM is how long ten centimetres takes, SPREAD how far the range strays either side, and SESSION_HOURS the longest sitting. PLACEMENTS and STYLES each list a name and a factor that multiplies the hours; add a row to either and it appears in the menu or the group. Every figure on the card comes from these, so nothing is typed twice.
How is the estimate worked out?
The size gives the base hours, two for every ten centimetres. That is multiplied by the place's factor and the style's factor to give the hours in all, which the block shows as a row of the sum. The range runs 15% either side of it, rounded to the half hour, and the prices are those hours at the hourly rate, never under the minimum charge. Sessions are the longer end of the range divided into sittings of at most four hours.
What does Ask for a consult do?
Nothing leaves the page. It says Requested in this demo, nothing was sent, in the status line beside the button, and the line clears as soon as you change the place, the size or the style, because the request no longer matches the piece. To make it real, send the three choices and the range to your own API in the form's submit handler and show its answer in the same status line.
Is it a quote?
No, and the block says so twice: in the estimate cell and in the foot. A tattoo's time depends on the design, the skin and the day, so the numbers are a range around a sum and the artist confirms both at the consult. Keep that sentence if you change the rates.
Is it accessible?
The menu has a visible label, the slider is named How big, longest side and reads its value as centimetres, and the style group is named by its heading. The price range is shown with an en dash and read out as "to". The sum is a description list, so each factor is read with its name, and the status line is a polite live region present from the start. Every control works from the keyboard. Here the slider is named by its label through aria-labelledby.
How does it look on a phone?
The estimate comes first, then the three choices and the sum, and the foot stays pinned to the bottom of the screen while the panel scrolls so the consult is always in reach. From the medium breakpoint the estimate sits in a cell at the start with a divider and a plus mark where it meets the band above. The figures keep their order in a right-to-left layout.
Related
- Pro
Tutor Lesson Planner Profile
Quotes and servicesA tutor profile as a lesson planner: a subject menu, lessons a week on a slider, a block of 4, 8 or 12 weeks, the cost worked out line by line, and the next free times for a trial lesson.
- Pro
Electrician Services Estimate Profile
Quotes and servicesAn electrician profile as a flat-rate job estimate: a menu of services in three category tabs with an Add toggle each, and a start cell that works out the subtotal, call-out fee, an emergency surcharge switch, the total and the time on site.
- Pro
Illustrator Commission Builder Profile
Quotes and servicesAn illustrator profile as a commission builder beside her drawn pieces: eight pieces as one radio group, and a size, a character count, a background and a turnaround that work the price and the delivery day out line by line.
- Pro
Booked Dates Wedding Contact
Events and datesA date enquiry for a wedding planner that shows the calendar first: a season band, an inline calendar with booked and too-soon days crossed out, guests, a venue style and contact details.
- Pro
Veterinarian Services by Species Profile
Quotes and servicesA vet profile as a species-by-service matrix: a group of five species, a table of ten services marked Offered or Not offered with the words and an icon and a price from, and figures for the count, the cheapest service and the emergency hours.
- Pro
Animator Frame Scrubber Profile
Visual portfoliosAn animator profile as a frame scrubber: a drawn stage worked out from the frame number, a slider through 96 frames at 24 a second with the timecode and shot name, shots as buttons that jump to their first frame, and the credits.