Skip to content

Latest commit

 

History

History
145 lines (124 loc) · 7.87 KB

File metadata and controls

145 lines (124 loc) · 7.87 KB
version alpha
name Sink
description Semantic design tokens and component guidance for the Sink interface.
colors
card card-foreground popover popover-foreground primary primary-foreground secondary secondary-foreground muted muted-foreground accent accent-foreground success success-foreground destructive border input ring chart-1 chart-2 chart-3 chart-4 chart-5 sidebar sidebar-foreground sidebar-primary sidebar-primary-foreground sidebar-accent sidebar-accent-foreground sidebar-border sidebar-ring background foreground dark-background dark-foreground dark-card dark-card-foreground dark-popover dark-popover-foreground dark-primary dark-primary-foreground dark-secondary dark-secondary-foreground dark-muted dark-muted-foreground dark-accent dark-accent-foreground dark-success dark-success-foreground dark-destructive dark-border dark-input dark-ring dark-chart-1 dark-chart-2 dark-chart-3 dark-chart-4 dark-chart-5 dark-sidebar dark-sidebar-foreground dark-sidebar-primary dark-sidebar-primary-foreground dark-sidebar-accent dark-sidebar-accent-foreground dark-sidebar-border dark-sidebar-ring
oklch(1 0 0)
oklch(0.141 0.005 285.823)
oklch(1 0 0)
oklch(0.141 0.005 285.823)
oklch(0.21 0.006 285.885)
oklch(0.985 0 0)
oklch(0.967 0.001 286.375)
oklch(0.21 0.006 285.885)
oklch(0.967 0.001 286.375)
oklch(0.552 0.016 285.938)
oklch(0.967 0.001 286.375)
oklch(0.21 0.006 285.885)
oklch(0.55 0.16 145)
oklch(0.985 0 0)
oklch(0.577 0.245 27.325)
oklch(0.92 0.004 286.32)
oklch(0.92 0.004 286.32)
oklch(0.705 0.015 286.067)
oklch(0.871 0.15 154.449)
oklch(0.723 0.219 149.579)
oklch(0.627 0.194 149.214)
oklch(0.527 0.154 150.069)
oklch(0.448 0.119 151.328)
oklch(0.985 0 0)
oklch(0.141 0.005 285.823)
oklch(0.21 0.006 285.885)
oklch(0.985 0 0)
oklch(0.967 0.001 286.375)
oklch(0.21 0.006 285.885)
oklch(0.92 0.004 286.32)
oklch(0.705 0.015 286.067)
oklch(1 0 0)
oklch(0.141 0.005 285.823)
oklch(0.141 0.005 285.823)
oklch(0.985 0 0)
oklch(0.21 0.006 285.885)
oklch(0.985 0 0)
oklch(0.21 0.006 285.885)
oklch(0.985 0 0)
oklch(0.92 0.004 286.32)
oklch(0.21 0.006 285.885)
oklch(0.274 0.006 286.033)
oklch(0.985 0 0)
oklch(0.274 0.006 286.033)
oklch(0.705 0.015 286.067)
oklch(0.274 0.006 286.033)
oklch(0.985 0 0)
oklch(0.72 0.17 145)
oklch(0.18 0.04 145)
oklch(0.704 0.191 22.216)
oklch(1 0 0 / 10%)
oklch(1 0 0 / 15%)
oklch(0.552 0.016 285.938)
oklch(0.871 0.15 154.449)
oklch(0.723 0.219 149.579)
oklch(0.627 0.194 149.214)
oklch(0.527 0.154 150.069)
oklch(0.448 0.119 151.328)
oklch(0.21 0.006 285.885)
oklch(0.985 0 0)
oklch(0.488 0.243 264.376)
oklch(0.985 0 0)
oklch(0.274 0.006 286.033)
oklch(0.985 0 0)
oklch(1 0 0 / 10%)
oklch(0.552 0.016 285.938)
typography
sans heading
fontFamily
IBM Plex Sans, sans-serif
fontFamily
IBM Plex Sans, sans-serif
rounded
base lg
0.625rem
0.625rem
components
button-default button-secondary card popover sidebar
backgroundColor textColor
{colors.primary}
{colors.primary-foreground}
backgroundColor textColor
{colors.secondary}
{colors.secondary-foreground}
backgroundColor textColor
{colors.card}
{colors.card-foreground}
backgroundColor textColor
{colors.popover}
{colors.popover-foreground}
backgroundColor textColor
{colors.sidebar}
{colors.sidebar-foreground}

Overview

This file is a derived summary for design-aware agents. If it conflicts with app/assets/css/tailwind.css or a component under app/components/ui/**, the CSS and UI component implementation are authoritative.

Colors

The unprefixed tokens reproduce the semantic roles in :root; dark-* tokens flatten the corresponding .dark values. Always use roles as intended and keep each background paired with its foreground. The green chart-1 through chart-5 sequence is for charts only. Use success for positive status and completion indicators, ring for focus emphasis, and destructive for destructive or invalid states, including their dark-mode counterparts.

Typography

Use IBM Plex Sans for interface text. heading is an alias of the same family, not a separate display face. Components choose font size, weight, and line height with local utilities; this file does not define a global type scale.

Layout

The repository does not define a global grid, container, breakpoint, or spacing scale. Follow adjacent implementations when composing screens. Sidebar widths and responsive behavior belong to the sidebar component and are not global layout tokens.

Elevation & Depth

Base surfaces establish depth with semantic backgrounds, borders, and rings. Dialogs and floating content use overlays, rings, and shadows where their implementations specify them. Shadows are component implementation details, not global elevation tokens.

Shapes

The base radius is 0.625rem. Derived CSS radii are sm = calc(var(--radius) - 4px), md = calc(var(--radius) - 2px), lg = var(--radius), and xl = calc(var(--radius) + 4px). Utilities such as rounded-2xl and rounded-4xl are local component choices, not global design tokens.

Generous component radii coexist with compact density; a larger radius does not imply a larger control.

Components

  • Buttons provide default, outline, secondary, ghost, destructive, and link variants, multiple text and icon sizes, focus/invalid rings, active movement, and disabled treatment.
  • Inputs and select triggers use input surfaces and borders with placeholder, hover where implemented, focus, invalid, and disabled states; select content uses popover colors and floating-content treatment.
  • Cards pair card background and foreground colors, use a subtle ring, and provide default and small density variants. Use small density for repeated dashboard collections and default density for standalone sections, forms, and empty states.
  • Standard dialogs use popover colors, an overlay, open/closed motion, and a subtle ring. The scrollable dialog variant instead uses the background role, a border, and a local shadow; other floating content follows its own implementation.
  • Tabs provide default filled and line variants with active, hover, focus, disabled, horizontal, and vertical states. When a horizontal list does not fit, scrolling belongs to an outer wrapper, focus-ring clearance is preserved, and the active trigger remains visible.
  • The sidebar uses its dedicated background, foreground, accent, border, and ring roles across responsive, collapsible, floating, and inset variants. Primary navigation uses the default shape while idle and a stronger pill treatment for both hover and active states. Secondary utilities are compact icon-only controls and rely on native collapsed behavior. Sidebar primary roles are defined but are not currently consumed by these components.

Components expose stable data-slot attributes for composition and styling. Reuse the existing UI components and their variants; do not hand-edit generated components under app/components/ui/**.

Interaction

  • Mobile keeps registry control sizes by default and uses larger official variants only when context needs a larger touch target.
  • Use menus for compact contextual action lists and popovers for richer anchored content.
  • When an overlay opens another, focus moves directly into the new surface and returns to the initiating control when the flow ends.

Do's and Don'ts

Do use semantic colors, preserve background/foreground pairings in both themes, reuse existing components, and keep hover, focus, active, invalid, expanded, and disabled states consistent with nearby implementations.

Don't invent tokens, promote generated utility choices to global tokens, or hand-edit app/components/ui/**.