About this set
Four equal-width tabs in a mail-app layout, Inbox, Starred, Sent and Trash, each with an emoji icon above its label and red count badges on Inbox and Trash. The selected tab gets three cues at once: purple text, a purple bar along its bottom edge and a pale purple background, so it stays clear without relying on colour alone. Use it for inboxes, notification centres and mobile-style navigation inside a card, where the icons help scanning and the counts show what needs attention. The badges are absolutely positioned pills, so a count of one digit or three does not shift the labels. The tabs share the width equally, so the row works with two tabs or six. Each badge number is hidden from screen readers and repeated in visually hidden text such as 12 unread, so the tab is announced as a sentence rather than Inbox12. The Bootstrap version uses .nav-justified with the Tab plugin and .badge pills, and the Tailwind version uses flex-1 tabs and aria-selected utilities.
What’s included
- Icon over label with equal-width tabs
- Count badges that never shift the layout
- Selected state uses colour, a bottom bar and a background
- Badge counts announced as words, not run into the label
- Muted labels darkened to meet 4.5:1
Accessibility
The tabs sit in a tablist labelled Mailbox, the emoji are aria-hidden, and each badge number is aria-hidden with a visually hidden phrase such as 12 unread in its place. Only the selected tab is in the Tab order; Left and Right (or Up and Down) move between tabs and select them, and Home and End jump to the first and last tab. Focus draws a 2px purple outline inside the tab or panel, and transitions are removed under prefers-reduced-motion.
Customise it
Set --it-accent, --it-active-bg, --it-hover-bg, --it-muted and --it-badge on .itabs in plain CSS and Bootstrap, where the badge also reads the --bs-badge-* variables. In Tailwind edit the --color-it-* theme colours.


















