```
## Level 2: choose
- [Components by task](https://mian.ro/ai/components.md): every component with what people use it for.
- [Choose a noodle](https://mian.ro/ai/noodles.md): all 67 design languages with mood, intensity, contrast, density and what they suit.
- [Templates](https://mian.ro/ai/templates.md): 24 whole websites, by kind.
- [Designing websites](https://mian.ro/ai/docs/web-design.md): composition, anti-patterns of generated sites, page outlines, UI principles, launch checklist.
## Level 3: exact details
- Component: `https://mian.ro/ai/components/.md` · JSON `https://mian.ro/api/v1/components/`
- Noodle design language: `https://mian.ro/ai/noodles/.md`
- Every valid class, attribute and asset: https://mian.ro/registry/classes.json
- API: https://mian.ro/api/v1 · OpenAPI 3.1: https://mian.ro/openapi.json · API catalog (RFC 9727): https://mian.ro/.well-known/api-catalog · Registry: https://mian.ro/registry/index.json · Registry items: https://mian.ro/r/registry.json
- MCP (Streamable HTTP, no key): `{ "mcpServers": { "mian": { "type": "http", "url": "https://mian.ro/mcp" } } }`
- Everything in one file (large, for reference only): https://mian.ro/llms-full.txt
## Docs
- [Introduction](https://mian.ro/ai/docs/introduction.md): A complete, accessible UI library for the web, one set of components, many design systems.
- [Installation](https://mian.ro/ai/docs/installation.md): Two tags, no build step. Or copy the files into your project.
- [Theming & noodles](https://mian.ro/ai/docs/theming.md): 67 design systems, light and dark, scoped anywhere, overridable everywhere.
- [Frameworks](https://mian.ro/ai/docs/frameworks.md): Classes on HTML work everywhere. Here is how to wire them into common stacks.
- [Accessibility](https://mian.ro/ai/docs/accessibility.md): Native elements first, WAI-ARIA patterns where the platform has none, and contrast verified at build time.
- [Designing websites](https://mian.ro/ai/docs/web-design.md): An end-to-end guide to whole websites with MIAN: brief, noodle, pages, sections, words, images and a launch checklist, for designers, developers and AI.
- [Colour psychology](https://mian.ro/ai/docs/colour.md): Colour is the fastest thing a brand says. People decide whether something looks trustworthy, cheap, calm or exciting before they read a word, and much of that judgement is colour. This page explains what each hue tends to communicate, how to build a palette that works as an interface rather than as a mood board, and what each MIAN noodle is saying with the colours it uses.
- [Type psychology](https://mian.ro/ai/docs/type.md): A typeface is a tone of voice. The same sentence set in a geometric sans, a book serif and a monospace is three different speakers. This page explains what the main kinds of type say, how weight, size and spacing change the message, how to pair typefaces, and which voice each MIAN noodle speaks in.
- [Branding](https://mian.ro/ai/docs/branding.md): A brand is what people expect from you before you speak, and whether you then keep that promise. The visible part (colour, type, logo, shape, motion, words) only works when every part says the same thing. This page is a short method for deciding what that thing is, and for choosing a MIAN noodle that says it.
- [Logo design](https://mian.ro/ai/docs/logo.md): A logo does not explain a company; it identifies it. Its job is to be recognised quickly, at any size, in one colour, by someone who is not paying attention. This page covers the kinds of logo, what basic shapes communicate, the principles that make a mark last, and how to use a logo inside a MIAN interface.
- [Motion](https://mian.ro/ai/docs/motion.md): Motion in an interface has one job: to explain what just changed. Something arrived, something left, something moved from here to there, something was pressed. Motion that does not explain a change is decoration, and decoration that moves is the most tiring kind. This page is the motion system MIAN uses, and the rules for adding your own.
- [Noodle studio](https://mian.ro/ai/docs/studio.md): Turn brand guidelines into a MIAN noodle: enter your brand colour, choose a noodle for shape and character, set corners, density and type, and get a stylesheet with every text pair checked for contrast.
- [Site inspector](https://mian.ro/ai/docs/inspect.md): Paste a URL: MIAN scores the page’s design language (colour, type, consistency, structure, originality), finds the closest noodles and shows the page’s own content in any of them.
- [MIAN for AI agents](https://mian.ro/ai/docs/ai.md): Start here if you are an AI agent: install, rules, a deterministic site planner, a noodle finder, a markup validator, the registry, the HTTP API and the MCP server. Free to use.
- [About, privacy and licence](https://mian.ro/ai/docs/about.md): Why MIAN is named after the Chinese word for noodle, who makes it (BTN GROUP SRL), its licence, and how the site handles privacy.
- [License](https://mian.ro/ai/docs/license.md): The MIAN License: free for personal, commercial, client, SaaS and AI-generated projects, no credit needed on your site. MIAN itself may not be sold or traded; sharing it requires a credit and a link.
## About
MIAN 1.7.0 is made by BTN GROUP SRL (https://mian.ro). Contact: https://mian.ro/contact.
---
# MIAN components by task
Every component, with what people use it for. Fetch `https://mian.ro/ai/components/.md` for exact classes and markup. Sections are whole page bands; the rest are controls and displays. License: MIAN License, free to use, not for resale.
## Actions
- `button`: [Button](https://mian.ro/ai/components/button.md): Triggers an action. Six colour roles, five variants, four sizes, icon-only, loading and disabled states. Use for: button, call to action button, submit button, icon button, loading button.
- `button-group`: [Button group](https://mian.ro/ai/components/button-group.md): Joins related buttons into one control, horizontally or vertically. Use for: joined buttons, segmented buttons, split button, toolbar buttons.
- `toggle-group`: [Toggle group](https://mian.ro/ai/components/toggle-group.md) (needs mian.js): A set of pressable buttons, single choice like a segmented control, or multiple like a formatting toolbar. Use for: segmented control, view switcher, formatting toolbar, choose one option inline, grid list toggle.
- `dropdown`: [Dropdown menu](https://mian.ro/ai/components/dropdown.md) (needs mian.js): A menu of actions anchored to a trigger. Built on the native Popover API: top layer, light dismiss and Escape are free. Use for: dropdown menu, more actions menu, kebab menu, user menu, overflow menu.
- `copy-button`: [Copy button](https://mian.ro/ai/components/copy-button.md) (needs mian.js): Copies text to the clipboard and confirms it in place, visually and for screen readers. Use for: copy to clipboard, copy code, copy link, share link.
- `swap`: [Swap](https://mian.ro/ai/components/swap.md): An icon toggle that swaps between two states with a small rotation, menu/close, play/pause, sun/moon. Use for: icon toggle, play pause, hamburger to close, favourite toggle.
- `hold-button`: [Hold to confirm](https://mian.ro/ai/components/hold-button.md) (needs mian.js): A button that must be held for a moment before it acts. For actions that are hard to undo, without a second dialog. Use for: hold to delete, press and hold to confirm, safe destructive action. Avoid: Not for everyday actions: holding is slow on purpose.
## Forms
- `field`: [Field](https://mian.ro/ai/components/field.md): Label, control, hint and error message wired together, plus form and fieldset layout. Use for: form field, label and hint, form layout, validation error, fieldset.
- `input`: [Input](https://mian.ro/ai/components/input.md): Single-line text entry. Styles every native input type: text, email, password, search, number, date, time, color. Use for: text input, email field, search field, date input, form input.
- `textarea`: [Textarea](https://mian.ro/ai/components/textarea.md): Multi-line text. Grows with its content in browsers that support field-sizing. Use for: message box, multi-line text, comment field, description field.
- `select`: [Select](https://mian.ro/ai/components/select.md): A styled native select. Keeps the platform picker on mobile and full keyboard support everywhere. Use for: dropdown select, choose from list, country select, native select.
- `checkbox`: [Checkbox](https://mian.ro/ai/components/checkbox.md): Native checkbox, restyled. Checked, indeterminate, disabled and invalid states; any colour role. Use for: checkbox, agree to terms, multiple choice, select all rows.
- `radio`: [Radio](https://mian.ro/ai/components/radio.md): Native radio button, restyled. Use for one choice from a short list. Use for: radio buttons, single choice, choose one.
- `switch`: [Switch](https://mian.ro/ai/components/switch.md): An on/off toggle for settings that apply immediately. A native checkbox with role="switch". Use for: toggle switch, on off setting, enable feature, settings toggle.
- `slider`: [Slider](https://mian.ro/ai/components/slider.md) (needs mian.js): A styled native range input with a filled track. Works without JS; mian.js paints the fill in WebKit. Use for: range slider, price range, volume, numeric range input.
- `file-input`: [File input](https://mian.ro/ai/components/file-input.md) (needs mian.js): A styled native file picker, and a drag-and-drop zone that wraps one. Use for: file upload, drag and drop upload, attach file, image upload.
- `input-group`: [Input group](https://mian.ro/ai/components/input-group.md): An input with leading or trailing addons, text, icons or buttons, inside one border. Use for: input with prefix, url field, currency input, search with button.
- `number-input`: [Number input](https://mian.ro/ai/components/number-input.md) (needs mian.js): A stepper: a numeric input between decrement and increment buttons. Respects min, max and step; hold to repeat. Use for: quantity stepper, plus minus quantity, number of guests, cart quantity.
- `otp-input`: [OTP input](https://mian.ro/ai/components/otp-input.md) (needs mian.js): One-time-code entry. Auto-advances, handles backspace and paste, supports SMS autofill on the first box. Use for: verification code, one time password, 2fa code, pin entry.
- `rating`: [Rating](https://mian.ro/ai/components/rating.md): Star rating built from radio buttons, so it submits with a form and needs no JavaScript. Use for: star rating input, rate a product, review stars.
- `combobox`: [Combobox](https://mian.ro/ai/components/combobox.md) (needs mian.js): Autocomplete: a text input that filters a listbox as you type. Keyboard navigation and aria-activedescendant included. Use for: autocomplete, searchable select, typeahead, filter as you type.
- `calendar`: [Calendar](https://mian.ro/ai/components/calendar.md) (needs mian.js): A month grid for picking a date, on its own or in a popover as a date field. Full keyboard support and locale-aware names. Use for: date picker, booking calendar, date range picker, check-in check-out, choose a day.
- `tag-input`: [Tag input](https://mian.ro/ai/components/tag-input.md) (needs mian.js): Type to add tags as removable chips. Enter or comma adds, Backspace removes, pasted lists are split. Use for: tags input, add keywords, multi value input, email recipients.
- `password-input`: [Password field](https://mian.ro/ai/components/password-input.md) (needs mian.js): A password input with a show/hide toggle and an optional four-step strength meter. Use for: password field, show password, password strength, new password.
- `swatch-picker`: [Swatch picker](https://mian.ro/ai/components/swatch-picker.md): Pick a colour (or any visual option) from round swatches. Real radio buttons underneath. Use for: colour picker, product colour options, variant swatches, theme colour choice.
- `time-slots`: [Time slots](https://mian.ro/ai/components/time-slots.md): A grid of bookable times, available, nearly full or taken, built on radio buttons. Use for: appointment times, book a time, available slots, booking module, reservation time.
- `seat-map`: [Seat map](https://mian.ro/ai/components/seat-map.md): Pick seats for a cinema, theatre, bus or venue: rows, an aisle, taken and accessible seats, and a legend. Use for: seat selection, cinema seats, theatre booking, bus seats, venue map.
- `radio-card`: [Option cards](https://mian.ro/ai/components/radio-card.md): Selectable cards for shipping, plans or payment, and pill options for sizes and variants. Use for: shipping options, choose a plan, payment method, size picker, option cards.
- `date-range`: [Date range](https://mian.ro/ai/components/date-range.md) (needs mian.js): Pick a period for a report: presets for the common ranges and two dates for anything else. Use for: date range picker, report period, last 30 days filter, from and to dates.
- `task-list`: [Task list](https://mian.ro/ai/components/task-list.md): A checklist where a finished task is struck through as the box is ticked. Use for: todo list, checklist with strike through, tasks, launch checklist.
- `duration-picker`: [Duration picker](https://mian.ro/ai/components/duration-picker.md) (needs mian.js): Hours, minutes and seconds as three small fields that move on as you type. Use for: duration input, hours minutes seconds, timer length, time span.
## Data display
- `typography`: [Typography](https://mian.ro/ai/components/typography.md): Headings, lead, body, links, quotes and lists that follow the noodle's heading and body fonts. Use for: headings, text styles, prose, rich text, lists and quotes.
- `avatar`: [Avatar](https://mian.ro/ai/components/avatar.md): An image, initials or icon representing a person or entity. Sizes, shapes, presence and stacked groups. Use for: user picture, initials, profile image, avatar group, presence dot.
- `badge`: [Badge](https://mian.ro/ai/components/badge.md): A compact label for status, counts and categories. Use for: status label, count badge, tag, new label, category label. Avoid: Badges on everything, keep them for status and counts.
- `chip`: [Chip](https://mian.ro/ai/components/chip.md) (needs mian.js): Removable tags and toggleable filter chips. Use for: filter chips, removable tags, selected filters, toggle filters.
- `card`: [Card](https://mian.ro/ai/components/card.md): A surface for grouped content: header, body, footer, media and actions. Use for: card, content box, panel, settings card, summary card. Avoid: Cards only to create visual separation. Use whitespace and rules; cards are for objects (a plan, a product, a message).
- `table`: [Table](https://mian.ro/ai/components/table.md) (needs mian.js): Data tables with hover, striping, compact density, selection, numeric alignment and sortable columns. Use for: data table, sortable table, admin table, transactions list, comparison table.
- `list`: [List](https://mian.ro/ai/components/list.md): Bordered lists of rows with titles, descriptions, avatars and trailing content, or links. Use for: list of items, members list, settings list, link list, inbox rows.
- `kbd`: [Kbd](https://mian.ro/ai/components/kbd.md): Keyboard keys and shortcuts. Use for: keyboard shortcut, key hint, hotkey.
- `code`: [Code](https://mian.ro/ai/components/code.md): Inline code and code blocks in the noodle's monospace font. Use for: code block, inline code, snippet, terminal command.
- `stat`: [Stat](https://mian.ro/ai/components/stat.md): Key metrics with labels and trend deltas, alone or in a joined row. Use for: kpi, metric card, dashboard numbers, revenue stat, trend delta.
- `chart`: [Chart](https://mian.ro/ai/components/chart.md) (needs mian.js): Bar, horizontal bar, line/area and donut charts from plain markup. Each noodle draws them in its own style. Use for: bar chart, line chart, donut chart, graph, analytics chart.
- `timeline`: [Timeline](https://mian.ro/ai/components/timeline.md): A vertical sequence of events with markers, titles, times and content. Use for: timeline, order tracking, history, activity log, company history.
- `accordion`: [Accordion](https://mian.ro/ai/components/accordion.md): Stacked disclosure sections. Native ; give them the same name for exclusive open. Use for: collapsible sections, expand collapse, details list, product details accordion.
- `description-list`: [Description list](https://mian.ro/ai/components/description-list.md): Key–value pairs for detail views and summaries. Use for: key value pairs, specs, order details, fact box, properties.
- `divider`: [Divider](https://mian.ro/ai/components/divider.md): A horizontal or vertical rule, optionally with a label. Use for: separator, horizontal rule, or divider.
- `skeleton`: [Skeleton](https://mian.ro/ai/components/skeleton.md): Loading placeholders shaped like the content that is coming. Use for: loading placeholder, content loading, shimmer.
- `empty-state`: [Empty state](https://mian.ro/ai/components/empty-state.md): What to show when there is nothing to show, with a next step. Use for: no results, nothing here yet, first use, empty inbox, zero state.
- `indicator`: [Indicator](https://mian.ro/ai/components/indicator.md): A count or status dot pinned to the corner of any element, avatars, icons, buttons. Use for: notification dot, unread count, status dot on avatar.
- `chat`: [Chat](https://mian.ro/ai/components/chat.md): Message bubbles for conversations and assistants, with avatars, timestamps and a typing state. Use for: chat, messages, ai assistant conversation, support chat, message bubbles.
- `tree`: [Tree view](https://mian.ro/ai/components/tree.md): Nested, collapsible lists, file trees, navigation and outlines, built on native . Use for: file tree, nested navigation, folder structure, outline.
- `kanban`: [Kanban board](https://mian.ro/ai/components/kanban.md): Columns of cards for a pipeline, sprint or sales process, counts, colour dots and card meta. Use for: kanban board, deals pipeline, task board, sprint board, columns of cards.
- `usage-meter`: [Usage meter](https://mian.ro/ai/components/usage-meter.md): Plan usage against limits, seats, storage, API calls, with warning and over-limit states. Use for: plan usage, quota, storage used, seats used, billing limits.
- `notifications`: [Notification list](https://mian.ro/ai/components/notifications.md): An inbox of notifications with unread markers, icons or avatars, times and inline actions. Use for: notifications list, inbox, activity feed, alerts center.
- `invoice`: [Invoice](https://mian.ro/ai/components/invoice.md): A printable invoice or receipt: parties, line items, totals with tax, and payment notes. Use for: invoice, receipt, bill, order summary, printable document.
- `funnel`: [Funnel](https://mian.ro/ai/components/funnel.md): Conversion through the stages of a funnel, visits to signups to paid, with the rate between steps. Use for: conversion funnel, sales funnel, drop-off, signup funnel.
- `leaderboard`: [Leaderboard](https://mian.ro/ai/components/leaderboard.md): A ranked list, top sellers, customers, contributors, with medals for the top three and a trend. Use for: ranking, top sellers, leaderboard, top customers.
- `product-gallery`: [Product gallery](https://mian.ro/ai/components/product-gallery.md): A main image with clickable thumbnails, pure CSS, keyboard-friendly, up to six images. Use for: product images, image gallery, thumbnails, product photos.
- `review-summary`: [Review summary](https://mian.ro/ai/components/review-summary.md): An average rating with stars, the number of reviews and a distribution of 5 to 1 stars. Use for: reviews summary, average rating, rating distribution, customer reviews.
- `post`: [Social post](https://mian.ro/ai/components/post.md) (needs mian.js): A post in a feed: author, time, text, media and like / reply / repost / share actions with counts. Use for: social post, feed item, like and share, status update.
- `profile-header`: [Profile header](https://mian.ro/ai/components/profile-header.md): The top of a profile page: cover, avatar, name, bio, details, stats and a follow button. Use for: profile page, user profile, account header, creator profile.
- `comment-thread`: [Comment thread](https://mian.ro/ai/components/comment-thread.md): Nested comments with replies, times and reply / like actions. Use for: comments, replies, discussion, nested comments.
- `filter-bar`: [Filter bar](https://mian.ro/ai/components/filter-bar.md): The toolbar above a list or table: search, quick filter chips, sort, a view switch and the result count. Use for: filters, filter toolbar, search and filter, table toolbar, sort and filter results.
- `bulk-actions`: [Bulk actions](https://mian.ro/ai/components/bulk-actions.md) (needs mian.js): A bar that appears when rows are selected, the count, actions for the selection, and a way out, with select-all. Use for: bulk actions, select rows, batch edit, archive selected, selection toolbar.
- `curriculum`: [Curriculum](https://mian.ro/ai/components/curriculum.md): Modules and lessons of a course with durations, lesson type, done and locked states, each module a native disclosure. Use for: course curriculum, syllabus, lesson list, course modules, training outline.
- `listing-card`: [Listing card](https://mian.ro/ai/components/listing-card.md) (needs mian.js): A property, rental or venue in a results grid: photo, price, key facts, address and a save toggle, the title is the link. Use for: property listing, real estate card, rental listing, apartment card, marketplace listing.
- `kpi`: [KPI card](https://mian.ro/ai/components/kpi.md) (needs mian.js): One number that matters, with its change, a sparkline you can hover and a line of context. Use for: kpi card, metric with sparkline, number with trend, dashboard headline numbers, revenue card.
- `heatmap`: [Heatmap](https://mian.ro/ai/components/heatmap.md): Activity by day, or by hour and weekday, as a grid of cells whose depth of colour is the value. Hover a cell for the exact number. Use for: activity heatmap, calendar heatmap, contribution graph, busiest days, usage by hour.
- `gauge`: [Gauge](https://mian.ro/ai/components/gauge.md): A half-circle meter for one value against a known range: a score, a quota, a target. Use for: gauge, score dial, meter, health score, quota dial.
- `breakdown`: [Breakdown](https://mian.ro/ai/components/breakdown.md): How a total splits into parts: one stacked bar and a list with each part’s value and share. Use for: stacked bar with legend, share by category, traffic sources, sales by channel, budget split.
- `uptime`: [Uptime](https://mian.ro/ai/components/uptime.md): A status page row: a service, its state today and one bar per day of history. Hover a day for what happened. Use for: status page, service uptime, incident history, system status, availability bars.
- `voice-note`: [Voice note](https://mian.ro/ai/components/voice-note.md) (needs mian.js): An audio message as a waveform: play, pause, see where you are and drag to seek. Use for: voice message, audio waveform player, voice memo, audio clip in chat.
## Feedback
- `alert`: [Alert](https://mian.ro/ai/components/alert.md): Inline messages for information, success, warnings and errors, with optional actions and dismiss. Use for: alert message, warning box, error message, success message, info notice.
- `toast`: [Toast](https://mian.ro/ai/components/toast.md) (needs mian.js): Temporary notifications. Mian.toast() from script, or data-mn-toast on a button. Pause on hover, stack, dismiss. Use for: toast notification, snackbar, saved message, temporary notification.
- `progress`: [Progress](https://mian.ro/ai/components/progress.md) (needs mian.js): Linear progress, determinate from aria-valuenow, or indeterminate without it. Use for: progress bar, upload progress, loading bar, completion.
- `radial-progress`: [Radial progress](https://mian.ro/ai/components/radial-progress.md) (needs mian.js): Circular progress with a centred value. Use for: circular progress, score ring, percentage circle, goal progress.
- `spinner`: [Spinner](https://mian.ro/ai/components/spinner.md): Indeterminate loading indicators: ring and dots. Use for: spinner, loading indicator, busy.
- `banner`: [Banner](https://mian.ro/ai/components/banner.md): A full-width announcement bar for launches, maintenance notices or cookie-free notes. Dismissible. Use for: announcement bar, maintenance notice, top banner, launch announcement.
- `onboarding`: [Onboarding checklist](https://mian.ro/ai/components/onboarding.md): The first steps of a new account, with progress, done states and one action per step. Use for: onboarding checklist, getting started steps, setup progress, first run.
- `loader`: [Loader](https://mian.ro/ai/components/loader.md): Eight loading indicators, dots, bars, wave, grid, pulse, orbit, ring and a top-of-page line, in the current colour. Use for: loading animation, page loader, loading dots, progress line.
- `cookie-consent`: [Cookie consent](https://mian.ro/ai/components/cookie-consent.md): A consent notice with equal-weight Accept and Reject, and per-purpose switches, honest by default, dismissible. Use for: cookie banner, cookie consent, gdpr consent, privacy choices, tracking consent.
## Overlays
- `modal`: [Modal](https://mian.ro/ai/components/modal.md) (needs mian.js): A dialog on the native