Components

Buttons, forms, cards, menus, tabs, modals… Each one follows the theme tokens and works with the keyboard.

Basics

Colors

Six tones for the components, fourteen hues for the rest. The text color of each background is chosen for contrast.

Tones

A solid background (.bg-primary), a soft one (.bg-primary-soft), a text color (.text-primary) and a border color (.border-primary). The soft, border and text shades are mixed by the browser from --ir-primary.

neutral
primary
success
warning
danger
info
neutral soft
primary soft
success soft
warning soft
danger soft
info soft

Palette

Five shades per hue: .bg-blue-lighter, -light, .bg-blue, -dark, -darker, and a text color, .text-blue.

lighter.bg-grey-lighter light.bg-grey-light grey.bg-grey dark.bg-grey-dark darker.bg-grey-darker
lighter.bg-red-lighter light.bg-red-light red.bg-red dark.bg-red-dark darker.bg-red-darker
lighter.bg-orange-lighter light.bg-orange-light orange.bg-orange dark.bg-orange-dark darker.bg-orange-darker
lighter.bg-amber-lighter light.bg-amber-light amber.bg-amber dark.bg-amber-dark darker.bg-amber-darker
lighter.bg-yellow-lighter light.bg-yellow-light yellow.bg-yellow dark.bg-yellow-dark darker.bg-yellow-darker
lighter.bg-lime-lighter light.bg-lime-light lime.bg-lime dark.bg-lime-dark darker.bg-lime-darker
lighter.bg-green-lighter light.bg-green-light green.bg-green dark.bg-green-dark darker.bg-green-darker
lighter.bg-teal-lighter light.bg-teal-light teal.bg-teal dark.bg-teal-dark darker.bg-teal-darker
lighter.bg-cyan-lighter light.bg-cyan-light cyan.bg-cyan dark.bg-cyan-dark darker.bg-cyan-darker
lighter.bg-blue-lighter light.bg-blue-light blue.bg-blue dark.bg-blue-dark darker.bg-blue-darker
lighter.bg-indigo-lighter light.bg-indigo-light indigo.bg-indigo dark.bg-indigo-dark darker.bg-indigo-darker
lighter.bg-violet-lighter light.bg-violet-light violet.bg-violet dark.bg-violet-dark darker.bg-violet-darker
lighter.bg-pink-lighter light.bg-pink-light pink.bg-pink dark.bg-pink-dark darker.bg-pink-darker
lighter.bg-brown-lighter light.bg-brown-light brown.bg-brown dark.bg-brown-dark darker.bg-brown-darker

Surfaces

.bg-surface
.bg-subtle
.bg-muted
.bg-inverse

Basics

Typography

Poppins for the titles, the font of the system for the text: nothing to download for the body, fluid sizes for the titles.

The <h1> to <h6> elements, or the .h1 to .h6 classes for the look of a level without its rank in the document.

Display

Title of level 1

Title of level 2

Title of level 3

Title of level 4

Title of level 5

Title of level 6

Eyebrow

A lead paragraph introduces a page or a section.

A paragraph with a link, bold, italic, highlighted, code, Ctrl + K, H2O and small text.

The flex one, in a flex world.

.text-sm .text-muted

.text-xl .font-heading .weight-semibold

Gradient

Basics

Icons

.icon sizes any inline svg on the text, and its color follows the text. This site uses a sprite of Lucide icons.

houseusermailbellheartstarbookmarkcalendarclocksearchsettingssliders-horizontalpenciltrash-2downloaduploadshare-2linkpapercliplockeyeeye-offcheckxplusminusinfotriangle-alertcircle-question-markmessage-circlecameraimagemap-pinglobeshopping-cartcredit-cardchart-columncodeterminaldatabasecloudsmartphonemonitorpalettezapsparkleslayersfilter
.icon .icon-lg .icon-xl

Actions

Buttons

.btn and a tone, on a <button> or a link.

Tones

A link

Styles

Combine a tone with .btn-outline, .btn-soft, .btn-ghost or .btn-link.

Sizes, shapes and icons

States

aria-pressed="true" marks a toggle button. disabled disables a button; a disabled link loses its href and gets role="link" and aria-disabled="true".

Disabled link

Groups

Forms

Forms

The controls are styled without class. .field stacks a label, a control and a help text.

Fields

Type a wrong address and leave the field: :user-invalid shows the error.

Checkboxes, radios and switches

Drawn by the framework, the same in every browser: the radio is a ring, a gap and a dot.

States

This user name is already taken.

Horizontal and inline forms

We never share it.

Forms

Input groups

.input-group glues fields, buttons and texts; .input-icon puts an icon inside the field.

https://

The last field shows its password with data-password-toggle (JavaScript).

Content

Badges and tags

A badge counts, a tag qualifies. Both scale with the text around them.

A title with a tag

Neutral Primary Success Warning Danger Info Online
Posts 52 Comments 138 Errors 3 Tasks 12

Content

Alerts

A light background, readable text and an accent on the left. data-dismiss on a button closes the alert.

A neutral alert, for an information.

A primary alert with a link.

Well done!

The profile was saved.

Be careful

Your subscription ends in three days.

A solid alert, with .alert-solid.

Content

Cards

A media, a header, a body and a footer, all optional. .card-hover lifts the card, .card-link makes all of it clickable.

Blue and violet abstract shapes

Design

A grid with real gaps

Twelve columns and no negative margin.

Statistics

Visits this month

12.4k

18 % since last month

72 %

Ada Lovelace

Front-end developer

Stylized green waves

Horizontal from the medium size

The media takes 40 % of the width on the left. On small screens, it goes back on top.

Read more

Content

Tables

Styled without class. Add .table-striped, .table-hover, .table-bordered or .table-compact, and wrap a wide table in .table-responsive.

Breakpoints
Size Suffix From Container
Smallnone0100 %
Medium-m601px100 %
Large-l993px100 %
Extra large-xl1201px75rem
Mobile first: a class applies from its size and above.
LayerContent
resetthe differences between the browsers
tokensthe custom properties and the themes
basetypography, form controls, tables
layoutcontainers and grid
componentsbuttons, cards, navbar…
utilitiesspacing, colors, display…

Content

Images and galleries

Avatars, frames, hover effects and a masonry gallery in CSS columns. The lightbox opens the images full screen.

Avatars

AL MB
+5

Frames and hover effects

Colored blocks on a grid
Blue and violet abstract shapes
Stylized green waves
.overlay A caption on hover

Masonry

One column, two from the medium size, three (or .masonry-2, .masonry-4) from the large size.

Blue and violet abstract shapes
violet
A stylized sunset
teal
Stylized green waves Colored blocks on a grid

Navigation

Tabs

Buttons and panels, in the same order: the roles, the ARIA attributes and the keyboard come from the JavaScript.

The structure of the page.

The look of the page.

The behaviour of the page.

9 € / month

90 € / year

For a navigation between pages, a .tab-list of links with aria-current="page":

Navigation

Breadcrumb and pagination

Two lists; aria-current marks the current item.

Disclosure

Accordions

Native <details>, no JavaScript. The same name keeps one open at a time.

Does iRoom need JavaScript?

Only for the dropdowns, the navbar, the tabs, the lightbox and a few helpers. Everything else is CSS.

Can I use my own colors?

Yes: override the custom properties, from --ir-primary to --ir-radius.

Which browsers are supported?

The current versions of Chrome, Edge, Firefox and Safari.

Tree view

  • sass
    • abstracts
    • base
    • iroom.scss

Disclosure

Modals

A native <dialog> opened with commandfor and command; Esc closes it, closedby="any" lets a click outside close it too. The page does not scroll behind.

Disclosure

Tooltips

A data-tooltip attribute, shown on hover and on keyboard focus. It uses the ::after of the element.

Feedback

Progress and spinners

The native <progress>, a spinner that follows the text, skeletons for the content being loaded.

40 % 70 % 55 % 25 % Loading