# Portfolio Kit > 133 composable React components and 15 full-page templates for building portfolio websites, plus a theme builder. Built on shadcn/ui + Tailwind CSS v4 and installed with the shadcn CLI (`npx shadcn@latest add @portfolio-kit/`). Individual guides, components and templates have Markdown counterparts linked below. Components are installed as source into `components/portfolio/`, compose as compound parts (`ProjectCard` + `ProjectCardTitle`…), accept `className` on every part and follow the theme tokens. Pick a template for a whole page, or compose sections from components. ## Docs - [Agent integration instructions](https://www.parthjadhav.com/products/portfolio-kit/AGENTS.md): inspect the consumer, install components, preserve accessibility and verify the result. - [Product brief](https://www.parthjadhav.com/products/portfolio-kit/agent.md): scope, installation model and development-only availability. - [Introduction](https://www.parthjadhav.com/products/portfolio-kit/docs/introduction.md): What Portfolio Kit is, how it's organized, and how to use it. - [Installation](https://www.parthjadhav.com/products/portfolio-kit/docs/installation.md): Connect the registry once, then add components and templates with the shadcn CLI. - [Build your portfolio](https://www.parthjadhav.com/products/portfolio-kit/docs/build-your-portfolio.md): A ten-minute walkthrough: install a template, theme it, swap in your content, add a project gallery and deploy. - [Theming](https://www.parthjadhav.com/products/portfolio-kit/docs/theming.md): Make your own theme in the builder, the tokens behind it, dark mode, and several themes on one site. - [Customization](https://www.parthjadhav.com/products/portfolio-kit/docs/customization.md): Compose parts, restyle anything with className, pick variants, and edit the source. - [AI & agents](https://www.parthjadhav.com/products/portfolio-kit/docs/agents.md): Markdown versions of every page, llms.txt, the shadcn MCP server and rules to paste into your AGENTS.md. - [Theme builder](https://www.parthjadhav.com/products/portfolio-kit/themes.md): make a theme (accent, neutrals, fonts, radius, shadows); options, share-URL format and the default CSS. ## Templates - [Article](https://www.parthjadhav.com/products/portfolio-kit/templates/article.md): A single long-form post: a magazine title block, a reading column with margin sidenotes, link previews, a wide figure and a pull quote, then the author, a newsletter sign-up and related posts. Prints cleanly. - [Case Study](https://www.parthjadhav.com/products/portfolio-kit/templates/case-study.md): A long-form case study page for a single project, with a facts header, chapter navigation, mockups, a before/after slider and results. - [Creative Developer](https://www.parthjadhav.com/products/portfolio-kit/templates/creative.md): An award-site portfolio for a creative developer, with a short intro, smooth scrolling, a custom cursor, sideways work and a curtain footer. - [Designer](https://www.parthjadhav.com/products/portfolio-kit/templates/designer.md): An image-led studio site for a designer or art director, with a big typographic intro, large project images and a short studio page. - [Developer](https://www.parthjadhav.com/products/portfolio-kit/templates/developer.md): A software engineer's site with a pinned intro and ⌘K menu on the left, and experience, projects, open source and writing on the right. - [Freelancer](https://www.parthjadhav.com/products/portfolio-kit/templates/freelancer.md): A one-person studio site that sells: a clear offer, case studies with results, services with prices, an FAQ and a contact form next to a call booker. - [Links](https://www.parthjadhav.com/products/portfolio-kit/templates/links.md): A link-in-bio page for your social profiles: portrait, name and one line, availability, a stack of link buttons with one featured, your latest post, what you're listening to and a newsletter sign-up. - [Minimal](https://www.parthjadhav.com/products/portfolio-kit/templates/minimal.md): A text-first, single-column personal site: a short intro, then quiet labelled lists of work, writing and talks. - [Not Found](https://www.parthjadhav.com/products/portfolio-kit/templates/not-found.md): A 404 page with some personality: a huge scrambling “404”, one honest sentence, the pages people usually want instead, and a ⌘K search to find the rest. - [Photographer](https://www.parthjadhav.com/products/portfolio-kit/templates/photographer.md): A quiet, image-first portfolio for a photographer or filmmaker, with a featured series, a filterable index with a lightbox and a short bio. - [Résumé](https://www.parthjadhav.com/products/portfolio-kit/templates/resume.md): A one-page, Swiss-style CV that reads well on screen and prints cleanly to A4 or Letter: positioning, contact row, experience, selected projects, skills, education, recognition and languages. - [Speaker](https://www.parthjadhav.com/products/portfolio-kit/templates/speaker.md): A site for people who mainly talk and teach: the next talk up front, every talk by year, podcast clips you can play, and a way for organisers to book you. - [Studio](https://www.parthjadhav.com/products/portfolio-kit/templates/studio.md): A small studio or agency site: a statement, a reel, stacked featured work, clients, services, awards and the team, behind a full-screen menu. - [Uses](https://www.parthjadhav.com/products/portfolio-kit/templates/uses.md): A quiet side page for a developer's site: what I'm doing now, the hardware, software and desk I use, what I'm reading and listening to, the sites I follow and a short page history. - [Writer](https://www.parthjadhav.com/products/portfolio-kit/templates/writer.md): A warm, editorial home for an essayist or newsletter author: a masthead with sign-up, the latest letter and recent essays, a book spread, a reading shelf, talks and a closing subscribe band. ## Layout - [Announcement Bar](https://www.parthjadhav.com/products/portfolio-kit/components/announcement-bar.md): Slim banner above the header for launches and availability. Static, accent-filled or scrolling, with an optional close button that can be remembered. - [Bento Grid](https://www.parthjadhav.com/products/portfolio-kit/components/bento-grid.md): Six-column grid of spanning cards with labels, titles and full-bleed visuals, for about sections, stats and tool stacks. - [Footer Reveal](https://www.parthjadhav.com/products/portfolio-kit/components/footer-reveal.md): The curtain footer: the page lifts away at the end to reveal the footer waiting underneath. Pure CSS sticky, with an optional lift-in effect. - [Section](https://www.parthjadhav.com/products/portfolio-kit/components/section.md): Page section with container widths, vertical spacing and a composable header: eyebrow, title, description and actions. - [Site Footer](https://www.parthjadhav.com/products/portfolio-kit/components/site-footer.md): Site footer with link columns, a small-print row and an optional giant wordmark that fills the full width. - [Sticky Layout](https://www.parthjadhav.com/products/portfolio-kit/components/sticky-layout.md): Two-column page layout: a pinned intro with scrollspy navigation on the left and scrolling sections on the right. ## Navigation - [Back To Top](https://www.parthjadhav.com/products/portfolio-kit/components/back-to-top.md): Floating button that appears after scrolling, shows page progress around its edge and scrolls back to the top. - [Command Menu](https://www.parthjadhav.com/products/portfolio-kit/components/command-menu.md): A ⌘K palette for jumping to pages, projects and actions, with fuzzy search, grouped results and keyboard hints. Pass data or compose the parts yourself. - [Floating Dock](https://www.parthjadhav.com/products/portfolio-kit/components/floating-dock.md): A macOS-style navigation dock. Icons grow toward the pointer, labels appear above them and the current page gets a dot. - [Language Switch](https://www.parthjadhav.com/products/portfolio-kit/components/language-switch.md): Links to the translated versions of a page, as “EN / DE / FR” text, a segmented pill or a globe menu. Sets `hrefLang`, `lang` and `aria-current` for you. - [Overlay Menu](https://www.parthjadhav.com/products/portfolio-kit/components/overlay-menu.md): Full-screen menu with a Menu ↔ Close morphing trigger, big numbered links, hover previews and a footer slot. - [Pill Nav](https://www.parthjadhav.com/products/portfolio-kit/components/pill-nav.md): Segmented navigation with a sliding pill that follows the pointer and rests on the current page. - [Scroll Progress](https://www.parthjadhav.com/products/portfolio-kit/components/scroll-progress.md): Reading-progress indicator for the page or a single article, as a thin bar across the top or a small ring with a percentage. - [Site Header](https://www.parthjadhav.com/products/portfolio-kit/components/site-header.md): Sticky header with brand, nav, actions and a full-screen mobile menu. Bar or floating-pill style, optional hide-on-scroll. - [Table Of Contents](https://www.parthjadhav.com/products/portfolio-kit/components/table-of-contents.md): Scrollspy navigation for case studies and articles, as a rail with a moving marker or a plain list. Clicking scrolls to the heading and updates the URL hash. - [Theme Picker](https://www.parthjadhav.com/products/portfolio-kit/components/theme-picker.md): Switch between `data-theme` presets with round color swatches or a labelled list, on or any element, and optionally remember the choice. - [Theme Toggle](https://www.parthjadhav.com/products/portfolio-kit/components/theme-toggle.md): Light, dark and system switch, as a sun/moon icon button or a three-way segmented control, that remembers the choice and follows the OS. ## Hero - [Availability Badge](https://www.parthjadhav.com/products/portfolio-kit/components/availability-badge.md): Status pill with a pulsing dot that says whether you're taking work, e.g. “Available for work” or “Booked until March”. - [Hero Intro](https://www.parthjadhav.com/products/portfolio-kit/components/hero-intro.md): The main portfolio hero: eyebrow, display title, lead, actions, optional media and a bottom meta row, with a staggered CSS entrance. Stacked, split or centered. - [Hero Statement](https://www.parthjadhav.com/products/portfolio-kit/components/hero-statement.md): Oversized typographic hero. Lines slide up from a mask, inline media pills widen on hover, and a labeled meta grid sits underneath. - [Hero Video](https://www.parthjadhav.com/products/portfolio-kit/components/hero-video.md): A full-bleed hero over a muted, looping background video, with a legible scrim and a visible pause button; it shows the poster under reduced motion or Save-Data and rests while off screen. - [Local Time](https://www.parthjadhav.com/products/portfolio-kit/components/local-time.md): Live clock for your city (“Lisbon 14:32 GMT+1”) with a day/night icon and an optional blinking colon. - [Location Tag](https://www.parthjadhav.com/products/portfolio-kit/components/location-tag.md): “Based in Lisbon, Portugal” with a map pin, optional coordinates in mono and an optional link to a map. - [Profile Card](https://www.parthjadhav.com/products/portfolio-kit/components/profile-card.md): Link-in-bio style card with avatar, name, role, location, status, bio, socials and a primary action. Vertical card or compact row. - [Scroll Cue](https://www.parthjadhav.com/products/portfolio-kit/components/scroll-cue.md): “Scroll” indicator for full-height heroes: a moving line, a mouse with a rolling wheel or a bobbing arrow. Can link to the next section. - [Showreel](https://www.parthjadhav.com/products/portfolio-kit/components/showreel.md): A large poster with a play button that follows the cursor; it opens your reel in a full-screen player (or plays it in place), with a duration label and a quiet coming-soon state. - [Word Rotate](https://www.parthjadhav.com/products/portfolio-kit/components/word-rotate.md): Cycles words inside a headline with a slide-and-blur swap, in a slot as wide as the widest word so the line never reflows. Screen readers get one static sentence. ## About - [Bio](https://www.parthjadhav.com/products/portfolio-kit/components/bio.md): About-me block with a captioned portrait, prose that opens with a lead paragraph, a facts list and an optional sign-off. - [Credentials](https://www.parthjadhav.com/products/portfolio-kit/components/credentials.md): Education, certifications, courses and awards as rows with a kind icon, issuer, date and an optional verify link. - [Credits List](https://www.parthjadhav.com/products/portfolio-kit/components/credits-list.md): Colophon-style credits: roles paired with the people behind them (optionally linked), as ruled columns, centered film credits or one compact inline line. - [Dot Map](https://www.parthjadhav.com/products/portfolio-kit/components/dot-map.md): A dotted world map with pins for where you’re based, your clients or your travels, plus optional pulsing and connecting arcs. Pure SVG, no map library. - [Experience](https://www.parthjadhav.com/products/portfolio-kit/components/experience.md): Work history as a hover-focus list, a vertical timeline that marks the current role, or compact résumé rows. - [Now](https://www.parthjadhav.com/products/portfolio-kit/components/now.md): A /now page block listing what you're building, reading and learning, with an “updated” date. Card grid or divided list. - [Photo Stack](https://www.parthjadhav.com/products/portfolio-kit/components/photo-stack.md): A pile of 3–5 photos that fans out on hover or keyboard focus. Click, tap or press Enter to send the top photo to the back. - [Portrait](https://www.parthjadhav.com/products/portfolio-kit/components/portrait.md): A personal photo as a matted frame, tilted polaroid, arch or circle, with a subtle hover effect. - [Principles](https://www.parthjadhav.com/products/portfolio-kit/components/principles.md): Numbered values or process steps (01, 02, 03…) as a card grid or divided rows with large numbers. - [Signature](https://www.parthjadhav.com/products/portfolio-kit/components/signature.md): A handwritten SVG signature that writes itself, stroke by stroke, when it scrolls into view — the sign-off at the end of a bio or letter. - [Skill Groups](https://www.parthjadhav.com/products/portfolio-kit/components/skill-groups.md): Skills grouped by discipline, as chips or level bars. Each skill can show a 1–5 level, years of use and an icon. - [Stats](https://www.parthjadhav.com/products/portfolio-kit/components/stats.md): Headline numbers (years, projects, stars, awards) that count up as they scroll into view. Plain, divided or card layouts. - [Timeline](https://www.parthjadhav.com/products/portfolio-kit/components/timeline.md): Milestones on a vertical or alternating rail with dates, icons or media, a current step, and dots that can fill as they scroll into view. - [Tool Grid](https://www.parthjadhav.com/products/portfolio-kit/components/tool-grid.md): A /uses page: tools grouped by category, with logos or monogram tiles, short notes, favorites and optional links. ## Work - [Archive Table](https://www.parthjadhav.com/products/portfolio-kit/components/archive-table.md): Sortable table of every project (year, name, client, stack and link), grouped by year, with columns that collapse on small screens. - [Before After](https://www.parthjadhav.com/products/portfolio-kit/components/before-after.md): Comparison slider for redesigns. Drag, click or use the keyboard to wipe between two layers, horizontally or vertically. - [Case Study Header](https://www.parthjadhav.com/products/portfolio-kit/components/case-study-header.md): Opening of a case study: back link, display title, summary, a ruled facts grid (client, role, timeline, live site) and a cover image. - [Case Study Section](https://www.parthjadhav.com/products/portfolio-kit/components/case-study-section.md): Case study chapter with a sticky numbered label, styled prose, pull quotes, outcome metrics and figures that can span the label column. - [Color Swatches](https://www.parthjadhav.com/products/portfolio-kit/components/color-swatches.md): A project’s palette for case studies: named swatches with hex and OKLCH values you click to copy, WCAG contrast labels, and grid, strip or proportional (by usage) layouts. - [Device Frame](https://www.parthjadhav.com/products/portfolio-kit/components/device-frame.md): Browser, phone, laptop and window frames for screenshots, videos or artwork, drawn with theme tokens. - [Draggable Canvas](https://www.parthjadhav.com/products/portfolio-kit/components/draggable-canvas.md): An endless canvas of project tiles you drag, flick, scroll or arrow around, the award-site signature. Without JavaScript it’s a plain grid. - [Expanding Panels](https://www.parthjadhav.com/products/portfolio-kit/components/expanding-panels.md): A row of tall project panels: hover or focus one and it widens to show its title and details while the others fold into vertical labels. Stacks into an accordion on phones. - [Image Gallery](https://www.parthjadhav.com/products/portfolio-kit/components/image-gallery.md): Images in a grid, masonry columns or a scrolling strip, with a lightbox you can use by keyboard, swipe or buttons. - [Lab Grid](https://www.parthjadhav.com/products/portfolio-kit/components/lab-grid.md): Dense grid of side projects, experiments and toys, each with a status (live, WIP, archived), a small preview and a one-line meta row. Also renders as compact text rows. - [Lightbox](https://www.parthjadhav.com/products/portfolio-kit/components/lightbox.md): Click-to-expand viewer for images, artwork and video: the thumbnail zooms into a full-screen view you browse with arrows, keys or swipes. - [Next Project](https://www.parthjadhav.com/products/portfolio-kit/components/next-project.md): End-of-case-study pager: a large “next project” link whose cover widens on hover, as a full-width hero or a previous/next split. - [Photo Meta](https://www.parthjadhav.com/products/portfolio-kit/components/photo-meta.md): EXIF-style caption for photographs and film stills (camera, lens, focal length, aperture, shutter, ISO, place and date) as a mono line, a spec grid or an overlay on the image. - [Project Card](https://www.parthjadhav.com/products/portfolio-kit/components/project-card.md): Composable work card with media, meta, title, summary and tags, in card, minimal or overlay style. The whole card is one link. - [Project Carousel](https://www.parthjadhav.com/products/portfolio-kit/components/project-carousel.md): Scroll-snap carousel for projects with mouse drag, arrow keys, previous/next buttons, a slide counter and a progress bar. No dependencies. - [Project Grid](https://www.parthjadhav.com/products/portfolio-kit/components/project-grid.md): Responsive grid for project cards: even rows, staggered columns, or a featured first project that spans two columns. - [Project List](https://www.parthjadhav.com/products/portfolio-kit/components/project-list.md): Projects as large text rows, with a preview image that follows the cursor on desktop and thumbnails on mobile. - [Scroll Steps](https://www.parthjadhav.com/products/portfolio-kit/components/scroll-steps.md): Scrollytelling for case studies and process write-ups: steps of text scroll past a sticky media panel that cross-fades to the active step's image. - [Stacked Cards](https://www.parthjadhav.com/products/portfolio-kit/components/stacked-cards.md): Featured projects as large sticky cards that stack while you scroll. Each card shrinks and dims as the next one covers it. - [Type Specimen](https://www.parthjadhav.com/products/portfolio-kit/components/type-specimen.md): A typeface showcase for case studies: a big “Aa”, the font’s name and foundry, its weights, the character set and a size ladder, all set in the project’s font. - [View Toggle](https://www.parthjadhav.com/products/portfolio-kit/components/view-toggle.md): Segmented grid / list / index switch with a sliding indicator, for choosing how a work section is laid out. ## Social Proof - [Awards List](https://www.parthjadhav.com/products/portfolio-kit/components/awards-list.md): Awards table with award, organization, project and year per row, a “×3” count for repeat wins and an optional summary of totals. - [Logo Cloud](https://www.parthjadhav.com/products/portfolio-kit/components/logo-cloud.md): Client logos or wordmarks as a bordered grid, a wrapping row or an endless marquee with a pause button. Muted by default, full color on hover. - [Press List](https://www.parthjadhav.com/products/portfolio-kit/components/press-list.md): Press mentions with publication, headline, kind and date, as divided rows or a card grid. Each linked item is a single link. - [Social Post](https://www.parthjadhav.com/products/portfolio-kit/components/social-post.md): A post from a social network as a card: author, handle, network icon, date, text with linked mentions, tags and URLs, optional media and reply/repost/like counts. - [Testimonial Card](https://www.parthjadhav.com/products/portfolio-kit/components/testimonial-card.md): Client quote with author (avatar or initials), optional star rating and source link, shown as a card, a plain block or a large featured quote. - [Testimonial Spotlight](https://www.parthjadhav.com/products/portfolio-kit/components/testimonial-spotlight.md): One large quote at a time with prev/next, dots or author tabs, and optional autoplay that pauses on hover, focus and reduced motion. ## Services - [FAQ](https://www.parthjadhav.com/products/portfolio-kit/components/faq.md): Accordion of questions and answers, as ruled lines or cards, with optional FAQPage JSON-LD for search engines. - [Pricing Table](https://www.parthjadhav.com/products/portfolio-kit/components/pricing-table.md): Two to four offers side by side (audit, sprint, retainer) with a featured tier, prices that switch with a billing toggle, aligned sections and a footnote. - [Process Steps](https://www.parthjadhav.com/products/portfolio-kit/components/process-steps.md): How-I-work timeline of numbered steps with heading, description and duration, joined by a line. Stacks on mobile, runs in a row on large screens, and can mark a current step. - [Service Card](https://www.parthjadhav.com/products/portfolio-kit/components/service-card.md): Offer or pricing card with name, description, price, a checklist of what's included and a call to action. A featured variant highlights the offer you recommend. - [Service List](https://www.parthjadhav.com/products/portfolio-kit/components/service-list.md): Numbered list of services with big headings that expand to reveal details, deliverables, duration and price. Keyboard-accessible accordion. ## Content - [Audio Player](https://www.parthjadhav.com/products/portfolio-kit/components/audio-player.md): An inline player for podcast clips, music, voice reels and sound design: a play button, a seek slider over an optional precomputed waveform and the time, on a native audio element, with one track playing at a time. - [Blogroll](https://www.parthjadhav.com/products/portfolio-kit/components/blogroll.md): An indie-web “sites I read” list: a monogram tile, site name, author, one line on why, the domain and when it last posted, as a list or a compact grid, with an OPML/RSS row. - [Bookshelf](https://www.parthjadhav.com/products/portfolio-kit/components/bookshelf.md): Reading list as a shelf of standing covers that tilt on hover, or as a detailed list with status, rating and notes. Books without artwork get a generated cover. - [Changelog](https://www.parthjadhav.com/products/portfolio-kit/components/changelog.md): A dated "what changed" log for a portfolio or product page: releases with version, date and optional permalink, and changes labelled Added, Changed or Fixed in words. - [Code Window](https://www.parthjadhav.com/products/portfolio-kit/components/code-window.md): Code for case studies and developer portfolios: file tabs, a language label, copy, line numbers, highlighted and diff lines, and soft wrap. Plain text by default; bring your own highlighter. - [Contribution Graph](https://www.parthjadhav.com/products/portfolio-kit/components/contribution-graph.md): GitHub-style activity heatmap: weeks by weekdays in five levels of the theme's accent, with month and weekday labels, a legend and a total. Scrolls to the latest weeks on small screens. - [Link Preview](https://www.parthjadhav.com/products/portfolio-kit/components/link-preview.md): An inline link that shows a small card (cover, title, description, site) on hover or keyboard focus; Escape closes it. On touch screens it's just a link. - [Media Appearances](https://www.parthjadhav.com/products/portfolio-kit/components/media-appearances.md): Podcast episodes, video interviews and livestreams you appeared on, with show artwork, date, duration and listen/watch links per platform, as rows or cards. - [Newsletter Form](https://www.parthjadhav.com/products/portfolio-kit/components/newsletter-form.md): Email sign-up form with inline validation and loading, success and error states. Pill-shaped inline field, stacked form or titled card. - [Now Playing](https://www.parthjadhav.com/products/portfolio-kit/components/now-playing.md): Music widget: album art, track and artist with an animated equalizer while playing, or “Last played” with a date or relative time. Card or one-line inline style. - [Post Card](https://www.parthjadhav.com/products/portfolio-kit/components/post-card.md): Article card with cover, category, title, excerpt, date, reading time and author, in vertical, horizontal or large overlay styles. - [Post List](https://www.parthjadhav.com/products/portfolio-kit/components/post-list.md): Writing index for blogs and notes: compact dated rows, an archive grouped by year with a sticky year label, or detailed entries with excerpt and tags. - [Product Card](https://www.parthjadhav.com/products/portfolio-kit/components/product-card.md): Shop card for courses, prints and templates: cover, badge, details, price with a compare-at discount and a call to action. The whole card is one link. - [Prose](https://www.parthjadhav.com/products/portfolio-kit/components/prose.md): Article typography for blog posts and case studies: headings, lists, quotes, code, figures, tables and footnotes styled from your theme, with no typography plugin. - [Repo Card](https://www.parthjadhav.com/products/portfolio-kit/components/repo-card.md): GitHub-style repository card with owner/name, description, language, stars, forks, last update and topics. The whole card is one link. - [Sidenote](https://www.parthjadhav.com/products/portfolio-kit/components/sidenote.md): Tufte-style margin notes: numbered references in the text with the notes beside it on wide screens, and tap-to-expand inline notes on phones. - [Talk List](https://www.parthjadhav.com/products/portfolio-kit/components/talk-list.md): Talks, workshops and podcast appearances with event, location, date and links to slides or recordings. Future dates get an “Upcoming” badge. ## Contact - [Availability Calendar](https://www.parthjadhav.com/products/portfolio-kit/components/availability-calendar.md): The next months at a glance, each marked open, limited or booked in words and a fill pattern, so clients see when you can start. - [Booking Card](https://www.parthjadhav.com/products/portfolio-kit/components/booking-card.md): An “intro call” card with the host, meeting details and the next open slots as selectable chips. The button links to your scheduler with the chosen time. - [Contact Bar](https://www.parthjadhav.com/products/portfolio-kit/components/contact-bar.md): A slim bar pinned to the bottom of the screen on phones that keeps “Email me” and “Book a call” one tap away once the hero has scrolled past, without covering the end of the page. - [Contact CTA](https://www.parthjadhav.com/products/portfolio-kit/components/contact-cta.md): Closing section of a portfolio with a large invitation, availability, a copy-email button and actions. Centered, split, or under a scrolling “Let's talk” line. - [Contact Form](https://www.parthjadhav.com/products/portfolio-kit/components/contact-form.md): Project inquiry form with name, email, company, budget and project-type chips and a message with a character count. Includes inline validation and sending, success and error states. - [Copy Email](https://www.parthjadhav.com/products/portfolio-kit/components/copy-email.md): Your email as a button that copies it on click and briefly shows “Copied!”. Pill, ghost or display-size styles, with an optional mailto link. - [Resume Link](https://www.parthjadhav.com/products/portfolio-kit/components/resume-link.md): Download-your-CV link as a button with a bouncing download icon, or a file card with type, size and last-updated date. - [Social Links](https://www.parthjadhav.com/products/portfolio-kit/components/social-links.md): Profile links as icons, pills or text. Pass URLs and the brand icon and label are detected automatically. ## Effects - [Aurora](https://www.parthjadhav.com/products/portfolio-kit/components/aurora.md): Slowly drifting gradient blobs in hues around your theme's highlight, used as a hero or card backdrop. Static under reduced motion. - [Background Pattern](https://www.parthjadhav.com/products/portfolio-kit/components/background-pattern.md): Grid, dot, line, cross or diagonal background in pure CSS, colored from theme tokens, with edge fades and an optional highlight glow. - [Circular Text](https://www.parthjadhav.com/products/portfolio-kit/components/circular-text.md): A rotating badge of text set around a circle (“Available for work · Available for work ·”) with a slot in the middle for an icon or link. Pauses on hover and keyboard focus; can speed up or reverse with scrolling. - [Custom Cursor](https://www.parthjadhav.com/products/portfolio-kit/components/custom-cursor.md): A dot and trailing ring that follow the pointer, grow over links and buttons, and show a text label over elements with `data-cursor`. Page-wide or scoped to a container. - [Grain](https://www.parthjadhav.com/products/portfolio-kit/components/grain.md): Film-grain noise overlay for the whole page or a single element, built from one cached SVG tile, with optional jitter and any blend mode. - [Horizontal Scroll](https://www.parthjadhav.com/products/portfolio-kit/components/horizontal-scroll.md): A pinned section whose row of cards travels sideways as you scroll down, with a progress bar. On touch screens, small or short viewports, reduced motion and in print it's a native swipeable row with snap points. - [Image Trail](https://www.parthjadhav.com/products/portfolio-kit/components/image-trail.md): Images that spawn along the cursor's path and fade out behind it, over a hero or section. Touch screens and reduced motion get a still collage instead. - [Magnetic](https://www.parthjadhav.com/products/portfolio-kit/components/magnetic.md): Pulls a button or icon toward a nearby pointer and springs back when it leaves. An optional inner layer moves further for depth. - [Marquee](https://www.parthjadhav.com/products/portfolio-kit/components/marquee.md): Endlessly scrolling row or column for client names, skills or testimonials, with edge fades, reverse direction, pause on hover or on demand and an optional scroll-velocity drive. - [Page Transition](https://www.parthjadhav.com/products/portfolio-kit/components/page-transition.md): View Transitions helpers for any router: `startPageTransition()`, preset animations (fade, slide-up, curtain, zoom) and shared-element names. Instant with reduced motion or without browser support. - [Parallax](https://www.parthjadhav.com/products/portfolio-kit/components/parallax.md): Scroll-linked depth: layers that drift slower or faster than the page, and media that glides inside its frame. One shared animation frame, paused offscreen, still with reduced motion and in print. - [Preloader](https://www.parthjadhav.com/products/portfolio-kit/components/preloader.md): Intro screen with a 0–100 counter or cycling greetings, then a curtain lifts to reveal the page. Skippable with a click or any key, can show once per session, and skipped with reduced motion. - [Reveal](https://www.parthjadhav.com/products/portfolio-kit/components/reveal.md): Fades, lifts and un-blurs elements as they scroll into view, one by one or staggered across a group. Respects reduced motion. - [Scramble Text](https://www.parthjadhav.com/products/portfolio-kit/components/scramble-text.md): Text that decodes from random glyphs, left to right, on mount, when it scrolls into view or on hover. The layout never shifts. - [Scroll Text](https://www.parthjadhav.com/products/portfolio-kit/components/scroll-text.md): A statement paragraph whose words light up one after another as the reader scrolls through it, tied to scroll position rather than played once. - [Scroll Zoom](https://www.parthjadhav.com/products/portfolio-kit/components/scroll-zoom.md): A cover image or video that starts as an inset card and grows to full-bleed while the reader scrolls past it, for case-study openers and showreels. - [Smooth Scroll](https://www.parthjadhav.com/products/portfolio-kit/components/smooth-scroll.md): Lenis-powered inertial scrolling for the page or a container, with smooth anchor links and a useLenis() hook. Off under reduced motion; touch stays native. - [Spotlight Card](https://www.parthjadhav.com/products/portfolio-kit/components/spotlight-card.md): Card with a soft glow that follows the pointer and a brighter rim on its border. Wrap cards in a group so one pointer lights the borders across a grid. - [Sticker Board](https://www.parthjadhav.com/products/portfolio-kit/components/sticker-board.md): Playful stickers and polaroids scattered over a section that visitors can pick up, drag, drop and nudge with the arrow keys, with a spring settle and a reset. - [Text Reveal](https://www.parthjadhav.com/products/portfolio-kit/components/text-reveal.md): Splits a headline into words or characters that slide up from a mask, staggered, when it scrolls into view. The original text stays accessible. - [Tilt Card](https://www.parthjadhav.com/products/portfolio-kit/components/tilt-card.md): 3D card that tilts toward the pointer with a moving glare and parallax layers (`data-depth`), easing back when the pointer leaves. Off on touch and reduced motion. ## Utilities - [Arrow Link](https://www.parthjadhav.com/products/portfolio-kit/components/arrow-link.md): Text link with an animated underline and a nudging arrow, for the end of a teaser or a section action. Detects external URLs and opens them safely. - [Brand Icons](https://www.parthjadhav.com/products/portfolio-kit/components/brand-icons.md): Dependency-free social/brand glyphs (GitHub, X, LinkedIn, Dribbble…) plus URL → brand detection. - [Filter Chips](https://www.parthjadhav.com/products/portfolio-kit/components/filter-chips.md): Single- or multi-select pill chips with optional counts — for filtering projects, posts or tags by category. Arrow-key navigable. - [Fit Text](https://www.parthjadhav.com/products/portfolio-kit/components/fit-text.md): Text that scales to exactly fill its container's width, for giant footer wordmarks and hero names. Each line fits on its own, with any font. - [Generative Art](https://www.parthjadhav.com/products/portfolio-kit/components/generative-art.md): Deterministic SVG placeholder art from a seed string: product screenshots, landscapes and portraits, or abstract mesh, bauhaus, rings, waves and orb. Use it for covers, photos and avatars; it can take its colors from the theme. - [Hover Video](https://www.parthjadhav.com/products/portfolio-kit/components/hover-video.md): A muted clip that plays while its card is hovered or focused with the keyboard, over a poster or artwork. Loads nothing until then, pauses off screen and in background tabs, and stays still on touch screens, with reduced motion or when saving data. - [Kbd](https://www.parthjadhav.com/products/portfolio-kit/components/kbd.md): Keycaps and shortcut hints ("⌘K to search", "Press Esc") that show ⌘ or Ctrl for the visitor's platform and read as words to screen readers. - [Marker](https://www.parthjadhav.com/products/portfolio-kit/components/marker.md): Hand-drawn highlights, underlines, circles, boxes and strikes for key words in a bio or headline, drawn on when they scroll into view. - [Media](https://www.parthjadhav.com/products/portfolio-kit/components/media.md): Aspect-ratio frame for images, video or artwork, with blur-up loading, optional hover zoom and an optional caption. - [Number Ticker](https://www.parthjadhav.com/products/portfolio-kit/components/number-ticker.md): Counts up to a number when it scrolls into view — locale-aware formatting, compact notation, prefix/suffix and zero layout shift. - [Sound Toggle](https://www.parthjadhav.com/products/portfolio-kit/components/sound-toggle.md): A "Sound — On/Off" toggle button with equalizer bars for sites with ambient audio or UI sounds: off by default, remembered, and readable anywhere through `useSound()`. - [Tag List](https://www.parthjadhav.com/products/portfolio-kit/components/tag-list.md): Pill tags for skills, stacks and topics — outline, soft or solid, with optional links, leading dots or icons and counts. - [Terminal](https://www.parthjadhav.com/products/portfolio-kit/components/terminal.md): Terminal window for developer portfolios. When it scrolls into view, commands type themselves out (in at most 5 seconds), output lines follow and a block cursor blinks at the end. - [Version Label](https://www.parthjadhav.com/products/portfolio-kit/components/version-label.md): Small-print footer line with version, last-updated date, copyright and edition number, plus a colophon that credits typefaces and tools. ## Optional - [Full docs in one file](https://www.parthjadhav.com/products/portfolio-kit/llms-full.txt) - [Registry index](https://www.parthjadhav.com/products/portfolio-kit/r/registry.json): shadcn registry with every item. --- # Portfolio Kit agent instructions > Add Portfolio Kit source components to an existing React application. ## Read before editing - [Installation](https://www.parthjadhav.com/products/portfolio-kit/docs/installation.md): configure the registry, dependencies and framework boundaries. - [Component and template catalog](https://www.parthjadhav.com/products/portfolio-kit/llms.txt): select an item and read its Markdown before installing. - [Theming](https://www.parthjadhav.com/products/portfolio-kit/docs/theming.md): semantic tokens, fonts and dark mode. - [Customization](https://www.parthjadhav.com/products/portfolio-kit/docs/customization.md): compound parts and consumer-owned source. ## Install and integrate 1. Inspect the consumer's package manager, React version, Tailwind setup, import aliases and existing components.json. Preserve its configuration. 2. Add the `@portfolio-kit` registry using `https://www.parthjadhav.com/products/portfolio-kit/r/{name}.json`, then install the chosen item with `npx shadcn@latest add @portfolio-kit/`. 3. Installed components use @/components/portfolio, shared hooks use @/hooks, and helpers use @/lib. Adapt aliases to the consumer; @pk/ is private to this documentation website. 4. For the Next.js App Router, use a client boundary for components that need hooks or browser events. Keep static surrounding content in server components. 5. Compose the documented compound parts. Use className and semantic theme tokens; retain keyboard controls, focus rings, reduced motion and visible content without JavaScript. ## Verify the result - Run the consumer's existing lint, type checks and production build. - Review installed diffs, especially when reinstalling customized files. The CLI copies source; it does not keep installed files synchronized. - Check desktop and mobile layouts, light and dark modes, keyboard interactions and reduced motion. ## Availability Portfolio Kit is public. Its documentation, Markdown and registry are served at https://www.parthjadhav.com/products/portfolio-kit; the registry URL is `https://www.parthjadhav.com/products/portfolio-kit/r/{name}.json`. Source and releases: https://github.com/ParthJadhav/portfolio-kit. --- # Portfolio Kit > 133 React components, 15 portfolio templates and a shared theme builder. Portfolio Kit is a shadcn registry, not an npm component package. Items are copied into the consumer application as editable source. The tested baseline is React 19 and Tailwind CSS v4. - [Agent integration instructions](https://www.parthjadhav.com/products/portfolio-kit/AGENTS.md) - [Catalog and Markdown index](https://www.parthjadhav.com/products/portfolio-kit/llms.txt) - [Installation](https://www.parthjadhav.com/products/portfolio-kit/docs/installation.md) - [Theme builder reference](https://www.parthjadhav.com/products/portfolio-kit/themes.md) Published at https://www.parthjadhav.com/products/portfolio-kit. Source and releases: https://github.com/ParthJadhav/portfolio-kit. --- # Introduction > What Portfolio Kit is, how it's organized, and how to use it. Portfolio Kit is a set of **133 components** and **15 full-page templates** for building portfolio websites with React, Tailwind CSS and [shadcn/ui](https://ui.shadcn.com). It is not an npm package. Like shadcn/ui, the shadcn CLI copies each piece into your project as source, and from then on it's your code. ```bash npx shadcn@latest add @portfolio-kit/hero-intro ``` ## What's inside The component list comes from a survey of 81 portfolio sites by developers, designers, photographers, studios and freelancers. - **Layout**: sections, containers, bento grids, sticky two-column layouts, headers and footers. - **Navigation**: site headers, pill navs, docks, overlay menus, a ⌘K command menu, scroll progress, table of contents, theme and language switches. - **Hero**: intros, statements, showreels, availability badges, local time, location. - **Work**: project cards, grids, lists, carousels, a draggable canvas, case-study headers and chapters, device frames, before/after sliders, galleries and a lightbox. - **About**: bio, experience, timeline, skills, tools, stats, principles, credentials, credits, a dot map, "now" pages. - **Social proof**: testimonials, logo clouds, press, awards. - **Services**: service cards and lists, pricing tables, process steps, FAQ. - **Content**: article typography, margin notes and link previews for writing; posts, talks, podcast appearances, repos, products, books, a blogroll, a contribution graph, now playing. - **Contact**: calls to action, contact and booking forms, copy-to-clipboard email, social links. - **Effects**: reveals, marquees, parallax, horizontal scroll, image trails, magnetic buttons, tilt and spotlight cards, text effects, grain, aurora, custom cursors, page transitions. - **Utilities**: arrow links, media frames, brand icons, generative art, text that fits its width, tags and other small parts. The [templates](https://www.parthjadhav.com/products/portfolio-kit/templates) are complete pages assembled from these components. To go from nothing to a deployed site, follow [Build your portfolio](https://www.parthjadhav.com/products/portfolio-kit/docs/build-your-portfolio). ## How the components are built All components share the same typography recipes, spacing scale, radius, motion curve and color tokens. Colors, fonts, radius and heading style are CSS variables, so changing the theme changes every component at once. Most components are compound: `ProjectCard` is used with `ProjectCardMedia`, `ProjectCardTitle` and so on, rather than a long list of props. Every part accepts `className` and passes other props through to its element. See [Customization](https://www.parthjadhav.com/products/portfolio-kit/docs/customization). Shared conventions keep them consistent next to each other: the same small mono labels, pill heights, card padding, hover lift and arrow chips everywhere. Pieces from different categories sit together without adjustments. They use semantic HTML, keyboard controls, visible focus rings and `prefers-reduced-motion`. Retain these behaviors when customizing installed source, and check your own page without JavaScript, with reduced motion and when printed. The native migration's checks are documented in [AI & agents](https://www.parthjadhav.com/products/portfolio-kit/docs/agents). ## How to use these docs - Browse [Components](https://www.parthjadhav.com/products/portfolio-kit/components) and [Templates](https://www.parthjadhav.com/products/portfolio-kit/templates). Each example shows its live preview and the code to copy. - Read [Installation](https://www.parthjadhav.com/products/portfolio-kit/docs/installation) to connect the registry. You only do this once. - New here? [Build your portfolio](https://www.parthjadhav.com/products/portfolio-kit/docs/build-your-portfolio) walks through a whole site in about ten minutes. - Make a theme in the [theme builder](https://www.parthjadhav.com/products/portfolio-kit/themes), or read [Theming](https://www.parthjadhav.com/products/portfolio-kit/docs/theming). - If you work with a coding agent, read [AI & agents](https://www.parthjadhav.com/products/portfolio-kit/docs/agents). Individual guides, components and templates have Markdown counterparts; the introduction is at `/docs/introduction.md`. --- # Installation > Connect the registry once, then add components and templates with the shadcn CLI. ## 1. Start from a shadcn/ui project Any React + Tailwind CSS v4 project set up with shadcn/ui works: Vite, Next.js, React Router, Astro and others. Both Radix and Base UI styles are supported. If you're starting fresh: ```bash npx shadcn@latest init --template vite --name my-portfolio ``` The `--template` flag also takes `next`, `react-router` and `astro`. It creates the app with Tailwind CSS v4 and the `@/` alias ready. Follow the [shadcn/ui installation guide](https://ui.shadcn.com/docs/installation) for your framework. ## 2. Add the registry Add the `@portfolio-kit` namespace to `components.json`: ```json { "registries": { "@portfolio-kit": "https://www.parthjadhav.com/products/portfolio-kit/r/{name}.json" } } ``` Now anything in the kit installs by name. ## 3. Add components ```bash npx shadcn@latest add @portfolio-kit/hero-intro @portfolio-kit/project-card ``` Components land in `components/portfolio/`. Shared hooks go in `hooks/` and helpers in `lib/`. Anything a component depends on (other kit components, shadcn/ui primitives, npm packages) is installed with it. ```tsx import { ProjectCard, ProjectCardTitle } from "@/components/portfolio/project-card" ``` ## 4. Make a theme (optional) Components work with your existing shadcn/ui colors. The kit adds defaults for its few extra tokens. To change the accent, fonts, radius and shadows, make a theme in the [theme builder](https://www.parthjadhav.com/products/portfolio-kit/themes) and paste its CSS into your stylesheet. See [Theming](https://www.parthjadhav.com/products/portfolio-kit/docs/theming). ## Or start from a template A template is a complete page built from the kit. Install one, edit the `content` object at the top of the file, and render it: ```bash npx shadcn@latest add @portfolio-kit/template-developer ``` ```tsx import TemplateDeveloper from "@/components/template-developer" export default function Page() { return } ``` [Build your portfolio](https://www.parthjadhav.com/products/portfolio-kit/docs/build-your-portfolio) walks through this end to end, from theming to deploying. ## Next.js and server components Kit files don't include `"use client"`. Components that use hooks or event handlers (most interactive and animated ones, and every template) need it in the App Router: add `"use client"` as the first line of the installed file, or render it from a file that has it. ### `` lint warnings In a `create-next-app` project, `next lint` / `eslint` warns `@next/next/no-img-element` on the kit components that render images (profile-card, post-card, lightbox, media and a few others). The kit uses plain `` on purpose: the same files install into Vite, React Router and Astro, where `next/image` doesn't exist. The warnings don't affect the build. To use Next's image optimisation, swap the `` in the installed file for `next/image`. Keep its `alt` and `className`, give it `width` and `height` (or `fill` with `sizes` inside a sized box), and allow remote hosts in `images.remotePatterns`. To keep `` instead, turn the rule off for the kit's folder in `eslint.config.mjs`: ```js const eslintConfig = defineConfig([ ...nextVitals, ...nextTs, { files: ["components/portfolio/**"], // "src/components/portfolio/**" with a src/ directory rules: { "@next/next/no-img-element": "off" }, }, ]) ``` ## Without the namespace You can also install any item straight from its URL, with no `components.json` changes: ```bash npx shadcn@latest add https://www.parthjadhav.com/products/portfolio-kit/r/project-card.json ``` ## Manual installation Every component page has a **Manual** tab with its full source, the npm packages it needs and the kit files it imports. Copy the files to the paths shown and fix the import aliases if yours differ from `@/`. Every component also needs the kit's base tokens (`highlight`, `success`, `border-hover`, the card shadow, the `font-heading` utility and motion keyframes). The CLI installs them automatically as `@portfolio-kit/base`. When copying by hand, copy them from [`base.json`](https://www.parthjadhav.com/products/portfolio-kit/r/base.json). ## Hosting the registry yourself The registry files are static JSON in `website/private-products/portfolio-kit/assets/r/`. A separate host can serve that directory at `/r/`; point the consumer's `components.json` at the host's `/r/{name}.json`. Preserve every dependency item, including `base.json`. The public registry is served by the website at `https://www.parthjadhav.com/products/portfolio-kit/r/{name}.json`, built from the same files. `bun run build` does not export Portfolio Kit to `dist/`. ## Updating installed components The CLI copies source into your application. Registry changes do not update those files automatically. Before reinstalling a component, commit or back up your customizations and review the incoming diff. The project is currently at version 0.x; component APIs can change. ## Requirements - React 19 (the tested baseline; React 18 compatibility is not guaranteed) - Tailwind CSS v4 - `lucide-react` for icons (installed with components that use it) --- # Build your portfolio > A ten-minute walkthrough: install a template, theme it, swap in your content, add a project gallery and deploy. This guide takes you from an empty folder to a deployed portfolio. It uses Vite; in Next.js or React Router the steps are the same apart from where you render the page (see the note in step 2). ## 1. Create the app ```bash npx shadcn@latest init --template vite --name my-portfolio cd my-portfolio ``` This creates a Vite + React + TypeScript app with Tailwind CSS v4, the `@/` import alias and `components.json` already set up. When it asks for a component library, any choice works: Base UI and Radix are both supported. Adding the kit to an existing app instead? Follow the [shadcn/ui installation guide](https://ui.shadcn.com/docs/installation) for your framework first (it needs Tailwind CSS v4 and the `@/` alias), then run `npx shadcn@latest init`. Then add the kit's registry to `components.json`: ```json { "registries": { "@portfolio-kit": "https://www.parthjadhav.com/products/portfolio-kit/r/{name}.json" } } ``` ## 2. Pick a template and install it Browse the [templates](https://www.parthjadhav.com/products/portfolio-kit/templates) and pick the one closest to what you do. There are templates for developers, designers, writers, photographers and freelancers, plus a résumé, a link-in-bio page and a 404. This guide uses the Developer template: ```bash npx shadcn@latest add @portfolio-kit/template-developer ``` The CLI adds the template as `src/components/template-developer.tsx` (Vite projects alias `@/` to `src/`), plus every kit component it uses (in `src/components/portfolio/`), the hooks and helpers they need, and the kit's base tokens. Render it as your page, in `src/App.tsx`: ```tsx import TemplateDeveloper from "@/components/template-developer" export default function App() { return } ``` Run `npm run dev`. You should see the full template with its sample content. > In Next.js, render the template from `app/page.tsx`. Kit components use hooks, so add `"use client"` at the top of the template file (and of any kit component your bundler complains about). ## 3. Make it look like you Open the [theme builder](https://www.parthjadhav.com/products/portfolio-kit/themes). Choose a **starting point** (Editorial for a serif look, Swiss for strict type, Terminal for mono everything…), then adjust the accent, neutrals, fonts, radius and shadows. The whole site, previews included, switches to your theme as you go. Use **Shuffle** to explore and **Undo** (⌘Z) to step back. When you're happy, copy the **CSS** tab and replace the `:root` and `.dark` blocks in `src/index.css` with it. Install the font packages the builder lists and add its import lines. Or download `theme.json` and run `npx shadcn@latest add ./theme.json`. See [Theming](https://www.parthjadhav.com/products/portfolio-kit/docs/theming) for what each token does. ## 4. Swap in your content Open `src/components/template-developer.tsx`. Everything the page says lives in one `content` object at the top of the file: your name, role, links, experience, projects and writing. ```tsx const content: DeveloperContent = { name: "Your Name", role: "Senior engineer", tagline: "One sentence about the work you do and who it's for.", email: "you@example.com", // …experience, projects, open source, writing } ``` The object is typed, so your editor tells you what each field expects. Delete entries you don't need; sections without content can be removed from the JSX below. Put your images in `public/` and reference them as `/lumen.jpg`. ## 5. Add a component Say you want a card linking to one project, and a gallery for its page that you can click through. Install the two components: ```bash npx shadcn@latest add @portfolio-kit/project-card @portfolio-kit/lightbox ``` ```tsx import { Lightbox, LightboxTrigger } from "@/components/portfolio/lightbox" import { ProjectCard, ProjectCardContent, ProjectCardDescription, ProjectCardMedia, ProjectCardTitle, } from "@/components/portfolio/project-card" export function LumenCard() { return ( Lumen A design system for eleven products. ) } export function LumenGallery() { return ( ) } ``` Save this as `src/components/lumen.tsx`, then render `` in your work section and `` on the project's page. Every component page shows more examples to copy, and its **API** section lists every prop. Components you install follow your theme automatically. ## 6. Check it - Toggle dark mode and look at every section. - Resize to phone width (390px): nothing should scroll sideways. - Tab through the page: every link and button shows a focus ring. - Turn on "reduce motion" in your OS settings: entrance effects are skipped and content shows at once. - Print the page (or save as PDF): content hidden by scroll effects prints fully, and the résumé template lays out on A4 or Letter. ## 7. Deploy ```bash npm run build ``` Vite writes a static site to `dist/`. Upload it to any static host: Netlify, Cloudflare Pages, Vercel or GitHub Pages. For GitHub Pages under `//`, set `base: "//"` in `vite.config.ts`. In Next.js, deploy the project as usual. That's it. From here, browse the [components](https://www.parthjadhav.com/products/portfolio-kit/components) for sections to add, or read [Customization](https://www.parthjadhav.com/products/portfolio-kit/docs/customization) to change the markup. --- # Theming > Make your own theme in the builder, the tokens behind it, dark mode, and several themes on one site. Every component reads its look from CSS variables: the standard shadcn/ui tokens plus a few kit tokens. A theme is a set of values for those variables. Change them and everything restyles at once, down to corner radius, fonts and heading weight. There are no preset themes to install. Without any changes, you get a neutral default with a blue accent. To make it yours, use the [theme builder](https://www.parthjadhav.com/products/portfolio-kit/themes). ## The theme builder Start from one of a few **starting points** (Default, Editorial, Swiss, Studio, Terminal), then pick an accent, neutrals, button style, heading and body fonts, radius, shadows and borders. The builder works out both palettes, light and dark, and keeps text readable (WCAG contrast) whatever you choose. While you work, this whole site and every live preview switch to your theme, so you can browse the kit in it. Previews show components or whole templates. **Shuffle** picks a random combination to explore from. **Undo** and **Redo** (⌘Z / ⇧⌘Z) step through your changes; dragging a slider counts as one step. **Reset** goes back to the default. When you like it, the builder gives you three ways to use it: - **CSS**: replace the `:root` and `.dark` blocks in your global stylesheet with the generated ones. - **shadcn CLI**: download `theme.json`, then run `npx shadcn@latest add ./theme.json`. The CLI writes the variables into your CSS. - **Prompt**: paste the instructions into your coding agent. The builder also lists the font packages to install (self-hosted with `@fontsource`) and the import lines to add. **Copy link** saves the theme in a URL, for example `/themes?a=38&n=paper&h=instrument-serif`. [/themes.md](https://www.parthjadhav.com/products/portfolio-kit/themes.md) lists every parameter. ## Dark mode Dark palettes use the `.dark` class, like shadcn/ui. `ThemeToggle` manages it (light, dark or system) and remembers the choice. To force a dark surface inside a light page (a terminal window, a footer), add `className="dark"` to that element. ## Several themes on one site Your main theme lives on `:root`. To let visitors switch between looks, scope the others with a `data-theme` attribute and use the `ThemePicker` component. A scoped theme only needs the variables it changes: ```css [data-theme="paper"] { --background: oklch(0.975 0.01 80); --foreground: oklch(0.2 0.02 60); --highlight: oklch(0.55 0.13 38); --highlight-ink: oklch(0.55 0.13 38); --font-heading: "Instrument Serif", serif; --heading-weight: 400; } ``` ```tsx ``` ## Tokens The shadcn/ui tokens (`background`, `foreground`, `card`, `muted`, `primary`, `border`, `ring`…) plus: | Token | Used for | | --- | --- | | `--highlight` / `--highlight-foreground` | The accent as a **fill**: dots, active pills, badges, selection. | | `--highlight-ink` | The accent as **text** on the page background (index numbers, hover links). Kept at 4.5:1 or more. | | `--success` | Availability dots and positive states. | | `--card-shadow` | Card elevation: none, soft, or a hard offset shadow. | | `--font-body`, `--font-heading`, `--font-code` | Font families. | | `--heading-weight`, `--heading-tracking` | Heading style, applied by the `font-heading` utility. | | `--display-scale` | Optional multiplier for display-size headings (default 1): `typography.display`, `HeroStatementHeading` and the templates' hero titles. The builder sets `0.8` for monospace heading fonts, whose wider letters overflow the default scale. | | `--radius` | Base radius. `rounded-pill` scales with it and turns square at `0`. | In Tailwind they're available as `bg-highlight`, `text-highlight-ink`, `border-border-hover` (the border mixed toward the text color), `shadow-card`, `font-heading` and `rounded-pill`. ## Editing by hand If you tune the variables yourself: - Keep `--highlight-ink` at 4.5:1 or more against `--background`. If your highlight is a light fill (lime, yellow), make the ink a darker shade of it. - Keep `--muted-foreground` at 4.5:1 or more against `--background` and `--card`. - Use one heading family and one body family. Set `--heading-weight` to 400 for display serifs and 600–700 for grotesks. --- # Customization > Compose parts, restyle anything with className, pick variants, and edit the source. ## Compose parts Most components are **compound**: a root plus named parts. Use the parts you need, in the order you want, and put anything else in between. ```tsx 2025 Design lead Lumen A design system for eleven products. ``` List-like components also take data (`tags={[…]}`, `items={[…]}`) for the common case. When you need more control, render the parts yourself. ## Restyle with className Every part accepts `className`. It's merged last with `cn()`, so your classes win: ```tsx Lumen ``` Every part also forwards the rest of its props (`id`, `aria-*`, event handlers, `style`) to its DOM element. ## Variants Components with more than one visual style take a `variant` (and sometimes `size`) prop. The class recipes are exported too, e.g. `projectCardVariants`, so you can reuse them on your own elements. ## Target parts with data-slot Each part renders a `data-slot` attribute (`data-slot="project-card-title"`). Style a part from a parent without touching the component: ```tsx
…
``` ## Links and routers Components render plain `` elements. To use your router's link, wrap the component or pass `onNavigate` where offered (`CommandMenu`). Components that accept `asChild` (like `ArrowLink`) render your element instead: ```tsx About me ``` ## Motion Entrance and pointer effects respect `prefers-reduced-motion`. Durations and easing use the kit's `ease-smooth` curve. To tone motion down globally, remove the effect components you don't want, or pass `animate={false}` where offered. ## Print Pages print cleanly without extra work. Entrance effects (`Reveal`, `TextReveal`, `Terminal`, `NumberTicker`, `ScrambleText`) print their final state even if they never scrolled into view, and the `Preloader` is hidden. Add Tailwind's `print:` variants for anything else, e.g. `print:hidden` on a header. ## Remembered state on server-rendered pages A few components remember a visitor's choice in browser storage. The server can't read it, so on server-rendered pages (Next.js) the first paint shows the default until the page hydrates. Each one exports an optional inline script that applies the stored choice before that first paint. Add the ones you use to `` in your root layout: ```tsx import { createPreloaderScript } from "@/components/portfolio/preloader" // inside , with the same key you pass to