{"slug":"docket","name":"Docket – Law Firm & Professional Services","version":"1.3.3","category":"local business","priceCents":2400,"description":"Docket is a law firm tailwind template for litigation boutiques and professional-services firms that win work on demonstrated results, not on adjectives. Seven routes ship: the home slab, a worked practice area, the public record as a semantic table in a fixed, stated order, one matter with its docket sheet, the counsel roster, an intake page, and a living component styleguide. Its signature is the authority margin. Every claim the site makes sits in a two-part row with the filing that proves it beside it, court, docket number and disposition set in Courier Prime, and a claim with no filing cannot be published because the type will not build. The counsel page ships six commissioned portraits as ink plates — one asset each, working in light and dark without a scrim, with no gavel, no columned courthouse and no stock handshake anywhere in the theme. The page ground is a real material: a manila file jacket, with a pressboard macro driving a luminance mask over a token colour, so the board has fibre and tooth in both modes and never out-contrasts the plate edge that carries the page. The intake form ships the whole state layer a professional-services site actually needs: label, description, optional, invalid, valid, read-only, disabled, submitting and a persistent success receipt, on a dedicated field-boundary token computed to clear WCAG 1.4.11 on every surface a form sits on. The palette is a manila board with near-white paper plates and one full-bleed ink band, in 42 colour tokens across light and dark, all authored in OKLCH and verified pair by pair across 77 pairs. Fixtures are one spine: every figure on the site is computed from the same arrays, so a rebrand cannot leave a stale number behind.","summary":"For litigation boutiques that win on results: a law firm tailwind template with the whole site, an intake form and a citation beside every claim. 7 routes.","tags":["law firm tailwind template","lawyer nextjs template","attorney website template react","legal services website template","litigation firm template nextjs","professional services website template"],"accent_mode":"monochrome-plus-spot","palette":{"bg":"#e9d6be","surface":"#faf8f5","accent":"#761013","text":"#211c17","line":"#b1a9a0"},"darkMode":true,"pages":[{"path":"/","title":"Hollis Pike: every claim, cited","sections":["site-header","hero","practice-index","assertions","record-strip","partner-statement","engagement-cta","site-footer"]},{"path":"/practice","title":"Commercial disputes","sections":["site-header","practice-brief","practice-doctrine","practice-standard","practice-matters","practice-questions","practice-team","engagement-cta","site-footer"]},{"path":"/matters","title":"The record","sections":["site-header","record-index","record-summary","engagement-cta","site-footer"]},{"path":"/matter","title":"Rowan Instruments v. Delacourt Systems","sections":["site-header","matter-caption","matter-docket","matter-argument","matter-outcome","engagement-cta","site-footer"]},{"path":"/counsel","title":"Counsel","sections":["site-header","counsel-roster","counsel-profile","counsel-standard","engagement-cta","site-footer"]},{"path":"/engagement","title":"Start with the conflicts check","sections":["site-header","engagement-form","engagement-terms","engagement-hours","engagement-contact","site-footer"]},{"path":"/components","title":"The parts, unassembled","sections":["site-header","hero","practice-index","assertions","record-strip","partner-statement","engagement-cta","practice-brief","practice-doctrine","practice-standard","practice-matters","practice-team","record-index","record-summary","matter-caption","matter-docket","matter-argument","matter-outcome","counsel-roster","counsel-profile","counsel-standard","engagement-form","engagement-terms","engagement-contact","site-footer"]}],"components":[{"name":"site-header","file":"src/components/site-header.tsx","renders":"Masthead on the board: wordmark, primary navigation with aria-current on the open route, mode toggle, and a compact menu that closes on Escape"},{"name":"hero","file":"src/components/hero.tsx","renders":"Editorial slab (A6): the H1 at --text-d4 over a 7/5 split carrying the deck, the first chair's ink plate as the byline, both actions and the firm's derived figures"},{"name":"practice-index","file":"src/components/practice-index.tsx","renders":"Four hairline-ruled practice rows with lead counsel and the count of matters filtered from the record"},{"name":"assertions","file":"src/components/assertions.tsx","renders":"The authority margin at full size: three claims, each bound to the filing that proves it"},{"name":"record-strip","file":"src/components/record-strip.tsx","renders":"Three caption plates from the record, with the prior-results disclaimer"},{"name":"partner-statement","file":"src/components/partner-statement.tsx","renders":"The ink band on home: one statement at display size, attributed against the derived verdict total"},{"name":"engagement-cta","file":"src/components/engagement-cta.tsx","renders":"One primary action with cost, timing and the privilege boundary answered beside it"},{"name":"practice-brief","file":"src/components/practice-brief.tsx","renders":"The practice route's opener: forum tags beside a four-row ledger of verdicts, listed matters and lead counsel"},{"name":"practice-doctrine","file":"src/components/practice-doctrine.tsx","renders":"The authority margin on the practice route: three positions with the matters that established them"},{"name":"practice-standard","file":"src/components/practice-standard.tsx","renders":"The practice route's ink band and container break"},{"name":"practice-matters","file":"src/components/practice-matters.tsx","renders":"The practice's own matters as a ruled list of caption, question, citation and disposition"},{"name":"practice-questions","file":"src/components/practice-questions.tsx","renders":"Five questions a general counsel asks first, as disclosures ruled like docket entries, each carrying the figure its answer turns on"},{"name":"practice-team","file":"src/components/practice-team.tsx","renders":"Lawyers filtered from the roster by practice, with bar admissions in the citation register"},{"name":"record-index","file":"src/components/record-index.tsx","renders":"The public record as a semantic table: matter, court, docket, practice and disposition, with column priority below lg"},{"name":"record-summary","file":"src/components/record-summary.tsx","renders":"Totals printed beside their own arithmetic, plus the matters that are deliberately not listed"},{"name":"matter-caption","file":"src/components/matter-caption.tsx","renders":"A filing's caption block at full size: parties, court, docket and term"},{"name":"matter-docket","file":"src/components/matter-docket.tsx","renders":"The docket sheet as a chronological mono list, keeping the clerk's own entry numbers"},{"name":"matter-argument","file":"src/components/matter-argument.tsx","renders":"The authority margin on a single matter: what was argued and which docket entry carried it"},{"name":"matter-outcome","file":"src/components/matter-outcome.tsx","renders":"Disposition, elapsed time computed from the docket, and the full citation to copy"},{"name":"counsel-roster","file":"src/components/counsel-roster.tsx","renders":"The full roster ruled like a signature block: role, year called, practices and admissions"},{"name":"counsel-profile","file":"src/components/counsel-profile.tsx","renders":"One lawyer at depth, with personal figures printed against the firm's derived totals and the matters she led"},{"name":"counsel-standard","file":"src/components/counsel-standard.tsx","renders":"The counsel route's ink band and container break"},{"name":"engagement-form","file":"src/components/engagement-form.tsx","renders":"The intake form: eight controls on native constraints, a numbered error summary, focus routed to it or to the single failing control, a disabled busy fieldset, and a receipt that replaces the panel"},{"name":"engagement-terms","file":"src/components/engagement-terms.tsx","renders":"Three fee bases as a full-bleed table of applicability, terms and who carries the risk"},{"name":"engagement-hours","file":"src/components/engagement-hours.tsx","renders":"Office hours beside the clerk's filing counter at the court each office files in, as machine-readable times, plus the after-hours line"},{"name":"engagement-contact","file":"src/components/engagement-contact.tsx","renders":"Two offices as addresses, the walk to the court each one files in, the transit line, and a directions link derived from the street"},{"name":"site-footer","file":"src/components/site-footer.tsx","renders":"Colophon on the deeper board band: wordmark, practice links, offices and the attorney-advertising notice"},{"name":"ui/authority","file":"src/components/ui/authority.tsx","renders":"The signature: the authority margin list, the standalone authority stack, and the fixture-to-row mapper that enforces 'no filing, no row'"},{"name":"ui/badge","file":"src/components/ui/badge.tsx","renders":"Eyebrow, disposition chip with a domain status, icon and word, and neutral fact tag"},{"name":"ui/board","file":"src/components/ui/board.tsx","renders":"The board as a material: a pressboard macro used as a luminance mask over --board-fibre, so the page ground has tooth in both modes from one asset"},{"name":"ui/button","file":"src/components/ui/button.tsx","renders":"Primary, secondary and quiet variants with hover, active, pressed, pending and disabled states"},{"name":"ui/caption-block","file":"src/components/ui/caption-block.tsx","renders":"The head of a filing on a paper plate, in compact and full appearance variants"},{"name":"ui/citation","file":"src/components/ui/citation.tsx","renders":"A citation line: caption above, docket and court in the mono register"},{"name":"ui/container","file":"src/components/ui/container.tsx","renders":"Three measures — prose, default and wide"},{"name":"ui/field","file":"src/components/ui/field.tsx","renders":"Field, Input, Textarea, Select and ReadOnlyValue: one supporting line at error, success or description precedence, and five states on a computed --field-border"},{"name":"ui/ink-band","file":"src/components/ui/ink-band.tsx","renders":"The full-bleed inversion band: one statement, one attribution, no focusable element"},{"name":"ui/logo","file":"src/components/ui/logo.tsx","renders":"The brand mark: a filed page with its corner turned"},{"name":"ui/mode-toggle","file":"src/components/ui/mode-toggle.tsx","renders":"Light and dark flip, applied to the .tt-docket wrapper or the document root"},{"name":"ui/portrait","file":"src/components/ui/portrait.tsx","renders":"A lawyer's portrait as an ink plate — one 3:4 asset per person, darker than the board in light and lighter than it in dark, and never with type on it"},{"name":"ui/section-heading","file":"src/components/ui/section-heading.tsx","renders":"Eyebrow, heading and lede as one stack, with ink or inverted surface policy"},{"name":"ui/type","file":"src/components/ui/type.ts","renders":"The type ladder and shared display, mono, radius and focus class strings"},{"name":"ui/accordion-disclosure","file":"src/components/ui/accordion-disclosure.tsx","renders":"One graph, two recipes: a ruled question row with a mono qualifier in the margin, and the masthead's shadowed menu plate"},{"name":"ui/form","file":"src/components/ui/form.tsx","renders":"The submit flow as one paper plate: native constraints, a busy fieldset that refuses a second send, and a named receipt focus lands on"},{"name":"ui/form-error-summary","file":"src/components/ui/form-error-summary.tsx","renders":"The refused-answers panel: a counted heading, an ordered list numbered in Courier, and one link per field"}],"tokens":{"--background":"#e9d6be","--foreground":"#211c17","--card":"#faf8f5","--card-foreground":"#211c17","--primary":"#761013","--primary-foreground":"#faf6f3","--primary-hover":"#5f0006","--primary-active":"#450003","--secondary":"#d6c1a7","--secondary-foreground":"#251f1b","--muted":"#f0ede9","--muted-foreground":"#5f5a54","--accent":"#ffebe8","--accent-foreground":"#761013","--border":"#b1a9a0","--ring":"#16120e","--surface-sunken":"#e8e3dd","--surface-overlay":"#fefdfb","--surface-ink":"#1e1814","--surface-ink-foreground":"#efece9","--shadow-color":"#201914","--board-fibre":"#fff7ee","--board-fibre-strength":"0.28","--field":"#ffffff","--field-border":"#6e6860","--control-border":"#4c4740","--selection":"#ecd9d6","--selection-foreground":"#211c17","--selection-border":"#7c504c","--link":"#761013","--link-hover":"#560106","--positive":"#215e32","--positive-soft":"#dbeede","--positive-border":"#51825b","--warning":"#7b5100","--warning-soft":"#ffefd6","--warning-border":"#9d753b","--critical":"#bc1e00","--critical-soft":"#fee0d9","--critical-border":"#b63d29","--info":"#2a5885","--info-soft":"#daeafa","--info-border":"#577ea5","--weight-display":"500","--radius":"0.25rem","--radius-inner":"0.125rem","--text-caption":"0.75rem","--leading-caption":"1.4","--text-small":"0.875rem","--leading-small":"1.45","--text-body":"1rem","--leading-body":"1.55","--text-lead":"1.125rem","--leading-lead":"1.6","--text-d1":"1.5rem","--leading-d1":"1.25","--text-d2":"2.25rem","--leading-d2":"1.16","--text-d3":"clamp(2.25rem, 1.784rem + 1.989vw, 3.375rem)","--leading-d3":"1.08","--text-d4":"clamp(2.75rem, 1.792rem + 4.088vw, 5.0625rem)","--leading-d4":"1.05","--tracking-d1":"-0.01em","--tracking-d2":"-0.01em","--tracking-d3":"-0.02em","--tracking-d4":"-0.03em","--tracking-label":"0.09em","--font-display":"var(--font-docket-display), ui-serif, Georgia, serif","--font-text":"var(--font-docket-text), ui-sans-serif, system-ui, sans-serif","--font-sans":"var(--font-text)","--font-mono":"var(--font-docket-mono), ui-monospace, 'Courier New', monospace"},"tokensDark":{"--background":"#13100d","--foreground":"#eeeae7","--card":"#2b2723","--card-foreground":"#eeeae7","--primary":"#f58076","--primary-foreground":"#140a09","--primary-hover":"#fe9b91","--primary-active":"#febab3","--secondary":"#211d1a","--secondary-foreground":"#e9e6e2","--muted":"#38332f","--muted-foreground":"#afaaa4","--accent":"#3e2725","--accent-foreground":"#fea097","--border":"#45403c","--ring":"#f6f3f0","--surface-sunken":"#1c1916","--surface-overlay":"#3b3632","--surface-ink":"#050302","--surface-ink-foreground":"#e2dfdb","--shadow-color":"#030101","--board-fibre":"#968c81","--board-fibre-strength":"0.14","--field":"#0f0b09","--field-border":"#867f79","--control-border":"#aaa39d","--selection":"#4b2b28","--selection-foreground":"#eeeae7","--selection-border":"#b0726b","--link":"#f58076","--link-hover":"#fea198","--positive":"#79c58e","--positive-soft":"#193220","--positive-border":"#538a63","--warning":"#eaba6d","--warning-soft":"#3a2b12","--warning-border":"#9e793d","--critical":"#fd8c7b","--critical-soft":"#47211b","--critical-border":"#c45d4e","--info":"#88b9ec","--info-soft":"#1a2e42","--info-border":"#5b84ae","--weight-display":"400","--radius":"0.25rem","--radius-inner":"0.125rem","--text-caption":"0.75rem","--leading-caption":"1.4","--text-small":"0.875rem","--leading-small":"1.45","--text-body":"1rem","--leading-body":"1.55","--text-lead":"1.125rem","--leading-lead":"1.6","--text-d1":"1.5rem","--leading-d1":"1.25","--text-d2":"2.25rem","--leading-d2":"1.16","--text-d3":"clamp(2.25rem, 1.784rem + 1.989vw, 3.375rem)","--leading-d3":"1.08","--text-d4":"clamp(2.75rem, 1.792rem + 4.088vw, 5.0625rem)","--leading-d4":"1.05","--tracking-d1":"-0.01em","--tracking-d2":"-0.01em","--tracking-d3":"-0.02em","--tracking-d4":"-0.03em","--tracking-label":"0.09em","--font-display":"var(--font-docket-display), ui-serif, Georgia, serif","--font-text":"var(--font-docket-text), ui-sans-serif, system-ui, sans-serif","--font-sans":"var(--font-text)","--font-mono":"var(--font-docket-mono), ui-monospace, 'Courier New', monospace"},"compatibility":{"next":">=15 <17","react":">=19 <20","tailwind":">=4 <5"},"dependencies":["lucide-react"],"editions":{"react":{"source":"src","runtime":"react"},"html":{"source":"html/src","output":"html/dist","engine":"nunjucks","runtime":"vanilla","buildRequired":false}},"ui_library":{"version":"1.5.2","files":["html/src/js/_tt/accordion-disclosure.js","html/src/js/_tt/field-ids.js","html/src/js/_tt/field.js","html/src/js/_tt/form-error-summary.js","html/src/js/_tt/form.js","html/src/js/_tt/pending.js","src/components/ui/_tt/accordion-disclosure.axes.ts","src/components/ui/_tt/accordion-disclosure.fixtures.ts","src/components/ui/_tt/accordion-disclosure.tsx","src/components/ui/_tt/capture.ts","src/components/ui/_tt/field-ids.ts","src/components/ui/_tt/field.axes.ts","src/components/ui/_tt/field.capture.ts","src/components/ui/_tt/field.fixtures.ts","src/components/ui/_tt/field.tsx","src/components/ui/_tt/form-error-summary.axes.ts","src/components/ui/_tt/form-error-summary.fixtures.ts","src/components/ui/_tt/form-error-summary.tsx","src/components/ui/_tt/form.axes.ts","src/components/ui/_tt/form.fixtures.ts","src/components/ui/_tt/form.part.tsx","src/components/ui/_tt/form.ts","src/components/ui/_tt/ids.ts","src/components/ui/_tt/recipe.ts"]},"license":"standard","design":{"typefaces":{"display":"Petrona","text":"Golos Text","mono":"Courier Prime"},"typeRatio":1.5,"signature":"The authority margin: a two-part claim row whose hairline-separated outer column carries the filing that proves it — docket number, court and year in Courier Prime, the matter caption under it, the holding one step back. It runs on /, /practice and /matter, and toAuthorityRows resolves every claim through matterFor(), so a claim with no filing fails the build.","undertone":"manila file-jacket board, H 88 at C 0.050","heroArchetype":"A6","surface_kind":"marketing","built_against":"2026-08-28","levers":{"theme":"chromatic-material","density":"comfortable","accent_mode":"monochrome-plus-spot","motion":"restrained","borders":"hairline","radius":"small","texture":"paper","shadow":"none"},"icons":{"set":"lucide","stroke":1.75,"ladder":["size-4","size-5","size-8"],"contexts":{"nav":"glyph","panel_header":"mark","fact_row":"none","feature_grid":"none"}},"disclosure":{"helper_line":"one-clause","sentence":"hint","paragraph":"details","parallel_views":"tabs","secondary_object":"drawer"},"cta":{"header":"quiet","hero":"filled","repeats":["fold","end"],"mobile":"inline"},"colour_budget":{"brand_max_pct":null,"concentration_pct":70,"regions":[]}}}