Design language

Native platforms

How every component maps to SwiftUI and Jetpack Compose, and when to use Liquid Glass.

Component mapping

The same inventory, each platform's own controls.

Web, iOS and Android implementation of every component
ComponentWebiOS (SwiftUI)Android (Compose)
Stage timelinestage-timeline.tsxCustom SwiftUI view (never glass)Custom Compose Column + Canvas connectors
Wait estimate blockestimate-block.tsxSwiftUI VStack, numericMd monospaced digitsCompose Column with Text styles from the type scale
Test trackertest-tracker.tsxSwiftUI List rows with a custom stepperCompose LazyColumn rows with a custom stepper
Care-team rowcare-team-row.tsxSwiftUI LabeledContent rowCompose ListItem
Request tilerequest-tile.tsxSwiftUI LazyVGrid of buttonsCompose LazyVerticalGrid of Cards
Request rowrequest-row.tsxSwiftUI List rowCompose ListItem
Task cardtask-card.tsxSwiftUI card on a solid surfaceCompose OutlinedCard
Status pillstatus-pill.tsxSwiftUI capsule LabelCompose AssistChip styled from tokens
Badgebadge.tsxSwiftUI .badge()Compose Badge
Bannerbanner.tsxSwiftUI inline bannerCompose Surface strip
Code delay noticecode-notice.tsxSwiftUI alertCompose AlertDialog
Machine-translation badgemt-badge.tsxSwiftUI barCompose Surface bar
Live dotlive-dot.tsxSwiftUI Circle with phaseAnimatorCompose Canvas circle
Buttonbutton.tsxSwiftUI Button (.borderedProminent)Compose Button / FilledTonalButton
Icon buttonicon-button.tsxSwiftUI Button with Image(systemName:)Compose IconButton
Linktext-link.tsxSwiftUI LinkCompose TextButton
Toggle and button grouptoggle.tsxSwiftUI Toggle(.button)Compose FilterChip / SegmentedButton
Text fieldinput.tsxSwiftUI TextField in a FormCompose OutlinedTextField
Formform.tsxSwiftUI FormCompose Column of fields
Textareatextarea.tsx——
Selectselect.tsxSwiftUI Picker(.menu)Compose ExposedDropdownMenuBox
Comboboxcombobox.tsxSwiftUI searchable listCompose ExposedDropdownMenu with a text field
Native selectnative-select.tsxSystem wheelSystem spinner
Input groupinput-group.tsxTextField with an HStackOutlinedTextField with leading/trailing icons
Date of birthdob-input.tsxThree TextFields (.numberPad)Three OutlinedTextFields (number keyboard)
Visit-code inputvisit-code-input.tsxSwiftUI TextField with cellsCompose BasicTextField with cells
Date range pickerdate-range-picker.tsxSwiftUI DatePicker pairCompose DateRangePicker
Calendarcalendar.tsxSwiftUI DatePicker(.graphical)Compose DatePicker
Sliderslider.tsxSwiftUI SliderCompose Slider
Checkboxcheckbox.tsxSwiftUI Toggle(.checkbox) / customCompose Checkbox
Radio groupradio-group.tsxSwiftUI Picker(.inline)Compose RadioButton rows
Switchswitch.tsxSwiftUI ToggleCompose Switch
Segmented controlsegmented-control.tsxSwiftUI Picker(.segmented)Compose SingleChoiceSegmentedButtonRow
Language selectorlanguage-selector.tsxSwiftUI PickerCompose ListItem radio rows
Toastsonner.tsxCustom capsule above the tab barCustom capsule above the navigation bar
Empty statestates.tsxSwiftUI ContentUnavailableViewCompose Column
Error statestates.tsxSwiftUI ContentUnavailableViewCompose Column
Skeletonskeleton.tsxSwiftUI .redacted(reason: .placeholder)Compose placeholder shapes
Progress and spinnerprogress.tsxSwiftUI ProgressViewCompose LinearProgressIndicator
Alertalert.tsxSwiftUI GroupBoxCompose Card with an icon
Stepper and progress dotsstepper.tsxCustom SwiftUI HStackCustom Compose Row
Dialogdialog.tsxSwiftUI .sheet / .alertCompose AlertDialog
Alert dialogalert-dialog.tsxSwiftUI .confirmationDialogCompose AlertDialog
Sheetsheet.tsxSwiftUI .sheet with detentsCompose ModalBottomSheet
Drawerdrawer.tsxSwiftUI .presentationDetentsCompose ModalBottomSheet
Popoverpopover.tsxSwiftUI .popoverCompose Popup
Menudropdown-menu.tsxSwiftUI MenuCompose DropdownMenu
Context menucontext-menu.tsxSwiftUI .contextMenuLong-press DropdownMenu
Tooltiptooltip.tsxSwiftUI .helpCompose PlainTooltip
Hover cardhover-card.tsx——
Command palettecommand-palette.tsx——
Tabstabs.tsxSwiftUI Picker(.segmented) or TabViewCompose PrimaryTabRow
Breadcrumbbreadcrumb.tsx——
Paginationpagination.tsx——
Accordionaccordion.tsxSwiftUI DisclosureGroupCompose expandable rows
Data tabledata-table.tsxSwiftUI Table / ListCompose LazyColumn
Tabletable.tsxSwiftUI Grid—
Stat tilestat-tile.tsxSwiftUI GroupBoxCompose Card
Trend chartcharts.tsxSwift Charts LineMarkVico line chart
Bar chartcharts.tsxSwift Charts BarMarkVico column chart
Heatmapcharts.tsxSwift Charts RectangleMarkCompose grid
Benchmark barcharts.tsxSwiftUI CanvasCompose Canvas
Filter barfilter-bar.tsxSwiftUI .searchable + MenuCompose FilterChips
Cardcard.tsxSwiftUI GroupBoxCompose Card
Avatarperson-avatar.tsxSwiftUI Circle with initialsCompose Box with initials
QR and share cardshare-card.tsxSwiftUI ShareLinkCompose card + ShareSheet
Family link rowshare-card.tsxSwiftUI List rowCompose ListItem
Print cardprint-card.tsx——
Sidebarsidebar.tsxSwiftUI NavigationSplitViewCompose NavigationRail
Resizable panelsresizable.tsx——
Scroll areascroll-area.tsxScrollViewLazyColumn
Secret revealWeb only (no native developer portal)Web only (no native developer portal)
Copy fieldWeb only (no native developer portal)Web only (no native developer portal)
Environment badgeWeb only (no native developer portal)Web only (no native developer portal)
Status chipWeb only (no native developer portal)Web only (no native developer portal)
Problem viewWeb only (no native developer portal)Web only (no native developer portal)
JSON viewerWeb only (no native developer portal)Web only (no native developer portal)
HL7 viewerWeb only (no native developer portal)Web only (no native developer portal)
URL filter barWeb only (no native developer portal)Web only (no native developer portal)
Mapping traceWeb only (no native developer portal)Web only (no native developer portal)
Delivery timelineWeb only (no native developer portal)Web only (no native developer portal)
JWKS testerWeb only (no native developer portal)Web only (no native developer portal)
Key pair generatorWeb only (no native developer portal)Web only (no native developer portal)
Scope pickerWeb only (no native developer portal)Web only (no native developer portal)
Event type pickerWeb only (no native developer portal)Web only (no native developer portal)
Fault panelWeb only (no native developer portal)Web only (no native developer portal)
Code editorWeb only (no native developer portal)Web only (no native developer portal)
Typed confirmationWeb only (no native developer portal)Web only (no native developer portal)

Liquid Glass and Material 3 Expressive

  • Glass only on floating controls, bars and sheets (the tab bar, a floating action cluster, the system sheet). Content is always on solid cards.
  • Never put text over glass without a solid backing; Reduce Transparency switches every glass surface to solid.
  • Android uses Material 3 Expressive navigation, shape morph on press and the expressive spring only for moments like "You're next".
  • Dynamic Type up to AX5 and font scale up to 200 %: layouts reflow, pills wrap, patient sentences never truncate.