plinth_blocks library

Composed sections for Plinth UI — whole arrangements rather than the components they are made of.

A block is the thing a page is assembled from: a sign-in card, a navbar, a stat tile. Each one is a real widget with a real API, not a snippet to paste — Dart tree-shakes the ones an app does not use, so breadth here costs a binary nothing.

Every visible string is a parameter, with an English default so a block renders before anything has been translated. This package has no localisation of its own and does not depend on intl.

Re-exports plinth_components, so an app that builds pages from blocks and fills them with components needs one import.

Classes

AnimatedFractionallySizedBox
FractionallySizedBox doesn't animate its factor changes on its own — this wraps it in a TweenAnimationBuilder so the fill smoothly grows/shrinks when widthFactor changes, rather than snapping instantly.
PlinthAccentBar
A band of theme colour, full width.
PlinthAccordion
An expandable/collapsible list matching Mantine's Accordion.
PlinthAccordionItem
A single collapsible entry in a PlinthAccordion.
PlinthActionIcon
An icon-only button matching Mantine's ActionIcon: same variant/size/color resolution as PlinthButton, but square (or circular) with no label.
PlinthAddressCountry
A country a PlinthAddressForm will accept.
PlinthAddressForm
A postal address.
PlinthAffix
A fixed-position overlay matching Mantine's Affix, e.g. a "scroll to top" button that stays anchored to a screen corner regardless of scroll position.
PlinthAlert
A colored callout box matching Mantine's Alert: an icon, optional title, body content, and an optional dismiss button — all tinted by color via the active PlinthTheme.
PlinthAlphaSlider
Picks an opacity for a given colour, matching Mantine's AlphaSlider.
PlinthAnchor
Styled link text matching Mantine's Anchor: theme-colored, with an underline on hover (desktop/web) — matches conventional link affordance without needing a router integration, since this is just a styled tap target, not a navigation widget itself.
PlinthAngleSlider
A circular dial for choosing an angle, matching Mantine's AngleSlider.
PlinthAnnounce
Speaks a message that has no node to attach to.
PlinthAnnounceWhen
Speaks message once, at the moment when turns true.
PlinthAppShell
The page scaffold matching Mantine's AppShell: an optional header and footer spanning the full width, an optional navbar and aside down either side, and child filling what's left.
PlinthArticleCard
One article in a feed.
PlinthAspectRatio
Constrains child to a given width/height ratio, matching Mantine's AspectRatio — the common case is reserving space for an image or embed before it loads, so layout doesn't jump.
PlinthAsyncButton
A button that runs something slow and says so.
PlinthAuthCard
The card every authentication block is built in.
PlinthAuthScreen
A full-screen shell with an accent bar across the top and content centred under it.
PlinthAutocomplete
A text field with suggestions, matching Mantine's Autocomplete.
PlinthAvailabilityField
A text field that checks its value against something asynchronous and says what came back.
PlinthAvatar
A circular avatar matching Mantine's Avatar: shows imageUrl if provided, falls back to initials on a theme-colored background, and falls back further to a generic person icon if neither is set.
PlinthBackgroundImage
An image behind arbitrary content, matching Mantine's BackgroundImage.
PlinthBadge
A small pill-shaped label matching Mantine's Badge. Follows the same variant/size/color resolution as PlinthButton — colors and spacing come from the active PlinthTheme.
PlinthBannerBlock
A page-level message with something to do about it.
PlinthBlockquote
A blockquote matching Mantine's Blockquote: quoted text with a colored left border and an optional citation line.
PlinthBox
A Container-like primitive with Mantine-style spacing shorthand: instead of raw EdgeInsets, margin/padding accept PlinthSize keys that resolve through the active PlinthTheme, so spacing stays consistent with the rest of the design system.
PlinthBreadcrumbItem
A single crumb in a PlinthBreadcrumbs trail.
PlinthBreadcrumbs
A navigation trail matching Mantine's Breadcrumbs: a row of tappable crumbs separated by a divider character, with the final crumb (the current page) rendered as plain, non-interactive text.
PlinthBurger
An animated hamburger-menu toggle matching Mantine's Burger: three bars that morph into an X when opened, for driving a nav drawer or mobile menu.
PlinthButton
A themeable button matching Mantine's Button API shape: a variant controlling visual weight, a size from the shared PlinthSize scale, and a color that keys into the active PlinthTheme's palette.
PlinthButtonGroup
Joins a row of buttons (or action icons) into one visually connected group, matching Mantine's Button.Group: outer corners stay rounded, inner corners square off, and adjacent borders collapse into a single shared line instead of doubling up.
PlinthCard
A themed card matching Mantine's Card: a PlinthPaper with an established header/body/footer section convention.
PlinthCarousel
A slide carousel matching Mantine's Carousel: swipeable slides with optional arrows, dot indicators, and looping.
PlinthCarouselController
Drives a PlinthCarousel from outside it — a "next" button in a toolbar, a step that advances when a form is valid.
PlinthCascader
Column-by-column selection through a hierarchy, matching Mantine's Cascader.
PlinthCascaderOption
One option in a PlinthCascader.
PlinthCenter
Centers child within itself, matching Mantine's Center.
PlinthCharacterLimitField
A field that counts down to a limit it will not let you cross.
PlinthCheckbox
A themeable checkbox matching Mantine's Checkbox: a square box that fills with the active theme color when checked, plus an optional inline label.
PlinthChip
A selectable pill toggle matching Mantine's Chip: shows a checkmark and fills with the theme color when selected.
PlinthClock
A duration as a display number — a rest timer, a countdown, a lap time.
PlinthCloseButton
The dismiss affordance shared by anything closeable, matching Mantine's CloseButton.
PlinthCode
An inline code snippet matching Mantine's Code: monospace text on a subtle tinted background, for referencing identifiers, commands, or file names within a sentence.
PlinthCollapse
An animated height reveal, matching Mantine's Collapse.
PlinthColorInput
A text field holding a hex colour, with a preview swatch that opens a PlinthColorPicker. Matches Mantine's ColorInput.
PlinthColorPicker
A full colour picker — saturation/brightness area, hue, and optionally opacity — matching Mantine's ColorPicker.
PlinthColorSwatch
A selectable color square matching Mantine's ColorSwatch.
PlinthCombobox<T>
The option-list primitive behind a select-shaped control, matching Mantine's Combobox.
PlinthComboboxOption<T>
One option in a PlinthCombobox.
PlinthCommentData
One comment, and the replies under it.
PlinthCommentThread
A comment thread.
PlinthComparisonBlock
A feature matrix — plans across, features down.
PlinthComparisonRow
One row of a comparison: what is being compared, and the answer for each column.
PlinthConfirmButton
A destructive action that asks once, in place.
PlinthContactBlock
A "get in touch" form, with room for what surrounds it.
PlinthContainer
Constrains child to a maximum width and centers it, matching Mantine's Container — the standard "page content shouldn't get absurdly wide on a big monitor" wrapper.
PlinthContrastIssue
One pair of colours that does not clear its floor.
PlinthCopyButton
A button that copies value to the clipboard, matching Mantine's CopyButton, showing a transient checkmark for confirmDuration after a successful copy before reverting to the copy icon.
PlinthDataList
Key/value pairs in a definition-list layout, matching Mantine's DataList.
PlinthDataListItem
One label/value pair in a PlinthDataList.
PlinthDependentSelects<P, C>
A parent select and a child select whose options it determines.
PlinthDialog
A small floating panel anchored to a screen corner, matching Mantine's Dialog.
PlinthDisclosureController
A ChangeNotifier-based equivalent of Mantine's useDisclosure hook — tracks a single open/closed boolean and exposes imperative open() / close() / toggle() methods, so it can drive Modal, Drawer, Popover, or any other overlay's visibility.
PlinthDivider
A themed divider matching Mantine's Divider: a thin rule, optionally with a centered label (e.g. "OR" between two sign-in options).
PlinthDrawer
A slide-in side panel matching Mantine's Drawer: full-height (or full-width, for top/bottom) content anchored to a screen edge, dismissible via backdrop tap.
PlinthDrawerHost
Wraps child and automatically calls drawer.show whenever drawer's controller opens — the PlinthDrawer equivalent of PlinthModalHost.
PlinthDtcg
DTCG read and write.
PlinthDtcgResult
What came back from reading a DTCG document.
PlinthElevation
One step on the elevation scale, as geometry rather than as a colour.
PlinthEmptyState
The "nothing here" placeholder, matching Mantine's EmptyState.
PlinthErrorPageBlock
A whole-page apology: a status, a heading, an explanation, and a way out.
PlinthFaqBlock
A frequently-asked-questions section.
PlinthFaqItem
One question and its answer.
PlinthFeature
One thing the product does.
PlinthFeatureBlock
A "what it does" section.
PlinthFieldset
A bordered group of related fields with a legend, matching Mantine's Fieldset.
PlinthFileButton<T>
A button that opens your file picker, matching Mantine's FileButton.
PlinthFileInput<T>
A file-selection field matching Mantine's FileInput, sharing PlinthTextInput's label/description/error chrome.
PlinthFlex
A direction-configurable flex layout with a consistent gap between children, matching Mantine's Flex.
PlinthFloatingWindow
A draggable, resizable panel, matching Mantine's FloatingWindow.
PlinthFocusTrap
Keeps keyboard focus inside an overlay, and gives it back when the overlay goes away.
PlinthFooter
The bottom of a page.
PlinthFooterColumn
A titled column of links in a PlinthFooter.
PlinthGoal
One target and how far along it is.
PlinthGoalRings
A row of progress rings, one per target.
PlinthGrid
A responsive column grid matching Mantine's Grid.
PlinthGridCol
One column in a PlinthGrid, matching Mantine's Grid.Col.
PlinthGroup
Arranges children in a horizontal row with a consistent gap between them, matching Mantine's Group.
PlinthHeroBlock
The top of a landing page: a claim, a sentence, and something to do.
PlinthHighlight
Text with matching substrings marked, following Mantine's Highlight.
PlinthHoverCard
A hover-triggered anchored panel matching Mantine's HoverCard.
PlinthHueSlider
Picks a hue from the full colour wheel, matching Mantine's HueSlider.
PlinthImage
An image with a loading placeholder and an error fallback, matching Mantine's Image.
PlinthImageFallback
A placeholder for an image that is missing, not yet uploaded, or behind a login the app has not got through.
PlinthIndicator
A small notification dot/badge anchored to a corner of child, matching Mantine's Indicator — e.g. an unread-count badge on a notification bell icon.
PlinthJsonInput
A textarea that validates JSON, matching Mantine's JsonInput.
PlinthKanbanBoard
A drag-and-drop board.
PlinthKanbanColumn
One column of a PlinthKanbanBoard.
PlinthKbd
A styled keyboard-key badge matching Mantine's Kbd, e.g. for documenting a shortcut: "Press Ctrl + K to search."
PlinthLeaderboard
A ranked list with a bar behind each row.
PlinthLeaderboardRow
One ranked row.
PlinthList
A bulleted, numbered, or custom-icon list matching Mantine's List. Each item can override its own marker via PlinthListItem.icon — e.g. a checklist mixing checkmarks and crosses.
PlinthListItem
One entry in a PlinthList.
PlinthLiveRegion
Marks child as the message a screen reader should visit when message changes, without the user having moved focus.
PlinthLoader
A standalone loading indicator matching Mantine's Loader.
PlinthLoadingOverlay
A full-container loading overlay matching Mantine's LoadingOverlay: dims child and shows a centered spinner on top when visible is true, blocking interaction with the content beneath.
PlinthLocalizations
Reaches the PlinthStrings in scope.
PlinthLogoStrip
A row of customer names under a label.
PlinthLtr
Pins child to left-to-right inside a right-to-left page.
PlinthMark
Highlighted inline text matching Mantine's Mark, e.g. for highlighting search-match terms within a larger block of text.
PlinthMarquee
Content that scrolls past continuously, matching Mantine's Marquee.
PlinthMaskInput
A text field that formats as you type, matching Mantine's MaskInput.
PlinthMember
One person in a PlinthMemberList.
PlinthMemberList
The people on a team, with the ones who did not fit summarised.
PlinthMenu
A dropdown menu matching Mantine's Menu: a list of tappable items shown in an anchored floating panel.
PlinthMenubar
A horizontal bar of menus, desktop-style, matching Mantine's Menubar.
PlinthMenubarMenu
One top-level menu in a PlinthMenubar.
PlinthMenuItem
A single entry in a PlinthMenu. Pass divider: true for a plain separator line instead of a tappable item (in which case label/ onTap are ignored).
PlinthModal
An overlay dialog matching Mantine's Modal: centered content on a dismissible backdrop, with an optional title bar and close button.
PlinthModalHost
Wraps child and automatically calls modal.show whenever modal's controller opens, so you can declare the modal once and forget about wiring listeners manually.
PlinthMultiSelect<T>
A multi-value select matching Mantine's MultiSelect: chosen values render as removable pills inside the field; tapping the field opens a dropdown of the remaining options.
PlinthMultiSelectOption<T>
A single option for PlinthMultiSelect.
PlinthNavItem
One destination in a PlinthSidebar.
A sidebar-style navigation item matching Mantine's NavLink: icon, label, active-state highlighting, and optional trailing content (e.g. a badge showing an unread count).
PlinthNavSection
A titled group of destinations.
PlinthNotification
A toast-style notification matching Mantine's Notification.
PlinthNumberFormatter
Formatted number display, matching Mantine's NumberFormatter.
PlinthNumberInput
A numeric input matching Mantine's NumberInput: a text field restricted to numbers, with increment/decrement buttons, sharing PlinthTextInput's label/description/error chrome and focus/error border styling.
PlinthOfflineNotice
"You are offline" — as a notice the page keeps working around, rather than a page that replaces itself.
PlinthOverflowList
Shows as many children as fit on one line and collapses the rest into a +N marker, matching Mantine's OverflowList.
PlinthOverlay
A generic dimming backdrop matching Mantine's Overlay: a semi-opaque layer over whatever it wraps, with optional centered content of your own.
PlinthPage
PlinthPageHeader
The top of a page: what this is, and what you can do to it.
PlinthPagination
Page-number navigation matching Mantine's Pagination.
PlinthPaper
A themed surface container matching Mantine's Paper: a white (or custom) background with optional shadow, border, radius, and padding. The foundation PlinthCard builds on — reach for Paper directly when you just need a surface, and Card when you want its header/footer section conventions too.
PlinthPasswordInput
A password field matching Mantine's PasswordInput: shares PlinthTextInput's label/description/error chrome, with a show/hide visibility toggle instead of a plain obscureText flag.
PlinthPasswordResetBlock
A "send me a reset link" card.
PlinthPasswordRule
One requirement a password has to meet.
PlinthPasswordStrength
A strength meter and the checklist behind it.
PlinthPhotoHeader
PlinthPill
A removable value chip, matching Mantine's Pill.
PlinthPillsInput
A field that holds PlinthPills, matching Mantine's PillsInput.
PlinthPinInput
A segmented code/PIN input matching Mantine's PinInput: one box per character, auto-advancing focus as each digit is typed and auto-retreating on backspace from an empty box.
PlinthPopover
An anchored floating panel matching Mantine's Popover: content appears positioned relative to target when controller opens, dismissible by tapping outside.
PlinthPortal
Renders child into the ambient Overlay rather than in its normal place in the tree, matching Mantine's Portal.
PlinthPricingCard
One plan on a pricing page.
PlinthProfileCard
A card about one person.
PlinthProgress
A themeable linear progress bar matching Mantine's Progress: a track filled proportionally to value, animated on change.
PlinthProgressSection
One part of a multi-section PlinthProgress or PlinthRingProgress, matching Mantine's Progress.Section.
PlinthRadio<T>
A single themeable radio button, matching Mantine's Radio. Used standalone or, typically, inside a PlinthRadioGroup which wires up the shared selected value and change callback for you.
PlinthRadioGroup<T>
Renders a labeled, vertically-stacked set of PlinthRadios sharing one selected value — the equivalent of Mantine's Radio.Group. Handles wiring groupValue/onChanged to each option so you don't repeat that per radio.
PlinthRadioOption<T>
A single selectable option for PlinthRadioGroup.
PlinthRangeSlider
A dual-thumb range slider matching Mantine's RangeSlider.
PlinthRating
A star rating selector matching Mantine's Rating.
PlinthRepeatableFields
Rows that can be added and removed, with the announcements that makes necessary.
PlinthRingProgress
A circular progress indicator matching Mantine's RingProgress. Companion to PlinthProgress (linear) — reach for this when the available space is better suited to a ring, e.g. a compact dashboard stat card.
PlinthRollingNumber
Digits that roll to their new value on change, matching Mantine's RollingNumber.
PlinthSchemeDisagreement
One field where a ColorScheme and a PlinthTheme disagree about what colour something is.
PlinthScrollArea
A scrollable region with a themed, draggable scrollbar rendered alongside the content, matching Mantine's ScrollArea.
PlinthScroller
A back-to-top affordance that appears once there is something to go back to, matching Mantine's Scroller helpers around ScrollArea.
PlinthSecretField
A value the server issued and you need to get back out intact — an API key, a webhook secret, a recovery code.
PlinthSegmentedControl<T>
A pill-shaped single-select toggle group matching Mantine's SegmentedControl: options laid out in a row inside a rounded track, with the active option's segment filled.
PlinthSegmentedControlItem<T>
A single option in a PlinthSegmentedControl.
PlinthSelect<T>
A themeable dropdown select matching Mantine's Select: shares PlinthTextInput's label/description/error chrome, but renders a tappable field that opens a menu instead of a text field.
PlinthSelectOption<T>
A single option for PlinthSelect.
PlinthSemanticColor
A colour named by the role it plays, rather than by its hue.
PlinthSemiCircleProgress
A half-ring gauge, matching Mantine's SemiCircleProgress.
PlinthSeriesColor
One entry in a categorical sequence: a ramp, and the shade to take from it.
PlinthSidebar
A vertical navigation rail.
PlinthSignInBlock
A sign-in card: email, password, remember-me, and a way in.
PlinthSignUpBlock
A registration card: name, email, password, terms, and a way in.
PlinthSimpleGrid
Arranges children into a grid with a fixed number of columns per row and consistent spacing, matching Mantine's SimpleGrid.
PlinthSkeleton
A loading placeholder matching Mantine's Skeleton: a gray block that pulses gently to signal "content is loading here."
PlinthSlider
A themeable slider matching Mantine's Slider.
PlinthSliderMark
A named position on a PlinthSlider or PlinthRangeSlider track, matching Mantine's marks.
PlinthSpace
A fixed-size spacer keyed by PlinthSize and resolved through theme.spacing, matching Mantine's Space — for the common case of "I need a themed gap here" without reaching for a raw SizedBox with a magic-number pixel value.
PlinthSpacing
The spacing scale as compile-time constants.
PlinthSplitAuthBlock
A two-pane authentication layout: brand on one side, form on the other.
PlinthSplitter
Two resizable panes with a draggable divider, matching Mantine's Splitter.
PlinthSpoiler
A "show more/less" collapsible content wrapper matching Mantine's Spoiler: clips child to maxHeight when collapsed, with a toggle control to expand/collapse.
PlinthStack
A vertical layout with a consistent gap, matching Mantine's Stack.
PlinthStat
One number and what it counts.
PlinthStatGrid
A row of PlinthStatTiles that becomes a column when narrow.
PlinthStatStrip
A row of numbers under a claim.
PlinthStatTile
One figure on a dashboard.
PlinthStep
A single step in a PlinthStepper.
PlinthStepper
A numbered step progress indicator matching Mantine's Stepper.
PlinthStickyHeader
A header that stays put while what is under it scrolls.
PlinthStrings
Every string the library falls back on, as fields.
PlinthSupportChannel
One way to reach you.
PlinthSupportChannels
Ways to reach you, as a grid of routes.
PlinthSwitch
A themeable toggle switch matching Mantine's Switch: a pill-shaped track that fills with the active theme color when on, with an animated thumb and an optional inline label.
PlinthTabItem<T>
A single tab for PlinthTabs.
PlinthTable
A themeable data table matching Mantine's Table.
PlinthTableOfContents
A jump list built from a page's headings, matching Mantine's TableOfContents.
PlinthTabs<T>
A themeable tab bar matching Mantine's Tabs: an underline indicator on the active tab, theme-driven color and sizing.
PlinthTabView<T>
Switches between children based on value, with a fade transition. Pairs with PlinthTabs — pass the same value/type parameter to both.
PlinthTagsInput
Free-text entry that turns what you type into removable chips, matching Mantine's TagsInput.
PlinthTapTarget
Gives child at least the theme's PlinthDensity.minTapTarget in both directions, without changing how it looks.
PlinthText
A text primitive that resolves its size from the active PlinthTheme's font-size scale (like Text + Mantine's Text component's size prop), instead of a raw fontSize double.
PlinthTextarea
A multi-line text field matching Mantine's Textarea. Shares PlinthTextInput's label/description/error chrome and focus/error border styling.
PlinthTextInput
A themeable text field matching Mantine's TextInput: a label, optional description/error text, and border styling that reacts to focus and error state — all resolved through the active PlinthTheme, following the same size/color pattern as PlinthButton.
PlinthTheme
The design-token layer for Plinth. Every Plinth widget reads its colors, spacing, radius, and font sizes from an instance of this class rather than hardcoding values, so a single theme swap restyles the whole app.
PlinthThemeIcon
A colored icon container matching Mantine's ThemeIcon: wraps an icon in a themed background circle/square, for use as a leading visual in list items, feature cards, etc.
PlinthTimeline
A vertical event timeline matching Mantine's Timeline: dot markers connected by a line, with a title/description per event.
PlinthTimelineItem
A single event in a PlinthTimeline.
PlinthTitle
A semantic heading matching Mantine's Title.
PlinthTocItem
One heading in a PlinthTableOfContents.
PlinthToken
One token: where it lives, what tier it is, and what it holds.
PlinthTooltip
A themed tooltip matching Mantine's Tooltip: dark background, theme-driven radius and font size, shown on hover (desktop/web) or long-press (touch).
PlinthTopBar
A horizontal application bar: brand on the left, actions on the right, and whatever belongs between them.
PlinthTopBarBrand
A logo and a product name, as a PlinthTopBar.brand.
PlinthTree
Hierarchical navigation with expandable branches, matching Mantine's Tree.
PlinthTreeNode
One node in a PlinthTree.
PlinthTreeSelect
A select whose options are a hierarchy, matching Mantine's TreeSelect.
PlinthTwoFactorBlock
The second-factor step: enter the code, verify, or ask for another.
PlinthUnstyledButton
A bare tap target with no visual chrome — no color, border, padding, or ripple by default — matching Mantine's UnstyledButton. The building block for fully custom-styled clickable elements (custom cards, avatars-as-buttons, nav items with bespoke layouts) where PlinthButton's built-in variant/color/size resolution would fight the custom look rather than help it.
PlinthUserTile
A person: their face, their name, and one line about them.
PlinthVisuallyHidden
Renders child so screen readers announce it while sighted users never see it, matching Mantine's VisuallyHidden.
RenderOverflowList
Lays PlinthOverflowList out and paints its +N marker.

Enums

PlinthAnchorUnderline
When a PlinthAnchor shows its underline.
PlinthArticleLayout
How a PlinthArticleCard arranges itself.
PlinthAvailability
What the field currently knows.
PlinthBannerLayout
How a PlinthBannerBlock is arranged.
PlinthContainerSize
PlinthContrast
The contrast floor a colour has to clear, by what it is being used for. WCAG 2.x gives three, and picking between them is a decision about the content — not something a caller should have to remember as a bare number.
PlinthCurve
Easing, as roles rather than curves.
PlinthDataListOrientation
How a PlinthDataList arranges each label against its value.
PlinthDensity
How much room interactive controls are given, as a minimum tap target.
PlinthDialogPosition
Where a PlinthDialog sits on screen.
PlinthDrawerPosition
Which screen edge a PlinthDrawer slides in from.
PlinthFaqLayout
How a PlinthFaqBlock lays its questions out.
PlinthFeatureLayout
How a PlinthFeatureBlock arranges its features.
PlinthHeroLayout
How a PlinthHeroBlock arranges itself.
PlinthImageSource
Where a PlinthImage loads from, decided by its src.
PlinthIndicatorPosition
Which corner a PlinthIndicator's dot/badge is anchored to.
PlinthListType
PlinthLoaderType
The animation style a PlinthLoader uses, mirroring Mantine's Loader types.
PlinthPhotoHeaderAlign
Where the title sits over the photograph.
PlinthPopoverPosition
Which side of the target PlinthPopover's content appears on.
PlinthPresence
Whether somebody is around.
PlinthRole
The colour roles the component library itself needs, independent of which ramp answers them.
PlinthShadow
Elevation steps, from flat to a drawer over a page.
PlinthSize
The Plinth size scale, used across nearly every component (buttons, inputs, badges, etc.) so sizing stays consistent throughout an app.
PlinthTier
Which tier a token sits in.
PlinthTimelineAlign
Which side of a PlinthTimeline its rail of dots runs down.
PlinthTokenType
A token's type, named as the Design Tokens Community Group names it.
PlinthTooltipPosition
Which side of its target a PlinthTooltip prefers.
PlinthTrend
Which way a figure moved.
PlinthVariant
The Plinth visual variant scale, mirroring Mantine's approach: each component interprets these consistently so switching a component's "loudness" is a one-line change.
PlinthWeight
Font weights, as roles rather than numbers.

Extensions

PlinthMaterialBridge on PlinthTheme
Reconciling a PlinthTheme with Material's ThemeData.
PlinthStringsContext on BuildContext
Reads the strings the same way the tokens are read.
PlinthThemeContext on BuildContext
Convenience accessor: context.plinth.
PlinthThemeData on ThemeData
The same lookup for code that already holds a ThemeData.
PlinthThemeTokens on PlinthTheme
Enumerating a theme.
PlinthThemeValidation on PlinthTheme
Checks a theme's literal colours against the floors they claim.

Constants

kDarkBorder → const Color
3.01:1 against kDarkSurfaceSunken, for the same reason as kLightBorder. Was #373A40, which was 1.19:1 there.
kDarkBorderMuted → const Color
kDarkSurface → const Color
The same set for the dark theme, using Mantine's dark ramp.
kDarkSurfaceMuted → const Color
kDarkSurfaceSunken → const Color
kDarkText → const Color
kDarkTextDisabled → const Color
kDarkTextMuted → const Color
4.53:1 against kDarkSurfaceSunken. Was #909296, which was 4.36:1 — under the 4.5 floor by a margin small enough that nobody checking by eye would ever have caught it, which is the argument for checking by arithmetic.
kDefaultBorderWidths → const Map<PlinthSize, double>
Default border widths.
kDefaultBreakpoints → const Map<PlinthSize, double>
Minimum viewport width (logical pixels) at which each breakpoint applies, matching Mantine's defaults converted from em at a 16px root (36/48/62/75/88em).
kDefaultCurves → const Map<PlinthCurve, Curve>
Default easing, one per PlinthCurve.
kDefaultDurations → const Map<PlinthSize, Duration>
Default motion durations.
kDefaultElevations → const Map<PlinthShadow, PlinthElevation>
Default elevations, matching what PlinthPaper drew before this scale existed — so adopting it changes nothing on screen.
kDefaultFontSizes → const Map<PlinthSize, double>
Default font size scale (in logical pixels).
kDefaultFontWeights → const Map<PlinthWeight, FontWeight>
Default font weights, one per PlinthWeight.
kDefaultRadius → const Map<PlinthSize, double>
Default corner radius scale (in logical pixels).
kDefaultRoleRamps → const Map<PlinthRole, String>
Which ramp answers each of the component library's own roles.
kDefaultSeriesColors → const List<PlinthSeriesColor>
The default categorical sequence — chosen to survive colour-vision deficiency, not just to look well separated.
kDefaultSpacing → const Map<PlinthSize, double>
Default spacing scale (in logical pixels), matching Mantine's defaults.
kLightBorder → const Color
kLightBorderMuted → const Color
kLightSurface → const Color
Surface, text, and border colors for the light theme.
kLightSurfaceMuted → const Color
kLightSurfaceSunken → const Color
kLightText → const Color
kLightTextDisabled → const Color
kLightTextMuted → const Color
kSpaceUnit → const double
The base spacing unit. Every step on the spacing scale, and every ad-hoc gap a caller needs, should be a whole multiple of this.
kVividSeriesColors → const List<PlinthSeriesColor>
The hue-optimised sequence: maximum separation for normal colour vision only.

Typedefs

PlinthAddressValues = ({String city, String? country, String postcode, String street})
What a PlinthAddressForm reports.
PlinthColorShades = List<Color>
A shade ramp for a single color, indexed 0 (lightest) to 9 (darkest), matching Mantine's 10-shade convention.
PlinthContactValues = ({String email, String message, String name})
What a PlinthContactBlock hands back when it is sent.
PlinthRepeatableRowBuilder = Widget Function(BuildContext context, int index)
Builds the field for one row.
PlinthSignInValues = ({String email, String password, bool rememberMe})
What a PlinthSignInBlock hands back when it is submitted.
PlinthSignUpValues = ({bool acceptedTerms, String email, String name, String password})
What a PlinthSignUpBlock hands back when it is submitted.