TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/web-weaver/llms.txt
Use this file to discover all available pages before exploring further.
Familiar component renders a testimonial card pairing a stylized animal illustration with a professional endorsement. Each animal — cat, raven, owl, toad, or bat — is drawn as a distinct SVG composition, reinforcing the witchcraft aesthetic while giving each testimonial a unique personality. On medium screens and above, cards alternate their indent direction (left-indented on even indices, right-indented on odd indices) to create a conversational, staggered layout rather than a monotonous left-aligned stack.
Where It’s Used
Familiar is used on the Testimonials section of the portfolio, rendering one card per endorsement. The list of familiars is mapped from a data array, with the index used to determine the alternating indent class applied at the md breakpoint.
Props
Determines which animal illustration is rendered. Each value produces a visually distinct SVG or CSS-composed creature:
| Value | Animal | Personality |
|---|---|---|
cat | Black cat | Sleek, discerning |
raven | Raven | Wise, perceptive |
owl | Owl | Scholarly, precise |
toad | Toad | Earthy, dependable |
bat | Bat | Swift, nocturnal |
The testimonial quote text attributed to this familiar. Displayed as the primary body text of the card. Should be written in first person and can adopt a whimsical, in-character voice to match the aesthetic.
The name of the person giving the testimonial, displayed below the quote. On the testimonials page this is the real name of the colleague or collaborator (or a playful pseudonym in keeping with the theme).
The job title or role of the testimonial author, displayed beneath the author name. Provides professional credibility alongside the thematic presentation.
Usage
Behavior Details
Animal Illustrations
Eachtype value renders a unique SVG drawn with paths, shapes, or a combination of SVG primitives and CSS. The illustrations are monochromatic or use a limited palette that complements the app’s dark background. Key visual traits per type:
cat— angular silhouette, prominent ears, narrow eyes.raven— sleek feathered body, pointed beak, wide wings partially folded.owl— round head with large circular eye rings, symmetrical wing spread.toad— squat rounded form, textured skin suggestion, wide mouth.bat— extended membrane wings, small body, inverted hanging pose or mid-flight.
Alternating Indent Layout
The indent is applied outside theFamiliar component — in the parent’s mapping loop — using Tailwind’s responsive prefix:
| Index parity | Class applied | Effect |
|---|---|---|
Even (0, 2, 4…) | md:pl-24 | Card indented from the left on medium+ screens |
Odd (1, 3, 5…) | md:pr-24 | Card indented from the right on medium+ screens |
md breakpoint), both classes have no effect and all cards render full-width.
Card Layout
InsideFamiliar, the layout arranges:
- Animal illustration — rendered on one side (or above on mobile).
- Quote — the largest text element, set in a serif or italic display style.
- Author name — smaller, below the quote.
- Role — smallest, muted color, below the author name.
- Even Index (Left Indent)
- Odd Index (Right Indent)
Customization Tips
New Animal Types
The
type prop is a closed union — to add a new animal (e.g. 'fox'), you must add a new SVG illustration case inside Familiar.js alongside the updated TypeScript type definition.Quote Length
Keep quotes between 10 and 30 words for best visual balance within the card. Very short quotes look sparse; very long quotes may push the card height beyond its peers.
Indent Responsibility
The
md:pl-24 / md:pr-24 classes are applied by the parent, not Familiar itself. If you embed Familiar in a different layout, manage indentation externally.Mobile Layout
On small screens the staggered indent disappears. Verify that the card reads well in a full-width stacked column before adjusting the illustration-to-text layout ratio.
Familiar is a purely presentational component with no internal state, event handlers, or side effects. All data — type, quote, author, and role — is passed in from the parent’s data array.