Skip to main content

One UI 7 Five-Component Alpha

viewcompose-oneui7 is ViewCompose's first public non-Material design-system artifact. It provides static light and dark token snapshots plus an intentionally bounded Button, Surface/Card, Switch, TextField, and text-only NavigationBar component set inspired by Samsung's public One UI 7 design guidance.

This is an independent ViewCompose implementation. Samsung does not publish, sponsor, or endorse this artifact, and the values exposed here are ViewCompose interpretations rather than Samsung internal design tokens. It is not a complete One UI component library.

Artifact and stability

dependencies {
implementation("com.viewcompose:viewcompose-oneui7:0.1.0-alpha01")
}
  • Stability: Alpha.
  • Platform: Android library, minSdk 24, compileSdk 36, and Java 11 bytecode.
  • API dependency: viewcompose-ui-foundation, supplied transitively.
  • Runtime dependencies: viewcompose-animation and viewcompose-gesture, resolved transitively; their types are not exposed by the One UI 7 public signatures.
  • Material dependency: none.
  • Reference: One UI 7 and Samsung Developer One UI guidance, pinned and reviewed on 2026-08-09.
  • Public component-set identity: one-ui-7-five-component-alpha.

The reference baseline is Samsung's public One UI 7 design story and One UI component guidance. Navigation follows the public bottom-navigation guidance for text-only destinations. These links define the visual reference, not a promise that all One UI components or Samsung-private values are reproduced.

Public-guidance audit

The 2026-08-09 audit separates published numeric guidance from visual interpretation:

AreaSamsung public evidenceViewCompose result
Contained Button shapeThe published Button drawable uses an 18dp radiusMedium Button and field shape token is 18dp; the 48dp target contains a 36dp visual Button
Button emphasisFlat, gray contained, and colored contained treatmentsFlat, Neutral, and Primary variants map to low, medium, and high emphasis
Primary Button color#0072DE in Light and #3E91FF in DarkStatic primary action roles use those values
Activated control color#3E91FF in Light and DarkSwitch checked track resolves through stateColors.controlActivated
Switch geometryNo complete public numeric geometryThe overrideable interpretation uses a 44dp by 24dp track, 18dp thumb, 3dp inset, and separate 48dp effective target
Horizontal screen marginAt least 24dpThe verification fixture uses 24dp; layout remains an application responsibility
Bottom navigationText only, normally fewer than four and at most five; no swipe switchingThe selected item uses text plus an underline, without a Material-style pill
SnackbarShort feedback with an optional action on the rightSupplied by the explicit One UI Android overlay adapter with a full-height pill outline

Samsung does not publish exact public values for this alpha's Surface/Card padding, Switch bounds, TextField padding, complete typography scale, or One UI 7 overlay chrome. Those remain ViewCompose-owned interpretation values and require screenshot acceptance; they are not presented as Samsung tokens.

Component geometry now resolves from the provided snapshot. Copying and overriding tokens.controls.button, tokens.controls.textField, tokens.controls.navigationBar, tokens.controls.switch, tokens.shapes.medium, or tokens.stateColors.controlActivated changes the corresponding emitted component instead of being shadowed by private hard-coded values.

Minimal setup

Install one complete immutable snapshot at the root of the content that uses these components:

fun UiTreeBuilder.oneUi7MinimalSample() {
OneUi7Theme(tokens = OneUi7ThemeDefaults.light()) {
OneUi7Button(text = "Continue", onClick = {})
}
}

Use OneUi7ThemeDefaults.dark() for the deterministic dark snapshot. Callers may copy either UiThemeTokens value and replace semantic roles before providing it. To switch between design systems, replace the root content/session with a new provider snapshot; do not mutate an active snapshot in place. The neutral viewcompose-android host installs no design system, so applications depend on this artifact and install OneUi7Theme explicitly without an implicit Material Context.

Interaction feedback is defined by the snapshot's UiInteractionTokens and each One UI recipe's semantic content role. The adapter does not use a parallel UiColors.ripple slot; applications customize pressed, focused, and hovered policy by replacing tokens.interactions.

The complete compiled example exercises all five component families with caller-owned state in OneUi7Samples.kt.

Public component set

Entry pointImplementation boundaryAlpha conformance
OneUi7ButtonShared BasicButton with One UI 7 alpha recipe valuesEquivalent
OneUi7SurfaceShared BasicSurface with owned surface recipeEquivalent
OneUi7SwitchDesign-system-owned renderer-neutral compositeEquivalent
OneUi7TextFieldOwned decoration around the native Android editing coreEquivalent
OneUi7NavigationBarDesign-system-owned text-only destination compositeEquivalent

OneUi7ThemeDefaults, OneUi7Theme, OneUi7ButtonVariant, OneUi7NavigationItem, and OneUi7Reference complete the public setup and diagnostic surface. The generated reference is available in the viewcompose-oneui7 API tree.

OneUi7Theme also provides the shared UiDesignSystemAttribution snapshot. Diagnostics report the static viewcompose-oneui7/static token producer plus recipe identity, neutral backend, Equivalent conformance, and capability path for all five families. This metadata is evidence only; the snapshot reports FrameworkDefault until an application applies an explicit override. The private typed recipes remain separate and no One UI policy enters UI Foundation or Renderer.

Behavior and fallback contract

  • Button and Switch expose at least a 48dp effective target. Navigation destinations expose a 52dp target inside a 68dp bar.
  • The default Switch keeps a compact 24dp visible track inside that 48dp target. Track, thumb, inset, and label spacing remain interpreted, overrideable sizing tokens rather than claimed Samsung numeric tokens.
  • Switch and NavigationBar state is caller-owned. Their callbacks request replacement state and do not mutate caller data. Switch supports whole-row click plus bounded follow-finger drag with position/velocity settling, cancellation rollback, and mirrored physical travel in RTL. Release settlement continues from the last visible drag position rather than restarting at an endpoint.
  • TextField preserves ViewCompose's native Android editing core for IME, selection, composition, autofill, accessibility, and saved-state behavior.
  • RTL reverses visual destination order without changing caller indices or keys.
  • NavigationBar exposes one single-selection accessibility row and each destination's logical column. Android can therefore announce collection positions without a One UI renderer branch; the logical positions remain stable when RTL reverses physical placement.
  • Backdrop blur is not part of this alpha public API. A product requiring that decoration must use an opaque or translucent tinted Surface fallback; no content, input, or semantics may depend on blur availability.
  • Shape morph is not part of this component set. Framework shape-transition contracts may choose a discrete or static endpoint when shapes are incompatible.

The module owns token and component policy only. It does not install Android window behavior, system-bar policy, a renderer branch, or a mutable global registry. The optional viewcompose-overlay-oneui7-android artifact owns One UI Snackbar and modal-bottom-sheet presenters. Default theme attribution keeps those optional capabilities Unsupported. An explicitly installed adapter supplies a root-owned attribution list that upgrades its presenters plus neutral Android Dialog/Popup transport and degraded Android Toast fallback; neither path reports or selects a Material fallback.

Verification and limitations

Unit and gesture-contract tests protect light/dark snapshots, component structure, validation, real-touch click dispatch, controlled drag bounds/settling/cancellation, release continuity, and callback behavior. The demo Settings entry Verify One UI 7 five-component alpha exercises Light/LTR/1.0 and Dark/RTL/1.3 configurations and exports deterministic screenshots with token source, component-set identity, and conformance labels. API 35 emulator evidence covers state changes, disabled behavior, native text editing, RTL ordering, and screenshot anchors.

Pixel and physical Samsung screenshot acceptance remains a release-owner gate. The alpha version must not be described as pixel-identical across Android API levels or OEM builds, as full One UI support, or as a replacement for Samsung platform components outside the five entries above.