Skip to content
Nitro Kitv2.0.0.alpha.4

Search gallery…

IntroductionGalleryAgent guideGalleryHuman guideGalleryColorsFoundations · ThemeTypographyFoundations · ThemeSpacing & sizingFoundations · ThemeEffectsFoundations · ThemeButtonComponents · ActionsButton groupComponents · ActionsButton toComponents · ActionsAppearance pickerComponents · FormsCheckboxComponents · FormsCheckbox groupComponents · FormsComboboxComponents · FormsControl groupComponents · FormsDropzoneComponents · FormsFieldComponents · FormsField groupComponents · FormsFieldsetComponents · FormsInputComponents · FormsLabelComponents · FormsRadio buttonComponents · FormsRadio button groupComponents · FormsRich text areaComponents · FormsSelectComponents · FormsSwitchComponents · FormsTextareaComponents · FormsCommand paletteComponents · OverlaysDialogComponents · OverlaysDropdownComponents · OverlaysSheetComponents · OverlaysTooltipComponents · OverlaysAlertComponents · FeedbackEmpty stateComponents · FeedbackToastComponents · FeedbackAccordionComponents · Data displayAvatarComponents · Data displayAvatar stackComponents · Data displayBadgeComponents · Data displayDetails tableComponents · Data displayIconComponents · Data displayProgressive imageComponents · Data displayStat gridComponents · Data displayTableComponents · Data displayTypesetComponents · Data displayPaginationComponents · NavigationPagination barComponents · NavigationTabsComponents · NavigationToolbarComponents · NavigationCardComponents · LayoutContainerComponents · LayoutFlexComponents · LayoutGridComponents · LayoutApplication navigationComponents · ApplicationApplication shellComponents · ApplicationAuthentication shellComponents · ApplicationDanger zoneComponents · ApplicationData sectionComponents · ApplicationForm sectionComponents · ApplicationPage headerComponents · ApplicationSettings layoutComponents · ApplicationSign inCompositions · Access & onboardingPassword resetCompositions · Access & onboardingEmail verificationCompositions · Access & onboardingInvitation acceptanceCompositions · Access & onboardingAccount creationCompositions · Access & onboardingAccount securityCompositions · Access & onboardingWorkspace onboardingCompositions · Access & onboardingBranched onboardingCompositions · Access & onboardingWorkspace dashboardCompositions · Workspace & organizationWorkspace settingsCompositions · Workspace & organizationWorkspace usersCompositions · Workspace & organizationTeam managementCompositions · Workspace & organizationAPI credentialsCompositions · Workspace & organizationOrganization overviewCompositions · Workspace & organizationOrganization settingsCompositions · Workspace & organizationTeam activityCompositions · Workspace & organizationTeam memberCompositions · Workspace & organizationSubscription billingCompositions · Billing & commerceCheckout and paymentCompositions · Billing & commerceCheckout resultsCompositions · Billing & commerceData resource overviewCompositions · Data & operationsData resource activityCompositions · Data & operationsData resource settingsCompositions · Data & operationsProduct resource lifecycleCompositions · Data & operationsAPI webhooksCompositions · Data & operationsIntegration managementCompositions · Data & operationsFile uploadsCompositions · Data & operationsActivity and audit logCompositions · Data & operationsChangelogCompositions · Product & supportHelp centerCompositions · Product & supportSystem status and errorsCompositions · Product & supportProduct landingCompositions · MarketingPublic pricingCompositions · MarketingProduct featuresCompositions · MarketingPublic contactCompositions · MarketingSidebar operations applicationCompositions · Complete applicationsTopbar media applicationCompositions · Complete applicationsHybrid account applicationCompositions · Complete applications

No destinations found.

  • Introduction
  • Agent guide
  • Human guide
  • Foundations
    • Colors
    • Typography
    • Spacing & sizing
    • Effects
  • Actions
    • Button
    • Button group
    • Button to
  • Forms
    • Appearance picker
    • Checkbox
    • Checkbox group
    • Combobox
    • Control group
    • Dropzone
    • Field
    • Field group
    • Fieldset
    • Input
    • Label
    • Radio button
    • Radio button group
    • Rich text area
    • Select
    • Switch
    • Textarea
  • Overlays
    • Command palette
    • Dialog
    • Dropdown
    • Sheet
    • Tooltip
  • Feedback
    • Alert
    • Empty state
    • Toast
  • Data display
    • Accordion
    • Avatar
    • Avatar stack
    • Badge
    • Details table
    • Icon
    • Progressive image
    • Stat grid
    • Table
    • Typeset
  • Navigation
    • Pagination
    • Pagination bar
    • Tabs
    • Toolbar
  • Layout
    • Card
    • Container
    • Flex
    • Grid
  • Application
    • Application navigation
    • Application shell
    • Authentication shell
    • Danger zone
    • Data section
    • Form section
    • Page header
    • Settings layout
  • Access & onboarding
    • Sign in
    • Password reset
    • Email verification
    • Invitation acceptance
    • Account creation
    • Account security
    • Workspace onboarding
    • Branched onboarding
  • Workspace & organization
    • Workspace dashboard
    • Workspace settings
    • Workspace users
    • Team management
    • API credentials
    • Organization overview
    • Organization settings
    • Team activity
    • Team member
  • Billing & commerce
    • Subscription billing
    • Checkout and payment
    • Checkout results
  • Data & operations
    • Data resource overview
    • Data resource activity
    • Data resource settings
    • Product resource lifecycle
    • API webhooks
    • Integration management
    • File uploads
    • Activity and audit log
  • Product & support
    • Changelog
    • Help center
    • System status and errors
  • Marketing
    • Product landing
    • Public pricing
    • Product features
    • Public contact
  • Complete applications
    • Sidebar operations application
    • Topbar media application
    • Hybrid account application

Typography

The type scale, weights, leading, and the four title roles every owned title samples.

Source
src/stylesheets/nitro_kit/tokens.css
API
var(--nk-text-{size}), var(--nk-font-weight-{weight}), var(--nk-leading-{leading}), and var(--nk-title-{role}-{size,weight})

Type scale

Six sizes cover every owned text decision.

Every text size

--nk-text-xs

The quick brown fox jumps over the lazy dog

--nk-text-sm

The quick brown fox jumps over the lazy dog

--nk-text-base

The quick brown fox jumps over the lazy dog

--nk-text-lg

The quick brown fox jumps over the lazy dog

--nk-text-xl

The quick brown fox jumps over the lazy dog

--nk-text-2xl

The quick brown fox jumps over the lazy dog

ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/typography_page.rb
TYPE_SIZES.each do |size|
  type_specimen(
    "The quick brown fox jumps over the lazy dog",
    token: "--nk-text-#{size}",
    style: "--gallery-type-size: var(--nk-text-#{size})"
  )
end

Weights and leading

Four weights and three leadings pair with the scale.

Every weight

--nk-font-weight-normal

Signals over ceremony

--nk-font-weight-medium

Signals over ceremony

--nk-font-weight-semibold

Signals over ceremony

--nk-font-weight-bold

Signals over ceremony

ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/typography_page.rb
WEIGHTS.each do |weight|
  type_specimen(
    "Signals over ceremony",
    token: "--nk-font-weight-#{weight}",
    style: "--gallery-type-weight: var(--nk-font-weight-#{weight})"
  )
end

Every leading

--nk-leading-tight

Lines set close read as one thought. Lines set open read as a list. The leading decides before the words do.

--nk-leading-normal

Lines set close read as one thought. Lines set open read as a list. The leading decides before the words do.

--nk-leading-relaxed

Lines set close read as one thought. Lines set open read as a list. The leading decides before the words do.

ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/typography_page.rb
LEADINGS.each do |leading|
  type_specimen(
    "Lines set close read as one thought. Lines set open read as a list. The leading decides before the words do.",
    token: "--nk-leading-#{leading}",
    style: "--gallery-type-leading: var(--nk-leading-#{leading})"
  )
end

Title roles

Every owned title and legend samples one of four roles, so the hierarchy is stated once and themeable.

Every title role

Page--nk-title-page-size

The one page heading

PageHeader
Section--nk-title-section-size

Full-width section headers

DataSection, SettingsSection, DangerZone
Surface--nk-title-surface-size

Panels and fieldsets

Card, Dialog, Sheet, EmptyState, Fieldset
Compact--nk-title-compact-size

Legends and status titles

Alert, Toast, CheckboxGroup, RadioButtonGroup, AppearancePicker
ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/typography_page.rb
TITLE_ROLES.each do |role, job, consumers|
  figure(data: { gallery: "title-specimen", gallery_title_role: role }) do
    figcaption do
      strong { role.to_s.capitalize }
      code { "--nk-title-#{role}-size" }
    end
    p(data: { gallery: "title-specimen-text" }) { job }
    small { consumers }
  end
end

A surface title in context

Quarterly invoices

The card title above samples the surface role.
Viewport640 px · sm
Rubytest/dummy/app/components/gallery/foundations/typography_page.rb
render NitroKit::Card.new(id: "gallery-typography-card") do |card|
  card.title("Quarterly invoices")
  card.body { plain "The card title above samples the surface role." }
end

System rules for coding agents

Instructions for coding agents, repeated on every component page so one fetched page has enough context. Humans can usually skip this section.

test/dummy/app/components/gallery/agent_rules.rb

View agent instructions
  • Nitro Kit 2.0 is a gem-owned, Phlex-only UI system for Rails. Render components directly: render NitroKit::Button.new("Save", variant: :primary).
  • Compose Nitro components inside application-owned Phlex classes. Public initializers and declared slots are the component API; private methods are not.
  • Public options are explicit keywords, and enumerated options are closed vocabularies. Invalid names or values raise ArgumentError; this component's accepted options are in the contract above.
  • Pass native attributes through their typed boundary: html: for HTML, aria: for ARIA, and data: for application data. class and style are forbidden, including inside html:.
  • Nitro owns NitroKit::Component::RESERVED_DATA_ATTRIBUTES: data-nk, data-slot, data-variant, data-size, data-nk-escape, data-enhanced, data-state, data-disabled, data-required, data-orientation, data-presentation, data-placement, data-layout, data-side, data-field-type, data-dir, data-gap, data-align, data-justify, data-wrap, data-cols, data-mode, data-key. Do not pass them through data:. data-action, data-controller are additive and compose with Nitro behavior.
  • If an integration truly requires a class, use desperately_need_a_class:. It requires a non-blank String and marks the exception with data-nk-escape="class".
  • Every root emits data-nk; owned parts emit component-qualified data-slot values such as field-control or card-title. Select on those attributes, never on classes.
  • Customize components with documented --nk-* custom properties in an application stylesheet. Variables beginning with --_nk-* are private component mechanics.
  • Use NitroKit::Flex and NitroKit::Grid for layout. Parents own external placement and available width; components own their intrinsic geometry.
  • Preserve native elements and accessibility semantics. State is exposed through native semantics and ARIA first, and through data-state when styling or behavior also needs it.