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

Effects

Radius, elevation, motion, and the shared disabled treatment.

Source
src/stylesheets/nitro_kit/tokens.css
API
var(--nk-radius-{step}), var(--nk-shadow-{step}), var(--nk-duration-{speed}), var(--nk-ease)

Radius

Five sizes and a circle. Radii move together when a theme changes shape, and --nk-button-radius separates button shape when a pill treatment should not recolor inputs and surfaces.

Every radius step

Inline chips--nk-radius-xsTypeset code
Compact controls--nk-radius-smCheckbox
Data-entry controls and menus--nk-radius-mdInput, Select, Dropdown, Badge
Actions and surfaces--nk-radius-lgButton, Card, Alert, Toast
Modal surfaces--nk-radius-xlDialog, extra-large Button
Pills and circles--nk-radius-fullAvatar, Switch, RadioButton
ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/effects_page.rb
RADIUS_STEPS.each do |step, tier, consumers|
  figure(data: { gallery: "depth" }) do
    span(
      aria: { hidden: true },
      style: "--gallery-radius: var(--nk-radius-#{step})",
      data: { gallery: "radius-chip" }
    )
    figcaption do
      strong { tier }
      code { "--nk-radius-#{step}" }
      small { consumers }
    end
  end
end

Elevation

Four shadow steps form the depth ladder. Every surface sits on one rung.

Every shadow step

Raised controls--nk-shadow-xsButton
Resting surfaces--nk-shadow-smCard, Tooltip
Floating elements--nk-shadow-mdDropdown, Combobox, Toast
Modal surfaces--nk-shadow-lgDialog, CommandPalette, Sheet
ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/effects_page.rb
ELEVATION_STEPS.each do |step, tier, consumers|
  figure(data: { gallery: "depth" }) do
    span(
      aria: { hidden: true },
      style: "--gallery-shadow: var(--nk-shadow-#{step})",
      data: { gallery: "depth-chip" }
    )
    figcaption do
      strong { tier }
      code { "--nk-shadow-#{step}" }
      small { consumers }
    end
  end
end

Motion

Three durations and one deliberate easing curve, interruptible in both directions. Every transition stands down under prefers-reduced-motion, including these demos.

Every duration step

Micro feedback--nk-duration-fastAccordion chevron, tab highlight
Interactive state--nk-duration-normalControls, overlays, toasts
Large movement--nk-duration-slowSheet, app shell drawer
cubic-bezier(0.4, 0, 0.2, 1)
One curve, both directions--nk-easeEnter and exit stay reversible
ViewportFull width
Rubytest/dummy/app/components/gallery/foundations/effects_page.rb
DURATION_STEPS.each do |speed, tier, consumers|
  figure(data: { gallery: "depth" }) do
    span(aria: { hidden: true }, style: "--gallery-duration: var(--nk-duration-#{speed})", data: { gallery: "motion-chip" }) do
      span(data: { gallery: "motion-chip-handle" })
    end
    figcaption do
      strong { tier }
      code { "--nk-duration-#{speed}" }
      small { consumers }
    end
  end
end
figure(data: { gallery: "depth" }) do
  span(aria: { hidden: true }, data: { gallery: "motion-ease" }) { code { "cubic-bezier(0.4, 0, 0.2, 1)" } }
  figcaption do
    strong { "One curve, both directions" }
    code { "--nk-ease" }
    small { "Enter and exit stay reversible" }
  end
end

Disabled state

One opacity covers every disabled control.

Enabled and disabled

API
var(--nk-disabled-opacity)
Viewport640 px · sm
Rubytest/dummy/app/components/gallery/foundations/effects_page.rb
render NitroKit::Button.new("Save changes", id: "gallery-foundation-enabled")
render NitroKit::Button.new("Save changes", id: "gallery-foundation-disabled", disabled: true)

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.